77067 lines
3.1 MiB
77067 lines
3.1 MiB
/* sp.c
|
|
*
|
|
* Copyright (C) 2006-2021 wolfSSL Inc.
|
|
*
|
|
* This file is part of wolfSSL.
|
|
*
|
|
* wolfSSL is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* wolfSSL 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 General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
|
*/
|
|
|
|
/* Implementation by Sean Parkinson. */
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include <config.h>
|
|
#endif
|
|
|
|
#include <wolfssl/wolfcrypt/settings.h>
|
|
|
|
#if defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH) || \
|
|
defined(WOLFSSL_HAVE_SP_ECC)
|
|
|
|
#include <wolfssl/wolfcrypt/error-crypt.h>
|
|
#include <wolfssl/wolfcrypt/cpuid.h>
|
|
#ifdef NO_INLINE
|
|
#include <wolfssl/wolfcrypt/misc.h>
|
|
#else
|
|
#define WOLFSSL_MISC_INCLUDED
|
|
#include <wolfcrypt/src/misc.c>
|
|
#endif
|
|
|
|
#ifdef RSA_LOW_MEM
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
#define WOLFSSL_SP_SMALL
|
|
#endif
|
|
#endif
|
|
|
|
#include <wolfssl/wolfcrypt/sp.h>
|
|
|
|
#ifdef WOLFSSL_SP_ARM64_ASM
|
|
#define SP_PRINT_NUM(var, name, total, words, bits) \
|
|
do { \
|
|
int ii; \
|
|
fprintf(stderr, name "=0x"); \
|
|
for (ii = words - 1; ii >= 0; ii--) \
|
|
fprintf(stderr, SP_PRINT_FMT, (var)[ii]); \
|
|
fprintf(stderr, "\n"); \
|
|
} while (0)
|
|
|
|
#define SP_PRINT_VAL(var, name) \
|
|
fprintf(stderr, name "=0x" SP_PRINT_FMT "\n", var)
|
|
#if defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifndef WOLFSSL_SP_NO_2048
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_2048_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_2048_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Write r as big endian to byte array.
|
|
* Fixed length number of bytes written: 256
|
|
*
|
|
* r A single precision integer.
|
|
* a Byte array.
|
|
*/
|
|
static void sp_2048_to_bin_32(sp_digit* r, byte* a)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
for (i = 31, j = 0; i >= 0; i--) {
|
|
a[j++] = r[i] >> 56;
|
|
a[j++] = r[i] >> 48;
|
|
a[j++] = r[i] >> 40;
|
|
a[j++] = r[i] >> 32;
|
|
a[j++] = r[i] >> 24;
|
|
a[j++] = r[i] >> 16;
|
|
a[j++] = r[i] >> 8;
|
|
a[j++] = r[i] >> 0;
|
|
}
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && (!defined(WOLFSSL_RSA_PUBLIC_ONLY) || !defined(WOLFSSL_SP_SMALL))) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_2048_norm_32(a)
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && (!WOLFSSL_RSA_PUBLIC_ONLY || !WOLFSSL_SP_SMALL)) || WOLFSSL_HAVE_SP_DH */
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_2048_norm_32(a)
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_2048_mul_8(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x8, x9, [%[a], 0]\n\t"
|
|
"ldp x10, x11, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [%[a], 32]\n\t"
|
|
"ldp x14, x15, [%[a], 48]\n\t"
|
|
"ldp x16, x17, [%[b], 0]\n\t"
|
|
"ldp x19, x20, [%[b], 16]\n\t"
|
|
"ldp x21, x22, [%[b], 32]\n\t"
|
|
"ldp x23, x24, [%[b], 48]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"mul x3, x8, x16\n\t"
|
|
"umulh x4, x8, x16\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"mul x6, x8, x17\n\t"
|
|
"umulh x7, x8, x17\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"mul x6, x9, x16\n\t"
|
|
"adc x5, xzr, x7\n\t"
|
|
"umulh x7, x9, x16\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"mul x6, x8, x19\n\t"
|
|
"umulh x7, x8, x19\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"mul x6, x9, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x17\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"mul x6, x10, x16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x16\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"mul x6, x8, x20\n\t"
|
|
"umulh x7, x8, x20\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"mul x6, x9, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x9, x19\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"mul x6, x10, x17\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x17\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"mul x6, x11, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x16\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[4]\n\t"
|
|
"mul x6, x8, x21\n\t"
|
|
"umulh x7, x8, x21\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"mul x6, x9, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x9, x20\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"mul x6, x10, x19\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x10, x19\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"mul x6, x11, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x17\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[0]\n\t"
|
|
"mul x6, x12, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[0] * B[5]\n\t"
|
|
"mul x6, x8, x22\n\t"
|
|
"umulh x7, x8, x22\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[4]\n\t"
|
|
"mul x6, x9, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x21\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"mul x6, x10, x20\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x20\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"mul x6, x11, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x11, x19\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[1]\n\t"
|
|
"mul x6, x12, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[0]\n\t"
|
|
"mul x6, x13, x16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x16\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[6]\n\t"
|
|
"mul x6, x8, x23\n\t"
|
|
"umulh x7, x8, x23\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[1] * B[5]\n\t"
|
|
"mul x6, x9, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x9, x22\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[4]\n\t"
|
|
"mul x6, x10, x21\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x21\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"mul x6, x11, x20\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x20\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B[2]\n\t"
|
|
"mul x6, x12, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x12, x19\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[1]\n\t"
|
|
"mul x6, x13, x17\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x17\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[0]\n\t"
|
|
"mul x6, x14, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x16\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[7]\n\t"
|
|
"mul x6, x8, x24\n\t"
|
|
"umulh x7, x8, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[6]\n\t"
|
|
"mul x6, x9, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x9, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B[5]\n\t"
|
|
"mul x6, x10, x22\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x10, x22\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[4]\n\t"
|
|
"mul x6, x11, x21\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x21\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[3]\n\t"
|
|
"mul x6, x12, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x20\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B[2]\n\t"
|
|
"mul x6, x13, x19\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x13, x19\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[6] * B[1]\n\t"
|
|
"mul x6, x14, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x14, x17\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[0]\n\t"
|
|
"mul x6, x15, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[1] * B[7]\n\t"
|
|
"mul x6, x9, x24\n\t"
|
|
"umulh x7, x9, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[6]\n\t"
|
|
"mul x6, x10, x23\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x23\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B[5]\n\t"
|
|
"mul x6, x11, x22\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x11, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[4]\n\t"
|
|
"mul x6, x12, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x21\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[3]\n\t"
|
|
"mul x6, x13, x20\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x20\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B[2]\n\t"
|
|
"mul x6, x14, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x14, x19\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[7] * B[1]\n\t"
|
|
"mul x6, x15, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x15, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[2] * B[7]\n\t"
|
|
"mul x6, x10, x24\n\t"
|
|
"umulh x7, x10, x24\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[6]\n\t"
|
|
"mul x6, x11, x23\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x23\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B[5]\n\t"
|
|
"mul x6, x12, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x12, x22\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[4]\n\t"
|
|
"mul x6, x13, x21\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x21\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[3]\n\t"
|
|
"mul x6, x14, x20\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x20\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B[2]\n\t"
|
|
"mul x6, x15, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x15, x19\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[3] * B[7]\n\t"
|
|
"mul x6, x11, x24\n\t"
|
|
"umulh x7, x11, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[6]\n\t"
|
|
"mul x6, x12, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B[5]\n\t"
|
|
"mul x6, x13, x22\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x13, x22\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[6] * B[4]\n\t"
|
|
"mul x6, x14, x21\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x14, x21\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[3]\n\t"
|
|
"mul x6, x15, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x20\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[4] * B[7]\n\t"
|
|
"mul x6, x12, x24\n\t"
|
|
"umulh x7, x12, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[6]\n\t"
|
|
"mul x6, x13, x23\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x23\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B[5]\n\t"
|
|
"mul x6, x14, x22\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x14, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[7] * B[4]\n\t"
|
|
"mul x6, x15, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x15, x21\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[5] * B[7]\n\t"
|
|
"mul x6, x13, x24\n\t"
|
|
"umulh x7, x13, x24\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[6]\n\t"
|
|
"mul x6, x14, x23\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x23\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B[5]\n\t"
|
|
"mul x6, x15, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x15, x22\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[6] * B[7]\n\t"
|
|
"mul x6, x14, x24\n\t"
|
|
"umulh x7, x14, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[6]\n\t"
|
|
"mul x6, x15, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[7] * B[7]\n\t"
|
|
"mul x6, x15, x24\n\t"
|
|
"umulh x7, x15, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"stp x5, x3, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24"
|
|
);
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* All registers version.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_2048_sqr_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x21, x22, [%[a], 0]\n\t"
|
|
"ldp x23, x24, [%[a], 16]\n\t"
|
|
"ldp x25, x26, [%[a], 32]\n\t"
|
|
"ldp x27, x28, [%[a], 48]\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x6, x21, x22\n\t"
|
|
"umulh x7, x21, x22\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x4, x21, x23\n\t"
|
|
"umulh x5, x21, x23\n\t"
|
|
"adds x7, x7, x4\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x4, x21, x24\n\t"
|
|
"adc x8, xzr, x5\n\t"
|
|
"umulh x5, x21, x24\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x4, x22, x23\n\t"
|
|
"adc x9, xzr, x5\n\t"
|
|
"umulh x5, x22, x23\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[0] * A[4]\n\t"
|
|
"mul x4, x21, x25\n\t"
|
|
"adcs x9, x9, x5\n\t"
|
|
"umulh x5, x21, x25\n\t"
|
|
"adc x10, xzr, xzr\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x4, x22, x24\n\t"
|
|
"adc x10, x10, x5\n\t"
|
|
"umulh x5, x22, x24\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[0] * A[5]\n\t"
|
|
"mul x4, x21, x26\n\t"
|
|
"adcs x10, x10, x5\n\t"
|
|
"umulh x5, x21, x26\n\t"
|
|
"adc x11, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * A[4]\n\t"
|
|
"mul x4, x22, x25\n\t"
|
|
"adc x11, x11, x5\n\t"
|
|
"umulh x5, x22, x25\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x4, x23, x24\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x23, x24\n\t"
|
|
"adc x12, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * A[6]\n\t"
|
|
"mul x4, x21, x27\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x21, x27\n\t"
|
|
"adc x12, x12, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[5]\n\t"
|
|
"mul x4, x22, x26\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x22, x26\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * A[4]\n\t"
|
|
"mul x4, x23, x25\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x23, x25\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[0] * A[7]\n\t"
|
|
"mul x4, x21, x28\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x21, x28\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[1] * A[6]\n\t"
|
|
"mul x4, x22, x27\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x22, x27\n\t"
|
|
"adc x14, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * A[5]\n\t"
|
|
"mul x4, x23, x26\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x23, x26\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * A[4]\n\t"
|
|
"mul x4, x24, x25\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x24, x25\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[1] * A[7]\n\t"
|
|
"mul x4, x22, x28\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x22, x28\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[2] * A[6]\n\t"
|
|
"mul x4, x23, x27\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x23, x27\n\t"
|
|
"adc x15, xzr, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * A[5]\n\t"
|
|
"mul x4, x24, x26\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x24, x26\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[2] * A[7]\n\t"
|
|
"mul x4, x23, x28\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x23, x28\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[3] * A[6]\n\t"
|
|
"mul x4, x24, x27\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x24, x27\n\t"
|
|
"adc x16, xzr, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[4] * A[5]\n\t"
|
|
"mul x4, x25, x26\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x25, x26\n\t"
|
|
"adc x16, x16, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[3] * A[7]\n\t"
|
|
"mul x4, x24, x28\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x24, x28\n\t"
|
|
"adc x16, x16, xzr\n\t"
|
|
"adds x15, x15, x4\n\t"
|
|
"# A[4] * A[6]\n\t"
|
|
"mul x4, x25, x27\n\t"
|
|
"adcs x16, x16, x5\n\t"
|
|
"umulh x5, x25, x27\n\t"
|
|
"adc x17, xzr, xzr\n\t"
|
|
"adds x15, x15, x4\n\t"
|
|
"# A[4] * A[7]\n\t"
|
|
"mul x4, x25, x28\n\t"
|
|
"adcs x16, x16, x5\n\t"
|
|
"umulh x5, x25, x28\n\t"
|
|
"adc x17, x17, xzr\n\t"
|
|
"adds x16, x16, x4\n\t"
|
|
"# A[5] * A[6]\n\t"
|
|
"mul x4, x26, x27\n\t"
|
|
"adcs x17, x17, x5\n\t"
|
|
"umulh x5, x26, x27\n\t"
|
|
"adc x19, xzr, xzr\n\t"
|
|
"adds x16, x16, x4\n\t"
|
|
"# A[5] * A[7]\n\t"
|
|
"mul x4, x26, x28\n\t"
|
|
"adcs x17, x17, x5\n\t"
|
|
"umulh x5, x26, x28\n\t"
|
|
"adc x19, x19, xzr\n\t"
|
|
"adds x17, x17, x4\n\t"
|
|
"# A[6] * A[7]\n\t"
|
|
"mul x4, x27, x28\n\t"
|
|
"adcs x19, x19, x5\n\t"
|
|
"umulh x5, x27, x28\n\t"
|
|
"adc x20, xzr, xzr\n\t"
|
|
"adds x19, x19, x4\n\t"
|
|
"adc x20, x20, x5\n\t"
|
|
"# Double\n\t"
|
|
"adds x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"adcs x8, x8, x8\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"adcs x15, x15, x15\n\t"
|
|
"adcs x16, x16, x16\n\t"
|
|
"adcs x17, x17, x17\n\t"
|
|
"adcs x19, x19, x19\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x5, x21, x21\n\t"
|
|
"adcs x20, x20, x20\n\t"
|
|
"umulh x2, x21, x21\n\t"
|
|
"cset x21, cs\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x3, x22, x22\n\t"
|
|
"adds x6, x6, x2\n\t"
|
|
"umulh x4, x22, x22\n\t"
|
|
"adcs x7, x7, x3\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x2, x23, x23\n\t"
|
|
"adcs x8, x8, x4\n\t"
|
|
"umulh x3, x23, x23\n\t"
|
|
"adcs x9, x9, x2\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x4, x24, x24\n\t"
|
|
"adcs x10, x10, x3\n\t"
|
|
"umulh x2, x24, x24\n\t"
|
|
"adcs x11, x11, x4\n\t"
|
|
"# A[4] * A[4]\n\t"
|
|
"mul x3, x25, x25\n\t"
|
|
"adcs x12, x12, x2\n\t"
|
|
"umulh x4, x25, x25\n\t"
|
|
"adcs x13, x13, x3\n\t"
|
|
"# A[5] * A[5]\n\t"
|
|
"mul x2, x26, x26\n\t"
|
|
"adcs x14, x14, x4\n\t"
|
|
"umulh x3, x26, x26\n\t"
|
|
"adcs x15, x15, x2\n\t"
|
|
"# A[6] * A[6]\n\t"
|
|
"mul x4, x27, x27\n\t"
|
|
"adcs x16, x16, x3\n\t"
|
|
"umulh x2, x27, x27\n\t"
|
|
"adcs x17, x17, x4\n\t"
|
|
"# A[7] * A[7]\n\t"
|
|
"mul x3, x28, x28\n\t"
|
|
"adcs x19, x19, x2\n\t"
|
|
"umulh x4, x28, x28\n\t"
|
|
"adcs x20, x20, x3\n\t"
|
|
"stp x5, x6, [%[r], 0]\n\t"
|
|
"adc x21, x21, x4\n\t"
|
|
"stp x7, x8, [%[r], 16]\n\t"
|
|
"stp x9, x10, [%[r], 32]\n\t"
|
|
"stp x11, x12, [%[r], 48]\n\t"
|
|
"stp x13, x14, [%[r], 64]\n\t"
|
|
"stp x15, x16, [%[r], 80]\n\t"
|
|
"stp x17, x19, [%[r], 96]\n\t"
|
|
"stp x20, x21, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_add_8(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_in_place_16(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_add_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_2048_mask_8(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<8; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
r[0] = a[0] & m;
|
|
r[1] = a[1] & m;
|
|
r[2] = a[2] & m;
|
|
r[3] = a[3] & m;
|
|
r[4] = a[4] & m;
|
|
r[5] = a[5] & m;
|
|
r[6] = a[6] & m;
|
|
r[7] = a[7] & m;
|
|
#endif
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_2048_add_zero_8(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_mul_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[16];
|
|
sp_digit a1[8];
|
|
sp_digit b1[8];
|
|
sp_digit z2[16];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_2048_add_8(a1, a, &a[8]);
|
|
cb = sp_2048_add_8(b1, b, &b[8]);
|
|
u = ca & cb;
|
|
sp_2048_mul_8(z1, a1, b1);
|
|
sp_2048_mul_8(z2, &a[8], &b[8]);
|
|
sp_2048_mul_8(z0, a, b);
|
|
sp_2048_mask_8(r + 16, a1, 0 - cb);
|
|
sp_2048_mask_8(b1, b1, 0 - ca);
|
|
u += sp_2048_add_8(r + 16, r + 16, b1);
|
|
u += sp_2048_sub_in_place_16(z1, z2);
|
|
u += sp_2048_sub_in_place_16(z1, z0);
|
|
u += sp_2048_add_16(r + 8, r + 8, z1);
|
|
u += sp_2048_add_8(r + 16, r + 16, z2);
|
|
sp_2048_add_zero_8(r + 24, z2 + 8, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 64\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_sqr_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[16];
|
|
sp_digit z1[16];
|
|
sp_digit a1[8];
|
|
sp_digit u;
|
|
|
|
u = sp_2048_add_8(a1, a, &a[8]);
|
|
sp_2048_sqr_8(z1, a1);
|
|
sp_2048_sqr_8(z2, &a[8]);
|
|
sp_2048_sqr_8(z0, a);
|
|
sp_2048_mask_8(r + 16, a1, 0 - u);
|
|
u += sp_2048_dbl_8(r + 16, r + 16);
|
|
u += sp_2048_sub_in_place_16(z1, z2);
|
|
u += sp_2048_sub_in_place_16(z1, z0);
|
|
u += sp_2048_add_16(r + 8, r + 8, z1);
|
|
u += sp_2048_add_8(r + 16, r + 16, z2);
|
|
sp_2048_add_zero_8(r + 24, z2 + 8, u);
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_in_place_32(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"ldp x2, x3, [%[a], 128]\n\t"
|
|
"ldp x6, x7, [%[b], 128]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 144]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 128]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 144]\n\t"
|
|
"ldp x2, x3, [%[a], 160]\n\t"
|
|
"ldp x6, x7, [%[b], 160]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 176]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 160]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 176]\n\t"
|
|
"ldp x2, x3, [%[a], 192]\n\t"
|
|
"ldp x6, x7, [%[b], 192]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 208]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 192]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 208]\n\t"
|
|
"ldp x2, x3, [%[a], 224]\n\t"
|
|
"ldp x6, x7, [%[b], 224]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 240]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 224]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 240]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_add_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_2048_mask_16(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<16; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 16; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_2048_add_zero_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_mul_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[32];
|
|
sp_digit a1[16];
|
|
sp_digit b1[16];
|
|
sp_digit z2[32];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_2048_add_16(a1, a, &a[16]);
|
|
cb = sp_2048_add_16(b1, b, &b[16]);
|
|
u = ca & cb;
|
|
sp_2048_mul_16(z1, a1, b1);
|
|
sp_2048_mul_16(z2, &a[16], &b[16]);
|
|
sp_2048_mul_16(z0, a, b);
|
|
sp_2048_mask_16(r + 32, a1, 0 - cb);
|
|
sp_2048_mask_16(b1, b1, 0 - ca);
|
|
u += sp_2048_add_16(r + 32, r + 32, b1);
|
|
u += sp_2048_sub_in_place_32(z1, z2);
|
|
u += sp_2048_sub_in_place_32(z1, z0);
|
|
u += sp_2048_add_32(r + 16, r + 16, z1);
|
|
u += sp_2048_add_16(r + 32, r + 32, z2);
|
|
sp_2048_add_zero_16(r + 48, z2 + 16, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 88]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 120]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[32];
|
|
sp_digit z1[32];
|
|
sp_digit a1[16];
|
|
sp_digit u;
|
|
|
|
u = sp_2048_add_16(a1, a, &a[16]);
|
|
sp_2048_sqr_16(z1, a1);
|
|
sp_2048_sqr_16(z2, &a[16]);
|
|
sp_2048_sqr_16(z0, a);
|
|
sp_2048_mask_16(r + 32, a1, 0 - u);
|
|
u += sp_2048_dbl_16(r + 32, r + 32);
|
|
u += sp_2048_sub_in_place_32(z1, z2);
|
|
u += sp_2048_sub_in_place_32(z1, z0);
|
|
u += sp_2048_add_32(r + 16, r + 16, z1);
|
|
u += sp_2048_add_16(r + 32, r + 32, z2);
|
|
sp_2048_add_zero_16(r + 48, z2 + 16, u);
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_add_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 256\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_in_place_32(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 256\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_2048_mul_32(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[64];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 248\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 256\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 496\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_2048_sqr_32(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[64];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 248\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 256\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 496\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_2048_mask_16(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
int i;
|
|
|
|
for (i=0; i<16; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_add_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_in_place_16(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_2048_mul_16(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[32];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 120\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 128\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 240\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_2048_sqr_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[32];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 120\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 128\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 240\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
|
|
/* Caclulate the bottom digit of -1/a mod 2^n.
|
|
*
|
|
* a A single precision number.
|
|
* rho Bottom word of inverse.
|
|
*/
|
|
static void sp_2048_mont_setup(const sp_digit* a, sp_digit* rho)
|
|
{
|
|
sp_digit x;
|
|
sp_digit b;
|
|
|
|
b = a[0];
|
|
x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**8 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**16 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**32 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**64 */
|
|
|
|
/* rho = -1/m mod b */
|
|
*rho = (sp_digit)0 - x;
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_2048_mul_d_32(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 256\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 256]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[16] * B\n\t"
|
|
"ldp x8, x9, [%[a], 128]\n\t"
|
|
"str x3, [%[r], 120]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[17] * B\n\t"
|
|
"str x4, [%[r], 128]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[18] * B\n\t"
|
|
"ldp x8, x9, [%[a], 144]\n\t"
|
|
"str x5, [%[r], 136]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[19] * B\n\t"
|
|
"str x3, [%[r], 144]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[20] * B\n\t"
|
|
"ldp x8, x9, [%[a], 160]\n\t"
|
|
"str x4, [%[r], 152]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[21] * B\n\t"
|
|
"str x5, [%[r], 160]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[22] * B\n\t"
|
|
"ldp x8, x9, [%[a], 176]\n\t"
|
|
"str x3, [%[r], 168]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[23] * B\n\t"
|
|
"str x4, [%[r], 176]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[24] * B\n\t"
|
|
"ldp x8, x9, [%[a], 192]\n\t"
|
|
"str x5, [%[r], 184]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[25] * B\n\t"
|
|
"str x3, [%[r], 192]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[26] * B\n\t"
|
|
"ldp x8, x9, [%[a], 208]\n\t"
|
|
"str x4, [%[r], 200]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[27] * B\n\t"
|
|
"str x5, [%[r], 208]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[28] * B\n\t"
|
|
"ldp x8, x9, [%[a], 224]\n\t"
|
|
"str x3, [%[r], 216]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[29] * B\n\t"
|
|
"str x4, [%[r], 224]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[30] * B\n\t"
|
|
"ldp x8, x9, [%[a], 240]\n\t"
|
|
"str x5, [%[r], 232]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[31] * B\n\t"
|
|
"str x3, [%[r], 240]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adc x5, x5, x7\n\t"
|
|
"stp x4, x5, [%[r], 248]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* r = 2^n mod m where n is the number of bits to reduce by.
|
|
* Given m must be 2048 bits, just need to subtract.
|
|
*
|
|
* r A single precision number.
|
|
* m A single precision number.
|
|
*/
|
|
static void sp_2048_mont_norm_16(sp_digit* r, const sp_digit* m)
|
|
{
|
|
XMEMSET(r, 0, sizeof(sp_digit) * 16);
|
|
|
|
/* r = 2^n mod m */
|
|
sp_2048_sub_in_place_16(r, m);
|
|
}
|
|
|
|
/* Reduce the number back to 2048 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_mont_reduce_16(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 16\n\t"
|
|
"mov x4, 16\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 128\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_2048_mont_mul_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_2048_mul_16(r, a, b);
|
|
sp_2048_mont_reduce_16(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_2048_mont_sqr_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_2048_sqr_16(r, a);
|
|
sp_2048_mont_reduce_16(r, m, mp);
|
|
}
|
|
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_2048_cond_sub_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_2048_mul_d_16(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 128]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"stp x3, x4, [%[r], 120]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_2048_word_16(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_2048_cmp_16(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 120\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_div_16(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[32], t2[17];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[15];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 16);
|
|
for (i=15; i>=0; i--) {
|
|
sp_digit hi = t1[16 + i] - (t1[16 + i] == div);
|
|
r1 = div_2048_word_16(hi, t1[16 + i - 1], div);
|
|
|
|
sp_2048_mul_d_16(t2, d, r1);
|
|
t1[16 + i] += sp_2048_sub_in_place_16(&t1[i], t2);
|
|
t1[16 + i] -= t2[16];
|
|
sp_2048_mask_16(t2, d, t1[16 + i]);
|
|
t1[16 + i] += sp_2048_add_16(&t1[i], &t1[i], t2);
|
|
sp_2048_mask_16(t2, d, t1[16 + i]);
|
|
t1[16 + i] += sp_2048_add_16(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_2048_cmp_16(t1, d) >= 0;
|
|
sp_2048_cond_sub_16(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_mod_16(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_2048_div_16(a, m, NULL, r);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_2048_mod_exp_16(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[16 * 32];
|
|
#endif
|
|
sp_digit* t[16];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (16 * 32), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<16; i++) {
|
|
t[i] = td + i * 32;
|
|
}
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
sp_2048_mont_norm_16(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 16U);
|
|
if (reduceA != 0) {
|
|
err = sp_2048_mod_16(t[1] + 16, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_2048_mod_16(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 16, a, sizeof(sp_digit) * 16);
|
|
err = sp_2048_mod_16(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mont_sqr_16(t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_mul_16(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 4], t[ 2], m, mp);
|
|
sp_2048_mont_mul_16(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 6], t[ 3], m, mp);
|
|
sp_2048_mont_mul_16(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 8], t[ 4], m, mp);
|
|
sp_2048_mont_mul_16(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_2048_mont_sqr_16(t[10], t[ 5], m, mp);
|
|
sp_2048_mont_mul_16(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_2048_mont_sqr_16(t[12], t[ 6], m, mp);
|
|
sp_2048_mont_mul_16(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_2048_mont_sqr_16(t[14], t[ 7], m, mp);
|
|
sp_2048_mont_mul_16(t[15], t[ 8], t[ 7], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 4;
|
|
if (c == 64) {
|
|
c = 60;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 16);
|
|
for (; i>=0 || c>=4; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 60);
|
|
n <<= 4;
|
|
c = 60;
|
|
}
|
|
else if (c < 4) {
|
|
y = (byte)(n >> 60);
|
|
n = e[i--];
|
|
c = 4 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 60) & 0xf);
|
|
n <<= 4;
|
|
c -= 4;
|
|
}
|
|
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
|
|
sp_2048_mont_mul_16(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[16], 0, sizeof(sp_digit) * 16U);
|
|
sp_2048_mont_reduce_16(r, m, mp);
|
|
|
|
mask = 0 - (sp_2048_cmp_16(r, m) >= 0);
|
|
sp_2048_cond_sub_16(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_2048_mod_exp_16(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[32 * 32];
|
|
#endif
|
|
sp_digit* t[32];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (32 * 32), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<32; i++) {
|
|
t[i] = td + i * 32;
|
|
}
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
sp_2048_mont_norm_16(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 16U);
|
|
if (reduceA != 0) {
|
|
err = sp_2048_mod_16(t[1] + 16, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_2048_mod_16(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 16, a, sizeof(sp_digit) * 16);
|
|
err = sp_2048_mod_16(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mont_sqr_16(t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_mul_16(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 4], t[ 2], m, mp);
|
|
sp_2048_mont_mul_16(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 6], t[ 3], m, mp);
|
|
sp_2048_mont_mul_16(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_2048_mont_sqr_16(t[ 8], t[ 4], m, mp);
|
|
sp_2048_mont_mul_16(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_2048_mont_sqr_16(t[10], t[ 5], m, mp);
|
|
sp_2048_mont_mul_16(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_2048_mont_sqr_16(t[12], t[ 6], m, mp);
|
|
sp_2048_mont_mul_16(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_2048_mont_sqr_16(t[14], t[ 7], m, mp);
|
|
sp_2048_mont_mul_16(t[15], t[ 8], t[ 7], m, mp);
|
|
sp_2048_mont_sqr_16(t[16], t[ 8], m, mp);
|
|
sp_2048_mont_mul_16(t[17], t[ 9], t[ 8], m, mp);
|
|
sp_2048_mont_sqr_16(t[18], t[ 9], m, mp);
|
|
sp_2048_mont_mul_16(t[19], t[10], t[ 9], m, mp);
|
|
sp_2048_mont_sqr_16(t[20], t[10], m, mp);
|
|
sp_2048_mont_mul_16(t[21], t[11], t[10], m, mp);
|
|
sp_2048_mont_sqr_16(t[22], t[11], m, mp);
|
|
sp_2048_mont_mul_16(t[23], t[12], t[11], m, mp);
|
|
sp_2048_mont_sqr_16(t[24], t[12], m, mp);
|
|
sp_2048_mont_mul_16(t[25], t[13], t[12], m, mp);
|
|
sp_2048_mont_sqr_16(t[26], t[13], m, mp);
|
|
sp_2048_mont_mul_16(t[27], t[14], t[13], m, mp);
|
|
sp_2048_mont_sqr_16(t[28], t[14], m, mp);
|
|
sp_2048_mont_mul_16(t[29], t[15], t[14], m, mp);
|
|
sp_2048_mont_sqr_16(t[30], t[15], m, mp);
|
|
sp_2048_mont_mul_16(t[31], t[16], t[15], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 5;
|
|
if (c == 64) {
|
|
c = 59;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 16);
|
|
for (; i>=0 || c>=5; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 59);
|
|
n <<= 5;
|
|
c = 59;
|
|
}
|
|
else if (c < 5) {
|
|
y = (byte)(n >> 59);
|
|
n = e[i--];
|
|
c = 5 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 59) & 0x1f);
|
|
n <<= 5;
|
|
c -= 5;
|
|
}
|
|
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
sp_2048_mont_sqr_16(r, r, m, mp);
|
|
|
|
sp_2048_mont_mul_16(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[16], 0, sizeof(sp_digit) * 16U);
|
|
sp_2048_mont_reduce_16(r, m, mp);
|
|
|
|
mask = 0 - (sp_2048_cmp_16(r, m) >= 0);
|
|
sp_2048_cond_sub_16(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* r = 2^n mod m where n is the number of bits to reduce by.
|
|
* Given m must be 2048 bits, just need to subtract.
|
|
*
|
|
* r A single precision number.
|
|
* m A single precision number.
|
|
*/
|
|
static void sp_2048_mont_norm_32(sp_digit* r, const sp_digit* m)
|
|
{
|
|
XMEMSET(r, 0, sizeof(sp_digit) * 32);
|
|
|
|
/* r = 2^n mod m */
|
|
sp_2048_sub_in_place_32(r, m);
|
|
}
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
/* Reduce the number back to 2048 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_2048_mont_reduce_32(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 32\n\t"
|
|
"mov x4, 32\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+16] += m[16] * mu\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 128]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+17] += m[17] * mu\n\t"
|
|
"ldr x10, [%[a], 136]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 136]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+18] += m[18] * mu\n\t"
|
|
"ldr x11, [%[a], 144]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 144]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 136]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+19] += m[19] * mu\n\t"
|
|
"ldr x10, [%[a], 152]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 152]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 144]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+20] += m[20] * mu\n\t"
|
|
"ldr x11, [%[a], 160]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 160]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 152]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+21] += m[21] * mu\n\t"
|
|
"ldr x10, [%[a], 168]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 168]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 160]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+22] += m[22] * mu\n\t"
|
|
"ldr x11, [%[a], 176]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 176]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 168]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+23] += m[23] * mu\n\t"
|
|
"ldr x10, [%[a], 184]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 184]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 176]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+24] += m[24] * mu\n\t"
|
|
"ldr x11, [%[a], 192]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 192]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 184]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+25] += m[25] * mu\n\t"
|
|
"ldr x10, [%[a], 200]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 200]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 192]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+26] += m[26] * mu\n\t"
|
|
"ldr x11, [%[a], 208]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 208]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 200]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+27] += m[27] * mu\n\t"
|
|
"ldr x10, [%[a], 216]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 216]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 208]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+28] += m[28] * mu\n\t"
|
|
"ldr x11, [%[a], 224]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 224]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 216]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+29] += m[29] * mu\n\t"
|
|
"ldr x10, [%[a], 232]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 232]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 224]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+30] += m[30] * mu\n\t"
|
|
"ldr x11, [%[a], 240]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 240]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 232]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+31] += m[31] * mu\n\t"
|
|
"ldr x10, [%[a], 248]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 248]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 240]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 256]\n\t"
|
|
"str x10, [%[a], 248]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 256]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 256\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
"ldp x5, x6, [%[m], 128]\n\t"
|
|
"ldp x7, x8, [%[m], 144]\n\t"
|
|
"ldp x12, x13, [x9, 128]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 144]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 128]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 144]\n\t"
|
|
"ldp x5, x6, [%[m], 160]\n\t"
|
|
"ldp x7, x8, [%[m], 176]\n\t"
|
|
"ldp x12, x13, [x9, 160]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 176]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 160]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 176]\n\t"
|
|
"ldp x5, x6, [%[m], 192]\n\t"
|
|
"ldp x7, x8, [%[m], 208]\n\t"
|
|
"ldp x12, x13, [x9, 192]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 208]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 192]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 208]\n\t"
|
|
"ldp x5, x6, [%[m], 224]\n\t"
|
|
"ldp x7, x8, [%[m], 240]\n\t"
|
|
"ldp x12, x13, [x9, 224]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 240]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 224]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 240]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_2048_mont_mul_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_2048_mul_32(r, a, b);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_2048_mont_sqr_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_2048_sqr_32(r, a);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 256\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_sub_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_2048_word_32(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_div_32_cond(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[64], t2[33];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[31];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 32);
|
|
for (i=31; i>=0; i--) {
|
|
sp_digit hi = t1[32 + i] - (t1[32 + i] == div);
|
|
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
|
|
|
|
sp_2048_mul_d_32(t2, d, r1);
|
|
t1[32 + i] += sp_2048_sub_in_place_32(&t1[i], t2);
|
|
t1[32 + i] -= t2[32];
|
|
if (t1[32 + i] != 0) {
|
|
t1[32 + i] += sp_2048_add_32(&t1[i], &t1[i], d);
|
|
if (t1[32 + i] != 0)
|
|
t1[32 + i] += sp_2048_add_32(&t1[i], &t1[i], d);
|
|
}
|
|
}
|
|
|
|
for (i = 31; i > 0; i--) {
|
|
if (t1[i] != d[i])
|
|
break;
|
|
}
|
|
if (t1[i] >= d[i]) {
|
|
sp_2048_sub_32(r, t1, d);
|
|
}
|
|
else {
|
|
XMEMCPY(r, t1, sizeof(*t1) * 32);
|
|
}
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_mod_32_cond(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_2048_div_32_cond(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_2048_cond_sub_32(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 256\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"ldp x5, x7, [%[b], 192]\n\t"
|
|
"ldp x11, x12, [%[b], 208]\n\t"
|
|
"ldp x4, x6, [%[a], 192]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 208]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 192]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 208]\n\t"
|
|
"ldp x5, x7, [%[b], 224]\n\t"
|
|
"ldp x11, x12, [%[b], 240]\n\t"
|
|
"ldp x4, x6, [%[a], 224]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 240]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 224]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 240]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_2048_mask_32(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<32; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 32; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_2048_cmp_32(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 248\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"ldp x7, x8, [%[b], 240]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"ldp x7, x8, [%[b], 208]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"ldp x7, x8, [%[b], 176]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"ldp x7, x8, [%[b], 144]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_div_32(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[64], t2[33];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[31];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 32);
|
|
for (i=31; i>=0; i--) {
|
|
sp_digit hi = t1[32 + i] - (t1[32 + i] == div);
|
|
r1 = div_2048_word_32(hi, t1[32 + i - 1], div);
|
|
|
|
sp_2048_mul_d_32(t2, d, r1);
|
|
t1[32 + i] += sp_2048_sub_in_place_32(&t1[i], t2);
|
|
t1[32 + i] -= t2[32];
|
|
sp_2048_mask_32(t2, d, t1[32 + i]);
|
|
t1[32 + i] += sp_2048_add_32(&t1[i], &t1[i], t2);
|
|
sp_2048_mask_32(t2, d, t1[32 + i]);
|
|
t1[32 + i] += sp_2048_add_32(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_2048_cmp_32(t1, d) >= 0;
|
|
sp_2048_cond_sub_32(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_2048_mod_32(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_2048_div_32(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || \
|
|
defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_2048_mod_exp_32(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[8 * 64];
|
|
#endif
|
|
sp_digit* t[8];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (8 * 64), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<8; i++) {
|
|
t[i] = td + i * 64;
|
|
}
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
sp_2048_mont_norm_32(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 32U);
|
|
if (reduceA != 0) {
|
|
err = sp_2048_mod_32(t[1] + 32, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_2048_mod_32(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 32, a, sizeof(sp_digit) * 32);
|
|
err = sp_2048_mod_32(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mont_sqr_32(t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_mul_32(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_sqr_32(t[ 4], t[ 2], m, mp);
|
|
sp_2048_mont_mul_32(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_2048_mont_sqr_32(t[ 6], t[ 3], m, mp);
|
|
sp_2048_mont_mul_32(t[ 7], t[ 4], t[ 3], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 3;
|
|
if (c == 64) {
|
|
c = 61;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 32);
|
|
for (; i>=0 || c>=3; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 61);
|
|
n <<= 3;
|
|
c = 61;
|
|
}
|
|
else if (c < 3) {
|
|
y = (byte)(n >> 61);
|
|
n = e[i--];
|
|
c = 3 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 61) & 0x7);
|
|
n <<= 3;
|
|
c -= 3;
|
|
}
|
|
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
|
|
sp_2048_mont_mul_32(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32U);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
|
|
mask = 0 - (sp_2048_cmp_32(r, m) >= 0);
|
|
sp_2048_cond_sub_32(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_2048_mod_exp_32(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[16 * 64];
|
|
#endif
|
|
sp_digit* t[16];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (16 * 64), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<16; i++) {
|
|
t[i] = td + i * 64;
|
|
}
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
sp_2048_mont_norm_32(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 32U);
|
|
if (reduceA != 0) {
|
|
err = sp_2048_mod_32(t[1] + 32, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_2048_mod_32(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 32, a, sizeof(sp_digit) * 32);
|
|
err = sp_2048_mod_32(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mont_sqr_32(t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_mul_32(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_2048_mont_sqr_32(t[ 4], t[ 2], m, mp);
|
|
sp_2048_mont_mul_32(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_2048_mont_sqr_32(t[ 6], t[ 3], m, mp);
|
|
sp_2048_mont_mul_32(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_2048_mont_sqr_32(t[ 8], t[ 4], m, mp);
|
|
sp_2048_mont_mul_32(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_2048_mont_sqr_32(t[10], t[ 5], m, mp);
|
|
sp_2048_mont_mul_32(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_2048_mont_sqr_32(t[12], t[ 6], m, mp);
|
|
sp_2048_mont_mul_32(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_2048_mont_sqr_32(t[14], t[ 7], m, mp);
|
|
sp_2048_mont_mul_32(t[15], t[ 8], t[ 7], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 4;
|
|
if (c == 64) {
|
|
c = 60;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 32);
|
|
for (; i>=0 || c>=4; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 60);
|
|
n <<= 4;
|
|
c = 60;
|
|
}
|
|
else if (c < 4) {
|
|
y = (byte)(n >> 60);
|
|
n = e[i--];
|
|
c = 4 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 60) & 0xf);
|
|
n <<= 4;
|
|
c -= 4;
|
|
}
|
|
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
|
|
sp_2048_mont_mul_32(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32U);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
|
|
mask = 0 - (sp_2048_cmp_32(r, m) >= 0);
|
|
sp_2048_cond_sub_32(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
#ifdef WOLFSSL_HAVE_SP_RSA
|
|
/* RSA public key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* em Public exponent.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 256 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPublic_2048(const byte* in, word32 inLen, const mp_int* em,
|
|
const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[32 * 5];
|
|
#endif
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit *ah = NULL;
|
|
sp_digit e[1] = {0};
|
|
int err = MP_OKAY;
|
|
|
|
if (*outLen < 256) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (mp_count_bits(em) > 64 || inLen > 256 ||
|
|
mp_count_bits(mm) != 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 32 * 5, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
r = a + 32 * 2;
|
|
m = r + 32 * 2;
|
|
ah = a + 32;
|
|
|
|
sp_2048_from_bin(ah, 32, in, inLen);
|
|
#if DIGIT_BIT >= 64
|
|
e[0] = em->dp[0];
|
|
#else
|
|
e[0] = em->dp[0];
|
|
if (em->used > 1) {
|
|
e[0] |= ((sp_digit)em->dp[1]) << DIGIT_BIT;
|
|
}
|
|
#endif
|
|
if (e[0] == 0) {
|
|
err = MP_EXPTMOD_E;
|
|
}
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_2048_from_mp(m, 32, mm);
|
|
|
|
if (e[0] == 0x3) {
|
|
if (err == MP_OKAY) {
|
|
sp_2048_sqr_32(r, ah);
|
|
err = sp_2048_mod_32_cond(r, r, m);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mul_32(r, ah, r);
|
|
err = sp_2048_mod_32_cond(r, r, m);
|
|
}
|
|
}
|
|
else {
|
|
int i;
|
|
sp_digit mp;
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
|
|
/* Convert to Montgomery form. */
|
|
XMEMSET(a, 0, sizeof(sp_digit) * 32);
|
|
err = sp_2048_mod_32_cond(a, a, m);
|
|
|
|
if (err == MP_OKAY) {
|
|
for (i = 63; i >= 0; i--) {
|
|
if (e[0] >> i) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
XMEMCPY(r, a, sizeof(sp_digit) * 32);
|
|
for (i--; i>=0; i--) {
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
if (((e[0] >> i) & 1) == 1) {
|
|
sp_2048_mont_mul_32(r, r, a, m, mp);
|
|
}
|
|
}
|
|
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
|
|
for (i = 31; i > 0; i--) {
|
|
if (r[i] != m[i]) {
|
|
break;
|
|
}
|
|
}
|
|
if (r[i] >= m[i]) {
|
|
sp_2048_sub_in_place_32(r, m);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_to_bin_32(r, out);
|
|
*outLen = 256;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
|
/* Conditionally add a and b using the mask m.
|
|
* m is -1 to add and 0 when not.
|
|
*
|
|
* r A single precision number representing conditional add result.
|
|
* a A single precision number to add with.
|
|
* b A single precision number to add.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_2048_cond_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* RSA private key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* dm Private exponent.
|
|
* pm First prime.
|
|
* qm Second prime.
|
|
* dpm First prime's CRT exponent.
|
|
* dqm Second prime's CRT exponent.
|
|
* qim Inverse of second prime mod p.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 256 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPrivate_2048(const byte* in, word32 inLen, const mp_int* dm,
|
|
const mp_int* pm, const mp_int* qm, const mp_int* dpm, const mp_int* dqm,
|
|
const mp_int* qim, const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* d = NULL;
|
|
#else
|
|
sp_digit d[32 * 4];
|
|
#endif
|
|
sp_digit* a = NULL;
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
(void)pm;
|
|
(void)qm;
|
|
(void)dpm;
|
|
(void)dqm;
|
|
(void)qim;
|
|
|
|
if (*outLen < 256U) {
|
|
err = MP_TO_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
if (mp_count_bits(dm) > 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (inLen > 256) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mm) != 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 32 * 4, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (d == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
a = d + 32;
|
|
m = a + 64;
|
|
r = a;
|
|
|
|
sp_2048_from_bin(a, 32, in, inLen);
|
|
sp_2048_from_mp(d, 32, dm);
|
|
sp_2048_from_mp(m, 32, mm);
|
|
err = sp_2048_mod_exp_32(r, a, d, 2048, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_to_bin_32(r, out);
|
|
*outLen = 256;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (d != NULL)
|
|
#endif
|
|
{
|
|
/* only "a" and "r" are sensitive and need zeroized (same pointer) */
|
|
if (a != NULL)
|
|
ForceZero(a, sizeof(sp_digit) * 32);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
#else
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[16 * 11];
|
|
#endif
|
|
sp_digit* p = NULL;
|
|
sp_digit* q = NULL;
|
|
sp_digit* dp = NULL;
|
|
sp_digit* tmpa = NULL;
|
|
sp_digit* tmpb = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit* qi = NULL;
|
|
sp_digit* dq = NULL;
|
|
sp_digit c;
|
|
int err = MP_OKAY;
|
|
|
|
(void)dm;
|
|
(void)mm;
|
|
|
|
if (*outLen < 256) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (inLen > 256 || mp_count_bits(mm) != 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16 * 11, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = a + 32 * 2;
|
|
q = p + 16;
|
|
qi = dq = dp = q + 16;
|
|
tmpa = qi + 16;
|
|
tmpb = tmpa + 32;
|
|
r = a;
|
|
|
|
sp_2048_from_bin(a, 32, in, inLen);
|
|
sp_2048_from_mp(p, 16, pm);
|
|
sp_2048_from_mp(q, 16, qm);
|
|
sp_2048_from_mp(dp, 16, dpm);
|
|
|
|
err = sp_2048_mod_exp_16(tmpa, a, dp, 1024, p, 1);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_2048_from_mp(dq, 16, dqm);
|
|
err = sp_2048_mod_exp_16(tmpb, a, dq, 1024, q, 1);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
c = sp_2048_sub_in_place_16(tmpa, tmpb);
|
|
c += sp_2048_cond_add_16(tmpa, tmpa, p, c);
|
|
sp_2048_cond_add_16(tmpa, tmpa, p, c);
|
|
|
|
sp_2048_from_mp(qi, 16, qim);
|
|
sp_2048_mul_16(tmpa, tmpa, qi);
|
|
err = sp_2048_mod_16(tmpa, tmpa, p);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mul_16(tmpa, q, tmpa);
|
|
XMEMSET(&tmpb[16], 0, sizeof(sp_digit) * 16);
|
|
sp_2048_add_32(r, tmpb, tmpa);
|
|
|
|
sp_2048_to_bin_32(r, out);
|
|
*outLen = 256;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(a, sizeof(sp_digit) * 16 * 11);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
|
#endif /* WOLFSSL_HAVE_SP_RSA */
|
|
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
|
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_2048_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (2048 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 32);
|
|
r->used = 32;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 32; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (2048 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 32; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (2048 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base. MP integer.
|
|
* exp Exponent. MP integer.
|
|
* mod Modulus. MP integer.
|
|
* res Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_2048(const mp_int* base, const mp_int* exp, const mp_int* mod,
|
|
mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[64];
|
|
sp_digit e[32];
|
|
sp_digit m[32];
|
|
sp_digit* r = b;
|
|
int expBits = mp_count_bits(exp);
|
|
|
|
if (mp_count_bits(base) > 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expBits > 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_from_mp(b, 32, base);
|
|
sp_2048_from_mp(e, 32, exp);
|
|
sp_2048_from_mp(m, 32, mod);
|
|
|
|
err = sp_2048_mod_exp_32(r, b, e, expBits, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_2048_to_mp(r, res);
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef WOLFSSL_HAVE_SP_DH
|
|
|
|
#ifdef HAVE_FFDHE_2048
|
|
static void sp_2048_lshift_32(sp_digit* r, sp_digit* a, byte n)
|
|
{
|
|
word64 n64 = n;
|
|
__asm__ __volatile__ (
|
|
"mov x6, 63\n\t"
|
|
"sub x6, x6, %[n]\n\t"
|
|
"ldr x3, [%[a], 248]\n\t"
|
|
"lsr x4, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x4, x4, x6\n\t"
|
|
"ldr x2, [%[a], 240]\n\t"
|
|
"str x4, [%[r], 256]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 232]\n\t"
|
|
"str x3, [%[r], 248]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 224]\n\t"
|
|
"str x2, [%[r], 240]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 216]\n\t"
|
|
"str x4, [%[r], 232]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 208]\n\t"
|
|
"str x3, [%[r], 224]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 200]\n\t"
|
|
"str x2, [%[r], 216]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 192]\n\t"
|
|
"str x4, [%[r], 208]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 184]\n\t"
|
|
"str x3, [%[r], 200]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 176]\n\t"
|
|
"str x2, [%[r], 192]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 168]\n\t"
|
|
"str x4, [%[r], 184]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 160]\n\t"
|
|
"str x3, [%[r], 176]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 152]\n\t"
|
|
"str x2, [%[r], 168]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 144]\n\t"
|
|
"str x4, [%[r], 160]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 136]\n\t"
|
|
"str x3, [%[r], 152]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 128]\n\t"
|
|
"str x2, [%[r], 144]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 120]\n\t"
|
|
"str x4, [%[r], 136]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 112]\n\t"
|
|
"str x3, [%[r], 128]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 104]\n\t"
|
|
"str x2, [%[r], 120]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 96]\n\t"
|
|
"str x4, [%[r], 112]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 88]\n\t"
|
|
"str x3, [%[r], 104]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 80]\n\t"
|
|
"str x2, [%[r], 96]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 72]\n\t"
|
|
"str x4, [%[r], 88]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 64]\n\t"
|
|
"str x3, [%[r], 80]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 56]\n\t"
|
|
"str x2, [%[r], 72]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 48]\n\t"
|
|
"str x4, [%[r], 64]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 40]\n\t"
|
|
"str x3, [%[r], 56]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 32]\n\t"
|
|
"str x2, [%[r], 48]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 24]\n\t"
|
|
"str x4, [%[r], 40]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 16]\n\t"
|
|
"str x3, [%[r], 32]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 8]\n\t"
|
|
"str x2, [%[r], 24]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 0]\n\t"
|
|
"str x4, [%[r], 16]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"str x2, [%[r]]\n\t"
|
|
"str x3, [%[r], 8]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [n] "r" (n64)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Modular exponentiate 2 to the e mod m. (r = 2^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even.
|
|
*/
|
|
static int sp_2048_mod_exp_2_32(sp_digit* r, const sp_digit* e, int bits,
|
|
const sp_digit* m)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[97];
|
|
#endif
|
|
sp_digit* norm = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit o;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 97, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
tmp = td + 64;
|
|
|
|
sp_2048_mont_setup(m, &mp);
|
|
sp_2048_mont_norm_32(norm, m);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 6;
|
|
if (c == 64) {
|
|
c = 58;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
sp_2048_lshift_32(r, norm, y);
|
|
for (; i>=0 || c>=6; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 58);
|
|
n <<= 6;
|
|
c = 58;
|
|
}
|
|
else if (c < 6) {
|
|
y = (byte)(n >> 58);
|
|
n = e[i--];
|
|
c = 6 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 58) & 0x3f);
|
|
n <<= 6;
|
|
c -= 6;
|
|
}
|
|
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
sp_2048_mont_sqr_32(r, r, m, mp);
|
|
|
|
sp_2048_lshift_32(r, r, y);
|
|
sp_2048_mul_d_32(tmp, norm, r[32]);
|
|
r[32] = 0;
|
|
o = sp_2048_add_32(r, r, tmp);
|
|
sp_2048_cond_sub_32(r, r, m, (sp_digit)0 - o);
|
|
}
|
|
|
|
XMEMSET(&r[32], 0, sizeof(sp_digit) * 32U);
|
|
sp_2048_mont_reduce_32(r, m, mp);
|
|
|
|
mask = 0 - (sp_2048_cmp_32(r, m) >= 0);
|
|
sp_2048_cond_sub_32(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_FFDHE_2048 */
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base.
|
|
* exp Array of bytes that is the exponent.
|
|
* expLen Length of data, in bytes, in exponent.
|
|
* mod Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 256 bytes long.
|
|
* outLen Length, in bytes, of exponentiation result.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_DhExp_2048(const mp_int* base, const byte* exp, word32 expLen,
|
|
const mp_int* mod, byte* out, word32* outLen)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[64];
|
|
sp_digit e[32];
|
|
sp_digit m[32];
|
|
sp_digit* r = b;
|
|
word32 i;
|
|
|
|
if (mp_count_bits(base) > 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expLen > 256) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 2048) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_from_mp(b, 32, base);
|
|
sp_2048_from_bin(e, 32, exp, expLen);
|
|
sp_2048_from_mp(m, 32, mod);
|
|
|
|
#ifdef HAVE_FFDHE_2048
|
|
if (base->used == 1 && base->dp[0] == 2 && m[31] == (sp_digit)-1)
|
|
err = sp_2048_mod_exp_2_32(r, e, expLen * 8, m);
|
|
else
|
|
#endif
|
|
err = sp_2048_mod_exp_32(r, b, e, expLen * 8, m, 0);
|
|
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_to_bin_32(r, out);
|
|
*outLen = 256;
|
|
for (i=0; i<256 && out[i] == 0; i++) {
|
|
/* Search for first non-zero. */
|
|
}
|
|
*outLen -= i;
|
|
XMEMMOVE(out, out + i, *outLen);
|
|
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_HAVE_SP_DH */
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base. MP integer.
|
|
* exp Exponent. MP integer.
|
|
* mod Modulus. MP integer.
|
|
* res Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_1024(const mp_int* base, const mp_int* exp, const mp_int* mod,
|
|
mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[32];
|
|
sp_digit e[16];
|
|
sp_digit m[16];
|
|
sp_digit* r = b;
|
|
int expBits = mp_count_bits(exp);
|
|
|
|
if (mp_count_bits(base) > 1024) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expBits > 1024) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 1024) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_from_mp(b, 16, base);
|
|
sp_2048_from_mp(e, 16, exp);
|
|
sp_2048_from_mp(m, 16, mod);
|
|
|
|
err = sp_2048_mod_exp_16(r, b, e, expBits, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(r + 16, 0, sizeof(*r) * 16U);
|
|
err = sp_2048_to_mp(r, res);
|
|
res->used = mod->used;
|
|
mp_clamp(res);
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* WOLFSSL_HAVE_SP_DH | (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) */
|
|
|
|
#endif /* !WOLFSSL_SP_NO_2048 */
|
|
|
|
#ifndef WOLFSSL_SP_NO_3072
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_3072_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_3072_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Write r as big endian to byte array.
|
|
* Fixed length number of bytes written: 384
|
|
*
|
|
* r A single precision integer.
|
|
* a Byte array.
|
|
*/
|
|
static void sp_3072_to_bin_48(sp_digit* r, byte* a)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
for (i = 47, j = 0; i >= 0; i--) {
|
|
a[j++] = r[i] >> 56;
|
|
a[j++] = r[i] >> 48;
|
|
a[j++] = r[i] >> 40;
|
|
a[j++] = r[i] >> 32;
|
|
a[j++] = r[i] >> 24;
|
|
a[j++] = r[i] >> 16;
|
|
a[j++] = r[i] >> 8;
|
|
a[j++] = r[i] >> 0;
|
|
}
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && (!defined(WOLFSSL_RSA_PUBLIC_ONLY) || !defined(WOLFSSL_SP_SMALL))) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_3072_norm_48(a)
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && (!WOLFSSL_RSA_PUBLIC_ONLY || !WOLFSSL_SP_SMALL)) || WOLFSSL_HAVE_SP_DH */
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_3072_norm_48(a)
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_3072_mul_12(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[12];
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x10, x11, [%[a], 0]\n\t"
|
|
"ldp x12, x13, [%[a], 16]\n\t"
|
|
"ldp x14, x15, [%[a], 32]\n\t"
|
|
"ldp x16, x17, [%[a], 48]\n\t"
|
|
"ldp x19, x20, [%[a], 64]\n\t"
|
|
"ldp x21, x22, [%[a], 80]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"mul x4, x10, x9\n\t"
|
|
"umulh x5, x10, x9\n\t"
|
|
"mov x6, 0\n\t"
|
|
"str x4, [%[tmp]]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[tmp], 8]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[tmp], 16]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[tmp], 24]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[0] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[4] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[tmp], 32]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[1] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[4] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[5] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[tmp], 40]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[1] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[2] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[4] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[5] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[6] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[tmp], 48]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[0] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[1] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[2] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[3] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[4] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[5] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[6] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[7] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[tmp], 56]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[1] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[2] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[3] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[4] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[5] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[6] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[7] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[8] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[tmp], 64]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[1] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[2] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[3] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[4] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[5] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[6] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[7] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[8] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[9] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[tmp], 72]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[0] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[1] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[2] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[3] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[4] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[5] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[6] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[7] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[8] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[9] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[10] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[tmp], 80]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x10, x9\n\t"
|
|
"umulh x8, x10, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[1] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[2] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[3] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[4] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[5] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[6] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[7] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[8] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[9] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[10] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[11] * B[0]\n\t"
|
|
"ldr x9, [%[b], 0]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[tmp], 88]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[1] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x11, x9\n\t"
|
|
"umulh x8, x11, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[2] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[3] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[4] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[5] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[6] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[7] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[8] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[9] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[10] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[11] * B[1]\n\t"
|
|
"ldr x9, [%[b], 8]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[r], 96]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[2] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x12, x9\n\t"
|
|
"umulh x8, x12, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[3] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[4] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[5] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[6] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[7] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[8] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[9] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[10] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[11] * B[2]\n\t"
|
|
"ldr x9, [%[b], 16]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[r], 104]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[3] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x13, x9\n\t"
|
|
"umulh x8, x13, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[4] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[5] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[6] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[7] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[8] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[9] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[10] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[11] * B[3]\n\t"
|
|
"ldr x9, [%[b], 24]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[r], 112]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[4] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[5] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[6] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[7] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[8] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[9] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[10] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[11] * B[4]\n\t"
|
|
"ldr x9, [%[b], 32]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[r], 120]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[5] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[6] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[7] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[8] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[9] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[10] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[11] * B[5]\n\t"
|
|
"ldr x9, [%[b], 40]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[r], 128]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[6] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[7] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[8] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[9] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[10] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[11] * B[6]\n\t"
|
|
"ldr x9, [%[b], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[r], 136]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[7] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[8] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[9] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[10] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[11] * B[7]\n\t"
|
|
"ldr x9, [%[b], 56]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[r], 144]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[8] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[9] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[10] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"# A[11] * B[8]\n\t"
|
|
"ldr x9, [%[b], 64]\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"str x5, [%[r], 152]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[9] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[10] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"# A[11] * B[9]\n\t"
|
|
"ldr x9, [%[b], 72]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x6, [%[r], 160]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[10] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"# A[11] * B[10]\n\t"
|
|
"ldr x9, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, xzr, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x4, x4, x7\n\t"
|
|
"adcs x5, x5, x8\n\t"
|
|
"str x4, [%[r], 168]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# A[11] * B[11]\n\t"
|
|
"ldr x9, [%[b], 88]\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"adds x5, x5, x7\n\t"
|
|
"adc x6, x6, x8\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x10, x11, [%[tmp], 0]\n\t"
|
|
"ldp x12, x13, [%[tmp], 16]\n\t"
|
|
"ldp x14, x15, [%[tmp], 32]\n\t"
|
|
"ldp x16, x17, [%[tmp], 48]\n\t"
|
|
"ldp x19, x20, [%[tmp], 64]\n\t"
|
|
"ldp x21, x22, [%[tmp], 80]\n\t"
|
|
"stp x10, x11, [%[r], 0]\n\t"
|
|
"stp x12, x13, [%[r], 16]\n\t"
|
|
"stp x14, x15, [%[r], 32]\n\t"
|
|
"stp x16, x17, [%[r], 48]\n\t"
|
|
"stp x19, x20, [%[r], 64]\n\t"
|
|
"stp x21, x22, [%[r], 80]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [tmp] "r" (tmp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22"
|
|
);
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_3072_sqr_12(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x10, x11, [%[a], 0]\n\t"
|
|
"ldp x12, x13, [%[a], 16]\n\t"
|
|
"ldp x14, x15, [%[a], 32]\n\t"
|
|
"ldp x16, x17, [%[a], 48]\n\t"
|
|
"ldp x19, x20, [%[a], 64]\n\t"
|
|
"ldp x21, x22, [%[a], 80]\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x2, x10, x10\n\t"
|
|
"umulh x3, x10, x10\n\t"
|
|
"str x2, [%[r]]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x8, x10, x11\n\t"
|
|
"umulh x9, x10, x11\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"adc x2, xzr, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"str x3, [%[r], 8]\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x8, x10, x12\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x9, x10, x12\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x8, x11, x11\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"umulh x9, x11, x11\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"str x4, [%[r], 16]\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x8, x10, x13\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"umulh x9, x10, x13\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x8, x11, x12\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x11, x12\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"str x2, [%[r], 24]\n\t"
|
|
"# A[0] * A[4]\n\t"
|
|
"mul x8, x10, x14\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x10, x14\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"adc x2, xzr, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x8, x11, x13\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x9, x11, x13\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x8, x12, x12\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x9, x12, x12\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"str x3, [%[r], 32]\n\t"
|
|
"# A[0] * A[5]\n\t"
|
|
"mul x5, x10, x15\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x6, x10, x15\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[4]\n\t"
|
|
"mul x8, x11, x14\n\t"
|
|
"umulh x9, x11, x14\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x8, x12, x13\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x13\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"adcs x2, x2, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"str x4, [%[r], 40]\n\t"
|
|
"# A[0] * A[6]\n\t"
|
|
"mul x5, x10, x16\n\t"
|
|
"umulh x6, x10, x16\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[5]\n\t"
|
|
"mul x8, x11, x15\n\t"
|
|
"umulh x9, x11, x15\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[4]\n\t"
|
|
"mul x8, x12, x14\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x14\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x8, x13, x13\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x13\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x2, x2, x5\n\t"
|
|
"adcs x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"str x2, [%[r], 48]\n\t"
|
|
"# A[0] * A[7]\n\t"
|
|
"mul x5, x10, x17\n\t"
|
|
"umulh x6, x10, x17\n\t"
|
|
"mov x2, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[6]\n\t"
|
|
"mul x8, x11, x16\n\t"
|
|
"umulh x9, x11, x16\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[5]\n\t"
|
|
"mul x8, x12, x15\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x15\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[4]\n\t"
|
|
"mul x8, x13, x14\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x14\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x3, x3, x5\n\t"
|
|
"adcs x4, x4, x6\n\t"
|
|
"adc x2, x2, x7\n\t"
|
|
"str x3, [%[r], 56]\n\t"
|
|
"# A[0] * A[8]\n\t"
|
|
"mul x5, x10, x19\n\t"
|
|
"umulh x6, x10, x19\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[7]\n\t"
|
|
"mul x8, x11, x17\n\t"
|
|
"umulh x9, x11, x17\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[6]\n\t"
|
|
"mul x8, x12, x16\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x16\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[5]\n\t"
|
|
"mul x8, x13, x15\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x15\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[4]\n\t"
|
|
"mul x8, x14, x14\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x14\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"adcs x2, x2, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"str x4, [%[r], 64]\n\t"
|
|
"# A[0] * A[9]\n\t"
|
|
"mul x5, x10, x20\n\t"
|
|
"umulh x6, x10, x20\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[8]\n\t"
|
|
"mul x8, x11, x19\n\t"
|
|
"umulh x9, x11, x19\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[7]\n\t"
|
|
"mul x8, x12, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[6]\n\t"
|
|
"mul x8, x13, x16\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x16\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[5]\n\t"
|
|
"mul x8, x14, x15\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x15\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x2, x2, x5\n\t"
|
|
"adcs x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"str x2, [%[r], 72]\n\t"
|
|
"# A[0] * A[10]\n\t"
|
|
"mul x5, x10, x21\n\t"
|
|
"umulh x6, x10, x21\n\t"
|
|
"mov x2, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[9]\n\t"
|
|
"mul x8, x11, x20\n\t"
|
|
"umulh x9, x11, x20\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[8]\n\t"
|
|
"mul x8, x12, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[7]\n\t"
|
|
"mul x8, x13, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[6]\n\t"
|
|
"mul x8, x14, x16\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x16\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[5] * A[5]\n\t"
|
|
"mul x8, x15, x15\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x15, x15\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x3, x3, x5\n\t"
|
|
"adcs x4, x4, x6\n\t"
|
|
"adc x2, x2, x7\n\t"
|
|
"str x3, [%[r], 80]\n\t"
|
|
"# A[0] * A[11]\n\t"
|
|
"mul x5, x10, x22\n\t"
|
|
"umulh x6, x10, x22\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[1] * A[10]\n\t"
|
|
"mul x8, x11, x21\n\t"
|
|
"umulh x9, x11, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[2] * A[9]\n\t"
|
|
"mul x8, x12, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x12, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[8]\n\t"
|
|
"mul x8, x13, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[7]\n\t"
|
|
"mul x8, x14, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[5] * A[6]\n\t"
|
|
"mul x8, x15, x16\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x15, x16\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"adcs x2, x2, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"str x4, [%[r], 88]\n\t"
|
|
"# A[1] * A[11]\n\t"
|
|
"mul x5, x11, x22\n\t"
|
|
"umulh x6, x11, x22\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[2] * A[10]\n\t"
|
|
"mul x8, x12, x21\n\t"
|
|
"umulh x9, x12, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[3] * A[9]\n\t"
|
|
"mul x8, x13, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x13, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[8]\n\t"
|
|
"mul x8, x14, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[5] * A[7]\n\t"
|
|
"mul x8, x15, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x15, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[6] * A[6]\n\t"
|
|
"mul x8, x16, x16\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x16, x16\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x2, x2, x5\n\t"
|
|
"adcs x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"str x2, [%[r], 96]\n\t"
|
|
"# A[2] * A[11]\n\t"
|
|
"mul x5, x12, x22\n\t"
|
|
"umulh x6, x12, x22\n\t"
|
|
"mov x2, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[3] * A[10]\n\t"
|
|
"mul x8, x13, x21\n\t"
|
|
"umulh x9, x13, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[4] * A[9]\n\t"
|
|
"mul x8, x14, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x14, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[5] * A[8]\n\t"
|
|
"mul x8, x15, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x15, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[6] * A[7]\n\t"
|
|
"mul x8, x16, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x16, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x3, x3, x5\n\t"
|
|
"adcs x4, x4, x6\n\t"
|
|
"adc x2, x2, x7\n\t"
|
|
"str x3, [%[r], 104]\n\t"
|
|
"# A[3] * A[11]\n\t"
|
|
"mul x5, x13, x22\n\t"
|
|
"umulh x6, x13, x22\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[4] * A[10]\n\t"
|
|
"mul x8, x14, x21\n\t"
|
|
"umulh x9, x14, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[5] * A[9]\n\t"
|
|
"mul x8, x15, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x15, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[6] * A[8]\n\t"
|
|
"mul x8, x16, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x16, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[7] * A[7]\n\t"
|
|
"mul x8, x17, x17\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x17, x17\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"adcs x2, x2, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"str x4, [%[r], 112]\n\t"
|
|
"# A[4] * A[11]\n\t"
|
|
"mul x5, x14, x22\n\t"
|
|
"umulh x6, x14, x22\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[5] * A[10]\n\t"
|
|
"mul x8, x15, x21\n\t"
|
|
"umulh x9, x15, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[6] * A[9]\n\t"
|
|
"mul x8, x16, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x16, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[7] * A[8]\n\t"
|
|
"mul x8, x17, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x17, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x2, x2, x5\n\t"
|
|
"adcs x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"str x2, [%[r], 120]\n\t"
|
|
"# A[5] * A[11]\n\t"
|
|
"mul x5, x15, x22\n\t"
|
|
"umulh x6, x15, x22\n\t"
|
|
"mov x2, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[6] * A[10]\n\t"
|
|
"mul x8, x16, x21\n\t"
|
|
"umulh x9, x16, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[7] * A[9]\n\t"
|
|
"mul x8, x17, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x17, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[8] * A[8]\n\t"
|
|
"mul x8, x19, x19\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x19, x19\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x3, x3, x5\n\t"
|
|
"adcs x4, x4, x6\n\t"
|
|
"adc x2, x2, x7\n\t"
|
|
"str x3, [%[r], 128]\n\t"
|
|
"# A[6] * A[11]\n\t"
|
|
"mul x5, x16, x22\n\t"
|
|
"umulh x6, x16, x22\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"# A[7] * A[10]\n\t"
|
|
"mul x8, x17, x21\n\t"
|
|
"umulh x9, x17, x21\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"# A[8] * A[9]\n\t"
|
|
"mul x8, x19, x20\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"umulh x9, x19, x20\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x8\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adc x7, x7, x7\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"adcs x2, x2, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"str x4, [%[r], 136]\n\t"
|
|
"# A[7] * A[11]\n\t"
|
|
"mul x8, x17, x22\n\t"
|
|
"umulh x9, x17, x22\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"# A[8] * A[10]\n\t"
|
|
"mul x8, x19, x21\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x19, x21\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"# A[9] * A[9]\n\t"
|
|
"mul x8, x20, x20\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x20, x20\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"str x2, [%[r], 144]\n\t"
|
|
"# A[8] * A[11]\n\t"
|
|
"mul x8, x19, x22\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x19, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"adc x2, xzr, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"# A[9] * A[10]\n\t"
|
|
"mul x8, x20, x21\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x9, x20, x21\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"str x3, [%[r], 152]\n\t"
|
|
"# A[9] * A[11]\n\t"
|
|
"mul x8, x20, x22\n\t"
|
|
"adcs x4, x4, x9\n\t"
|
|
"umulh x9, x20, x22\n\t"
|
|
"adc x2, x2, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"# A[10] * A[10]\n\t"
|
|
"mul x8, x21, x21\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"umulh x9, x21, x21\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"str x4, [%[r], 160]\n\t"
|
|
"# A[10] * A[11]\n\t"
|
|
"mul x8, x21, x22\n\t"
|
|
"adcs x2, x2, x9\n\t"
|
|
"umulh x9, x21, x22\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x2, x2, x8\n\t"
|
|
"str x2, [%[r], 168]\n\t"
|
|
"# A[11] * A[11]\n\t"
|
|
"mul x8, x22, x22\n\t"
|
|
"adcs x3, x3, x9\n\t"
|
|
"umulh x9, x22, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x3, x3, x8\n\t"
|
|
"adc x4, x4, x9\n\t"
|
|
"stp x3, x4, [%[r], 176]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4", "x8", "x9", "x10", "x5", "x6", "x7", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22"
|
|
);
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_add_12(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_in_place_24(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"ldp x2, x3, [%[a], 128]\n\t"
|
|
"ldp x6, x7, [%[b], 128]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 144]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 128]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 144]\n\t"
|
|
"ldp x2, x3, [%[a], 160]\n\t"
|
|
"ldp x6, x7, [%[b], 160]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 176]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 160]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 176]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_add_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_3072_mask_12(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<12; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
r[0] = a[0] & m;
|
|
r[1] = a[1] & m;
|
|
r[2] = a[2] & m;
|
|
r[3] = a[3] & m;
|
|
r[4] = a[4] & m;
|
|
r[5] = a[5] & m;
|
|
r[6] = a[6] & m;
|
|
r[7] = a[7] & m;
|
|
r[8] = a[8] & m;
|
|
r[9] = a[9] & m;
|
|
r[10] = a[10] & m;
|
|
r[11] = a[11] & m;
|
|
#endif
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_3072_add_zero_12(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_mul_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[24];
|
|
sp_digit a1[12];
|
|
sp_digit b1[12];
|
|
sp_digit z2[24];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_3072_add_12(a1, a, &a[12]);
|
|
cb = sp_3072_add_12(b1, b, &b[12]);
|
|
u = ca & cb;
|
|
sp_3072_mul_12(z1, a1, b1);
|
|
sp_3072_mul_12(z2, &a[12], &b[12]);
|
|
sp_3072_mul_12(z0, a, b);
|
|
sp_3072_mask_12(r + 24, a1, 0 - cb);
|
|
sp_3072_mask_12(b1, b1, 0 - ca);
|
|
u += sp_3072_add_12(r + 24, r + 24, b1);
|
|
u += sp_3072_sub_in_place_24(z1, z2);
|
|
u += sp_3072_sub_in_place_24(z1, z0);
|
|
u += sp_3072_add_24(r + 12, r + 12, z1);
|
|
u += sp_3072_add_12(r + 24, r + 24, z2);
|
|
sp_3072_add_zero_12(r + 36, z2 + 12, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_dbl_12(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 96\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_dbl_12(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 88]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_sqr_24(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[24];
|
|
sp_digit z1[24];
|
|
sp_digit a1[12];
|
|
sp_digit u;
|
|
|
|
u = sp_3072_add_12(a1, a, &a[12]);
|
|
sp_3072_sqr_12(z1, a1);
|
|
sp_3072_sqr_12(z2, &a[12]);
|
|
sp_3072_sqr_12(z0, a);
|
|
sp_3072_mask_12(r + 24, a1, 0 - u);
|
|
u += sp_3072_dbl_12(r + 24, r + 24);
|
|
u += sp_3072_sub_in_place_24(z1, z2);
|
|
u += sp_3072_sub_in_place_24(z1, z0);
|
|
u += sp_3072_add_24(r + 12, r + 12, z1);
|
|
u += sp_3072_add_12(r + 24, r + 24, z2);
|
|
sp_3072_add_zero_12(r + 36, z2 + 12, u);
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_in_place_48(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"ldp x2, x3, [%[a], 128]\n\t"
|
|
"ldp x6, x7, [%[b], 128]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 144]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 128]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 144]\n\t"
|
|
"ldp x2, x3, [%[a], 160]\n\t"
|
|
"ldp x6, x7, [%[b], 160]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 176]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 160]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 176]\n\t"
|
|
"ldp x2, x3, [%[a], 192]\n\t"
|
|
"ldp x6, x7, [%[b], 192]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 208]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 192]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 208]\n\t"
|
|
"ldp x2, x3, [%[a], 224]\n\t"
|
|
"ldp x6, x7, [%[b], 224]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 240]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 224]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 240]\n\t"
|
|
"ldp x2, x3, [%[a], 256]\n\t"
|
|
"ldp x6, x7, [%[b], 256]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 272]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 272]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 256]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 272]\n\t"
|
|
"ldp x2, x3, [%[a], 288]\n\t"
|
|
"ldp x6, x7, [%[b], 288]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 304]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 304]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 288]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 304]\n\t"
|
|
"ldp x2, x3, [%[a], 320]\n\t"
|
|
"ldp x6, x7, [%[b], 320]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 336]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 336]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 320]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 336]\n\t"
|
|
"ldp x2, x3, [%[a], 352]\n\t"
|
|
"ldp x6, x7, [%[b], 352]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 368]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 368]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 352]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 368]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"ldp x3, x4, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 272]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 256]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 272]\n\t"
|
|
"ldp x3, x4, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 304]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 288]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 304]\n\t"
|
|
"ldp x3, x4, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 336]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 320]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 336]\n\t"
|
|
"ldp x3, x4, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 368]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 352]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 368]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_3072_mask_24(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<24; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 24; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_3072_add_zero_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_mul_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[48];
|
|
sp_digit a1[24];
|
|
sp_digit b1[24];
|
|
sp_digit z2[48];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_3072_add_24(a1, a, &a[24]);
|
|
cb = sp_3072_add_24(b1, b, &b[24]);
|
|
u = ca & cb;
|
|
sp_3072_mul_24(z1, a1, b1);
|
|
sp_3072_mul_24(z2, &a[24], &b[24]);
|
|
sp_3072_mul_24(z0, a, b);
|
|
sp_3072_mask_24(r + 48, a1, 0 - cb);
|
|
sp_3072_mask_24(b1, b1, 0 - ca);
|
|
u += sp_3072_add_24(r + 48, r + 48, b1);
|
|
u += sp_3072_sub_in_place_48(z1, z2);
|
|
u += sp_3072_sub_in_place_48(z1, z0);
|
|
u += sp_3072_add_48(r + 24, r + 24, z1);
|
|
u += sp_3072_add_24(r + 48, r + 48, z2);
|
|
sp_3072_add_zero_24(r + 72, z2 + 24, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_dbl_24(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 192\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_dbl_24(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 88]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 120]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 152]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 184]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[48];
|
|
sp_digit z1[48];
|
|
sp_digit a1[24];
|
|
sp_digit u;
|
|
|
|
u = sp_3072_add_24(a1, a, &a[24]);
|
|
sp_3072_sqr_24(z1, a1);
|
|
sp_3072_sqr_24(z2, &a[24]);
|
|
sp_3072_sqr_24(z0, a);
|
|
sp_3072_mask_24(r + 48, a1, 0 - u);
|
|
u += sp_3072_dbl_24(r + 48, r + 48);
|
|
u += sp_3072_sub_in_place_48(z1, z2);
|
|
u += sp_3072_sub_in_place_48(z1, z0);
|
|
u += sp_3072_add_48(r + 24, r + 24, z1);
|
|
u += sp_3072_add_24(r + 48, r + 48, z2);
|
|
sp_3072_add_zero_24(r + 72, z2 + 24, u);
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_add_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 384\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_in_place_48(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 384\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_3072_mul_48(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[96];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 376\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 384\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 752\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_3072_sqr_48(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[96];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 376\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 384\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 752\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_3072_mask_24(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
int i;
|
|
|
|
for (i=0; i<24; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_add_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 192\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_in_place_24(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 192\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_3072_mul_24(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[48];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 184\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 192\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 368\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_3072_sqr_24(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[48];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 184\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 192\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 368\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
|
|
/* Caclulate the bottom digit of -1/a mod 2^n.
|
|
*
|
|
* a A single precision number.
|
|
* rho Bottom word of inverse.
|
|
*/
|
|
static void sp_3072_mont_setup(const sp_digit* a, sp_digit* rho)
|
|
{
|
|
sp_digit x;
|
|
sp_digit b;
|
|
|
|
b = a[0];
|
|
x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**8 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**16 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**32 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**64 */
|
|
|
|
/* rho = -1/m mod b */
|
|
*rho = (sp_digit)0 - x;
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_3072_mul_d_48(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 384\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 384]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[16] * B\n\t"
|
|
"ldp x8, x9, [%[a], 128]\n\t"
|
|
"str x3, [%[r], 120]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[17] * B\n\t"
|
|
"str x4, [%[r], 128]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[18] * B\n\t"
|
|
"ldp x8, x9, [%[a], 144]\n\t"
|
|
"str x5, [%[r], 136]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[19] * B\n\t"
|
|
"str x3, [%[r], 144]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[20] * B\n\t"
|
|
"ldp x8, x9, [%[a], 160]\n\t"
|
|
"str x4, [%[r], 152]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[21] * B\n\t"
|
|
"str x5, [%[r], 160]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[22] * B\n\t"
|
|
"ldp x8, x9, [%[a], 176]\n\t"
|
|
"str x3, [%[r], 168]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[23] * B\n\t"
|
|
"str x4, [%[r], 176]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[24] * B\n\t"
|
|
"ldp x8, x9, [%[a], 192]\n\t"
|
|
"str x5, [%[r], 184]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[25] * B\n\t"
|
|
"str x3, [%[r], 192]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[26] * B\n\t"
|
|
"ldp x8, x9, [%[a], 208]\n\t"
|
|
"str x4, [%[r], 200]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[27] * B\n\t"
|
|
"str x5, [%[r], 208]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[28] * B\n\t"
|
|
"ldp x8, x9, [%[a], 224]\n\t"
|
|
"str x3, [%[r], 216]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[29] * B\n\t"
|
|
"str x4, [%[r], 224]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[30] * B\n\t"
|
|
"ldp x8, x9, [%[a], 240]\n\t"
|
|
"str x5, [%[r], 232]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[31] * B\n\t"
|
|
"str x3, [%[r], 240]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[32] * B\n\t"
|
|
"ldp x8, x9, [%[a], 256]\n\t"
|
|
"str x4, [%[r], 248]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[33] * B\n\t"
|
|
"str x5, [%[r], 256]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[34] * B\n\t"
|
|
"ldp x8, x9, [%[a], 272]\n\t"
|
|
"str x3, [%[r], 264]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[35] * B\n\t"
|
|
"str x4, [%[r], 272]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[36] * B\n\t"
|
|
"ldp x8, x9, [%[a], 288]\n\t"
|
|
"str x5, [%[r], 280]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[37] * B\n\t"
|
|
"str x3, [%[r], 288]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[38] * B\n\t"
|
|
"ldp x8, x9, [%[a], 304]\n\t"
|
|
"str x4, [%[r], 296]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[39] * B\n\t"
|
|
"str x5, [%[r], 304]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[40] * B\n\t"
|
|
"ldp x8, x9, [%[a], 320]\n\t"
|
|
"str x3, [%[r], 312]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[41] * B\n\t"
|
|
"str x4, [%[r], 320]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[42] * B\n\t"
|
|
"ldp x8, x9, [%[a], 336]\n\t"
|
|
"str x5, [%[r], 328]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[43] * B\n\t"
|
|
"str x3, [%[r], 336]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[44] * B\n\t"
|
|
"ldp x8, x9, [%[a], 352]\n\t"
|
|
"str x4, [%[r], 344]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[45] * B\n\t"
|
|
"str x5, [%[r], 352]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[46] * B\n\t"
|
|
"ldp x8, x9, [%[a], 368]\n\t"
|
|
"str x3, [%[r], 360]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[47] * B\n\t"
|
|
"str x4, [%[r], 368]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"stp x5, x3, [%[r], 376]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* r = 2^n mod m where n is the number of bits to reduce by.
|
|
* Given m must be 3072 bits, just need to subtract.
|
|
*
|
|
* r A single precision number.
|
|
* m A single precision number.
|
|
*/
|
|
static void sp_3072_mont_norm_24(sp_digit* r, const sp_digit* m)
|
|
{
|
|
XMEMSET(r, 0, sizeof(sp_digit) * 24);
|
|
|
|
/* r = 2^n mod m */
|
|
sp_3072_sub_in_place_24(r, m);
|
|
}
|
|
|
|
/* Reduce the number back to 3072 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_mont_reduce_24(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 24\n\t"
|
|
"mov x4, 24\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+16] += m[16] * mu\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 128]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+17] += m[17] * mu\n\t"
|
|
"ldr x10, [%[a], 136]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 136]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+18] += m[18] * mu\n\t"
|
|
"ldr x11, [%[a], 144]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 144]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 136]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+19] += m[19] * mu\n\t"
|
|
"ldr x10, [%[a], 152]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 152]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 144]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+20] += m[20] * mu\n\t"
|
|
"ldr x11, [%[a], 160]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 160]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 152]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+21] += m[21] * mu\n\t"
|
|
"ldr x10, [%[a], 168]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 168]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 160]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+22] += m[22] * mu\n\t"
|
|
"ldr x11, [%[a], 176]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 176]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 168]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+23] += m[23] * mu\n\t"
|
|
"ldr x10, [%[a], 184]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 184]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 176]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 192]\n\t"
|
|
"str x10, [%[a], 184]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 192]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 192\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
"ldp x5, x6, [%[m], 128]\n\t"
|
|
"ldp x7, x8, [%[m], 144]\n\t"
|
|
"ldp x12, x13, [x9, 128]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 144]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 128]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 144]\n\t"
|
|
"ldp x5, x6, [%[m], 160]\n\t"
|
|
"ldp x7, x8, [%[m], 176]\n\t"
|
|
"ldp x12, x13, [x9, 160]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 176]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 160]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 176]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_3072_mont_mul_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_3072_mul_24(r, a, b);
|
|
sp_3072_mont_reduce_24(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_3072_mont_sqr_24(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_3072_sqr_24(r, a);
|
|
sp_3072_mont_reduce_24(r, m, mp);
|
|
}
|
|
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_3072_cond_sub_24(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 192\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_3072_mul_d_24(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 192\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 192]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[16] * B\n\t"
|
|
"ldp x8, x9, [%[a], 128]\n\t"
|
|
"str x3, [%[r], 120]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[17] * B\n\t"
|
|
"str x4, [%[r], 128]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[18] * B\n\t"
|
|
"ldp x8, x9, [%[a], 144]\n\t"
|
|
"str x5, [%[r], 136]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[19] * B\n\t"
|
|
"str x3, [%[r], 144]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[20] * B\n\t"
|
|
"ldp x8, x9, [%[a], 160]\n\t"
|
|
"str x4, [%[r], 152]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[21] * B\n\t"
|
|
"str x5, [%[r], 160]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[22] * B\n\t"
|
|
"ldp x8, x9, [%[a], 176]\n\t"
|
|
"str x3, [%[r], 168]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[23] * B\n\t"
|
|
"str x4, [%[r], 176]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"stp x5, x3, [%[r], 184]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_3072_word_24(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_3072_cmp_24(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 184\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"ldp x7, x8, [%[b], 176]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"ldp x7, x8, [%[b], 144]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_div_24(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[48], t2[25];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[23];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 24);
|
|
for (i=23; i>=0; i--) {
|
|
sp_digit hi = t1[24 + i] - (t1[24 + i] == div);
|
|
r1 = div_3072_word_24(hi, t1[24 + i - 1], div);
|
|
|
|
sp_3072_mul_d_24(t2, d, r1);
|
|
t1[24 + i] += sp_3072_sub_in_place_24(&t1[i], t2);
|
|
t1[24 + i] -= t2[24];
|
|
sp_3072_mask_24(t2, d, t1[24 + i]);
|
|
t1[24 + i] += sp_3072_add_24(&t1[i], &t1[i], t2);
|
|
sp_3072_mask_24(t2, d, t1[24 + i]);
|
|
t1[24 + i] += sp_3072_add_24(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_3072_cmp_24(t1, d) >= 0;
|
|
sp_3072_cond_sub_24(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_mod_24(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_3072_div_24(a, m, NULL, r);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_3072_mod_exp_24(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[16 * 48];
|
|
#endif
|
|
sp_digit* t[16];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (16 * 48), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<16; i++) {
|
|
t[i] = td + i * 48;
|
|
}
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
sp_3072_mont_norm_24(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 24U);
|
|
if (reduceA != 0) {
|
|
err = sp_3072_mod_24(t[1] + 24, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_3072_mod_24(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 24, a, sizeof(sp_digit) * 24);
|
|
err = sp_3072_mod_24(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mont_sqr_24(t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_mul_24(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 4], t[ 2], m, mp);
|
|
sp_3072_mont_mul_24(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 6], t[ 3], m, mp);
|
|
sp_3072_mont_mul_24(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 8], t[ 4], m, mp);
|
|
sp_3072_mont_mul_24(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_3072_mont_sqr_24(t[10], t[ 5], m, mp);
|
|
sp_3072_mont_mul_24(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_3072_mont_sqr_24(t[12], t[ 6], m, mp);
|
|
sp_3072_mont_mul_24(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_3072_mont_sqr_24(t[14], t[ 7], m, mp);
|
|
sp_3072_mont_mul_24(t[15], t[ 8], t[ 7], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 4;
|
|
if (c == 64) {
|
|
c = 60;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 24);
|
|
for (; i>=0 || c>=4; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 60);
|
|
n <<= 4;
|
|
c = 60;
|
|
}
|
|
else if (c < 4) {
|
|
y = (byte)(n >> 60);
|
|
n = e[i--];
|
|
c = 4 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 60) & 0xf);
|
|
n <<= 4;
|
|
c -= 4;
|
|
}
|
|
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
|
|
sp_3072_mont_mul_24(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[24], 0, sizeof(sp_digit) * 24U);
|
|
sp_3072_mont_reduce_24(r, m, mp);
|
|
|
|
mask = 0 - (sp_3072_cmp_24(r, m) >= 0);
|
|
sp_3072_cond_sub_24(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_3072_mod_exp_24(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[32 * 48];
|
|
#endif
|
|
sp_digit* t[32];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (32 * 48), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<32; i++) {
|
|
t[i] = td + i * 48;
|
|
}
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
sp_3072_mont_norm_24(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 24U);
|
|
if (reduceA != 0) {
|
|
err = sp_3072_mod_24(t[1] + 24, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_3072_mod_24(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 24, a, sizeof(sp_digit) * 24);
|
|
err = sp_3072_mod_24(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mont_sqr_24(t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_mul_24(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 4], t[ 2], m, mp);
|
|
sp_3072_mont_mul_24(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 6], t[ 3], m, mp);
|
|
sp_3072_mont_mul_24(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_3072_mont_sqr_24(t[ 8], t[ 4], m, mp);
|
|
sp_3072_mont_mul_24(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_3072_mont_sqr_24(t[10], t[ 5], m, mp);
|
|
sp_3072_mont_mul_24(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_3072_mont_sqr_24(t[12], t[ 6], m, mp);
|
|
sp_3072_mont_mul_24(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_3072_mont_sqr_24(t[14], t[ 7], m, mp);
|
|
sp_3072_mont_mul_24(t[15], t[ 8], t[ 7], m, mp);
|
|
sp_3072_mont_sqr_24(t[16], t[ 8], m, mp);
|
|
sp_3072_mont_mul_24(t[17], t[ 9], t[ 8], m, mp);
|
|
sp_3072_mont_sqr_24(t[18], t[ 9], m, mp);
|
|
sp_3072_mont_mul_24(t[19], t[10], t[ 9], m, mp);
|
|
sp_3072_mont_sqr_24(t[20], t[10], m, mp);
|
|
sp_3072_mont_mul_24(t[21], t[11], t[10], m, mp);
|
|
sp_3072_mont_sqr_24(t[22], t[11], m, mp);
|
|
sp_3072_mont_mul_24(t[23], t[12], t[11], m, mp);
|
|
sp_3072_mont_sqr_24(t[24], t[12], m, mp);
|
|
sp_3072_mont_mul_24(t[25], t[13], t[12], m, mp);
|
|
sp_3072_mont_sqr_24(t[26], t[13], m, mp);
|
|
sp_3072_mont_mul_24(t[27], t[14], t[13], m, mp);
|
|
sp_3072_mont_sqr_24(t[28], t[14], m, mp);
|
|
sp_3072_mont_mul_24(t[29], t[15], t[14], m, mp);
|
|
sp_3072_mont_sqr_24(t[30], t[15], m, mp);
|
|
sp_3072_mont_mul_24(t[31], t[16], t[15], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 5;
|
|
if (c == 64) {
|
|
c = 59;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 24);
|
|
for (; i>=0 || c>=5; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 59);
|
|
n <<= 5;
|
|
c = 59;
|
|
}
|
|
else if (c < 5) {
|
|
y = (byte)(n >> 59);
|
|
n = e[i--];
|
|
c = 5 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 59) & 0x1f);
|
|
n <<= 5;
|
|
c -= 5;
|
|
}
|
|
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
sp_3072_mont_sqr_24(r, r, m, mp);
|
|
|
|
sp_3072_mont_mul_24(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[24], 0, sizeof(sp_digit) * 24U);
|
|
sp_3072_mont_reduce_24(r, m, mp);
|
|
|
|
mask = 0 - (sp_3072_cmp_24(r, m) >= 0);
|
|
sp_3072_cond_sub_24(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* r = 2^n mod m where n is the number of bits to reduce by.
|
|
* Given m must be 3072 bits, just need to subtract.
|
|
*
|
|
* r A single precision number.
|
|
* m A single precision number.
|
|
*/
|
|
static void sp_3072_mont_norm_48(sp_digit* r, const sp_digit* m)
|
|
{
|
|
XMEMSET(r, 0, sizeof(sp_digit) * 48);
|
|
|
|
/* r = 2^n mod m */
|
|
sp_3072_sub_in_place_48(r, m);
|
|
}
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
/* Reduce the number back to 3072 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_3072_mont_reduce_48(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 48\n\t"
|
|
"mov x4, 48\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+16] += m[16] * mu\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 128]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+17] += m[17] * mu\n\t"
|
|
"ldr x10, [%[a], 136]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 136]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+18] += m[18] * mu\n\t"
|
|
"ldr x11, [%[a], 144]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 144]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 136]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+19] += m[19] * mu\n\t"
|
|
"ldr x10, [%[a], 152]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 152]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 144]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+20] += m[20] * mu\n\t"
|
|
"ldr x11, [%[a], 160]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 160]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 152]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+21] += m[21] * mu\n\t"
|
|
"ldr x10, [%[a], 168]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 168]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 160]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+22] += m[22] * mu\n\t"
|
|
"ldr x11, [%[a], 176]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 176]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 168]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+23] += m[23] * mu\n\t"
|
|
"ldr x10, [%[a], 184]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 184]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 176]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+24] += m[24] * mu\n\t"
|
|
"ldr x11, [%[a], 192]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 192]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 184]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+25] += m[25] * mu\n\t"
|
|
"ldr x10, [%[a], 200]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 200]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 192]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+26] += m[26] * mu\n\t"
|
|
"ldr x11, [%[a], 208]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 208]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 200]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+27] += m[27] * mu\n\t"
|
|
"ldr x10, [%[a], 216]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 216]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 208]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+28] += m[28] * mu\n\t"
|
|
"ldr x11, [%[a], 224]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 224]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 216]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+29] += m[29] * mu\n\t"
|
|
"ldr x10, [%[a], 232]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 232]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 224]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+30] += m[30] * mu\n\t"
|
|
"ldr x11, [%[a], 240]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 240]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 232]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+31] += m[31] * mu\n\t"
|
|
"ldr x10, [%[a], 248]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 248]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 240]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+32] += m[32] * mu\n\t"
|
|
"ldr x11, [%[a], 256]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 256]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 248]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+33] += m[33] * mu\n\t"
|
|
"ldr x10, [%[a], 264]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 264]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 256]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+34] += m[34] * mu\n\t"
|
|
"ldr x11, [%[a], 272]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 272]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 264]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+35] += m[35] * mu\n\t"
|
|
"ldr x10, [%[a], 280]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 280]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 272]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+36] += m[36] * mu\n\t"
|
|
"ldr x11, [%[a], 288]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 288]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 280]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+37] += m[37] * mu\n\t"
|
|
"ldr x10, [%[a], 296]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 296]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 288]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+38] += m[38] * mu\n\t"
|
|
"ldr x11, [%[a], 304]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 304]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 296]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+39] += m[39] * mu\n\t"
|
|
"ldr x10, [%[a], 312]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 312]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 304]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+40] += m[40] * mu\n\t"
|
|
"ldr x11, [%[a], 320]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 320]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 312]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+41] += m[41] * mu\n\t"
|
|
"ldr x10, [%[a], 328]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 328]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 320]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+42] += m[42] * mu\n\t"
|
|
"ldr x11, [%[a], 336]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 336]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 328]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+43] += m[43] * mu\n\t"
|
|
"ldr x10, [%[a], 344]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 344]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 336]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+44] += m[44] * mu\n\t"
|
|
"ldr x11, [%[a], 352]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 352]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 344]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+45] += m[45] * mu\n\t"
|
|
"ldr x10, [%[a], 360]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 360]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 352]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+46] += m[46] * mu\n\t"
|
|
"ldr x11, [%[a], 368]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 368]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 360]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+47] += m[47] * mu\n\t"
|
|
"ldr x10, [%[a], 376]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 376]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 368]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 384]\n\t"
|
|
"str x10, [%[a], 376]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 384]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 384\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
"ldp x5, x6, [%[m], 128]\n\t"
|
|
"ldp x7, x8, [%[m], 144]\n\t"
|
|
"ldp x12, x13, [x9, 128]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 144]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 128]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 144]\n\t"
|
|
"ldp x5, x6, [%[m], 160]\n\t"
|
|
"ldp x7, x8, [%[m], 176]\n\t"
|
|
"ldp x12, x13, [x9, 160]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 176]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 160]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 176]\n\t"
|
|
"ldp x5, x6, [%[m], 192]\n\t"
|
|
"ldp x7, x8, [%[m], 208]\n\t"
|
|
"ldp x12, x13, [x9, 192]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 208]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 192]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 208]\n\t"
|
|
"ldp x5, x6, [%[m], 224]\n\t"
|
|
"ldp x7, x8, [%[m], 240]\n\t"
|
|
"ldp x12, x13, [x9, 224]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 240]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 224]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 240]\n\t"
|
|
"ldp x5, x6, [%[m], 256]\n\t"
|
|
"ldp x7, x8, [%[m], 272]\n\t"
|
|
"ldp x12, x13, [x9, 256]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 272]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 256]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 272]\n\t"
|
|
"ldp x5, x6, [%[m], 288]\n\t"
|
|
"ldp x7, x8, [%[m], 304]\n\t"
|
|
"ldp x12, x13, [x9, 288]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 304]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 288]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 304]\n\t"
|
|
"ldp x5, x6, [%[m], 320]\n\t"
|
|
"ldp x7, x8, [%[m], 336]\n\t"
|
|
"ldp x12, x13, [x9, 320]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 336]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 320]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 336]\n\t"
|
|
"ldp x5, x6, [%[m], 352]\n\t"
|
|
"ldp x7, x8, [%[m], 368]\n\t"
|
|
"ldp x12, x13, [x9, 352]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 368]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 352]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 368]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_3072_mont_mul_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_3072_mul_48(r, a, b);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_3072_mont_sqr_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_3072_sqr_48(r, a);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 384\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_3072_sub_48(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"ldp x3, x4, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 272]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 256]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 272]\n\t"
|
|
"ldp x3, x4, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 304]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 288]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 304]\n\t"
|
|
"ldp x3, x4, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 336]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 320]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 336]\n\t"
|
|
"ldp x3, x4, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 368]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 352]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 368]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_3072_word_48(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_div_48_cond(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[96], t2[49];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[47];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 48);
|
|
for (i=47; i>=0; i--) {
|
|
sp_digit hi = t1[48 + i] - (t1[48 + i] == div);
|
|
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
|
|
|
|
sp_3072_mul_d_48(t2, d, r1);
|
|
t1[48 + i] += sp_3072_sub_in_place_48(&t1[i], t2);
|
|
t1[48 + i] -= t2[48];
|
|
if (t1[48 + i] != 0) {
|
|
t1[48 + i] += sp_3072_add_48(&t1[i], &t1[i], d);
|
|
if (t1[48 + i] != 0)
|
|
t1[48 + i] += sp_3072_add_48(&t1[i], &t1[i], d);
|
|
}
|
|
}
|
|
|
|
for (i = 47; i > 0; i--) {
|
|
if (t1[i] != d[i])
|
|
break;
|
|
}
|
|
if (t1[i] >= d[i]) {
|
|
sp_3072_sub_48(r, t1, d);
|
|
}
|
|
else {
|
|
XMEMCPY(r, t1, sizeof(*t1) * 48);
|
|
}
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_mod_48_cond(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_3072_div_48_cond(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_3072_cond_sub_48(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 384\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"ldp x5, x7, [%[b], 192]\n\t"
|
|
"ldp x11, x12, [%[b], 208]\n\t"
|
|
"ldp x4, x6, [%[a], 192]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 208]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 192]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 208]\n\t"
|
|
"ldp x5, x7, [%[b], 224]\n\t"
|
|
"ldp x11, x12, [%[b], 240]\n\t"
|
|
"ldp x4, x6, [%[a], 224]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 240]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 224]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 240]\n\t"
|
|
"ldp x5, x7, [%[b], 256]\n\t"
|
|
"ldp x11, x12, [%[b], 272]\n\t"
|
|
"ldp x4, x6, [%[a], 256]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 272]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 256]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 272]\n\t"
|
|
"ldp x5, x7, [%[b], 288]\n\t"
|
|
"ldp x11, x12, [%[b], 304]\n\t"
|
|
"ldp x4, x6, [%[a], 288]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 304]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 288]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 304]\n\t"
|
|
"ldp x5, x7, [%[b], 320]\n\t"
|
|
"ldp x11, x12, [%[b], 336]\n\t"
|
|
"ldp x4, x6, [%[a], 320]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 336]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 320]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 336]\n\t"
|
|
"ldp x5, x7, [%[b], 352]\n\t"
|
|
"ldp x11, x12, [%[b], 368]\n\t"
|
|
"ldp x4, x6, [%[a], 352]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 368]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 352]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 368]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_3072_mask_48(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<48; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 48; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_3072_cmp_48(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 376\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"ldp x7, x8, [%[b], 368]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"ldp x7, x8, [%[b], 336]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"ldp x7, x8, [%[b], 304]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"ldp x7, x8, [%[b], 272]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"ldp x7, x8, [%[b], 240]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"ldp x7, x8, [%[b], 208]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"ldp x7, x8, [%[b], 176]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"ldp x7, x8, [%[b], 144]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_div_48(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[96], t2[49];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[47];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 48);
|
|
for (i=47; i>=0; i--) {
|
|
sp_digit hi = t1[48 + i] - (t1[48 + i] == div);
|
|
r1 = div_3072_word_48(hi, t1[48 + i - 1], div);
|
|
|
|
sp_3072_mul_d_48(t2, d, r1);
|
|
t1[48 + i] += sp_3072_sub_in_place_48(&t1[i], t2);
|
|
t1[48 + i] -= t2[48];
|
|
sp_3072_mask_48(t2, d, t1[48 + i]);
|
|
t1[48 + i] += sp_3072_add_48(&t1[i], &t1[i], t2);
|
|
sp_3072_mask_48(t2, d, t1[48 + i]);
|
|
t1[48 + i] += sp_3072_add_48(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_3072_cmp_48(t1, d) >= 0;
|
|
sp_3072_cond_sub_48(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_3072_mod_48(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_3072_div_48(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || \
|
|
defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_3072_mod_exp_48(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[8 * 96];
|
|
#endif
|
|
sp_digit* t[8];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (8 * 96), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<8; i++) {
|
|
t[i] = td + i * 96;
|
|
}
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
sp_3072_mont_norm_48(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 48U);
|
|
if (reduceA != 0) {
|
|
err = sp_3072_mod_48(t[1] + 48, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_3072_mod_48(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 48, a, sizeof(sp_digit) * 48);
|
|
err = sp_3072_mod_48(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mont_sqr_48(t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_mul_48(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_sqr_48(t[ 4], t[ 2], m, mp);
|
|
sp_3072_mont_mul_48(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_3072_mont_sqr_48(t[ 6], t[ 3], m, mp);
|
|
sp_3072_mont_mul_48(t[ 7], t[ 4], t[ 3], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 3;
|
|
if (c == 64) {
|
|
c = 61;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 48);
|
|
for (; i>=0 || c>=3; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 61);
|
|
n <<= 3;
|
|
c = 61;
|
|
}
|
|
else if (c < 3) {
|
|
y = (byte)(n >> 61);
|
|
n = e[i--];
|
|
c = 3 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 61) & 0x7);
|
|
n <<= 3;
|
|
c -= 3;
|
|
}
|
|
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
|
|
sp_3072_mont_mul_48(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48U);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
|
|
mask = 0 - (sp_3072_cmp_48(r, m) >= 0);
|
|
sp_3072_cond_sub_48(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_3072_mod_exp_48(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[16 * 96];
|
|
#endif
|
|
sp_digit* t[16];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (16 * 96), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<16; i++) {
|
|
t[i] = td + i * 96;
|
|
}
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
sp_3072_mont_norm_48(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 48U);
|
|
if (reduceA != 0) {
|
|
err = sp_3072_mod_48(t[1] + 48, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_3072_mod_48(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 48, a, sizeof(sp_digit) * 48);
|
|
err = sp_3072_mod_48(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mont_sqr_48(t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_mul_48(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_3072_mont_sqr_48(t[ 4], t[ 2], m, mp);
|
|
sp_3072_mont_mul_48(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_3072_mont_sqr_48(t[ 6], t[ 3], m, mp);
|
|
sp_3072_mont_mul_48(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_3072_mont_sqr_48(t[ 8], t[ 4], m, mp);
|
|
sp_3072_mont_mul_48(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_3072_mont_sqr_48(t[10], t[ 5], m, mp);
|
|
sp_3072_mont_mul_48(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_3072_mont_sqr_48(t[12], t[ 6], m, mp);
|
|
sp_3072_mont_mul_48(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_3072_mont_sqr_48(t[14], t[ 7], m, mp);
|
|
sp_3072_mont_mul_48(t[15], t[ 8], t[ 7], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 4;
|
|
if (c == 64) {
|
|
c = 60;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 48);
|
|
for (; i>=0 || c>=4; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 60);
|
|
n <<= 4;
|
|
c = 60;
|
|
}
|
|
else if (c < 4) {
|
|
y = (byte)(n >> 60);
|
|
n = e[i--];
|
|
c = 4 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 60) & 0xf);
|
|
n <<= 4;
|
|
c -= 4;
|
|
}
|
|
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
|
|
sp_3072_mont_mul_48(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48U);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
|
|
mask = 0 - (sp_3072_cmp_48(r, m) >= 0);
|
|
sp_3072_cond_sub_48(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
#ifdef WOLFSSL_HAVE_SP_RSA
|
|
/* RSA public key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* em Public exponent.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 384 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPublic_3072(const byte* in, word32 inLen, const mp_int* em,
|
|
const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[48 * 5];
|
|
#endif
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit *ah = NULL;
|
|
sp_digit e[1] = {0};
|
|
int err = MP_OKAY;
|
|
|
|
if (*outLen < 384) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (mp_count_bits(em) > 64 || inLen > 384 ||
|
|
mp_count_bits(mm) != 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 48 * 5, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
r = a + 48 * 2;
|
|
m = r + 48 * 2;
|
|
ah = a + 48;
|
|
|
|
sp_3072_from_bin(ah, 48, in, inLen);
|
|
#if DIGIT_BIT >= 64
|
|
e[0] = em->dp[0];
|
|
#else
|
|
e[0] = em->dp[0];
|
|
if (em->used > 1) {
|
|
e[0] |= ((sp_digit)em->dp[1]) << DIGIT_BIT;
|
|
}
|
|
#endif
|
|
if (e[0] == 0) {
|
|
err = MP_EXPTMOD_E;
|
|
}
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_3072_from_mp(m, 48, mm);
|
|
|
|
if (e[0] == 0x3) {
|
|
if (err == MP_OKAY) {
|
|
sp_3072_sqr_48(r, ah);
|
|
err = sp_3072_mod_48_cond(r, r, m);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mul_48(r, ah, r);
|
|
err = sp_3072_mod_48_cond(r, r, m);
|
|
}
|
|
}
|
|
else {
|
|
int i;
|
|
sp_digit mp;
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
|
|
/* Convert to Montgomery form. */
|
|
XMEMSET(a, 0, sizeof(sp_digit) * 48);
|
|
err = sp_3072_mod_48_cond(a, a, m);
|
|
|
|
if (err == MP_OKAY) {
|
|
for (i = 63; i >= 0; i--) {
|
|
if (e[0] >> i) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
XMEMCPY(r, a, sizeof(sp_digit) * 48);
|
|
for (i--; i>=0; i--) {
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
if (((e[0] >> i) & 1) == 1) {
|
|
sp_3072_mont_mul_48(r, r, a, m, mp);
|
|
}
|
|
}
|
|
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
|
|
for (i = 47; i > 0; i--) {
|
|
if (r[i] != m[i]) {
|
|
break;
|
|
}
|
|
}
|
|
if (r[i] >= m[i]) {
|
|
sp_3072_sub_in_place_48(r, m);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_to_bin_48(r, out);
|
|
*outLen = 384;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
|
/* Conditionally add a and b using the mask m.
|
|
* m is -1 to add and 0 when not.
|
|
*
|
|
* r A single precision number representing conditional add result.
|
|
* a A single precision number to add with.
|
|
* b A single precision number to add.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_3072_cond_add_24(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 192\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* RSA private key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* dm Private exponent.
|
|
* pm First prime.
|
|
* qm Second prime.
|
|
* dpm First prime's CRT exponent.
|
|
* dqm Second prime's CRT exponent.
|
|
* qim Inverse of second prime mod p.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 384 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPrivate_3072(const byte* in, word32 inLen, const mp_int* dm,
|
|
const mp_int* pm, const mp_int* qm, const mp_int* dpm, const mp_int* dqm,
|
|
const mp_int* qim, const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* d = NULL;
|
|
#else
|
|
sp_digit d[48 * 4];
|
|
#endif
|
|
sp_digit* a = NULL;
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
(void)pm;
|
|
(void)qm;
|
|
(void)dpm;
|
|
(void)dqm;
|
|
(void)qim;
|
|
|
|
if (*outLen < 384U) {
|
|
err = MP_TO_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
if (mp_count_bits(dm) > 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (inLen > 384) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mm) != 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 48 * 4, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (d == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
a = d + 48;
|
|
m = a + 96;
|
|
r = a;
|
|
|
|
sp_3072_from_bin(a, 48, in, inLen);
|
|
sp_3072_from_mp(d, 48, dm);
|
|
sp_3072_from_mp(m, 48, mm);
|
|
err = sp_3072_mod_exp_48(r, a, d, 3072, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_to_bin_48(r, out);
|
|
*outLen = 384;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (d != NULL)
|
|
#endif
|
|
{
|
|
/* only "a" and "r" are sensitive and need zeroized (same pointer) */
|
|
if (a != NULL)
|
|
ForceZero(a, sizeof(sp_digit) * 48);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
#else
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[24 * 11];
|
|
#endif
|
|
sp_digit* p = NULL;
|
|
sp_digit* q = NULL;
|
|
sp_digit* dp = NULL;
|
|
sp_digit* tmpa = NULL;
|
|
sp_digit* tmpb = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit* qi = NULL;
|
|
sp_digit* dq = NULL;
|
|
sp_digit c;
|
|
int err = MP_OKAY;
|
|
|
|
(void)dm;
|
|
(void)mm;
|
|
|
|
if (*outLen < 384) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (inLen > 384 || mp_count_bits(mm) != 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 24 * 11, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = a + 48 * 2;
|
|
q = p + 24;
|
|
qi = dq = dp = q + 24;
|
|
tmpa = qi + 24;
|
|
tmpb = tmpa + 48;
|
|
r = a;
|
|
|
|
sp_3072_from_bin(a, 48, in, inLen);
|
|
sp_3072_from_mp(p, 24, pm);
|
|
sp_3072_from_mp(q, 24, qm);
|
|
sp_3072_from_mp(dp, 24, dpm);
|
|
|
|
err = sp_3072_mod_exp_24(tmpa, a, dp, 1536, p, 1);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_3072_from_mp(dq, 24, dqm);
|
|
err = sp_3072_mod_exp_24(tmpb, a, dq, 1536, q, 1);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
c = sp_3072_sub_in_place_24(tmpa, tmpb);
|
|
c += sp_3072_cond_add_24(tmpa, tmpa, p, c);
|
|
sp_3072_cond_add_24(tmpa, tmpa, p, c);
|
|
|
|
sp_3072_from_mp(qi, 24, qim);
|
|
sp_3072_mul_24(tmpa, tmpa, qi);
|
|
err = sp_3072_mod_24(tmpa, tmpa, p);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_mul_24(tmpa, q, tmpa);
|
|
XMEMSET(&tmpb[24], 0, sizeof(sp_digit) * 24);
|
|
sp_3072_add_48(r, tmpb, tmpa);
|
|
|
|
sp_3072_to_bin_48(r, out);
|
|
*outLen = 384;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(a, sizeof(sp_digit) * 24 * 11);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
|
#endif /* WOLFSSL_HAVE_SP_RSA */
|
|
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
|
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_3072_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (3072 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 48);
|
|
r->used = 48;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 48; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (3072 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 48; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (3072 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base. MP integer.
|
|
* exp Exponent. MP integer.
|
|
* mod Modulus. MP integer.
|
|
* res Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_3072(const mp_int* base, const mp_int* exp, const mp_int* mod,
|
|
mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[96];
|
|
sp_digit e[48];
|
|
sp_digit m[48];
|
|
sp_digit* r = b;
|
|
int expBits = mp_count_bits(exp);
|
|
|
|
if (mp_count_bits(base) > 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expBits > 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_from_mp(b, 48, base);
|
|
sp_3072_from_mp(e, 48, exp);
|
|
sp_3072_from_mp(m, 48, mod);
|
|
|
|
err = sp_3072_mod_exp_48(r, b, e, expBits, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_3072_to_mp(r, res);
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef WOLFSSL_HAVE_SP_DH
|
|
|
|
#ifdef HAVE_FFDHE_3072
|
|
static void sp_3072_lshift_48(sp_digit* r, sp_digit* a, byte n)
|
|
{
|
|
word64 n64 = n;
|
|
__asm__ __volatile__ (
|
|
"mov x6, 63\n\t"
|
|
"sub x6, x6, %[n]\n\t"
|
|
"ldr x3, [%[a], 376]\n\t"
|
|
"lsr x4, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x4, x4, x6\n\t"
|
|
"ldr x2, [%[a], 368]\n\t"
|
|
"str x4, [%[r], 384]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 360]\n\t"
|
|
"str x3, [%[r], 376]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 352]\n\t"
|
|
"str x2, [%[r], 368]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 344]\n\t"
|
|
"str x4, [%[r], 360]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 336]\n\t"
|
|
"str x3, [%[r], 352]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 328]\n\t"
|
|
"str x2, [%[r], 344]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 320]\n\t"
|
|
"str x4, [%[r], 336]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 312]\n\t"
|
|
"str x3, [%[r], 328]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 304]\n\t"
|
|
"str x2, [%[r], 320]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 296]\n\t"
|
|
"str x4, [%[r], 312]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 288]\n\t"
|
|
"str x3, [%[r], 304]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 280]\n\t"
|
|
"str x2, [%[r], 296]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 272]\n\t"
|
|
"str x4, [%[r], 288]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 264]\n\t"
|
|
"str x3, [%[r], 280]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 256]\n\t"
|
|
"str x2, [%[r], 272]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 248]\n\t"
|
|
"str x4, [%[r], 264]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 240]\n\t"
|
|
"str x3, [%[r], 256]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 232]\n\t"
|
|
"str x2, [%[r], 248]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 224]\n\t"
|
|
"str x4, [%[r], 240]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 216]\n\t"
|
|
"str x3, [%[r], 232]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 208]\n\t"
|
|
"str x2, [%[r], 224]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 200]\n\t"
|
|
"str x4, [%[r], 216]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 192]\n\t"
|
|
"str x3, [%[r], 208]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 184]\n\t"
|
|
"str x2, [%[r], 200]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 176]\n\t"
|
|
"str x4, [%[r], 192]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 168]\n\t"
|
|
"str x3, [%[r], 184]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 160]\n\t"
|
|
"str x2, [%[r], 176]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 152]\n\t"
|
|
"str x4, [%[r], 168]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 144]\n\t"
|
|
"str x3, [%[r], 160]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 136]\n\t"
|
|
"str x2, [%[r], 152]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 128]\n\t"
|
|
"str x4, [%[r], 144]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 120]\n\t"
|
|
"str x3, [%[r], 136]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 112]\n\t"
|
|
"str x2, [%[r], 128]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 104]\n\t"
|
|
"str x4, [%[r], 120]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 96]\n\t"
|
|
"str x3, [%[r], 112]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 88]\n\t"
|
|
"str x2, [%[r], 104]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 80]\n\t"
|
|
"str x4, [%[r], 96]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 72]\n\t"
|
|
"str x3, [%[r], 88]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 64]\n\t"
|
|
"str x2, [%[r], 80]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 56]\n\t"
|
|
"str x4, [%[r], 72]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 48]\n\t"
|
|
"str x3, [%[r], 64]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 40]\n\t"
|
|
"str x2, [%[r], 56]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 32]\n\t"
|
|
"str x4, [%[r], 48]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 24]\n\t"
|
|
"str x3, [%[r], 40]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 16]\n\t"
|
|
"str x2, [%[r], 32]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 8]\n\t"
|
|
"str x4, [%[r], 24]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 0]\n\t"
|
|
"str x3, [%[r], 16]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"str x4, [%[r]]\n\t"
|
|
"str x2, [%[r], 8]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [n] "r" (n64)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Modular exponentiate 2 to the e mod m. (r = 2^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even.
|
|
*/
|
|
static int sp_3072_mod_exp_2_48(sp_digit* r, const sp_digit* e, int bits,
|
|
const sp_digit* m)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[145];
|
|
#endif
|
|
sp_digit* norm = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit o;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 145, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
tmp = td + 96;
|
|
|
|
sp_3072_mont_setup(m, &mp);
|
|
sp_3072_mont_norm_48(norm, m);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 6;
|
|
if (c == 64) {
|
|
c = 58;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
sp_3072_lshift_48(r, norm, y);
|
|
for (; i>=0 || c>=6; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 58);
|
|
n <<= 6;
|
|
c = 58;
|
|
}
|
|
else if (c < 6) {
|
|
y = (byte)(n >> 58);
|
|
n = e[i--];
|
|
c = 6 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 58) & 0x3f);
|
|
n <<= 6;
|
|
c -= 6;
|
|
}
|
|
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
sp_3072_mont_sqr_48(r, r, m, mp);
|
|
|
|
sp_3072_lshift_48(r, r, y);
|
|
sp_3072_mul_d_48(tmp, norm, r[48]);
|
|
r[48] = 0;
|
|
o = sp_3072_add_48(r, r, tmp);
|
|
sp_3072_cond_sub_48(r, r, m, (sp_digit)0 - o);
|
|
}
|
|
|
|
XMEMSET(&r[48], 0, sizeof(sp_digit) * 48U);
|
|
sp_3072_mont_reduce_48(r, m, mp);
|
|
|
|
mask = 0 - (sp_3072_cmp_48(r, m) >= 0);
|
|
sp_3072_cond_sub_48(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_FFDHE_3072 */
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base.
|
|
* exp Array of bytes that is the exponent.
|
|
* expLen Length of data, in bytes, in exponent.
|
|
* mod Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 384 bytes long.
|
|
* outLen Length, in bytes, of exponentiation result.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_DhExp_3072(const mp_int* base, const byte* exp, word32 expLen,
|
|
const mp_int* mod, byte* out, word32* outLen)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[96];
|
|
sp_digit e[48];
|
|
sp_digit m[48];
|
|
sp_digit* r = b;
|
|
word32 i;
|
|
|
|
if (mp_count_bits(base) > 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expLen > 384) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 3072) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_from_mp(b, 48, base);
|
|
sp_3072_from_bin(e, 48, exp, expLen);
|
|
sp_3072_from_mp(m, 48, mod);
|
|
|
|
#ifdef HAVE_FFDHE_3072
|
|
if (base->used == 1 && base->dp[0] == 2 && m[47] == (sp_digit)-1)
|
|
err = sp_3072_mod_exp_2_48(r, e, expLen * 8, m);
|
|
else
|
|
#endif
|
|
err = sp_3072_mod_exp_48(r, b, e, expLen * 8, m, 0);
|
|
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_to_bin_48(r, out);
|
|
*outLen = 384;
|
|
for (i=0; i<384 && out[i] == 0; i++) {
|
|
/* Search for first non-zero. */
|
|
}
|
|
*outLen -= i;
|
|
XMEMMOVE(out, out + i, *outLen);
|
|
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_HAVE_SP_DH */
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base. MP integer.
|
|
* exp Exponent. MP integer.
|
|
* mod Modulus. MP integer.
|
|
* res Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_1536(const mp_int* base, const mp_int* exp, const mp_int* mod,
|
|
mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[48];
|
|
sp_digit e[24];
|
|
sp_digit m[24];
|
|
sp_digit* r = b;
|
|
int expBits = mp_count_bits(exp);
|
|
|
|
if (mp_count_bits(base) > 1536) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expBits > 1536) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 1536) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_3072_from_mp(b, 24, base);
|
|
sp_3072_from_mp(e, 24, exp);
|
|
sp_3072_from_mp(m, 24, mod);
|
|
|
|
err = sp_3072_mod_exp_24(r, b, e, expBits, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(r + 24, 0, sizeof(*r) * 24U);
|
|
err = sp_3072_to_mp(r, res);
|
|
res->used = mod->used;
|
|
mp_clamp(res);
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* WOLFSSL_HAVE_SP_DH | (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) */
|
|
|
|
#endif /* !WOLFSSL_SP_NO_3072 */
|
|
|
|
#ifdef WOLFSSL_SP_4096
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_4096_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_4096_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Write r as big endian to byte array.
|
|
* Fixed length number of bytes written: 512
|
|
*
|
|
* r A single precision integer.
|
|
* a Byte array.
|
|
*/
|
|
static void sp_4096_to_bin_64(sp_digit* r, byte* a)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
for (i = 63, j = 0; i >= 0; i--) {
|
|
a[j++] = r[i] >> 56;
|
|
a[j++] = r[i] >> 48;
|
|
a[j++] = r[i] >> 40;
|
|
a[j++] = r[i] >> 32;
|
|
a[j++] = r[i] >> 24;
|
|
a[j++] = r[i] >> 16;
|
|
a[j++] = r[i] >> 8;
|
|
a[j++] = r[i] >> 0;
|
|
}
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && (!defined(WOLFSSL_RSA_PUBLIC_ONLY) || !defined(WOLFSSL_SP_SMALL))) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_4096_norm_64(a)
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && (!WOLFSSL_RSA_PUBLIC_ONLY || !WOLFSSL_SP_SMALL)) || WOLFSSL_HAVE_SP_DH */
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_4096_norm_64(a)
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_add_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_sub_in_place_64(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"ldp x2, x3, [%[a], 128]\n\t"
|
|
"ldp x6, x7, [%[b], 128]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 144]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 128]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 144]\n\t"
|
|
"ldp x2, x3, [%[a], 160]\n\t"
|
|
"ldp x6, x7, [%[b], 160]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 176]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 160]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 176]\n\t"
|
|
"ldp x2, x3, [%[a], 192]\n\t"
|
|
"ldp x6, x7, [%[b], 192]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 208]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 192]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 208]\n\t"
|
|
"ldp x2, x3, [%[a], 224]\n\t"
|
|
"ldp x6, x7, [%[b], 224]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 240]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 224]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 240]\n\t"
|
|
"ldp x2, x3, [%[a], 256]\n\t"
|
|
"ldp x6, x7, [%[b], 256]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 272]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 272]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 256]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 272]\n\t"
|
|
"ldp x2, x3, [%[a], 288]\n\t"
|
|
"ldp x6, x7, [%[b], 288]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 304]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 304]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 288]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 304]\n\t"
|
|
"ldp x2, x3, [%[a], 320]\n\t"
|
|
"ldp x6, x7, [%[b], 320]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 336]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 336]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 320]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 336]\n\t"
|
|
"ldp x2, x3, [%[a], 352]\n\t"
|
|
"ldp x6, x7, [%[b], 352]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 368]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 368]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 352]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 368]\n\t"
|
|
"ldp x2, x3, [%[a], 384]\n\t"
|
|
"ldp x6, x7, [%[b], 384]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 400]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 400]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 384]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 400]\n\t"
|
|
"ldp x2, x3, [%[a], 416]\n\t"
|
|
"ldp x6, x7, [%[b], 416]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 432]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 432]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 416]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 432]\n\t"
|
|
"ldp x2, x3, [%[a], 448]\n\t"
|
|
"ldp x6, x7, [%[b], 448]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 464]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 464]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 448]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 464]\n\t"
|
|
"ldp x2, x3, [%[a], 480]\n\t"
|
|
"ldp x6, x7, [%[b], 480]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 496]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 496]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 480]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 496]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_add_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"ldp x3, x4, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 272]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 256]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 272]\n\t"
|
|
"ldp x3, x4, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 304]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 288]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 304]\n\t"
|
|
"ldp x3, x4, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 336]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 320]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 336]\n\t"
|
|
"ldp x3, x4, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 368]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 352]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 368]\n\t"
|
|
"ldp x3, x4, [%[a], 384]\n\t"
|
|
"ldp x7, x8, [%[b], 384]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 400]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 400]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 384]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 400]\n\t"
|
|
"ldp x3, x4, [%[a], 416]\n\t"
|
|
"ldp x7, x8, [%[b], 416]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 432]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 432]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 416]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 432]\n\t"
|
|
"ldp x3, x4, [%[a], 448]\n\t"
|
|
"ldp x7, x8, [%[b], 448]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 464]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 464]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 448]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 464]\n\t"
|
|
"ldp x3, x4, [%[a], 480]\n\t"
|
|
"ldp x7, x8, [%[b], 480]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 496]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 496]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 480]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 496]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_4096_add_zero_32(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_4096_mul_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[64];
|
|
sp_digit a1[32];
|
|
sp_digit b1[32];
|
|
sp_digit z2[64];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_2048_add_32(a1, a, &a[32]);
|
|
cb = sp_2048_add_32(b1, b, &b[32]);
|
|
u = ca & cb;
|
|
sp_2048_mul_32(z1, a1, b1);
|
|
sp_2048_mul_32(z2, &a[32], &b[32]);
|
|
sp_2048_mul_32(z0, a, b);
|
|
sp_2048_mask_32(r + 64, a1, 0 - cb);
|
|
sp_2048_mask_32(b1, b1, 0 - ca);
|
|
u += sp_2048_add_32(r + 64, r + 64, b1);
|
|
u += sp_4096_sub_in_place_64(z1, z2);
|
|
u += sp_4096_sub_in_place_64(z1, z0);
|
|
u += sp_4096_add_64(r + 32, r + 32, z1);
|
|
u += sp_4096_add_32(r + 64, r + 64, z2);
|
|
sp_4096_add_zero_32(r + 96, z2 + 32, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_32(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 256\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_2048_dbl_32(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 88]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 120]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 144]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 152]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 176]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 184]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 208]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 216]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 240]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 248]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_4096_sqr_64(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[64];
|
|
sp_digit z1[64];
|
|
sp_digit a1[32];
|
|
sp_digit u;
|
|
|
|
u = sp_2048_add_32(a1, a, &a[32]);
|
|
sp_2048_sqr_32(z1, a1);
|
|
sp_2048_sqr_32(z2, &a[32]);
|
|
sp_2048_sqr_32(z0, a);
|
|
sp_2048_mask_32(r + 64, a1, 0 - u);
|
|
u += sp_2048_dbl_32(r + 64, r + 64);
|
|
u += sp_4096_sub_in_place_64(z1, z2);
|
|
u += sp_4096_sub_in_place_64(z1, z0);
|
|
u += sp_4096_add_64(r + 32, r + 32, z1);
|
|
u += sp_4096_add_32(r + 64, r + 64, z2);
|
|
sp_4096_add_zero_32(r + 96, z2 + 32, u);
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_add_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 512\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_sub_in_place_64(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 512\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_4096_mul_64(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[128];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 504\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 512\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 1008\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_4096_sqr_64(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[128];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 504\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 512\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 1008\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Caclulate the bottom digit of -1/a mod 2^n.
|
|
*
|
|
* a A single precision number.
|
|
* rho Bottom word of inverse.
|
|
*/
|
|
static void sp_4096_mont_setup(const sp_digit* a, sp_digit* rho)
|
|
{
|
|
sp_digit x;
|
|
sp_digit b;
|
|
|
|
b = a[0];
|
|
x = (((b + 2) & 4) << 1) + b; /* here x*a==1 mod 2**4 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**8 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**16 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**32 */
|
|
x *= 2 - b * x; /* here x*a==1 mod 2**64 */
|
|
|
|
/* rho = -1/m mod b */
|
|
*rho = (sp_digit)0 - x;
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_4096_mul_d_64(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 512\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 512]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[16] * B\n\t"
|
|
"ldp x8, x9, [%[a], 128]\n\t"
|
|
"str x3, [%[r], 120]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[17] * B\n\t"
|
|
"str x4, [%[r], 128]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[18] * B\n\t"
|
|
"ldp x8, x9, [%[a], 144]\n\t"
|
|
"str x5, [%[r], 136]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[19] * B\n\t"
|
|
"str x3, [%[r], 144]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[20] * B\n\t"
|
|
"ldp x8, x9, [%[a], 160]\n\t"
|
|
"str x4, [%[r], 152]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[21] * B\n\t"
|
|
"str x5, [%[r], 160]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[22] * B\n\t"
|
|
"ldp x8, x9, [%[a], 176]\n\t"
|
|
"str x3, [%[r], 168]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[23] * B\n\t"
|
|
"str x4, [%[r], 176]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[24] * B\n\t"
|
|
"ldp x8, x9, [%[a], 192]\n\t"
|
|
"str x5, [%[r], 184]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[25] * B\n\t"
|
|
"str x3, [%[r], 192]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[26] * B\n\t"
|
|
"ldp x8, x9, [%[a], 208]\n\t"
|
|
"str x4, [%[r], 200]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[27] * B\n\t"
|
|
"str x5, [%[r], 208]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[28] * B\n\t"
|
|
"ldp x8, x9, [%[a], 224]\n\t"
|
|
"str x3, [%[r], 216]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[29] * B\n\t"
|
|
"str x4, [%[r], 224]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[30] * B\n\t"
|
|
"ldp x8, x9, [%[a], 240]\n\t"
|
|
"str x5, [%[r], 232]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[31] * B\n\t"
|
|
"str x3, [%[r], 240]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[32] * B\n\t"
|
|
"ldp x8, x9, [%[a], 256]\n\t"
|
|
"str x4, [%[r], 248]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[33] * B\n\t"
|
|
"str x5, [%[r], 256]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[34] * B\n\t"
|
|
"ldp x8, x9, [%[a], 272]\n\t"
|
|
"str x3, [%[r], 264]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[35] * B\n\t"
|
|
"str x4, [%[r], 272]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[36] * B\n\t"
|
|
"ldp x8, x9, [%[a], 288]\n\t"
|
|
"str x5, [%[r], 280]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[37] * B\n\t"
|
|
"str x3, [%[r], 288]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[38] * B\n\t"
|
|
"ldp x8, x9, [%[a], 304]\n\t"
|
|
"str x4, [%[r], 296]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[39] * B\n\t"
|
|
"str x5, [%[r], 304]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[40] * B\n\t"
|
|
"ldp x8, x9, [%[a], 320]\n\t"
|
|
"str x3, [%[r], 312]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[41] * B\n\t"
|
|
"str x4, [%[r], 320]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[42] * B\n\t"
|
|
"ldp x8, x9, [%[a], 336]\n\t"
|
|
"str x5, [%[r], 328]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[43] * B\n\t"
|
|
"str x3, [%[r], 336]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[44] * B\n\t"
|
|
"ldp x8, x9, [%[a], 352]\n\t"
|
|
"str x4, [%[r], 344]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[45] * B\n\t"
|
|
"str x5, [%[r], 352]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[46] * B\n\t"
|
|
"ldp x8, x9, [%[a], 368]\n\t"
|
|
"str x3, [%[r], 360]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[47] * B\n\t"
|
|
"str x4, [%[r], 368]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[48] * B\n\t"
|
|
"ldp x8, x9, [%[a], 384]\n\t"
|
|
"str x5, [%[r], 376]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[49] * B\n\t"
|
|
"str x3, [%[r], 384]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[50] * B\n\t"
|
|
"ldp x8, x9, [%[a], 400]\n\t"
|
|
"str x4, [%[r], 392]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[51] * B\n\t"
|
|
"str x5, [%[r], 400]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[52] * B\n\t"
|
|
"ldp x8, x9, [%[a], 416]\n\t"
|
|
"str x3, [%[r], 408]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[53] * B\n\t"
|
|
"str x4, [%[r], 416]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[54] * B\n\t"
|
|
"ldp x8, x9, [%[a], 432]\n\t"
|
|
"str x5, [%[r], 424]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[55] * B\n\t"
|
|
"str x3, [%[r], 432]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[56] * B\n\t"
|
|
"ldp x8, x9, [%[a], 448]\n\t"
|
|
"str x4, [%[r], 440]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[57] * B\n\t"
|
|
"str x5, [%[r], 448]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[58] * B\n\t"
|
|
"ldp x8, x9, [%[a], 464]\n\t"
|
|
"str x3, [%[r], 456]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[59] * B\n\t"
|
|
"str x4, [%[r], 464]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[60] * B\n\t"
|
|
"ldp x8, x9, [%[a], 480]\n\t"
|
|
"str x5, [%[r], 472]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[61] * B\n\t"
|
|
"str x3, [%[r], 480]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[62] * B\n\t"
|
|
"ldp x8, x9, [%[a], 496]\n\t"
|
|
"str x4, [%[r], 488]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[63] * B\n\t"
|
|
"str x5, [%[r], 496]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"stp x3, x4, [%[r], 504]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* r = 2^n mod m where n is the number of bits to reduce by.
|
|
* Given m must be 4096 bits, just need to subtract.
|
|
*
|
|
* r A single precision number.
|
|
* m A single precision number.
|
|
*/
|
|
static void sp_4096_mont_norm_64(sp_digit* r, const sp_digit* m)
|
|
{
|
|
XMEMSET(r, 0, sizeof(sp_digit) * 64);
|
|
|
|
/* r = 2^n mod m */
|
|
sp_4096_sub_in_place_64(r, m);
|
|
}
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) | WOLFSSL_HAVE_SP_DH */
|
|
/* Reduce the number back to 4096 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_4096_mont_reduce_64(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 64\n\t"
|
|
"mov x4, 64\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+16] += m[16] * mu\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 128]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+17] += m[17] * mu\n\t"
|
|
"ldr x10, [%[a], 136]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 136]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+18] += m[18] * mu\n\t"
|
|
"ldr x11, [%[a], 144]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 144]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 136]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+19] += m[19] * mu\n\t"
|
|
"ldr x10, [%[a], 152]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 152]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 144]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+20] += m[20] * mu\n\t"
|
|
"ldr x11, [%[a], 160]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 160]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 152]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+21] += m[21] * mu\n\t"
|
|
"ldr x10, [%[a], 168]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 168]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 160]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+22] += m[22] * mu\n\t"
|
|
"ldr x11, [%[a], 176]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 176]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 168]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+23] += m[23] * mu\n\t"
|
|
"ldr x10, [%[a], 184]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 184]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 176]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+24] += m[24] * mu\n\t"
|
|
"ldr x11, [%[a], 192]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 192]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 184]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+25] += m[25] * mu\n\t"
|
|
"ldr x10, [%[a], 200]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 200]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 192]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+26] += m[26] * mu\n\t"
|
|
"ldr x11, [%[a], 208]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 208]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 200]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+27] += m[27] * mu\n\t"
|
|
"ldr x10, [%[a], 216]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 216]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 208]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+28] += m[28] * mu\n\t"
|
|
"ldr x11, [%[a], 224]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 224]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 216]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+29] += m[29] * mu\n\t"
|
|
"ldr x10, [%[a], 232]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 232]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 224]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+30] += m[30] * mu\n\t"
|
|
"ldr x11, [%[a], 240]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 240]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 232]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+31] += m[31] * mu\n\t"
|
|
"ldr x10, [%[a], 248]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 248]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 240]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+32] += m[32] * mu\n\t"
|
|
"ldr x11, [%[a], 256]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 256]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 248]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+33] += m[33] * mu\n\t"
|
|
"ldr x10, [%[a], 264]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 264]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 256]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+34] += m[34] * mu\n\t"
|
|
"ldr x11, [%[a], 272]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 272]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 264]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+35] += m[35] * mu\n\t"
|
|
"ldr x10, [%[a], 280]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 280]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 272]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+36] += m[36] * mu\n\t"
|
|
"ldr x11, [%[a], 288]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 288]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 280]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+37] += m[37] * mu\n\t"
|
|
"ldr x10, [%[a], 296]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 296]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 288]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+38] += m[38] * mu\n\t"
|
|
"ldr x11, [%[a], 304]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 304]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 296]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+39] += m[39] * mu\n\t"
|
|
"ldr x10, [%[a], 312]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 312]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 304]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+40] += m[40] * mu\n\t"
|
|
"ldr x11, [%[a], 320]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 320]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 312]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+41] += m[41] * mu\n\t"
|
|
"ldr x10, [%[a], 328]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 328]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 320]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+42] += m[42] * mu\n\t"
|
|
"ldr x11, [%[a], 336]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 336]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 328]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+43] += m[43] * mu\n\t"
|
|
"ldr x10, [%[a], 344]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 344]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 336]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+44] += m[44] * mu\n\t"
|
|
"ldr x11, [%[a], 352]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 352]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 344]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+45] += m[45] * mu\n\t"
|
|
"ldr x10, [%[a], 360]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 360]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 352]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+46] += m[46] * mu\n\t"
|
|
"ldr x11, [%[a], 368]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 368]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 360]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+47] += m[47] * mu\n\t"
|
|
"ldr x10, [%[a], 376]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 376]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 368]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+48] += m[48] * mu\n\t"
|
|
"ldr x11, [%[a], 384]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 384]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 376]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+49] += m[49] * mu\n\t"
|
|
"ldr x10, [%[a], 392]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 392]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 384]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+50] += m[50] * mu\n\t"
|
|
"ldr x11, [%[a], 400]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 400]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 392]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+51] += m[51] * mu\n\t"
|
|
"ldr x10, [%[a], 408]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 408]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 400]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+52] += m[52] * mu\n\t"
|
|
"ldr x11, [%[a], 416]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 416]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 408]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+53] += m[53] * mu\n\t"
|
|
"ldr x10, [%[a], 424]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 424]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 416]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+54] += m[54] * mu\n\t"
|
|
"ldr x11, [%[a], 432]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 432]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 424]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+55] += m[55] * mu\n\t"
|
|
"ldr x10, [%[a], 440]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 440]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 432]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+56] += m[56] * mu\n\t"
|
|
"ldr x11, [%[a], 448]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 448]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 440]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+57] += m[57] * mu\n\t"
|
|
"ldr x10, [%[a], 456]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 456]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 448]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+58] += m[58] * mu\n\t"
|
|
"ldr x11, [%[a], 464]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 464]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 456]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+59] += m[59] * mu\n\t"
|
|
"ldr x10, [%[a], 472]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 472]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 464]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+60] += m[60] * mu\n\t"
|
|
"ldr x11, [%[a], 480]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 480]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 472]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+61] += m[61] * mu\n\t"
|
|
"ldr x10, [%[a], 488]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 488]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x11, [%[a], 480]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+62] += m[62] * mu\n\t"
|
|
"ldr x11, [%[a], 496]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 496]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 488]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+63] += m[63] * mu\n\t"
|
|
"ldr x10, [%[a], 504]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 504]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 496]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 512]\n\t"
|
|
"str x10, [%[a], 504]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 512]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 512\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
"ldp x5, x6, [%[m], 128]\n\t"
|
|
"ldp x7, x8, [%[m], 144]\n\t"
|
|
"ldp x12, x13, [x9, 128]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 144]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 128]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 144]\n\t"
|
|
"ldp x5, x6, [%[m], 160]\n\t"
|
|
"ldp x7, x8, [%[m], 176]\n\t"
|
|
"ldp x12, x13, [x9, 160]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 176]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 160]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 176]\n\t"
|
|
"ldp x5, x6, [%[m], 192]\n\t"
|
|
"ldp x7, x8, [%[m], 208]\n\t"
|
|
"ldp x12, x13, [x9, 192]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 208]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 192]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 208]\n\t"
|
|
"ldp x5, x6, [%[m], 224]\n\t"
|
|
"ldp x7, x8, [%[m], 240]\n\t"
|
|
"ldp x12, x13, [x9, 224]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 240]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 224]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 240]\n\t"
|
|
"ldp x5, x6, [%[m], 256]\n\t"
|
|
"ldp x7, x8, [%[m], 272]\n\t"
|
|
"ldp x12, x13, [x9, 256]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 272]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 256]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 272]\n\t"
|
|
"ldp x5, x6, [%[m], 288]\n\t"
|
|
"ldp x7, x8, [%[m], 304]\n\t"
|
|
"ldp x12, x13, [x9, 288]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 304]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 288]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 304]\n\t"
|
|
"ldp x5, x6, [%[m], 320]\n\t"
|
|
"ldp x7, x8, [%[m], 336]\n\t"
|
|
"ldp x12, x13, [x9, 320]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 336]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 320]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 336]\n\t"
|
|
"ldp x5, x6, [%[m], 352]\n\t"
|
|
"ldp x7, x8, [%[m], 368]\n\t"
|
|
"ldp x12, x13, [x9, 352]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 368]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 352]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 368]\n\t"
|
|
"ldp x5, x6, [%[m], 384]\n\t"
|
|
"ldp x7, x8, [%[m], 400]\n\t"
|
|
"ldp x12, x13, [x9, 384]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 400]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 384]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 400]\n\t"
|
|
"ldp x5, x6, [%[m], 416]\n\t"
|
|
"ldp x7, x8, [%[m], 432]\n\t"
|
|
"ldp x12, x13, [x9, 416]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 432]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 416]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 432]\n\t"
|
|
"ldp x5, x6, [%[m], 448]\n\t"
|
|
"ldp x7, x8, [%[m], 464]\n\t"
|
|
"ldp x12, x13, [x9, 448]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 464]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 448]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 464]\n\t"
|
|
"ldp x5, x6, [%[m], 480]\n\t"
|
|
"ldp x7, x8, [%[m], 496]\n\t"
|
|
"ldp x12, x13, [x9, 480]\n\t"
|
|
"and x5, x5, x3\n\t"
|
|
"ldp x11, x10, [x9, 496]\n\t"
|
|
"and x6, x6, x3\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 480]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 496]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_4096_mont_mul_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_4096_mul_64(r, a, b);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_4096_mont_sqr_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_4096_sqr_64(r, a);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_sub_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 512\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_4096_sub_64(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"ldp x3, x4, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 144]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 128]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 144]\n\t"
|
|
"ldp x3, x4, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 176]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 160]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 176]\n\t"
|
|
"ldp x3, x4, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 208]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 192]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 208]\n\t"
|
|
"ldp x3, x4, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 240]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 224]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 240]\n\t"
|
|
"ldp x3, x4, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 272]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 256]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 272]\n\t"
|
|
"ldp x3, x4, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 304]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 288]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 304]\n\t"
|
|
"ldp x3, x4, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 336]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 320]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 336]\n\t"
|
|
"ldp x3, x4, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 368]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 352]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 368]\n\t"
|
|
"ldp x3, x4, [%[a], 384]\n\t"
|
|
"ldp x7, x8, [%[b], 384]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 400]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 400]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 384]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 400]\n\t"
|
|
"ldp x3, x4, [%[a], 416]\n\t"
|
|
"ldp x7, x8, [%[b], 416]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 432]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 432]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 416]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 432]\n\t"
|
|
"ldp x3, x4, [%[a], 448]\n\t"
|
|
"ldp x7, x8, [%[b], 448]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 464]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 464]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 448]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 464]\n\t"
|
|
"ldp x3, x4, [%[a], 480]\n\t"
|
|
"ldp x7, x8, [%[b], 480]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 496]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 496]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 480]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 496]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_4096_word_64(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_4096_div_64_cond(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[128], t2[65];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[63];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 64);
|
|
for (i=63; i>=0; i--) {
|
|
sp_digit hi = t1[64 + i] - (t1[64 + i] == div);
|
|
r1 = div_4096_word_64(hi, t1[64 + i - 1], div);
|
|
|
|
sp_4096_mul_d_64(t2, d, r1);
|
|
t1[64 + i] += sp_4096_sub_in_place_64(&t1[i], t2);
|
|
t1[64 + i] -= t2[64];
|
|
if (t1[64 + i] != 0) {
|
|
t1[64 + i] += sp_4096_add_64(&t1[i], &t1[i], d);
|
|
if (t1[64 + i] != 0)
|
|
t1[64 + i] += sp_4096_add_64(&t1[i], &t1[i], d);
|
|
}
|
|
}
|
|
|
|
for (i = 63; i > 0; i--) {
|
|
if (t1[i] != d[i])
|
|
break;
|
|
}
|
|
if (t1[i] >= d[i]) {
|
|
sp_4096_sub_64(r, t1, d);
|
|
}
|
|
else {
|
|
XMEMCPY(r, t1, sizeof(*t1) * 64);
|
|
}
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_4096_mod_64_cond(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_4096_div_64_cond(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || defined(WOLFSSL_HAVE_SP_DH)
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_4096_cond_sub_64(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 512\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"ldp x5, x7, [%[b], 192]\n\t"
|
|
"ldp x11, x12, [%[b], 208]\n\t"
|
|
"ldp x4, x6, [%[a], 192]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 208]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 192]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 208]\n\t"
|
|
"ldp x5, x7, [%[b], 224]\n\t"
|
|
"ldp x11, x12, [%[b], 240]\n\t"
|
|
"ldp x4, x6, [%[a], 224]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 240]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 224]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 240]\n\t"
|
|
"ldp x5, x7, [%[b], 256]\n\t"
|
|
"ldp x11, x12, [%[b], 272]\n\t"
|
|
"ldp x4, x6, [%[a], 256]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 272]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 256]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 272]\n\t"
|
|
"ldp x5, x7, [%[b], 288]\n\t"
|
|
"ldp x11, x12, [%[b], 304]\n\t"
|
|
"ldp x4, x6, [%[a], 288]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 304]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 288]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 304]\n\t"
|
|
"ldp x5, x7, [%[b], 320]\n\t"
|
|
"ldp x11, x12, [%[b], 336]\n\t"
|
|
"ldp x4, x6, [%[a], 320]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 336]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 320]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 336]\n\t"
|
|
"ldp x5, x7, [%[b], 352]\n\t"
|
|
"ldp x11, x12, [%[b], 368]\n\t"
|
|
"ldp x4, x6, [%[a], 352]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 368]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 352]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 368]\n\t"
|
|
"ldp x5, x7, [%[b], 384]\n\t"
|
|
"ldp x11, x12, [%[b], 400]\n\t"
|
|
"ldp x4, x6, [%[a], 384]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 400]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 384]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 400]\n\t"
|
|
"ldp x5, x7, [%[b], 416]\n\t"
|
|
"ldp x11, x12, [%[b], 432]\n\t"
|
|
"ldp x4, x6, [%[a], 416]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 432]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 416]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 432]\n\t"
|
|
"ldp x5, x7, [%[b], 448]\n\t"
|
|
"ldp x11, x12, [%[b], 464]\n\t"
|
|
"ldp x4, x6, [%[a], 448]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 464]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 448]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 464]\n\t"
|
|
"ldp x5, x7, [%[b], 480]\n\t"
|
|
"ldp x11, x12, [%[b], 496]\n\t"
|
|
"ldp x4, x6, [%[a], 480]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 496]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 480]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 496]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_4096_mask_64(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<64; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 64; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_4096_cmp_64(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 504\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 496]\n\t"
|
|
"ldp x7, x8, [%[b], 496]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 480]\n\t"
|
|
"ldp x7, x8, [%[b], 480]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 464]\n\t"
|
|
"ldp x7, x8, [%[b], 464]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 448]\n\t"
|
|
"ldp x7, x8, [%[b], 448]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 432]\n\t"
|
|
"ldp x7, x8, [%[b], 432]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 416]\n\t"
|
|
"ldp x7, x8, [%[b], 416]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 400]\n\t"
|
|
"ldp x7, x8, [%[b], 400]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 384]\n\t"
|
|
"ldp x7, x8, [%[b], 384]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 368]\n\t"
|
|
"ldp x7, x8, [%[b], 368]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 352]\n\t"
|
|
"ldp x7, x8, [%[b], 352]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 336]\n\t"
|
|
"ldp x7, x8, [%[b], 336]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 320]\n\t"
|
|
"ldp x7, x8, [%[b], 320]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 304]\n\t"
|
|
"ldp x7, x8, [%[b], 304]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 288]\n\t"
|
|
"ldp x7, x8, [%[b], 288]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 272]\n\t"
|
|
"ldp x7, x8, [%[b], 272]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 256]\n\t"
|
|
"ldp x7, x8, [%[b], 256]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 240]\n\t"
|
|
"ldp x7, x8, [%[b], 240]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 224]\n\t"
|
|
"ldp x7, x8, [%[b], 224]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 208]\n\t"
|
|
"ldp x7, x8, [%[b], 208]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 192]\n\t"
|
|
"ldp x7, x8, [%[b], 192]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 176]\n\t"
|
|
"ldp x7, x8, [%[b], 176]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 160]\n\t"
|
|
"ldp x7, x8, [%[b], 160]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 144]\n\t"
|
|
"ldp x7, x8, [%[b], 144]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 128]\n\t"
|
|
"ldp x7, x8, [%[b], 128]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_4096_div_64(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[128], t2[65];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[63];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 64);
|
|
for (i=63; i>=0; i--) {
|
|
sp_digit hi = t1[64 + i] - (t1[64 + i] == div);
|
|
r1 = div_4096_word_64(hi, t1[64 + i - 1], div);
|
|
|
|
sp_4096_mul_d_64(t2, d, r1);
|
|
t1[64 + i] += sp_4096_sub_in_place_64(&t1[i], t2);
|
|
t1[64 + i] -= t2[64];
|
|
sp_4096_mask_64(t2, d, t1[64 + i]);
|
|
t1[64 + i] += sp_4096_add_64(&t1[i], &t1[i], t2);
|
|
sp_4096_mask_64(t2, d, t1[64 + i]);
|
|
t1[64 + i] += sp_4096_add_64(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_4096_cmp_64(t1, d) >= 0;
|
|
sp_4096_cond_sub_64(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_4096_mod_64(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_4096_div_64(a, m, NULL, r);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_RSA_PUBLIC_ONLY)) || \
|
|
defined(WOLFSSL_HAVE_SP_DH)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_4096_mod_exp_64(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[8 * 128];
|
|
#endif
|
|
sp_digit* t[8];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (8 * 128), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<8; i++) {
|
|
t[i] = td + i * 128;
|
|
}
|
|
|
|
sp_4096_mont_setup(m, &mp);
|
|
sp_4096_mont_norm_64(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 64U);
|
|
if (reduceA != 0) {
|
|
err = sp_4096_mod_64(t[1] + 64, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_4096_mod_64(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 64, a, sizeof(sp_digit) * 64);
|
|
err = sp_4096_mod_64(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_mont_sqr_64(t[ 2], t[ 1], m, mp);
|
|
sp_4096_mont_mul_64(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_4096_mont_sqr_64(t[ 4], t[ 2], m, mp);
|
|
sp_4096_mont_mul_64(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_4096_mont_sqr_64(t[ 6], t[ 3], m, mp);
|
|
sp_4096_mont_mul_64(t[ 7], t[ 4], t[ 3], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 3;
|
|
if (c == 64) {
|
|
c = 61;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 64);
|
|
for (; i>=0 || c>=3; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 61);
|
|
n <<= 3;
|
|
c = 61;
|
|
}
|
|
else if (c < 3) {
|
|
y = (byte)(n >> 61);
|
|
n = e[i--];
|
|
c = 3 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 61) & 0x7);
|
|
n <<= 3;
|
|
c -= 3;
|
|
}
|
|
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
|
|
sp_4096_mont_mul_64(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[64], 0, sizeof(sp_digit) * 64U);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
|
|
mask = 0 - (sp_4096_cmp_64(r, m) >= 0);
|
|
sp_4096_cond_sub_64(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Modular exponentiate a to the e mod m. (r = a^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* a A single precision number being exponentiated.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even or exponent is 0.
|
|
*/
|
|
static int sp_4096_mod_exp_64(sp_digit* r, const sp_digit* a, const sp_digit* e,
|
|
int bits, const sp_digit* m, int reduceA)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[16 * 128];
|
|
#endif
|
|
sp_digit* t[16];
|
|
sp_digit* norm = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
else if (bits == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * (16 * 128), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
for (i=0; i<16; i++) {
|
|
t[i] = td + i * 128;
|
|
}
|
|
|
|
sp_4096_mont_setup(m, &mp);
|
|
sp_4096_mont_norm_64(norm, m);
|
|
|
|
XMEMSET(t[1], 0, sizeof(sp_digit) * 64U);
|
|
if (reduceA != 0) {
|
|
err = sp_4096_mod_64(t[1] + 64, a, m);
|
|
if (err == MP_OKAY) {
|
|
err = sp_4096_mod_64(t[1], t[1], m);
|
|
}
|
|
}
|
|
else {
|
|
XMEMCPY(t[1] + 64, a, sizeof(sp_digit) * 64);
|
|
err = sp_4096_mod_64(t[1], t[1], m);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_mont_sqr_64(t[ 2], t[ 1], m, mp);
|
|
sp_4096_mont_mul_64(t[ 3], t[ 2], t[ 1], m, mp);
|
|
sp_4096_mont_sqr_64(t[ 4], t[ 2], m, mp);
|
|
sp_4096_mont_mul_64(t[ 5], t[ 3], t[ 2], m, mp);
|
|
sp_4096_mont_sqr_64(t[ 6], t[ 3], m, mp);
|
|
sp_4096_mont_mul_64(t[ 7], t[ 4], t[ 3], m, mp);
|
|
sp_4096_mont_sqr_64(t[ 8], t[ 4], m, mp);
|
|
sp_4096_mont_mul_64(t[ 9], t[ 5], t[ 4], m, mp);
|
|
sp_4096_mont_sqr_64(t[10], t[ 5], m, mp);
|
|
sp_4096_mont_mul_64(t[11], t[ 6], t[ 5], m, mp);
|
|
sp_4096_mont_sqr_64(t[12], t[ 6], m, mp);
|
|
sp_4096_mont_mul_64(t[13], t[ 7], t[ 6], m, mp);
|
|
sp_4096_mont_sqr_64(t[14], t[ 7], m, mp);
|
|
sp_4096_mont_mul_64(t[15], t[ 8], t[ 7], m, mp);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 4;
|
|
if (c == 64) {
|
|
c = 60;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
XMEMCPY(r, t[y], sizeof(sp_digit) * 64);
|
|
for (; i>=0 || c>=4; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 60);
|
|
n <<= 4;
|
|
c = 60;
|
|
}
|
|
else if (c < 4) {
|
|
y = (byte)(n >> 60);
|
|
n = e[i--];
|
|
c = 4 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 60) & 0xf);
|
|
n <<= 4;
|
|
c -= 4;
|
|
}
|
|
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
|
|
sp_4096_mont_mul_64(r, r, t[y], m, mp);
|
|
}
|
|
|
|
XMEMSET(&r[64], 0, sizeof(sp_digit) * 64U);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
|
|
mask = 0 - (sp_4096_cmp_64(r, m) >= 0);
|
|
sp_4096_cond_sub_64(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
|
|
#endif /* (WOLFSSL_HAVE_SP_RSA && !WOLFSSL_RSA_PUBLIC_ONLY) || WOLFSSL_HAVE_SP_DH */
|
|
#ifdef WOLFSSL_HAVE_SP_RSA
|
|
/* RSA public key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* em Public exponent.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 512 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPublic_4096(const byte* in, word32 inLen, const mp_int* em,
|
|
const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[64 * 5];
|
|
#endif
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit *ah = NULL;
|
|
sp_digit e[1] = {0};
|
|
int err = MP_OKAY;
|
|
|
|
if (*outLen < 512) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (mp_count_bits(em) > 64 || inLen > 512 ||
|
|
mp_count_bits(mm) != 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 5, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
r = a + 64 * 2;
|
|
m = r + 64 * 2;
|
|
ah = a + 64;
|
|
|
|
sp_4096_from_bin(ah, 64, in, inLen);
|
|
#if DIGIT_BIT >= 64
|
|
e[0] = em->dp[0];
|
|
#else
|
|
e[0] = em->dp[0];
|
|
if (em->used > 1) {
|
|
e[0] |= ((sp_digit)em->dp[1]) << DIGIT_BIT;
|
|
}
|
|
#endif
|
|
if (e[0] == 0) {
|
|
err = MP_EXPTMOD_E;
|
|
}
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_4096_from_mp(m, 64, mm);
|
|
|
|
if (e[0] == 0x3) {
|
|
if (err == MP_OKAY) {
|
|
sp_4096_sqr_64(r, ah);
|
|
err = sp_4096_mod_64_cond(r, r, m);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_4096_mul_64(r, ah, r);
|
|
err = sp_4096_mod_64_cond(r, r, m);
|
|
}
|
|
}
|
|
else {
|
|
int i;
|
|
sp_digit mp;
|
|
|
|
sp_4096_mont_setup(m, &mp);
|
|
|
|
/* Convert to Montgomery form. */
|
|
XMEMSET(a, 0, sizeof(sp_digit) * 64);
|
|
err = sp_4096_mod_64_cond(a, a, m);
|
|
|
|
if (err == MP_OKAY) {
|
|
for (i = 63; i >= 0; i--) {
|
|
if (e[0] >> i) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
XMEMCPY(r, a, sizeof(sp_digit) * 64);
|
|
for (i--; i>=0; i--) {
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
if (((e[0] >> i) & 1) == 1) {
|
|
sp_4096_mont_mul_64(r, r, a, m, mp);
|
|
}
|
|
}
|
|
XMEMSET(&r[64], 0, sizeof(sp_digit) * 64);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
|
|
for (i = 63; i > 0; i--) {
|
|
if (r[i] != m[i]) {
|
|
break;
|
|
}
|
|
}
|
|
if (r[i] >= m[i]) {
|
|
sp_4096_sub_in_place_64(r, m);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_to_bin_64(r, out);
|
|
*outLen = 512;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WOLFSSL_RSA_PUBLIC_ONLY
|
|
/* Conditionally add a and b using the mask m.
|
|
* m is -1 to add and 0 when not.
|
|
*
|
|
* r A single precision number representing conditional add result.
|
|
* a A single precision number to add with.
|
|
* b A single precision number to add.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_4096_cond_add_32(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 256\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"ldp x5, x7, [%[b], 128]\n\t"
|
|
"ldp x11, x12, [%[b], 144]\n\t"
|
|
"ldp x4, x6, [%[a], 128]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 144]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 128]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 144]\n\t"
|
|
"ldp x5, x7, [%[b], 160]\n\t"
|
|
"ldp x11, x12, [%[b], 176]\n\t"
|
|
"ldp x4, x6, [%[a], 160]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 176]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 160]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 176]\n\t"
|
|
"ldp x5, x7, [%[b], 192]\n\t"
|
|
"ldp x11, x12, [%[b], 208]\n\t"
|
|
"ldp x4, x6, [%[a], 192]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 208]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 192]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 208]\n\t"
|
|
"ldp x5, x7, [%[b], 224]\n\t"
|
|
"ldp x11, x12, [%[b], 240]\n\t"
|
|
"ldp x4, x6, [%[a], 224]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 240]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 224]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 240]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* RSA private key operation.
|
|
*
|
|
* in Array of bytes representing the number to exponentiate, base.
|
|
* inLen Number of bytes in base.
|
|
* dm Private exponent.
|
|
* pm First prime.
|
|
* qm Second prime.
|
|
* dpm First prime's CRT exponent.
|
|
* dqm Second prime's CRT exponent.
|
|
* qim Inverse of second prime mod p.
|
|
* mm Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 512 bytes long.
|
|
* outLen Number of bytes in result.
|
|
* returns 0 on success, MP_TO_E when the outLen is too small, MP_READ_E when
|
|
* an array is too long and MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_RsaPrivate_4096(const byte* in, word32 inLen, const mp_int* dm,
|
|
const mp_int* pm, const mp_int* qm, const mp_int* dpm, const mp_int* dqm,
|
|
const mp_int* qim, const mp_int* mm, byte* out, word32* outLen)
|
|
{
|
|
#if defined(SP_RSA_PRIVATE_EXP_D) || defined(RSA_LOW_MEM)
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* d = NULL;
|
|
#else
|
|
sp_digit d[64 * 4];
|
|
#endif
|
|
sp_digit* a = NULL;
|
|
sp_digit* m = NULL;
|
|
sp_digit* r = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
(void)pm;
|
|
(void)qm;
|
|
(void)dpm;
|
|
(void)dqm;
|
|
(void)qim;
|
|
|
|
if (*outLen < 512U) {
|
|
err = MP_TO_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
if (mp_count_bits(dm) > 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (inLen > 512) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mm) != 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
d = (sp_digit*)XMALLOC(sizeof(sp_digit) * 64 * 4, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (d == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
a = d + 64;
|
|
m = a + 128;
|
|
r = a;
|
|
|
|
sp_4096_from_bin(a, 64, in, inLen);
|
|
sp_4096_from_mp(d, 64, dm);
|
|
sp_4096_from_mp(m, 64, mm);
|
|
err = sp_4096_mod_exp_64(r, a, d, 4096, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_to_bin_64(r, out);
|
|
*outLen = 512;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (d != NULL)
|
|
#endif
|
|
{
|
|
/* only "a" and "r" are sensitive and need zeroized (same pointer) */
|
|
if (a != NULL)
|
|
ForceZero(a, sizeof(sp_digit) * 64);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(d, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
#else
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* a = NULL;
|
|
#else
|
|
sp_digit a[32 * 11];
|
|
#endif
|
|
sp_digit* p = NULL;
|
|
sp_digit* q = NULL;
|
|
sp_digit* dp = NULL;
|
|
sp_digit* tmpa = NULL;
|
|
sp_digit* tmpb = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit* qi = NULL;
|
|
sp_digit* dq = NULL;
|
|
sp_digit c;
|
|
int err = MP_OKAY;
|
|
|
|
(void)dm;
|
|
(void)mm;
|
|
|
|
if (*outLen < 512) {
|
|
err = MP_TO_E;
|
|
}
|
|
else if (inLen > 512 || mp_count_bits(mm) != 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mm)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
a = (sp_digit*)XMALLOC(sizeof(sp_digit) * 32 * 11, NULL,
|
|
DYNAMIC_TYPE_RSA);
|
|
if (a == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = a + 64 * 2;
|
|
q = p + 32;
|
|
qi = dq = dp = q + 32;
|
|
tmpa = qi + 32;
|
|
tmpb = tmpa + 64;
|
|
r = a;
|
|
|
|
sp_4096_from_bin(a, 64, in, inLen);
|
|
sp_4096_from_mp(p, 32, pm);
|
|
sp_4096_from_mp(q, 32, qm);
|
|
sp_4096_from_mp(dp, 32, dpm);
|
|
|
|
err = sp_2048_mod_exp_32(tmpa, a, dp, 2048, p, 1);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_4096_from_mp(dq, 32, dqm);
|
|
err = sp_2048_mod_exp_32(tmpb, a, dq, 2048, q, 1);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
c = sp_2048_sub_in_place_32(tmpa, tmpb);
|
|
c += sp_4096_cond_add_32(tmpa, tmpa, p, c);
|
|
sp_4096_cond_add_32(tmpa, tmpa, p, c);
|
|
|
|
sp_2048_from_mp(qi, 32, qim);
|
|
sp_2048_mul_32(tmpa, tmpa, qi);
|
|
err = sp_2048_mod_32(tmpa, tmpa, p);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_2048_mul_32(tmpa, q, tmpa);
|
|
XMEMSET(&tmpb[32], 0, sizeof(sp_digit) * 32);
|
|
sp_4096_add_64(r, tmpb, tmpa);
|
|
|
|
sp_4096_to_bin_64(r, out);
|
|
*outLen = 512;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (a != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(a, sizeof(sp_digit) * 32 * 11);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(a, NULL, DYNAMIC_TYPE_RSA);
|
|
#endif
|
|
}
|
|
#endif /* SP_RSA_PRIVATE_EXP_D || RSA_LOW_MEM */
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_RSA_PUBLIC_ONLY */
|
|
#endif /* WOLFSSL_HAVE_SP_RSA */
|
|
#if defined(WOLFSSL_HAVE_SP_DH) || (defined(WOLFSSL_HAVE_SP_RSA) && \
|
|
!defined(WOLFSSL_RSA_PUBLIC_ONLY))
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_4096_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (4096 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 64);
|
|
r->used = 64;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 64; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (4096 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 64; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (4096 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base. MP integer.
|
|
* exp Exponent. MP integer.
|
|
* mod Modulus. MP integer.
|
|
* res Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_4096(const mp_int* base, const mp_int* exp, const mp_int* mod,
|
|
mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[128];
|
|
sp_digit e[64];
|
|
sp_digit m[64];
|
|
sp_digit* r = b;
|
|
int expBits = mp_count_bits(exp);
|
|
|
|
if (mp_count_bits(base) > 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expBits > 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_from_mp(b, 64, base);
|
|
sp_4096_from_mp(e, 64, exp);
|
|
sp_4096_from_mp(m, 64, mod);
|
|
|
|
err = sp_4096_mod_exp_64(r, b, e, expBits, m, 0);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_4096_to_mp(r, res);
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef WOLFSSL_HAVE_SP_DH
|
|
|
|
#ifdef HAVE_FFDHE_4096
|
|
static void sp_4096_lshift_64(sp_digit* r, sp_digit* a, byte n)
|
|
{
|
|
word64 n64 = n;
|
|
__asm__ __volatile__ (
|
|
"mov x6, 63\n\t"
|
|
"sub x6, x6, %[n]\n\t"
|
|
"ldr x3, [%[a], 504]\n\t"
|
|
"lsr x4, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x4, x4, x6\n\t"
|
|
"ldr x2, [%[a], 496]\n\t"
|
|
"str x4, [%[r], 512]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 488]\n\t"
|
|
"str x3, [%[r], 504]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 480]\n\t"
|
|
"str x2, [%[r], 496]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 472]\n\t"
|
|
"str x4, [%[r], 488]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 464]\n\t"
|
|
"str x3, [%[r], 480]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 456]\n\t"
|
|
"str x2, [%[r], 472]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 448]\n\t"
|
|
"str x4, [%[r], 464]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 440]\n\t"
|
|
"str x3, [%[r], 456]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 432]\n\t"
|
|
"str x2, [%[r], 448]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 424]\n\t"
|
|
"str x4, [%[r], 440]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 416]\n\t"
|
|
"str x3, [%[r], 432]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 408]\n\t"
|
|
"str x2, [%[r], 424]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 400]\n\t"
|
|
"str x4, [%[r], 416]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 392]\n\t"
|
|
"str x3, [%[r], 408]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 384]\n\t"
|
|
"str x2, [%[r], 400]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 376]\n\t"
|
|
"str x4, [%[r], 392]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 368]\n\t"
|
|
"str x3, [%[r], 384]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 360]\n\t"
|
|
"str x2, [%[r], 376]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 352]\n\t"
|
|
"str x4, [%[r], 368]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 344]\n\t"
|
|
"str x3, [%[r], 360]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 336]\n\t"
|
|
"str x2, [%[r], 352]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 328]\n\t"
|
|
"str x4, [%[r], 344]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 320]\n\t"
|
|
"str x3, [%[r], 336]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 312]\n\t"
|
|
"str x2, [%[r], 328]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 304]\n\t"
|
|
"str x4, [%[r], 320]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 296]\n\t"
|
|
"str x3, [%[r], 312]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 288]\n\t"
|
|
"str x2, [%[r], 304]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 280]\n\t"
|
|
"str x4, [%[r], 296]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 272]\n\t"
|
|
"str x3, [%[r], 288]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 264]\n\t"
|
|
"str x2, [%[r], 280]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 256]\n\t"
|
|
"str x4, [%[r], 272]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 248]\n\t"
|
|
"str x3, [%[r], 264]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 240]\n\t"
|
|
"str x2, [%[r], 256]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 232]\n\t"
|
|
"str x4, [%[r], 248]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 224]\n\t"
|
|
"str x3, [%[r], 240]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 216]\n\t"
|
|
"str x2, [%[r], 232]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 208]\n\t"
|
|
"str x4, [%[r], 224]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 200]\n\t"
|
|
"str x3, [%[r], 216]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 192]\n\t"
|
|
"str x2, [%[r], 208]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 184]\n\t"
|
|
"str x4, [%[r], 200]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 176]\n\t"
|
|
"str x3, [%[r], 192]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 168]\n\t"
|
|
"str x2, [%[r], 184]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 160]\n\t"
|
|
"str x4, [%[r], 176]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 152]\n\t"
|
|
"str x3, [%[r], 168]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 144]\n\t"
|
|
"str x2, [%[r], 160]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 136]\n\t"
|
|
"str x4, [%[r], 152]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 128]\n\t"
|
|
"str x3, [%[r], 144]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 120]\n\t"
|
|
"str x2, [%[r], 136]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 128]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 104]\n\t"
|
|
"str x3, [%[r], 120]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 96]\n\t"
|
|
"str x2, [%[r], 112]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 88]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 72]\n\t"
|
|
"str x2, [%[r], 88]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 56]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 48]\n\t"
|
|
"str x2, [%[r], 64]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 40]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 24]\n\t"
|
|
"str x2, [%[r], 40]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"ldr x2, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"lsr x5, x2, 1\n\t"
|
|
"lsl x2, x2, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x3, x3, x5\n\t"
|
|
"ldr x4, [%[a], 8]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"lsr x5, x4, 1\n\t"
|
|
"lsl x4, x4, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x2, x2, x5\n\t"
|
|
"ldr x3, [%[a], 0]\n\t"
|
|
"str x2, [%[r], 16]\n\t"
|
|
"lsr x5, x3, 1\n\t"
|
|
"lsl x3, x3, %[n]\n\t"
|
|
"lsr x5, x5, x6\n\t"
|
|
"orr x4, x4, x5\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [n] "r" (n64)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Modular exponentiate 2 to the e mod m. (r = 2^e mod m)
|
|
*
|
|
* r A single precision number that is the result of the operation.
|
|
* e A single precision number that is the exponent.
|
|
* bits The number of bits in the exponent.
|
|
* m A single precision number that is the modulus.
|
|
* returns 0 on success.
|
|
* returns MEMORY_E on dynamic memory allocation failure.
|
|
* returns MP_VAL when base is even.
|
|
*/
|
|
static int sp_4096_mod_exp_2_64(sp_digit* r, const sp_digit* e, int bits,
|
|
const sp_digit* m)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
#else
|
|
sp_digit td[193];
|
|
#endif
|
|
sp_digit* norm = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_digit mp = 1;
|
|
sp_digit n;
|
|
sp_digit o;
|
|
sp_digit mask;
|
|
int i;
|
|
int c;
|
|
byte y;
|
|
int err = MP_OKAY;
|
|
|
|
if ((m[0] & 1) == 0) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 193, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
norm = td;
|
|
tmp = td + 128;
|
|
|
|
sp_4096_mont_setup(m, &mp);
|
|
sp_4096_mont_norm_64(norm, m);
|
|
|
|
i = (bits - 1) / 64;
|
|
n = e[i--];
|
|
c = bits & 63;
|
|
if (c == 0) {
|
|
c = 64;
|
|
}
|
|
c -= bits % 6;
|
|
if (c == 64) {
|
|
c = 58;
|
|
}
|
|
if (c < 0) {
|
|
/* Number of bits in top word is less than number needed. */
|
|
c = -c;
|
|
y = (byte)(n << c);
|
|
n = e[i--];
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)(n >> c);
|
|
n <<= 64 - c;
|
|
}
|
|
sp_4096_lshift_64(r, norm, y);
|
|
for (; i>=0 || c>=6; ) {
|
|
if (c == 0) {
|
|
n = e[i--];
|
|
y = (byte)(n >> 58);
|
|
n <<= 6;
|
|
c = 58;
|
|
}
|
|
else if (c < 6) {
|
|
y = (byte)(n >> 58);
|
|
n = e[i--];
|
|
c = 6 - c;
|
|
y |= (byte)(n >> (64 - c));
|
|
n <<= c;
|
|
c = 64 - c;
|
|
}
|
|
else {
|
|
y = (byte)((n >> 58) & 0x3f);
|
|
n <<= 6;
|
|
c -= 6;
|
|
}
|
|
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
sp_4096_mont_sqr_64(r, r, m, mp);
|
|
|
|
sp_4096_lshift_64(r, r, y);
|
|
sp_4096_mul_d_64(tmp, norm, r[64]);
|
|
r[64] = 0;
|
|
o = sp_4096_add_64(r, r, tmp);
|
|
sp_4096_cond_sub_64(r, r, m, (sp_digit)0 - o);
|
|
}
|
|
|
|
XMEMSET(&r[64], 0, sizeof(sp_digit) * 64U);
|
|
sp_4096_mont_reduce_64(r, m, mp);
|
|
|
|
mask = 0 - (sp_4096_cmp_64(r, m) >= 0);
|
|
sp_4096_cond_sub_64(r, r, m, mask);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL)
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_FFDHE_4096 */
|
|
|
|
/* Perform the modular exponentiation for Diffie-Hellman.
|
|
*
|
|
* base Base.
|
|
* exp Array of bytes that is the exponent.
|
|
* expLen Length of data, in bytes, in exponent.
|
|
* mod Modulus.
|
|
* out Buffer to hold big-endian bytes of exponentiation result.
|
|
* Must be at least 512 bytes long.
|
|
* outLen Length, in bytes, of exponentiation result.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_DhExp_4096(const mp_int* base, const byte* exp, word32 expLen,
|
|
const mp_int* mod, byte* out, word32* outLen)
|
|
{
|
|
int err = MP_OKAY;
|
|
sp_digit b[128];
|
|
sp_digit e[64];
|
|
sp_digit m[64];
|
|
sp_digit* r = b;
|
|
word32 i;
|
|
|
|
if (mp_count_bits(base) > 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (expLen > 512) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_count_bits(mod) != 4096) {
|
|
err = MP_READ_E;
|
|
}
|
|
else if (mp_iseven(mod)) {
|
|
err = MP_VAL;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_from_mp(b, 64, base);
|
|
sp_4096_from_bin(e, 64, exp, expLen);
|
|
sp_4096_from_mp(m, 64, mod);
|
|
|
|
#ifdef HAVE_FFDHE_4096
|
|
if (base->used == 1 && base->dp[0] == 2 && m[63] == (sp_digit)-1)
|
|
err = sp_4096_mod_exp_2_64(r, e, expLen * 8, m);
|
|
else
|
|
#endif
|
|
err = sp_4096_mod_exp_64(r, b, e, expLen * 8, m, 0);
|
|
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_4096_to_bin_64(r, out);
|
|
*outLen = 512;
|
|
for (i=0; i<512 && out[i] == 0; i++) {
|
|
/* Search for first non-zero. */
|
|
}
|
|
*outLen -= i;
|
|
XMEMMOVE(out, out + i, *outLen);
|
|
|
|
}
|
|
|
|
XMEMSET(e, 0, sizeof(e));
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_HAVE_SP_DH */
|
|
|
|
#endif /* WOLFSSL_HAVE_SP_DH | (WOLFSSL_HAVE_SP_RSA & !WOLFSSL_RSA_PUBLIC_ONLY) */
|
|
|
|
#endif /* WOLFSSL_SP_4096 */
|
|
|
|
#endif /* WOLFSSL_HAVE_SP_RSA | WOLFSSL_HAVE_SP_DH */
|
|
#ifdef WOLFSSL_HAVE_SP_ECC
|
|
#ifndef WOLFSSL_SP_NO_256
|
|
|
|
/* Point structure to use. */
|
|
typedef struct sp_point_256 {
|
|
/* X ordinate of point. */
|
|
sp_digit x[2 * 4];
|
|
/* Y ordinate of point. */
|
|
sp_digit y[2 * 4];
|
|
/* Z ordinate of point. */
|
|
sp_digit z[2 * 4];
|
|
/* Indicates point is at infinity. */
|
|
int infinity;
|
|
} sp_point_256;
|
|
|
|
/* The modulus (prime) of the curve P256. */
|
|
static const sp_digit p256_mod[4] = {
|
|
0xffffffffffffffffL,0x00000000ffffffffL,0x0000000000000000L,
|
|
0xffffffff00000001L
|
|
};
|
|
/* The Montgomery normalizer for modulus of the curve P256. */
|
|
static const sp_digit p256_norm_mod[4] = {
|
|
0x0000000000000001L,0xffffffff00000000L,0xffffffffffffffffL,
|
|
0x00000000fffffffeL
|
|
};
|
|
/* The Montgomery multiplier for modulus of the curve P256. */
|
|
static const sp_digit p256_mp_mod = 0x0000000000000001;
|
|
#if defined(WOLFSSL_VALIDATE_ECC_KEYGEN) || defined(HAVE_ECC_SIGN) || \
|
|
defined(HAVE_ECC_VERIFY)
|
|
/* The order of the curve P256. */
|
|
static const sp_digit p256_order[4] = {
|
|
0xf3b9cac2fc632551L,0xbce6faada7179e84L,0xffffffffffffffffL,
|
|
0xffffffff00000000L
|
|
};
|
|
#endif
|
|
/* The order of the curve P256 minus 2. */
|
|
static const sp_digit p256_order2[4] = {
|
|
0xf3b9cac2fc63254fL,0xbce6faada7179e84L,0xffffffffffffffffL,
|
|
0xffffffff00000000L
|
|
};
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* The Montgomery normalizer for order of the curve P256. */
|
|
static const sp_digit p256_norm_order[4] = {
|
|
0x0c46353d039cdaafL,0x4319055258e8617bL,0x0000000000000000L,
|
|
0x00000000ffffffffL
|
|
};
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* The Montgomery multiplier for order of the curve P256. */
|
|
static const sp_digit p256_mp_order = 0xccd1c8aaee00bc4fL;
|
|
#endif
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* The base point of curve P256. */
|
|
static const sp_point_256 p256_base = {
|
|
/* X ordinate */
|
|
{
|
|
0xf4a13945d898c296L,0x77037d812deb33a0L,0xf8bce6e563a440f2L,
|
|
0x6b17d1f2e12c4247L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0
|
|
},
|
|
/* Y ordinate */
|
|
{
|
|
0xcbb6406837bf51f5L,0x2bce33576b315eceL,0x8ee7eb4a7c0f9e16L,
|
|
0x4fe342e2fe1a7f9bL,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0
|
|
},
|
|
/* Z ordinate */
|
|
{
|
|
0x0000000000000001L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0
|
|
},
|
|
/* infinity */
|
|
0
|
|
};
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#if defined(HAVE_ECC_CHECK_KEY) || defined(HAVE_COMP_KEY)
|
|
static const sp_digit p256_b[4] = {
|
|
0x3bce3c3e27d2604bL,0x651d06b0cc53b0f6L,0xb3ebbd55769886bcL,
|
|
0x5ac635d8aa3a93e7L
|
|
};
|
|
#endif
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_256_mul_4(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[8];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 24\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 32\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 48\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#else
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_256_mul_4(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[4];
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x16, x17, [%[a], 0]\n\t"
|
|
"ldp x21, x22, [%[b], 0]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"mul x8, x16, x21\n\t"
|
|
"ldr x19, [%[a], 16]\n\t"
|
|
"umulh x9, x16, x21\n\t"
|
|
"ldr x23, [%[b], 16]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"mul x4, x16, x22\n\t"
|
|
"ldr x20, [%[a], 24]\n\t"
|
|
"umulh x5, x16, x22\n\t"
|
|
"ldr x24, [%[b], 24]\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"mul x4, x17, x21\n\t"
|
|
"adc x10, xzr, x5\n\t"
|
|
"umulh x5, x17, x21\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"mul x4, x16, x23\n\t"
|
|
"adcs x10, x10, x5\n\t"
|
|
"umulh x5, x16, x23\n\t"
|
|
"adc x11, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"mul x4, x17, x22\n\t"
|
|
"adc x11, x11, x5\n\t"
|
|
"umulh x5, x17, x22\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"mul x4, x19, x21\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x19, x21\n\t"
|
|
"adc x12, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"mul x4, x16, x24\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x16, x24\n\t"
|
|
"adc x12, x12, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"mul x4, x17, x23\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x23\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"mul x4, x19, x22\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x19, x22\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"mul x4, x20, x21\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x20, x21\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"mul x4, x17, x24\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x24\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"mul x4, x19, x23\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x19, x23\n\t"
|
|
"adc x14, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"mul x4, x20, x22\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x20, x22\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"mul x4, x19, x24\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x19, x24\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"mul x4, x20, x23\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x20, x23\n\t"
|
|
"adc x15, xzr, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"mul x4, x20, x24\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x20, x24\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"adc x15, x15, x5\n\t"
|
|
"stp x8, x9, [%[r], 0]\n\t"
|
|
"stp x10, x11, [%[r], 16]\n\t"
|
|
"stp x12, x13, [%[r], 32]\n\t"
|
|
"stp x14, x15, [%[r], 48]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [tmp] "r" (tmp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15"
|
|
);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_256_sqr_4(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x16, x17, [%[a], 0]\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x9, x16, x17\n\t"
|
|
"ldr x19, [%[a], 16]\n\t"
|
|
"umulh x10, x16, x17\n\t"
|
|
"ldr x20, [%[a], 24]\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x4, x16, x19\n\t"
|
|
"umulh x5, x16, x19\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x4, x16, x20\n\t"
|
|
"adc x11, xzr, x5\n\t"
|
|
"umulh x5, x16, x20\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x4, x17, x19\n\t"
|
|
"adc x12, xzr, x5\n\t"
|
|
"umulh x5, x17, x19\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x4, x17, x20\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x20\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x4, x19, x20\n\t"
|
|
"adc x13, x13, x5\n\t"
|
|
"umulh x5, x19, x20\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"adc x14, xzr, x5\n\t"
|
|
"# Double\n\t"
|
|
"adds x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x8, x16, x16\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"umulh x3, x16, x16\n\t"
|
|
"cset x15, cs\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x4, x17, x17\n\t"
|
|
"adds x9, x9, x3\n\t"
|
|
"umulh x5, x17, x17\n\t"
|
|
"adcs x10, x10, x4\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x6, x19, x19\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x7, x19, x19\n\t"
|
|
"adcs x12, x12, x6\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x16, x20, x20\n\t"
|
|
"adcs x13, x13, x7\n\t"
|
|
"umulh x17, x20, x20\n\t"
|
|
"adcs x14, x14, x16\n\t"
|
|
"adc x15, x15, x17\n\t"
|
|
"stp x8, x9, [%[r], 0]\n\t"
|
|
"stp x10, x11, [%[r], 16]\n\t"
|
|
"stp x12, x13, [%[r], 32]\n\t"
|
|
"stp x14, x15, [%[r], 48]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20"
|
|
);
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_256_add_4(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_256_sub_4(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Multiply a number by Montgomery normalizer mod modulus (prime).
|
|
*
|
|
* r The resulting Montgomery form number.
|
|
* a The number to convert.
|
|
* m The modulus (prime).
|
|
*/
|
|
static int sp_256_mod_mul_norm_4(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
int64_t t[8];
|
|
int64_t a32[8];
|
|
int64_t o;
|
|
|
|
(void)m;
|
|
|
|
a32[0] = a[0] & 0xffffffff;
|
|
a32[1] = a[0] >> 32;
|
|
a32[2] = a[1] & 0xffffffff;
|
|
a32[3] = a[1] >> 32;
|
|
a32[4] = a[2] & 0xffffffff;
|
|
a32[5] = a[2] >> 32;
|
|
a32[6] = a[3] & 0xffffffff;
|
|
a32[7] = a[3] >> 32;
|
|
|
|
/* 1 1 0 -1 -1 -1 -1 0 */
|
|
t[0] = 0 + a32[0] + a32[1] - a32[3] - a32[4] - a32[5] - a32[6];
|
|
/* 0 1 1 0 -1 -1 -1 -1 */
|
|
t[1] = 0 + a32[1] + a32[2] - a32[4] - a32[5] - a32[6] - a32[7];
|
|
/* 0 0 1 1 0 -1 -1 -1 */
|
|
t[2] = 0 + a32[2] + a32[3] - a32[5] - a32[6] - a32[7];
|
|
/* -1 -1 0 2 2 1 0 -1 */
|
|
t[3] = 0 - a32[0] - a32[1] + 2 * a32[3] + 2 * a32[4] + a32[5] - a32[7];
|
|
/* 0 -1 -1 0 2 2 1 0 */
|
|
t[4] = 0 - a32[1] - a32[2] + 2 * a32[4] + 2 * a32[5] + a32[6];
|
|
/* 0 0 -1 -1 0 2 2 1 */
|
|
t[5] = 0 - a32[2] - a32[3] + 2 * a32[5] + 2 * a32[6] + a32[7];
|
|
/* -1 -1 0 0 0 1 3 2 */
|
|
t[6] = 0 - a32[0] - a32[1] + a32[5] + 3 * a32[6] + 2 * a32[7];
|
|
/* 1 0 -1 -1 -1 -1 0 3 */
|
|
t[7] = 0 + a32[0] - a32[2] - a32[3] - a32[4] - a32[5] + 3 * a32[7];
|
|
|
|
t[1] += t[0] >> 32; t[0] &= 0xffffffff;
|
|
t[2] += t[1] >> 32; t[1] &= 0xffffffff;
|
|
t[3] += t[2] >> 32; t[2] &= 0xffffffff;
|
|
t[4] += t[3] >> 32; t[3] &= 0xffffffff;
|
|
t[5] += t[4] >> 32; t[4] &= 0xffffffff;
|
|
t[6] += t[5] >> 32; t[5] &= 0xffffffff;
|
|
t[7] += t[6] >> 32; t[6] &= 0xffffffff;
|
|
o = t[7] >> 32; t[7] &= 0xffffffff;
|
|
t[0] += o;
|
|
t[3] -= o;
|
|
t[6] -= o;
|
|
t[7] += o;
|
|
t[1] += t[0] >> 32; t[0] &= 0xffffffff;
|
|
t[2] += t[1] >> 32; t[1] &= 0xffffffff;
|
|
t[3] += t[2] >> 32; t[2] &= 0xffffffff;
|
|
t[4] += t[3] >> 32; t[3] &= 0xffffffff;
|
|
t[5] += t[4] >> 32; t[4] &= 0xffffffff;
|
|
t[6] += t[5] >> 32; t[5] &= 0xffffffff;
|
|
t[7] += t[6] >> 32; t[6] &= 0xffffffff;
|
|
r[0] = (t[1] << 32) | t[0];
|
|
r[1] = (t[3] << 32) | t[2];
|
|
r[2] = (t[5] << 32) | t[4];
|
|
r[3] = (t[7] << 32) | t[6];
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_256_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Convert a point of type ecc_point to type sp_point_256.
|
|
*
|
|
* p Point of type sp_point_256 (result).
|
|
* pm Point of type ecc_point.
|
|
*/
|
|
static void sp_256_point_from_ecc_point_4(sp_point_256* p,
|
|
const ecc_point* pm)
|
|
{
|
|
XMEMSET(p->x, 0, sizeof(p->x));
|
|
XMEMSET(p->y, 0, sizeof(p->y));
|
|
XMEMSET(p->z, 0, sizeof(p->z));
|
|
sp_256_from_mp(p->x, 4, pm->x);
|
|
sp_256_from_mp(p->y, 4, pm->y);
|
|
sp_256_from_mp(p->z, 4, pm->z);
|
|
p->infinity = 0;
|
|
}
|
|
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_256_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (256 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 4);
|
|
r->used = 4;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 4; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (256 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 4; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (256 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Convert a point of type sp_point_256 to type ecc_point.
|
|
*
|
|
* p Point of type sp_point_256.
|
|
* pm Point of type ecc_point (result).
|
|
* returns MEMORY_E when allocation of memory in ecc_point fails otherwise
|
|
* MP_OKAY.
|
|
*/
|
|
static int sp_256_point_to_ecc_point_4(const sp_point_256* p, ecc_point* pm)
|
|
{
|
|
int err;
|
|
|
|
err = sp_256_to_mp(p->x, pm->x);
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->y, pm->y);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->z, pm->z);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Conditionally copy a into r using the mask m.
|
|
* m is -1 to copy and 0 when not.
|
|
*
|
|
* r A single precision number to copy over.
|
|
* a A single precision number to copy.
|
|
* m Mask value to apply.
|
|
*/
|
|
static void sp_256_cond_copy_4(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[r], 0]\n\t"
|
|
"ldp x7, x8, [%[a], 0]\n\t"
|
|
"eor x7, x7, x3\n\t"
|
|
"ldp x5, x6, [%[r], 16]\n\t"
|
|
"eor x8, x8, x4\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"eor x9, x9, x5\n\t"
|
|
"eor x10, x10, x6\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"and x8, x8, %[m]\n\t"
|
|
"and x9, x9, %[m]\n\t"
|
|
"and x10, x10, %[m]\n\t"
|
|
"eor x3, x3, x7\n\t"
|
|
"eor x4, x4, x8\n\t"
|
|
"eor x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"eor x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
SP_NOINLINE static void sp_256_mont_mul_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
(void)m;
|
|
(void)mp;
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x16, x17, [%[a], 0]\n\t"
|
|
"ldp x21, x22, [%[b], 0]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"mul x8, x16, x21\n\t"
|
|
"ldr x19, [%[a], 16]\n\t"
|
|
"umulh x9, x16, x21\n\t"
|
|
"ldr x23, [%[b], 16]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"mul x4, x16, x22\n\t"
|
|
"ldr x20, [%[a], 24]\n\t"
|
|
"umulh x5, x16, x22\n\t"
|
|
"ldr x24, [%[b], 24]\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"mul x4, x17, x21\n\t"
|
|
"adc x10, xzr, x5\n\t"
|
|
"umulh x5, x17, x21\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"mul x4, x16, x23\n\t"
|
|
"adcs x10, x10, x5\n\t"
|
|
"umulh x5, x16, x23\n\t"
|
|
"adc x11, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"mul x4, x17, x22\n\t"
|
|
"adc x11, x11, x5\n\t"
|
|
"umulh x5, x17, x22\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"mul x4, x19, x21\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x19, x21\n\t"
|
|
"adc x12, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"mul x4, x16, x24\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x16, x24\n\t"
|
|
"adc x12, x12, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"mul x4, x17, x23\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x23\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"mul x4, x19, x22\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x19, x22\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"mul x4, x20, x21\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x20, x21\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"mul x4, x17, x24\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x24\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"mul x4, x19, x23\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x19, x23\n\t"
|
|
"adc x14, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"mul x4, x20, x22\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x20, x22\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"mul x4, x19, x24\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x19, x24\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"mul x4, x20, x23\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x20, x23\n\t"
|
|
"adc x15, xzr, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"mul x4, x20, x24\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x20, x24\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"mov x4, x8\n\t"
|
|
"adc x15, x15, x5\n\t"
|
|
"# Start Reduction\n\t"
|
|
"mov x5, x9\n\t"
|
|
"mov x6, x10\n\t"
|
|
"# mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192\n\t"
|
|
"# - a[0] << 32 << 192\n\t"
|
|
"# + (a[0] * 2) << 192\n\t"
|
|
"# a[0]-a[2] << 32\n\t"
|
|
"lsl x10, x10, 32\n\t"
|
|
"add x7, x11, x8\n\t"
|
|
"eor x10, x10, x9, lsr #32\n\t"
|
|
"lsl x9, x9, 32\n\t"
|
|
"add x7, x7, x8\n\t"
|
|
"eor x9, x9, x8, lsr #32\n\t"
|
|
"# + a[0]-a[2] << 32 << 64\n\t"
|
|
"# - a[0] << 32 << 192\n\t"
|
|
"adds x5, x5, x8, lsl #32\n\t"
|
|
"sub x7, x7, x8, lsl #32\n\t"
|
|
"adcs x6, x6, x9\n\t"
|
|
"adc x7, x7, x10\n\t"
|
|
"# a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu\n\t"
|
|
"# a += mu << 256\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"adcs x14, x14, x6\n\t"
|
|
"adcs x15, x15, x7\n\t"
|
|
"cset x8, cs\n\t"
|
|
"# a += mu << 192\n\t"
|
|
"# mu <<= 32\n\t"
|
|
"# a += (mu << 32) << 64\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"adcs x13, x13, x6\n\t"
|
|
"lsr x16, x7, 32\n\t"
|
|
"adcs x14, x14, x7\n\t"
|
|
"lsl x7, x7, 32\n\t"
|
|
"adcs x15, x15, xzr\n\t"
|
|
"eor x7, x7, x6, lsr #32\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"lsl x6, x6, 32\n\t"
|
|
"eor x6, x6, x5, lsr #32\n\t"
|
|
"adds x11, x11, x6\n\t"
|
|
"lsl x5, x5, 32\n\t"
|
|
"adcs x12, x12, x7\n\t"
|
|
"eor x5, x5, x4, lsr #32\n\t"
|
|
"adcs x13, x13, x16\n\t"
|
|
"lsl x4, x4, 32\n\t"
|
|
"adcs x14, x14, xzr\n\t"
|
|
"adcs x15, x15, xzr\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# a -= (mu << 32) << 192\n\t"
|
|
"subs x11, x11, x4\n\t"
|
|
"sbcs x12, x12, x5\n\t"
|
|
"sbcs x13, x13, x6\n\t"
|
|
"sub x8, xzr, x8\n\t"
|
|
"sbcs x14, x14, x7\n\t"
|
|
"sub x8, x8, #1\n\t"
|
|
"sbcs x15, x15, x16\n\t"
|
|
"mov x19, 0xffffffff00000001\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# mask m and sub from result if overflow\n\t"
|
|
"# m[0] = -1 & mask = mask\n\t"
|
|
"subs x12, x12, x8\n\t"
|
|
"# m[1] = 0xffffffff & mask = mask >> 32 as mask is all 1s or 0s\n\t"
|
|
"lsr x17, x8, 32\n\t"
|
|
"sbcs x13, x13, x17\n\t"
|
|
"and x19, x19, x8\n\t"
|
|
"# m[2] = 0 & mask = 0\n\t"
|
|
"sbcs x14, x14, xzr\n\t"
|
|
"stp x12, x13, [%[r], 0]\n\t"
|
|
"# m[3] = 0xffffffff00000001 & mask\n\t"
|
|
"sbc x15, x15, x19\n\t"
|
|
"stp x14, x15, [%[r], 16]\n\t"
|
|
: [a] "+r" (a), [b] "+r" (b)
|
|
: [r] "r" (r)
|
|
: "memory", "x4", "x5", "x6", "x7", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15"
|
|
);
|
|
}
|
|
|
|
/* Square the Montgomery form number mod the modulus (prime). (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
SP_NOINLINE static void sp_256_mont_sqr_4(sp_digit* r, const sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
(void)m;
|
|
(void)mp;
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x16, x17, [%[a], 0]\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x9, x16, x17\n\t"
|
|
"ldr x19, [%[a], 16]\n\t"
|
|
"umulh x10, x16, x17\n\t"
|
|
"ldr x20, [%[a], 24]\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x4, x16, x19\n\t"
|
|
"umulh x5, x16, x19\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x4, x16, x20\n\t"
|
|
"adc x11, xzr, x5\n\t"
|
|
"umulh x5, x16, x20\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x4, x17, x19\n\t"
|
|
"adc x12, xzr, x5\n\t"
|
|
"umulh x5, x17, x19\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x4, x17, x20\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x17, x20\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x4, x19, x20\n\t"
|
|
"adc x13, x13, x5\n\t"
|
|
"umulh x5, x19, x20\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"adc x14, xzr, x5\n\t"
|
|
"# Double\n\t"
|
|
"adds x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x8, x16, x16\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"umulh x3, x16, x16\n\t"
|
|
"cset x15, cs\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x4, x17, x17\n\t"
|
|
"adds x9, x9, x3\n\t"
|
|
"umulh x5, x17, x17\n\t"
|
|
"adcs x10, x10, x4\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x6, x19, x19\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x7, x19, x19\n\t"
|
|
"adcs x12, x12, x6\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x16, x20, x20\n\t"
|
|
"adcs x13, x13, x7\n\t"
|
|
"umulh x17, x20, x20\n\t"
|
|
"adcs x14, x14, x16\n\t"
|
|
"mov x3, x8\n\t"
|
|
"adc x15, x15, x17\n\t"
|
|
"# Start Reduction\n\t"
|
|
"mov x4, x9\n\t"
|
|
"mov x5, x10\n\t"
|
|
"# mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192\n\t"
|
|
"# - a[0] << 32 << 192\n\t"
|
|
"# + (a[0] * 2) << 192\n\t"
|
|
"# a[0]-a[2] << 32\n\t"
|
|
"lsl x10, x10, 32\n\t"
|
|
"add x6, x11, x8\n\t"
|
|
"eor x10, x10, x9, lsr #32\n\t"
|
|
"lsl x9, x9, 32\n\t"
|
|
"add x6, x6, x8\n\t"
|
|
"eor x9, x9, x8, lsr #32\n\t"
|
|
"# + a[0]-a[2] << 32 << 64\n\t"
|
|
"# - a[0] << 32 << 192\n\t"
|
|
"adds x4, x4, x8, lsl #32\n\t"
|
|
"sub x6, x6, x8, lsl #32\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"adc x6, x6, x10\n\t"
|
|
"# a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu\n\t"
|
|
"# a += mu << 256\n\t"
|
|
"adds x12, x12, x3\n\t"
|
|
"adcs x13, x13, x4\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"adcs x15, x15, x6\n\t"
|
|
"cset x8, cs\n\t"
|
|
"# a += mu << 192\n\t"
|
|
"# mu <<= 32\n\t"
|
|
"# a += (mu << 32) << 64\n\t"
|
|
"adds x11, x11, x3\n\t"
|
|
"adcs x12, x12, x4\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"lsr x7, x6, 32\n\t"
|
|
"adcs x14, x14, x6\n\t"
|
|
"lsl x6, x6, 32\n\t"
|
|
"adcs x15, x15, xzr\n\t"
|
|
"eor x6, x6, x5, lsr #32\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"lsl x5, x5, 32\n\t"
|
|
"eor x5, x5, x4, lsr #32\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"lsl x4, x4, 32\n\t"
|
|
"adcs x12, x12, x6\n\t"
|
|
"eor x4, x4, x3, lsr #32\n\t"
|
|
"adcs x13, x13, x7\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"adcs x14, x14, xzr\n\t"
|
|
"adcs x15, x15, xzr\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# a -= (mu << 32) << 192\n\t"
|
|
"subs x11, x11, x3\n\t"
|
|
"sbcs x12, x12, x4\n\t"
|
|
"sbcs x13, x13, x5\n\t"
|
|
"sub x8, xzr, x8\n\t"
|
|
"sbcs x14, x14, x6\n\t"
|
|
"sub x8, x8, #1\n\t"
|
|
"sbcs x15, x15, x7\n\t"
|
|
"mov x17, 0xffffffff00000001\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# mask m and sub from result if overflow\n\t"
|
|
"# m[0] = -1 & mask = mask\n\t"
|
|
"subs x12, x12, x8\n\t"
|
|
"# m[1] = 0xffffffff & mask = mask >> 32 as mask is all 1s or 0s\n\t"
|
|
"lsr x16, x8, 32\n\t"
|
|
"sbcs x13, x13, x16\n\t"
|
|
"and x17, x17, x8\n\t"
|
|
"# m[2] = 0 & mask = 0\n\t"
|
|
"sbcs x14, x14, xzr\n\t"
|
|
"stp x12, x13, [%[r], 0]\n\t"
|
|
"# m[3] = 0xffffffff00000001 & mask\n\t"
|
|
"sbc x15, x15, x17\n\t"
|
|
"stp x14, x15, [%[r], 16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20"
|
|
);
|
|
}
|
|
|
|
#if !defined(WOLFSSL_SP_SMALL) || defined(HAVE_COMP_KEY)
|
|
/* Square the Montgomery form number a number of times. (r = a ^ n mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* n Number of times to square.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_256_mont_sqr_n_4(sp_digit* r, const sp_digit* a, int n,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_256_mont_sqr_4(r, a, m, mp);
|
|
for (; n > 1; n--) {
|
|
sp_256_mont_sqr_4(r, r, m, mp);
|
|
}
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL | HAVE_COMP_KEY */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Mod-2 for the P256 curve. */
|
|
static const uint64_t p256_mod_minus_2[4] = {
|
|
0xfffffffffffffffdU,0x00000000ffffffffU,0x0000000000000000U,
|
|
0xffffffff00000001U
|
|
};
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
|
|
/* Invert the number, in Montgomery form, modulo the modulus (prime) of the
|
|
* P256 curve. (r = 1 / a mod m)
|
|
*
|
|
* r Inverse result.
|
|
* a Number to invert.
|
|
* td Temporary data.
|
|
*/
|
|
static void sp_256_mont_inv_4(sp_digit* r, const sp_digit* a, sp_digit* td)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit* t = td;
|
|
int i;
|
|
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 4);
|
|
for (i=254; i>=0; i--) {
|
|
sp_256_mont_sqr_4(t, t, p256_mod, p256_mp_mod);
|
|
if (p256_mod_minus_2[i / 64] & ((sp_digit)1 << (i % 64)))
|
|
sp_256_mont_mul_4(t, t, a, p256_mod, p256_mp_mod);
|
|
}
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 4);
|
|
#else
|
|
sp_digit* t1 = td;
|
|
sp_digit* t2 = td + 2 * 4;
|
|
sp_digit* t3 = td + 4 * 4;
|
|
/* 0x2 */
|
|
sp_256_mont_sqr_4(t1, a, p256_mod, p256_mp_mod);
|
|
/* 0x3 */
|
|
sp_256_mont_mul_4(t2, t1, a, p256_mod, p256_mp_mod);
|
|
/* 0xc */
|
|
sp_256_mont_sqr_n_4(t1, t2, 2, p256_mod, p256_mp_mod);
|
|
/* 0xd */
|
|
sp_256_mont_mul_4(t3, t1, a, p256_mod, p256_mp_mod);
|
|
/* 0xf */
|
|
sp_256_mont_mul_4(t2, t2, t1, p256_mod, p256_mp_mod);
|
|
/* 0xf0 */
|
|
sp_256_mont_sqr_n_4(t1, t2, 4, p256_mod, p256_mp_mod);
|
|
/* 0xfd */
|
|
sp_256_mont_mul_4(t3, t3, t1, p256_mod, p256_mp_mod);
|
|
/* 0xff */
|
|
sp_256_mont_mul_4(t2, t2, t1, p256_mod, p256_mp_mod);
|
|
/* 0xff00 */
|
|
sp_256_mont_sqr_n_4(t1, t2, 8, p256_mod, p256_mp_mod);
|
|
/* 0xfffd */
|
|
sp_256_mont_mul_4(t3, t3, t1, p256_mod, p256_mp_mod);
|
|
/* 0xffff */
|
|
sp_256_mont_mul_4(t2, t2, t1, p256_mod, p256_mp_mod);
|
|
/* 0xffff0000 */
|
|
sp_256_mont_sqr_n_4(t1, t2, 16, p256_mod, p256_mp_mod);
|
|
/* 0xfffffffd */
|
|
sp_256_mont_mul_4(t3, t3, t1, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff */
|
|
sp_256_mont_mul_4(t2, t2, t1, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff00000000 */
|
|
sp_256_mont_sqr_n_4(t1, t2, 32, p256_mod, p256_mp_mod);
|
|
/* 0xffffffffffffffff */
|
|
sp_256_mont_mul_4(t2, t2, t1, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff00000001 */
|
|
sp_256_mont_mul_4(r, t1, a, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff000000010000000000000000000000000000000000000000 */
|
|
sp_256_mont_sqr_n_4(r, r, 160, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff00000001000000000000000000000000ffffffffffffffff */
|
|
sp_256_mont_mul_4(r, r, t2, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff00000001000000000000000000000000ffffffffffffffff00000000 */
|
|
sp_256_mont_sqr_n_4(r, r, 32, p256_mod, p256_mp_mod);
|
|
/* 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffd */
|
|
sp_256_mont_mul_4(r, r, t3, p256_mod, p256_mp_mod);
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_256_cmp_4(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 24\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[a], 16]\n\t"
|
|
"ldp x9, x10, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"and x12, x12, x4\n\t"
|
|
"subs x8, x8, x12\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"and x11, x11, x4\n\t"
|
|
"subs x7, x7, x11\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x10, x10, x4\n\t"
|
|
"subs x6, x6, x10\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x9, x9, x4\n\t"
|
|
"subs x5, x5, x9\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_256_norm_4(a)
|
|
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_256_cond_sub_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#define sp_256_mont_reduce_order_4 sp_256_mont_reduce_4
|
|
|
|
/* Reduce the number back to 256 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_256_mont_reduce_4(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x9, x10, [%[a], 0]\n\t"
|
|
"ldp x11, x12, [%[a], 16]\n\t"
|
|
"ldp x17, x19, [%[m], 0]\n\t"
|
|
"ldp x20, x21, [%[m], 16]\n\t"
|
|
"mov x8, xzr\n\t"
|
|
"# mu = a[0] * mp\n\t"
|
|
"mul x5, %[mp], x9\n\t"
|
|
"ldr x13, [%[a], 32]\n\t"
|
|
"# a[0+0] += m[0] * mu\n\t"
|
|
"mul x3, x17, x5\n\t"
|
|
"ldr x14, [%[a], 40]\n\t"
|
|
"umulh x6, x17, x5\n\t"
|
|
"ldr x15, [%[a], 48]\n\t"
|
|
"adds x9, x9, x3\n\t"
|
|
"ldr x16, [%[a], 56]\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[0+1] += m[1] * mu\n\t"
|
|
"mul x3, x19, x5\n\t"
|
|
"umulh x7, x19, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x10, x10, x3\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"# a[0+2] += m[2] * mu\n\t"
|
|
"mul x3, x20, x5\n\t"
|
|
"umulh x6, x20, x5\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x11, x11, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[0+3] += m[3] * mu\n\t"
|
|
"mul x3, x21, x5\n\t"
|
|
"umulh x4, x21, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"cset x8, cs\n\t"
|
|
"adds x12, x12, x3\n\t"
|
|
"adcs x13, x13, x4\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# mu = a[1] * mp\n\t"
|
|
"mul x5, %[mp], x10\n\t"
|
|
"# a[1+0] += m[0] * mu\n\t"
|
|
"mul x3, x17, x5\n\t"
|
|
"umulh x6, x17, x5\n\t"
|
|
"adds x10, x10, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[1+1] += m[1] * mu\n\t"
|
|
"mul x3, x19, x5\n\t"
|
|
"umulh x7, x19, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x11, x11, x3\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"# a[1+2] += m[2] * mu\n\t"
|
|
"mul x3, x20, x5\n\t"
|
|
"umulh x6, x20, x5\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x12, x12, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[1+3] += m[3] * mu\n\t"
|
|
"mul x3, x21, x5\n\t"
|
|
"umulh x4, x21, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"cset x8, cs\n\t"
|
|
"adds x13, x13, x3\n\t"
|
|
"adcs x14, x14, x4\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# mu = a[2] * mp\n\t"
|
|
"mul x5, %[mp], x11\n\t"
|
|
"# a[2+0] += m[0] * mu\n\t"
|
|
"mul x3, x17, x5\n\t"
|
|
"umulh x6, x17, x5\n\t"
|
|
"adds x11, x11, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[2+1] += m[1] * mu\n\t"
|
|
"mul x3, x19, x5\n\t"
|
|
"umulh x7, x19, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x12, x12, x3\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"# a[2+2] += m[2] * mu\n\t"
|
|
"mul x3, x20, x5\n\t"
|
|
"umulh x6, x20, x5\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x13, x13, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[2+3] += m[3] * mu\n\t"
|
|
"mul x3, x21, x5\n\t"
|
|
"umulh x4, x21, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"cset x8, cs\n\t"
|
|
"adds x14, x14, x3\n\t"
|
|
"adcs x15, x15, x4\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"# mu = a[3] * mp\n\t"
|
|
"mul x5, %[mp], x12\n\t"
|
|
"# a[3+0] += m[0] * mu\n\t"
|
|
"mul x3, x17, x5\n\t"
|
|
"umulh x6, x17, x5\n\t"
|
|
"adds x12, x12, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[3+1] += m[1] * mu\n\t"
|
|
"mul x3, x19, x5\n\t"
|
|
"umulh x7, x19, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"adds x13, x13, x3\n\t"
|
|
"adc x7, x7, xzr\n\t"
|
|
"# a[3+2] += m[2] * mu\n\t"
|
|
"mul x3, x20, x5\n\t"
|
|
"umulh x6, x20, x5\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x14, x14, x3\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"# a[3+3] += m[3] * mu\n\t"
|
|
"mul x3, x21, x5\n\t"
|
|
"umulh x4, x21, x5\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"cset x8, cs\n\t"
|
|
"adds x15, x15, x3\n\t"
|
|
"adcs x16, x16, x4\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"sub x3, xzr, x8\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"subs x13, x13, x17\n\t"
|
|
"sbcs x14, x14, x19\n\t"
|
|
"sbcs x15, x15, x20\n\t"
|
|
"stp x13, x14, [%[a], 0]\n\t"
|
|
"sbc x16, x16, x21\n\t"
|
|
"stp x15, x16, [%[a], 16]\n\t"
|
|
:
|
|
: [a] "r" (a), [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x3", "x4", "x5", "x8", "x6", "x7", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21"
|
|
);
|
|
}
|
|
|
|
/* Map the Montgomery form projective coordinate point to an affine point.
|
|
*
|
|
* r Resulting affine coordinate point.
|
|
* p Montgomery form projective coordinate point.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_256_map_4(sp_point_256* r, const sp_point_256* p,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*4;
|
|
sp_int64 n;
|
|
|
|
sp_256_mont_inv_4(t1, p->z, t + 2*4);
|
|
|
|
sp_256_mont_sqr_4(t2, t1, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t1, t2, t1, p256_mod, p256_mp_mod);
|
|
|
|
/* x /= z^2 */
|
|
sp_256_mont_mul_4(r->x, p->x, t2, p256_mod, p256_mp_mod);
|
|
XMEMSET(r->x + 4, 0, sizeof(r->x) / 2U);
|
|
sp_256_mont_reduce_4(r->x, p256_mod, p256_mp_mod);
|
|
/* Reduce x to less than modulus */
|
|
n = sp_256_cmp_4(r->x, p256_mod);
|
|
sp_256_cond_sub_4(r->x, r->x, p256_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_256_norm_4(r->x);
|
|
|
|
/* y /= z^3 */
|
|
sp_256_mont_mul_4(r->y, p->y, t1, p256_mod, p256_mp_mod);
|
|
XMEMSET(r->y + 4, 0, sizeof(r->y) / 2U);
|
|
sp_256_mont_reduce_4(r->y, p256_mod, p256_mp_mod);
|
|
/* Reduce y to less than modulus */
|
|
n = sp_256_cmp_4(r->y, p256_mod);
|
|
sp_256_cond_sub_4(r->y, r->y, p256_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_256_norm_4(r->y);
|
|
|
|
XMEMSET(r->z, 0, sizeof(r->z));
|
|
r->z[0] = 1;
|
|
|
|
}
|
|
|
|
/* Add two Montgomery form numbers (r = a + b % m).
|
|
*
|
|
* r Result of addition.
|
|
* a First number to add in Montgomery form.
|
|
* b Second number to add in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_add_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x8, x9, [%[b], 0]\n\t"
|
|
"adds x4, x4, x8\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"ldp x10, x11, [%[b], 16]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"adcs x7, x7, x11\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cs\n\t"
|
|
"subs x4, x4, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"sbcs x5, x5, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"sbcs x6, x6, xzr\n\t"
|
|
"stp x4, x5, [%[r],0]\n\t"
|
|
"sbc x7, x7, x13\n\t"
|
|
"stp x6, x7, [%[r],16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14"
|
|
);
|
|
}
|
|
|
|
/* Double a Montgomery form number (r = a + a % m).
|
|
*
|
|
* r Result of doubling.
|
|
* a Number to double in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_dbl_4(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a]]\n\t"
|
|
"ldp x5, x6, [%[a],16]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"mov x8, 0xffffffff00000001\n\t"
|
|
"csetm x9, cs\n\t"
|
|
"subs x3, x3, x9\n\t"
|
|
"lsr x7, x9, 32\n\t"
|
|
"sbcs x4, x4, x7\n\t"
|
|
"and x8, x8, x9\n\t"
|
|
"sbcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r],0]\n\t"
|
|
"sbc x6, x6, x8\n\t"
|
|
"stp x5, x6, [%[r],16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
(void)m;
|
|
}
|
|
|
|
/* Triple a Montgomery form number (r = a + a + a % m).
|
|
*
|
|
* r Result of Tripling.
|
|
* a Number to triple in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_tpl_4(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x10, x11, [%[a]]\n\t"
|
|
"adds x3, x10, x10\n\t"
|
|
"ldr x12, [%[a], 16]\n\t"
|
|
"adcs x4, x11, x11\n\t"
|
|
"ldr x13, [%[a], 24]\n\t"
|
|
"adcs x5, x12, x12\n\t"
|
|
"adcs x6, x13, x13\n\t"
|
|
"mov x8, 0xffffffff00000001\n\t"
|
|
"csetm x9, cs\n\t"
|
|
"subs x3, x3, x9\n\t"
|
|
"lsr x7, x9, 32\n\t"
|
|
"sbcs x4, x4, x7\n\t"
|
|
"and x8, x8, x9\n\t"
|
|
"sbcs x5, x5, xzr\n\t"
|
|
"sbc x6, x6, x8\n\t"
|
|
"adds x3, x3, x10\n\t"
|
|
"adcs x4, x4, x11\n\t"
|
|
"adcs x5, x5, x12\n\t"
|
|
"adcs x6, x6, x13\n\t"
|
|
"mov x8, 0xffffffff00000001\n\t"
|
|
"csetm x9, cs\n\t"
|
|
"subs x3, x3, x9\n\t"
|
|
"lsr x7, x9, 32\n\t"
|
|
"sbcs x4, x4, x7\n\t"
|
|
"and x8, x8, x9\n\t"
|
|
"sbcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbc x6, x6, x8\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x10", "x11", "x12", "x13", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
(void)m;
|
|
}
|
|
|
|
/* Subtract two Montgomery form numbers (r = a - b % m).
|
|
*
|
|
* r Result of subtration.
|
|
* a Number to subtract from in Montgomery form.
|
|
* b Number to subtract with in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_sub_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x8, x9, [%[b], 0]\n\t"
|
|
"subs x4, x4, x8\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"ldp x10, x11, [%[b], 16]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"sbcs x7, x7, x11\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cc\n\t"
|
|
"adds x4, x4, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"adcs x5, x5, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x4, x5, [%[r],0]\n\t"
|
|
"adc x7, x7, x13\n\t"
|
|
"stp x6, x7, [%[r],16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14"
|
|
);
|
|
}
|
|
|
|
/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m)
|
|
*
|
|
* r Result of division by 2.
|
|
* a Number to divide.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_div2_4(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"and x9, x3, 1\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sub x10, xzr, x9\n\t"
|
|
"lsr x7, x10, 32\n\t"
|
|
"adds x3, x3, x10\n\t"
|
|
"and x8, x10, 0xffffffff00000001\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"lsr x7, x4, 1\n\t"
|
|
"adcs x6, x6, x8\n\t"
|
|
"lsr x8, x5, 1\n\t"
|
|
"cset x9, cs\n\t"
|
|
"lsr x10, x6, 1\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"orr x4, x7, x5, lsl 63\n\t"
|
|
"orr x5, x8, x6, lsl 63\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"orr x6, x10, x9, lsl 63\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p.
|
|
*
|
|
* r Result of doubling point.
|
|
* p Point to double.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_256_proj_point_dbl_4_ctx {
|
|
int state;
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_256_proj_point_dbl_4_ctx;
|
|
|
|
static int sp_256_proj_point_dbl_4_nb(sp_ecc_ctx_t* sp_ctx, sp_point_256* r, const sp_point_256* p, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_256_proj_point_dbl_4_ctx* ctx = (sp_256_proj_point_dbl_4_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_256_proj_point_dbl_4_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0:
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*4;
|
|
ctx->x = r->x;
|
|
ctx->y = r->y;
|
|
ctx->z = r->z;
|
|
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* T1 = Z * Z */
|
|
sp_256_mont_sqr_4(ctx->t1, p->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 2;
|
|
break;
|
|
case 2:
|
|
/* Z = Y * Z */
|
|
sp_256_mont_mul_4(ctx->z, p->y, p->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 3;
|
|
break;
|
|
case 3:
|
|
/* Z = 2Z */
|
|
sp_256_mont_dbl_4(ctx->z, ctx->z, p256_mod);
|
|
ctx->state = 4;
|
|
break;
|
|
case 4:
|
|
/* T2 = X - T1 */
|
|
sp_256_mont_sub_4(ctx->t2, p->x, ctx->t1, p256_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
/* T1 = X + T1 */
|
|
sp_256_mont_add_4(ctx->t1, p->x, ctx->t1, p256_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
/* T2 = T1 * T2 */
|
|
sp_256_mont_mul_4(ctx->t2, ctx->t1, ctx->t2, p256_mod, p256_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* T1 = 3T2 */
|
|
sp_256_mont_tpl_4(ctx->t1, ctx->t2, p256_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
/* Y = 2Y */
|
|
sp_256_mont_dbl_4(ctx->y, p->y, p256_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
/* Y = Y * Y */
|
|
sp_256_mont_sqr_4(ctx->y, ctx->y, p256_mod, p256_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* T2 = Y * Y */
|
|
sp_256_mont_sqr_4(ctx->t2, ctx->y, p256_mod, p256_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* T2 = T2/2 */
|
|
sp_256_div2_4(ctx->t2, ctx->t2, p256_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* Y = Y * X */
|
|
sp_256_mont_mul_4(ctx->y, ctx->y, p->x, p256_mod, p256_mp_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* X = T1 * T1 */
|
|
sp_256_mont_sqr_4(ctx->x, ctx->t1, p256_mod, p256_mp_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* X = X - Y */
|
|
sp_256_mont_sub_4(ctx->x, ctx->x, ctx->y, p256_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
/* X = X - Y */
|
|
sp_256_mont_sub_4(ctx->x, ctx->x, ctx->y, p256_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* Y = Y - X */
|
|
sp_256_mont_sub_4(ctx->y, ctx->y, ctx->x, p256_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
/* Y = Y * T1 */
|
|
sp_256_mont_mul_4(ctx->y, ctx->y, ctx->t1, p256_mod, p256_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
/* Y = Y - T2 */
|
|
sp_256_mont_sub_4(ctx->y, ctx->y, ctx->t2, p256_mod);
|
|
ctx->state = 19;
|
|
/* fall-through */
|
|
case 19:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 19) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_256_proj_point_dbl_4(sp_point_256* r, const sp_point_256* p, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*4;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = r->x;
|
|
y = r->y;
|
|
z = r->z;
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
|
|
/* T1 = Z * Z */
|
|
sp_256_mont_sqr_4(t1, p->z, p256_mod, p256_mp_mod);
|
|
/* Z = Y * Z */
|
|
sp_256_mont_mul_4(z, p->y, p->z, p256_mod, p256_mp_mod);
|
|
/* Z = 2Z */
|
|
sp_256_mont_dbl_4(z, z, p256_mod);
|
|
/* T2 = X - T1 */
|
|
sp_256_mont_sub_4(t2, p->x, t1, p256_mod);
|
|
/* T1 = X + T1 */
|
|
sp_256_mont_add_4(t1, p->x, t1, p256_mod);
|
|
/* T2 = T1 * T2 */
|
|
sp_256_mont_mul_4(t2, t1, t2, p256_mod, p256_mp_mod);
|
|
/* T1 = 3T2 */
|
|
sp_256_mont_tpl_4(t1, t2, p256_mod);
|
|
/* Y = 2Y */
|
|
sp_256_mont_dbl_4(y, p->y, p256_mod);
|
|
/* Y = Y * Y */
|
|
sp_256_mont_sqr_4(y, y, p256_mod, p256_mp_mod);
|
|
/* T2 = Y * Y */
|
|
sp_256_mont_sqr_4(t2, y, p256_mod, p256_mp_mod);
|
|
/* T2 = T2/2 */
|
|
sp_256_div2_4(t2, t2, p256_mod);
|
|
/* Y = Y * X */
|
|
sp_256_mont_mul_4(y, y, p->x, p256_mod, p256_mp_mod);
|
|
/* X = T1 * T1 */
|
|
sp_256_mont_sqr_4(x, t1, p256_mod, p256_mp_mod);
|
|
/* X = X - Y */
|
|
sp_256_mont_sub_4(x, x, y, p256_mod);
|
|
/* X = X - Y */
|
|
sp_256_mont_sub_4(x, x, y, p256_mod);
|
|
/* Y = Y - X */
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
/* Y = Y * T1 */
|
|
sp_256_mont_mul_4(y, y, t1, p256_mod, p256_mp_mod);
|
|
/* Y = Y - T2 */
|
|
sp_256_mont_sub_4(y, y, t2, p256_mod);
|
|
}
|
|
|
|
/* Subtract two Montgomery form numbers (r = a - b % m).
|
|
*
|
|
* r Result of subtration.
|
|
* a Number to subtract from in Montgomery form.
|
|
* b Number to subtract with in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_sub_dbl_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x8, x9, [%[b]]\n\t"
|
|
"ldp x10, x11, [%[b],16]\n\t"
|
|
"adds x8, x8, x8\n\t"
|
|
"ldp x4, x5, [%[a]]\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"ldp x6, x7, [%[a],16]\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cs\n\t"
|
|
"subs x8, x8, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"sbcs x9, x9, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"sbcs x10, x10, xzr\n\t"
|
|
"sbc x11, x11, x13\n\t"
|
|
"subs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"sbcs x7, x7, x11\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cc\n\t"
|
|
"adds x4, x4, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"adcs x5, x5, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x4, x5, [%[r],0]\n\t"
|
|
"adc x7, x7, x13\n\t"
|
|
"stp x6, x7, [%[r],16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14"
|
|
);
|
|
}
|
|
|
|
/* Subtract two Montgomery form numbers (r = a - b % m).
|
|
*
|
|
* r Result of subtration.
|
|
* a Number to subtract from in Montgomery form.
|
|
* b Number to subtract with in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_256_mont_dbl_sub_4(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a]]\n\t"
|
|
"ldp x6, x7, [%[a],16]\n\t"
|
|
"adds x4, x4, x4\n\t"
|
|
"ldp x8, x9, [%[b]]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"ldp x10, x11, [%[b],16]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cs\n\t"
|
|
"subs x4, x4, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"sbcs x5, x5, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"sbcs x6, x6, xzr\n\t"
|
|
"sbc x7, x7, x13\n\t"
|
|
"subs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"sbcs x7, x7, x11\n\t"
|
|
"mov x13, 0xffffffff00000001\n\t"
|
|
"csetm x14, cc\n\t"
|
|
"adds x4, x4, x14\n\t"
|
|
"lsr x12, x14, 32\n\t"
|
|
"adcs x5, x5, x12\n\t"
|
|
"and x13, x13, x14\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x4, x5, [%[r],0]\n\t"
|
|
"adc x7, x7, x13\n\t"
|
|
"stp x6, x7, [%[r],16]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14"
|
|
);
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_256_proj_point_dbl_n_4(sp_point_256* p, int n,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*4;
|
|
sp_digit* b = t + 4*4;
|
|
sp_digit* t1 = t + 6*4;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = p->x;
|
|
y = p->y;
|
|
z = p->z;
|
|
|
|
/* Y = 2*Y */
|
|
sp_256_mont_dbl_4(y, y, p256_mod);
|
|
/* W = Z^4 */
|
|
sp_256_mont_sqr_4(w, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(w, w, p256_mod, p256_mp_mod);
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
while (--n > 0)
|
|
#else
|
|
while (--n >= 0)
|
|
#endif
|
|
{
|
|
/* A = 3*(X^2 - W) */
|
|
sp_256_mont_sqr_4(t1, x, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(t1, t1, w, p256_mod);
|
|
sp_256_mont_tpl_4(a, t1, p256_mod);
|
|
/* B = X*Y^2 */
|
|
sp_256_mont_sqr_4(t1, y, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(b, t1, x, p256_mod, p256_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_256_mont_sqr_4(x, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_dbl_4(x, x, b, p256_mod);
|
|
/* Z = Z*Y */
|
|
sp_256_mont_mul_4(z, z, y, p256_mod, p256_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_256_mont_sqr_4(t1, t1, p256_mod, p256_mp_mod);
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
if (n != 0)
|
|
#endif
|
|
{
|
|
/* W = W*Y^4 */
|
|
sp_256_mont_mul_4(w, w, t1, p256_mod, p256_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_256_mont_sub_4(y, b, x, p256_mod);
|
|
sp_256_mont_mul_4(y, y, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_dbl_sub_4(y, y, t1, p256_mod);
|
|
}
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* A = 3*(X^2 - W) */
|
|
sp_256_mont_sqr_4(t1, x, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(t1, t1, w, p256_mod);
|
|
sp_256_mont_tpl_4(a, t1, p256_mod);
|
|
/* B = X*Y^2 */
|
|
sp_256_mont_sqr_4(t1, y, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(b, t1, x, p256_mod, p256_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_256_mont_sqr_4(x, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_dbl_4(x, x, b, p256_mod);
|
|
/* Z = Z*Y */
|
|
sp_256_mont_mul_4(z, z, y, p256_mod, p256_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_256_mont_sqr_4(t1, t1, p256_mod, p256_mp_mod);
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_256_mont_sub_4(y, b, x, p256_mod);
|
|
sp_256_mont_mul_4(y, y, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_dbl_sub_4(y, y, t1, p256_mod);
|
|
#endif
|
|
/* Y = Y/2 */
|
|
sp_256_div2_4(y, y, p256_mod);
|
|
}
|
|
|
|
/* Compare two numbers to determine if they are equal.
|
|
* Constant time implementation.
|
|
*
|
|
* a First number to compare.
|
|
* b Second number to compare.
|
|
* returns 1 when equal and 0 otherwise.
|
|
*/
|
|
static int sp_256_cmp_equal_4(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]) |
|
|
(a[3] ^ b[3])) == 0;
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_256_proj_point_add_4_ctx {
|
|
int state;
|
|
sp_256_proj_point_dbl_4_ctx dbl_ctx;
|
|
const sp_point_256* ap[2];
|
|
sp_point_256* rp[2];
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* t3;
|
|
sp_digit* t4;
|
|
sp_digit* t5;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_256_proj_point_add_4_ctx;
|
|
|
|
static int sp_256_proj_point_add_4_nb(sp_ecc_ctx_t* sp_ctx, sp_point_256* r,
|
|
const sp_point_256* p, const sp_point_256* q, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_256_proj_point_add_4_ctx* ctx = (sp_256_proj_point_add_4_ctx*)sp_ctx->data;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_256* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
typedef char ctx_size_test[sizeof(sp_256_proj_point_add_4_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*4;
|
|
ctx->t3 = t + 4*4;
|
|
ctx->t4 = t + 6*4;
|
|
ctx->t5 = t + 8*4;
|
|
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* Check double */
|
|
(void)sp_256_sub_4(ctx->t1, p256_mod, q->y);
|
|
sp_256_norm_4(ctx->t1);
|
|
if ((sp_256_cmp_equal_4(p->x, q->x) & sp_256_cmp_equal_4(p->z, q->z) &
|
|
(sp_256_cmp_equal_4(p->y, q->y) | sp_256_cmp_equal_4(p->y, ctx->t1))) != 0)
|
|
{
|
|
XMEMSET(&ctx->dbl_ctx, 0, sizeof(ctx->dbl_ctx));
|
|
ctx->state = 2;
|
|
}
|
|
else {
|
|
ctx->state = 3;
|
|
}
|
|
break;
|
|
case 2:
|
|
err = sp_256_proj_point_dbl_4_nb((sp_ecc_ctx_t*)&ctx->dbl_ctx, r, p, t);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 27; /* done */
|
|
break;
|
|
case 3:
|
|
{
|
|
int i;
|
|
ctx->rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
ctx->rp[1] = (sp_point_256*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(ctx->rp[1], 0, sizeof(sp_point_256));
|
|
ctx->x = ctx->rp[p->infinity | q->infinity]->x;
|
|
ctx->y = ctx->rp[p->infinity | q->infinity]->y;
|
|
ctx->z = ctx->rp[p->infinity | q->infinity]->z;
|
|
|
|
ctx->ap[0] = p;
|
|
ctx->ap[1] = q;
|
|
for (i=0; i<4; i++) {
|
|
r->x[i] = ctx->ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->y[i] = ctx->ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->z[i] = ctx->ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ctx->ap[p->infinity]->infinity;
|
|
|
|
ctx->state = 4;
|
|
break;
|
|
}
|
|
case 4:
|
|
/* U1 = X1*Z2^2 */
|
|
sp_256_mont_sqr_4(ctx->t1, q->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
sp_256_mont_mul_4(ctx->t3, ctx->t1, q->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
sp_256_mont_mul_4(ctx->t1, ctx->t1, ctx->x, p256_mod, p256_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* U2 = X2*Z1^2 */
|
|
sp_256_mont_sqr_4(ctx->t2, ctx->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
sp_256_mont_mul_4(ctx->t4, ctx->t2, ctx->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
sp_256_mont_mul_4(ctx->t2, ctx->t2, q->x, p256_mod, p256_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_256_mont_mul_4(ctx->t3, ctx->t3, ctx->y, p256_mod, p256_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_256_mont_mul_4(ctx->t4, ctx->t4, q->y, p256_mod, p256_mp_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* H = U2 - U1 */
|
|
sp_256_mont_sub_4(ctx->t2, ctx->t2, ctx->t1, p256_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* R = S2 - S1 */
|
|
sp_256_mont_sub_4(ctx->t4, ctx->t4, ctx->t3, p256_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_256_mont_mul_4(ctx->z, ctx->z, q->z, p256_mod, p256_mp_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
sp_256_mont_mul_4(ctx->z, ctx->z, ctx->t2, p256_mod, p256_mp_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_256_mont_sqr_4(ctx->x, ctx->t4, p256_mod, p256_mp_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
sp_256_mont_sqr_4(ctx->t5, ctx->t2, p256_mod, p256_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
sp_256_mont_mul_4(ctx->y, ctx->t1, ctx->t5, p256_mod, p256_mp_mod);
|
|
ctx->state = 19;
|
|
break;
|
|
case 19:
|
|
sp_256_mont_mul_4(ctx->t5, ctx->t5, ctx->t2, p256_mod, p256_mp_mod);
|
|
ctx->state = 20;
|
|
break;
|
|
case 20:
|
|
sp_256_mont_sub_4(ctx->x, ctx->x, ctx->t5, p256_mod);
|
|
ctx->state = 21;
|
|
break;
|
|
case 21:
|
|
sp_256_mont_dbl_4(ctx->t1, ctx->y, p256_mod);
|
|
ctx->state = 22;
|
|
break;
|
|
case 22:
|
|
sp_256_mont_sub_4(ctx->x, ctx->x, ctx->t1, p256_mod);
|
|
ctx->state = 23;
|
|
break;
|
|
case 23:
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_256_mont_sub_4(ctx->y, ctx->y, ctx->x, p256_mod);
|
|
ctx->state = 24;
|
|
break;
|
|
case 24:
|
|
sp_256_mont_mul_4(ctx->y, ctx->y, ctx->t4, p256_mod, p256_mp_mod);
|
|
ctx->state = 25;
|
|
break;
|
|
case 25:
|
|
sp_256_mont_mul_4(ctx->t5, ctx->t5, ctx->t3, p256_mod, p256_mp_mod);
|
|
ctx->state = 26;
|
|
break;
|
|
case 26:
|
|
sp_256_mont_sub_4(ctx->y, ctx->y, ctx->t5, p256_mod);
|
|
ctx->state = 27;
|
|
/* fall-through */
|
|
case 27:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 27) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_256_proj_point_add_4(sp_point_256* r,
|
|
const sp_point_256* p, const sp_point_256* q, sp_digit* t)
|
|
{
|
|
const sp_point_256* ap[2];
|
|
sp_point_256* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*4;
|
|
sp_digit* t3 = t + 4*4;
|
|
sp_digit* t4 = t + 6*4;
|
|
sp_digit* t5 = t + 8*4;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_256* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
/* Check double */
|
|
(void)sp_256_sub_4(t1, p256_mod, q->y);
|
|
sp_256_norm_4(t1);
|
|
if ((sp_256_cmp_equal_4(p->x, q->x) & sp_256_cmp_equal_4(p->z, q->z) &
|
|
(sp_256_cmp_equal_4(p->y, q->y) | sp_256_cmp_equal_4(p->y, t1))) != 0) {
|
|
sp_256_proj_point_dbl_4(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_256*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_256));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<4; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_256_mont_sqr_4(t1, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t3, t1, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t1, t1, x, p256_mod, p256_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_256_mont_sqr_4(t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t4, t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t2, t2, q->x, p256_mod, p256_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_256_mont_mul_4(t3, t3, y, p256_mod, p256_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_256_mont_mul_4(t4, t4, q->y, p256_mod, p256_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_256_mont_sub_4(t2, t2, t1, p256_mod);
|
|
/* R = S2 - S1 */
|
|
sp_256_mont_sub_4(t4, t4, t3, p256_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_256_mont_mul_4(z, z, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(z, z, t2, p256_mod, p256_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_256_mont_sqr_4(x, t4, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(y, t1, t5, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(x, x, t5, p256_mod);
|
|
sp_256_mont_dbl_4(t1, y, p256_mod);
|
|
sp_256_mont_sub_4(x, x, t1, p256_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
sp_256_mont_mul_4(y, y, t4, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, t3, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(y, y, t5, p256_mod);
|
|
}
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_256_proj_point_dbl_n_store_4(sp_point_256* r,
|
|
const sp_point_256* p, int n, int m, sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*4;
|
|
sp_digit* b = t + 4*4;
|
|
sp_digit* t1 = t + 6*4;
|
|
sp_digit* t2 = t + 8*4;
|
|
sp_digit* x = r[2*m].x;
|
|
sp_digit* y = r[(1<<n)*m].y;
|
|
sp_digit* z = r[2*m].z;
|
|
int i;
|
|
int j;
|
|
|
|
for (i=0; i<4; i++) {
|
|
x[i] = p->x[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
y[i] = p->y[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
z[i] = p->z[i];
|
|
}
|
|
|
|
/* Y = 2*Y */
|
|
sp_256_mont_dbl_4(y, y, p256_mod);
|
|
/* W = Z^4 */
|
|
sp_256_mont_sqr_4(w, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(w, w, p256_mod, p256_mp_mod);
|
|
j = m;
|
|
for (i=1; i<=n; i++) {
|
|
j *= 2;
|
|
|
|
/* A = 3*(X^2 - W) */
|
|
sp_256_mont_sqr_4(t1, x, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(t1, t1, w, p256_mod);
|
|
sp_256_mont_tpl_4(a, t1, p256_mod);
|
|
/* B = X*Y^2 */
|
|
sp_256_mont_sqr_4(t2, y, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(b, t2, x, p256_mod, p256_mp_mod);
|
|
x = r[j].x;
|
|
/* X = A^2 - 2B */
|
|
sp_256_mont_sqr_4(x, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_dbl_4(t1, b, p256_mod);
|
|
sp_256_mont_sub_4(x, x, t1, p256_mod);
|
|
/* Z = Z*Y */
|
|
sp_256_mont_mul_4(r[j].z, z, y, p256_mod, p256_mp_mod);
|
|
z = r[j].z;
|
|
/* t2 = Y^4 */
|
|
sp_256_mont_sqr_4(t2, t2, p256_mod, p256_mp_mod);
|
|
if (i != n) {
|
|
/* W = W*Y^4 */
|
|
sp_256_mont_mul_4(w, w, t2, p256_mod, p256_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_256_mont_sub_4(y, b, x, p256_mod);
|
|
sp_256_mont_mul_4(y, y, a, p256_mod, p256_mp_mod);
|
|
sp_256_mont_dbl_4(y, y, p256_mod);
|
|
sp_256_mont_sub_4(y, y, t2, p256_mod);
|
|
|
|
/* Y = Y/2 */
|
|
sp_256_div2_4(r[j].y, y, p256_mod);
|
|
r[j].infinity = 0;
|
|
}
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* ra Result of addition.
|
|
* rs Result of subtraction.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_256_proj_point_add_sub_4(sp_point_256* ra,
|
|
sp_point_256* rs, const sp_point_256* p, const sp_point_256* q,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*4;
|
|
sp_digit* t3 = t + 4*4;
|
|
sp_digit* t4 = t + 6*4;
|
|
sp_digit* t5 = t + 8*4;
|
|
sp_digit* t6 = t + 10*4;
|
|
sp_digit* x = ra->x;
|
|
sp_digit* y = ra->y;
|
|
sp_digit* z = ra->z;
|
|
sp_digit* xs = rs->x;
|
|
sp_digit* ys = rs->y;
|
|
sp_digit* zs = rs->z;
|
|
|
|
|
|
XMEMCPY(x, p->x, sizeof(p->x) / 2);
|
|
XMEMCPY(y, p->y, sizeof(p->y) / 2);
|
|
XMEMCPY(z, p->z, sizeof(p->z) / 2);
|
|
ra->infinity = 0;
|
|
rs->infinity = 0;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_256_mont_sqr_4(t1, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t3, t1, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t1, t1, x, p256_mod, p256_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_256_mont_sqr_4(t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t4, t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t2, t2, q->x, p256_mod, p256_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_256_mont_mul_4(t3, t3, y, p256_mod, p256_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_256_mont_mul_4(t4, t4, q->y, p256_mod, p256_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_256_mont_sub_4(t2, t2, t1, p256_mod);
|
|
/* RS = S2 + S1 */
|
|
sp_256_mont_add_4(t6, t4, t3, p256_mod);
|
|
/* R = S2 - S1 */
|
|
sp_256_mont_sub_4(t4, t4, t3, p256_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
/* ZS = H*Z1*Z2 */
|
|
sp_256_mont_mul_4(z, z, q->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(z, z, t2, p256_mod, p256_mp_mod);
|
|
XMEMCPY(zs, z, sizeof(p->z)/2);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
/* XS = RS^2 - H^3 - 2*U1*H^2 */
|
|
sp_256_mont_sqr_4(x, t4, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(xs, t6, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(y, t1, t5, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(x, x, t5, p256_mod);
|
|
sp_256_mont_sub_4(xs, xs, t5, p256_mod);
|
|
sp_256_mont_dbl_4(t1, y, p256_mod);
|
|
sp_256_mont_sub_4(x, x, t1, p256_mod);
|
|
sp_256_mont_sub_4(xs, xs, t1, p256_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
/* YS = -RS*(U1*H^2 - XS) - S1*H^3 */
|
|
sp_256_mont_sub_4(ys, y, xs, p256_mod);
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
sp_256_mont_mul_4(y, y, t4, p256_mod, p256_mp_mod);
|
|
sp_256_sub_4(t6, p256_mod, t6);
|
|
sp_256_mont_mul_4(ys, ys, t6, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, t3, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(y, y, t5, p256_mod);
|
|
sp_256_mont_sub_4(ys, ys, t5, p256_mod);
|
|
}
|
|
|
|
/* Structure used to describe recoding of scalar multiplication. */
|
|
typedef struct ecc_recode_256 {
|
|
/* Index into pre-computation table. */
|
|
uint8_t i;
|
|
/* Use the negative of the point. */
|
|
uint8_t neg;
|
|
} ecc_recode_256;
|
|
|
|
/* The index into pre-computation table to use. */
|
|
static const uint8_t recode_index_4_6[66] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
|
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
|
|
0, 1,
|
|
};
|
|
|
|
/* Whether to negate y-ordinate. */
|
|
static const uint8_t recode_neg_4_6[66] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
0, 0,
|
|
};
|
|
|
|
/* Recode the scalar for multiplication using pre-computed values and
|
|
* subtraction.
|
|
*
|
|
* k Scalar to multiply by.
|
|
* v Vector of operations to perform.
|
|
*/
|
|
static void sp_256_ecc_recode_6_4(const sp_digit* k, ecc_recode_256* v)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint8_t y;
|
|
int carry = 0;
|
|
int o;
|
|
sp_digit n;
|
|
|
|
j = 0;
|
|
n = k[j];
|
|
o = 0;
|
|
for (i=0; i<43; i++) {
|
|
y = (int8_t)n;
|
|
if (o + 6 < 64) {
|
|
y &= 0x3f;
|
|
n >>= 6;
|
|
o += 6;
|
|
}
|
|
else if (o + 6 == 64) {
|
|
n >>= 6;
|
|
if (++j < 4)
|
|
n = k[j];
|
|
o = 0;
|
|
}
|
|
else if (++j < 4) {
|
|
n = k[j];
|
|
y |= (uint8_t)((n << (64 - o)) & 0x3f);
|
|
o -= 58;
|
|
n >>= o;
|
|
}
|
|
|
|
y += (uint8_t)carry;
|
|
v[i].i = recode_index_4_6[y];
|
|
v[i].neg = recode_neg_4_6[y];
|
|
carry = (y >> 6) + v[i].neg;
|
|
}
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible point that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_256_get_point_33_4(sp_point_256* r, const sp_point_256* table,
|
|
int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
r->z[0] = 0;
|
|
r->z[1] = 0;
|
|
r->z[2] = 0;
|
|
r->z[3] = 0;
|
|
for (i = 1; i < 33; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
r->z[0] |= mask & table[i].z[0];
|
|
r->z[1] |= mask & table[i].z[1];
|
|
r->z[2] |= mask & table[i].z[2];
|
|
r->z[3] |= mask & table[i].z[3];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Window technique of 6 bits. (Add-Sub variation.)
|
|
* Calculate 0..32 times the point. Use function that adds and
|
|
* subtracts the same two points.
|
|
* Recode to add or subtract one of the computed points.
|
|
* Double to push up.
|
|
* NOT a sliding window.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_win_add_sub_4(sp_point_256* r, const sp_point_256* g,
|
|
const sp_digit* k, int map, int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* t = NULL;
|
|
sp_digit* tmp = NULL;
|
|
#else
|
|
sp_point_256 t[33+2];
|
|
sp_digit tmp[2 * 4 * 6];
|
|
#endif
|
|
sp_point_256* rt = NULL;
|
|
sp_point_256* p = NULL;
|
|
sp_digit* negy;
|
|
int i;
|
|
ecc_recode_256 v[43];
|
|
int err = MP_OKAY;
|
|
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_256*)XMALLOC(sizeof(sp_point_256) *
|
|
(33+2), heap, DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 6,
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
rt = t + 33;
|
|
p = t + 33+1;
|
|
|
|
/* t[0] = {0, 0, 1} * norm */
|
|
XMEMSET(&t[0], 0, sizeof(t[0]));
|
|
t[0].infinity = 1;
|
|
/* t[1] = {g->x, g->y, g->z} * norm */
|
|
err = sp_256_mod_mul_norm_4(t[1].x, g->x, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t[1].y, g->y, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t[1].z, g->z, p256_mod);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
t[1].infinity = 0;
|
|
/* t[2] ... t[32] */
|
|
sp_256_proj_point_dbl_n_store_4(t, &t[ 1], 5, 1, tmp);
|
|
sp_256_proj_point_add_4(&t[ 3], &t[ 2], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[ 6], &t[ 3], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[ 7], &t[ 5], &t[ 6], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[10], &t[ 5], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[11], &t[ 9], &t[10], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[12], &t[ 6], tmp);
|
|
sp_256_proj_point_dbl_4(&t[14], &t[ 7], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[15], &t[13], &t[14], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[18], &t[ 9], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[19], &t[17], &t[18], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[20], &t[10], tmp);
|
|
sp_256_proj_point_dbl_4(&t[22], &t[11], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[23], &t[21], &t[22], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[24], &t[12], tmp);
|
|
sp_256_proj_point_dbl_4(&t[26], &t[13], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[27], &t[25], &t[26], &t[ 1], tmp);
|
|
sp_256_proj_point_dbl_4(&t[28], &t[14], tmp);
|
|
sp_256_proj_point_dbl_4(&t[30], &t[15], tmp);
|
|
sp_256_proj_point_add_sub_4(&t[31], &t[29], &t[30], &t[ 1], tmp);
|
|
|
|
negy = t[0].y;
|
|
|
|
sp_256_ecc_recode_6_4(k, v);
|
|
|
|
i = 42;
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_point_33_4(rt, t, v[i].i);
|
|
rt->infinity = !v[i].i;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt, &t[v[i].i], sizeof(sp_point_256));
|
|
}
|
|
for (--i; i>=0; i--) {
|
|
sp_256_proj_point_dbl_n_4(rt, 6, tmp);
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_point_33_4(p, t, v[i].i);
|
|
p->infinity = !v[i].i;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p, &t[v[i].i], sizeof(sp_point_256));
|
|
}
|
|
sp_256_sub_4(negy, p256_mod, p->y);
|
|
sp_256_norm_4(negy);
|
|
sp_256_cond_copy_4(p->y, negy, (sp_digit)0 - v[i].neg);
|
|
sp_256_proj_point_add_4(rt, rt, p, tmp);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_256_map_4(r, rt, tmp);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_256));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp != NULL)
|
|
XFREE(tmp, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* A table entry for pre-computed points. */
|
|
typedef struct sp_table_entry_256 {
|
|
sp_digit x[4];
|
|
sp_digit y[4];
|
|
} sp_table_entry_256;
|
|
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
/* Add two Montgomery form projective points. The second point has a q value of
|
|
* one.
|
|
* Only the first point can be the same pointer as the result point.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_256_proj_point_add_qz1_4(sp_point_256* r, const sp_point_256* p,
|
|
const sp_point_256* q, sp_digit* t)
|
|
{
|
|
const sp_point_256* ap[2];
|
|
sp_point_256* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*4;
|
|
sp_digit* t3 = t + 4*4;
|
|
sp_digit* t4 = t + 6*4;
|
|
sp_digit* t5 = t + 8*4;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Check double */
|
|
(void)sp_256_sub_4(t1, p256_mod, q->y);
|
|
sp_256_norm_4(t1);
|
|
if ((sp_256_cmp_equal_4(p->x, q->x) & sp_256_cmp_equal_4(p->z, q->z) &
|
|
(sp_256_cmp_equal_4(p->y, q->y) | sp_256_cmp_equal_4(p->y, t1))) != 0) {
|
|
sp_256_proj_point_dbl_4(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_256*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_256));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<4; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<4; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U2 = X2*Z1^2 */
|
|
sp_256_mont_sqr_4(t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t4, t2, z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t2, t2, q->x, p256_mod, p256_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_256_mont_mul_4(t4, t4, q->y, p256_mod, p256_mp_mod);
|
|
/* H = U2 - X1 */
|
|
sp_256_mont_sub_4(t2, t2, x, p256_mod);
|
|
/* R = S2 - Y1 */
|
|
sp_256_mont_sub_4(t4, t4, y, p256_mod);
|
|
/* Z3 = H*Z1 */
|
|
sp_256_mont_mul_4(z, z, t2, p256_mod, p256_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*X1*H^2 */
|
|
sp_256_mont_sqr_4(t1, t4, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_4(t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t3, x, t5, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(x, t1, t5, p256_mod);
|
|
sp_256_mont_dbl_4(t1, t3, p256_mod);
|
|
sp_256_mont_sub_4(x, x, t1, p256_mod);
|
|
/* Y3 = R*(X1*H^2 - X3) - Y1*H^3 */
|
|
sp_256_mont_sub_4(t3, t3, x, p256_mod);
|
|
sp_256_mont_mul_4(t3, t3, t4, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t5, t5, y, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sub_4(y, t3, t5, p256_mod);
|
|
}
|
|
}
|
|
|
|
#ifdef FP_ECC
|
|
/* Convert the projective point to affine.
|
|
* Ordinates are in Montgomery form.
|
|
*
|
|
* a Point to convert.
|
|
* t Temporary data.
|
|
*/
|
|
static void sp_256_proj_to_affine_4(sp_point_256* a, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 4;
|
|
sp_digit* tmp = t + 4 * 4;
|
|
|
|
sp_256_mont_inv_4(t1, a->z, tmp);
|
|
|
|
sp_256_mont_sqr_4(t2, t1, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(t1, t2, t1, p256_mod, p256_mp_mod);
|
|
|
|
sp_256_mont_mul_4(a->x, a->x, t2, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(a->y, a->y, t1, p256_mod, p256_mp_mod);
|
|
XMEMCPY(a->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
}
|
|
|
|
/* Generate the pre-computed table of points for the base point.
|
|
*
|
|
* width = 6
|
|
* 64 entries
|
|
* 42 bits between
|
|
*
|
|
* a The base point.
|
|
* table Place to store generated point data.
|
|
* tmp Temporary data.
|
|
* heap Heap to use for allocation.
|
|
*/
|
|
static int sp_256_gen_stripe_table_4(const sp_point_256* a,
|
|
sp_table_entry_256* table, sp_digit* tmp, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* t = NULL;
|
|
#else
|
|
sp_point_256 t[3];
|
|
#endif
|
|
sp_point_256* s1 = NULL;
|
|
sp_point_256* s2 = NULL;
|
|
int i;
|
|
int j;
|
|
int err = MP_OKAY;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 3, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
s1 = t + 1;
|
|
s2 = t + 2;
|
|
|
|
err = sp_256_mod_mul_norm_4(t->x, a->x, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t->y, a->y, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t->z, a->z, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t->infinity = 0;
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
|
|
XMEMCPY(s1->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
s1->infinity = 0;
|
|
XMEMCPY(s2->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
s2->infinity = 0;
|
|
|
|
/* table[0] = {0, 0, infinity} */
|
|
XMEMSET(&table[0], 0, sizeof(sp_table_entry_256));
|
|
/* table[1] = Affine version of 'a' in Montgomery form */
|
|
XMEMCPY(table[1].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1].y, t->y, sizeof(table->y));
|
|
|
|
for (i=1; i<6; i++) {
|
|
sp_256_proj_point_dbl_n_4(t, 43, tmp);
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
XMEMCPY(table[1<<i].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1<<i].y, t->y, sizeof(table->y));
|
|
}
|
|
|
|
for (i=1; i<6; i++) {
|
|
XMEMCPY(s1->x, table[1<<i].x, sizeof(table->x));
|
|
XMEMCPY(s1->y, table[1<<i].y, sizeof(table->y));
|
|
for (j=(1<<i)+1; j<(1<<(i+1)); j++) {
|
|
XMEMCPY(s2->x, table[j-(1<<i)].x, sizeof(table->x));
|
|
XMEMCPY(s2->y, table[j-(1<<i)].y, sizeof(table->y));
|
|
sp_256_proj_point_add_qz1_4(t, s1, s2, tmp);
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
XMEMCPY(table[j].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[j].y, t->y, sizeof(table->y));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC */
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_256_get_entry_64_4(sp_point_256* r,
|
|
const sp_table_entry_256* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
for (i = 1; i < 64; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^42, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 6 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_stripe_4(sp_point_256* r, const sp_point_256* g,
|
|
const sp_table_entry_256* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* rt = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_256 rt[2];
|
|
sp_digit t[2 * 4 * 5];
|
|
#endif
|
|
sp_point_256* p = NULL;
|
|
int i;
|
|
int j;
|
|
int y;
|
|
int x;
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 5, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = rt + 1;
|
|
|
|
XMEMCPY(p->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
XMEMCPY(rt->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
|
|
y = 0;
|
|
x = 42;
|
|
for (j=0; j<6 && x<256; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 43;
|
|
}
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_64_4(rt, table, y);
|
|
} else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(rt->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
rt->infinity = !y;
|
|
for (i=41; i>=0; i--) {
|
|
y = 0;
|
|
x = i;
|
|
for (j=0; j<6 && x<256; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 43;
|
|
}
|
|
|
|
sp_256_proj_point_dbl_4(rt, rt, t);
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_64_4(p, table, y);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(p->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
p->infinity = !y;
|
|
sp_256_proj_point_add_qz1_4(rt, rt, p, t);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_256_map_4(r, rt, t);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_256));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
#ifndef FP_ENTRIES
|
|
#define FP_ENTRIES 16
|
|
#endif
|
|
|
|
/* Cache entry - holds precomputation tables for a point. */
|
|
typedef struct sp_cache_256_t {
|
|
/* X ordinate of point that table was generated from. */
|
|
sp_digit x[4];
|
|
/* Y ordinate of point that table was generated from. */
|
|
sp_digit y[4];
|
|
/* Precomputation table for point. */
|
|
sp_table_entry_256 table[64];
|
|
/* Count of entries in table. */
|
|
uint32_t cnt;
|
|
/* Point and table set in entry. */
|
|
int set;
|
|
} sp_cache_256_t;
|
|
|
|
/* Cache of tables. */
|
|
static THREAD_LS_T sp_cache_256_t sp_cache_256[FP_ENTRIES];
|
|
/* Index of last entry in cache. */
|
|
static THREAD_LS_T int sp_cache_256_last = -1;
|
|
/* Cache has been initialized. */
|
|
static THREAD_LS_T int sp_cache_256_inited = 0;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
static volatile int initCacheMutex_256 = 0;
|
|
static wolfSSL_Mutex sp_cache_256_lock;
|
|
#endif
|
|
|
|
/* Get the cache entry for the point.
|
|
*
|
|
* g [in] Point scalar multipling.
|
|
* cache [out] Cache table to use.
|
|
*/
|
|
static void sp_ecc_get_cache_256(const sp_point_256* g, sp_cache_256_t** cache)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint32_t least;
|
|
|
|
if (sp_cache_256_inited == 0) {
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
sp_cache_256[i].set = 0;
|
|
}
|
|
sp_cache_256_inited = 1;
|
|
}
|
|
|
|
/* Compare point with those in cache. */
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
if (!sp_cache_256[i].set)
|
|
continue;
|
|
|
|
if (sp_256_cmp_equal_4(g->x, sp_cache_256[i].x) &
|
|
sp_256_cmp_equal_4(g->y, sp_cache_256[i].y)) {
|
|
sp_cache_256[i].cnt++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* No match. */
|
|
if (i == FP_ENTRIES) {
|
|
/* Find empty entry. */
|
|
i = (sp_cache_256_last + 1) % FP_ENTRIES;
|
|
for (; i != sp_cache_256_last; i=(i+1)%FP_ENTRIES) {
|
|
if (!sp_cache_256[i].set) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Evict least used. */
|
|
if (i == sp_cache_256_last) {
|
|
least = sp_cache_256[0].cnt;
|
|
for (j=1; j<FP_ENTRIES; j++) {
|
|
if (sp_cache_256[j].cnt < least) {
|
|
i = j;
|
|
least = sp_cache_256[i].cnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
XMEMCPY(sp_cache_256[i].x, g->x, sizeof(sp_cache_256[i].x));
|
|
XMEMCPY(sp_cache_256[i].y, g->y, sizeof(sp_cache_256[i].y));
|
|
sp_cache_256[i].set = 1;
|
|
sp_cache_256[i].cnt = 1;
|
|
}
|
|
|
|
*cache = &sp_cache_256[i];
|
|
sp_cache_256_last = i;
|
|
}
|
|
#endif /* FP_ECC */
|
|
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_4(sp_point_256* r, const sp_point_256* g, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
#ifndef FP_ECC
|
|
return sp_256_ecc_mulmod_win_add_sub_4(r, g, k, map, ct, heap);
|
|
#else
|
|
sp_digit tmp[2 * 4 * 5];
|
|
sp_cache_256_t* cache;
|
|
int err = MP_OKAY;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
if (initCacheMutex_256 == 0) {
|
|
wc_InitMutex(&sp_cache_256_lock);
|
|
initCacheMutex_256 = 1;
|
|
}
|
|
if (wc_LockMutex(&sp_cache_256_lock) != 0)
|
|
err = BAD_MUTEX_E;
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_ecc_get_cache_256(g, &cache);
|
|
if (cache->cnt == 2)
|
|
sp_256_gen_stripe_table_4(g, cache->table, tmp, heap);
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
wc_UnLockMutex(&sp_cache_256_lock);
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (cache->cnt < 2) {
|
|
err = sp_256_ecc_mulmod_win_add_sub_4(r, g, k, map, ct, heap);
|
|
}
|
|
else {
|
|
err = sp_256_ecc_mulmod_stripe_4(r, g, cache->table, k,
|
|
map, ct, heap);
|
|
}
|
|
}
|
|
|
|
return err;
|
|
#endif
|
|
}
|
|
|
|
#else
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
/* Generate the pre-computed table of points for the base point.
|
|
*
|
|
* width = 8
|
|
* 256 entries
|
|
* 32 bits between
|
|
*
|
|
* a The base point.
|
|
* table Place to store generated point data.
|
|
* tmp Temporary data.
|
|
* heap Heap to use for allocation.
|
|
*/
|
|
static int sp_256_gen_stripe_table_4(const sp_point_256* a,
|
|
sp_table_entry_256* table, sp_digit* tmp, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* t = NULL;
|
|
#else
|
|
sp_point_256 t[3];
|
|
#endif
|
|
sp_point_256* s1 = NULL;
|
|
sp_point_256* s2 = NULL;
|
|
int i;
|
|
int j;
|
|
int err = MP_OKAY;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 3, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
s1 = t + 1;
|
|
s2 = t + 2;
|
|
|
|
err = sp_256_mod_mul_norm_4(t->x, a->x, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t->y, a->y, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_mod_mul_norm_4(t->z, a->z, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t->infinity = 0;
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
|
|
XMEMCPY(s1->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
s1->infinity = 0;
|
|
XMEMCPY(s2->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
s2->infinity = 0;
|
|
|
|
/* table[0] = {0, 0, infinity} */
|
|
XMEMSET(&table[0], 0, sizeof(sp_table_entry_256));
|
|
/* table[1] = Affine version of 'a' in Montgomery form */
|
|
XMEMCPY(table[1].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1].y, t->y, sizeof(table->y));
|
|
|
|
for (i=1; i<8; i++) {
|
|
sp_256_proj_point_dbl_n_4(t, 32, tmp);
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
XMEMCPY(table[1<<i].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1<<i].y, t->y, sizeof(table->y));
|
|
}
|
|
|
|
for (i=1; i<8; i++) {
|
|
XMEMCPY(s1->x, table[1<<i].x, sizeof(table->x));
|
|
XMEMCPY(s1->y, table[1<<i].y, sizeof(table->y));
|
|
for (j=(1<<i)+1; j<(1<<(i+1)); j++) {
|
|
XMEMCPY(s2->x, table[j-(1<<i)].x, sizeof(table->x));
|
|
XMEMCPY(s2->y, table[j-(1<<i)].y, sizeof(table->y));
|
|
sp_256_proj_point_add_qz1_4(t, s1, s2, tmp);
|
|
sp_256_proj_to_affine_4(t, tmp);
|
|
XMEMCPY(table[j].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[j].y, t->y, sizeof(table->y));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC */
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_256_get_entry_256_4(sp_point_256* r,
|
|
const sp_table_entry_256* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
for (i = 1; i < 256; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^32, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_stripe_4(sp_point_256* r, const sp_point_256* g,
|
|
const sp_table_entry_256* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* rt = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_256 rt[2];
|
|
sp_digit t[2 * 4 * 5];
|
|
#endif
|
|
sp_point_256* p = NULL;
|
|
int i;
|
|
int j;
|
|
int y;
|
|
int x;
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 5, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = rt + 1;
|
|
|
|
XMEMCPY(p->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
XMEMCPY(rt->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
|
|
y = 0;
|
|
x = 31;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 32;
|
|
}
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_256_4(rt, table, y);
|
|
} else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(rt->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
rt->infinity = !y;
|
|
for (i=30; i>=0; i--) {
|
|
y = 0;
|
|
x = i;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 32;
|
|
}
|
|
|
|
sp_256_proj_point_dbl_4(rt, rt, t);
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_256_4(p, table, y);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(p->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
p->infinity = !y;
|
|
sp_256_proj_point_add_qz1_4(rt, rt, p, t);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_256_map_4(r, rt, t);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_256));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
#ifndef FP_ENTRIES
|
|
#define FP_ENTRIES 16
|
|
#endif
|
|
|
|
/* Cache entry - holds precomputation tables for a point. */
|
|
typedef struct sp_cache_256_t {
|
|
/* X ordinate of point that table was generated from. */
|
|
sp_digit x[4];
|
|
/* Y ordinate of point that table was generated from. */
|
|
sp_digit y[4];
|
|
/* Precomputation table for point. */
|
|
sp_table_entry_256 table[256];
|
|
/* Count of entries in table. */
|
|
uint32_t cnt;
|
|
/* Point and table set in entry. */
|
|
int set;
|
|
} sp_cache_256_t;
|
|
|
|
/* Cache of tables. */
|
|
static THREAD_LS_T sp_cache_256_t sp_cache_256[FP_ENTRIES];
|
|
/* Index of last entry in cache. */
|
|
static THREAD_LS_T int sp_cache_256_last = -1;
|
|
/* Cache has been initialized. */
|
|
static THREAD_LS_T int sp_cache_256_inited = 0;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
static volatile int initCacheMutex_256 = 0;
|
|
static wolfSSL_Mutex sp_cache_256_lock;
|
|
#endif
|
|
|
|
/* Get the cache entry for the point.
|
|
*
|
|
* g [in] Point scalar multipling.
|
|
* cache [out] Cache table to use.
|
|
*/
|
|
static void sp_ecc_get_cache_256(const sp_point_256* g, sp_cache_256_t** cache)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint32_t least;
|
|
|
|
if (sp_cache_256_inited == 0) {
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
sp_cache_256[i].set = 0;
|
|
}
|
|
sp_cache_256_inited = 1;
|
|
}
|
|
|
|
/* Compare point with those in cache. */
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
if (!sp_cache_256[i].set)
|
|
continue;
|
|
|
|
if (sp_256_cmp_equal_4(g->x, sp_cache_256[i].x) &
|
|
sp_256_cmp_equal_4(g->y, sp_cache_256[i].y)) {
|
|
sp_cache_256[i].cnt++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* No match. */
|
|
if (i == FP_ENTRIES) {
|
|
/* Find empty entry. */
|
|
i = (sp_cache_256_last + 1) % FP_ENTRIES;
|
|
for (; i != sp_cache_256_last; i=(i+1)%FP_ENTRIES) {
|
|
if (!sp_cache_256[i].set) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Evict least used. */
|
|
if (i == sp_cache_256_last) {
|
|
least = sp_cache_256[0].cnt;
|
|
for (j=1; j<FP_ENTRIES; j++) {
|
|
if (sp_cache_256[j].cnt < least) {
|
|
i = j;
|
|
least = sp_cache_256[i].cnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
XMEMCPY(sp_cache_256[i].x, g->x, sizeof(sp_cache_256[i].x));
|
|
XMEMCPY(sp_cache_256[i].y, g->y, sizeof(sp_cache_256[i].y));
|
|
sp_cache_256[i].set = 1;
|
|
sp_cache_256[i].cnt = 1;
|
|
}
|
|
|
|
*cache = &sp_cache_256[i];
|
|
sp_cache_256_last = i;
|
|
}
|
|
#endif /* FP_ECC */
|
|
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_4(sp_point_256* r, const sp_point_256* g, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
#ifndef FP_ECC
|
|
return sp_256_ecc_mulmod_win_add_sub_4(r, g, k, map, ct, heap);
|
|
#else
|
|
sp_digit tmp[2 * 4 * 5];
|
|
sp_cache_256_t* cache;
|
|
int err = MP_OKAY;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
if (initCacheMutex_256 == 0) {
|
|
wc_InitMutex(&sp_cache_256_lock);
|
|
initCacheMutex_256 = 1;
|
|
}
|
|
if (wc_LockMutex(&sp_cache_256_lock) != 0)
|
|
err = BAD_MUTEX_E;
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_ecc_get_cache_256(g, &cache);
|
|
if (cache->cnt == 2)
|
|
sp_256_gen_stripe_table_4(g, cache->table, tmp, heap);
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
wc_UnLockMutex(&sp_cache_256_lock);
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (cache->cnt < 2) {
|
|
err = sp_256_ecc_mulmod_win_add_sub_4(r, g, k, map, ct, heap);
|
|
}
|
|
else {
|
|
err = sp_256_ecc_mulmod_stripe_4(r, g, cache->table, k,
|
|
map, ct, heap);
|
|
}
|
|
}
|
|
|
|
return err;
|
|
#endif
|
|
}
|
|
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* p Point to multiply.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_256(const mp_int* km, const ecc_point* gm, ecc_point* r,
|
|
int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_256 point[1];
|
|
sp_digit k[4];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(k, 4, km);
|
|
sp_256_point_from_ecc_point_4(point, gm);
|
|
|
|
err = sp_256_ecc_mulmod_4(point, point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_point_to_ecc_point_4(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply the point by the scalar, add point a and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* p Point to multiply.
|
|
* am Point to add to scalar mulitply result.
|
|
* inMont Point to add is in montgomery form.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_add_256(const mp_int* km, const ecc_point* gm,
|
|
const ecc_point* am, int inMont, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_256 point[2];
|
|
sp_digit k[4 + 4 * 2 * 5];
|
|
#endif
|
|
sp_point_256* addP = NULL;
|
|
sp_digit* tmp = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(
|
|
sizeof(sp_digit) * (4 + 4 * 2 * 5), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
addP = point + 1;
|
|
tmp = k + 4;
|
|
|
|
sp_256_from_mp(k, 4, km);
|
|
sp_256_point_from_ecc_point_4(point, gm);
|
|
sp_256_point_from_ecc_point_4(addP, am);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->x, addP->x, p256_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->y, addP->y, p256_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->z, addP->z, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_4(point, point, k, 0, 0, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_proj_point_add_4(point, point, addP, tmp);
|
|
|
|
if (map) {
|
|
sp_256_map_4(point, point, tmp);
|
|
}
|
|
|
|
err = sp_256_point_to_ecc_point_4(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Striping precomputation table.
|
|
* 6 points combined into a table of 64 points.
|
|
* Distance of 43 between points.
|
|
*/
|
|
static const sp_table_entry_256 p256_table[64] = {
|
|
/* 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 */
|
|
{ { 0x79e730d418a9143cL,0x75ba95fc5fedb601L,0x79fb732b77622510L,
|
|
0x18905f76a53755c6L },
|
|
{ 0xddf25357ce95560aL,0x8b4ab8e4ba19e45cL,0xd2e88688dd21f325L,
|
|
0x8571ff1825885d85L } },
|
|
/* 2 */
|
|
{ { 0x8910507903605c39L,0xf0843d9ea142c96cL,0xf374493416923684L,
|
|
0x732caa2ffa0a2893L },
|
|
{ 0xb2e8c27061160170L,0xc32788cc437fbaa3L,0x39cd818ea6eda3acL,
|
|
0xe2e942399e2b2e07L } },
|
|
/* 3 */
|
|
{ { 0xb9c0d276abc3e190L,0x610e3d4dcb55b9caL,0xd16dbd025720f50aL,
|
|
0xd0ed73dca607de84L },
|
|
{ 0x3bbde5bf49219fb5L,0x698e12c057771843L,0xdb606a9763470a5eL,
|
|
0x61c71975853635d5L } },
|
|
/* 4 */
|
|
{ { 0xeb5ddcb6ec7fae9fL,0x995f2714efb66e5aL,0xdee95d8e69445d52L,
|
|
0x1b6c2d4609e27620L },
|
|
{ 0x32621c318129d716L,0xb03909f10958c1aaL,0x8c468ef91af4af63L,
|
|
0x162c429ffba5cdf6L } },
|
|
/* 5 */
|
|
{ { 0x4615d912c1d85f12L,0x1f0880b0e1f4e302L,0x336bcc896f1fca13L,
|
|
0xda59ad0dc70dedbcL },
|
|
{ 0x3897efaeb0f62eceL,0xbaed81cdf4990cfdL,0xa3b1c2f260321bbbL,
|
|
0x2aefd95addc84f79L } },
|
|
/* 6 */
|
|
{ { 0x2d427e3cee9e92e6L,0x43d40da0437fe629L,0x0006e4e06ab72b31L,
|
|
0x21ccfbb46f5c8e02L },
|
|
{ 0x53a2f1a753e821ecL,0x5d72d201e209d591L,0xfd84a26445e8ad41L,
|
|
0x86ee0e684059cc6eL } },
|
|
/* 7 */
|
|
{ { 0x3d8242d09248fce2L,0x32d4bf827f49f33dL,0x78807beb29d41fd1L,
|
|
0xfce48b99f8f562cbL },
|
|
{ 0x72a7d4849f38f097L,0x1b482c10a37059adL,0xc1aa8284472e5ed3L,
|
|
0xc5d6f3bbef23e9c9L } },
|
|
/* 8 */
|
|
{ { 0x23f949feb8a24a20L,0x17ebfed1f52ca53fL,0x9b691bbebcfb4853L,
|
|
0x5617ff6b6278a05dL },
|
|
{ 0x241b34c5e3c99ebdL,0xfc64242e1784156aL,0x4206482f695d67dfL,
|
|
0xb967ce0eee27c011L } },
|
|
/* 9 */
|
|
{ { 0x569aacdf9fc3df19L,0x0c6782c7c34c6fb2L,0xbb5f98b2c4ec873dL,
|
|
0x5578433b9fe9e475L },
|
|
{ 0xfa14f3869ca84821L,0xb8ef658d39589501L,0x4022c48e07127b8eL,
|
|
0xcbc4dfe35402ea12L } },
|
|
/* 10 */
|
|
{ { 0x092ef96a2ad408a3L,0xf1e1a4c4cfbc45a3L,0x966b2676efeecdeeL,
|
|
0xa0e2c6713a6216c5L },
|
|
{ 0xcd6e22a292c4bf61L,0x56d99a11d830dfc7L,0xb8c612bd259de547L,
|
|
0x3d8e9a72e91f8ff7L } },
|
|
/* 11 */
|
|
{ { 0x0b885e962352b4ffL,0x6be320d2a6545766L,0xbd22a444b9a59e72L,
|
|
0x2f2d32d6ccc55d7dL },
|
|
{ 0xd86e4c4cddcec70bL,0x19cdb0e97a25c934L,0x542ade069ca97e28L,
|
|
0x58c5927c746517f7L } },
|
|
/* 12 */
|
|
{ { 0x24abb0f08d087091L,0x6aa2c2ef51add8deL,0xc3e1cb4ccc2a2134L,
|
|
0x3563112895589212L },
|
|
{ 0x3bf17d2a7984344bL,0xbcb6f7b2f8a142ccL,0xd6057d8a08ec9266L,
|
|
0x75c150d22852405aL } },
|
|
/* 13 */
|
|
{ { 0xa8f88eb5a9fee73eL,0x72a84174576ea39bL,0x671fa0ade2692e7dL,
|
|
0x2556288596769f9eL },
|
|
{ 0x254323bce850a6b0L,0x74b61c18fff6c89aL,0x2e7c563fcfae2690L,
|
|
0x2cf454b7164afb0fL } },
|
|
/* 14 */
|
|
{ { 0xe312a5618f10f423L,0x59a1f1fff2b85df4L,0x56c5991941c48122L,
|
|
0x74953c1eae3d175fL },
|
|
{ 0x4d767fc78859244cL,0xc486bc00719a4cc1L,0xdd282985df1c1787L,
|
|
0x1143301aae93c719L } },
|
|
/* 15 */
|
|
{ { 0x7201a1d61fab7d71L,0x65931f5432cbbee8L,0x202955d3dcb387eeL,
|
|
0xa5045ba5c4678432L },
|
|
{ 0xcfb5ee87dca85ff6L,0xdd25a7c6dfec0f67L,0xfee47169356a87c6L,
|
|
0x20a8f159c3d7ece9L } },
|
|
/* 16 */
|
|
{ { 0xe4ac8b33070d3aabL,0x2643672b9a2cd5e5L,0x52eff79b1cfc9173L,
|
|
0x665ca49b90a7c13fL },
|
|
{ 0x5a8dda59b3efb998L,0x8a5b922d052f1341L,0xae9ebbab3cf9a530L,
|
|
0x35986e7bf56da4d7L } },
|
|
/* 17 */
|
|
{ { 0x21e07f9abc0a70c0L,0xecfdb3a2989a0182L,0x360682c0e40e8125L,
|
|
0x73a637952f837f32L },
|
|
{ 0xf4eb8cef9c0d326bL,0xefb97fecebf4c7a5L,0xf9352123af3d5d7eL,
|
|
0xb71ef4ef34e22ab1L } },
|
|
/* 18 */
|
|
{ { 0xd6bd0d810d488032L,0x1676df9971f0b92eL,0xa7acdcfcb6d215acL,
|
|
0x82461a26cd0ff939L },
|
|
{ 0x827189c0b635d2e5L,0x18f3b6dda92f1622L,0x10d738aa05cef325L,
|
|
0x12c2a13f39bb0aa6L } },
|
|
/* 19 */
|
|
{ { 0x5f94d8deb50b4e82L,0xbcd9144e34bd93e9L,0x61c3392107c08623L,
|
|
0xedec947e7e3de8eeL },
|
|
{ 0x9d2da51d2f21b202L,0xc0c885cd96692a89L,0x4a613462a5e7309cL,
|
|
0x227788550f28dee6L } },
|
|
/* 20 */
|
|
{ { 0x1ff0bd527695447aL,0x63534a4a42ae2627L,0xd96af0dad0cc09f2L,
|
|
0xb59ea545412d3e1aL },
|
|
{ 0xd10518cf6a759072L,0xffeec37c10475dfdL,0xacbc29ccb25089c4L,
|
|
0xbf3dfc8521b6d4eeL } },
|
|
/* 21 */
|
|
{ { 0x8f2eacfe49388995L,0x000fc8d4841be9edL,0x2ed8085a6955c290L,
|
|
0x1929cf606d8e176fL },
|
|
{ 0x2efd26a5fd1a09dbL,0x58d767ad6cb626cdL,0x13a81b95b26c6e05L,
|
|
0x68fe61078f61832bL } },
|
|
/* 22 */
|
|
{ { 0x4ad7de2e2d85c2f6L,0xcd552fcb510101a1L,0x638d122b02acdabfL,
|
|
0x117221e850bfd921L },
|
|
{ 0x08571ee199a99129L,0xebd046d1ba2f03a9L,0x035ed7baa6f8a181L,
|
|
0x8aabf98d3187c6f3L } },
|
|
/* 23 */
|
|
{ { 0xaf8e65cae3ab5f4eL,0x8b0b8b897561a69cL,0x37e83aa0b17c1e66L,
|
|
0xe894d84cf8d80edcL },
|
|
{ 0xf1e465e7ce514e22L,0xc7fa324ca72340efL,0x08297fcae7370673L,
|
|
0x4f799682b119ae5eL } },
|
|
/* 24 */
|
|
{ { 0x014d6bd8f180f206L,0x56640c8b7ab44f55L,0x9a39660d93f9a5b8L,
|
|
0xcac069e9959b68f1L },
|
|
{ 0x2bf6b65e208d9918L,0xb7e45dfb3f943291L,0xad5770f0d439c712L,
|
|
0xfec635e17654d805L } },
|
|
/* 25 */
|
|
{ { 0x37221cd13f031a88L,0xe4d53d2f0b5558d4L,0x2ede8e8fdafc51cdL,
|
|
0xb587284ca8a883eaL },
|
|
{ 0xfa37674044fa5251L,0x5e5e18f95c5e3528L,0x8af51fac6e10b958L,
|
|
0x09be79032c429b30L } },
|
|
/* 26 */
|
|
{ { 0x7a468ba47f29936dL,0xacbbe3657cfb8176L,0xe892c10a4db9cd5dL,
|
|
0xcb2f29d7a1aade8bL },
|
|
{ 0x3087eef4efffcb14L,0x92a7f3ec2afe8f2eL,0x199d89b8136f29d2L,
|
|
0x3131604eb4836623L } },
|
|
/* 27 */
|
|
{ { 0xf5cca5da31b5df76L,0x9431318676a4abc0L,0x5db8e6f71877c7c7L,
|
|
0x3ce3f5f96031ac99L },
|
|
{ 0x585961d07e7cef80L,0x5ed6e841d424f16aL,0x18289cd056b16a49L,
|
|
0x8008d03b2e5770faL } },
|
|
/* 28 */
|
|
{ { 0xc8c2af64254e39deL,0x783cea738582571cL,0x2f2f55f1a6edd971L,
|
|
0x7e00cc92c86bf30aL },
|
|
{ 0xa0db735447d7491fL,0xb3eb751ca5b12260L,0x3bc39a23297fb234L,
|
|
0xd1330c20b8b4bfe4L } },
|
|
/* 29 */
|
|
{ { 0xfb776af07824d53aL,0x04709096422dea35L,0x6f480b6b5fec3ac7L,
|
|
0xdb2b1b62e27edda4L },
|
|
{ 0x0bba904cda78b494L,0x37ef59b691a147f7L,0xf880517726a4730aL,
|
|
0xecc9d79aa8ab368eL } },
|
|
/* 30 */
|
|
{ { 0x628e05c185a4bd0eL,0xebf7b67800e244e8L,0xf645947b8b176eebL,
|
|
0xc92bf8301641ab35L },
|
|
{ 0x7a039c1a21be7a6fL,0x11e4354d2fd4bd92L,0x42552422886fd224L,
|
|
0xdbf3194cc44ced37L } },
|
|
/* 31 */
|
|
{ { 0x832da983c56f6b04L,0x7aaa84eb8ef098aeL,0x602e3eefa6a616a2L,
|
|
0xc2824ddcb7b717a3L },
|
|
{ 0x19f50324ddb0a2e9L,0x04553a285bedfbbdL,0x37ea8b12aa1aee0aL,
|
|
0xc1844e79945959a1L } },
|
|
/* 32 */
|
|
{ { 0x5043dea7e0f222c2L,0x309d42ac72e65142L,0x94fe9ddd9216cd30L,
|
|
0xd6539c7d0f87feecL },
|
|
{ 0x03c5a57c432ac7d7L,0x72692cf0327fda10L,0xec28c85f280698deL,
|
|
0x2331fb467ec283b1L } },
|
|
/* 33 */
|
|
{ { 0x651cfdeb43248e67L,0x2c3d72ceee561de8L,0xa48b8f33443dac8bL,
|
|
0xe6b042fe7991f986L },
|
|
{ 0xd091636de810bcd2L,0xfc1e96aea97416d7L,0x2b6087cb2892694dL,
|
|
0x0f8ac2459985a628L } },
|
|
/* 34 */
|
|
{ { 0x54e908747f2326a2L,0xce43dd44fa9e1131L,0x4b2c740cd3d2d948L,
|
|
0x9b0b126aa86e8b07L },
|
|
{ 0x228ef320b77f5af2L,0x14fc8a01ca07661cL,0x1d72509ed34f1a3aL,
|
|
0xd169031729d9086eL } },
|
|
/* 35 */
|
|
{ { 0x13e44acc03c5fe33L,0x13f4374e0105bbc6L,0x0cba5018cb4451b8L,
|
|
0xa1a38e4afa29a4e1L },
|
|
{ 0x063fb9a8f4403917L,0x7afe108f996ea7f2L,0xec252363f93a1f87L,
|
|
0xc029c8117e432609L } },
|
|
/* 36 */
|
|
{ { 0x25080c29486e548eL,0xdaa411327868ab32L,0x46891511d61d1a3aL,
|
|
0xc87f3f533efc8facL },
|
|
{ 0x984f613ff3e31393L,0x10bb15f67648f5d2L,0xe4990f2bdefaa440L,
|
|
0xce647f03dd51c31dL } },
|
|
/* 37 */
|
|
{ { 0x3161ebdd9c2c0abfL,0x48b7ee7bf497cf35L,0x9233e31d94dd9c97L,
|
|
0x4aef9a62c5d2988fL },
|
|
{ 0x89a54161a03e6456L,0x9d25e003c1f02b47L,0x8784cdbfc1857782L,
|
|
0x7928cafd0222b49cL } },
|
|
/* 38 */
|
|
{ { 0x5a591abdecf4ea23L,0xb2725e8a80bd9b8aL,0xf569679f29ff348bL,
|
|
0xa28163d36f22536aL },
|
|
{ 0x89e7a8f621c43971L,0x60cbe4a1c4a09567L,0x41046c8f5928b03dL,
|
|
0x646feda7ef74a95aL } },
|
|
/* 39 */
|
|
{ { 0x3aef6bc05d75d310L,0xf3e7f03c82476e5cL,0x9dcf3d508419b8a0L,
|
|
0x221a3885eaf07f07L },
|
|
{ 0x16d533f337bdcb7dL,0xd778066bbb49550dL,0xf6f4540936c2600cL,
|
|
0x7544396fc1c61709L } },
|
|
/* 40 */
|
|
{ { 0xf79f556fde08cd42L,0x7d0aba1ee13cadc8L,0x841d9df6d4d81fefL,
|
|
0x8f7ae1f2602d2043L },
|
|
{ 0x950c4de4b57ee181L,0xfe51e045c55cf490L,0xdb60b56a1efdd0a8L,
|
|
0x276bccb3bf0fa497L } },
|
|
/* 41 */
|
|
{ { 0x7926625b19e5a603L,0xf1b98e93e1bf712bL,0x933ecb52e33abeccL,
|
|
0x9ebfc506f826619bL },
|
|
{ 0xd2965f67a1692c52L,0x8ac4012dfc4f9564L,0xa8af57036739f003L,
|
|
0x7dd2282dbc715e13L } },
|
|
/* 42 */
|
|
{ { 0x3ec01587cf2bb490L,0x5346082c3f1ea428L,0xf2c679e26739e506L,
|
|
0xeab710d6930c28e4L },
|
|
{ 0xe9947ff8e043249aL,0x63640678ad54b0e6L,0x8cde42591854eaafL,
|
|
0xf1feeaec6b25bdceL } },
|
|
/* 43 */
|
|
{ { 0x49f7e8991bdd2aa2L,0x88fd273534e3cae9L,0x5ac0510182cbfea2L,
|
|
0x324c9d414cf84578L },
|
|
{ 0xa242311719f13061L,0x69d67cf15f3b9932L,0x32ecdb3cdde2dfadL,
|
|
0x2f74d995b916f7a6L } },
|
|
/* 44 */
|
|
{ { 0x35f7ed423d14bc68L,0x32f63a0445574f91L,0xd04108335e8801e7L,
|
|
0x63b6f13c1c9c1462L },
|
|
{ 0x180dcbcd9dc7201fL,0xa07b5b2c360350dfL,0x2582b2774236f5ccL,
|
|
0x90163924a7ab06b9L } },
|
|
/* 45 */
|
|
{ { 0x35e751b50767cdf2L,0x808372e69d8e2838L,0xcbad6b30646914d7L,
|
|
0x4eeeb1de6c7b3cabL },
|
|
{ 0x3ef3af968c965004L,0xd162290fd281920bL,0x4626c313181f811bL,
|
|
0x5fa42f4fbe61dd14L } },
|
|
/* 46 */
|
|
{ { 0x1f5a9c53a185e98eL,0x13c28277ea9e83c3L,0xb566e4c0b693a226L,
|
|
0x2ea3f1c001533e9eL },
|
|
{ 0xb4dbcc336215a21fL,0x7df608c3cb4e98f0L,0x677df928b4dd95ddL,
|
|
0x4c1d7142eeed2934L } },
|
|
/* 47 */
|
|
{ { 0x30bf236c86a2ee12L,0x74d5a12705ecb4c0L,0x9ef43b0f1601cca9L,
|
|
0xbe1b1bf9ac4dd202L },
|
|
{ 0x84943e4717b6f93bL,0x6f789757cd5214b3L,0x5e0db1a97f313dfaL,
|
|
0x0515efacece0b72bL } },
|
|
/* 48 */
|
|
{ { 0x433a677ca78c3f8bL,0x204a9feaf376a9c1L,0xb6bfbea444baeadfL,
|
|
0x5a43cafd2b48a3f4L },
|
|
{ 0xe25a7d0b67d1d226L,0xb2115844f6837985L,0x8c9cca3ed87c2b88L,
|
|
0xecd4bc73894772e1L } },
|
|
/* 49 */
|
|
{ { 0x368abec6783490e7L,0xf26da8bdd925c359L,0xf9b643e5e8fb0679L,
|
|
0x7ab803d9b555d175L },
|
|
{ 0x1b4059994ebae595L,0x07fbbf25ba417a49L,0x02d7cf1cc617957aL,
|
|
0x79070ea5565c1fbbL } },
|
|
/* 50 */
|
|
{ { 0x70194602d9b028faL,0x9c49969d9ff06760L,0xbf4add816ad27b42L,
|
|
0x7d1f226d8651524eL },
|
|
{ 0xb0779b40eecd7724L,0xd356077265938707L,0xe3a61fe5d054b903L,
|
|
0xd6f5a3433365136bL } },
|
|
/* 51 */
|
|
{ { 0x25c87c76d2970fcfL,0x7c9f60a04d5546a8L,0x7dab072f8dd8bf8cL,
|
|
0x3d10907ce8ff9f28L },
|
|
{ 0xb08d6d0e34bb2a29L,0x5dfd4907c3fcfdafL,0xe4a2d4b147123ba6L,
|
|
0x6e9eef0b42de6d8dL } },
|
|
/* 52 */
|
|
{ { 0x81255af5cbb55f9dL,0x579f27055328d39eL,0xa7bfc9173e5ae663L,
|
|
0xe9b55d57a1246e42L },
|
|
{ 0x240ecd9475629188L,0x8748d297457bd3c0L,0x50e215ef373c361cL,
|
|
0xaf9d8a8618c967b9L } },
|
|
/* 53 */
|
|
{ { 0x79a041040a04143fL,0x03f7410fc700c616L,0xe8f2a3f291108ca6L,
|
|
0xa26d67e8f5ac679aL },
|
|
{ 0xa15dbfebb83fbd9aL,0xf1aaebd23a0b5587L,0x639a97ddce0ead44L,
|
|
0xf253b00c71d12ee0L } },
|
|
/* 54 */
|
|
{ { 0x7baecf4c9e35e57cL,0x522e26a16786e3a5L,0x600b538b8af829a2L,
|
|
0x19fa80b72c6de44aL },
|
|
{ 0xb52364f0aaf0ff52L,0x2e4bc21a6714587fL,0x401377a3c245967dL,
|
|
0x65178766a23cf3ebL } },
|
|
/* 55 */
|
|
{ { 0xc1c81838923ac000L,0x42021f02c4abc0eeL,0xcde3bc9a47132a20L,
|
|
0x6f52a864c69f55fbL },
|
|
{ 0x0bdfd3e4df89ff6aL,0x244c943bc88bd74eL,0x649e0b532612998bL,
|
|
0xce61ebc3d3413d4aL } },
|
|
/* 56 */
|
|
{ { 0xe31629042cba5a90L,0xa72710aedb6c224eL,0x51831390d87e44dbL,
|
|
0xa687dc9848fe2ef3L },
|
|
{ 0x857e985516a21ca9L,0xe3428d8ec9a7bc12L,0x16d3bcd012b044a2L,
|
|
0xe6fa0c69e85f6704L } },
|
|
/* 57 */
|
|
{ { 0xe4cca34b8fd42692L,0xc86d49a6e15f3acfL,0xbfe1f263a6b18392L,
|
|
0x0664c933dcd266f6L },
|
|
{ 0x86738cf519399d88L,0x1cbcc8c3749ce6bcL,0x28171f7bc773b884L,
|
|
0x306fc95701acf19eL } },
|
|
/* 58 */
|
|
{ { 0x0da7a737afb6a419L,0x637fc26a195fbc40L,0x0fc8f8769c64e8e7L,
|
|
0x2a68579b208c0626L },
|
|
{ 0x82e823108628abc3L,0xe4e09313ab23ae94L,0x66bf9adbe5155cf1L,
|
|
0x17909f6ce8a2dd0cL } },
|
|
/* 59 */
|
|
{ { 0x767c359643d7ad31L,0x7ba3a1aa49ccef62L,0x5261c3160242bf5aL,
|
|
0x85f452199eb82dfbL },
|
|
{ 0x554cb38237b42e47L,0xc9771ec14cf66133L,0xde70617a153905a3L,
|
|
0x2cab26fcbc61316dL } },
|
|
/* 60 */
|
|
{ { 0x7dababbd75c10315L,0x9a8fbe88a48df64eL,0x2b076fe5e1b8f912L,
|
|
0x1a530ce9ccbd50dcL },
|
|
{ 0x47361ab76647d225L,0xf84e73be4d636a15L,0xd58fcaaf5904a2faL,
|
|
0x73747d4b38523a19L } },
|
|
/* 61 */
|
|
{ { 0x6e6b0fb8b6864cc0L,0x5d8a0027ab3b623cL,0x5e6665389a1cfc9cL,
|
|
0x816b19de521e4ff3L },
|
|
{ 0x56709ad00bc447f8L,0x1d46cb1c8f1464d7L,0x49cef820a949873dL,
|
|
0x02804692d9d3e65fL } },
|
|
/* 62 */
|
|
{ { 0x1ae0ea28ad8b5976L,0x4e9ad48e869458fbL,0xe9437ec996cfedf8L,
|
|
0xa4f924a22afa74d9L },
|
|
{ 0xcb5b1845aaf797c0L,0xe5d6dd0eba6f557fL,0xa1496fe691dc2e7cL,
|
|
0xad31edac8c179fc7L } },
|
|
/* 63 */
|
|
{ { 0xf9c5e9de44b06ed7L,0x6ce7c4f74a597159L,0xd02ec441833accb5L,
|
|
0xf30205996296e8fcL },
|
|
{ 0x7df6c5c6c2afbe06L,0xff429dda9c849b09L,0x42170166f5dd78d6L,
|
|
0x2403ea21830c388bL } },
|
|
};
|
|
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^42, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 6 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_base_4(sp_point_256* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_256_ecc_mulmod_stripe_4(r, &p256_base, p256_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#else
|
|
/* Striping precomputation table.
|
|
* 8 points combined into a table of 256 points.
|
|
* Distance of 32 between points.
|
|
*/
|
|
static const sp_table_entry_256 p256_table[256] = {
|
|
/* 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 */
|
|
{ { 0x79e730d418a9143cL,0x75ba95fc5fedb601L,0x79fb732b77622510L,
|
|
0x18905f76a53755c6L },
|
|
{ 0xddf25357ce95560aL,0x8b4ab8e4ba19e45cL,0xd2e88688dd21f325L,
|
|
0x8571ff1825885d85L } },
|
|
/* 2 */
|
|
{ { 0x202886024147519aL,0xd0981eac26b372f0L,0xa9d4a7caa785ebc8L,
|
|
0xd953c50ddbdf58e9L },
|
|
{ 0x9d6361ccfd590f8fL,0x72e9626b44e6c917L,0x7fd9611022eb64cfL,
|
|
0x863ebb7e9eb288f3L } },
|
|
/* 3 */
|
|
{ { 0x7856b6235cdb6485L,0x808f0ea22f0a2f97L,0x3e68d9544f7e300bL,
|
|
0x00076055b5ff80a0L },
|
|
{ 0x7634eb9b838d2010L,0x54014fbb3243708aL,0xe0e47d39842a6606L,
|
|
0x8308776134373ee0L } },
|
|
/* 4 */
|
|
{ { 0x4f922fc516a0d2bbL,0x0d5cc16c1a623499L,0x9241cf3a57c62c8bL,
|
|
0x2f5e6961fd1b667fL },
|
|
{ 0x5c15c70bf5a01797L,0x3d20b44d60956192L,0x04911b37071fdb52L,
|
|
0xf648f9168d6f0f7bL } },
|
|
/* 5 */
|
|
{ { 0x9e566847e137bbbcL,0xe434469e8a6a0becL,0xb1c4276179d73463L,
|
|
0x5abe0285133d0015L },
|
|
{ 0x92aa837cc04c7dabL,0x573d9f4c43260c07L,0x0c93156278e6cc37L,
|
|
0x94bb725b6b6f7383L } },
|
|
/* 6 */
|
|
{ { 0xbbf9b48f720f141cL,0x6199b3cd2df5bc74L,0xdc3f6129411045c4L,
|
|
0xcdd6bbcb2f7dc4efL },
|
|
{ 0xcca6700beaf436fdL,0x6f647f6db99326beL,0x0c0fa792014f2522L,
|
|
0xa361bebd4bdae5f6L } },
|
|
/* 7 */
|
|
{ { 0x28aa2558597c13c7L,0xc38d635f50b7c3e1L,0x07039aecf3c09d1dL,
|
|
0xba12ca09c4b5292cL },
|
|
{ 0x9e408fa459f91dfdL,0x3af43b66ceea07fbL,0x1eceb0899d780b29L,
|
|
0x53ebb99d701fef4bL } },
|
|
/* 8 */
|
|
{ { 0x4fe7ee31b0e63d34L,0xf4600572a9e54fabL,0xc0493334d5e7b5a4L,
|
|
0x8589fb9206d54831L },
|
|
{ 0xaa70f5cc6583553aL,0x0879094ae25649e5L,0xcc90450710044652L,
|
|
0xebb0696d02541c4fL } },
|
|
/* 9 */
|
|
{ { 0x4616ca15ac1647c5L,0xb8127d47c4cf5799L,0xdc666aa3764dfbacL,
|
|
0xeb2820cbd1b27da3L },
|
|
{ 0x9406f8d86a87e008L,0xd87dfa9d922378f3L,0x56ed2e4280ccecb2L,
|
|
0x1f28289b55a7da1dL } },
|
|
/* 10 */
|
|
{ { 0xabbaa0c03b89da99L,0xa6f2d79eb8284022L,0x27847862b81c05e8L,
|
|
0x337a4b5905e54d63L },
|
|
{ 0x3c67500d21f7794aL,0x207005b77d6d7f61L,0x0a5a378104cfd6e8L,
|
|
0x0d65e0d5f4c2fbd6L } },
|
|
/* 11 */
|
|
{ { 0xd9d09bbeb5275d38L,0x4268a7450be0a358L,0xf0762ff4973eb265L,
|
|
0xc23da24252f4a232L },
|
|
{ 0x5da1b84f0b94520cL,0x09666763b05bd78eL,0x3a4dcb8694d29ea1L,
|
|
0x19de3b8cc790cff1L } },
|
|
/* 12 */
|
|
{ { 0x183a716c26c5fe04L,0x3b28de0b3bba1bdbL,0x7432c586a4cb712cL,
|
|
0xe34dcbd491fccbfdL },
|
|
{ 0xb408d46baaa58403L,0x9a69748682e97a53L,0x9e39012736aaa8afL,
|
|
0xe7641f447b4e0f7fL } },
|
|
/* 13 */
|
|
{ { 0x7d753941df64ba59L,0xd33f10ec0b0242fcL,0x4f06dfc6a1581859L,
|
|
0x4a12df57052a57bfL },
|
|
{ 0xbfa6338f9439dbd0L,0xd3c24bd4bde53e1fL,0xfd5e4ffa21f1b314L,
|
|
0x6af5aa93bb5bea46L } },
|
|
/* 14 */
|
|
{ { 0xda10b69910c91999L,0x0a24b4402a580491L,0x3e0094b4b8cc2090L,
|
|
0x5fe3475a66a44013L },
|
|
{ 0xb0f8cabdf93e7b4bL,0x292b501a7c23f91aL,0x42e889aecd1e6263L,
|
|
0xb544e308ecfea916L } },
|
|
/* 15 */
|
|
{ { 0x6478c6e916ddfdceL,0x2c329166f89179e6L,0x4e8d6e764d4e67e1L,
|
|
0xe0b6b2bda6b0c20bL },
|
|
{ 0x0d312df2bb7efb57L,0x1aac0dde790c4007L,0xf90336ad679bc944L,
|
|
0x71c023de25a63774L } },
|
|
/* 16 */
|
|
{ { 0x62a8c244bfe20925L,0x91c19ac38fdce867L,0x5a96a5d5dd387063L,
|
|
0x61d587d421d324f6L },
|
|
{ 0xe87673a2a37173eaL,0x2384800853778b65L,0x10f8441e05bab43eL,
|
|
0xfa11fe124621efbeL } },
|
|
/* 17 */
|
|
{ { 0x1c891f2b2cb19ffdL,0x01ba8d5bb1923c23L,0xb6d03d678ac5ca8eL,
|
|
0x586eb04c1f13bedcL },
|
|
{ 0x0c35c6e527e8ed09L,0x1e81a33c1819ede2L,0x278fd6c056c652faL,
|
|
0x19d5ac0870864f11L } },
|
|
/* 18 */
|
|
{ { 0x1e99f581309a4e1fL,0xab7de71be9270074L,0x26a5ef0befd28d20L,
|
|
0xe7c0073f7f9c563fL },
|
|
{ 0x1f6d663a0ef59f76L,0x669b3b5420fcb050L,0xc08c1f7a7a6602d4L,
|
|
0xe08504fec65b3c0aL } },
|
|
/* 19 */
|
|
{ { 0xf098f68da031b3caL,0x6d1cab9ee6da6d66L,0x5bfd81fa94f246e8L,
|
|
0x78f018825b0996b4L },
|
|
{ 0xb7eefde43a25787fL,0x8016f80d1dccac9bL,0x0cea4877b35bfc36L,
|
|
0x43a773b87e94747aL } },
|
|
/* 20 */
|
|
{ { 0x62577734d2b533d5L,0x673b8af6a1bdddc0L,0x577e7c9aa79ec293L,
|
|
0xbb6de651c3b266b1L },
|
|
{ 0xe7e9303ab65259b3L,0xd6a0afd3d03a7480L,0xc5ac83d19b3cfc27L,
|
|
0x60b4619a5d18b99bL } },
|
|
/* 21 */
|
|
{ { 0xbd6a38e11ae5aa1cL,0xb8b7652b49e73658L,0x0b130014ee5f87edL,
|
|
0x9d0f27b2aeebffcdL },
|
|
{ 0xca9246317a730a55L,0x9c955b2fddbbc83aL,0x07c1dfe0ac019a71L,
|
|
0x244a566d356ec48dL } },
|
|
/* 22 */
|
|
{ { 0x6db0394aeacf1f96L,0x9f2122a9024c271cL,0x2626ac1b82cbd3b9L,
|
|
0x45e58c873581ef69L },
|
|
{ 0xd3ff479da38f9dbcL,0xa8aaf146e888a040L,0x945adfb246e0bed7L,
|
|
0xc040e21cc1e4b7a4L } },
|
|
/* 23 */
|
|
{ { 0x847af0006f8117b6L,0x651969ff73a35433L,0x482b35761d9475ebL,
|
|
0x1cdf5c97682c6ec7L },
|
|
{ 0x7db775b411f04839L,0x7dbeacf448de1698L,0xb2921dd1b70b3219L,
|
|
0x046755f8a92dff3dL } },
|
|
/* 24 */
|
|
{ { 0xcc8ac5d2bce8ffcdL,0x0d53c48b2fe61a82L,0xf6f161727202d6c7L,
|
|
0x046e5e113b83a5f3L },
|
|
{ 0xe7b8ff64d8007f01L,0x7fb1ef125af43183L,0x045c5ea635e1a03cL,
|
|
0x6e0106c3303d005bL } },
|
|
/* 25 */
|
|
{ { 0x48c7358488dd73b1L,0x7670708f995ed0d9L,0x38385ea8c56a2ab7L,
|
|
0x442594ede901cf1fL },
|
|
{ 0xf8faa2c912d4b65bL,0x94c2343b96c90c37L,0xd326e4a15e978d1fL,
|
|
0xa796fa514c2ee68eL } },
|
|
/* 26 */
|
|
{ { 0x359fb604823addd7L,0x9e2a6183e56693b3L,0xf885b78e3cbf3c80L,
|
|
0xe4ad2da9c69766e9L },
|
|
{ 0x357f7f428e048a61L,0x082d198cc092d9a0L,0xfc3a1af4c03ed8efL,
|
|
0xc5e94046c37b5143L } },
|
|
/* 27 */
|
|
{ { 0x476a538c2be75f9eL,0x6fd1a9e8cb123a78L,0xd85e4df0b109c04bL,
|
|
0x63283dafdb464747L },
|
|
{ 0xce728cf7baf2df15L,0xe592c4550ad9a7f4L,0xfab226ade834bcc3L,
|
|
0x68bd19ab1981a938L } },
|
|
/* 28 */
|
|
{ { 0xc08ead511887d659L,0x3374d5f4b359305aL,0x96986981cfe74fe3L,
|
|
0x495292f53c6fdfd6L },
|
|
{ 0x4a878c9e1acec896L,0xd964b210ec5b4484L,0x6696f7e2664d60a7L,
|
|
0x0ec7530d26036837L } },
|
|
/* 29 */
|
|
{ { 0x2da13a05ad2687bbL,0xa1f83b6af32e21faL,0x390f5ef51dd4607bL,
|
|
0x0f6207a664863f0bL },
|
|
{ 0xbd67e3bb0f138233L,0xdd66b96c272aa718L,0x8ed0040726ec88aeL,
|
|
0xff0db07208ed6dcfL } },
|
|
/* 30 */
|
|
{ { 0x749fa1014c95d553L,0xa44052fd5d680a8aL,0x183b4317ff3b566fL,
|
|
0x313b513c88740ea3L },
|
|
{ 0xb402e2ac08d11549L,0x071ee10bb4dee21cL,0x26b987dd47f2320eL,
|
|
0x2d3abcf986f19f81L } },
|
|
/* 31 */
|
|
{ { 0x4c288501815581a2L,0x9a0a6d56632211afL,0x19ba7a0f0cab2e99L,
|
|
0xc036fa10ded98cdfL },
|
|
{ 0x29ae08bac1fbd009L,0x0b68b19006d15816L,0xc2eb32779b9e0d8fL,
|
|
0xa6b2a2c4b6d40194L } },
|
|
/* 32 */
|
|
{ { 0xd433e50f6d3549cfL,0x6f33696ffacd665eL,0x695bfdacce11fcb4L,
|
|
0x810ee252af7c9860L },
|
|
{ 0x65450fe17159bb2cL,0xf7dfbebe758b357bL,0x2b057e74d69fea72L,
|
|
0xd485717a92731745L } },
|
|
/* 33 */
|
|
{ { 0x11741a8af0cb5a98L,0xd3da8f931f3110bfL,0x1994e2cbab382adfL,
|
|
0x6a6045a72f9a604eL },
|
|
{ 0x170c0d3fa2b2411dL,0xbe0eb83e510e96e0L,0x3bcc9f738865b3ccL,
|
|
0xd3e45cfaf9e15790L } },
|
|
/* 34 */
|
|
{ { 0xce1f69bbe83f7669L,0x09f8ae8272877d6bL,0x9548ae543244278dL,
|
|
0x207755dee3c2c19cL },
|
|
{ 0x87bd61d96fef1945L,0x18813cefb12d28c3L,0x9fbcd1d672df64aaL,
|
|
0x48dc5ee57154b00dL } },
|
|
/* 35 */
|
|
{ { 0x123790bff7e5a199L,0xe0efb8cf989ccbb7L,0xc27a2bfe0a519c79L,
|
|
0xf2fb0aeddff6f445L },
|
|
{ 0x41c09575f0b5025fL,0x550543d740fa9f22L,0x8fa3c8ad380bfbd0L,
|
|
0xa13e9015db28d525L } },
|
|
/* 36 */
|
|
{ { 0xf9f7a350a2b65cbcL,0x0b04b9722a464226L,0x265ce241e23f07a1L,
|
|
0x2bf0d6b01497526fL },
|
|
{ 0xd3d4dd3f4b216fb7L,0xf7d7b867fbdda26aL,0xaeb7b83f6708505cL,
|
|
0x42a94a5a162fe89fL } },
|
|
/* 37 */
|
|
{ { 0x5846ad0beaadf191L,0x0f8a489025a268d7L,0xe8603050494dc1f6L,
|
|
0x2c2dd969c65ede3dL },
|
|
{ 0x6d02171d93849c17L,0x460488ba1da250ddL,0x4810c7063c3a5485L,
|
|
0xf437fa1f42c56dbcL } },
|
|
/* 38 */
|
|
{ { 0x6aa0d7144a0f7dabL,0x0f0497931776e9acL,0x52c0a050f5f39786L,
|
|
0xaaf45b3354707aa8L },
|
|
{ 0x85e37c33c18d364aL,0xd40b9b063e497165L,0xf417168115ec5444L,
|
|
0xcdf6310df4f272bcL } },
|
|
/* 39 */
|
|
{ { 0x7473c6238ea8b7efL,0x08e9351885bc2287L,0x419567722bda8e34L,
|
|
0xf0d008bada9e2ff2L },
|
|
{ 0x2912671d2414d3b1L,0xb3754985b019ea76L,0x5c61b96d453bcbdbL,
|
|
0x5bd5c2f5ca887b8bL } },
|
|
/* 40 */
|
|
{ { 0xef0f469ef49a3154L,0x3e85a5956e2b2e9aL,0x45aaec1eaa924a9cL,
|
|
0xaa12dfc8a09e4719L },
|
|
{ 0x26f272274df69f1dL,0xe0e4c82ca2ff5e73L,0xb9d8ce73b7a9dd44L,
|
|
0x6c036e73e48ca901L } },
|
|
/* 41 */
|
|
{ { 0x5cfae12a0f6e3138L,0x6966ef0025ad345aL,0x8993c64b45672bc5L,
|
|
0x292ff65896afbe24L },
|
|
{ 0xd5250d445e213402L,0xf6580e274392c9feL,0x097b397fda1c72e8L,
|
|
0x644e0c90311b7276L } },
|
|
/* 42 */
|
|
{ { 0xe1e421e1a47153f0L,0xb86c3b79920418c9L,0x93bdce87705d7672L,
|
|
0xf25ae793cab79a77L },
|
|
{ 0x1f3194a36d869d0cL,0x9d55c8824986c264L,0x49fb5ea3096e945eL,
|
|
0x39b8e65313db0a3eL } },
|
|
/* 43 */
|
|
{ { 0x37754200b6fd2e59L,0x35e2c0669255c98fL,0xd9dab21a0e2a5739L,
|
|
0x39122f2f0f19db06L },
|
|
{ 0xcfbce1e003cad53cL,0x225b2c0fe65c17e3L,0x72baf1d29aa13877L,
|
|
0x8de80af8ce80ff8dL } },
|
|
/* 44 */
|
|
{ { 0xafbea8d9207bbb76L,0x921c7e7c21782758L,0xdfa2b74b1c0436b1L,
|
|
0x871949062e368c04L },
|
|
{ 0xb5f928bba3993df5L,0x639d75b5f3b3d26aL,0x011aa78a85b55050L,
|
|
0xfc315e6a5b74fde1L } },
|
|
/* 45 */
|
|
{ { 0x561fd41ae8d6ecfaL,0x5f8c44f61aec7f86L,0x98452a7b4924741dL,
|
|
0xe6d4a7adee389088L },
|
|
{ 0x60552ed14593c75dL,0x70a70da4dd271162L,0xd2aede937ba2c7dbL,
|
|
0x35dfaf9a9be2ae57L } },
|
|
/* 46 */
|
|
{ { 0x6b956fcdaa736636L,0x09f51d97ae2cab7eL,0xfb10bf410f349966L,
|
|
0x1da5c7d71c830d2bL },
|
|
{ 0x5c41e4833cce6825L,0x15ad118ff9573c3bL,0xa28552c7f23036b8L,
|
|
0x7077c0fddbf4b9d6L } },
|
|
/* 47 */
|
|
{ { 0xbf63ff8d46b9661cL,0xa1dfd36b0d2cfd71L,0x0373e140a847f8f7L,
|
|
0x53a8632ee50efe44L },
|
|
{ 0x0976ff68696d8051L,0xdaec0c95c74f468aL,0x62994dc35e4e26bdL,
|
|
0x028ca76d34e1fcc1L } },
|
|
/* 48 */
|
|
{ { 0xd11d47dcfc9877eeL,0xc8b36210801d0002L,0xd002c11754c260b6L,
|
|
0x04c17cd86962f046L },
|
|
{ 0x6d9bd094b0daddf5L,0xbea2357524ce55c0L,0x663356e672da03b5L,
|
|
0xf7ba4de9fed97474L } },
|
|
/* 49 */
|
|
{ { 0xd0dbfa34ebe1263fL,0x5576373571ae7ce6L,0xd244055382a6f523L,
|
|
0xe31f960052131c41L },
|
|
{ 0xd1bb9216ea6b6ec6L,0x37a1d12e73c2fc44L,0xc10e7eac89d0a294L,
|
|
0xaa3a6259ce34d47bL } },
|
|
/* 50 */
|
|
{ { 0xfbcf9df536f3dcd3L,0x6ceded50d2bf7360L,0x491710fadf504f5bL,
|
|
0x2398dd627e79daeeL },
|
|
{ 0xcf4705a36d09569eL,0xea0619bb5149f769L,0xff9c037735f6034cL,
|
|
0x5717f5b21c046210L } },
|
|
/* 51 */
|
|
{ { 0x9fe229c921dd895eL,0x8e51850040c28451L,0xfa13d2391d637ecdL,
|
|
0x660a2c560e3c28deL },
|
|
{ 0x9cca88aed67fcbd0L,0xc84724780ea9f096L,0x32b2f48172e92b4dL,
|
|
0x624ee54c4f522453L } },
|
|
/* 52 */
|
|
{ { 0x09549ce4d897ecccL,0x4d49d1d93f9880aaL,0x723c2423043a7c20L,
|
|
0x4f392afb92bdfbc0L },
|
|
{ 0x6969f8fa7de44fd9L,0xb66cfbe457b32156L,0xdb2fa803368ebc3cL,
|
|
0x8a3e7977ccdb399cL } },
|
|
/* 53 */
|
|
{ { 0xdde1881f06c4b125L,0xae34e300f6e3ca8cL,0xef6999de5c7a13e9L,
|
|
0x3888d02370c24404L },
|
|
{ 0x7628035644f91081L,0x3d9fcf615f015504L,0x1827edc8632cd36eL,
|
|
0xa5e62e4718102336L } },
|
|
/* 54 */
|
|
{ { 0x1a825ee32facd6c8L,0x699c635454bcbc66L,0x0ce3edf798df9931L,
|
|
0x2c4768e6466a5adcL },
|
|
{ 0xb346ff8c90a64bc9L,0x630a6020e4779f5cL,0xd949d064bc05e884L,
|
|
0x7b5e6441f9e652a0L } },
|
|
/* 55 */
|
|
{ { 0x2169422c1d28444aL,0xe996c5d8be136a39L,0x2387afe5fb0c7fceL,
|
|
0xb8af73cb0c8d744aL },
|
|
{ 0x5fde83aa338b86fdL,0xfee3f158a58a5cffL,0xc9ee8f6f20ac9433L,
|
|
0xa036395f7f3f0895L } },
|
|
/* 56 */
|
|
{ { 0x8c73c6bba10f7770L,0xa6f16d81a12a0e24L,0x100df68251bc2b9fL,
|
|
0x4be36b01875fb533L },
|
|
{ 0x9226086e9fb56dbbL,0x306fef8b07e7a4f8L,0xeeaccc0566d52f20L,
|
|
0x8cbc9a871bdc00c0L } },
|
|
/* 57 */
|
|
{ { 0xe131895cc0dac4abL,0xa874a440712ff112L,0x6332ae7c6a1cee57L,
|
|
0x44e7553e0c0835f8L },
|
|
{ 0x6d503fff7734002dL,0x9d35cb8b0b34425cL,0x95f702760e8738b5L,
|
|
0x470a683a5eb8fc18L } },
|
|
/* 58 */
|
|
{ { 0x81b761dc90513482L,0x0287202a01e9276aL,0xcda441ee0ce73083L,
|
|
0x16410690c63dc6efL },
|
|
{ 0xf5034a066d06a2edL,0xdd4d7745189b100bL,0xd914ae72ab8218c9L,
|
|
0xd73479fd7abcbb4fL } },
|
|
/* 59 */
|
|
{ { 0x7edefb165ad4c6e5L,0x262cf08f5b06d04dL,0x12ed5bb18575cb14L,
|
|
0x816469e30771666bL },
|
|
{ 0xd7ab9d79561e291eL,0xeb9daf22c1de1661L,0xf49827eb135e0513L,
|
|
0x0a36dd23f0dd3f9cL } },
|
|
/* 60 */
|
|
{ { 0x098d32c741d5533cL,0x7c5f5a9e8684628fL,0x39a228ade349bd11L,
|
|
0xe331dfd6fdbab118L },
|
|
{ 0x5100ab686bcc6ed8L,0x7160c3bdef7a260eL,0x9063d9a7bce850d7L,
|
|
0xd3b4782a492e3389L } },
|
|
/* 61 */
|
|
{ { 0xa149b6e8f3821f90L,0x92edd9ed66eb7aadL,0x0bb669531a013116L,
|
|
0x7281275a4c86a5bdL },
|
|
{ 0x503858f7d3ff47e5L,0x5e1616bc61016441L,0x62b0f11a7dfd9bb1L,
|
|
0x2c062e7ece145059L } },
|
|
/* 62 */
|
|
{ { 0xa76f996f0159ac2eL,0x281e7736cbdb2713L,0x2ad6d28808e46047L,
|
|
0x282a35f92c4e7ef1L },
|
|
{ 0x9c354b1ec0ce5cd2L,0xcf99efc91379c229L,0x992caf383e82c11eL,
|
|
0xc71cd513554d2abdL } },
|
|
/* 63 */
|
|
{ { 0x4885de9c09b578f4L,0x1884e258e3affa7aL,0x8f76b1b759182f1fL,
|
|
0xc50f6740cf47f3a3L },
|
|
{ 0xa9c4adf3374b68eaL,0xa406f32369965fe2L,0x2f86a22285a53050L,
|
|
0xb9ecb3a7212958dcL } },
|
|
/* 64 */
|
|
{ { 0x56f8410ef4f8b16aL,0x97241afec47b266aL,0x0a406b8e6d9c87c1L,
|
|
0x803f3e02cd42ab1bL },
|
|
{ 0x7f0309a804dbec69L,0xa83b85f73bbad05fL,0xc6097273ad8e197fL,
|
|
0xc097440e5067adc1L } },
|
|
/* 65 */
|
|
{ { 0x846a56f2c379ab34L,0xa8ee068b841df8d1L,0x20314459176c68efL,
|
|
0xf1af32d5915f1f30L },
|
|
{ 0x99c375315d75bd50L,0x837cffbaf72f67bcL,0x0613a41848d7723fL,
|
|
0x23d0f130e2d41c8bL } },
|
|
/* 66 */
|
|
{ { 0x857ab6edf41500d9L,0x0d890ae5fcbeada8L,0x52fe864889725951L,
|
|
0xb0288dd6c0a3faddL },
|
|
{ 0x85320f30650bcb08L,0x71af6313695d6e16L,0x31f520a7b989aa76L,
|
|
0xffd3724ff408c8d2L } },
|
|
/* 67 */
|
|
{ { 0x53968e64b458e6cbL,0x992dad20317a5d28L,0x3814ae0b7aa75f56L,
|
|
0xf5590f4ad78c26dfL },
|
|
{ 0x0fc24bd3cf0ba55aL,0x0fc4724a0c778baeL,0x1ce9864f683b674aL,
|
|
0x18d6da54f6f74a20L } },
|
|
/* 68 */
|
|
{ { 0xed93e225d5be5a2bL,0x6fe799835934f3c6L,0x4314092622626ffcL,
|
|
0x50bbb4d97990216aL },
|
|
{ 0x378191c6e57ec63eL,0x65422c40181dcdb2L,0x41a8099b0236e0f6L,
|
|
0x2b10011801fe49c3L } },
|
|
/* 69 */
|
|
{ { 0xfc68b5c59b391593L,0xc385f5a2598270fcL,0x7144f3aad19adcbbL,
|
|
0xdd55899983fbae0cL },
|
|
{ 0x93b88b8e74b82ff4L,0xd2e03c4071e734c9L,0x9a7a9eaf43c0322aL,
|
|
0xe6e4c551149d6041L } },
|
|
/* 70 */
|
|
{ { 0x55f655bb1e9af288L,0x647e1a64f7ada931L,0x43697e4bcb2820e5L,
|
|
0x51e00db107ed56ffL },
|
|
{ 0x43d169b8771c327eL,0x29cdb20b4a96c2adL,0xc07d51f53deb4779L,
|
|
0xe22f424149829177L } },
|
|
/* 71 */
|
|
{ { 0xcd45e8f4635f1abbL,0x7edc0cb568538874L,0xc9472c1fb5a8034dL,
|
|
0xf709373d52dc48c9L },
|
|
{ 0x401966bba8af30d6L,0x95bf5f4af137b69cL,0x3966162a9361c47eL,
|
|
0xbd52d288e7275b11L } },
|
|
/* 72 */
|
|
{ { 0xab155c7a9c5fa877L,0x17dad6727d3a3d48L,0x43f43f9e73d189d8L,
|
|
0xa0d0f8e4c8aa77a6L },
|
|
{ 0x0bbeafd8cc94f92dL,0xd818c8be0c4ddb3aL,0x22cc65f8b82eba14L,
|
|
0xa56c78c7946d6a00L } },
|
|
/* 73 */
|
|
{ { 0x2962391b0dd09529L,0x803e0ea63daddfcfL,0x2c77351f5b5bf481L,
|
|
0xd8befdf8731a367aL },
|
|
{ 0xab919d42fc0157f4L,0xf51caed7fec8e650L,0xcdf9cb4002d48b0aL,
|
|
0x854a68a5ce9f6478L } },
|
|
/* 74 */
|
|
{ { 0xdc35f67b63506ea5L,0x9286c489a4fe0d66L,0x3f101d3bfe95cd4dL,
|
|
0x5cacea0b98846a95L },
|
|
{ 0xa90df60c9ceac44dL,0x3db29af4354d1c3aL,0x08dd3de8ad5dbabeL,
|
|
0xe4982d1235e4efa9L } },
|
|
/* 75 */
|
|
{ { 0x23104a22c34cd55eL,0x58695bb32680d132L,0xfb345afa1fa1d943L,
|
|
0x8046b7f616b20499L },
|
|
{ 0xb533581e38e7d098L,0xd7f61e8df46f0b70L,0x30dea9ea44cb78c4L,
|
|
0xeb17ca7b9082af55L } },
|
|
/* 76 */
|
|
{ { 0x1751b59876a145b9L,0xa5cf6b0fc1bc71ecL,0xd3e03565392715bbL,
|
|
0x097b00bafab5e131L },
|
|
{ 0xaa66c8e9565f69e1L,0x77e8f75ab5be5199L,0x6033ba11da4fd984L,
|
|
0xf95c747bafdbcc9eL } },
|
|
/* 77 */
|
|
{ { 0x558f01d3bebae45eL,0xa8ebe9f0c4bc6955L,0xaeb705b1dbc64fc6L,
|
|
0x3512601e566ed837L },
|
|
{ 0x9336f1e1fa1161cdL,0x328ab8d54c65ef87L,0x4757eee2724f21e5L,
|
|
0x0ef971236068ab6bL } },
|
|
/* 78 */
|
|
{ { 0x02598cf754ca4226L,0x5eede138f8642c8eL,0x48963f74468e1790L,
|
|
0xfc16d9333b4fbc95L },
|
|
{ 0xbe96fb31e7c800caL,0x138063312678adaaL,0x3d6244976ff3e8b5L,
|
|
0x14ca4af1b95d7a17L } },
|
|
/* 79 */
|
|
{ { 0x7a4771babd2f81d5L,0x1a5f9d6901f7d196L,0xd898bef7cad9c907L,
|
|
0x4057b063f59c231dL },
|
|
{ 0xbffd82fe89c05c0aL,0xe4911c6f1dc0df85L,0x3befccaea35a16dbL,
|
|
0x1c3b5d64f1330b13L } },
|
|
/* 80 */
|
|
{ { 0x5fe14bfe80ec21feL,0xf6ce116ac255be82L,0x98bc5a072f4a5d67L,
|
|
0xfad27148db7e63afL },
|
|
{ 0x90c0b6ac29ab05b3L,0x37a9a83c4e251ae6L,0x0a7dc875c2aade7dL,
|
|
0x77387de39f0e1a84L } },
|
|
/* 81 */
|
|
{ { 0x1e9ecc49a56c0dd7L,0xa5cffcd846086c74L,0x8f7a1408f505aeceL,
|
|
0xb37b85c0bef0c47eL },
|
|
{ 0x3596b6e4cc0e6a8fL,0xfd6d4bbf6b388f23L,0xaba453fac39cef4eL,
|
|
0x9c135ac8f9f628d5L } },
|
|
/* 82 */
|
|
{ { 0x32aa320284e35743L,0x320d6ab185a3cdefL,0xb821b1761df19819L,
|
|
0x5721361fc433851fL },
|
|
{ 0x1f0db36a71fc9168L,0x5f98ba735e5c403cL,0xf64ca87e37bcd8f5L,
|
|
0xdcbac3c9e6bb11bdL } },
|
|
/* 83 */
|
|
{ { 0xf01d99684518cbe2L,0xd242fc189c9eb04eL,0x727663c7e47feebfL,
|
|
0xb8c1c89e2d626862L },
|
|
{ 0x51a58bddc8e1d569L,0x563809c8b7d88cd0L,0x26c27fd9f11f31ebL,
|
|
0x5d23bbda2f9422d4L } },
|
|
/* 84 */
|
|
{ { 0x0a1c729495c8f8beL,0x2961c4803bf362bfL,0x9e418403df63d4acL,
|
|
0xc109f9cb91ece900L },
|
|
{ 0xc2d095d058945705L,0xb9083d96ddeb85c0L,0x84692b8d7a40449bL,
|
|
0x9bc3344f2eee1ee1L } },
|
|
/* 85 */
|
|
{ { 0x0d5ae35642913074L,0x55491b2748a542b1L,0x469ca665b310732aL,
|
|
0x29591d525f1a4cc1L },
|
|
{ 0xe76f5b6bb84f983fL,0xbe7eef419f5f84e1L,0x1200d49680baa189L,
|
|
0x6376551f18ef332cL } },
|
|
/* 86 */
|
|
{ { 0xbda5f14e562976ccL,0x22bca3e60ef12c38L,0xbbfa30646cca9852L,
|
|
0xbdb79dc808e2987aL },
|
|
{ 0xfd2cb5c9cb06a772L,0x38f475aafe536dceL,0xc2a3e0227c2b5db8L,
|
|
0x8ee86001add3c14aL } },
|
|
/* 87 */
|
|
{ { 0xcbe96981a4ade873L,0x7ee9aa4dc4fba48cL,0x2cee28995a054ba5L,
|
|
0x92e51d7a6f77aa4bL },
|
|
{ 0x948bafa87190a34dL,0xd698f75bf6bd1ed1L,0xd00ee6e30caf1144L,
|
|
0x5182f86f0a56aaaaL } },
|
|
/* 88 */
|
|
{ { 0xfba6212c7a4cc99cL,0xff609b683e6d9ca1L,0x5dbb27cb5ac98c5aL,
|
|
0x91dcab5d4073a6f2L },
|
|
{ 0x01b6cc3d5f575a70L,0x0cb361396f8d87faL,0x165d4e8c89981736L,
|
|
0x17a0cedb97974f2bL } },
|
|
/* 89 */
|
|
{ { 0x38861e2a076c8d3aL,0x701aad39210f924bL,0x94d0eae413a835d9L,
|
|
0x2e8ce36c7f4cdf41L },
|
|
{ 0x91273dab037a862bL,0x01ba9bb760e4c8faL,0xf964538833baf2ddL,
|
|
0xf4ccc6cb34f668f3L } },
|
|
/* 90 */
|
|
{ { 0x44ef525cf1f79687L,0x7c59549592efa815L,0xe1231741a5c78d29L,
|
|
0xac0db4889a0df3c9L },
|
|
{ 0x86bfc711df01747fL,0x592b9358ef17df13L,0xe5880e4f5ccb6bb5L,
|
|
0x95a64a6194c974a2L } },
|
|
/* 91 */
|
|
{ { 0x72c1efdac15a4c93L,0x40269b7382585141L,0x6a8dfb1c16cb0badL,
|
|
0x231e54ba29210677L },
|
|
{ 0xa70df9178ae6d2dcL,0x4d6aa63f39112918L,0xf627726b5e5b7223L,
|
|
0xab0be032d8a731e1L } },
|
|
/* 92 */
|
|
{ { 0x097ad0e98d131f2dL,0x637f09e33b04f101L,0x1ac86196d5e9a748L,
|
|
0xf1bcc8802cf6a679L },
|
|
{ 0x25c69140e8daacb4L,0x3c4e405560f65009L,0x591cc8fc477937a6L,
|
|
0x851694695aebb271L } },
|
|
/* 93 */
|
|
{ { 0xde35c143f1dcf593L,0x78202b29b018be3bL,0xe9cdadc29bdd9d3dL,
|
|
0x8f67d9d2daad55d8L },
|
|
{ 0x841116567481ea5fL,0xe7d2dde9e34c590cL,0xffdd43f405053fa8L,
|
|
0xf84572b9c0728b5dL } },
|
|
/* 94 */
|
|
{ { 0x5e1a7a7197af71c9L,0xa14494447a736565L,0xa1b4ae070e1d5063L,
|
|
0xedee2710616b2c19L },
|
|
{ 0xb2f034f511734121L,0x1cac6e554a25e9f0L,0x8dc148f3a40c2ecfL,
|
|
0x9fd27e9b44ebd7f4L } },
|
|
/* 95 */
|
|
{ { 0x3cc7658af6e2cb16L,0xe3eb7d2cfe5919b6L,0x5a8c5816168d5583L,
|
|
0xa40c2fb6958ff387L },
|
|
{ 0x8c9ec560fedcc158L,0x7ad804c655f23056L,0xd93967049a307e12L,
|
|
0x99bc9bb87dc6decfL } },
|
|
/* 96 */
|
|
{ { 0x84a9521d927dafc6L,0x52c1fb695c09cd19L,0x9d9581a0f9366ddeL,
|
|
0x9abe210ba16d7e64L },
|
|
{ 0x480af84a48915220L,0xfa73176a4dd816c6L,0xc7d539871681ca5aL,
|
|
0x7881c25787f344b0L } },
|
|
/* 97 */
|
|
{ { 0x93399b51e0bcf3ffL,0x0d02cbc5127f74f6L,0x8fb465a2dd01d968L,
|
|
0x15e6e319a30e8940L },
|
|
{ 0x646d6e0d3e0e05f4L,0xfad7bddc43588404L,0xbe61c7d1c4f850d3L,
|
|
0x0e55facf191172ceL } },
|
|
/* 98 */
|
|
{ { 0x7e9d9806f8787564L,0x1a33172131e85ce6L,0x6b0158cab819e8d6L,
|
|
0xd73d09766fe96577L },
|
|
{ 0x424834251eb7206eL,0xa519290fc618bb42L,0x5dcbb8595e30a520L,
|
|
0x9250a3748f15a50bL } },
|
|
/* 99 */
|
|
{ { 0xcaff08f8be577410L,0xfd408a035077a8c6L,0xf1f63289ec0a63a4L,
|
|
0x77414082c1cc8c0bL },
|
|
{ 0x05a40fa6eb0991cdL,0xc1ca086649fdc296L,0x3a68a3c7b324fd40L,
|
|
0x8cb04f4d12eb20b9L } },
|
|
/* 100 */
|
|
{ { 0xb1c2d0556906171cL,0x9073e9cdb0240c3fL,0xdb8e6b4fd8906841L,
|
|
0xe4e429ef47123b51L },
|
|
{ 0x0b8dd53c38ec36f4L,0xf9d2dc01ff4b6a27L,0x5d066e07879a9a48L,
|
|
0x37bca2ff3c6e6552L } },
|
|
/* 101 */
|
|
{ { 0x4cd2e3c7df562470L,0x44f272a2c0964ac9L,0x7c6d5df980c793beL,
|
|
0x59913edc3002b22aL },
|
|
{ 0x7a139a835750592aL,0x99e01d80e783de02L,0xcf8c0375ea05d64fL,
|
|
0x43786e4ab013e226L } },
|
|
/* 102 */
|
|
{ { 0xff32b0ed9e56b5a6L,0x0750d9a6d9fc68f9L,0xec15e845597846a7L,
|
|
0x8638ca98b7e79e7aL },
|
|
{ 0x2f5ae0960afc24b2L,0x05398eaf4dace8f2L,0x3b765dd0aecba78fL,
|
|
0x1ecdd36a7b3aa6f0L } },
|
|
/* 103 */
|
|
{ { 0x5d3acd626c5ff2f3L,0xa2d516c02873a978L,0xad94c9fad2110d54L,
|
|
0xd85d0f85d459f32dL },
|
|
{ 0x9f700b8d10b11da3L,0xd2c22c30a78318c4L,0x556988f49208decdL,
|
|
0xa04f19c3b4ed3c62L } },
|
|
/* 104 */
|
|
{ { 0x087924c8ed7f93bdL,0xcb64ac5d392f51f6L,0x7cae330a821b71afL,
|
|
0x92b2eeea5c0950b0L },
|
|
{ 0x85ac4c9485b6e235L,0xab2ca4a92936c0f0L,0x80faa6b3e0508891L,
|
|
0x1ee782215834276cL } },
|
|
/* 105 */
|
|
{ { 0xa60a2e00e63e79f7L,0xf590e7b2f399d906L,0x9021054a6607c09dL,
|
|
0xf3f2ced857a6e150L },
|
|
{ 0x200510f3f10d9b55L,0x9d2fcfacd8642648L,0xe5631aa7e8bd0e7cL,
|
|
0x0f56a4543da3e210L } },
|
|
/* 106 */
|
|
{ { 0x5b21bffa1043e0dfL,0x6c74b6cc9c007e6dL,0x1a656ec0d4a8517aL,
|
|
0xbd8f17411969e263L },
|
|
{ 0x8a9bbb86beb7494aL,0x1567d46f45f3b838L,0xdf7a12a7a4e5a79aL,
|
|
0x2d1a1c3530ccfa09L } },
|
|
/* 107 */
|
|
{ { 0x192e3813506508daL,0x336180c4a1d795a7L,0xcddb59497a9944b3L,
|
|
0xa107a65eb91fba46L },
|
|
{ 0xe6d1d1c50f94d639L,0x8b4af3758a58b7d7L,0x1a7c5584bd37ca1cL,
|
|
0x183d760af87a9af2L } },
|
|
/* 108 */
|
|
{ { 0x29d697110dde59a4L,0xf1ad8d070e8bef87L,0x229b49634f2ebe78L,
|
|
0x1d44179dc269d754L },
|
|
{ 0xb32dc0cf8390d30eL,0x0a3b27530de8110cL,0x31af1dc52bc0339aL,
|
|
0x771f9cc29606d262L } },
|
|
/* 109 */
|
|
{ { 0x99993e7785040739L,0x44539db98026a939L,0xcf40f6f2f5f8fc26L,
|
|
0x64427a310362718eL },
|
|
{ 0x4f4f2d8785428aa8L,0x7b7adc3febfb49a8L,0x201b2c6df23d01acL,
|
|
0x49d9b7496ae90d6dL } },
|
|
/* 110 */
|
|
{ { 0xcc78d8bc435d1099L,0x2adbcd4e8e8d1a08L,0x02c2e2a02cb68a41L,
|
|
0x9037d81b3f605445L },
|
|
{ 0x7cdbac27074c7b61L,0xfe2031ab57bfd72eL,0x61ccec96596d5352L,
|
|
0x08c3de6a7cc0639cL } },
|
|
/* 111 */
|
|
{ { 0x20fdd020f6d552abL,0x56baff9805cd81f1L,0x06fb7c3e91351291L,
|
|
0xc690944245796b2fL },
|
|
{ 0x17b3ae9c41231bd1L,0x1eac6e875cc58205L,0x208837abf9d6a122L,
|
|
0x3fa3db02cafe3ac0L } },
|
|
/* 112 */
|
|
{ { 0xd75a3e6505058880L,0x7da365ef643943f2L,0x4147861cfab24925L,
|
|
0xc5c4bdb0fdb808ffL },
|
|
{ 0x73513e34b272b56bL,0xc8327e9511b9043aL,0xfd8ce37df8844969L,
|
|
0x2d56db9446c2b6b5L } },
|
|
/* 113 */
|
|
{ { 0x2461782fff46ac6bL,0xd19f792607a2e425L,0xfafea3c409a48de1L,
|
|
0x0f56bd9de503ba42L },
|
|
{ 0x137d4ed1345cda49L,0x821158fc816f299dL,0xe7c6a54aaeb43402L,
|
|
0x4003bb9d1173b5f1L } },
|
|
/* 114 */
|
|
{ { 0x3b8e8189a0803387L,0xece115f539cbd404L,0x4297208dd2877f21L,
|
|
0x53765522a07f2f9eL },
|
|
{ 0xa4980a21a8a4182dL,0xa2bbd07a3219df79L,0x674d0a2e1a19a2d4L,
|
|
0x7a056f586c5d4549L } },
|
|
/* 115 */
|
|
{ { 0x646b25589d8a2a47L,0x5b582948c3df2773L,0x51ec000eabf0d539L,
|
|
0x77d482f17a1a2675L },
|
|
{ 0xb8a1bd9587853948L,0xa6f817bd6cfbffeeL,0xab6ec05780681e47L,
|
|
0x4115012b2b38b0e4L } },
|
|
/* 116 */
|
|
{ { 0x3c73f0f46de28cedL,0x1d5da7609b13ec47L,0x61b8ce9e6e5c6392L,
|
|
0xcdf04572fbea0946L },
|
|
{ 0x1cb3c58b6c53c3b0L,0x97fe3c10447b843cL,0xfb2b8ae12cb9780eL,
|
|
0xee703dda97383109L } },
|
|
/* 117 */
|
|
{ { 0x34515140ff57e43aL,0xd44660d3b1b811b8L,0x2b3b5dff8f42b986L,
|
|
0x2a0ad89da162ce21L },
|
|
{ 0x64e4a6946bc277baL,0xc788c954c141c276L,0x141aa64ccabf6274L,
|
|
0xd62d0b67ac2b4659L } },
|
|
/* 118 */
|
|
{ { 0x39c5d87b2c054ac4L,0x57005859f27df788L,0xedf7cbf3b18128d6L,
|
|
0xb39a23f2991c2426L },
|
|
{ 0x95284a15f0b16ae5L,0x0c6a05b1a136f51bL,0x1d63c137f2700783L,
|
|
0x04ed0092c0674cc5L } },
|
|
/* 119 */
|
|
{ { 0x1f4185d19ae90393L,0x3047b4294a3d64e6L,0xae0001a69854fc14L,
|
|
0xa0a91fc10177c387L },
|
|
{ 0xff0a3f01ae2c831eL,0xbb76ae822b727e16L,0x8f12c8a15a3075b4L,
|
|
0x084cf9889ed20c41L } },
|
|
/* 120 */
|
|
{ { 0xd98509defca6becfL,0x2fceae807dffb328L,0x5d8a15c44778e8b9L,
|
|
0xd57955b273abf77eL },
|
|
{ 0x210da79e31b5d4f1L,0xaa52f04b3cfa7a1cL,0xd4d12089dc27c20bL,
|
|
0x8e14ea4202d141f1L } },
|
|
/* 121 */
|
|
{ { 0xeed50345f2897042L,0x8d05331f43402c4aL,0xc8d9c194c8bdfb21L,
|
|
0x597e1a372aa4d158L },
|
|
{ 0x0327ec1acf0bd68cL,0x6d4be0dcab024945L,0x5b9c8d7ac9fe3e84L,
|
|
0xca3f0236199b4deaL } },
|
|
/* 122 */
|
|
{ { 0x592a10b56170bd20L,0x0ea897f16d3f5de7L,0xa3363ff144b2ade2L,
|
|
0xbde7fd7e309c07e4L },
|
|
{ 0x516bb6d2b8f5432cL,0x210dc1cbe043444bL,0x3db01e6ff8f95b5aL,
|
|
0xb623ad0e0a7dd198L } },
|
|
/* 123 */
|
|
{ { 0xa75bd67560c7b65bL,0xab8c559023a4a289L,0xf8220fd0d7b26795L,
|
|
0xd6aa2e4658ec137bL },
|
|
{ 0x10abc00b5138bb85L,0x8c31d121d833a95cL,0xb24ff00b1702a32eL,
|
|
0x111662e02dcc513aL } },
|
|
/* 124 */
|
|
{ { 0x78114015efb42b87L,0xbd9f5d701b6c4dffL,0x66ecccd7a7d7c129L,
|
|
0xdb3ee1cb94b750f8L },
|
|
{ 0xb26f3db0f34837cfL,0xe7eed18bb9578d4fL,0x5d2cdf937c56657dL,
|
|
0x886a644252206a59L } },
|
|
/* 125 */
|
|
{ { 0x3c234cfb65b569eaL,0x20011141f72119c1L,0x8badc85da15a619eL,
|
|
0xa70cf4eb018a17bcL },
|
|
{ 0x224f97ae8c4a6a65L,0x36e5cf270134378fL,0xbe3a609e4f7e0960L,
|
|
0xaa4772abd1747b77L } },
|
|
/* 126 */
|
|
{ { 0x676761317aa60cc0L,0xc79163610368115fL,0xded98bb4bbc1bb5aL,
|
|
0x611a6ddc30faf974L },
|
|
{ 0x30e78cbcc15ee47aL,0x2e8962824e0d96a5L,0x36f35adf3dd9ed88L,
|
|
0x5cfffaf816429c88L } },
|
|
/* 127 */
|
|
{ { 0xc0d54cff9b7a99cdL,0x7bf3b99d843c45a1L,0x038a908f62c739e1L,
|
|
0x6e5a6b237dc1994cL },
|
|
{ 0xef8b454e0ba5db77L,0xb7b8807facf60d63L,0xe591c0c676608378L,
|
|
0x481a238d242dabccL } },
|
|
/* 128 */
|
|
{ { 0xe3417bc035d0b34aL,0x440b386b8327c0a7L,0x8fb7262dac0362d1L,
|
|
0x2c41114ce0cdf943L },
|
|
{ 0x2ba5cef1ad95a0b1L,0xc09b37a867d54362L,0x26d6cdd201e486c9L,
|
|
0x20477abf42ff9297L } },
|
|
/* 129 */
|
|
{ { 0x2f75173c18d65dbfL,0x77bf940e339edad8L,0x7022d26bdcf1001cL,
|
|
0xac66409ac77396b6L },
|
|
{ 0x8b0bb36fc6261cc3L,0x213f7bc9190e7e90L,0x6541cebaa45e6c10L,
|
|
0xce8e6975cc122f85L } },
|
|
/* 130 */
|
|
{ { 0x0f121b41bc0a67d2L,0x62d4760a444d248aL,0x0e044f1d659b4737L,
|
|
0x08fde365250bb4a8L },
|
|
{ 0xaceec3da848bf287L,0xc2a62182d3369d6eL,0x3582dfdc92449482L,
|
|
0x2f7e2fd2565d6cd7L } },
|
|
/* 131 */
|
|
{ { 0xae4b92dbc3770fa7L,0x095e8d5c379043f9L,0x54f34e9d17761171L,
|
|
0xc65be92e907702aeL },
|
|
{ 0x2758a303f6fd0a40L,0xe7d822e3bcce784bL,0x7ae4f5854f9767bfL,
|
|
0x4bff8e47d1193b3aL } },
|
|
/* 132 */
|
|
{ { 0xcd41d21f00ff1480L,0x2ab8fb7d0754db16L,0xac81d2efbbe0f3eaL,
|
|
0x3e4e4ae65772967dL },
|
|
{ 0x7e18f36d3c5303e6L,0x3bd9994b92262397L,0x9ed70e261324c3c0L,
|
|
0x5388aefd58ec6028L } },
|
|
/* 133 */
|
|
{ { 0xad1317eb5e5d7713L,0x09b985ee75de49daL,0x32f5bc4fc74fb261L,
|
|
0x5cf908d14f75be0eL },
|
|
{ 0x760435108e657b12L,0xbfd421a5b96ed9e6L,0x0e29f51f8970ccc2L,
|
|
0xa698ba4060f00ce2L } },
|
|
/* 134 */
|
|
{ { 0x73db1686ef748fecL,0xe6e755a27e9d2cf9L,0x630b6544ce265effL,
|
|
0xb142ef8a7aebad8dL },
|
|
{ 0xad31af9f17d5770aL,0x66af3b672cb3412fL,0x6bd60d1bdf3359deL,
|
|
0xd1896a9658515075L } },
|
|
/* 135 */
|
|
{ { 0xec5957ab33c41c08L,0x87de94ac5468e2e1L,0x18816b73ac472f6cL,
|
|
0x267b0e0b7981da39L },
|
|
{ 0x6e554e5d8e62b988L,0xd8ddc755116d21e7L,0x4610faf03d2a6f99L,
|
|
0xb54e287aa1119393L } },
|
|
/* 136 */
|
|
{ { 0x0a0122b5178a876bL,0x51ff96ff085104b4L,0x050b31ab14f29f76L,
|
|
0x84abb28b5f87d4e6L },
|
|
{ 0xd5ed439f8270790aL,0x2d6cb59d85e3f46bL,0x75f55c1b6c1e2212L,
|
|
0xe5436f6717655640L } },
|
|
/* 137 */
|
|
{ { 0x53f9025e2286e8d5L,0x353c95b4864453beL,0xd832f5bde408e3a0L,
|
|
0x0404f68b5b9ce99eL },
|
|
{ 0xcad33bdea781e8e5L,0x3cdf5018163c2f5bL,0x575769600119caa3L,
|
|
0x3a4263df0ac1c701L } },
|
|
/* 138 */
|
|
{ { 0xc2965ecc9aeb596dL,0x01ea03e7023c92b4L,0x4704b4b62e013961L,
|
|
0x0ca8fd3f905ea367L },
|
|
{ 0x92523a42551b2b61L,0x1eb7a89c390fcd06L,0xe7f1d2be0392a63eL,
|
|
0x96dca2644ddb0c33L } },
|
|
/* 139 */
|
|
{ { 0x203bb43a387510afL,0x846feaa8a9a36a01L,0xd23a57702f950378L,
|
|
0x4363e2123aad59dcL },
|
|
{ 0xca43a1c740246a47L,0xb362b8d2e55dd24dL,0xf9b086045d8faf96L,
|
|
0x840e115cd8bb98c4L } },
|
|
/* 140 */
|
|
{ { 0xf12205e21023e8a7L,0xc808a8cdd8dc7a0bL,0xe292a272163a5ddfL,
|
|
0x5e0d6abd30ded6d4L },
|
|
{ 0x07a721c27cfc0f64L,0x42eec01d0e55ed88L,0x26a7bef91d1f9db2L,
|
|
0x7dea48f42945a25aL } },
|
|
/* 141 */
|
|
{ { 0xabdf6f1ce5060a81L,0xe79f9c72f8f95615L,0xcfd36c5406ac268bL,
|
|
0xabc2a2beebfd16d1L },
|
|
{ 0x8ac66f91d3e2eac7L,0x6f10ba63d2dd0466L,0x6790e3770282d31bL,
|
|
0x4ea353946c7eefc1L } },
|
|
/* 142 */
|
|
{ { 0xed8a2f8d5266309dL,0x0a51c6c081945a3eL,0xcecaf45a578c5dc1L,
|
|
0x3a76e6891c94ffc3L },
|
|
{ 0x9aace8a47d7b0d0fL,0x963ace968f584a5fL,0x51a30c724e697fbeL,
|
|
0x8212a10a465e6464L } },
|
|
/* 143 */
|
|
{ { 0xef7c61c3cfab8caaL,0x18eb8e840e142390L,0xcd1dff677e9733caL,
|
|
0xaa7cab71599cb164L },
|
|
{ 0x02fc9273bc837bd1L,0xc06407d0c36af5d7L,0x17621292f423da49L,
|
|
0x40e38073fe0617c3L } },
|
|
/* 144 */
|
|
{ { 0xf4f80824a7bf9b7cL,0x365d23203fbe30d0L,0xbfbe532097cf9ce3L,
|
|
0xe3604700b3055526L },
|
|
{ 0x4dcb99116cc6c2c7L,0x72683708ba4cbee6L,0xdcded434637ad9ecL,
|
|
0x6542d677a3dee15fL } },
|
|
/* 145 */
|
|
{ { 0x3f32b6d07b6c377aL,0x6cb03847903448beL,0xd6fdd3a820da8af7L,
|
|
0xa6534aee09bb6f21L },
|
|
{ 0x30a1780d1035facfL,0x35e55a339dcb47e6L,0x6ea50fe1c447f393L,
|
|
0xf3cb672fdc9aef22L } },
|
|
/* 146 */
|
|
{ { 0xeb3719fe3b55fd83L,0xe0d7a46c875ddd10L,0x33ac9fa905cea784L,
|
|
0x7cafaa2eaae870e7L },
|
|
{ 0x9b814d041d53b338L,0xe0acc0a0ef87e6c6L,0xfb93d10811672b0fL,
|
|
0x0aab13c1b9bd522eL } },
|
|
/* 147 */
|
|
{ { 0xddcce278d2681297L,0xcb350eb1b509546aL,0x2dc431737661aaf2L,
|
|
0x4b91a602847012e9L },
|
|
{ 0xdcff109572f8ddcfL,0x08ebf61e9a911af4L,0x48f4360ac372430eL,
|
|
0x49534c5372321cabL } },
|
|
/* 148 */
|
|
{ { 0x83df7d71f07b7e9dL,0xa478efa313cd516fL,0x78ef264b6c047ee3L,
|
|
0xcaf46c4fd65ac5eeL },
|
|
{ 0xa04d0c7792aa8266L,0xedf45466913684bbL,0x56e65168ae4b16b0L,
|
|
0x14ce9e5704c6770fL } },
|
|
/* 149 */
|
|
{ { 0x99445e3e965e8f91L,0xd3aca1bacb0f2492L,0xd31cc70f90c8a0a0L,
|
|
0x1bb708a53e4c9a71L },
|
|
{ 0xd5ca9e69558bdd7aL,0x734a0508018a26b1L,0xb093aa714c9cf1ecL,
|
|
0xf9d126f2da300102L } },
|
|
/* 150 */
|
|
{ { 0x749bca7aaff9563eL,0xdd077afeb49914a0L,0xe27a0311bf5f1671L,
|
|
0x807afcb9729ecc69L },
|
|
{ 0x7f8a9337c9b08b77L,0x86c3a785443c7e38L,0x85fafa59476fd8baL,
|
|
0x751adcd16568cd8cL } },
|
|
/* 151 */
|
|
{ { 0x8aea38b410715c0dL,0xd113ea718f7697f7L,0x665eab1493fbf06dL,
|
|
0x29ec44682537743fL },
|
|
{ 0x3d94719cb50bebbcL,0x399ee5bfe4505422L,0x90cd5b3a8d2dedb1L,
|
|
0xff9370e392a4077dL } },
|
|
/* 152 */
|
|
{ { 0x59a2d69bc6b75b65L,0x4188f8d5266651c5L,0x28a9f33e3de9d7d2L,
|
|
0x9776478ba2a9d01aL },
|
|
{ 0x8852622d929af2c7L,0x334f5d6d4e690923L,0xce6cc7e5a89a51e9L,
|
|
0x74a6313fac2f82faL } },
|
|
/* 153 */
|
|
{ { 0xb2f4dfddb75f079cL,0x85b07c9518e36fbbL,0x1b6cfcf0e7cd36ddL,
|
|
0xab75be150ff4863dL },
|
|
{ 0x81b367c0173fc9b7L,0xb90a7420d2594fd0L,0x15fdbf03c4091236L,
|
|
0x4ebeac2e0b4459f6L } },
|
|
/* 154 */
|
|
{ { 0xeb6c5fe75c9f2c53L,0xd25220118eae9411L,0xc8887633f95ac5d8L,
|
|
0xdf99887b2c1baffcL },
|
|
{ 0xbb78eed2850aaecbL,0x9d49181b01d6a272L,0x978dd511b1cdbcacL,
|
|
0x27b040a7779f4058L } },
|
|
/* 155 */
|
|
{ { 0x90405db7f73b2eb2L,0xe0df85088e1b2118L,0x501b71525962327eL,
|
|
0xb393dd37e4cfa3f5L },
|
|
{ 0xa1230e7b3fd75165L,0xd66344c2bcd33554L,0x6c36f1be0f7b5022L,
|
|
0x09588c12d0463419L } },
|
|
/* 156 */
|
|
{ { 0xe086093f02601c3bL,0xfb0252f8cf5c335fL,0x955cf280894aff28L,
|
|
0x81c879a9db9f648bL },
|
|
{ 0x040e687cc6f56c51L,0xfed471693f17618cL,0x44f88a419059353bL,
|
|
0xfa0d48f55fc11bc4L } },
|
|
/* 157 */
|
|
{ { 0xbc6e1c9de1608e4dL,0x010dda113582822cL,0xf6b7ddc1157ec2d7L,
|
|
0x8ea0e156b6a367d6L },
|
|
{ 0xa354e02f2383b3b4L,0x69966b943f01f53cL,0x4ff6632b2de03ca5L,
|
|
0x3f5ab924fa00b5acL } },
|
|
/* 158 */
|
|
{ { 0x337bb0d959739efbL,0xc751b0f4e7ebec0dL,0x2da52dd6411a67d1L,
|
|
0x8bc768872b74256eL },
|
|
{ 0xa5be3b7282d3d253L,0xa9f679a1f58d779fL,0xa1cac168e16767bbL,
|
|
0xb386f19060fcf34fL } },
|
|
/* 159 */
|
|
{ { 0x31f3c1352fedcfc2L,0x5396bf6262f8af0dL,0x9a02b4eae57288c2L,
|
|
0x4cb460f71b069c4dL },
|
|
{ 0xae67b4d35b8095eaL,0x92bbf8596fc07603L,0xe1475f66b614a165L,
|
|
0x52c0d50895ef5223L } },
|
|
/* 160 */
|
|
{ { 0x231c210e15339848L,0xe87a28e870778c8dL,0x9d1de6616956e170L,
|
|
0x4ac3c9382bb09c0bL },
|
|
{ 0x19be05516998987dL,0x8b2376c4ae09f4d6L,0x1de0b7651a3f933dL,
|
|
0x380d94c7e39705f4L } },
|
|
/* 161 */
|
|
{ { 0x01a355aa81542e75L,0x96c724a1ee01b9b7L,0x6b3a2977624d7087L,
|
|
0x2ce3e171de2637afL },
|
|
{ 0xcfefeb49f5d5bc1aL,0xa655607e2777e2b5L,0x4feaac2f9513756cL,
|
|
0x2e6cd8520b624e4dL } },
|
|
/* 162 */
|
|
{ { 0x3685954b8c31c31dL,0x68533d005bf21a0cL,0x0bd7626e75c79ec9L,
|
|
0xca17754742c69d54L },
|
|
{ 0xcc6edafff6d2dbb2L,0xfd0d8cbd174a9d18L,0x875e8793aa4578e8L,
|
|
0xa976a7139cab2ce6L } },
|
|
/* 163 */
|
|
{ { 0x0a651f1b93fb353dL,0xd75cab8b57fcfa72L,0xaa88cfa731b15281L,
|
|
0x8720a7170a1f4999L },
|
|
{ 0x8c3e8d37693e1b90L,0xd345dc0b16f6dfc3L,0x8ea8d00ab52a8742L,
|
|
0x9719ef29c769893cL } },
|
|
/* 164 */
|
|
{ { 0x820eed8d58e35909L,0x9366d8dc33ddc116L,0xd7f999d06e205026L,
|
|
0xa5072976e15704c1L },
|
|
{ 0x002a37eac4e70b2eL,0x84dcf6576890aa8aL,0xcd71bf18645b2a5cL,
|
|
0x99389c9df7b77725L } },
|
|
/* 165 */
|
|
{ { 0x238c08f27ada7a4bL,0x3abe9d03fd389366L,0x6b672e89766f512cL,
|
|
0xa88806aa202c82e4L },
|
|
{ 0x6602044ad380184eL,0xa8cb78c4126a8b85L,0x79d670c0ad844f17L,
|
|
0x0043bffb4738dcfeL } },
|
|
/* 166 */
|
|
{ { 0x8d59b5dc36d5192eL,0xacf885d34590b2afL,0x83566d0a11601781L,
|
|
0x52f3ef01ba6c4866L },
|
|
{ 0x3986732a0edcb64dL,0x0a482c238068379fL,0x16cbe5fa7040f309L,
|
|
0x3296bd899ef27e75L } },
|
|
/* 167 */
|
|
{ { 0x476aba89454d81d7L,0x9eade7ef51eb9b3cL,0x619a21cd81c57986L,
|
|
0x3b90febfaee571e9L },
|
|
{ 0x9393023e5496f7cbL,0x55be41d87fb51bc4L,0x03f1dd4899beb5ceL,
|
|
0x6e88069d9f810b18L } },
|
|
/* 168 */
|
|
{ { 0xce37ab11b43ea1dbL,0x0a7ff1a95259d292L,0x851b02218f84f186L,
|
|
0xa7222beadefaad13L },
|
|
{ 0xa2ac78ec2b0a9144L,0x5a024051f2fa59c5L,0x91d1eca56147ce38L,
|
|
0xbe94d523bc2ac690L } },
|
|
/* 169 */
|
|
{ { 0x72f4945e0b226ce7L,0xb8afd747967e8b70L,0xedea46f185a6c63eL,
|
|
0x7782defe9be8c766L },
|
|
{ 0x760d2aa43db38626L,0x460ae78776f67ad1L,0x341b86fc54499cdbL,
|
|
0x03838567a2892e4bL } },
|
|
/* 170 */
|
|
{ { 0x2d8daefd79ec1a0fL,0x3bbcd6fdceb39c97L,0xf5575ffc58f61a95L,
|
|
0xdbd986c4adf7b420L },
|
|
{ 0x81aa881415f39eb7L,0x6ee2fcf5b98d976cL,0x5465475dcf2f717dL,
|
|
0x8e24d3c46860bbd0L } },
|
|
/* 171 */
|
|
{ { 0x749d8e549a587390L,0x12bb194f0cbec588L,0x46e07da4b25983c6L,
|
|
0x541a99c4407bafc8L },
|
|
{ 0xdb241692624c8842L,0x6044c12ad86c05ffL,0xc59d14b44f7fcf62L,
|
|
0xc0092c49f57d35d1L } },
|
|
/* 172 */
|
|
{ { 0xd3cc75c3df2e61efL,0x7e8841c82e1b35caL,0xc62d30d1909f29f4L,
|
|
0x75e406347286944dL },
|
|
{ 0xe7d41fc5bbc237d0L,0xc9537bf0ec4f01c9L,0x91c51a16282bd534L,
|
|
0x5b7cb658c7848586L } },
|
|
/* 173 */
|
|
{ { 0x964a70848a28ead1L,0x802dc508fd3b47f6L,0x9ae4bfd1767e5b39L,
|
|
0x7ae13eba8df097a1L },
|
|
{ 0xfd216ef8eadd384eL,0x0361a2d9b6b2ff06L,0x204b98784bcdb5f3L,
|
|
0x787d8074e2a8e3fdL } },
|
|
/* 174 */
|
|
{ { 0xc5e25d6b757fbb1cL,0xe47bddb2ca201debL,0x4a55e9a36d2233ffL,
|
|
0x5c2228199ef28484L },
|
|
{ 0x773d4a8588315250L,0x21b21a2b827097c1L,0xab7c4ea1def5d33fL,
|
|
0xe45d37abbaf0f2b0L } },
|
|
/* 175 */
|
|
{ { 0xd2df1e3428511c8aL,0xebb229c8bdca6cd3L,0x578a71a7627c39a7L,
|
|
0xed7bc12284dfb9d3L },
|
|
{ 0xcf22a6df93dea561L,0x5443f18dd48f0ed1L,0xd8b861405bad23e8L,
|
|
0xaac97cc945ca6d27L } },
|
|
/* 176 */
|
|
{ { 0xeb54ea74a16bd00aL,0xd839e9adf5c0bcc1L,0x092bb7f11f9bfc06L,
|
|
0x318f97b31163dc4eL },
|
|
{ 0xecc0c5bec30d7138L,0x44e8df23abc30220L,0x2bb7972fb0223606L,
|
|
0xfa41faa19a84ff4dL } },
|
|
/* 177 */
|
|
{ { 0x4402d974a6642269L,0xc81814ce9bb783bdL,0x398d38e47941e60bL,
|
|
0x38bb6b2c1d26e9e2L },
|
|
{ 0xc64e4a256a577f87L,0x8b52d253dc11fe1cL,0xff336abf62280728L,
|
|
0x94dd0905ce7601a5L } },
|
|
/* 178 */
|
|
{ { 0x156cf7dcde93f92aL,0xa01333cb89b5f315L,0x02404df9c995e750L,
|
|
0x92077867d25c2ae9L },
|
|
{ 0xe2471e010bf39d44L,0x5f2c902096bb53d7L,0x4c44b7b35c9c3d8fL,
|
|
0x81e8428bd29beb51L } },
|
|
/* 179 */
|
|
{ { 0x6dd9c2bac477199fL,0x8cb8eeee6b5ecdd9L,0x8af7db3fee40fd0eL,
|
|
0x1b94ab62dbbfa4b1L },
|
|
{ 0x44f0d8b3ce47f143L,0x51e623fc63f46163L,0xf18f270fcc599383L,
|
|
0x06a38e28055590eeL } },
|
|
/* 180 */
|
|
{ { 0x2e5b0139b3355b49L,0x20e26560b4ebf99bL,0xc08ffa6bd269f3dcL,
|
|
0xa7b36c2083d9d4f8L },
|
|
{ 0x64d15c3a1b3e8830L,0xd5fceae1a89f9c0bL,0xcfeee4a2e2d16930L,
|
|
0xbe54c6b4a2822a20L } },
|
|
/* 181 */
|
|
{ { 0xd6cdb3df8d91167cL,0x517c3f79e7a6625eL,0x7105648f346ac7f4L,
|
|
0xbf30a5abeae022bbL },
|
|
{ 0x8e7785be93828a68L,0x5161c3327f3ef036L,0xe11b5feb592146b2L,
|
|
0xd1c820de2732d13aL } },
|
|
/* 182 */
|
|
{ { 0x043e13479038b363L,0x58c11f546b05e519L,0x4fe57abe6026cad1L,
|
|
0xb7d17bed68a18da3L },
|
|
{ 0x44ca5891e29c2559L,0x4f7a03765bfffd84L,0x498de4af74e46948L,
|
|
0x3997fd5e6412cc64L } },
|
|
/* 183 */
|
|
{ { 0xf20746828bd61507L,0x29e132d534a64d2aL,0xffeddfb08a8a15e3L,
|
|
0x0eeb89293c6c13e8L },
|
|
{ 0xe9b69a3ea7e259f8L,0xce1db7e6d13e7e67L,0x277318f6ad1fa685L,
|
|
0x228916f8c922b6efL } },
|
|
/* 184 */
|
|
{ { 0x959ae25b0a12ab5bL,0xcc11171f957bc136L,0x8058429ed16e2b0cL,
|
|
0xec05ad1d6e93097eL },
|
|
{ 0x157ba5beac3f3708L,0x31baf93530b59d77L,0x47b55237118234e5L,
|
|
0x7d3141567ff11b37L } },
|
|
/* 185 */
|
|
{ { 0x7bd9c05cf6dfefabL,0xbe2f2268dcb37707L,0xe53ead973a38bb95L,
|
|
0xe9ce66fc9bc1d7a3L },
|
|
{ 0x75aa15766f6a02a1L,0x38c087df60e600edL,0xf8947f3468cdc1b9L,
|
|
0xd9650b0172280651L } },
|
|
/* 186 */
|
|
{ { 0x504b4c4a5a057e60L,0xcbccc3be8def25e4L,0xa635320817c1ccbdL,
|
|
0x14d6699a804eb7a2L },
|
|
{ 0x2c8a8415db1f411aL,0x09fbaf0bf80d769cL,0xb4deef901c2f77adL,
|
|
0x6f4c68410d43598aL } },
|
|
/* 187 */
|
|
{ { 0x8726df4e96c24a96L,0x534dbc85fcbd99a3L,0x3c466ef28b2ae30aL,
|
|
0x4c4350fd61189abbL },
|
|
{ 0x2967f716f855b8daL,0x41a42394463c38a1L,0xc37e1413eae93343L,
|
|
0xa726d2425a3118b5L } },
|
|
/* 188 */
|
|
{ { 0xdae6b3ee948c1086L,0xf1de503dcbd3a2e1L,0x3f35ed3f03d022f3L,
|
|
0x13639e82cc6cf392L },
|
|
{ 0x9ac938fbcdafaa86L,0xf45bc5fb2654a258L,0x1963b26e45051329L,
|
|
0xca9365e1c1a335a3L } },
|
|
/* 189 */
|
|
{ { 0x3615ac754c3b2d20L,0x742a5417904e241bL,0xb08521c4cc9d071dL,
|
|
0x9ce29c34970b72a5L },
|
|
{ 0x8cc81f736d3e0ad6L,0x8060da9ef2f8434cL,0x35ed1d1a6ce862d9L,
|
|
0x48c4abd7ab42af98L } },
|
|
/* 190 */
|
|
{ { 0xd221b0cc40c7485aL,0xead455bbe5274dbfL,0x493c76989263d2e8L,
|
|
0x78017c32f67b33cbL },
|
|
{ 0xb9d35769930cb5eeL,0xc0d14e940c408ed2L,0xf8b7bf55272f1a4dL,
|
|
0x53cd0454de5c1c04L } },
|
|
/* 191 */
|
|
{ { 0xbcd585fa5d28ccacL,0x5f823e56005b746eL,0x7c79f0a1cd0123aaL,
|
|
0xeea465c1d3d7fa8fL },
|
|
{ 0x7810659f0551803bL,0x6c0b599f7ce6af70L,0x4195a77029288e70L,
|
|
0x1b6e42a47ae69193L } },
|
|
/* 192 */
|
|
{ { 0x2e80937cf67d04c3L,0x1e312be289eeb811L,0x56b5d88792594d60L,
|
|
0x0224da14187fbd3dL },
|
|
{ 0x87abb8630c5fe36fL,0x580f3c604ef51f5fL,0x964fb1bfb3b429ecL,
|
|
0x60838ef042bfff33L } },
|
|
/* 193 */
|
|
{ { 0x432cb2f27e0bbe99L,0x7bda44f304aa39eeL,0x5f497c7a9fa93903L,
|
|
0x636eb2022d331643L },
|
|
{ 0xfcfd0e6193ae00aaL,0x875a00fe31ae6d2fL,0xf43658a29f93901cL,
|
|
0x8844eeb639218bacL } },
|
|
/* 194 */
|
|
{ { 0x114171d26b3bae58L,0x7db3df7117e39f3eL,0xcd37bc7f81a8eadaL,
|
|
0x27ba83dc51fb789eL },
|
|
{ 0xa7df439ffbf54de5L,0x7277030bb5fe1a71L,0x42ee8e35db297a48L,
|
|
0xadb62d3487f3a4abL } },
|
|
/* 195 */
|
|
{ { 0x9b1168a2a175df2aL,0x082aa04f618c32e9L,0xc9e4f2e7146b0916L,
|
|
0xb990fd7675e7c8b2L },
|
|
{ 0x0829d96b4df37313L,0x1c205579d0b40789L,0x66c9ae4a78087711L,
|
|
0x81707ef94d10d18dL } },
|
|
/* 196 */
|
|
{ { 0x97d7cab203d6ff96L,0x5b851bfc0d843360L,0x268823c4d042db4bL,
|
|
0x3792daead5a8aa5cL },
|
|
{ 0x52818865941afa0bL,0xf3e9e74142d83671L,0x17c825275be4e0a7L,
|
|
0x5abd635e94b001baL } },
|
|
/* 197 */
|
|
{ { 0x727fa84e0ac4927cL,0xe3886035a7c8cf23L,0xa4bcd5ea4adca0dfL,
|
|
0x5995bf21846ab610L },
|
|
{ 0xe90f860b829dfa33L,0xcaafe2ae958fc18bL,0x9b3baf4478630366L,
|
|
0x44c32ca2d483411eL } },
|
|
/* 198 */
|
|
{ { 0xa74a97f1e40ed80cL,0x5f938cb131d2ca82L,0x53f2124b7c2d6ad9L,
|
|
0x1f2162fb8082a54cL },
|
|
{ 0x7e467cc5720b173eL,0x40e8a666085f12f9L,0x8cebc20e4c9d65dcL,
|
|
0x8f1d402bc3e907c9L } },
|
|
/* 199 */
|
|
{ { 0x4f592f9cfbc4058aL,0xb15e14b6292f5670L,0xc55cfe37bc1d8c57L,
|
|
0xb1980f43926edbf9L },
|
|
{ 0x98c33e0932c76b09L,0x1df5279d33b07f78L,0x6f08ead4863bb461L,
|
|
0x2828ad9b37448e45L } },
|
|
/* 200 */
|
|
{ { 0x696722c4c4cf4ac5L,0xf5ac1a3fdde64afbL,0x0551baa2e0890832L,
|
|
0x4973f1275a14b390L },
|
|
{ 0xe59d8335322eac5dL,0x5e07eef50bd9b568L,0xab36720fa2588393L,
|
|
0x6dac8ed0db168ac7L } },
|
|
/* 201 */
|
|
{ { 0xf7b545aeeda835efL,0x4aa113d21d10ed51L,0x035a65e013741b09L,
|
|
0x4b23ef5920b9de4cL },
|
|
{ 0xe82bb6803c4c7341L,0xd457706d3f58bc37L,0x73527863a51e3ee8L,
|
|
0x4dd71534ddf49a4eL } },
|
|
/* 202 */
|
|
{ { 0xbf94467295476cd9L,0x648d072fe31a725bL,0x1441c8b8fc4b67e0L,
|
|
0xfd3170002f4a4dbbL },
|
|
{ 0x1cb43ff48995d0e1L,0x76e695d10ef729aaL,0xe0d5f97641798982L,
|
|
0x14fac58c9569f365L } },
|
|
/* 203 */
|
|
{ { 0xad9a0065f312ae18L,0x51958dc0fcc93fc9L,0xd9a142408a7d2846L,
|
|
0xed7c765136abda50L },
|
|
{ 0x46270f1a25d4abbcL,0x9b5dd8f3f1a113eaL,0xc609b0755b51952fL,
|
|
0xfefcb7f74d2e9f53L } },
|
|
/* 204 */
|
|
{ { 0xbd09497aba119185L,0xd54e8c30aac45ba4L,0x492479deaa521179L,
|
|
0x1801a57e87e0d80bL },
|
|
{ 0x073d3f8dfcafffb0L,0x6cf33c0bae255240L,0x781d763b5b5fdfbcL,
|
|
0x9f8fc11e1ead1064L } },
|
|
/* 205 */
|
|
{ { 0x1583a1715e69544cL,0x0eaf8567f04b7813L,0x1e22a8fd278a4c32L,
|
|
0xa9d3809d3d3a69a9L },
|
|
{ 0x936c2c2c59a2da3bL,0x38ccbcf61895c847L,0x5e65244e63d50869L,
|
|
0x3006b9aee1178ef7L } },
|
|
/* 206 */
|
|
{ { 0x0bb1f2b0c9eead28L,0x7eef635d89f4dfbcL,0x074757fdb2ce8939L,
|
|
0x0ab85fd745f8f761L },
|
|
{ 0xecda7c933e5b4549L,0x4be2bb5c97922f21L,0x261a1274b43b8040L,
|
|
0xb122d67511e942c2L } },
|
|
/* 207 */
|
|
{ { 0x3be607be66a5ae7aL,0x01e703fa76adcbe3L,0xaf9043014eb6e5c5L,
|
|
0x9f599dc1097dbaecL },
|
|
{ 0x6d75b7180ff250edL,0x8eb91574349a20dcL,0x425605a410b227a3L,
|
|
0x7d5528e08a294b78L } },
|
|
/* 208 */
|
|
{ { 0xf0f58f6620c26defL,0x025585ea582b2d1eL,0xfbe7d79b01ce3881L,
|
|
0x28ccea01303f1730L },
|
|
{ 0xd1dabcd179644ba5L,0x1fc643e806fff0b8L,0xa60a76fc66b3e17bL,
|
|
0xc18baf48a1d013bfL } },
|
|
/* 209 */
|
|
{ { 0x34e638c85dc4216dL,0x00c01067206142acL,0xd453a17195f5064aL,
|
|
0x9def809db7a9596bL },
|
|
{ 0x41e8642e67ab8d2cL,0xb42404336237a2b6L,0x7d506a6d64c4218bL,
|
|
0x0357f8b068808ce5L } },
|
|
/* 210 */
|
|
{ { 0x8e9dbe644cd2cc88L,0xcc61c28df0b8f39dL,0x4a309874cd30a0c8L,
|
|
0xe4a01add1b489887L },
|
|
{ 0x2ed1eeacf57cd8f9L,0x1b767d3ebd594c48L,0xa7295c717bd2f787L,
|
|
0x466d7d79ce10cc30L } },
|
|
/* 211 */
|
|
{ { 0x47d318929dada2c7L,0x4fa0a6c38f9aa27dL,0x90e4fd28820a59e1L,
|
|
0xc672a522451ead1aL },
|
|
{ 0x30607cc85d86b655L,0xf0235d3bf9ad4af1L,0x99a08680571172a6L,
|
|
0x5e3d64faf2a67513L } },
|
|
/* 212 */
|
|
{ { 0xaa6410c79b3b4416L,0xcd8fcf85eab26d99L,0x5ebff74adb656a74L,
|
|
0x6c8a7a95eb8e42fcL },
|
|
{ 0x10c60ba7b02a63bdL,0x6b2f23038b8f0047L,0x8c6c3738312d90b0L,
|
|
0x348ae422ad82ca91L } },
|
|
/* 213 */
|
|
{ { 0x7f4746635ccda2fbL,0x22accaa18e0726d2L,0x85adf782492b1f20L,
|
|
0xc1074de0d9ef2d2eL },
|
|
{ 0xfcf3ce44ae9a65b3L,0xfd71e4ac05d7151bL,0xd4711f50ce6a9788L,
|
|
0xfbadfbdbc9e54ffcL } },
|
|
/* 214 */
|
|
{ { 0x1713f1cd20a99363L,0xb915658f6cf22775L,0x968175cd24d359b2L,
|
|
0xb7f976b483716fcdL },
|
|
{ 0x5758e24d5d6dbf74L,0x8d23bafd71c3af36L,0x48f477600243dfe3L,
|
|
0xf4d41b2ecafcc805L } },
|
|
/* 215 */
|
|
{ { 0x51f1cf28fdabd48dL,0xce81be3632c078a4L,0x6ace2974117146e9L,
|
|
0x180824eae0160f10L },
|
|
{ 0x0387698b66e58358L,0x63568752ce6ca358L,0x82380e345e41e6c5L,
|
|
0x67e5f63983cf6d25L } },
|
|
/* 216 */
|
|
{ { 0xf89ccb8dcf4899efL,0x949015f09ebb44c0L,0x546f9276b2598ec9L,
|
|
0x9fef789a04c11fc6L },
|
|
{ 0x6d367ecf53d2a071L,0xb10e1a7fa4519b09L,0xca6b3fb0611e2eefL,
|
|
0xbc80c181a99c4e20L } },
|
|
/* 217 */
|
|
{ { 0x972536f8e5eb82e6L,0x1a484fc7f56cb920L,0xc78e217150b5da5eL,
|
|
0x49270e629f8cdf10L },
|
|
{ 0x1a39b7bbea6b50adL,0x9a0284c1a2388ffcL,0x5403eb178107197bL,
|
|
0xd2ee52f961372f7fL } },
|
|
/* 218 */
|
|
{ { 0xd37cd28588e0362aL,0x442fa8a78fa5d94dL,0xaff836e5a434a526L,
|
|
0xdfb478bee5abb733L },
|
|
{ 0xa91f1ce7673eede6L,0xa5390ad42b5b2f04L,0x5e66f7bf5530da2fL,
|
|
0xd9a140b408df473aL } },
|
|
/* 219 */
|
|
{ { 0x0e0221b56e8ea498L,0x623478293563ee09L,0xe06b8391335d2adeL,
|
|
0x760c058d623f4b1aL },
|
|
{ 0x0b89b58cc198aa79L,0xf74890d2f07aba7fL,0x4e204110fde2556aL,
|
|
0x7141982d8f190409L } },
|
|
/* 220 */
|
|
{ { 0x6f0a0e334d4b0f45L,0xd9280b38392a94e1L,0x3af324c6b3c61d5eL,
|
|
0x3af9d1ce89d54e47L },
|
|
{ 0xfd8f798120930371L,0xeda2664c21c17097L,0x0e9545dcdc42309bL,
|
|
0xb1f815c373957dd6L } },
|
|
/* 221 */
|
|
{ { 0x84faa78e89fec44aL,0xc8c2ae473caa4cafL,0x691c807dc1b6a624L,
|
|
0xa41aed141543f052L },
|
|
{ 0x424353997d5ffe04L,0x8bacb2df625b6e20L,0x85d660be87817775L,
|
|
0xd6e9c1dd86fb60efL } },
|
|
/* 222 */
|
|
{ { 0x3aa2e97ec6853264L,0x771533b7e2304a0bL,0x1b912bb7b8eae9beL,
|
|
0x9c9c6e10ae9bf8c2L },
|
|
{ 0xa2309a59e030b74cL,0x4ed7494d6a631e90L,0x89f44b23a49b79f2L,
|
|
0x566bd59640fa61b6L } },
|
|
/* 223 */
|
|
{ { 0x066c0118c18061f3L,0x190b25d37c83fc70L,0xf05fc8e027273245L,
|
|
0xcf2c7390f525345eL },
|
|
{ 0xa09bceb410eb30cfL,0xcfd2ebba0d77703aL,0xe842c43a150ff255L,
|
|
0x02f517558aa20979L } },
|
|
/* 224 */
|
|
{ { 0x396ef794addb7d07L,0x0b4fc74224455500L,0xfaff8eacc78aa3ceL,
|
|
0x14e9ada5e8d4d97dL },
|
|
{ 0xdaa480a12f7079e2L,0x45baa3cde4b0800eL,0x01765e2d7838157dL,
|
|
0xa0ad4fab8e9d9ae8L } },
|
|
/* 225 */
|
|
{ { 0x0bfb76214a653618L,0x1872813c31eaaa5fL,0x1553e73744949d5eL,
|
|
0xbcd530b86e56ed1eL },
|
|
{ 0x169be85332e9c47bL,0xdc2776feb50059abL,0xcdba9761192bfbb4L,
|
|
0x909283cf6979341dL } },
|
|
/* 226 */
|
|
{ { 0x67b0032476e81a13L,0x9bee1a9962171239L,0x08ed361bd32e19d6L,
|
|
0x35eeb7c9ace1549aL },
|
|
{ 0x1280ae5a7e4e5bdcL,0x2dcd2cd3b6ceec6eL,0x52e4224c6e266bc1L,
|
|
0x9a8b2cf4448ae864L } },
|
|
/* 227 */
|
|
{ { 0xf6471bf209d03b59L,0xc90e62a3b65af2abL,0xff7ff168ebd5eec9L,
|
|
0x6bdb60f4d4491379L },
|
|
{ 0xdadafebc8a55bc30L,0xc79ead1610097fe0L,0x42e197414c1e3bddL,
|
|
0x01ec3cfd94ba08a9L } },
|
|
/* 228 */
|
|
{ { 0xba6277ebdc9485c2L,0x48cc9a7922fb10c7L,0x4f61d60f70a28d8aL,
|
|
0xd1acb1c0475464f6L },
|
|
{ 0xd26902b126f36612L,0x59c3a44ee0618d8bL,0x4df8a813308357eeL,
|
|
0x7dcd079d405626c2L } },
|
|
/* 229 */
|
|
{ { 0x5ce7d4d3f05a4b48L,0xadcd295237230772L,0xd18f7971812a915aL,
|
|
0x0bf53589377d19b8L },
|
|
{ 0x35ecd95a6c68ea73L,0xc7f3bbca823a584dL,0x9fb674c6f473a723L,
|
|
0xd28be4d9e16686fcL } },
|
|
/* 230 */
|
|
{ { 0x5d2b990638fa8e4bL,0x559f186e893fd8fcL,0x3a6de2aa436fb6fcL,
|
|
0xd76007aa510f88ceL },
|
|
{ 0x2d10aab6523a4988L,0xb455cf4474dd0273L,0x7f467082a3407278L,
|
|
0xf2b52f68b303bb01L } },
|
|
/* 231 */
|
|
{ { 0x0d57eafa9835b4caL,0x2d2232fcbb669cbcL,0x8eeeb680c6643198L,
|
|
0xd8dbe98ecc5aed3aL },
|
|
{ 0xcba9be3fc5a02709L,0x30be68e5f5ba1fa8L,0xfebd43cdf10ea852L,
|
|
0xe01593a3ee559705L } },
|
|
/* 232 */
|
|
{ { 0xd3e5af50ea75a0a6L,0x512226ac57858033L,0x6fe6d50fd0176406L,
|
|
0xafec07b1aeb8ef06L },
|
|
{ 0x7fb9956780bb0a31L,0x6f1af3cc37309aaeL,0x9153a15a01abf389L,
|
|
0xa71b93546e2dbfddL } },
|
|
/* 233 */
|
|
{ { 0xbf8e12e018f593d2L,0xd1a90428a078122bL,0x150505db0ba4f2adL,
|
|
0x53a2005c628523d9L },
|
|
{ 0x07c8b639e7f2b935L,0x2bff975ac182961aL,0x86bceea77518ca2cL,
|
|
0xbf47d19b3d588e3dL } },
|
|
/* 234 */
|
|
{ { 0x672967a7dd7665d5L,0x4e3030572f2f4de5L,0x144005ae80d4903fL,
|
|
0x001c2c7f39c9a1b6L },
|
|
{ 0x143a801469efc6d6L,0xc810bdaa7bc7a724L,0x5f65670ba78150a4L,
|
|
0xfdadf8e786ffb99bL } },
|
|
/* 235 */
|
|
{ { 0xfd38cb88ffc00785L,0x77fa75913b48eb67L,0x0454d055bf368fbcL,
|
|
0x3a838e4d5aa43c94L },
|
|
{ 0x561663293e97bb9aL,0x9eb93363441d94d9L,0x515591a60adb2a83L,
|
|
0x3cdb8257873e1da3L } },
|
|
/* 236 */
|
|
{ { 0x137140a97de77eabL,0xf7e1c50d41648109L,0x762dcad2ceb1d0dfL,
|
|
0x5a60cc89f1f57fbaL },
|
|
{ 0x80b3638240d45673L,0x1b82be195913c655L,0x057284b8dd64b741L,
|
|
0x922ff56fdbfd8fc0L } },
|
|
/* 237 */
|
|
{ { 0x1b265deec9a129a1L,0xa5b1ce57cc284e04L,0x04380c46cebfbe3cL,
|
|
0x72919a7df6c5cd62L },
|
|
{ 0x298f453a8fb90f9aL,0xd719c00b88e4031bL,0xe32c0e77796f1856L,
|
|
0x5e7917803624089aL } },
|
|
/* 238 */
|
|
{ { 0x5c16ec557f63cdfbL,0x8e6a3571f1cae4fdL,0xfce26bea560597caL,
|
|
0x4e0a5371e24c2fabL },
|
|
{ 0x276a40d3a5765357L,0x3c89af440d73a2b4L,0xb8f370ae41d11a32L,
|
|
0xf5ff7818d56604eeL } },
|
|
/* 239 */
|
|
{ { 0xfbf3e3fe1a09df21L,0x26d5d28ee66e8e47L,0x2096bd0a29c89015L,
|
|
0xe41df0e9533f5e64L },
|
|
{ 0x305fda40b3ba9e3fL,0xf2340ceb2604d895L,0x0866e1927f0367c7L,
|
|
0x8edd7d6eac4f155fL } },
|
|
/* 240 */
|
|
{ { 0xc9a1dc0e0bfc8ff3L,0x14efd82be936f42fL,0x67016f7ccca381efL,
|
|
0x1432c1caed8aee96L },
|
|
{ 0xec68482970b23c26L,0xa64fe8730735b273L,0xe389f6e5eaef0f5aL,
|
|
0xcaef480b5ac8d2c6L } },
|
|
/* 241 */
|
|
{ { 0x5245c97875315922L,0xd82951713063cca5L,0xf3ce60d0b64ef2cbL,
|
|
0xd0ba177e8efae236L },
|
|
{ 0x53a9ae8fb1b3af60L,0x1a796ae53d2da20eL,0x01d63605df9eef28L,
|
|
0xf31c957c1c54ae16L } },
|
|
/* 242 */
|
|
{ { 0xc0f58d5249cc4597L,0xdc5015b0bae0a028L,0xefc5fc55734a814aL,
|
|
0x013404cb96e17c3aL },
|
|
{ 0xb29e2585c9a824bfL,0xd593185e001eaed7L,0x8d6ee68261ef68acL,
|
|
0x6f377c4b91933e6cL } },
|
|
/* 243 */
|
|
{ { 0x9f93bad1a8333fd2L,0xa89302025a2a95b8L,0x211e5037eaf75aceL,
|
|
0x6dba3e4ed2d09506L },
|
|
{ 0xa48ef98cd04399cdL,0x1811c66ee6b73adeL,0x72f60752c17ecaf3L,
|
|
0xf13cf3423becf4a7L } },
|
|
/* 244 */
|
|
{ { 0xceeb9ec0a919e2ebL,0x83a9a195f62c0f68L,0xcfba3bb67aba2299L,
|
|
0xc83fa9a9274bbad3L },
|
|
{ 0x0d7d1b0b62fa1ce0L,0xe58b60f53418efbfL,0xbfa8ef9e52706f04L,
|
|
0xb49d70f45d702683L } },
|
|
/* 245 */
|
|
{ { 0x914c7510fad5513bL,0x05f32eecb1751e2dL,0x6d850418d9fb9d59L,
|
|
0x59cfadbb0c30f1cfL },
|
|
{ 0xe167ac2355cb7fd6L,0x249367b8820426a3L,0xeaeec58c90a78864L,
|
|
0x5babf362354a4b67L } },
|
|
/* 246 */
|
|
{ { 0x37c981d1ee424865L,0x8b002878f2e5577fL,0x702970f1b9e0c058L,
|
|
0x6188c6a79026c8f0L },
|
|
{ 0x06f9a19bd0f244daL,0x1ecced5cfb080873L,0x35470f9b9f213637L,
|
|
0x993fe475df50b9d9L } },
|
|
/* 247 */
|
|
{ { 0x68e31cdf9b2c3609L,0x84eb19c02c46d4eaL,0x7ac9ec1a9a775101L,
|
|
0x81f764664c80616bL },
|
|
{ 0x1d7c2a5a75fbe978L,0x6743fed3f183b356L,0x838d1f04501dd2bfL,
|
|
0x564a812a5fe9060dL } },
|
|
/* 248 */
|
|
{ { 0x7a5a64f4fa817d1dL,0x55f96844bea82e0fL,0xb5ff5a0fcd57f9aaL,
|
|
0x226bf3cf00e51d6cL },
|
|
{ 0xd6d1a9f92f2833cfL,0x20a0a35a4f4f89a8L,0x11536c498f3f7f77L,
|
|
0x68779f47ff257836L } },
|
|
/* 249 */
|
|
{ { 0x79b0c1c173043d08L,0xa54467741fc020faL,0xd3767e289a6d26d0L,
|
|
0x97bcb0d1eb092e0bL },
|
|
{ 0x2ab6eaa8f32ed3c3L,0xc8a4f151b281bc48L,0x4d1bf4f3bfa178f3L,
|
|
0xa872ffe80a784655L } },
|
|
/* 250 */
|
|
{ { 0xb1ab7935a32b2086L,0xe1eb710e8160f486L,0x9bd0cd913b6ae6beL,
|
|
0x02812bfcb732a36aL },
|
|
{ 0xa63fd7cacf605318L,0x646e5d50fdfd6d1dL,0xa1d683982102d619L,
|
|
0x07391cc9fe5396afL } },
|
|
/* 251 */
|
|
{ { 0xc50157f08b80d02bL,0x6b8333d162877f7fL,0x7aca1af878d542aeL,
|
|
0x355d2adc7e6d2a08L },
|
|
{ 0xb41f335a287386e1L,0xfd272a94f8e43275L,0x286ca2cde79989eaL,
|
|
0x3dc2b1e37c2a3a79L } },
|
|
/* 252 */
|
|
{ { 0xd689d21c04581352L,0x0a00c825376782beL,0x203bd5909fed701fL,
|
|
0xc47869103ccd846bL },
|
|
{ 0x5dba770824c768edL,0x72feea026841f657L,0x73313ed56accce0eL,
|
|
0xccc42968d5bb4d32L } },
|
|
/* 253 */
|
|
{ { 0x94e50de13d7620b9L,0xd89a5c8a5992a56aL,0xdc007640675487c9L,
|
|
0xe147eb42aa4871cfL },
|
|
{ 0x274ab4eeacf3ae46L,0xfd4936fb50350fbeL,0xdf2afe4748c840eaL,
|
|
0x239ac047080e96e3L } },
|
|
/* 254 */
|
|
{ { 0x481d1f352bfee8d4L,0xce80b5cffa7b0fecL,0x105c4c9e2ce9af3cL,
|
|
0xc55fa1a3f5f7e59dL },
|
|
{ 0x3186f14e8257c227L,0xc5b1653f342be00bL,0x09afc998aa904fb2L,
|
|
0x094cd99cd4f4b699L } },
|
|
/* 255 */
|
|
{ { 0x8a981c84d703bebaL,0x8631d15032ceb291L,0xa445f2c9e3bd49ecL,
|
|
0xb90a30b642abad33L },
|
|
{ 0xb465404fb4a5abf9L,0x004750c375db7603L,0x6f9a42ccca35d89fL,
|
|
0x019f8b9a1b7924f7L } },
|
|
};
|
|
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^32, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_base_4(sp_point_256* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_256_ecc_mulmod_stripe_4(r, &p256_base, p256_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#endif /* WC_NO_CACHE_RESISTANT */
|
|
#else
|
|
/* The index into pre-computation table to use. */
|
|
static const uint8_t recode_index_4_7[130] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
|
|
48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
|
|
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
|
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
|
|
0, 1,
|
|
};
|
|
|
|
/* Whether to negate y-ordinate. */
|
|
static const uint8_t recode_neg_4_7[130] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
0, 0,
|
|
};
|
|
|
|
/* Recode the scalar for multiplication using pre-computed values and
|
|
* subtraction.
|
|
*
|
|
* k Scalar to multiply by.
|
|
* v Vector of operations to perform.
|
|
*/
|
|
static void sp_256_ecc_recode_7_4(const sp_digit* k, ecc_recode_256* v)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint8_t y;
|
|
int carry = 0;
|
|
int o;
|
|
sp_digit n;
|
|
|
|
j = 0;
|
|
n = k[j];
|
|
o = 0;
|
|
for (i=0; i<37; i++) {
|
|
y = (int8_t)n;
|
|
if (o + 7 < 64) {
|
|
y &= 0x7f;
|
|
n >>= 7;
|
|
o += 7;
|
|
}
|
|
else if (o + 7 == 64) {
|
|
n >>= 7;
|
|
if (++j < 4)
|
|
n = k[j];
|
|
o = 0;
|
|
}
|
|
else if (++j < 4) {
|
|
n = k[j];
|
|
y |= (uint8_t)((n << (64 - o)) & 0x7f);
|
|
o -= 57;
|
|
n >>= o;
|
|
}
|
|
|
|
y += (uint8_t)carry;
|
|
v[i].i = recode_index_4_7[y];
|
|
v[i].neg = recode_neg_4_7[y];
|
|
carry = (y >> 7) + v[i].neg;
|
|
}
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_256_get_entry_65_4(sp_point_256* r,
|
|
const sp_table_entry_256* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
for (i = 1; i < 65; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
static const sp_table_entry_256 p256_table[2405] = {
|
|
/* 0 << 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 0 */
|
|
{ { 0x79e730d418a9143cL,0x75ba95fc5fedb601L,0x79fb732b77622510L,
|
|
0x18905f76a53755c6L },
|
|
{ 0xddf25357ce95560aL,0x8b4ab8e4ba19e45cL,0xd2e88688dd21f325L,
|
|
0x8571ff1825885d85L } },
|
|
/* 2 << 0 */
|
|
{ { 0x850046d410ddd64dL,0xaa6ae3c1a433827dL,0x732205038d1490d9L,
|
|
0xf6bb32e43dcf3a3bL },
|
|
{ 0x2f3648d361bee1a5L,0x152cd7cbeb236ff8L,0x19a8fb0e92042dbeL,
|
|
0x78c577510a5b8a3bL } },
|
|
/* 3 << 0 */
|
|
{ { 0xffac3f904eebc127L,0xb027f84a087d81fbL,0x66ad77dd87cbbc98L,
|
|
0x26936a3fb6ff747eL },
|
|
{ 0xb04c5c1fc983a7ebL,0x583e47ad0861fe1aL,0x788208311a2ee98eL,
|
|
0xd5f06a29e587cc07L } },
|
|
/* 4 << 0 */
|
|
{ { 0x74b0b50d46918dccL,0x4650a6edc623c173L,0x0cdaacace8100af2L,
|
|
0x577362f541b0176bL },
|
|
{ 0x2d96f24ce4cbaba6L,0x17628471fad6f447L,0x6b6c36dee5ddd22eL,
|
|
0x84b14c394c5ab863L } },
|
|
/* 5 << 0 */
|
|
{ { 0xbe1b8aaec45c61f5L,0x90ec649a94b9537dL,0x941cb5aad076c20cL,
|
|
0xc9079605890523c8L },
|
|
{ 0xeb309b4ae7ba4f10L,0x73c568efe5eb882bL,0x3540a9877e7a1f68L,
|
|
0x73a076bb2dd1e916L } },
|
|
/* 6 << 0 */
|
|
{ { 0x403947373e77664aL,0x55ae744f346cee3eL,0xd50a961a5b17a3adL,
|
|
0x13074b5954213673L },
|
|
{ 0x93d36220d377e44bL,0x299c2b53adff14b5L,0xf424d44cef639f11L,
|
|
0xa4c9916d4a07f75fL } },
|
|
/* 7 << 0 */
|
|
{ { 0x0746354ea0173b4fL,0x2bd20213d23c00f7L,0xf43eaab50c23bb08L,
|
|
0x13ba5119c3123e03L },
|
|
{ 0x2847d0303f5b9d4dL,0x6742f2f25da67bddL,0xef933bdc77c94195L,
|
|
0xeaedd9156e240867L } },
|
|
/* 8 << 0 */
|
|
{ { 0x27f14cd19499a78fL,0x462ab5c56f9b3455L,0x8f90f02af02cfc6bL,
|
|
0xb763891eb265230dL },
|
|
{ 0xf59da3a9532d4977L,0x21e3327dcf9eba15L,0x123c7b84be60bbf0L,
|
|
0x56ec12f27706df76L } },
|
|
/* 9 << 0 */
|
|
{ { 0x75c96e8f264e20e8L,0xabe6bfed59a7a841L,0x2cc09c0444c8eb00L,
|
|
0xe05b3080f0c4e16bL },
|
|
{ 0x1eb7777aa45f3314L,0x56af7bedce5d45e3L,0x2b6e019a88b12f1aL,
|
|
0x086659cdfd835f9bL } },
|
|
/* 10 << 0 */
|
|
{ { 0x2c18dbd19dc21ec8L,0x98f9868a0fcf8139L,0x737d2cd648250b49L,
|
|
0xcc61c94724b3428fL },
|
|
{ 0x0c2b407880dd9e76L,0xc43a8991383fbe08L,0x5f7d2d65779be5d2L,
|
|
0x78719a54eb3b4ab5L } },
|
|
/* 11 << 0 */
|
|
{ { 0xea7d260a6245e404L,0x9de407956e7fdfe0L,0x1ff3a4158dac1ab5L,
|
|
0x3e7090f1649c9073L },
|
|
{ 0x1a7685612b944e88L,0x250f939ee57f61c8L,0x0c0daa891ead643dL,
|
|
0x68930023e125b88eL } },
|
|
/* 12 << 0 */
|
|
{ { 0x04b71aa7d2697768L,0xabdedef5ca345a33L,0x2409d29dee37385eL,
|
|
0x4ee1df77cb83e156L },
|
|
{ 0x0cac12d91cbb5b43L,0x170ed2f6ca895637L,0x28228cfa8ade6d66L,
|
|
0x7ff57c9553238acaL } },
|
|
/* 13 << 0 */
|
|
{ { 0xccc425634b2ed709L,0x0e356769856fd30dL,0xbcbcd43f559e9811L,
|
|
0x738477ac5395b759L },
|
|
{ 0x35752b90c00ee17fL,0x68748390742ed2e3L,0x7cd06422bd1f5bc1L,
|
|
0xfbc08769c9e7b797L } },
|
|
/* 14 << 0 */
|
|
{ { 0xa242a35bb0cf664aL,0x126e48f77f9707e3L,0x1717bf54c6832660L,
|
|
0xfaae7332fd12c72eL },
|
|
{ 0x27b52db7995d586bL,0xbe29569e832237c2L,0xe8e4193e2a65e7dbL,
|
|
0x152706dc2eaa1bbbL } },
|
|
/* 15 << 0 */
|
|
{ { 0x72bcd8b7bc60055bL,0x03cc23ee56e27e4bL,0xee337424e4819370L,
|
|
0xe2aa0e430ad3da09L },
|
|
{ 0x40b8524f6383c45dL,0xd766355442a41b25L,0x64efa6de778a4797L,
|
|
0x2042170a7079adf4L } },
|
|
/* 16 << 0 */
|
|
{ { 0x808b0b650bc6fb80L,0x5882e0753ffe2e6bL,0xd5ef2f7c2c83f549L,
|
|
0x54d63c809103b723L },
|
|
{ 0xf2f11bd652a23f9bL,0x3670c3194b0b6587L,0x55c4623bb1580e9eL,
|
|
0x64edf7b201efe220L } },
|
|
/* 17 << 0 */
|
|
{ { 0x97091dcbd53c5c9dL,0xf17624b6ac0a177bL,0xb0f139752cfe2dffL,
|
|
0xc1a35c0a6c7a574eL },
|
|
{ 0x227d314693e79987L,0x0575bf30e89cb80eL,0x2f4e247f0d1883bbL,
|
|
0xebd512263274c3d0L } },
|
|
/* 18 << 0 */
|
|
{ { 0x5f3e51c856ada97aL,0x4afc964d8f8b403eL,0xa6f247ab412e2979L,
|
|
0x675abd1b6f80ebdaL },
|
|
{ 0x66a2bd725e485a1dL,0x4b2a5caf8f4f0b3cL,0x2626927f1b847bbaL,
|
|
0x6c6fc7d90502394dL } },
|
|
/* 19 << 0 */
|
|
{ { 0xfea912baa5659ae8L,0x68363aba25e1a16eL,0xb8842277752c41acL,
|
|
0xfe545c282897c3fcL },
|
|
{ 0x2d36e9e7dc4c696bL,0x5806244afba977c5L,0x85665e9be39508c1L,
|
|
0xf720ee256d12597bL } },
|
|
/* 20 << 0 */
|
|
{ { 0x8a979129d2337a31L,0x5916868f0f862bdcL,0x048099d95dd283baL,
|
|
0xe2d1eeb6fe5bfb4eL },
|
|
{ 0x82ef1c417884005dL,0xa2d4ec17ffffcbaeL,0x9161c53f8aa95e66L,
|
|
0x5ee104e1c5fee0d0L } },
|
|
/* 21 << 0 */
|
|
{ { 0x562e4cecc135b208L,0x74e1b2654783f47dL,0x6d2a506c5a3f3b30L,
|
|
0xecead9f4c16762fcL },
|
|
{ 0xf29dd4b2e286e5b9L,0x1b0fadc083bb3c61L,0x7a75023e7fac29a4L,
|
|
0xc086d5f1c9477fa3L } },
|
|
/* 22 << 0 */
|
|
{ { 0x0fc611352f6f3076L,0xc99ffa23e3912a9aL,0x6a0b0685d2f8ba3dL,
|
|
0xfdc777e8e93358a4L },
|
|
{ 0x94a787bb35415f04L,0x640c2d6a4d23fea4L,0x9de917da153a35b5L,
|
|
0x793e8d075d5cd074L } },
|
|
/* 23 << 0 */
|
|
{ { 0xf4f876532de45068L,0x37c7a7e89e2e1f6eL,0xd0825fa2a3584069L,
|
|
0xaf2cea7c1727bf42L },
|
|
{ 0x0360a4fb9e4785a9L,0xe5fda49c27299f4aL,0x48068e1371ac2f71L,
|
|
0x83d0687b9077666fL } },
|
|
/* 24 << 0 */
|
|
{ { 0x6d3883b215d02819L,0x6d0d755040dd9a35L,0x61d7cbf91d2b469fL,
|
|
0xf97b232f2efc3115L },
|
|
{ 0xa551d750b24bcbc7L,0x11ea494988a1e356L,0x7669f03193cb7501L,
|
|
0x595dc55eca737b8aL } },
|
|
/* 25 << 0 */
|
|
{ { 0xa4a319acd837879fL,0x6fc1b49eed6b67b0L,0xe395993332f1f3afL,
|
|
0x966742eb65432a2eL },
|
|
{ 0x4b8dc9feb4966228L,0x96cc631243f43950L,0x12068859c9b731eeL,
|
|
0x7b948dc356f79968L } },
|
|
/* 26 << 0 */
|
|
{ { 0x61e4ad32ed1f8008L,0xe6c9267ad8b17538L,0x1ac7c5eb857ff6fbL,
|
|
0x994baaa855f2fb10L },
|
|
{ 0x84cf14e11d248018L,0x5a39898b628ac508L,0x14fde97b5fa944f5L,
|
|
0xed178030d12e5ac7L } },
|
|
/* 27 << 0 */
|
|
{ { 0x042c2af497e2feb4L,0xd36a42d7aebf7313L,0x49d2c9eb084ffdd7L,
|
|
0x9f8aa54b2ef7c76aL },
|
|
{ 0x9200b7ba09895e70L,0x3bd0c66fddb7fb58L,0x2d97d10878eb4cbbL,
|
|
0x2d431068d84bde31L } },
|
|
/* 28 << 0 */
|
|
{ { 0x4b523eb7172ccd1fL,0x7323cb2830a6a892L,0x97082ec0cfe153ebL,
|
|
0xe97f6b6af2aadb97L },
|
|
{ 0x1d3d393ed1a83da1L,0xa6a7f9c7804b2a68L,0x4a688b482d0cb71eL,
|
|
0xa9b4cc5f40585278L } },
|
|
/* 29 << 0 */
|
|
{ { 0x5e5db46acb66e132L,0xf1be963a0d925880L,0x944a70270317b9e2L,
|
|
0xe266f95948603d48L },
|
|
{ 0x98db66735c208899L,0x90472447a2fb18a3L,0x8a966939777c619fL,
|
|
0x3798142a2a3be21bL } },
|
|
/* 30 << 0 */
|
|
{ { 0xb4241cb13298b343L,0xa3a14e49b44f65a1L,0xc5f4d6cd3ac77acdL,
|
|
0xd0288cb552b6fc3cL },
|
|
{ 0xd5cc8c2f1c040abcL,0xb675511e06bf9b4aL,0xd667da379b3aa441L,
|
|
0x460d45ce51601f72L } },
|
|
/* 31 << 0 */
|
|
{ { 0xe2f73c696755ff89L,0xdd3cf7e7473017e6L,0x8ef5689d3cf7600dL,
|
|
0x948dc4f8b1fc87b4L },
|
|
{ 0xd9e9fe814ea53299L,0x2d921ca298eb6028L,0xfaecedfd0c9803fcL,
|
|
0xf38ae8914d7b4745L } },
|
|
/* 32 << 0 */
|
|
{ { 0xd8c5fccfc5e3a3d8L,0xbefd904c4079dfbfL,0xbc6d6a58fead0197L,
|
|
0x39227077695532a4L },
|
|
{ 0x09e23e6ddbef42f5L,0x7e449b64480a9908L,0x7b969c1aad9a2e40L,
|
|
0x6231d7929591c2a4L } },
|
|
/* 33 << 0 */
|
|
{ { 0x871514560f664534L,0x85ceae7c4b68f103L,0xac09c4ae65578ab9L,
|
|
0x33ec6868f044b10cL },
|
|
{ 0x6ac4832b3a8ec1f1L,0x5509d1285847d5efL,0xf909604f763f1574L,
|
|
0xb16c4303c32f63c4L } },
|
|
/* 34 << 0 */
|
|
{ { 0xb6ab20147ca23cd3L,0xcaa7a5c6a391849dL,0x5b0673a375678d94L,
|
|
0xc982ddd4dd303e64L },
|
|
{ 0xfd7b000b5db6f971L,0xbba2cb1f6f876f92L,0xc77332a33c569426L,
|
|
0xa159100c570d74f8L } },
|
|
/* 35 << 0 */
|
|
{ { 0xfd16847fdec67ef5L,0x742ee464233e76b7L,0x0b8e4134efc2b4c8L,
|
|
0xca640b8642a3e521L },
|
|
{ 0x653a01908ceb6aa9L,0x313c300c547852d5L,0x24e4ab126b237af7L,
|
|
0x2ba901628bb47af8L } },
|
|
/* 36 << 0 */
|
|
{ { 0x3d5e58d6a8219bb7L,0xc691d0bd1b06c57fL,0x0ae4cb10d257576eL,
|
|
0x3569656cd54a3dc3L },
|
|
{ 0xe5ebaebd94cda03aL,0x934e82d3162bfe13L,0x450ac0bae251a0c6L,
|
|
0x480b9e11dd6da526L } },
|
|
/* 37 << 0 */
|
|
{ { 0x00467bc58cce08b5L,0xb636458c7f178d55L,0xc5748baea677d806L,
|
|
0x2763a387dfa394ebL },
|
|
{ 0xa12b448a7d3cebb6L,0xe7adda3e6f20d850L,0xf63ebce51558462cL,
|
|
0x58b36143620088a8L } },
|
|
/* 38 << 0 */
|
|
{ { 0x8a2cc3ca4d63c0eeL,0x512331170fe948ceL,0x7463fd85222ef33bL,
|
|
0xadf0c7dc7c603d6cL },
|
|
{ 0x0ec32d3bfe7765e5L,0xccaab359bf380409L,0xbdaa84d68e59319cL,
|
|
0xd9a4c2809c80c34dL } },
|
|
/* 39 << 0 */
|
|
{ { 0xa9d89488a059c142L,0x6f5ae714ff0b9346L,0x068f237d16fb3664L,
|
|
0x5853e4c4363186acL },
|
|
{ 0xe2d87d2363c52f98L,0x2ec4a76681828876L,0x47b864fae14e7b1cL,
|
|
0x0c0bc0e569192408L } },
|
|
/* 40 << 0 */
|
|
{ { 0xe4d7681db82e9f3eL,0x83200f0bdf25e13cL,0x8909984c66f27280L,
|
|
0x462d7b0075f73227L },
|
|
{ 0xd90ba188f2651798L,0x74c6e18c36ab1c34L,0xab256ea35ef54359L,
|
|
0x03466612d1aa702fL } },
|
|
/* 41 << 0 */
|
|
{ { 0x624d60492ed22e91L,0x6fdfe0b56f072822L,0xeeca111539ce2271L,
|
|
0x98100a4fdb01614fL },
|
|
{ 0xb6b0daa2a35c628fL,0xb6f94d2ec87e9a47L,0xc67732591d57d9ceL,
|
|
0xf70bfeec03884a7bL } },
|
|
/* 42 << 0 */
|
|
{ { 0x5fb35ccfed2bad01L,0xa155cbe31da6a5c7L,0xc2e2594c30a92f8fL,
|
|
0x649c89ce5bfafe43L },
|
|
{ 0xd158667de9ff257aL,0x9b359611f32c50aeL,0x4b00b20b906014cfL,
|
|
0xf3a8cfe389bc7d3dL } },
|
|
/* 43 << 0 */
|
|
{ { 0x4ff23ffd248a7d06L,0x80c5bfb4878873faL,0xb7d9ad9005745981L,
|
|
0x179c85db3db01994L },
|
|
{ 0xba41b06261a6966cL,0x4d82d052eadce5a8L,0x9e91cd3ba5e6a318L,
|
|
0x47795f4f95b2dda0L } },
|
|
/* 44 << 0 */
|
|
{ { 0xecfd7c1fd55a897cL,0x009194abb29110fbL,0x5f0e2046e381d3b0L,
|
|
0x5f3425f6a98dd291L },
|
|
{ 0xbfa06687730d50daL,0x0423446c4b083b7fL,0x397a247dd69d3417L,
|
|
0xeb629f90387ba42aL } },
|
|
/* 45 << 0 */
|
|
{ { 0x1ee426ccd5cd79bfL,0x0032940b946c6e18L,0x1b1e8ae057477f58L,
|
|
0xe94f7d346d823278L },
|
|
{ 0xc747cb96782ba21aL,0xc5254469f72b33a5L,0x772ef6dec7f80c81L,
|
|
0xd73acbfe2cd9e6b5L } },
|
|
/* 46 << 0 */
|
|
{ { 0x4075b5b149ee90d9L,0x785c339aa06e9ebaL,0xa1030d5babf825e0L,
|
|
0xcec684c3a42931dcL },
|
|
{ 0x42ab62c9c1586e63L,0x45431d665ab43f2bL,0x57c8b2c055f7835dL,
|
|
0x033da338c1b7f865L } },
|
|
/* 47 << 0 */
|
|
{ { 0x283c7513caa76097L,0x0a624fa936c83906L,0x6b20afec715af2c7L,
|
|
0x4b969974eba78bfdL },
|
|
{ 0x220755ccd921d60eL,0x9b944e107baeca13L,0x04819d515ded93d4L,
|
|
0x9bbff86e6dddfd27L } },
|
|
/* 48 << 0 */
|
|
{ { 0x6b34413077adc612L,0xa7496529bbd803a0L,0x1a1baaa76d8805bdL,
|
|
0xc8403902470343adL },
|
|
{ 0x39f59f66175adff1L,0x0b26d7fbb7d8c5b7L,0xa875f5ce529d75e3L,
|
|
0x85efc7e941325cc2L } },
|
|
/* 49 << 0 */
|
|
{ { 0x21950b421ff6acd3L,0xffe7048453dc6909L,0xff4cd0b228766127L,
|
|
0xabdbe6084fb7db2bL },
|
|
{ 0x837c92285e1109e8L,0x26147d27f4645b5aL,0x4d78f592f7818ed8L,
|
|
0xd394077ef247fa36L } },
|
|
/* 50 << 0 */
|
|
{ { 0x0fb9c2d0488c171aL,0xa78bfbaa13685278L,0xedfbe268d5b1fa6aL,
|
|
0x0dceb8db2b7eaba7L },
|
|
{ 0xbf9e80899ae2b710L,0xefde7ae6a4449c96L,0x43b7716bcc143a46L,
|
|
0xd7d34194c3628c13L } },
|
|
/* 51 << 0 */
|
|
{ { 0x508cec1c3b3f64c9L,0xe20bc0ba1e5edf3fL,0xda1deb852f4318d4L,
|
|
0xd20ebe0d5c3fa443L },
|
|
{ 0x370b4ea773241ea3L,0x61f1511c5e1a5f65L,0x99a5e23d82681c62L,
|
|
0xd731e383a2f54c2dL } },
|
|
/* 52 << 0 */
|
|
{ { 0x2692f36e83445904L,0x2e0ec469af45f9c0L,0x905a3201c67528b7L,
|
|
0x88f77f34d0e5e542L },
|
|
{ 0xf67a8d295864687cL,0x23b92eae22df3562L,0x5c27014b9bbec39eL,
|
|
0x7ef2f2269c0f0f8dL } },
|
|
/* 53 << 0 */
|
|
{ { 0x97359638546c4d8dL,0x5f9c3fc492f24679L,0x912e8beda8c8acd9L,
|
|
0xec3a318d306634b0L },
|
|
{ 0x80167f41c31cb264L,0x3db82f6f522113f2L,0xb155bcd2dcafe197L,
|
|
0xfba1da5943465283L } },
|
|
/* 54 << 0 */
|
|
{ { 0xa0425b8eb212cf53L,0x4f2e512ef8557c5fL,0xc1286ff925c4d56cL,
|
|
0xbb8a0feaee26c851L },
|
|
{ 0xc28f70d2e7d6107eL,0x7ee0c444e76265aaL,0x3df277a41d1936b1L,
|
|
0x1a556e3fea9595ebL } },
|
|
/* 55 << 0 */
|
|
{ { 0x258bbbf9e7305683L,0x31eea5bf07ef5be6L,0x0deb0e4a46c814c1L,
|
|
0x5cee8449a7b730ddL },
|
|
{ 0xeab495c5a0182bdeL,0xee759f879e27a6b4L,0xc2cf6a6880e518caL,
|
|
0x25e8013ff14cf3f4L } },
|
|
/* 56 << 0 */
|
|
{ { 0x8fc441407e8d7a14L,0xbb1ff3ca9556f36aL,0x6a84438514600044L,
|
|
0xba3f0c4a7451ae63L },
|
|
{ 0xdfcac25b1f9af32aL,0x01e0db86b1f2214bL,0x4e9a5bc2a4b596acL,
|
|
0x83927681026c2c08L } },
|
|
/* 57 << 0 */
|
|
{ { 0x3ec832e77acaca28L,0x1bfeea57c7385b29L,0x068212e3fd1eaf38L,
|
|
0xc13298306acf8cccL },
|
|
{ 0xb909f2db2aac9e59L,0x5748060db661782aL,0xc5ab2632c79b7a01L,
|
|
0xda44c6c600017626L } },
|
|
/* 58 << 0 */
|
|
{ { 0xf26c00e8a7ea82f0L,0x99cac80de4299aafL,0xd66fe3b67ed78be1L,
|
|
0x305f725f648d02cdL },
|
|
{ 0x33ed1bc4623fb21bL,0xfa70533e7a6319adL,0x17ab562dbe5ffb3eL,
|
|
0x0637499456674741L } },
|
|
/* 59 << 0 */
|
|
{ { 0x69d44ed65c46aa8eL,0x2100d5d3a8d063d1L,0xcb9727eaa2d17c36L,
|
|
0x4c2bab1b8add53b7L },
|
|
{ 0xa084e90c15426704L,0x778afcd3a837ebeaL,0x6651f7017ce477f8L,
|
|
0xa062499846fb7a8bL } },
|
|
/* 60 << 0 */
|
|
{ { 0xdc1e6828ed8a6e19L,0x33fc23364189d9c7L,0x026f8fe2671c39bcL,
|
|
0xd40c4ccdbc6f9915L },
|
|
{ 0xafa135bbf80e75caL,0x12c651a022adff2cL,0xc40a04bd4f51ad96L,
|
|
0x04820109bbe4e832L } },
|
|
/* 61 << 0 */
|
|
{ { 0x3667eb1a7f4c04ccL,0x59556621a9404f84L,0x71cdf6537eceb50aL,
|
|
0x994a44a69b8335faL },
|
|
{ 0xd7faf819dbeb9b69L,0x473c5680eed4350dL,0xb6658466da44bba2L,
|
|
0x0d1bc780872bdbf3L } },
|
|
/* 62 << 0 */
|
|
{ { 0xe535f175a1962f91L,0x6ed7e061ed58f5a7L,0x177aa4c02089a233L,
|
|
0x0dbcb03ae539b413L },
|
|
{ 0xe3dc424ebb32e38eL,0x6472e5ef6806701eL,0xdd47ff98814be9eeL,
|
|
0x6b60cfff35ace009L } },
|
|
/* 63 << 0 */
|
|
{ { 0xb8d3d9319ff91fe5L,0x039c4800f0518eedL,0x95c376329182cb26L,
|
|
0x0763a43482fc568dL },
|
|
{ 0x707c04d5383e76baL,0xac98b930824e8197L,0x92bf7c8f91230de0L,
|
|
0x90876a0140959b70L } },
|
|
/* 64 << 0 */
|
|
{ { 0xdb6d96f305968b80L,0x380a0913089f73b9L,0x7da70b83c2c61e01L,
|
|
0x95fb8394569b38c7L },
|
|
{ 0x9a3c651280edfe2fL,0x8f726bb98faeaf82L,0x8010a4a078424bf8L,
|
|
0x296720440e844970L } },
|
|
/* 0 << 7 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 7 */
|
|
{ { 0x63c5cb817a2ad62aL,0x7ef2b6b9ac62ff54L,0x3749bba4b3ad9db5L,
|
|
0xad311f2c46d5a617L },
|
|
{ 0xb77a8087c2ff3b6dL,0xb46feaf3367834ffL,0xf8aa266d75d6b138L,
|
|
0xfa38d320ec008188L } },
|
|
/* 2 << 7 */
|
|
{ { 0x486d8ffa696946fcL,0x50fbc6d8b9cba56dL,0x7e3d423e90f35a15L,
|
|
0x7c3da195c0dd962cL },
|
|
{ 0xe673fdb03cfd5d8bL,0x0704b7c2889dfca5L,0xf6ce581ff52305aaL,
|
|
0x399d49eb914d5e53L } },
|
|
/* 3 << 7 */
|
|
{ { 0x380a496d6ec293cdL,0x733dbda78e7051f5L,0x037e388db849140aL,
|
|
0xee4b32b05946dbf6L },
|
|
{ 0xb1c4fda9cae368d1L,0x5001a7b0fdb0b2f3L,0x6df593742e3ac46eL,
|
|
0x4af675f239b3e656L } },
|
|
/* 4 << 7 */
|
|
{ { 0x44e3811039949296L,0x5b63827b361db1b5L,0x3e5323ed206eaff5L,
|
|
0x942370d2c21f4290L },
|
|
{ 0xf2caaf2ee0d985a1L,0x192cc64b7239846dL,0x7c0b8f47ae6312f8L,
|
|
0x7dc61f9196620108L } },
|
|
/* 5 << 7 */
|
|
{ { 0xb830fb5bc2da7de9L,0xd0e643df0ff8d3beL,0x31ee77ba188a9641L,
|
|
0x4e8aa3aabcf6d502L },
|
|
{ 0xf9fb65329a49110fL,0xd18317f62dd6b220L,0x7e3ced4152c3ea5aL,
|
|
0x0d296a147d579c4aL } },
|
|
/* 6 << 7 */
|
|
{ { 0x35d6a53eed4c3717L,0x9f8240cf3d0ed2a3L,0x8c0d4d05e5543aa5L,
|
|
0x45d5bbfbdd33b4b4L },
|
|
{ 0xfa04cc73137fd28eL,0x862ac6efc73b3ffdL,0x403ff9f531f51ef2L,
|
|
0x34d5e0fcbc73f5a2L } },
|
|
/* 7 << 7 */
|
|
{ { 0xf252682008913f4fL,0xea20ed61eac93d95L,0x51ed38b46ca6b26cL,
|
|
0x8662dcbcea4327b0L },
|
|
{ 0x6daf295c725d2aaaL,0xbad2752f8e52dcdaL,0x2210e7210b17daccL,
|
|
0xa37f7912d51e8232L } },
|
|
/* 8 << 7 */
|
|
{ { 0x4f7081e144cc3addL,0xd5ffa1d687be82cfL,0x89890b6c0edd6472L,
|
|
0xada26e1a3ed17863L },
|
|
{ 0x276f271563483caaL,0xe6924cd92f6077fdL,0x05a7fe980a466e3cL,
|
|
0xf1c794b0b1902d1fL } },
|
|
/* 9 << 7 */
|
|
{ { 0xe521368882a8042cL,0xd931cfafcd278298L,0x069a0ae0f597a740L,
|
|
0x0adbb3f3eb59107cL },
|
|
{ 0x983e951e5eaa8eb8L,0xe663a8b511b48e78L,0x1631cc0d8a03f2c5L,
|
|
0x7577c11e11e271e2L } },
|
|
/* 10 << 7 */
|
|
{ { 0x33b2385c08369a90L,0x2990c59b190eb4f8L,0x819a6145c68eac80L,
|
|
0x7a786d622ec4a014L },
|
|
{ 0x33faadbe20ac3a8dL,0x31a217815aba2d30L,0x209d2742dba4f565L,
|
|
0xdb2ce9e355aa0fbbL } },
|
|
/* 11 << 7 */
|
|
{ { 0x8cef334b168984dfL,0xe81dce1733879638L,0xf6e6949c263720f0L,
|
|
0x5c56feaff593cbecL },
|
|
{ 0x8bff5601fde58c84L,0x74e241172eccb314L,0xbcf01b614c9a8a78L,
|
|
0xa233e35e544c9868L } },
|
|
/* 12 << 7 */
|
|
{ { 0xb3156bf38bd7aff1L,0x1b5ee4cb1d81b146L,0x7ba1ac41d628a915L,
|
|
0x8f3a8f9cfd89699eL },
|
|
{ 0x7329b9c9a0748be7L,0x1d391c95a92e621fL,0xe51e6b214d10a837L,
|
|
0xd255f53a4947b435L } },
|
|
/* 13 << 7 */
|
|
{ { 0x07669e04f1788ee3L,0xc14f27afa86938a2L,0x8b47a334e93a01c0L,
|
|
0xff627438d9366808L },
|
|
{ 0x7a0985d8ca2a5965L,0x3d9a5542d6e9b9b3L,0xc23eb80b4cf972e8L,
|
|
0x5c1c33bb4fdf72fdL } },
|
|
/* 14 << 7 */
|
|
{ { 0x0c4a58d474a86108L,0xf8048a8fee4c5d90L,0xe3c7c924e86d4c80L,
|
|
0x28c889de056a1e60L },
|
|
{ 0x57e2662eb214a040L,0xe8c48e9837e10347L,0x8774286280ac748aL,
|
|
0xf1c24022186b06f2L } },
|
|
/* 15 << 7 */
|
|
{ { 0xac2dd4c35f74040aL,0x409aeb71fceac957L,0x4fbad78255c4ec23L,
|
|
0xb359ed618a7b76ecL },
|
|
{ 0x12744926ed6f4a60L,0xe21e8d7f4b912de3L,0xe2575a59fc705a59L,
|
|
0x72f1d4deed2dbc0eL } },
|
|
/* 16 << 7 */
|
|
{ { 0x3d2b24b9eb7926b8L,0xbff88cb3cdbe5509L,0xd0f399afe4dd640bL,
|
|
0x3c5fe1302f76ed45L },
|
|
{ 0x6f3562f43764fb3dL,0x7b5af3183151b62dL,0xd5bd0bc7d79ce5f3L,
|
|
0xfdaf6b20ec66890fL } },
|
|
/* 17 << 7 */
|
|
{ { 0x735c67ec6063540cL,0x50b259c2e5f9cb8fL,0xb8734f9a3f99c6abL,
|
|
0xf8cc13d5a3a7bc85L },
|
|
{ 0x80c1b305c5217659L,0xfe5364d44ec12a54L,0xbd87045e681345feL,
|
|
0x7f8efeb1582f897fL } },
|
|
/* 18 << 7 */
|
|
{ { 0xe8cbf1e5d5923359L,0xdb0cea9d539b9fb0L,0x0c5b34cf49859b98L,
|
|
0x5e583c56a4403cc6L },
|
|
{ 0x11fc1a2dd48185b7L,0xc93fbc7e6e521787L,0x47e7a05805105b8bL,
|
|
0x7b4d4d58db8260c8L } },
|
|
/* 19 << 7 */
|
|
{ { 0xe33930b046eb842aL,0x8e844a9a7bdae56dL,0x34ef3a9e13f7fdfcL,
|
|
0xb3768f82636ca176L },
|
|
{ 0x2821f4e04e09e61cL,0x414dc3a1a0c7cddcL,0xd537943754945fcdL,
|
|
0x151b6eefb3555ff1L } },
|
|
/* 20 << 7 */
|
|
{ { 0xb31bd6136339c083L,0x39ff8155dfb64701L,0x7c3388d2e29604abL,
|
|
0x1e19084ba6b10442L },
|
|
{ 0x17cf54c0eccd47efL,0x896933854a5dfb30L,0x69d023fb47daf9f6L,
|
|
0x9222840b7d91d959L } },
|
|
/* 21 << 7 */
|
|
{ { 0x439108f5803bac62L,0x0b7dd91d379bd45fL,0xd651e827ca63c581L,
|
|
0x5c5d75f6509c104fL },
|
|
{ 0x7d5fc7381f2dc308L,0x20faa7bfd98454beL,0x95374beea517b031L,
|
|
0xf036b9b1642692acL } },
|
|
/* 22 << 7 */
|
|
{ { 0xc510610939842194L,0xb7e2353e49d05295L,0xfc8c1d5cefb42ee0L,
|
|
0xe04884eb08ce811cL },
|
|
{ 0xf1f75d817419f40eL,0x5b0ac162a995c241L,0x120921bbc4c55646L,
|
|
0x713520c28d33cf97L } },
|
|
/* 23 << 7 */
|
|
{ { 0xb4a65a5ce98c5100L,0x6cec871d2ddd0f5aL,0x251f0b7f9ba2e78bL,
|
|
0x224a8434ce3a2a5fL },
|
|
{ 0x26827f6125f5c46fL,0x6a22bedc48545ec0L,0x25ae5fa0b1bb5cdcL,
|
|
0xd693682ffcb9b98fL } },
|
|
/* 24 << 7 */
|
|
{ { 0x32027fe891e5d7d3L,0xf14b7d1773a07678L,0xf88497b3c0dfdd61L,
|
|
0xf7c2eec02a8c4f48L },
|
|
{ 0xaa5573f43756e621L,0xc013a2401825b948L,0x1c03b34563878572L,
|
|
0xa0472bea653a4184L } },
|
|
/* 25 << 7 */
|
|
{ { 0xf4222e270ac69a80L,0x34096d25f51e54f6L,0x00a648cb8fffa591L,
|
|
0x4e87acdc69b6527fL },
|
|
{ 0x0575e037e285ccb4L,0x188089e450ddcf52L,0xaa96c9a8870ff719L,
|
|
0x74a56cd81fc7e369L } },
|
|
/* 26 << 7 */
|
|
{ { 0x41d04ee21726931aL,0x0bbbb2c83660ecfdL,0xa6ef6de524818e18L,
|
|
0xe421cc51e7d57887L },
|
|
{ 0xf127d208bea87be6L,0x16a475d3b1cdd682L,0x9db1b684439b63f7L,
|
|
0x5359b3dbf0f113b6L } },
|
|
/* 27 << 7 */
|
|
{ { 0xdfccf1de8bf06e31L,0x1fdf8f44dd383901L,0x10775cad5017e7d2L,
|
|
0xdfc3a59758d11eefL },
|
|
{ 0x6ec9c8a0b1ecff10L,0xee6ed6cc28400549L,0xb5ad7bae1b4f8d73L,
|
|
0x61b4f11de00aaab9L } },
|
|
/* 28 << 7 */
|
|
{ { 0x7b32d69bd4eff2d7L,0x88ae67714288b60fL,0x159461b437a1e723L,
|
|
0x1f3d4789570aae8cL },
|
|
{ 0x869118c07f9871daL,0x35fbda78f635e278L,0x738f3641e1541dacL,
|
|
0x6794b13ac0dae45fL } },
|
|
/* 29 << 7 */
|
|
{ { 0x065064ac09cc0917L,0x27c53729c68540fdL,0x0d2d4c8eef227671L,
|
|
0xd23a9f80a1785a04L },
|
|
{ 0x98c5952852650359L,0xfa09ad0174a1acadL,0x082d5a290b55bf5cL,
|
|
0xa40f1c67419b8084L } },
|
|
/* 30 << 7 */
|
|
{ { 0x3a5c752edcc18770L,0x4baf1f2f8825c3a5L,0xebd63f7421b153edL,
|
|
0xa2383e47b2f64723L },
|
|
{ 0xe7bf620a2646d19aL,0x56cb44ec03c83ffdL,0xaf7267c94f6be9f1L,
|
|
0x8b2dfd7bc06bb5e9L } },
|
|
/* 31 << 7 */
|
|
{ { 0xb87072f2a672c5c7L,0xeacb11c80d53c5e2L,0x22dac29dff435932L,
|
|
0x37bdb99d4408693cL },
|
|
{ 0xf6e62fb62899c20fL,0x3535d512447ece24L,0xfbdc6b88ff577ce3L,
|
|
0x726693bd190575f2L } },
|
|
/* 32 << 7 */
|
|
{ { 0x6772b0e5ab4b35a2L,0x1d8b6001f5eeaacfL,0x728f7ce4795b9580L,
|
|
0x4a20ed2a41fb81daL },
|
|
{ 0x9f685cd44fec01e6L,0x3ed7ddcca7ff50adL,0x460fd2640c2d97fdL,
|
|
0x3a241426eb82f4f9L } },
|
|
/* 33 << 7 */
|
|
{ { 0x17d1df2c6a8ea820L,0xb2b50d3bf22cc254L,0x03856cbab7291426L,
|
|
0x87fd26ae04f5ee39L },
|
|
{ 0x9cb696cc02bee4baL,0x5312180406820fd6L,0xa5dfc2690212e985L,
|
|
0x666f7ffa160f9a09L } },
|
|
/* 34 << 7 */
|
|
{ { 0xc503cd33bccd9617L,0x365dede4ba7730a3L,0x798c63555ddb0786L,
|
|
0xa6c3200efc9cd3bcL },
|
|
{ 0x060ffb2ce5e35efdL,0x99a4e25b5555a1c1L,0x11d95375f70b3751L,
|
|
0x0a57354a160e1bf6L } },
|
|
/* 35 << 7 */
|
|
{ { 0xecb3ae4bf8e4b065L,0x07a834c42e53022bL,0x1cd300b38692ed96L,
|
|
0x16a6f79261ee14ecL },
|
|
{ 0x8f1063c66a8649edL,0xfbcdfcfe869f3e14L,0x2cfb97c100a7b3ecL,
|
|
0xcea49b3c7130c2f1L } },
|
|
/* 36 << 7 */
|
|
{ { 0x462d044fe9d96488L,0x4b53d52e8182a0c1L,0x84b6ddd30391e9e9L,
|
|
0x80ab7b48b1741a09L },
|
|
{ 0xec0e15d427d3317fL,0x8dfc1ddb1a64671eL,0x93cc5d5fd49c5b92L,
|
|
0xc995d53d3674a331L } },
|
|
/* 37 << 7 */
|
|
{ { 0x302e41ec090090aeL,0x2278a0ccedb06830L,0x1d025932fbc99690L,
|
|
0x0c32fbd2b80d68daL },
|
|
{ 0xd79146daf341a6c1L,0xae0ba1391bef68a0L,0xc6b8a5638d774b3aL,
|
|
0x1cf307bd880ba4d7L } },
|
|
/* 38 << 7 */
|
|
{ { 0xc033bdc719803511L,0xa9f97b3b8888c3beL,0x3d68aebc85c6d05eL,
|
|
0xc3b88a9d193919ebL },
|
|
{ 0x2d300748c48b0ee3L,0x7506bc7c07a746c1L,0xfc48437c6e6d57f3L,
|
|
0x5bd71587cfeaa91aL } },
|
|
/* 39 << 7 */
|
|
{ { 0xa4ed0408c1bc5225L,0xd0b946db2719226dL,0x109ecd62758d2d43L,
|
|
0x75c8485a2751759bL },
|
|
{ 0xb0b75f499ce4177aL,0x4fa61a1e79c10c3dL,0xc062d300a167fcd7L,
|
|
0x4df3874c750f0fa8L } },
|
|
/* 40 << 7 */
|
|
{ { 0x29ae2cf983dfedc9L,0xf84371348d87631aL,0xaf5717117429c8d2L,
|
|
0x18d15867146d9272L },
|
|
{ 0x83053ecf69769bb7L,0xc55eb856c479ab82L,0x5ef7791c21b0f4b2L,
|
|
0xaa5956ba3d491525L } },
|
|
/* 41 << 7 */
|
|
{ { 0x407a96c29fe20ebaL,0xf27168bbe52a5ad3L,0x43b60ab3bf1d9d89L,
|
|
0xe45c51ef710e727aL },
|
|
{ 0xdfca5276099b4221L,0x8dc6407c2557a159L,0x0ead833591035895L,
|
|
0x0a9db9579c55dc32L } },
|
|
/* 42 << 7 */
|
|
{ { 0xe40736d3df61bc76L,0x13a619c03f778cdbL,0x6dd921a4c56ea28fL,
|
|
0x76a524332fa647b4L },
|
|
{ 0x23591891ac5bdc5dL,0xff4a1a72bac7dc01L,0x9905e26162df8453L,
|
|
0x3ac045dfe63b265fL } },
|
|
/* 43 << 7 */
|
|
{ { 0x8a3f341bad53dba7L,0x8ec269cc837b625aL,0xd71a27823ae31189L,
|
|
0x8fb4f9a355e96120L },
|
|
{ 0x804af823ff9875cfL,0x23224f575d442a9bL,0x1c4d3b9eecc62679L,
|
|
0x91da22fba0e7ddb1L } },
|
|
/* 44 << 7 */
|
|
{ { 0xa370324d6c04a661L,0x9710d3b65e376d17L,0xed8c98f03044e357L,
|
|
0xc364ebbe6422701cL },
|
|
{ 0x347f5d517733d61cL,0xd55644b9cea826c3L,0x80c6e0ad55a25548L,
|
|
0x0aa7641d844220a7L } },
|
|
/* 45 << 7 */
|
|
{ { 0x1438ec8131810660L,0x9dfa6507de4b4043L,0x10b515d8cc3e0273L,
|
|
0x1b6066dd28d8cfb2L },
|
|
{ 0xd3b045919c9efebdL,0x425d4bdfa21c1ff4L,0x5fe5af19d57607d3L,
|
|
0xbbf773f754481084L } },
|
|
/* 46 << 7 */
|
|
{ { 0x8435bd6994b03ed1L,0xd9ad1de3634cc546L,0x2cf423fc00e420caL,
|
|
0xeed26d80a03096ddL },
|
|
{ 0xd7f60be7a4db09d2L,0xf47f569d960622f7L,0xe5925fd77296c729L,
|
|
0xeff2db2626ca2715L } },
|
|
/* 47 << 7 */
|
|
{ { 0xa6fcd014b913e759L,0x53da47868ff4de93L,0x14616d79c32068e1L,
|
|
0xb187d664ccdf352eL },
|
|
{ 0xf7afb6501dc90b59L,0x8170e9437daa1b26L,0xc8e3bdd8700c0a84L,
|
|
0x6e8d345f6482bdfaL } },
|
|
/* 48 << 7 */
|
|
{ { 0x84cfbfa1c5c5ea50L,0xd3baf14c67960681L,0x263984030dd50942L,
|
|
0xe4b7839c4716a663L },
|
|
{ 0xd5f1f794e7de6dc0L,0x5cd0f4d4622aa7ceL,0x5295f3f159acfeecL,
|
|
0x8d933552953e0607L } },
|
|
/* 49 << 7 */
|
|
{ { 0xc7db8ec5776c5722L,0xdc467e622b5f290cL,0xd4297e704ff425a9L,
|
|
0x4be924c10cf7bb72L },
|
|
{ 0x0d5dc5aea1892131L,0x8bf8a8e3a705c992L,0x73a0b0647a305ac5L,
|
|
0x00c9ca4e9a8c77a8L } },
|
|
/* 50 << 7 */
|
|
{ { 0x5dfee80f83774bddL,0x6313160285734485L,0xa1b524ae914a69a9L,
|
|
0xebc2ffafd4e300d7L },
|
|
{ 0x52c93db77cfa46a5L,0x71e6161f21653b50L,0x3574fc57a4bc580aL,
|
|
0xc09015dde1bc1253L } },
|
|
/* 51 << 7 */
|
|
{ { 0x4b7b47b2d174d7aaL,0x4072d8e8f3a15d04L,0xeeb7d47fd6fa07edL,
|
|
0x6f2b9ff9edbdafb1L },
|
|
{ 0x18c516153760fe8aL,0x7a96e6bff06c6c13L,0x4d7a04100ea2d071L,
|
|
0xa1914e9b0be2a5ceL } },
|
|
/* 52 << 7 */
|
|
{ { 0x5726e357d8a3c5cfL,0x1197ecc32abb2b13L,0x6c0d7f7f31ae88ddL,
|
|
0x15b20d1afdbb3efeL },
|
|
{ 0xcd06aa2670584039L,0x2277c969a7dc9747L,0xbca695877855d815L,
|
|
0x899ea2385188b32aL } },
|
|
/* 53 << 7 */
|
|
{ { 0x37d9228b760c1c9dL,0xc7efbb119b5c18daL,0x7f0d1bc819f6dbc5L,
|
|
0x4875384b07e6905bL },
|
|
{ 0xc7c50baa3ba8cd86L,0xb0ce40fbc2905de0L,0x708406737a231952L,
|
|
0xa912a262cf43de26L } },
|
|
/* 54 << 7 */
|
|
{ { 0x9c38ddcceb5b76c1L,0x746f528526fc0ab4L,0x52a63a50d62c269fL,
|
|
0x60049c5599458621L },
|
|
{ 0xe7f48f823c2f7c9eL,0x6bd99043917d5cf3L,0xeb1317a88701f469L,
|
|
0xbd3fe2ed9a449fe0L } },
|
|
/* 55 << 7 */
|
|
{ { 0x421e79ca12ef3d36L,0x9ee3c36c3e7ea5deL,0xe48198b5cdff36f7L,
|
|
0xaff4f967c6b82228L },
|
|
{ 0x15e19dd0c47adb7eL,0x45699b23032e7dfaL,0x40680c8b1fae026aL,
|
|
0x5a347a48550dbf4dL } },
|
|
/* 56 << 7 */
|
|
{ { 0xe652533b3cef0d7dL,0xd94f7b182bbb4381L,0x838752be0e80f500L,
|
|
0x8e6e24889e9c9bfbL },
|
|
{ 0xc975169716caca6aL,0x866c49d838531ad9L,0xc917e2397151ade1L,
|
|
0x2d016ec16037c407L } },
|
|
/* 57 << 7 */
|
|
{ { 0xa407ccc900eac3f9L,0x835f6280e2ed4748L,0xcc54c3471cc98e0dL,
|
|
0x0e969937dcb572ebL },
|
|
{ 0x1b16c8e88f30c9cbL,0xa606ae75373c4661L,0x47aa689b35502cabL,
|
|
0xf89014ae4d9bb64fL } },
|
|
/* 58 << 7 */
|
|
{ { 0x202f6a9c31c71f7bL,0x01f95aa3296ffe5cL,0x5fc0601453cec3a3L,
|
|
0xeb9912375f498a45L },
|
|
{ 0xae9a935e5d91ba87L,0xc6ac62810b564a19L,0x8a8fe81c3bd44e69L,
|
|
0x7c8b467f9dd11d45L } },
|
|
/* 59 << 7 */
|
|
{ { 0xf772251fea5b8e69L,0xaeecb3bdc5b75fbcL,0x1aca3331887ff0e5L,
|
|
0xbe5d49ff19f0a131L },
|
|
{ 0x582c13aae5c8646fL,0xdbaa12e820e19980L,0x8f40f31af7abbd94L,
|
|
0x1f13f5a81dfc7663L } },
|
|
/* 60 << 7 */
|
|
{ { 0x5d81f1eeaceb4fc0L,0x362560025e6f0f42L,0x4b67d6d7751370c8L,
|
|
0x2608b69803e80589L },
|
|
{ 0xcfc0d2fc05268301L,0xa6943d3940309212L,0x192a90c21fd0e1c2L,
|
|
0xb209f11337f1dc76L } },
|
|
/* 61 << 7 */
|
|
{ { 0xefcc5e0697bf1298L,0xcbdb6730219d639eL,0xd009c116b81e8c6fL,
|
|
0xa3ffdde31a7ce2e5L },
|
|
{ 0xc53fbaaaa914d3baL,0x836d500f88df85eeL,0xd98dc71b66ee0751L,
|
|
0x5a3d7005714516fdL } },
|
|
/* 62 << 7 */
|
|
{ { 0x21d3634d39eedbbaL,0x35cd2e680455a46dL,0xc8cafe65f9d7eb0cL,
|
|
0xbda3ce9e00cefb3eL },
|
|
{ 0xddc17a602c9cf7a4L,0x01572ee47bcb8773L,0xa92b2b018c7548dfL,
|
|
0x732fd309a84600e3L } },
|
|
/* 63 << 7 */
|
|
{ { 0xe22109c716543a40L,0x9acafd36fede3c6cL,0xfb2068526824e614L,
|
|
0x2a4544a9da25dca0L },
|
|
{ 0x2598526291d60b06L,0x281b7be928753545L,0xec667b1a90f13b27L,
|
|
0x33a83aff940e2eb4L } },
|
|
/* 64 << 7 */
|
|
{ { 0x80009862d5d721d5L,0x0c3357a35bd3a182L,0x27f3a83b7aa2cda4L,
|
|
0xb58ae74ef6f83085L },
|
|
{ 0x2a911a812e6dad6bL,0xde286051f43d6c5bL,0x4bdccc41f996c4d8L,
|
|
0xe7312ec00ae1e24eL } },
|
|
/* 0 << 14 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 14 */
|
|
{ { 0xf8d112e76e6485b3L,0x4d3e24db771c52f8L,0x48e3ee41684a2f6dL,
|
|
0x7161957d21d95551L },
|
|
{ 0x19631283cdb12a6cL,0xbf3fa8822e50e164L,0xf6254b633166cc73L,
|
|
0x3aefa7aeaee8cc38L } },
|
|
/* 2 << 14 */
|
|
{ { 0x79b0fe623b36f9fdL,0x26543b23fde19fc0L,0x136e64a0958482efL,
|
|
0x23f637719b095825L },
|
|
{ 0x14cfd596b6a1142eL,0x5ea6aac6335aac0bL,0x86a0e8bdf3081dd5L,
|
|
0x5fb89d79003dc12aL } },
|
|
/* 3 << 14 */
|
|
{ { 0xf615c33af72e34d4L,0x0bd9ea40110eec35L,0x1c12bc5bc1dea34eL,
|
|
0x686584c949ae4699L },
|
|
{ 0x13ad95d38c97b942L,0x4609561a4e5c7562L,0x9e94a4aef2737f89L,
|
|
0xf57594c6371c78b6L } },
|
|
/* 4 << 14 */
|
|
{ { 0x0f0165fce3779ee3L,0xe00e7f9dbd495d9eL,0x1fa4efa220284e7aL,
|
|
0x4564bade47ac6219L },
|
|
{ 0x90e6312ac4708e8eL,0x4f5725fba71e9adfL,0xe95f55ae3d684b9fL,
|
|
0x47f7ccb11e94b415L } },
|
|
/* 5 << 14 */
|
|
{ { 0x7322851b8d946581L,0xf0d13133bdf4a012L,0xa3510f696584dae0L,
|
|
0x03a7c1713c9f6c6dL },
|
|
{ 0x5be97f38e475381aL,0xca1ba42285823334L,0xf83cc5c70be17ddaL,
|
|
0x158b14940b918c0fL } },
|
|
/* 6 << 14 */
|
|
{ { 0xda3a77e5522e6b69L,0x69c908c3bbcd6c18L,0x1f1b9e48d924fd56L,
|
|
0x37c64e36aa4bb3f7L },
|
|
{ 0x5a4fdbdfee478d7dL,0xba75c8bc0193f7a0L,0x84bc1e8456cd16dfL,
|
|
0x1fb08f0846fad151L } },
|
|
/* 7 << 14 */
|
|
{ { 0x8a7cabf9842e9f30L,0xa331d4bf5eab83afL,0xd272cfba017f2a6aL,
|
|
0x27560abc83aba0e3L },
|
|
{ 0x94b833870e3a6b75L,0x25c6aea26b9f50f5L,0x803d691db5fdf6d0L,
|
|
0x03b77509e6333514L } },
|
|
/* 8 << 14 */
|
|
{ { 0x3617890361a341c1L,0x3604dc600cfd6142L,0x022295eb8533316cL,
|
|
0x3dbde4ac44af2922L },
|
|
{ 0x898afc5d1c7eef69L,0x58896805d14f4fa1L,0x05002160203c21caL,
|
|
0x6f0d1f3040ef730bL } },
|
|
/* 9 << 14 */
|
|
{ { 0x8e8c44d4196224f8L,0x75a4ab95374d079dL,0x79085ecc7d48f123L,
|
|
0x56f04d311bf65ad8L },
|
|
{ 0xe220bf1cbda602b2L,0x73ee1742f9612c69L,0x76008fc8084fd06bL,
|
|
0x4000ef9ff11380d1L } },
|
|
/* 10 << 14 */
|
|
{ { 0x48201b4b12cfe297L,0x3eee129c292f74e5L,0xe1fe114ec9e874e8L,
|
|
0x899b055c92c5fc41L },
|
|
{ 0x4e477a643a39c8cfL,0x82f09efe78963cc9L,0x6fd3fd8fd333f863L,
|
|
0x85132b2adc949c63L } },
|
|
/* 11 << 14 */
|
|
{ { 0x7e06a3ab516eb17bL,0x73bec06fd2c7372bL,0xe4f74f55ba896da6L,
|
|
0xbb4afef88e9eb40fL },
|
|
{ 0x2d75bec8e61d66b0L,0x02bda4b4ef29300bL,0x8bbaa8de026baa5aL,
|
|
0xff54befda07f4440L } },
|
|
/* 12 << 14 */
|
|
{ { 0xbd9b8b1dbe7a2af3L,0xec51caa94fb74a72L,0xb9937a4b63879697L,
|
|
0x7c9a9d20ec2687d5L },
|
|
{ 0x1773e44f6ef5f014L,0x8abcf412e90c6900L,0x387bd0228142161eL,
|
|
0x50393755fcb6ff2aL } },
|
|
/* 13 << 14 */
|
|
{ { 0x9813fd56ed6def63L,0x53cf64827d53106cL,0x991a35bd431f7ac1L,
|
|
0xf1e274dd63e65fafL },
|
|
{ 0xf63ffa3c44cc7880L,0x411a426b7c256981L,0xb698b9fd93a420e0L,
|
|
0x89fdddc0ae53f8feL } },
|
|
/* 14 << 14 */
|
|
{ { 0x766e072232398baaL,0x205fee425cfca031L,0xa49f53417a029cf2L,
|
|
0xa88c68b84023890dL },
|
|
{ 0xbc2750417337aaa8L,0x9ed364ad0eb384f4L,0xe0816f8529aba92fL,
|
|
0x2e9e194104e38a88L } },
|
|
/* 15 << 14 */
|
|
{ { 0x57eef44a3dafd2d5L,0x35d1fae597ed98d8L,0x50628c092307f9b1L,
|
|
0x09d84aaed6cba5c6L },
|
|
{ 0x67071bc788aaa691L,0x2dea57a9afe6cb03L,0xdfe11bb43d78ac01L,
|
|
0x7286418c7fd7aa51L } },
|
|
/* 16 << 14 */
|
|
{ { 0xfabf770977f7195aL,0x8ec86167adeb838fL,0xea1285a8bb4f012dL,
|
|
0xd68835039a3eab3fL },
|
|
{ 0xee5d24f8309004c2L,0xa96e4b7613ffe95eL,0x0cdffe12bd223ea4L,
|
|
0x8f5c2ee5b6739a53L } },
|
|
/* 17 << 14 */
|
|
{ { 0x5cb4aaa5dd968198L,0xfa131c5272413a6cL,0x53d46a909536d903L,
|
|
0xb270f0d348606d8eL },
|
|
{ 0x518c7564a053a3bcL,0x088254b71a86caefL,0xb3ba8cb40ab5efd0L,
|
|
0x5c59900e4605945dL } },
|
|
/* 18 << 14 */
|
|
{ { 0xecace1dda1887395L,0x40960f36932a65deL,0x9611ff5c3aa95529L,
|
|
0xc58215b07c1e5a36L },
|
|
{ 0xd48c9b58f0e1a524L,0xb406856bf590dfb8L,0xc7605e049cd95662L,
|
|
0x0dd036eea33ecf82L } },
|
|
/* 19 << 14 */
|
|
{ { 0xa50171acc33156b3L,0xf09d24ea4a80172eL,0x4e1f72c676dc8eefL,
|
|
0xe60caadc5e3d44eeL },
|
|
{ 0x006ef8a6979b1d8fL,0x60908a1c97788d26L,0x6e08f95b266feec0L,
|
|
0x618427c222e8c94eL } },
|
|
/* 20 << 14 */
|
|
{ { 0x3d61333959145a65L,0xcd9bc368fa406337L,0x82d11be32d8a52a0L,
|
|
0xf6877b2797a1c590L },
|
|
{ 0x837a819bf5cbdb25L,0x2a4fd1d8de090249L,0x622a7de774990e5fL,
|
|
0x840fa5a07945511bL } },
|
|
/* 21 << 14 */
|
|
{ { 0x30b974be6558842dL,0x70df8c6417f3d0a6L,0x7c8035207542e46dL,
|
|
0x7251fe7fe4ecc823L },
|
|
{ 0xe59134cb5e9aac9aL,0x11bb0934f0045d71L,0x53e5d9b5dbcb1d4eL,
|
|
0x8d97a90592defc91L } },
|
|
/* 22 << 14 */
|
|
{ { 0xfe2893277946d3f9L,0xe132bd2407472273L,0xeeeb510c1eb6ae86L,
|
|
0x777708c5f0595067L },
|
|
{ 0x18e2c8cd1297029eL,0x2c61095cbbf9305eL,0xe466c2586b85d6d9L,
|
|
0x8ac06c36da1ea530L } },
|
|
/* 23 << 14 */
|
|
{ { 0xa365dc39a1304668L,0xe4a9c88507f89606L,0x65a4898facc7228dL,
|
|
0x3e2347ff84ca8303L },
|
|
{ 0xa5f6fb77ea7d23a3L,0x2fac257d672a71cdL,0x6908bef87e6a44d3L,
|
|
0x8ff87566891d3d7aL } },
|
|
/* 24 << 14 */
|
|
{ { 0xe58e90b36b0cf82eL,0x6438d2462615b5e7L,0x07b1f8fc669c145aL,
|
|
0xb0d8b2da36f1e1cbL },
|
|
{ 0x54d5dadbd9184c4dL,0x3dbb18d5f93d9976L,0x0a3e0f56d1147d47L,
|
|
0x2afa8c8da0a48609L } },
|
|
/* 25 << 14 */
|
|
{ { 0x275353e8bc36742cL,0x898f427eeea0ed90L,0x26f4947e3e477b00L,
|
|
0x8ad8848a308741e3L },
|
|
{ 0x6c703c38d74a2a46L,0x5e3e05a99ba17ba2L,0xc1fa6f664ab9a9e4L,
|
|
0x474a2d9a3841d6ecL } },
|
|
/* 26 << 14 */
|
|
{ { 0x871239ad653ae326L,0x14bcf72aa74cbb43L,0x8737650e20d4c083L,
|
|
0x3df86536110ed4afL },
|
|
{ 0xd2d86fe7b53ca555L,0x688cb00dabd5d538L,0xcf81bda31ad38468L,
|
|
0x7ccfe3ccf01167b6L } },
|
|
/* 27 << 14 */
|
|
{ { 0xcf4f47e06c4c1fe6L,0x557e1f1a298bbb79L,0xf93b974f30d45a14L,
|
|
0x174a1d2d0baf97c4L },
|
|
{ 0x7a003b30c51fbf53L,0xd8940991ee68b225L,0x5b0aa7b71c0f4173L,
|
|
0x975797c9a20a7153L } },
|
|
/* 28 << 14 */
|
|
{ { 0x26e08c07e3533d77L,0xd7222e6a2e341c99L,0x9d60ec3d8d2dc4edL,
|
|
0xbdfe0d8f7c476cf8L },
|
|
{ 0x1fe59ab61d056605L,0xa9ea9df686a8551fL,0x8489941e47fb8d8cL,
|
|
0xfeb874eb4a7f1b10L } },
|
|
/* 29 << 14 */
|
|
{ { 0xfe5fea867ee0d98fL,0x201ad34bdbf61864L,0x45d8fe4737c031d4L,
|
|
0xd5f49fae795f0822L },
|
|
{ 0xdb0fb291c7f4a40cL,0x2e69d9c1730ddd92L,0x754e105449d76987L,
|
|
0x8a24911d7662db87L } },
|
|
/* 30 << 14 */
|
|
{ { 0x61fc181060a71676L,0xe852d1a8f66a8ad1L,0x172bbd656417231eL,
|
|
0x0d6de7bd3babb11fL },
|
|
{ 0x6fde6f88c8e347f8L,0x1c5875479bd99cc3L,0x78e54ed034076950L,
|
|
0x97f0f334796e83baL } },
|
|
/* 31 << 14 */
|
|
{ { 0xe4dbe1ce4924867aL,0xbd5f51b060b84917L,0x375300403cb09a79L,
|
|
0xdb3fe0f8ff1743d8L },
|
|
{ 0xed7894d8556fa9dbL,0xfa26216923412fbfL,0x563be0dbba7b9291L,
|
|
0x6ca8b8c00c9fb234L } },
|
|
/* 32 << 14 */
|
|
{ { 0xed406aa9bd763802L,0xc21486a065303da1L,0x61ae291ec7e62ec4L,
|
|
0x622a0492df99333eL },
|
|
{ 0x7fd80c9dbb7a8ee0L,0xdc2ed3bc6c01aedbL,0x35c35a1208be74ecL,
|
|
0xd540cb1a469f671fL } },
|
|
/* 33 << 14 */
|
|
{ { 0xd16ced4ecf84f6c7L,0x8561fb9c2d090f43L,0x7e693d796f239db4L,
|
|
0xa736f92877bd0d94L },
|
|
{ 0x07b4d9292c1950eeL,0xda17754356dc11b3L,0xa5dfbbaa7a6a878eL,
|
|
0x1c70cb294decb08aL } },
|
|
/* 34 << 14 */
|
|
{ { 0xfba28c8b6f0f7c50L,0xa8eba2b8854dcc6dL,0x5ff8e89a36b78642L,
|
|
0x070c1c8ef6873adfL },
|
|
{ 0xbbd3c3716484d2e4L,0xfb78318f0d414129L,0x2621a39c6ad93b0bL,
|
|
0x979d74c2a9e917f7L } },
|
|
/* 35 << 14 */
|
|
{ { 0xfc19564761fb0428L,0x4d78954abee624d4L,0xb94896e0b8ae86fdL,
|
|
0x6667ac0cc91c8b13L },
|
|
{ 0x9f18051243bcf832L,0xfbadf8b7a0010137L,0xc69b4089b3ba8aa7L,
|
|
0xfac4bacde687ce85L } },
|
|
/* 36 << 14 */
|
|
{ { 0x9164088d977eab40L,0x51f4c5b62760b390L,0xd238238f340dd553L,
|
|
0x358566c3db1d31c9L },
|
|
{ 0x3a5ad69e5068f5ffL,0xf31435fcdaff6b06L,0xae549a5bd6debff0L,
|
|
0x59e5f0b775e01331L } },
|
|
/* 37 << 14 */
|
|
{ { 0x5d492fb898559acfL,0x96018c2e4db79b50L,0x55f4a48f609f66aaL,
|
|
0x1943b3af4900a14fL },
|
|
{ 0xc22496df15a40d39L,0xb2a446844c20f7c5L,0x76a35afa3b98404cL,
|
|
0xbec75725ff5d1b77L } },
|
|
/* 38 << 14 */
|
|
{ { 0xb67aa163bea06444L,0x27e95bb2f724b6f2L,0x3c20e3e9d238c8abL,
|
|
0x1213754eddd6ae17L },
|
|
{ 0x8c431020716e0f74L,0x6679c82effc095c2L,0x2eb3adf4d0ac2932L,
|
|
0x2cc970d301bb7a76L } },
|
|
/* 39 << 14 */
|
|
{ { 0x70c71f2f740f0e66L,0x545c616b2b6b23ccL,0x4528cfcbb40a8bd7L,
|
|
0xff8396332ab27722L },
|
|
{ 0x049127d9025ac99aL,0xd314d4a02b63e33bL,0xc8c310e728d84519L,
|
|
0x0fcb8983b3bc84baL } },
|
|
/* 40 << 14 */
|
|
{ { 0x2cc5226138634818L,0x501814f4b44c2e0bL,0xf7e181aa54dfdba3L,
|
|
0xcfd58ff0e759718cL },
|
|
{ 0xf90cdb14d3b507a8L,0x57bd478ec50bdad8L,0x29c197e250e5f9aaL,
|
|
0x4db6eef8e40bc855L } },
|
|
/* 41 << 14 */
|
|
{ { 0x2cc8f21ad1fc0654L,0xc71cc96381269d73L,0xecfbb204077f49f9L,
|
|
0xdde92571ca56b793L },
|
|
{ 0x9abed6a3f97ad8f7L,0xe6c19d3f924de3bdL,0x8dce92f4a140a800L,
|
|
0x85f44d1e1337af07L } },
|
|
/* 42 << 14 */
|
|
{ { 0x5953c08b09d64c52L,0xa1b5e49ff5df9749L,0x336a8fb852735f7dL,
|
|
0xb332b6db9add676bL },
|
|
{ 0x558b88a0b4511aa4L,0x09788752dbd5cc55L,0x16b43b9cd8cd52bdL,
|
|
0x7f0bc5a0c2a2696bL } },
|
|
/* 43 << 14 */
|
|
{ { 0x146e12d4c11f61efL,0x9ce107543a83e79eL,0x08ec73d96cbfca15L,
|
|
0x09ff29ad5b49653fL },
|
|
{ 0xe31b72bde7da946eL,0xebf9eb3bee80a4f2L,0xd1aabd0817598ce4L,
|
|
0x18b5fef453f37e80L } },
|
|
/* 44 << 14 */
|
|
{ { 0xd5d5cdd35958cd79L,0x3580a1b51d373114L,0xa36e4c91fa935726L,
|
|
0xa38c534def20d760L },
|
|
{ 0x7088e40a2ff5845bL,0xe5bb40bdbd78177fL,0x4f06a7a8857f9920L,
|
|
0xe3cc3e50e968f05dL } },
|
|
/* 45 << 14 */
|
|
{ { 0x1d68b7fee5682d26L,0x5206f76faec7f87cL,0x41110530041951abL,
|
|
0x58ec52c1d4b5a71aL },
|
|
{ 0xf3488f990f75cf9aL,0xf411951fba82d0d5L,0x27ee75be618895abL,
|
|
0xeae060d46d8aab14L } },
|
|
/* 46 << 14 */
|
|
{ { 0x9ae1df737fb54dc2L,0x1f3e391b25963649L,0x242ec32afe055081L,
|
|
0x5bd450ef8491c9bdL },
|
|
{ 0x367efc67981eb389L,0xed7e19283a0550d5L,0x362e776bab3ce75cL,
|
|
0xe890e3081f24c523L } },
|
|
/* 47 << 14 */
|
|
{ { 0xb961b682feccef76L,0x8b8e11f58bba6d92L,0x8f2ccc4c2b2375c4L,
|
|
0x0d7f7a52e2f86cfaL },
|
|
{ 0xfd94d30a9efe5633L,0x2d8d246b5451f934L,0x2234c6e3244e6a00L,
|
|
0xde2b5b0dddec8c50L } },
|
|
/* 48 << 14 */
|
|
{ { 0x2ce53c5abf776f5bL,0x6f72407160357b05L,0xb259371771bf3f7aL,
|
|
0x87d2501c440c4a9fL },
|
|
{ 0x440552e187b05340L,0xb7bf7cc821624c32L,0x4155a6ce22facddbL,
|
|
0x5a4228cb889837efL } },
|
|
/* 49 << 14 */
|
|
{ { 0xef87d6d6fd4fd671L,0xa233687ec2daa10eL,0x7562224403c0eb96L,
|
|
0x7632d1848bf19be6L },
|
|
{ 0x05d0f8e940735ff4L,0x3a3e6e13c00931f1L,0x31ccde6adafe3f18L,
|
|
0xf381366acfe51207L } },
|
|
/* 50 << 14 */
|
|
{ { 0x24c222a960167d92L,0x62f9d6f87529f18cL,0x412397c00353b114L,
|
|
0x334d89dcef808043L },
|
|
{ 0xd9ec63ba2a4383ceL,0xcec8e9375cf92ba0L,0xfb8b4288c8be74c0L,
|
|
0x67d6912f105d4391L } },
|
|
/* 51 << 14 */
|
|
{ { 0x7b996c461b913149L,0x36aae2ef3a4e02daL,0xb68aa003972de594L,
|
|
0x284ec70d4ec6d545L },
|
|
{ 0xf3d2b2d061391d54L,0x69c5d5d6fe114e92L,0xbe0f00b5b4482dffL,
|
|
0xe1596fa5f5bf33c5L } },
|
|
/* 52 << 14 */
|
|
{ { 0x10595b5696a71cbaL,0x944938b2fdcadeb7L,0xa282da4cfccd8471L,
|
|
0x98ec05f30d37bfe1L },
|
|
{ 0xe171ce1b0698304aL,0x2d69144421bdf79bL,0xd0cd3b741b21dec1L,
|
|
0x712ecd8b16a15f71L } },
|
|
/* 53 << 14 */
|
|
{ { 0x8d4c00a700fd56e1L,0x02ec9692f9527c18L,0x21c449374a3e42e1L,
|
|
0x9176fbab1392ae0aL },
|
|
{ 0x8726f1ba44b7b618L,0xb4d7aae9f1de491cL,0xf91df7b907b582c0L,
|
|
0x7e116c30ef60aa3aL } },
|
|
/* 54 << 14 */
|
|
{ { 0x99270f81466265d7L,0xb15b6fe24df7adf0L,0xfe33b2d3f9738f7fL,
|
|
0x48553ab9d6d70f95L },
|
|
{ 0x2cc72ac8c21e94dbL,0x795ac38dbdc0bbeeL,0x0a1be4492e40478fL,
|
|
0x81bd3394052bde55L } },
|
|
/* 55 << 14 */
|
|
{ { 0x63c8dbe956b3c4f2L,0x017a99cf904177ccL,0x947bbddb4d010fc1L,
|
|
0xacf9b00bbb2c9b21L },
|
|
{ 0x2970bc8d47173611L,0x1a4cbe08ac7d756fL,0x06d9f4aa67d541a2L,
|
|
0xa3e8b68959c2cf44L } },
|
|
/* 56 << 14 */
|
|
{ { 0xaad066da4d88f1ddL,0xc604f1657ad35deaL,0x7edc07204478ca67L,
|
|
0xa10dfae0ba02ce06L },
|
|
{ 0xeceb1c76af36f4e4L,0x994b2292af3f8f48L,0xbf9ed77b77c8a68cL,
|
|
0x74f544ea51744c9dL } },
|
|
/* 57 << 14 */
|
|
{ { 0x82d05bb98113a757L,0x4ef2d2b48a9885e4L,0x1e332be51aa7865fL,
|
|
0x22b76b18290d1a52L },
|
|
{ 0x308a231044351683L,0x9d861896a3f22840L,0x5959ddcd841ed947L,
|
|
0x0def0c94154b73bfL } },
|
|
/* 58 << 14 */
|
|
{ { 0xf01054174c7c15e0L,0x539bfb023a277c32L,0xe699268ef9dccf5fL,
|
|
0x9f5796a50247a3bdL },
|
|
{ 0x8b839de84f157269L,0xc825c1e57a30196bL,0x6ef0aabcdc8a5a91L,
|
|
0xf4a8ce6c498b7fe6L } },
|
|
/* 59 << 14 */
|
|
{ { 0x1cce35a770cbac78L,0x83488e9bf6b23958L,0x0341a070d76cb011L,
|
|
0xda6c9d06ae1b2658L },
|
|
{ 0xb701fb30dd648c52L,0x994ca02c52fb9fd1L,0x069331176f563086L,
|
|
0x3d2b810017856babL } },
|
|
/* 60 << 14 */
|
|
{ { 0xe89f48c85963a46eL,0x658ab875a99e61c7L,0x6e296f874b8517b4L,
|
|
0x36c4fcdcfc1bc656L },
|
|
{ 0xde5227a1a3906defL,0x9fe95f5762418945L,0x20c91e81fdd96cdeL,
|
|
0x5adbe47eda4480deL } },
|
|
/* 61 << 14 */
|
|
{ { 0xa009370f396de2b6L,0x98583d4bf0ecc7bdL,0xf44f6b57e51d0672L,
|
|
0x03d6b078556b1984L },
|
|
{ 0x27dbdd93b0b64912L,0x9b3a343415687b09L,0x0dba646151ec20a9L,
|
|
0xec93db7fff28187cL } },
|
|
/* 62 << 14 */
|
|
{ { 0x00ff8c2466e48bddL,0x2514f2f911ccd78eL,0xeba11f4fe1250603L,
|
|
0x8a22cd41243fa156L },
|
|
{ 0xa4e58df4b283e4c6L,0x78c298598b39783fL,0x5235aee2a5259809L,
|
|
0xc16284b50e0227ddL } },
|
|
/* 63 << 14 */
|
|
{ { 0xa5f579161338830dL,0x6d4b8a6bd2123fcaL,0x236ea68af9c546f8L,
|
|
0xc1d36873fa608d36L },
|
|
{ 0xcd76e4958d436d13L,0xd4d9c2218fb080afL,0x665c1728e8ad3fb5L,
|
|
0xcf1ebe4db3d572e0L } },
|
|
/* 64 << 14 */
|
|
{ { 0xa7a8746a584c5e20L,0x267e4ea1b9dc7035L,0x593a15cfb9548c9bL,
|
|
0x5e6e21354bd012f3L },
|
|
{ 0xdf31cc6a8c8f936eL,0x8af84d04b5c241dcL,0x63990a6f345efb86L,
|
|
0x6fef4e61b9b962cbL } },
|
|
/* 0 << 21 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 21 */
|
|
{ { 0xf6368f0925722608L,0x131260db131cf5c6L,0x40eb353bfab4f7acL,
|
|
0x85c7888037eee829L },
|
|
{ 0x4c1581ffc3bdf24eL,0x5bff75cbf5c3c5a8L,0x35e8c83fa14e6f40L,
|
|
0xb81d1c0f0295e0caL } },
|
|
/* 2 << 21 */
|
|
{ { 0xfcde7cc8f43a730fL,0xe89b6f3c33ab590eL,0xc823f529ad03240bL,
|
|
0x82b79afe98bea5dbL },
|
|
{ 0x568f2856962fe5deL,0x0c590adb60c591f3L,0x1fc74a144a28a858L,
|
|
0x3b662498b3203f4cL } },
|
|
/* 3 << 21 */
|
|
{ { 0x91e3cf0d6c39765aL,0xa2db3acdac3cca0bL,0x288f2f08cb953b50L,
|
|
0x2414582ccf43cf1aL },
|
|
{ 0x8dec8bbc60eee9a8L,0x54c79f02729aa042L,0xd81cd5ec6532f5d5L,
|
|
0xa672303acf82e15fL } },
|
|
/* 4 << 21 */
|
|
{ { 0x376aafa8719c0563L,0xcd8ad2dcbc5fc79fL,0x303fdb9fcb750cd3L,
|
|
0x14ff052f4418b08eL },
|
|
{ 0xf75084cf3e2d6520L,0x7ebdf0f8144ed509L,0xf43bf0f2d3f25b98L,
|
|
0x86ad71cfa354d837L } },
|
|
/* 5 << 21 */
|
|
{ { 0xb827fe9226f43572L,0xdfd3ab5b5d824758L,0x315dd23a539094c1L,
|
|
0x85c0e37a66623d68L },
|
|
{ 0x575c79727be19ae0L,0x616a3396df0d36b5L,0xa1ebb3c826b1ff7eL,
|
|
0x635b9485140ad453L } },
|
|
/* 6 << 21 */
|
|
{ { 0x92bf3cdada430c0bL,0x4702850e3a96dac6L,0xc91cf0a515ac326aL,
|
|
0x95de4f49ab8c25e4L },
|
|
{ 0xb01bad09e265c17cL,0x24e45464087b3881L,0xd43e583ce1fac5caL,
|
|
0xe17cb3186ead97a6L } },
|
|
/* 7 << 21 */
|
|
{ { 0x6cc3924374dcec46L,0x33cfc02d54c2b73fL,0x82917844f26cd99cL,
|
|
0x8819dd95d1773f89L },
|
|
{ 0x09572aa60871f427L,0x8e0cf365f6f01c34L,0x7fa52988bff1f5afL,
|
|
0x4eb357eae75e8e50L } },
|
|
/* 8 << 21 */
|
|
{ { 0xd9d0c8c4868af75dL,0xd7325cff45c8c7eaL,0xab471996cc81ecb0L,
|
|
0xff5d55f3611824edL },
|
|
{ 0xbe3145411977a0eeL,0x5085c4c5722038c6L,0x2d5335bff94bb495L,
|
|
0x894ad8a6c8e2a082L } },
|
|
/* 9 << 21 */
|
|
{ { 0x5c3e2341ada35438L,0xf4a9fc89049b8c4eL,0xbeeb355a9f17cf34L,
|
|
0x3f311e0e6c91fe10L },
|
|
{ 0xc2d2003892ab9891L,0x257bdcc13e8ce9a9L,0x1b2d978988c53beeL,
|
|
0x927ce89acdba143aL } },
|
|
/* 10 << 21 */
|
|
{ { 0xb0a32cca523db280L,0x5c889f8a50d43783L,0x503e04b34897d16fL,
|
|
0x8cdb6e7808f5f2e8L },
|
|
{ 0x6ab91cf0179c8e74L,0xd8874e5248211d60L,0xf948d4d5ea851200L,
|
|
0x4076d41ee6f9840aL } },
|
|
/* 11 << 21 */
|
|
{ { 0xc20e263c47b517eaL,0x79a448fd30685e5eL,0xe55f6f78f90631a0L,
|
|
0x88a790b1a79e6346L },
|
|
{ 0x62160c7d80969fe8L,0x54f92fd441491bb9L,0xa6645c235c957526L,
|
|
0xf44cc5aebea3ce7bL } },
|
|
/* 12 << 21 */
|
|
{ { 0xf76283278b1e68b7L,0xc731ad7a303f29d3L,0xfe5a9ca957d03ecbL,
|
|
0x96c0d50c41bc97a7L },
|
|
{ 0xc4669fe79b4f7f24L,0xfdd781d83d9967efL,0x7892c7c35d2c208dL,
|
|
0x8bf64f7cae545cb3L } },
|
|
/* 13 << 21 */
|
|
{ { 0xc01f862c467be912L,0xf4c85ee9c73d30ccL,0x1fa6f4be6ab83ec7L,
|
|
0xa07a3c1c4e3e3cf9L },
|
|
{ 0x87f8ef450c00beb3L,0x30e2c2b3000d4c3eL,0x1aa00b94fe08bf5bL,
|
|
0x32c133aa9224ef52L } },
|
|
/* 14 << 21 */
|
|
{ { 0x38df16bb32e5685dL,0x68a9e06958e6f544L,0x495aaff7cdc5ebc6L,
|
|
0xf894a645378b135fL },
|
|
{ 0xf316350a09e27ecfL,0xeced201e58f7179dL,0x2eec273ce97861baL,
|
|
0x47ec2caed693be2eL } },
|
|
/* 15 << 21 */
|
|
{ { 0xfa4c97c4f68367ceL,0xe4f47d0bbe5a5755L,0x17de815db298a979L,
|
|
0xd7eca659c177dc7dL },
|
|
{ 0x20fdbb7149ded0a3L,0x4cb2aad4fb34d3c5L,0x2cf31d2860858a33L,
|
|
0x3b6873efa24aa40fL } },
|
|
/* 16 << 21 */
|
|
{ { 0x540234b22c11bb37L,0x2d0366dded4c74a3L,0xf9a968daeec5f25dL,
|
|
0x3660106867b63142L },
|
|
{ 0x07cd6d2c68d7b6d4L,0xa8f74f090c842942L,0xe27514047768b1eeL,
|
|
0x4b5f7e89fe62aee4L } },
|
|
/* 17 << 21 */
|
|
{ { 0xc6a7717789070d26L,0xa1f28e4edd1c8bc7L,0xea5f4f06469e1f17L,
|
|
0x78fc242afbdb78e0L },
|
|
{ 0xc9c7c5928b0588f1L,0xb6b7a0fd1535921eL,0xcc5bdb91bde5ae35L,
|
|
0xb42c485e12ff1864L } },
|
|
/* 18 << 21 */
|
|
{ { 0xa1113e13dbab98aaL,0xde9d469ba17b1024L,0x23f48b37c0462d3aL,
|
|
0x3752e5377c5c078dL },
|
|
{ 0xe3a86add15544eb9L,0xf013aea780fba279L,0x8b5bb76cf22001b5L,
|
|
0xe617ba14f02891abL } },
|
|
/* 19 << 21 */
|
|
{ { 0xd39182a6936219d3L,0x5ce1f194ae51cb19L,0xc78f8598bf07a74cL,
|
|
0x6d7158f222cbf1bcL },
|
|
{ 0x3b846b21e300ce18L,0x35fba6302d11275dL,0x5fe25c36a0239b9bL,
|
|
0xd8beb35ddf05d940L } },
|
|
/* 20 << 21 */
|
|
{ { 0x4db02bb01f7e320dL,0x0641c3646da320eaL,0x6d95fa5d821389a3L,
|
|
0x926997488fcd8e3dL },
|
|
{ 0x316fef17ceb6c143L,0x67fcb841d933762bL,0xbb837e35118b17f8L,
|
|
0x4b92552f9fd24821L } },
|
|
/* 21 << 21 */
|
|
{ { 0xae6bc70e46aca793L,0x1cf0b0e4e579311bL,0x8dc631be5802f716L,
|
|
0x099bdc6fbddbee4dL },
|
|
{ 0xcc352bb20caf8b05L,0xf74d505a72d63df2L,0xb9876d4b91c4f408L,
|
|
0x1ce184739e229b2dL } },
|
|
/* 22 << 21 */
|
|
{ { 0x4950759783abdb4aL,0x850fbcb6dee84b18L,0x6325236e609e67dcL,
|
|
0x04d831d99336c6d8L },
|
|
{ 0x8deaae3bfa12d45dL,0xe425f8ce4746e246L,0x8004c17524f5f31eL,
|
|
0xaca16d8fad62c3b7L } },
|
|
/* 23 << 21 */
|
|
{ { 0x0dc15a6a9152f934L,0xf1235e5ded0e12c1L,0xc33c06ecda477dacL,
|
|
0x76be8732b2ea0006L },
|
|
{ 0xcf3f78310c0cd313L,0x3c524553a614260dL,0x31a756f8cab22d15L,
|
|
0x03ee10d177827a20L } },
|
|
/* 24 << 21 */
|
|
{ { 0xd1e059b21994ef20L,0x2a653b69638ae318L,0x70d5eb582f699010L,
|
|
0x279739f709f5f84aL },
|
|
{ 0x5da4663c8b799336L,0xfdfdf14d203c37ebL,0x32d8a9dca1dbfb2dL,
|
|
0xab40cff077d48f9bL } },
|
|
/* 25 << 21 */
|
|
{ { 0xc018b383d20b42d5L,0xf9a810ef9f78845fL,0x40af3753bdba9df0L,
|
|
0xb90bdcfc131dfdf9L },
|
|
{ 0x18720591f01ab782L,0xc823f2116af12a88L,0xa51b80f30dc14401L,
|
|
0xde248f77fb2dfbe3L } },
|
|
/* 26 << 21 */
|
|
{ { 0xef5a44e50cafe751L,0x73997c9cd4dcd221L,0x32fd86d1de854024L,
|
|
0xd5b53adca09b84bbL },
|
|
{ 0x008d7a11dcedd8d1L,0x406bd1c874b32c84L,0x5d4472ff05dde8b1L,
|
|
0x2e25f2cdfce2b32fL } },
|
|
/* 27 << 21 */
|
|
{ { 0xbec0dd5e29dfc254L,0x4455fcf62b98b267L,0x0b4d43a5c72df2adL,
|
|
0xea70e6be48a75397L },
|
|
{ 0x2aad61695820f3bfL,0xf410d2dd9e37f68fL,0x70fb7dba7be5ac83L,
|
|
0x636bb64536ec3eecL } },
|
|
/* 28 << 21 */
|
|
{ { 0x27104ea39754e21cL,0xbc87a3e68d63c373L,0x483351d74109db9aL,
|
|
0x0fa724e360134da7L },
|
|
{ 0x9ff44c29b0720b16L,0x2dd0cf1306aceeadL,0x5942758ce26929a6L,
|
|
0x96c5db92b766a92bL } },
|
|
/* 29 << 21 */
|
|
{ { 0xcec7d4c05f18395eL,0xd3f227441f80d032L,0x7a68b37acb86075bL,
|
|
0x074764ddafef92dbL },
|
|
{ 0xded1e9507bc7f389L,0xc580c850b9756460L,0xaeeec2a47da48157L,
|
|
0x3f0b4e7f82c587b3L } },
|
|
/* 30 << 21 */
|
|
{ { 0x231c6de8a9f19c53L,0x5717bd736974e34eL,0xd9e1d216f1508fa9L,
|
|
0x9f112361dadaa124L },
|
|
{ 0x80145e31823b7348L,0x4dd8f0d5ac634069L,0xe3d82fc72297c258L,
|
|
0x276fcfee9cee7431L } },
|
|
/* 31 << 21 */
|
|
{ { 0x8eb61b5e2bc0aea9L,0x4f668fd5de329431L,0x03a32ab138e4b87eL,
|
|
0xe137451773d0ef0bL },
|
|
{ 0x1a46f7e6853ac983L,0xc3bdf42e68e78a57L,0xacf207852ea96dd1L,
|
|
0xa10649b9f1638460L } },
|
|
/* 32 << 21 */
|
|
{ { 0xf2369f0b879fbbedL,0x0ff0ae86da9d1869L,0x5251d75956766f45L,
|
|
0x4984d8c02be8d0fcL },
|
|
{ 0x7ecc95a6d21008f0L,0x29bd54a03a1a1c49L,0xab9828c5d26c50f3L,
|
|
0x32c0087c51d0d251L } },
|
|
/* 33 << 21 */
|
|
{ { 0x9bac3ce60c1cdb26L,0xcd94d947557ca205L,0x1b1bd5989db1fdcdL,
|
|
0x0eda0108a3d8b149L },
|
|
{ 0x9506661056152fccL,0xc2f037e6e7192b33L,0xdeffb41ac92e05a4L,
|
|
0x1105f6c2c2f6c62eL } },
|
|
/* 34 << 21 */
|
|
{ { 0x68e735008733913cL,0xcce861633f3adc40L,0xf407a94238a278e9L,
|
|
0xd13c1b9d2ab21292L },
|
|
{ 0x93ed7ec71c74cf5cL,0x8887dc48f1a4c1b4L,0x3830ff304b3a11f1L,
|
|
0x358c5a3c58937cb6L } },
|
|
/* 35 << 21 */
|
|
{ { 0x027dc40489022829L,0x40e939773b798f79L,0x90ad333738be6eadL,
|
|
0x9c23f6bcf34c0a5dL },
|
|
{ 0xd1711a35fbffd8bbL,0x60fcfb491949d3ddL,0x09c8ef4b7825d93aL,
|
|
0x24233cffa0a8c968L } },
|
|
/* 36 << 21 */
|
|
{ { 0x67ade46ce6d982afL,0xebb6bf3ee7544d7cL,0xd6b9ba763d8bd087L,
|
|
0x46fe382d4dc61280L },
|
|
{ 0xbd39a7e8b5bdbd75L,0xab381331b8f228feL,0x0709a77cce1c4300L,
|
|
0x6a247e56f337ceacL } },
|
|
/* 37 << 21 */
|
|
{ { 0x8f34f21b636288beL,0x9dfdca74c8a7c305L,0x6decfd1bea919e04L,
|
|
0xcdf2688d8e1991f8L },
|
|
{ 0xe607df44d0f8a67eL,0xd985df4b0b58d010L,0x57f834c50c24f8f4L,
|
|
0xe976ef56a0bf01aeL } },
|
|
/* 38 << 21 */
|
|
{ { 0x536395aca1c32373L,0x351027aa734c0a13L,0xd2f1b5d65e6bd5bcL,
|
|
0x2b539e24223debedL },
|
|
{ 0xd4994cec0eaa1d71L,0x2a83381d661dcf65L,0x5f1aed2f7b54c740L,
|
|
0x0bea3fa5d6dda5eeL } },
|
|
/* 39 << 21 */
|
|
{ { 0x9d4fb68436cc6134L,0x8eb9bbf3c0a443ddL,0xfc500e2e383b7d2aL,
|
|
0x7aad621c5b775257L },
|
|
{ 0x69284d740a8f7cc0L,0xe820c2ce07562d65L,0xbf9531b9499758eeL,
|
|
0x73e95ca56ee0cc2dL } },
|
|
/* 40 << 21 */
|
|
{ { 0xf61790abfbaf50a5L,0xdf55e76b684e0750L,0xec516da7f176b005L,
|
|
0x575553bb7a2dddc7L },
|
|
{ 0x37c87ca3553afa73L,0x315f3ffc4d55c251L,0xe846442aaf3e5d35L,
|
|
0x61b911496495ff28L } },
|
|
/* 41 << 21 */
|
|
{ { 0x23cc95d3fa326dc3L,0x1df4da1f18fc2ceaL,0x24bf9adcd0a37d59L,
|
|
0xb6710053320d6e1eL },
|
|
{ 0x96f9667e618344d1L,0xcc7ce042a06445afL,0xa02d8514d68dbc3aL,
|
|
0x4ea109e4280b5a5bL } },
|
|
/* 42 << 21 */
|
|
{ { 0x5741a7acb40961bfL,0x4ada59376aa56bfaL,0x7feb914502b765d1L,
|
|
0x561e97bee6ad1582L },
|
|
{ 0xbbc4a5b6da3982f5L,0x0c2659edb546f468L,0xb8e7e6aa59612d20L,
|
|
0xd83dfe20ac19e8e0L } },
|
|
/* 43 << 21 */
|
|
{ { 0x8530c45fb835398cL,0x6106a8bfb38a41c2L,0x21e8f9a635f5dcdbL,
|
|
0x39707137cae498edL },
|
|
{ 0x70c23834d8249f00L,0x9f14b58fab2537a0L,0xd043c3655f61c0c2L,
|
|
0xdc5926d609a194a7L } },
|
|
/* 44 << 21 */
|
|
{ { 0xddec03398e77738aL,0xd07a63effba46426L,0x2e58e79cee7f6e86L,
|
|
0xe59b0459ff32d241L },
|
|
{ 0xc5ec84e520fa0338L,0x97939ac8eaff5aceL,0x0310a4e3b4a38313L,
|
|
0x9115fba28f9d9885L } },
|
|
/* 45 << 21 */
|
|
{ { 0x8dd710c25fadf8c3L,0x66be38a2ce19c0e2L,0xd42a279c4cfe5022L,
|
|
0x597bb5300e24e1b8L },
|
|
{ 0x3cde86b7c153ca7fL,0xa8d30fb3707d63bdL,0xac905f92bd60d21eL,
|
|
0x98e7ffb67b9a54abL } },
|
|
/* 46 << 21 */
|
|
{ { 0xd7147df8e9726a30L,0xb5e216ffafce3533L,0xb550b7992ff1ec40L,
|
|
0x6b613b87a1e953fdL },
|
|
{ 0x87b88dba792d5610L,0x2ee1270aa190fbe1L,0x02f4e2dc2ef581daL,
|
|
0x016530e4eff82a95L } },
|
|
/* 47 << 21 */
|
|
{ { 0xcbb93dfd8fd6ee89L,0x16d3d98646848fffL,0x600eff241da47adfL,
|
|
0x1b9754a00ad47a71L },
|
|
{ 0x8f9266df70c33b98L,0xaadc87aedf34186eL,0x0d2ce8e14ad24132L,
|
|
0x8a47cbfc19946ebaL } },
|
|
/* 48 << 21 */
|
|
{ { 0x47feeb6662b5f3afL,0xcefab5610abb3734L,0x449de60e19f35cb1L,
|
|
0x39f8db14157f0eb9L },
|
|
{ 0xffaecc5b3c61bfd6L,0xa5a4d41d41216703L,0x7f8fabed224e1cc2L,
|
|
0x0d5a8186871ad953L } },
|
|
/* 49 << 21 */
|
|
{ { 0xf10774f7d22da9a9L,0x45b8a678cc8a9b0dL,0xd9c2e722bdc32cffL,
|
|
0xbf71b5f5337202a5L },
|
|
{ 0x95c57f2f69fc4db9L,0xb6dad34c765d01e1L,0x7e0bd13fcb904635L,
|
|
0x61751253763a588cL } },
|
|
/* 50 << 21 */
|
|
{ { 0xd85c299781af2c2dL,0xc0f7d9c481b9d7daL,0x838a34ae08533e8dL,
|
|
0x15c4cb08311d8311L },
|
|
{ 0x97f832858e121e14L,0xeea7dc1e85000a5fL,0x0c6059b65d256274L,
|
|
0xec9beaceb95075c0L } },
|
|
/* 51 << 21 */
|
|
{ { 0x173daad71df97828L,0xbf851cb5a8937877L,0xb083c59401646f3cL,
|
|
0x3bad30cf50c6d352L },
|
|
{ 0xfeb2b202496bbceaL,0x3cf9fd4f18a1e8baL,0xd26de7ff1c066029L,
|
|
0x39c81e9e4e9ed4f8L } },
|
|
/* 52 << 21 */
|
|
{ { 0xd8be0cb97b390d35L,0x01df2bbd964aab27L,0x3e8c1a65c3ef64f8L,
|
|
0x567291d1716ed1ddL },
|
|
{ 0x95499c6c5f5406d3L,0x71fdda395ba8e23fL,0xcfeb320ed5096eceL,
|
|
0xbe7ba92bca66dd16L } },
|
|
/* 53 << 21 */
|
|
{ { 0x4608d36bc6fb5a7dL,0xe3eea15a6d2dd0e0L,0x75b0a3eb8f97a36aL,
|
|
0xf59814cc1c83de1eL },
|
|
{ 0x56c9c5b01c33c23fL,0xa96c1da46faa4136L,0x46bf2074de316551L,
|
|
0x3b866e7b1f756c8fL } },
|
|
/* 54 << 21 */
|
|
{ { 0x727727d81495ed6bL,0xb2394243b682dce7L,0x8ab8454e758610f3L,
|
|
0xc243ce84857d72a4L },
|
|
{ 0x7b320d71dbbf370fL,0xff9afa3778e0f7caL,0x0119d1e0ea7b523fL,
|
|
0xb997f8cb058c7d42L } },
|
|
/* 55 << 21 */
|
|
{ { 0x285bcd2a37bbb184L,0x51dcec49a45d1fa6L,0x6ade3b64e29634cbL,
|
|
0x080c94a726b86ef1L },
|
|
{ 0xba583db12283fbe3L,0x902bddc85a9315edL,0x07c1ccb386964becL,
|
|
0x78f4eacfb6258301L } },
|
|
/* 56 << 21 */
|
|
{ { 0x4bdf3a4956f90823L,0xba0f5080741d777bL,0x091d71c3f38bf760L,
|
|
0x9633d50f9b625b02L },
|
|
{ 0x03ecb743b8c9de61L,0xb47512545de74720L,0x9f9defc974ce1cb2L,
|
|
0x774a4f6a00bd32efL } },
|
|
/* 57 << 21 */
|
|
{ { 0xaca385f773848f22L,0x53dad716f3f8558eL,0xab7b34b093c471f9L,
|
|
0xf530e06919644bc7L },
|
|
{ 0x3d9fb1ffdd59d31aL,0x4382e0df08daa795L,0x165c6f4bd5cc88d7L,
|
|
0xeaa392d54a18c900L } },
|
|
/* 58 << 21 */
|
|
{ { 0x94203c67648024eeL,0x188763f28c2fabcdL,0xa80f87acbbaec835L,
|
|
0x632c96e0f29d8d54L },
|
|
{ 0x29b0a60e4c00a95eL,0x2ef17f40e011e9faL,0xf6c0e1d115b77223L,
|
|
0xaaec2c6214b04e32L } },
|
|
/* 59 << 21 */
|
|
{ { 0xd35688d83d84e58cL,0x2af5094c958571dbL,0x4fff7e19760682a6L,
|
|
0x4cb27077e39a407cL },
|
|
{ 0x0f59c5474ff0e321L,0x169f34a61b34c8ffL,0x2bff109652bc1ba7L,
|
|
0xa25423b783583544L } },
|
|
/* 60 << 21 */
|
|
{ { 0x5d55d5d50ac8b782L,0xff6622ec2db3c892L,0x48fce7416b8bb642L,
|
|
0x31d6998c69d7e3dcL },
|
|
{ 0xdbaf8004cadcaed0L,0x801b0142d81d053cL,0x94b189fc59630ec6L,
|
|
0x120e9934af762c8eL } },
|
|
/* 61 << 21 */
|
|
{ { 0x53a29aa4fdc6a404L,0x19d8e01ea1909948L,0x3cfcabf1d7e89681L,
|
|
0x3321a50d4e132d37L },
|
|
{ 0xd0496863e9a86111L,0x8c0cde6106a3bc65L,0xaf866c49fc9f8eefL,
|
|
0x2066350eff7f5141L } },
|
|
/* 62 << 21 */
|
|
{ { 0x4f8a4689e56ddfbdL,0xea1b0c07fe32983aL,0x2b317462873cb8cbL,
|
|
0x658deddc2d93229fL },
|
|
{ 0x65efaf4d0f64ef58L,0xfe43287d730cc7a8L,0xaebc0c723d047d70L,
|
|
0x92efa539d92d26c9L } },
|
|
/* 63 << 21 */
|
|
{ { 0x06e7845794b56526L,0x415cb80f0961002dL,0x89e5c56576dcb10fL,
|
|
0x8bbb6982ff9259feL },
|
|
{ 0x4fe8795b9abc2668L,0xb5d4f5341e678fb1L,0x6601f3be7b7da2b9L,
|
|
0x98da59e2a13d6805L } },
|
|
/* 64 << 21 */
|
|
{ { 0x190d8ea601799a52L,0xa20cec41b86d2952L,0x3062ffb27fff2a7cL,
|
|
0x741b32e579f19d37L },
|
|
{ 0xf80d81814eb57d47L,0x7a2d0ed416aef06bL,0x09735fb01cecb588L,
|
|
0x1641caaac6061f5bL } },
|
|
/* 0 << 28 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 28 */
|
|
{ { 0x7f99824f20151427L,0x206828b692430206L,0xaa9097d7e1112357L,
|
|
0xacf9a2f209e414ecL },
|
|
{ 0xdbdac9da27915356L,0x7e0734b7001efee3L,0x54fab5bbd2b288e2L,
|
|
0x4c630fc4f62dd09cL } },
|
|
/* 2 << 28 */
|
|
{ { 0x8537107a1ac2703bL,0xb49258d86bc857b5L,0x57df14debcdaccd1L,
|
|
0x24ab68d7c4ae8529L },
|
|
{ 0x7ed8b5d4734e59d0L,0x5f8740c8c495cc80L,0x84aedd5a291db9b3L,
|
|
0x80b360f84fb995beL } },
|
|
/* 3 << 28 */
|
|
{ { 0xae915f5d5fa067d1L,0x4134b57f9668960cL,0xbd3656d6a48edaacL,
|
|
0xdac1e3e4fc1d7436L },
|
|
{ 0x674ff869d81fbb26L,0x449ed3ecb26c33d4L,0x85138705d94203e8L,
|
|
0xccde538bbeeb6f4aL } },
|
|
/* 4 << 28 */
|
|
{ { 0x55d5c68da61a76faL,0x598b441dca1554dcL,0xd39923b9773b279cL,
|
|
0x33331d3c36bf9efcL },
|
|
{ 0x2d4c848e298de399L,0xcfdb8e77a1a27f56L,0x94c855ea57b8ab70L,
|
|
0xdcdb9dae6f7879baL } },
|
|
/* 5 << 28 */
|
|
{ { 0x7bdff8c2019f2a59L,0xb3ce5bb3cb4fbc74L,0xea907f688a9173ddL,
|
|
0x6cd3d0d395a75439L },
|
|
{ 0x92ecc4d6efed021cL,0x09a9f9b06a77339aL,0x87ca6b157188c64aL,
|
|
0x10c2996844899158L } },
|
|
/* 6 << 28 */
|
|
{ { 0x5859a229ed6e82efL,0x16f338e365ebaf4eL,0x0cd313875ead67aeL,
|
|
0x1c73d22854ef0bb4L },
|
|
{ 0x4cb5513174a5c8c7L,0x01cd29707f69ad6aL,0xa04d00dde966f87eL,
|
|
0xd96fe4470b7b0321L } },
|
|
/* 7 << 28 */
|
|
{ { 0x342ac06e88fbd381L,0x02cd4a845c35a493L,0xe8fa89de54f1bbcdL,
|
|
0x341d63672575ed4cL },
|
|
{ 0xebe357fbd238202bL,0x600b4d1aa984ead9L,0xc35c9f4452436ea0L,
|
|
0x96fe0a39a370751bL } },
|
|
/* 8 << 28 */
|
|
{ { 0x4c4f07367f636a38L,0x9f943fb70e76d5cbL,0xb03510baa8b68b8bL,
|
|
0xc246780a9ed07a1fL },
|
|
{ 0x3c0514156d549fc2L,0xc2953f31607781caL,0x955e2c69d8d95413L,
|
|
0xb300fadc7bd282e3L } },
|
|
/* 9 << 28 */
|
|
{ { 0x81fe7b5087e9189fL,0xdb17375cf42dda27L,0x22f7d896cf0a5904L,
|
|
0xa0e57c5aebe348e6L },
|
|
{ 0xa61011d3f40e3c80L,0xb11893218db705c5L,0x4ed9309e50fedec3L,
|
|
0xdcf14a104d6d5c1dL } },
|
|
/* 10 << 28 */
|
|
{ { 0x056c265b55691342L,0xe8e0850491049dc7L,0x131329f5c9bae20aL,
|
|
0x96c8b3e8d9dccdb4L },
|
|
{ 0x8c5ff838fb4ee6b4L,0xfc5a9aeb41e8ccf0L,0x7417b764fae050c6L,
|
|
0x0953c3d700452080L } },
|
|
/* 11 << 28 */
|
|
{ { 0x2137268238dfe7e8L,0xea417e152bb79d4bL,0x59641f1c76e7cf2dL,
|
|
0x271e3059ea0bcfccL },
|
|
{ 0x624c7dfd7253ecbdL,0x2f552e254fca6186L,0xcbf84ecd4d866e9cL,
|
|
0x73967709f68d4610L } },
|
|
/* 12 << 28 */
|
|
{ { 0xa14b1163c27901b4L,0xfd9236e0899b8bf3L,0x42b091eccbc6da0aL,
|
|
0xbb1dac6f5ad1d297L },
|
|
{ 0x80e61d53a91cf76eL,0x4110a412d31f1ee7L,0x2d87c3ba13efcf77L,
|
|
0x1f374bb4df450d76L } },
|
|
/* 13 << 28 */
|
|
{ { 0x5e78e2f20d188dabL,0xe3968ed0f4b885efL,0x46c0568e7314570fL,
|
|
0x3161633801170521L },
|
|
{ 0x18e1e7e24f0c8afeL,0x4caa75ffdeea78daL,0x82db67f27c5d8a51L,
|
|
0x36a44d866f505370L } },
|
|
/* 14 << 28 */
|
|
{ { 0xd72c5bda0333974fL,0x5db516ae27a70146L,0x34705281210ef921L,
|
|
0xbff17a8f0c9c38e5L },
|
|
{ 0x78f4814e12476da1L,0xc1e1661333c16980L,0x9e5b386f424d4bcaL,
|
|
0x4c274e87c85740deL } },
|
|
/* 15 << 28 */
|
|
{ { 0xb6a9b88d6c2f5226L,0x14d1b944550d7ca8L,0x580c85fc1fc41709L,
|
|
0xc1da368b54c6d519L },
|
|
{ 0x2b0785ced5113cf7L,0x0670f6335a34708fL,0x46e2376715cc3f88L,
|
|
0x1b480cfa50c72c8fL } },
|
|
/* 16 << 28 */
|
|
{ { 0x202886024147519aL,0xd0981eac26b372f0L,0xa9d4a7caa785ebc8L,
|
|
0xd953c50ddbdf58e9L },
|
|
{ 0x9d6361ccfd590f8fL,0x72e9626b44e6c917L,0x7fd9611022eb64cfL,
|
|
0x863ebb7e9eb288f3L } },
|
|
/* 17 << 28 */
|
|
{ { 0x6e6ab7616aca8ee7L,0x97d10b39d7b40358L,0x1687d3771e5feb0dL,
|
|
0xc83e50e48265a27aL },
|
|
{ 0x8f75a9fec954b313L,0xcc2e8f47310d1f61L,0xf5ba81c56557d0e0L,
|
|
0x25f9680c3eaf6207L } },
|
|
/* 18 << 28 */
|
|
{ { 0xf95c66094354080bL,0x5225bfa57bf2fe1cL,0xc5c004e25c7d98faL,
|
|
0x3561bf1c019aaf60L },
|
|
{ 0x5e6f9f17ba151474L,0xdec2f934b04f6ecaL,0x64e368a1269acb1eL,
|
|
0x1332d9e40cdda493L } },
|
|
/* 19 << 28 */
|
|
{ { 0x60d6cf69df23de05L,0x66d17da2009339a0L,0x9fcac9850a693923L,
|
|
0xbcf057fced7c6a6dL },
|
|
{ 0xc3c5c8c5f0b5662cL,0x25318dd8dcba4f24L,0x60e8cb75082b69ffL,
|
|
0x7c23b3ee1e728c01L } },
|
|
/* 20 << 28 */
|
|
{ { 0x15e10a0a097e4403L,0xcb3d0a8619854665L,0x88d8e211d67d4826L,
|
|
0xb39af66e0b9d2839L },
|
|
{ 0xa5f94588bd475ca8L,0xe06b7966c077b80bL,0xfedb1485da27c26cL,
|
|
0xd290d33afe0fd5e0L } },
|
|
/* 21 << 28 */
|
|
{ { 0xa40bcc47f34fb0faL,0xb4760cc81fb1ab09L,0x8fca0993a273bfe3L,
|
|
0x13e4fe07f70b213cL },
|
|
{ 0x3bcdb992fdb05163L,0x8c484b110c2b19b6L,0x1acb815faaf2e3e2L,
|
|
0xc6905935b89ff1b4L } },
|
|
/* 22 << 28 */
|
|
{ { 0xb2ad6f9d586e74e1L,0x488883ad67b80484L,0x758aa2c7369c3ddbL,
|
|
0x8ab74e699f9afd31L },
|
|
{ 0x10fc2d285e21beb1L,0x3484518a318c42f9L,0x377427dc53cf40c3L,
|
|
0x9de0781a391bc1d9L } },
|
|
/* 23 << 28 */
|
|
{ { 0x8faee858693807e1L,0xa38653274e81ccc7L,0x02c30ff26f835b84L,
|
|
0xb604437b0d3d38d4L },
|
|
{ 0xb3fc8a985ca1823dL,0xb82f7ec903be0324L,0xee36d761cf684a33L,
|
|
0x5a01df0e9f29bf7dL } },
|
|
/* 24 << 28 */
|
|
{ { 0x686202f31306583dL,0x05b10da0437c622eL,0xbf9aaa0f076a7bc8L,
|
|
0x25e94efb8f8f4e43L },
|
|
{ 0x8a35c9b7fa3dc26dL,0xe0e5fb9396ff03c5L,0xa77e3843ebc394ceL,
|
|
0xcede65958361de60L } },
|
|
/* 25 << 28 */
|
|
{ { 0xd27c22f6a1993545L,0xab01cc3624d671baL,0x63fa2877a169c28eL,
|
|
0x925ef9042eb08376L },
|
|
{ 0x3b2fa3cf53aa0b32L,0xb27beb5b71c49d7aL,0xb60e1834d105e27fL,
|
|
0xd60897884f68570dL } },
|
|
/* 26 << 28 */
|
|
{ { 0x23094ce0d6fbc2acL,0x738037a1815ff551L,0xda73b1bb6bef119cL,
|
|
0xdcf6c430eef506baL },
|
|
{ 0x00e4fe7be3ef104aL,0xebdd9a2c0a065628L,0x853a81c38792043eL,
|
|
0x22ad6eceb3b59108L } },
|
|
/* 27 << 28 */
|
|
{ { 0x9fb813c039cd297dL,0x8ec7e16e05bda5d9L,0x2834797c0d104b96L,
|
|
0xcc11a2e77c511510L },
|
|
{ 0x96ca5a5396ee6380L,0x054c8655cea38742L,0xb5946852d54dfa7dL,
|
|
0x97c422e71f4ab207L } },
|
|
/* 28 << 28 */
|
|
{ { 0xbf9075090c22b540L,0x2cde42aab7c267d4L,0xba18f9ed5ab0d693L,
|
|
0x3ba62aa66e4660d9L },
|
|
{ 0xb24bf97bab9ea96aL,0x5d039642e3b60e32L,0x4e6a45067c4d9bd5L,
|
|
0x666c5b9e7ed4a6a4L } },
|
|
/* 29 << 28 */
|
|
{ { 0xfa3fdcd98edbd7ccL,0x4660bb87c6ccd753L,0x9ae9082021e6b64fL,
|
|
0x8a56a713b36bfb3fL },
|
|
{ 0xabfce0965726d47fL,0x9eed01b20b1a9a7fL,0x30e9cad44eb74a37L,
|
|
0x7b2524cc53e9666dL } },
|
|
/* 30 << 28 */
|
|
{ { 0x6a29683b8f4b002fL,0xc2200d7a41f4fc20L,0xcf3af47a3a338accL,
|
|
0x6539a4fbe7128975L },
|
|
{ 0xcec31c14c33c7fcfL,0x7eb6799bc7be322bL,0x119ef4e96646f623L,
|
|
0x7b7a26a554d7299bL } },
|
|
/* 31 << 28 */
|
|
{ { 0xcb37f08d403f46f2L,0x94b8fc431a0ec0c7L,0xbb8514e3c332142fL,
|
|
0xf3ed2c33e80d2a7aL },
|
|
{ 0x8d2080afb639126cL,0xf7b6be60e3553adeL,0x3950aa9f1c7e2b09L,
|
|
0x847ff9586410f02bL } },
|
|
/* 32 << 28 */
|
|
{ { 0x877b7cf5678a31b0L,0xd50301ae3998b620L,0x734257c5c00fb396L,
|
|
0xf9fb18a004e672a6L },
|
|
{ 0xff8bd8ebe8758851L,0x1e64e4c65d99ba44L,0x4b8eaedf7dfd93b7L,
|
|
0xba2f2a9804e76b8cL } },
|
|
/* 33 << 28 */
|
|
{ { 0x7d790cbae8053433L,0xc8e725a03d2c9585L,0x58c5c476cdd8f5edL,
|
|
0xd106b952efa9fe1dL },
|
|
{ 0x3c5c775b0eff13a9L,0x242442bae057b930L,0xe9f458d4c9b70cbdL,
|
|
0x69b71448a3cdb89aL } },
|
|
/* 34 << 28 */
|
|
{ { 0x41ee46f60e2ed742L,0x573f104540067493L,0xb1e154ff9d54c304L,
|
|
0x2ad0436a8d3a7502L },
|
|
{ 0xee4aaa2d431a8121L,0xcd38b3ab886f11edL,0x57d49ea6034a0eb7L,
|
|
0xd2b773bdf7e85e58L } },
|
|
/* 35 << 28 */
|
|
{ { 0x4a559ac49b5c1f14L,0xc444be1a3e54df2bL,0x13aad704eda41891L,
|
|
0xcd927bec5eb5c788L },
|
|
{ 0xeb3c8516e48c8a34L,0x1b7ac8124b546669L,0x1815f896594df8ecL,
|
|
0x87c6a79c79227865L } },
|
|
/* 36 << 28 */
|
|
{ { 0xae02a2f09b56ddbdL,0x1339b5ac8a2f1cf3L,0xf2b569c7839dff0dL,
|
|
0xb0b9e864fee9a43dL },
|
|
{ 0x4ff8ca4177bb064eL,0x145a2812fd249f63L,0x3ab7beacf86f689aL,
|
|
0x9bafec2701d35f5eL } },
|
|
/* 37 << 28 */
|
|
{ { 0x28054c654265aa91L,0xa4b18304035efe42L,0x6887b0e69639dec7L,
|
|
0xf4b8f6ad3d52aea5L },
|
|
{ 0xfb9293cc971a8a13L,0x3f159e5d4c934d07L,0x2c50e9b109acbc29L,
|
|
0x08eb65e67154d129L } },
|
|
/* 38 << 28 */
|
|
{ { 0x4feff58930b75c3eL,0x0bb82fe294491c93L,0xd8ac377a89af62bbL,
|
|
0xd7b514909685e49fL },
|
|
{ 0xabca9a7b04497f19L,0x1b35ed0a1a7ad13fL,0x6b601e213ec86ed6L,
|
|
0xda91fcb9ce0c76f1L } },
|
|
/* 39 << 28 */
|
|
{ { 0x9e28507bd7ab27e1L,0x7c19a55563945b7bL,0x6b43f0a1aafc9827L,
|
|
0x443b4fbd3aa55b91L },
|
|
{ 0x962b2e656962c88fL,0x139da8d4ce0db0caL,0xb93f05dd1b8d6c4fL,
|
|
0x779cdff7180b9824L } },
|
|
/* 40 << 28 */
|
|
{ { 0xbba23fddae57c7b7L,0x345342f21b932522L,0xfd9c80fe556d4aa3L,
|
|
0xa03907ba6525bb61L },
|
|
{ 0x38b010e1ff218933L,0xc066b654aa52117bL,0x8e14192094f2e6eaL,
|
|
0x66a27dca0d32f2b2L } },
|
|
/* 41 << 28 */
|
|
{ { 0x69c7f993048b3717L,0xbf5a989ab178ae1cL,0x49fa9058564f1d6bL,
|
|
0x27ec6e15d31fde4eL },
|
|
{ 0x4cce03737276e7fcL,0x64086d7989d6bf02L,0x5a72f0464ccdd979L,
|
|
0x909c356647775631L } },
|
|
/* 42 << 28 */
|
|
{ { 0x1c07bc6b75dd7125L,0xb4c6bc9787a0428dL,0x507ece52fdeb6b9dL,
|
|
0xfca56512b2c95432L },
|
|
{ 0x15d97181d0e8bd06L,0x384dd317c6bb46eaL,0x5441ea203952b624L,
|
|
0xbcf70dee4e7dc2fbL } },
|
|
/* 43 << 28 */
|
|
{ { 0x372b016e6628e8c3L,0x07a0d667b60a7522L,0xcf05751b0a344ee2L,
|
|
0x0ec09a48118bdeecL },
|
|
{ 0x6e4b3d4ed83dce46L,0x43a6316d99d2fc6eL,0xa99d898956cf044cL,
|
|
0x7c7f4454ae3e5fb7L } },
|
|
/* 44 << 28 */
|
|
{ { 0xb2e6b121fbabbe92L,0x281850fbe1330076L,0x093581ec97890015L,
|
|
0x69b1dded75ff77f5L },
|
|
{ 0x7cf0b18fab105105L,0x953ced31a89ccfefL,0x3151f85feb914009L,
|
|
0x3c9f1b8788ed48adL } },
|
|
/* 45 << 28 */
|
|
{ { 0xc9aba1a14a7eadcbL,0x928e7501522e71cfL,0xeaede7273a2e4f83L,
|
|
0x467e10d11ce3bbd3L },
|
|
{ 0xf3442ac3b955dcf0L,0xba96307dd3d5e527L,0xf763a10efd77f474L,
|
|
0x5d744bd06a6e1ff0L } },
|
|
/* 46 << 28 */
|
|
{ { 0xd287282aa777899eL,0xe20eda8fd03f3cdeL,0x6a7e75bb50b07d31L,
|
|
0x0b7e2a946f379de4L },
|
|
{ 0x31cb64ad19f593cfL,0x7b1a9e4f1e76ef1dL,0xe18c9c9db62d609cL,
|
|
0x439bad6de779a650L } },
|
|
/* 47 << 28 */
|
|
{ { 0x219d9066e032f144L,0x1db632b8e8b2ec6aL,0xff0d0fd4fda12f78L,
|
|
0x56fb4c2d2a25d265L },
|
|
{ 0x5f4e2ee1255a03f1L,0x61cd6af2e96af176L,0xe0317ba8d068bc97L,
|
|
0x927d6bab264b988eL } },
|
|
/* 48 << 28 */
|
|
{ { 0xa18f07e0e90fb21eL,0x00fd2b80bba7fca1L,0x20387f2795cd67b5L,
|
|
0x5b89a4e7d39707f7L },
|
|
{ 0x8f83ad3f894407ceL,0xa0025b946c226132L,0xc79563c7f906c13bL,
|
|
0x5f548f314e7bb025L } },
|
|
/* 49 << 28 */
|
|
{ { 0x2b4c6b8feac6d113L,0xa67e3f9c0e813c76L,0x3982717c3fe1f4b9L,
|
|
0x5886581926d8050eL },
|
|
{ 0x99f3640cf7f06f20L,0xdc6102162a66ebc2L,0x52f2c175767a1e08L,
|
|
0x05660e1a5999871bL } },
|
|
/* 50 << 28 */
|
|
{ { 0x6b0f17626d3c4693L,0xf0e7d62737ed7beaL,0xc51758c7b75b226dL,
|
|
0x40a886281f91613bL },
|
|
{ 0x889dbaa7bbb38ce0L,0xe0404b65bddcad81L,0xfebccd3a8bc9671fL,
|
|
0xfbf9a357ee1f5375L } },
|
|
/* 51 << 28 */
|
|
{ { 0x5dc169b028f33398L,0xb07ec11d72e90f65L,0xae7f3b4afaab1eb1L,
|
|
0xd970195e5f17538aL },
|
|
{ 0x52b05cbe0181e640L,0xf5debd622643313dL,0x761481545df31f82L,
|
|
0x23e03b333a9e13c5L } },
|
|
/* 52 << 28 */
|
|
{ { 0xff7589494fde0c1fL,0xbf8a1abee5b6ec20L,0x702278fb87e1db6cL,
|
|
0xc447ad7a35ed658fL },
|
|
{ 0x48d4aa3803d0ccf2L,0x80acb338819a7c03L,0x9bc7c89e6e17ceccL,
|
|
0x46736b8b03be1d82L } },
|
|
/* 53 << 28 */
|
|
{ { 0xd65d7b60c0432f96L,0xddebe7a3deb5442fL,0x79a253077dff69a2L,
|
|
0x37a56d9402cf3122L },
|
|
{ 0x8bab8aedf2350d0aL,0x13c3f276037b0d9aL,0xc664957c44c65caeL,
|
|
0x88b44089c2e71a88L } },
|
|
/* 54 << 28 */
|
|
{ { 0xdb88e5a35cb02664L,0x5d4c0bf18686c72eL,0xea3d9b62a682d53eL,
|
|
0x9b605ef40b2ad431L },
|
|
{ 0x71bac202c69645d0L,0xa115f03a6a1b66e7L,0xfe2c563a158f4dc4L,
|
|
0xf715b3a04d12a78cL } },
|
|
/* 55 << 28 */
|
|
{ { 0x8f7f0a48d413213aL,0x2035806dc04becdbL,0xecd34a995d8587f5L,
|
|
0x4d8c30799f6d3a71L },
|
|
{ 0x1b2a2a678d95a8f6L,0xc58c9d7df2110d0dL,0xdeee81d5cf8fba3fL,
|
|
0xa42be3c00c7cdf68L } },
|
|
/* 56 << 28 */
|
|
{ { 0x2126f742d43b5eaaL,0x054a0766dfa59b85L,0x9d0d5e36126bfd45L,
|
|
0xa1f8fbd7384f8a8fL },
|
|
{ 0x317680f5d563fcccL,0x48ca5055f280a928L,0xe00b81b227b578cfL,
|
|
0x10aad9182994a514L } },
|
|
/* 57 << 28 */
|
|
{ { 0xd9e07b62b7bdc953L,0x9f0f6ff25bc086ddL,0x09d1ccff655eee77L,
|
|
0x45475f795bef7df1L },
|
|
{ 0x3faa28fa86f702ccL,0x92e609050f021f07L,0xe9e629687f8fa8c6L,
|
|
0xbd71419af036ea2cL } },
|
|
/* 58 << 28 */
|
|
{ { 0x171ee1cc6028da9aL,0x5352fe1ac251f573L,0xf8ff236e3fa997f4L,
|
|
0xd831b6c9a5749d5fL },
|
|
{ 0x7c872e1de350e2c2L,0xc56240d91e0ce403L,0xf9deb0776974f5cbL,
|
|
0x7d50ba87961c3728L } },
|
|
/* 59 << 28 */
|
|
{ { 0xd6f894265a3a2518L,0xcf817799c6303d43L,0x510a0471619e5696L,
|
|
0xab049ff63a5e307bL },
|
|
{ 0xe4cdf9b0feb13ec7L,0xd5e971179d8ff90cL,0xf6f64d069afa96afL,
|
|
0x00d0bf5e9d2012a2L } },
|
|
/* 60 << 28 */
|
|
{ { 0xe63f301f358bcdc0L,0x07689e990a9d47f8L,0x1f689e2f4f43d43aL,
|
|
0x4d542a1690920904L },
|
|
{ 0xaea293d59ca0a707L,0xd061fe458ac68065L,0x1033bf1b0090008cL,
|
|
0x29749558c08a6db6L } },
|
|
/* 61 << 28 */
|
|
{ { 0x74b5fc59c1d5d034L,0xf712e9f667e215e0L,0xfd520cbd860200e6L,
|
|
0x0229acb43ea22588L },
|
|
{ 0x9cd1e14cfff0c82eL,0x87684b6259c69e73L,0xda85e61c96ccb989L,
|
|
0x2d5dbb02a3d06493L } },
|
|
/* 62 << 28 */
|
|
{ { 0xf22ad33ae86b173cL,0xe8e41ea5a79ff0e3L,0x01d2d725dd0d0c10L,
|
|
0x31f39088032d28f9L },
|
|
{ 0x7b3f71e17829839eL,0x0cf691b44502ae58L,0xef658dbdbefc6115L,
|
|
0xa5cd6ee5b3ab5314L } },
|
|
/* 63 << 28 */
|
|
{ { 0x206c8d7b5f1d2347L,0x794645ba4cc2253aL,0xd517d8ff58389e08L,
|
|
0x4fa20dee9f847288L },
|
|
{ 0xeba072d8d797770aL,0x7360c91dbf429e26L,0x7200a3b380af8279L,
|
|
0x6a1c915082dadce3L } },
|
|
/* 64 << 28 */
|
|
{ { 0x0ee6d3a7c35d8794L,0x042e65580356bae5L,0x9f59698d643322fdL,
|
|
0x9379ae1550a61967L },
|
|
{ 0x64b9ae62fcc9981eL,0xaed3d6316d2934c6L,0x2454b3025e4e65ebL,
|
|
0xab09f647f9950428L } },
|
|
/* 0 << 35 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 35 */
|
|
{ { 0xb2083a1222248accL,0x1f6ec0ef3264e366L,0x5659b7045afdee28L,
|
|
0x7a823a40e6430bb5L },
|
|
{ 0x24592a04e1900a79L,0xcde09d4ac9ee6576L,0x52b6463f4b5ea54aL,
|
|
0x1efe9ed3d3ca65a7L } },
|
|
/* 2 << 35 */
|
|
{ { 0xe27a6dbe305406ddL,0x8eb7dc7fdd5d1957L,0xf54a6876387d4d8fL,
|
|
0x9c479409c7762de4L },
|
|
{ 0xbe4d5b5d99b30778L,0x25380c566e793682L,0x602d37f3dac740e3L,
|
|
0x140deabe1566e4aeL } },
|
|
/* 3 << 35 */
|
|
{ { 0x4481d067afd32acfL,0xd8f0fccae1f71ccfL,0xd208dd0cb596f2daL,
|
|
0xd049d7309aad93f9L },
|
|
{ 0xc79f263d42ab580eL,0x09411bb123f707b4L,0x8cfde1ff835e0edaL,
|
|
0x7270749090f03402L } },
|
|
/* 4 << 35 */
|
|
{ { 0xeaee6126c49a861eL,0x024f3b65e14f0d06L,0x51a3f1e8c69bfc17L,
|
|
0xc3c3a8e9a7686381L },
|
|
{ 0x3400752cb103d4c8L,0x02bc46139218b36bL,0xc67f75eb7651504aL,
|
|
0xd6848b56d02aebfaL } },
|
|
/* 5 << 35 */
|
|
{ { 0xbd9802e6c30fa92bL,0x5a70d96d9a552784L,0x9085c4ea3f83169bL,
|
|
0xfa9423bb06908228L },
|
|
{ 0x2ffebe12fe97a5b9L,0x85da604971b99118L,0x9cbc2f7f63178846L,
|
|
0xfd96bc709153218eL } },
|
|
/* 6 << 35 */
|
|
{ { 0x958381db1782269bL,0xae34bf792597e550L,0xbb5c60645f385153L,
|
|
0x6f0e96afe3088048L },
|
|
{ 0xbf6a021577884456L,0xb3b5688c69310ea7L,0x17c9429504fad2deL,
|
|
0xe020f0e517896d4dL } },
|
|
/* 7 << 35 */
|
|
{ { 0x730ba0ab0976505fL,0x567f6813095e2ec5L,0x470620106331ab71L,
|
|
0x72cfa97741d22b9fL },
|
|
{ 0x33e55ead8a2373daL,0xa8d0d5f47ba45a68L,0xba1d8f9c03029d15L,
|
|
0x8f34f1ccfc55b9f3L } },
|
|
/* 8 << 35 */
|
|
{ { 0xcca4428dbbe5a1a9L,0x8187fd5f3126bd67L,0x0036973a48105826L,
|
|
0xa39b6663b8bd61a0L },
|
|
{ 0x6d42deef2d65a808L,0x4969044f94636b19L,0xf611ee47dd5d564cL,
|
|
0x7b2f3a49d2873077L } },
|
|
/* 9 << 35 */
|
|
{ { 0x94157d45300eb294L,0x2b2a656e169c1494L,0xc000dd76d3a47aa9L,
|
|
0xa2864e4fa6243ea4L },
|
|
{ 0x82716c47db89842eL,0x12dfd7d761479fb7L,0x3b9a2c56e0b2f6dcL,
|
|
0x46be862ad7f85d67L } },
|
|
/* 10 << 35 */
|
|
{ { 0x03b0d8dd0f82b214L,0x460c34f9f103cbc6L,0xf32e5c0318d79e19L,
|
|
0x8b8888baa84117f8L },
|
|
{ 0x8f3c37dcc0722677L,0x10d21be91c1c0f27L,0xd47c8468e0f7a0c6L,
|
|
0x9bf02213adecc0e0L } },
|
|
/* 11 << 35 */
|
|
{ { 0x0baa7d1242b48b99L,0x1bcb665d48424096L,0x8b847cd6ebfb5cfbL,
|
|
0x87c2ae569ad4d10dL },
|
|
{ 0xf1cbb1220de36726L,0xe7043c683fdfbd21L,0x4bd0826a4e79d460L,
|
|
0x11f5e5984bd1a2cbL } },
|
|
/* 12 << 35 */
|
|
{ { 0x97554160b7fe7b6eL,0x7d16189a400a3fb2L,0xd73e9beae328ca1eL,
|
|
0x0dd04b97e793d8ccL },
|
|
{ 0xa9c83c9b506db8ccL,0x5cd47aaecf38814cL,0x26fc430db64b45e6L,
|
|
0x079b5499d818ea84L } },
|
|
/* 13 << 35 */
|
|
{ { 0xebb01102c1c24a3bL,0xca24e5681c161c1aL,0x103eea6936f00a4aL,
|
|
0x9ad76ee876176c7bL },
|
|
{ 0x97451fc2538e0ff7L,0x94f898096604b3b0L,0x6311436e3249cfd7L,
|
|
0x27b4a7bd41224f69L } },
|
|
/* 14 << 35 */
|
|
{ { 0x03b5d21ae0ac2941L,0x279b0254c2d31937L,0x3307c052cac992d0L,
|
|
0x6aa7cb92efa8b1f3L },
|
|
{ 0x5a1825800d37c7a5L,0x13380c37342d5422L,0x92ac2d66d5d2ef92L,
|
|
0x035a70c9030c63c6L } },
|
|
/* 15 << 35 */
|
|
{ { 0xc16025dd4ce4f152L,0x1f419a71f9df7c06L,0x6d5b221491e4bb14L,
|
|
0xfc43c6cc839fb4ceL },
|
|
{ 0x49f06591925d6b2dL,0x4b37d9d362186598L,0x8c54a971d01b1629L,
|
|
0xe1a9c29f51d50e05L } },
|
|
/* 16 << 35 */
|
|
{ { 0x5109b78571ba1861L,0x48b22d5cd0c8f93dL,0xe8fa84a78633bb93L,
|
|
0x53fba6ba5aebbd08L },
|
|
{ 0x7ff27df3e5eea7d8L,0x521c879668ca7158L,0xb9d5133bce6f1a05L,
|
|
0x2d50cd53fd0ebee4L } },
|
|
/* 17 << 35 */
|
|
{ { 0xc82115d6c5a3ef16L,0x993eff9dba079221L,0xe4da2c5e4b5da81cL,
|
|
0x9a89dbdb8033fd85L },
|
|
{ 0x60819ebf2b892891L,0x53902b215d14a4d5L,0x6ac35051d7fda421L,
|
|
0xcc6ab88561c83284L } },
|
|
/* 18 << 35 */
|
|
{ { 0x14eba133f74cff17L,0x240aaa03ecb813f2L,0xcfbb65406f665beeL,
|
|
0x084b1fe4a425ad73L },
|
|
{ 0x009d5d16d081f6a6L,0x35304fe8eef82c90L,0xf20346d5aa9eaa22L,
|
|
0x0ada9f07ac1c91e3L } },
|
|
/* 19 << 35 */
|
|
{ { 0xa6e21678968a6144L,0x54c1f77c07b31a1eL,0xd6bb787e5781fbe1L,
|
|
0x61bd2ee0e31f1c4aL },
|
|
{ 0xf25aa1e9781105fcL,0x9cf2971f7b2f8e80L,0x26d15412cdff919bL,
|
|
0x01db4ebe34bc896eL } },
|
|
/* 20 << 35 */
|
|
{ { 0x7d9b3e23b40df1cfL,0x5933737394e971b4L,0xbf57bd14669cf921L,
|
|
0x865daedf0c1a1064L },
|
|
{ 0x3eb70bd383279125L,0xbc3d5b9f34ecdaabL,0x91e3ed7e5f755cafL,
|
|
0x49699f54d41e6f02L } },
|
|
/* 21 << 35 */
|
|
{ { 0x185770e1d4a7a15bL,0x08f3587aeaac87e7L,0x352018db473133eaL,
|
|
0x674ce71904fd30fcL },
|
|
{ 0x7b8d9835088b3e0eL,0x7a0356a95d0d47a1L,0x9d9e76596474a3c4L,
|
|
0x61ea48a7ff66966cL } },
|
|
/* 22 << 35 */
|
|
{ { 0x304177580f3e4834L,0xfdbb21c217a9afcbL,0x756fa17f2f9a67b3L,
|
|
0x2a6b2421a245c1a8L },
|
|
{ 0x64be27944af02291L,0xade465c62a5804feL,0x8dffbd39a6f08fd7L,
|
|
0xc4efa84caa14403bL } },
|
|
/* 23 << 35 */
|
|
{ { 0xa1b91b2a442b0f5cL,0xb748e317cf997736L,0x8d1b62bfcee90e16L,
|
|
0x907ae2710b2078c0L },
|
|
{ 0xdf31534b0c9bcdddL,0x043fb05439adce83L,0x99031043d826846aL,
|
|
0x61a9c0d6b144f393L } },
|
|
/* 24 << 35 */
|
|
{ { 0xdab4804647718427L,0xdf17ff9b6e830f8bL,0x408d7ee8e49a1347L,
|
|
0x6ac71e2391c1d4aeL },
|
|
{ 0xc8cbb9fd1defd73cL,0x19840657bbbbfec5L,0x39db1cb59e7ef8eaL,
|
|
0x78aa829664105f30L } },
|
|
/* 25 << 35 */
|
|
{ { 0xa3d9b7f0a3738c29L,0x0a2f235abc3250a3L,0x55e506f6445e4cafL,
|
|
0x0974f73d33475f7aL },
|
|
{ 0xd37dbba35ba2f5a8L,0x542c6e636af40066L,0x26d99b53c5d73e2cL,
|
|
0x06060d7d6c3ca33eL } },
|
|
/* 26 << 35 */
|
|
{ { 0xcdbef1c2065fef4aL,0x77e60f7dfd5b92e3L,0xd7c549f026708350L,
|
|
0x201b3ad034f121bfL },
|
|
{ 0x5fcac2a10334fc14L,0x8a9a9e09344552f6L,0x7dd8a1d397653082L,
|
|
0x5fc0738f79d4f289L } },
|
|
/* 27 << 35 */
|
|
{ { 0x787d244d17d2d8c3L,0xeffc634570830684L,0x5ddb96dde4f73ae5L,
|
|
0x8efb14b1172549a5L },
|
|
{ 0x6eb73eee2245ae7aL,0xbca4061eea11f13eL,0xb577421d30b01f5dL,
|
|
0xaa688b24782e152cL } },
|
|
/* 28 << 35 */
|
|
{ { 0x67608e71bd3502baL,0x4ef41f24b4de75a0L,0xb08dde5efd6125e5L,
|
|
0xde484825a409543fL },
|
|
{ 0x1f198d9865cc2295L,0x428a37716e0edfa2L,0x4f9697a2adf35fc7L,
|
|
0x01a43c79f7cac3c7L } },
|
|
/* 29 << 35 */
|
|
{ { 0xb05d70590fd3659aL,0x8927f30cbb7f2d9aL,0x4023d1ac8cf984d3L,
|
|
0x32125ed302897a45L },
|
|
{ 0xfb572dad3d414205L,0x73000ef2e3fa82a9L,0x4c0868e9f10a5581L,
|
|
0x5b61fc676b0b3ca5L } },
|
|
/* 30 << 35 */
|
|
{ { 0xc1258d5b7cae440cL,0x21c08b41402b7531L,0xf61a8955de932321L,
|
|
0x3568faf82d1408afL },
|
|
{ 0x71b15e999ecf965bL,0xf14ed248e917276fL,0xc6f4caa1820cf9e2L,
|
|
0x681b20b218d83c7eL } },
|
|
/* 31 << 35 */
|
|
{ { 0x6cde738dc6c01120L,0x71db0813ae70e0dbL,0x95fc064474afe18cL,
|
|
0x34619053129e2be7L },
|
|
{ 0x80615ceadb2a3b15L,0x0a49a19edb4c7073L,0x0e1b84c88fd2d367L,
|
|
0xd74bf462033fb8aaL } },
|
|
/* 32 << 35 */
|
|
{ { 0x889f6d65533ef217L,0x7158c7e4c3ca2e87L,0xfb670dfbdc2b4167L,
|
|
0x75910a01844c257fL },
|
|
{ 0xf336bf07cf88577dL,0x22245250e45e2aceL,0x2ed92e8d7ca23d85L,
|
|
0x29f8be4c2b812f58L } },
|
|
/* 33 << 35 */
|
|
{ { 0xdd9ebaa7076fe12bL,0x3f2400cbae1537f9L,0x1aa9352817bdfb46L,
|
|
0xc0f9843067883b41L },
|
|
{ 0x5590ede10170911dL,0x7562f5bb34d4b17fL,0xe1fa1df21826b8d2L,
|
|
0xb40b796a6bd80d59L } },
|
|
/* 34 << 35 */
|
|
{ { 0xd65bf1973467ba92L,0x8c9b46dbf70954b0L,0x97c8a0f30e78f15dL,
|
|
0xa8f3a69a85a4c961L },
|
|
{ 0x4242660f61e4ce9bL,0xbf06aab36ea6790cL,0xc6706f8eec986416L,
|
|
0x9e56dec19a9fc225L } },
|
|
/* 35 << 35 */
|
|
{ { 0x527c46f49a9898d9L,0xd799e77b5633cdefL,0x24eacc167d9e4297L,
|
|
0xabb61cea6b1cb734L },
|
|
{ 0xbee2e8a7f778443cL,0x3bb42bf129de2fe6L,0xcbed86a13003bb6fL,
|
|
0xd3918e6cd781cdf6L } },
|
|
/* 36 << 35 */
|
|
{ { 0x4bee32719a5103f1L,0x5243efc6f50eac06L,0xb8e122cb6adcc119L,
|
|
0x1b7faa84c0b80a08L },
|
|
{ 0x32c3d1bd6dfcd08cL,0x129dec4e0be427deL,0x98ab679c1d263c83L,
|
|
0xafc83cb7cef64effL } },
|
|
/* 37 << 35 */
|
|
{ { 0x85eb60882fa6be76L,0x892585fb1328cbfeL,0xc154d3edcf618ddaL,
|
|
0xc44f601b3abaf26eL },
|
|
{ 0x7bf57d0b2be1fdfdL,0xa833bd2d21137feeL,0x9353af362db591a8L,
|
|
0xc76f26dc5562a056L } },
|
|
/* 38 << 35 */
|
|
{ { 0x1d87e47d3fdf5a51L,0x7afb5f9355c9cab0L,0x91bbf58f89e0586eL,
|
|
0x7c72c0180d843709L },
|
|
{ 0xa9a5aafb99b5c3dcL,0xa48a0f1d3844aeb0L,0x7178b7ddb667e482L,
|
|
0x453985e96e23a59aL } },
|
|
/* 39 << 35 */
|
|
{ { 0x4a54c86001b25dd8L,0x0dd37f48fb897c8aL,0x5f8aa6100ea90cd9L,
|
|
0xc8892c6816d5830dL },
|
|
{ 0xeb4befc0ef514ca5L,0x478eb679e72c9ee6L,0x9bca20dadbc40d5fL,
|
|
0xf015de21dde4f64aL } },
|
|
/* 40 << 35 */
|
|
{ { 0xaa6a4de0eaf4b8a5L,0x68cfd9ca4bc60e32L,0x668a4b017fd15e70L,
|
|
0xd9f0694af27dc09dL },
|
|
{ 0xf6c3cad5ba708bcdL,0x5cd2ba695bb95c2aL,0xaa28c1d333c0a58fL,
|
|
0x23e274e3abc77870L } },
|
|
/* 41 << 35 */
|
|
{ { 0x44c3692ddfd20a4aL,0x091c5fd381a66653L,0x6c0bb69109a0757dL,
|
|
0x9072e8b9667343eaL },
|
|
{ 0x31d40eb080848becL,0x95bd480a79fd36ccL,0x01a77c6165ed43f5L,
|
|
0xafccd1272e0d40bfL } },
|
|
/* 42 << 35 */
|
|
{ { 0xeccfc82d1cc1884bL,0xc85ac2015d4753b4L,0xc7a6caac658e099fL,
|
|
0xcf46369e04b27390L },
|
|
{ 0xe2e7d049506467eaL,0x481b63a237cdecccL,0x4029abd8ed80143aL,
|
|
0x28bfe3c7bcb00b88L } },
|
|
/* 43 << 35 */
|
|
{ { 0x3bec10090643d84aL,0x885f3668abd11041L,0xdb02432cf83a34d6L,
|
|
0x32f7b360719ceebeL },
|
|
{ 0xf06c7837dad1fe7aL,0x60a157a95441a0b0L,0x704970e9e2d47550L,
|
|
0xcd2bd553271b9020L } },
|
|
/* 44 << 35 */
|
|
{ { 0xff57f82f33e24a0bL,0x9cbee23ff2565079L,0x16353427eb5f5825L,
|
|
0x276feec4e948d662L },
|
|
{ 0xd1b62bc6da10032bL,0x718351ddf0e72a53L,0x934520762420e7baL,
|
|
0x96368fff3a00118dL } },
|
|
/* 45 << 35 */
|
|
{ { 0x00ce2d26150a49e4L,0x0c28b6363f04706bL,0xbad65a4658b196d0L,
|
|
0x6c8455fcec9f8b7cL },
|
|
{ 0xe90c895f2d71867eL,0x5c0be31bedf9f38cL,0x2a37a15ed8f6ec04L,
|
|
0x239639e78cd85251L } },
|
|
/* 46 << 35 */
|
|
{ { 0xd89753159c7c4c6bL,0x603aa3c0d7409af7L,0xb8d53d0c007132fbL,
|
|
0x68d12af7a6849238L },
|
|
{ 0xbe0607e7bf5d9279L,0x9aa50055aada74ceL,0xe81079cbba7e8ccbL,
|
|
0x610c71d1a5f4ff5eL } },
|
|
/* 47 << 35 */
|
|
{ { 0x9e2ee1a75aa07093L,0xca84004ba75da47cL,0x074d39513de75401L,
|
|
0xf938f756bb311592L },
|
|
{ 0x9619761800a43421L,0x39a2536207bc78c8L,0x278f710a0a171276L,
|
|
0xb28446ea8d1a8f08L } },
|
|
/* 48 << 35 */
|
|
{ { 0x184781bfe3b6a661L,0x7751cb1de6d279f7L,0xf8ff95d6c59eb662L,
|
|
0x186d90b758d3dea7L },
|
|
{ 0x0e4bb6c1dfb4f754L,0x5c5cf56b2b2801dcL,0xc561e4521f54564dL,
|
|
0xb4fb8c60f0dd7f13L } },
|
|
/* 49 << 35 */
|
|
{ { 0xf884963033ff98c7L,0x9619fffacf17769cL,0xf8090bf61bfdd80aL,
|
|
0x14d9a149422cfe63L },
|
|
{ 0xb354c3606f6df9eaL,0xdbcf770d218f17eaL,0x207db7c879eb3480L,
|
|
0x213dbda8559b6a26L } },
|
|
/* 50 << 35 */
|
|
{ { 0xac4c200b29fc81b3L,0xebc3e09f171d87c1L,0x917995301481aa9eL,
|
|
0x051b92e192e114faL },
|
|
{ 0xdf8f92e9ecb5537fL,0x44b1b2cc290c7483L,0xa711455a2adeb016L,
|
|
0x964b685681a10c2cL } },
|
|
/* 51 << 35 */
|
|
{ { 0x4f159d99cec03623L,0x05532225ef3271eaL,0xb231bea3c5ee4849L,
|
|
0x57a54f507094f103L },
|
|
{ 0x3e2d421d9598b352L,0xe865a49c67412ab4L,0xd2998a251cc3a912L,
|
|
0x5d0928080c74d65dL } },
|
|
/* 52 << 35 */
|
|
{ { 0x73f459084088567aL,0xeb6b280e1f214a61L,0x8c9adc34caf0c13dL,
|
|
0x39d12938f561fb80L },
|
|
{ 0xb2dc3a5ebc6edfb4L,0x7485b1b1fe4d210eL,0x062e0400e186ae72L,
|
|
0x91e32d5c6eeb3b88L } },
|
|
/* 53 << 35 */
|
|
{ { 0x6df574d74be59224L,0xebc88ccc716d55f3L,0x26c2e6d0cad6ed33L,
|
|
0xc6e21e7d0d3e8b10L },
|
|
{ 0x2cc5840e5bcc36bbL,0x9292445e7da74f69L,0x8be8d3214e5193a8L,
|
|
0x3ec236298df06413L } },
|
|
/* 54 << 35 */
|
|
{ { 0xc7e9ae85b134defaL,0x6073b1d01bb2d475L,0xb9ad615e2863c00dL,
|
|
0x9e29493d525f4ac4L },
|
|
{ 0xc32b1dea4e9acf4fL,0x3e1f01c8a50db88dL,0xb05d70ea04da916cL,
|
|
0x714b0d0ad865803eL } },
|
|
/* 55 << 35 */
|
|
{ { 0x4bd493fc9920cb5eL,0x5b44b1f792c7a3acL,0xa2a77293bcec9235L,
|
|
0x5ee06e87cd378553L },
|
|
{ 0xceff8173da621607L,0x2bb03e4c99f5d290L,0x2945106aa6f734acL,
|
|
0xb5056604d25c4732L } },
|
|
/* 56 << 35 */
|
|
{ { 0x5945920ce079afeeL,0x686e17a06789831fL,0x5966bee8b74a5ae5L,
|
|
0x38a673a21e258d46L },
|
|
{ 0xbd1cc1f283141c95L,0x3b2ecf4f0e96e486L,0xcd3aa89674e5fc78L,
|
|
0x415ec10c2482fa7aL } },
|
|
/* 57 << 35 */
|
|
{ { 0x1523441980503380L,0x513d917ad314b392L,0xb0b52f4e63caecaeL,
|
|
0x07bf22ad2dc7780bL },
|
|
{ 0xe761e8a1e4306839L,0x1b3be9625dd7feaaL,0x4fe728de74c778f1L,
|
|
0xf1fa0bda5e0070f6L } },
|
|
/* 58 << 35 */
|
|
{ { 0x85205a316ec3f510L,0x2c7e4a14d2980475L,0xde3c19c06f30ebfdL,
|
|
0xdb1c1f38d4b7e644L },
|
|
{ 0xfe291a755dce364aL,0xb7b22a3c058f5be3L,0x2cd2c30237fea38cL,
|
|
0x2930967a2e17be17L } },
|
|
/* 59 << 35 */
|
|
{ { 0x87f009de0c061c65L,0xcb014aacedc6ed44L,0x49bd1cb43bafb1ebL,
|
|
0x81bd8b5c282d3688L },
|
|
{ 0x1cdab87ef01a17afL,0x21f37ac4e710063bL,0x5a6c567642fc8193L,
|
|
0xf4753e7056a6015cL } },
|
|
/* 60 << 35 */
|
|
{ { 0x020f795ea15b0a44L,0x8f37c8d78958a958L,0x63b7e89ba4b675b5L,
|
|
0xb4fb0c0c0fc31aeaL },
|
|
{ 0xed95e639a7ff1f2eL,0x9880f5a3619614fbL,0xdeb6ff02947151abL,
|
|
0x5bc5118ca868dcdbL } },
|
|
/* 61 << 35 */
|
|
{ { 0xd8da20554c20cea5L,0xcac2776e14c4d69aL,0xcccb22c1622d599bL,
|
|
0xa4ddb65368a9bb50L },
|
|
{ 0x2c4ff1511b4941b4L,0xe1ff19b46efba588L,0x35034363c48345e0L,
|
|
0x45542e3d1e29dfc4L } },
|
|
/* 62 << 35 */
|
|
{ { 0xf197cb91349f7aedL,0x3b2b5a008fca8420L,0x7c175ee823aaf6d8L,
|
|
0x54dcf42135af32b6L },
|
|
{ 0x0ba1430727d6561eL,0x879d5ee4d175b1e2L,0xc7c4367399807db5L,
|
|
0x77a544559cd55bcdL } },
|
|
/* 63 << 35 */
|
|
{ { 0xe6c2ff130105c072L,0x18f7a99f8dda7da4L,0x4c3018200e2d35c1L,
|
|
0x06a53ca0d9cc6c82L },
|
|
{ 0xaa21cc1ef1aa1d9eL,0x324143344a75b1e8L,0x2a6d13280ebe9fdcL,
|
|
0x16bd173f98a4755aL } },
|
|
/* 64 << 35 */
|
|
{ { 0xfbb9b2452133ffd9L,0x39a8b2f1830f1a20L,0x484bc97dd5a1f52aL,
|
|
0xd6aebf56a40eddf8L },
|
|
{ 0x32257acb76ccdac6L,0xaf4d36ec1586ff27L,0x8eaa8863f8de7dd1L,
|
|
0x0045d5cf88647c16L } },
|
|
/* 0 << 42 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 42 */
|
|
{ { 0xa6f3d574c005979dL,0xc2072b426a40e350L,0xfca5c1568de2ecf9L,
|
|
0xa8c8bf5ba515344eL },
|
|
{ 0x97aee555114df14aL,0xd4374a4dfdc5ec6bL,0x754cc28f2ca85418L,
|
|
0x71cb9e27d3c41f78L } },
|
|
/* 2 << 42 */
|
|
{ { 0x8910507903605c39L,0xf0843d9ea142c96cL,0xf374493416923684L,
|
|
0x732caa2ffa0a2893L },
|
|
{ 0xb2e8c27061160170L,0xc32788cc437fbaa3L,0x39cd818ea6eda3acL,
|
|
0xe2e942399e2b2e07L } },
|
|
/* 3 << 42 */
|
|
{ { 0x6967d39b0260e52aL,0xd42585cc90653325L,0x0d9bd60521ca7954L,
|
|
0x4fa2087781ed57b3L },
|
|
{ 0x60c1eff8e34a0bbeL,0x56b0040c84f6ef64L,0x28be2b24b1af8483L,
|
|
0xb2278163f5531614L } },
|
|
/* 4 << 42 */
|
|
{ { 0x8df275455922ac1cL,0xa7b3ef5ca52b3f63L,0x8e77b21471de57c4L,
|
|
0x31682c10834c008bL },
|
|
{ 0xc76824f04bd55d31L,0xb6d1c08617b61c71L,0x31db0903c2a5089dL,
|
|
0x9c092172184e5d3fL } },
|
|
/* 5 << 42 */
|
|
{ { 0xdd7ced5bc00cc638L,0x1a2015eb61278fc2L,0x2e8e52886a37f8d6L,
|
|
0xc457786fe79933adL },
|
|
{ 0xb3fe4cce2c51211aL,0xad9b10b224c20498L,0x90d87a4fd28db5e5L,
|
|
0x698cd1053aca2fc3L } },
|
|
/* 6 << 42 */
|
|
{ { 0x4f112d07e91b536dL,0xceb982f29eba09d6L,0x3c157b2c197c396fL,
|
|
0xe23c2d417b66eb24L },
|
|
{ 0x480c57d93f330d37L,0xb3a4c8a179108debL,0x702388decb199ce5L,
|
|
0x0b019211b944a8d4L } },
|
|
/* 7 << 42 */
|
|
{ { 0x24f2a692840bb336L,0x7c353bdca669fa7bL,0xda20d6fcdec9c300L,
|
|
0x625fbe2fa13a4f17L },
|
|
{ 0xa2b1b61adbc17328L,0x008965bfa9515621L,0x49690939c620ff46L,
|
|
0x182dd27d8717e91cL } },
|
|
/* 8 << 42 */
|
|
{ { 0x5ace5035ea6c3997L,0x54259aaac2610befL,0xef18bb3f3c80dd39L,
|
|
0x6910b95b5fc3fa39L },
|
|
{ 0xfce2f51043e09aeeL,0xced56c9fa7675665L,0x10e265acd872db61L,
|
|
0x6982812eae9fce69L } },
|
|
/* 9 << 42 */
|
|
{ { 0x29be11c6ce800998L,0x72bb1752b90360d9L,0x2c1931975a4ad590L,
|
|
0x2ba2f5489fc1dbc0L },
|
|
{ 0x7fe4eebbe490ebe0L,0x12a0a4cd7fae11c0L,0x7197cf81e903ba37L,
|
|
0xcf7d4aa8de1c6dd8L } },
|
|
/* 10 << 42 */
|
|
{ { 0x92af6bf43fd5684cL,0x2b26eecf80360aa1L,0xbd960f3000546a82L,
|
|
0x407b3c43f59ad8feL },
|
|
{ 0x86cae5fe249c82baL,0x9e0faec72463744cL,0x87f551e894916272L,
|
|
0x033f93446ceb0615L } },
|
|
/* 11 << 42 */
|
|
{ { 0x1e5eb0d18be82e84L,0x89967f0e7a582fefL,0xbcf687d5a6e921faL,
|
|
0xdfee4cf3d37a09baL },
|
|
{ 0x94f06965b493c465L,0x638b9a1c7635c030L,0x7666786466f05e9fL,
|
|
0xccaf6808c04da725L } },
|
|
/* 12 << 42 */
|
|
{ { 0xca2eb690768fccfcL,0xf402d37db835b362L,0x0efac0d0e2fdfcceL,
|
|
0xefc9cdefb638d990L },
|
|
{ 0x2af12b72d1669a8bL,0x33c536bc5774ccbdL,0x30b21909fb34870eL,
|
|
0xc38fa2f77df25acaL } },
|
|
/* 13 << 42 */
|
|
{ { 0x74c5f02bbf81f3f5L,0x0525a5aeaf7e4581L,0x88d2aaba433c54aeL,
|
|
0xed9775db806a56c5L },
|
|
{ 0xd320738ac0edb37dL,0x25fdb6ee66cc1f51L,0xac661d1710600d76L,
|
|
0x931ec1f3bdd1ed76L } },
|
|
/* 14 << 42 */
|
|
{ { 0x65c11d6219ee43f1L,0x5cd57c3e60829d97L,0xd26c91a3984be6e8L,
|
|
0xf08d93098b0c53bdL },
|
|
{ 0x94bc9e5bc016e4eaL,0xd391683911d43d2bL,0x886c5ad773701155L,
|
|
0xe037762620b00715L } },
|
|
/* 15 << 42 */
|
|
{ { 0x7f01c9ecaa80ba59L,0x3083411a68538e51L,0x970370f1e88128afL,
|
|
0x625cc3db91dec14bL },
|
|
{ 0xfef9666c01ac3107L,0xb2a8d577d5057ac3L,0xb0f2629992be5df7L,
|
|
0xf579c8e500353924L } },
|
|
/* 16 << 42 */
|
|
{ { 0xb8fa3d931341ed7aL,0x4223272ca7b59d49L,0x3dcb194783b8c4a4L,
|
|
0x4e413c01ed1302e4L },
|
|
{ 0x6d999127e17e44ceL,0xee86bf7533b3adfbL,0xf6902fe625aa96caL,
|
|
0xb73540e4e5aae47dL } },
|
|
/* 17 << 42 */
|
|
{ { 0x32801d7b1b4a158cL,0xe571c99e27e2a369L,0x40cb76c010d9f197L,
|
|
0xc308c2893167c0aeL },
|
|
{ 0xa6ef9dd3eb7958f2L,0xa7226dfc300879b1L,0x6cd0b3627edf0636L,
|
|
0x4efbce6c7bc37eedL } },
|
|
/* 18 << 42 */
|
|
{ { 0x75f92a058d699021L,0x586d4c79772566e3L,0x378ca5f1761ad23aL,
|
|
0x650d86fc1465a8acL },
|
|
{ 0x7a4ed457842ba251L,0x6b65e3e642234933L,0xaf1543b731aad657L,
|
|
0xa4cefe98cbfec369L } },
|
|
/* 19 << 42 */
|
|
{ { 0xb587da909f47befbL,0x6562e9fb41312d13L,0xa691ea59eff1cefeL,
|
|
0xcc30477a05fc4cf6L },
|
|
{ 0xa16324610b0ffd3dL,0xa1f16f3b5b355956L,0x5b148d534224ec24L,
|
|
0xdc834e7bf977012aL } },
|
|
/* 20 << 42 */
|
|
{ { 0x7bfc5e75b2c69dbcL,0x3aa77a2903c3da6cL,0xde0df03cca910271L,
|
|
0xcbd5ca4a7806dc55L },
|
|
{ 0xe1ca58076db476cbL,0xfde15d625f37a31eL,0xf49af520f41af416L,
|
|
0x96c5c5b17d342db5L } },
|
|
/* 21 << 42 */
|
|
{ { 0x155c43b7eb4ceb9bL,0x2e9930104e77371aL,0x1d2987da675d43afL,
|
|
0xef2bc1c08599fd72L },
|
|
{ 0x96894b7b9342f6b2L,0x201eadf27c8e71f0L,0xf3479d9f4a1f3efcL,
|
|
0xe0f8a742702a9704L } },
|
|
/* 22 << 42 */
|
|
{ { 0xeafd44b6b3eba40cL,0xf9739f29c1c1e0d0L,0x0091471a619d505eL,
|
|
0xc15f9c969d7c263eL },
|
|
{ 0x5be4728583afbe33L,0xa3b6d6af04f1e092L,0xe76526b9751a9d11L,
|
|
0x2ec5b26d9a4ae4d2L } },
|
|
/* 23 << 42 */
|
|
{ { 0xeb66f4d902f6fb8dL,0x4063c56196912164L,0xeb7050c180ef3000L,
|
|
0x288d1c33eaa5b3f0L },
|
|
{ 0xe87c68d607806fd8L,0xb2f7f9d54bbbf50fL,0x25972f3aac8d6627L,
|
|
0xf854777410e8c13bL } },
|
|
/* 24 << 42 */
|
|
{ { 0xcc50ef6c872b4a60L,0xab2a34a44613521bL,0x39c5c190983e15d1L,
|
|
0x61dde5df59905512L },
|
|
{ 0xe417f6219f2275f3L,0x0750c8b6451d894bL,0x75b04ab978b0bdaaL,
|
|
0x3bfd9fd4458589bdL } },
|
|
/* 25 << 42 */
|
|
{ { 0xf1013e30ee9120b6L,0x2b51af9323a4743eL,0xea96ffae48d14d9eL,
|
|
0x71dc0dbe698a1d32L },
|
|
{ 0x914962d20180cca4L,0x1ae60677c3568963L,0x8cf227b1437bc444L,
|
|
0xc650c83bc9962c7aL } },
|
|
/* 26 << 42 */
|
|
{ { 0x23c2c7ddfe7ccfc4L,0xf925c89d1b929d48L,0x4460f74b06783c33L,
|
|
0xac2c8d49a590475aL },
|
|
{ 0xfb40b407b807bba0L,0x9d1e362d69ff8f3aL,0xa33e9681cbef64a4L,
|
|
0x67ece5fa332fb4b2L } },
|
|
/* 27 << 42 */
|
|
{ { 0x6900a99b739f10e3L,0xc3341ca9ff525925L,0xee18a626a9e2d041L,
|
|
0xa5a8368529580dddL },
|
|
{ 0xf3470c819d7de3cdL,0xedf025862062cf9cL,0xf43522fac010edb0L,
|
|
0x3031413513a4b1aeL } },
|
|
/* 28 << 42 */
|
|
{ { 0xc792e02adb22b94bL,0x993d8ae9a1eaa45bL,0x8aad6cd3cd1e1c63L,
|
|
0x89529ca7c5ce688aL },
|
|
{ 0x2ccee3aae572a253L,0xe02b643802a21efbL,0xa7091b6ec9430358L,
|
|
0x06d1b1fa9d7db504L } },
|
|
/* 29 << 42 */
|
|
{ { 0x58846d32c4744733L,0x40517c71379f9e34L,0x2f65655f130ef6caL,
|
|
0x526e4488f1f3503fL },
|
|
{ 0x8467bd177ee4a976L,0x1d9dc913921363d1L,0xd8d24c33b069e041L,
|
|
0x5eb5da0a2cdf7f51L } },
|
|
/* 30 << 42 */
|
|
{ { 0x1c0f3cb1197b994fL,0x3c95a6c52843eae9L,0x7766ffc9a6097ea5L,
|
|
0x7bea4093d723b867L },
|
|
{ 0xb48e1f734db378f9L,0x70025b00e37b77acL,0x943dc8e7af24ad46L,
|
|
0xb98a15ac16d00a85L } },
|
|
/* 31 << 42 */
|
|
{ { 0x3adc38ba2743b004L,0xb1c7f4f7334415eeL,0xea43df8f1e62d05aL,
|
|
0x326189059d76a3b6L },
|
|
{ 0x2fbd0bb5a23a0f46L,0x5bc971db6a01918cL,0x7801d94ab4743f94L,
|
|
0xb94df65e676ae22bL } },
|
|
/* 32 << 42 */
|
|
{ { 0xaafcbfabaf95894cL,0x7b9bdc07276b2241L,0xeaf983625bdda48bL,
|
|
0x5977faf2a3fcb4dfL },
|
|
{ 0xbed042ef052c4b5bL,0x9fe87f71067591f0L,0xc89c73ca22f24ec7L,
|
|
0x7d37fa9ee64a9f1bL } },
|
|
/* 33 << 42 */
|
|
{ { 0x2710841a15562627L,0x2c01a613c243b034L,0x1d135c562bc68609L,
|
|
0xc2ca17158b03f1f6L },
|
|
{ 0xc9966c2d3eb81d82L,0xc02abf4a8f6df13eL,0x77b34bd78f72b43bL,
|
|
0xaff6218f360c82b0L } },
|
|
/* 34 << 42 */
|
|
{ { 0x0aa5726c8d55b9d2L,0xdc0adbe999e9bffbL,0x9097549cefb9e72aL,
|
|
0x167557129dfb3111L },
|
|
{ 0xdd8bf984f26847f9L,0xbcb8e387dfb30cb7L,0xc1fd32a75171ef9cL,
|
|
0x977f3fc7389b363fL } },
|
|
/* 35 << 42 */
|
|
{ { 0x116eaf2bf4babda0L,0xfeab68bdf7113c8eL,0xd1e3f064b7def526L,
|
|
0x1ac30885e0b3fa02L },
|
|
{ 0x1c5a6e7b40142d9dL,0x839b560330921c0bL,0x48f301fa36a116a3L,
|
|
0x380e1107cfd9ee6dL } },
|
|
/* 36 << 42 */
|
|
{ { 0x7945ead858854be1L,0x4111c12ecbd4d49dL,0xece3b1ec3a29c2efL,
|
|
0x6356d4048d3616f5L },
|
|
{ 0x9f0d6a8f594d320eL,0x0989316df651ccd2L,0x6c32117a0f8fdde4L,
|
|
0x9abe5cc5a26a9bbcL } },
|
|
/* 37 << 42 */
|
|
{ { 0xcff560fb9723f671L,0x21b2a12d7f3d593cL,0xe4cb18da24ba0696L,
|
|
0x186e2220c3543384L },
|
|
{ 0x722f64e088312c29L,0x94282a9917dc7752L,0x62467bbf5a85ee89L,
|
|
0xf435c650f10076a0L } },
|
|
/* 38 << 42 */
|
|
{ { 0xc9ff153943b3a50bL,0x7132130c1a53efbcL,0x31bfe063f7b0c5b7L,
|
|
0xb0179a7d4ea994ccL },
|
|
{ 0x12d064b3c85f455bL,0x472593288f6e0062L,0xf64e590bb875d6d9L,
|
|
0x22dd6225ad92bcc7L } },
|
|
/* 39 << 42 */
|
|
{ { 0xb658038eb9c3bd6dL,0x00cdb0d6fbba27c8L,0x0c6813371062c45dL,
|
|
0xd8515b8c2d33407dL },
|
|
{ 0xcb8f699e8cbb5ecfL,0x8c4347f8c608d7d8L,0x2c11850abb3e00dbL,
|
|
0x20a8dafdecb49d19L } },
|
|
/* 40 << 42 */
|
|
{ { 0xbd78148045ee2f40L,0x75e354af416b60cfL,0xde0b58a18d49a8c4L,
|
|
0xe40e94e2fa359536L },
|
|
{ 0xbd4fa59f62accd76L,0x05cf466a8c762837L,0xb5abda99448c277bL,
|
|
0x5a9e01bf48b13740L } },
|
|
/* 41 << 42 */
|
|
{ { 0x9d457798326aad8dL,0xbdef4954c396f7e7L,0x6fb274a2c253e292L,
|
|
0x2800bf0a1cfe53e7L },
|
|
{ 0x22426d3144438fd4L,0xef2339235e259f9aL,0x4188503c03f66264L,
|
|
0x9e5e7f137f9fdfabL } },
|
|
/* 42 << 42 */
|
|
{ { 0x565eb76c5fcc1abaL,0xea63254859b5bff8L,0x5587c087aab6d3faL,
|
|
0x92b639ea6ce39c1bL },
|
|
{ 0x0706e782953b135cL,0x7308912e425268efL,0x599e92c7090e7469L,
|
|
0x83b90f529bc35e75L } },
|
|
/* 43 << 42 */
|
|
{ { 0x4750b3d0244975b3L,0xf3a4435811965d72L,0x179c67749c8dc751L,
|
|
0xff18cdfed23d9ff0L },
|
|
{ 0xc40138332028e247L,0x96e280e2f3bfbc79L,0xf60417bdd0880a84L,
|
|
0x263c9f3d2a568151L } },
|
|
/* 44 << 42 */
|
|
{ { 0x36be15b32d2ce811L,0x846dc0c2f8291d21L,0x5cfa0ecb789fcfdbL,
|
|
0x45a0beedd7535b9aL },
|
|
{ 0xec8e9f0796d69af1L,0x31a7c5b8599ab6dcL,0xd36d45eff9e2e09fL,
|
|
0x3cf49ef1dcee954bL } },
|
|
/* 45 << 42 */
|
|
{ { 0x6be34cf3086cff9bL,0x88dbd49139a3360fL,0x1e96b8cc0dbfbd1dL,
|
|
0xc1e5f7bfcb7e2552L },
|
|
{ 0x0547b21428819d98L,0xc770dd9c7aea9dcbL,0xaef0d4c7041d68c8L,
|
|
0xcc2b981813cb9ba8L } },
|
|
/* 46 << 42 */
|
|
{ { 0x7fc7bc76fe86c607L,0x6b7b9337502a9a95L,0x1948dc27d14dab63L,
|
|
0x249dd198dae047beL },
|
|
{ 0xe8356584a981a202L,0x3531dd183a893387L,0x1be11f90c85c7209L,
|
|
0x93d2fe1ee2a52b5aL } },
|
|
/* 47 << 42 */
|
|
{ { 0x8225bfe2ec6d6b97L,0x9cf6d6f4bd0aa5deL,0x911459cb54779f5fL,
|
|
0x5649cddb86aeb1f3L },
|
|
{ 0x321335793f26ce5aL,0xc289a102550f431eL,0x559dcfda73b84c6fL,
|
|
0x84973819ee3ac4d7L } },
|
|
/* 48 << 42 */
|
|
{ { 0xb51e55e6f2606a82L,0xe25f706190f2fb57L,0xacef6c2ab1a4e37cL,
|
|
0x864e359d5dcf2706L },
|
|
{ 0x479e6b187ce57316L,0x2cab25003a96b23dL,0xed4898628ef16df7L,
|
|
0x2056538cef3758b5L } },
|
|
/* 49 << 42 */
|
|
{ { 0xa7df865ef15d3101L,0x80c5533a61b553d7L,0x366e19974ed14294L,
|
|
0x6620741fb3c0bcd6L },
|
|
{ 0x21d1d9c4edc45418L,0x005b859ec1cc4a9dL,0xdf01f630a1c462f0L,
|
|
0x15d06cf3f26820c7L } },
|
|
/* 50 << 42 */
|
|
{ { 0x9f7f24ee3484be47L,0x2ff33e964a0c902fL,0x00bdf4575a0bc453L,
|
|
0x2378dfaf1aa238dbL },
|
|
{ 0x272420ec856720f2L,0x2ad9d95b96797291L,0xd1242cc6768a1558L,
|
|
0x2e287f8b5cc86aa8L } },
|
|
/* 51 << 42 */
|
|
{ { 0x796873d0990cecaaL,0xade55f81675d4080L,0x2645eea321f0cd84L,
|
|
0x7a1efa0fb4e17d02L },
|
|
{ 0xf6858420037cc061L,0x682e05f0d5d43e12L,0x59c3699427218710L,
|
|
0x85cbba4d3f7cd2fcL } },
|
|
/* 52 << 42 */
|
|
{ { 0x726f97297a3cd22aL,0x9f8cd5dc4a628397L,0x17b93ab9c23165edL,
|
|
0xff5f5dbf122823d4L },
|
|
{ 0xc1e4e4b5654a446dL,0xd1a9496f677257baL,0x6387ba94de766a56L,
|
|
0x23608bc8521ec74aL } },
|
|
/* 53 << 42 */
|
|
{ { 0x16a522d76688c4d4L,0x9d6b428207373abdL,0xa62f07acb42efaa3L,
|
|
0xf73e00f7e3b90180L },
|
|
{ 0x36175fec49421c3eL,0xc4e44f9b3dcf2678L,0x76df436b7220f09fL,
|
|
0x172755fb3aa8b6cfL } },
|
|
/* 54 << 42 */
|
|
{ { 0xbab89d57446139ccL,0x0a0a6e025fe0208fL,0xcdbb63e211e5d399L,
|
|
0x33ecaa12a8977f0bL },
|
|
{ 0x59598b21f7c42664L,0xb3e91b32ab65d08aL,0x035822eef4502526L,
|
|
0x1dcf0176720a82a9L } },
|
|
/* 55 << 42 */
|
|
{ { 0x50f8598f3d589e02L,0xdf0478ffb1d63d2cL,0x8b8068bd1571cd07L,
|
|
0x30c3aa4fd79670cdL },
|
|
{ 0x25e8fd4b941ade7fL,0x3d1debdc32790011L,0x65b6dcbd3a3f9ff0L,
|
|
0x282736a4793de69cL } },
|
|
/* 56 << 42 */
|
|
{ { 0xef69a0c3d41d3bd3L,0xb533b8c907a26bdeL,0xe2801d97db2edf9fL,
|
|
0xdc4a8269e1877af0L },
|
|
{ 0x6c1c58513d590dbeL,0x84632f6bee4e9357L,0xd36d36b779b33374L,
|
|
0xb46833e39bbca2e6L } },
|
|
/* 57 << 42 */
|
|
{ { 0x37893913f7fc0586L,0x385315f766bf4719L,0x72c56293b31855dcL,
|
|
0xd1416d4e849061feL },
|
|
{ 0xbeb3ab7851047213L,0x447f6e61f040c996L,0xd06d310d638b1d0cL,
|
|
0xe28a413fbad1522eL } },
|
|
/* 58 << 42 */
|
|
{ { 0x685a76cb82003f86L,0x610d07f70bcdbca3L,0x6ff660219ca4c455L,
|
|
0x7df39b87cea10eecL },
|
|
{ 0xb9255f96e22db218L,0x8cc6d9eb08a34c44L,0xcd4ffb86859f9276L,
|
|
0x8fa15eb250d07335L } },
|
|
/* 59 << 42 */
|
|
{ { 0xdf553845cf2c24b5L,0x89f66a9f52f9c3baL,0x8f22b5b9e4a7ceb3L,
|
|
0xaffef8090e134686L },
|
|
{ 0x3e53e1c68eb8fac2L,0x93c1e4eb28aec98eL,0xb6b91ec532a43bcbL,
|
|
0x2dbfa947b2d74a51L } },
|
|
/* 60 << 42 */
|
|
{ { 0xe065d190ca84bad7L,0xfb13919fad58e65cL,0x3c41718bf1cb6e31L,
|
|
0x688969f006d05c3fL },
|
|
{ 0xd4f94ce721264d45L,0xfdfb65e97367532bL,0x5b1be8b10945a39dL,
|
|
0x229f789c2b8baf3bL } },
|
|
/* 61 << 42 */
|
|
{ { 0xd8f41f3e6f49f15dL,0x678ce828907f0792L,0xc69ace82fca6e867L,
|
|
0x106451aed01dcc89L },
|
|
{ 0x1bb4f7f019fc32d2L,0x64633dfcb00c52d2L,0x8f13549aad9ea445L,
|
|
0x99a3bf50fb323705L } },
|
|
/* 62 << 42 */
|
|
{ { 0x0c9625a2534d4dbcL,0x45b8f1d1c2a2fea3L,0x76ec21a1a530fc1aL,
|
|
0x4bac9c2a9e5bd734L },
|
|
{ 0x5996d76a7b4e3587L,0x0045cdee1182d9e3L,0x1aee24b91207f13dL,
|
|
0x66452e9797345a41L } },
|
|
/* 63 << 42 */
|
|
{ { 0x16e5b0549f950cd0L,0x9cc72fb1d7fdd075L,0x6edd61e766249663L,
|
|
0xde4caa4df043cccbL },
|
|
{ 0x11b1f57a55c7ac17L,0x779cbd441a85e24dL,0x78030f86e46081e7L,
|
|
0xfd4a60328e20f643L } },
|
|
/* 64 << 42 */
|
|
{ { 0xcc7a64880a750c0fL,0x39bacfe34e548e83L,0x3d418c760c110f05L,
|
|
0x3e4daa4cb1f11588L },
|
|
{ 0x2733e7b55ffc69ffL,0x46f147bc92053127L,0x885b2434d722df94L,
|
|
0x6a444f65e6fc6b7cL } },
|
|
/* 0 << 49 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 49 */
|
|
{ { 0x7a1a465ac3f16ea8L,0x115a461db2f1d11cL,0x4767dd956c68a172L,
|
|
0x3392f2ebd13a4698L },
|
|
{ 0xc7a99ccde526cdc7L,0x8e537fdc22292b81L,0x76d8cf69a6d39198L,
|
|
0xffc5ff432446852dL } },
|
|
/* 2 << 49 */
|
|
{ { 0x97b14f7ea90567e6L,0x513257b7b6ae5cb7L,0x85454a3c9f10903dL,
|
|
0xd8d2c9ad69bc3724L },
|
|
{ 0x38da93246b29cb44L,0xb540a21d77c8cbacL,0x9bbfe43501918e42L,
|
|
0xfffa707a56c3614eL } },
|
|
/* 3 << 49 */
|
|
{ { 0x0ce4e3f1d4e353b7L,0x062d8a14ef46b0a0L,0x6408d5ab574b73fdL,
|
|
0xbc41d1c9d3273ffdL },
|
|
{ 0x3538e1e76be77800L,0x71fe8b37c5655031L,0x1cd916216b9b331aL,
|
|
0xad825d0bbb388f73L } },
|
|
/* 4 << 49 */
|
|
{ { 0x56c2e05b1cb76219L,0x0ec0bf9171567e7eL,0xe7076f8661c4c910L,
|
|
0xd67b085bbabc04d9L },
|
|
{ 0x9fb904595e93a96aL,0x7526c1eafbdc249aL,0x0d44d367ecdd0bb7L,
|
|
0x953999179dc0d695L } },
|
|
/* 5 << 49 */
|
|
{ { 0x61360ee99e240d18L,0x057cdcacb4b94466L,0xe7667cd12fe5325cL,
|
|
0x1fa297b521974e3bL },
|
|
{ 0xfa4081e7db083d76L,0x31993be6f206bd15L,0x8949269b14c19f8cL,
|
|
0x21468d72a9d92357L } },
|
|
/* 6 << 49 */
|
|
{ { 0x2ccbc583a4c506ecL,0x957ed188d1acfe97L,0x8baed83312f1aea2L,
|
|
0xef2a6cb48325362dL },
|
|
{ 0x130dde428e195c43L,0xc842025a0e6050c6L,0x2da972a708686a5dL,
|
|
0xb52999a1e508b4a8L } },
|
|
/* 7 << 49 */
|
|
{ { 0xd9f090b910a5a8bdL,0xca91d249096864daL,0x8e6a93be3f67dbc1L,
|
|
0xacae6fbaf5f4764cL },
|
|
{ 0x1563c6e0d21411a0L,0x28fa787fda0a4ad8L,0xd524491c908c8030L,
|
|
0x1257ba0e4c795f07L } },
|
|
/* 8 << 49 */
|
|
{ { 0x83f49167ceca9754L,0x426d2cf64b7939a0L,0x2555e355723fd0bfL,
|
|
0xa96e6d06c4f144e2L },
|
|
{ 0x4768a8dd87880e61L,0x15543815e508e4d5L,0x09d7e772b1b65e15L,
|
|
0x63439dd6ac302fa0L } },
|
|
/* 9 << 49 */
|
|
{ { 0xb93f802fc14e35c2L,0x71735b7c4341333cL,0x03a2510416d4f362L,
|
|
0x3f4d069bbf433c8eL },
|
|
{ 0x0d83ae01f78f5a7cL,0x50a8ffbe7c4eed07L,0xc74f890676e10f83L,
|
|
0x7d0809669ddaf8e1L } },
|
|
/* 10 << 49 */
|
|
{ { 0xb11df8e1698e04ccL,0x877be203169005c8L,0x32749e8c4f3c6179L,
|
|
0x2dbc9d0a7853fc05L },
|
|
{ 0x187d4f939454d937L,0xe682ce9db4800e1bL,0xa9129ad8165e68e8L,
|
|
0x0fe29735be7f785bL } },
|
|
/* 11 << 49 */
|
|
{ { 0x5303f40c5b9e02b7L,0xa37c969235ee04e8L,0x5f46cc2034d6632bL,
|
|
0x55ef72b296ac545bL },
|
|
{ 0xabec5c1f7b91b062L,0x0a79e1c7bb33e821L,0xbb04b4283a9f4117L,
|
|
0x0de1f28ffd2a475aL } },
|
|
/* 12 << 49 */
|
|
{ { 0x31019ccf3a4434b4L,0xa34581111a7954dcL,0xa9dac80de34972a7L,
|
|
0xb043d05474f6b8ddL },
|
|
{ 0x021c319e11137b1aL,0x00a754ceed5cc03fL,0x0aa2c794cbea5ad4L,
|
|
0x093e67f470c015b6L } },
|
|
/* 13 << 49 */
|
|
{ { 0x72cdfee9c97e3f6bL,0xc10bcab4b6da7461L,0x3b02d2fcb59806b9L,
|
|
0x85185e89a1de6f47L },
|
|
{ 0x39e6931f0eb6c4d4L,0x4d4440bdd4fa5b04L,0x5418786e34be7eb8L,
|
|
0x6380e5219d7259bcL } },
|
|
/* 14 << 49 */
|
|
{ { 0x20ac0351d598d710L,0x272c4166cb3a4da4L,0xdb82fe1aca71de1fL,
|
|
0x746e79f2d8f54b0fL },
|
|
{ 0x6e7fc7364b573e9bL,0x75d03f46fd4b5040L,0x5c1cc36d0b98d87bL,
|
|
0x513ba3f11f472da1L } },
|
|
/* 15 << 49 */
|
|
{ { 0x79d0af26abb177ddL,0xf82ab5687891d564L,0x2b6768a972232173L,
|
|
0xefbb3bb08c1f6619L },
|
|
{ 0xb29c11dba6d18358L,0x519e2797b0916d3aL,0xd4dc18f09188e290L,
|
|
0x648e86e398b0ca7fL } },
|
|
/* 16 << 49 */
|
|
{ { 0x859d3145983c38b5L,0xb14f176c637abc8bL,0x2793fb9dcaff7be6L,
|
|
0xebe5a55f35a66a5aL },
|
|
{ 0x7cec1dcd9f87dc59L,0x7c595cd3fbdbf560L,0x5b543b2226eb3257L,
|
|
0x69080646c4c935fdL } },
|
|
/* 17 << 49 */
|
|
{ { 0x7f2e440381e9ede3L,0x243c3894caf6df0aL,0x7c605bb11c073b11L,
|
|
0xcd06a541ba6a4a62L },
|
|
{ 0x2916894949d4e2e5L,0x33649d074af66880L,0xbfc0c885e9a85035L,
|
|
0xb4e52113fc410f4bL } },
|
|
/* 18 << 49 */
|
|
{ { 0xdca3b70678a6513bL,0x92ea4a2a9edb1943L,0x02642216db6e2dd8L,
|
|
0x9b45d0b49fd57894L },
|
|
{ 0x114e70dbc69d11aeL,0x1477dd194c57595fL,0xbc2208b4ec77c272L,
|
|
0x95c5b4d7db68f59cL } },
|
|
/* 19 << 49 */
|
|
{ { 0xb8c4fc6342e532b7L,0x386ba4229ae35290L,0xfb5dda42d201ecbcL,
|
|
0x2353dc8ba0e38fd6L },
|
|
{ 0x9a0b85ea68f7e978L,0x96ec56822ad6d11fL,0x5e279d6ce5f6886dL,
|
|
0xd3fe03cd3cb1914dL } },
|
|
/* 20 << 49 */
|
|
{ { 0xfe541fa47ea67c77L,0x952bd2afe3ea810cL,0x791fef568d01d374L,
|
|
0xa3a1c6210f11336eL },
|
|
{ 0x5ad0d5a9c7ec6d79L,0xff7038af3225c342L,0x003c6689bc69601bL,
|
|
0x25059bc745e8747dL } },
|
|
/* 21 << 49 */
|
|
{ { 0xfa4965b2f2086fbfL,0xf6840ea686916078L,0xd7ac762070081d6cL,
|
|
0xe600da31b5328645L },
|
|
{ 0x01916f63529b8a80L,0xe80e48582d7d6f3eL,0x29eb0fe8d664ca7cL,
|
|
0xf017637be7b43b0cL } },
|
|
/* 22 << 49 */
|
|
{ { 0x9a75c80676cb2566L,0x8f76acb1b24892d9L,0x7ae7b9cc1f08fe45L,
|
|
0x19ef73296a4907d8L },
|
|
{ 0x2db4ab715f228bf0L,0xf3cdea39817032d7L,0x0b1f482edcabe3c0L,
|
|
0x3baf76b4bb86325cL } },
|
|
/* 23 << 49 */
|
|
{ { 0xd49065e010089465L,0x3bab5d298e77c596L,0x7636c3a6193dbd95L,
|
|
0xdef5d294b246e499L },
|
|
{ 0xb22c58b9286b2475L,0xa0b93939cd80862bL,0x3002c83af0992388L,
|
|
0x6de01f9beacbe14cL } },
|
|
/* 24 << 49 */
|
|
{ { 0x6aac688eadd70482L,0x708de92a7b4a4e8aL,0x75b6dd73758a6eefL,
|
|
0xea4bf352725b3c43L },
|
|
{ 0x10041f2c87912868L,0xb1b1be95ef09297aL,0x19ae23c5a9f3860aL,
|
|
0xc4f0f839515dcf4bL } },
|
|
/* 25 << 49 */
|
|
{ { 0x3c7ecca397f6306aL,0x744c44ae68a3a4b0L,0x69cd13a0b3a1d8a2L,
|
|
0x7cad0a1e5256b578L },
|
|
{ 0xea653fcd33791d9eL,0x9cc2a05d74b2e05fL,0x73b391dcfd7affa2L,
|
|
0xddb7091eb6b05442L } },
|
|
/* 26 << 49 */
|
|
{ { 0xc71e27bf8538a5c6L,0x195c63dd89abff17L,0xfd3152851b71e3daL,
|
|
0x9cbdfda7fa680fa0L },
|
|
{ 0x9db876ca849d7eabL,0xebe2764b3c273271L,0x663357e3f208dceaL,
|
|
0x8c5bd833565b1b70L } },
|
|
/* 27 << 49 */
|
|
{ { 0xccc3b4f59837fc0dL,0x9b641ba8a79cf00fL,0x7428243ddfdf3990L,
|
|
0x83a594c4020786b1L },
|
|
{ 0xb712451a526c4502L,0x9d39438e6adb3f93L,0xfdb261e3e9ff0ccdL,
|
|
0x80344e3ce07af4c3L } },
|
|
/* 28 << 49 */
|
|
{ { 0x75900d7c2fa4f126L,0x08a3b8655c99a232L,0x2478b6bfdb25e0c3L,
|
|
0x482cc2c271db2edfL },
|
|
{ 0x37df7e645f321bb8L,0x8a93821b9a8005b4L,0x3fa2f10ccc8c1958L,
|
|
0x0d3322182c269d0aL } },
|
|
/* 29 << 49 */
|
|
{ { 0x20ab8119e246b0e6L,0xb39781e4d349fd17L,0xd293231eb31aa100L,
|
|
0x4b779c97bb032168L },
|
|
{ 0x4b3f19e1c8470500L,0x45b7efe90c4c869dL,0xdb84f38aa1a6bbccL,
|
|
0x3b59cb15b2fddbc1L } },
|
|
/* 30 << 49 */
|
|
{ { 0xba5514df3fd165e8L,0x499fd6a9061f8811L,0x72cd1fe0bfef9f00L,
|
|
0x120a4bb979ad7e8aL },
|
|
{ 0xf2ffd0955f4a5ac5L,0xcfd174f195a7a2f0L,0xd42301ba9d17baf1L,
|
|
0xd2fa487a77f22089L } },
|
|
/* 31 << 49 */
|
|
{ { 0x9cb09efeb1dc77e1L,0xe956693921c99682L,0x8c5469016c6067bbL,
|
|
0xfd37857461c24456L },
|
|
{ 0x2b6a6cbe81796b33L,0x62d550f658e87f8bL,0x1b763e1c7f1b01b4L,
|
|
0x4b93cfea1b1b5e12L } },
|
|
/* 32 << 49 */
|
|
{ { 0xb93452381d531696L,0x57201c0088cdde69L,0xdde922519a86afc7L,
|
|
0xe3043895bd35cea8L },
|
|
{ 0x7608c1e18555970dL,0x8267dfa92535935eL,0xd4c60a57322ea38bL,
|
|
0xe0bf7977804ef8b5L } },
|
|
/* 33 << 49 */
|
|
{ { 0x1a0dab28c06fece4L,0xd405991e94e7b49dL,0xc542b6d2706dab28L,
|
|
0xcb228da3a91618fbL },
|
|
{ 0x224e4164107d1ceaL,0xeb9fdab3d0f5d8f1L,0xc02ba3860d6e41cdL,
|
|
0x676a72c59b1f7146L } },
|
|
/* 34 << 49 */
|
|
{ { 0xffd6dd984d6cb00bL,0xcef9c5cade2e8d7cL,0xa1bbf5d7641c7936L,
|
|
0x1b95b230ee8f772eL },
|
|
{ 0xf765a92ee8ac25b1L,0xceb04cfc3a18b7c6L,0x27944cef0acc8966L,
|
|
0xcbb3c957434c1004L } },
|
|
/* 35 << 49 */
|
|
{ { 0x9c9971a1a43ff93cL,0x5bc2db17a1e358a9L,0x45b4862ea8d9bc82L,
|
|
0x70ebfbfb2201e052L },
|
|
{ 0xafdf64c792871591L,0xea5bcae6b42d0219L,0xde536c552ad8f03cL,
|
|
0xcd6c3f4da76aa33cL } },
|
|
/* 36 << 49 */
|
|
{ { 0xbeb5f6230bca6de3L,0xdd20dd99b1e706fdL,0x90b3ff9dac9059d4L,
|
|
0x2d7b29027ccccc4eL },
|
|
{ 0x8a090a59ce98840fL,0xa5d947e08410680aL,0x49ae346a923379a5L,
|
|
0x7dbc84f9b28a3156L } },
|
|
/* 37 << 49 */
|
|
{ { 0xfd40d91654a1aff2L,0xabf318ba3a78fb9bL,0x50152ed83029f95eL,
|
|
0x9fc1dd77c58ad7faL },
|
|
{ 0x5fa5791513595c17L,0xb95046688f62b3a9L,0x907b5b24ff3055b0L,
|
|
0x2e995e359a84f125L } },
|
|
/* 38 << 49 */
|
|
{ { 0x87dacf697e9bbcfbL,0x95d0c1d6e86d96e3L,0x65726e3c2d95a75cL,
|
|
0x2c3c9001acd27f21L },
|
|
{ 0x1deab5616c973f57L,0x108b7e2ca5221643L,0x5fee9859c4ef79d4L,
|
|
0xbd62b88a40d4b8c6L } },
|
|
/* 39 << 49 */
|
|
{ { 0xb4dd29c4197c75d6L,0x266a6df2b7076febL,0x9512d0ea4bf2df11L,
|
|
0x1320c24f6b0cc9ecL },
|
|
{ 0x6bb1e0e101a59596L,0x8317c5bbeff9aaacL,0x65bb405e385aa6c9L,
|
|
0x613439c18f07988fL } },
|
|
/* 40 << 49 */
|
|
{ { 0xd730049f16a66e91L,0xe97f2820fa1b0e0dL,0x4131e003304c28eaL,
|
|
0x820ab732526bac62L },
|
|
{ 0xb2ac9ef928714423L,0x54ecfffaadb10cb2L,0x8781476ef886a4ccL,
|
|
0x4b2c87b5db2f8d49L } },
|
|
/* 41 << 49 */
|
|
{ { 0xe857cd200a44295dL,0x707d7d2158c6b044L,0xae8521f9f596757cL,
|
|
0x87448f0367b2b714L },
|
|
{ 0x13a9bc455ebcd58dL,0x79bcced99122d3c1L,0x3c6442479e076642L,
|
|
0x0cf227782df4767dL } },
|
|
/* 42 << 49 */
|
|
{ { 0x5e61aee471d444b6L,0x211236bfc5084a1dL,0x7e15bc9a4fd3eaf6L,
|
|
0x68df2c34ab622bf5L },
|
|
{ 0x9e674f0f59bf4f36L,0xf883669bd7f34d73L,0xc48ac1b831497b1dL,
|
|
0x323b925d5106703bL } },
|
|
/* 43 << 49 */
|
|
{ { 0x22156f4274082008L,0xeffc521ac8482bcbL,0x5c6831bf12173479L,
|
|
0xcaa2528fc4739490L },
|
|
{ 0x84d2102a8f1b3c4dL,0xcf64dfc12d9bec0dL,0x433febad78a546efL,
|
|
0x1f621ec37b73cef1L } },
|
|
/* 44 << 49 */
|
|
{ { 0x6aecd62737338615L,0x162082ab01d8edf6L,0x833a811919e86b66L,
|
|
0x6023a251d299b5dbL },
|
|
{ 0xf5bb0c3abbf04b89L,0x6735eb69ae749a44L,0xd0e058c54713de3bL,
|
|
0xfdf2593e2c3d4ccdL } },
|
|
/* 45 << 49 */
|
|
{ { 0x1b8f414efdd23667L,0xdd52aacafa2015eeL,0x3e31b517bd9625ffL,
|
|
0x5ec9322d8db5918cL },
|
|
{ 0xbc73ac85a96f5294L,0x82aa5bf361a0666aL,0x49755810bf08ac42L,
|
|
0xd21cdfd5891cedfcL } },
|
|
/* 46 << 49 */
|
|
{ { 0x918cb57b67f8be10L,0x365d1a7c56ffa726L,0x2435c5046532de93L,
|
|
0xc0fc5e102674cd02L },
|
|
{ 0x6e51fcf89cbbb142L,0x1d436e5aafc50692L,0x766bffff3fbcae22L,
|
|
0x3148c2fdfd55d3b8L } },
|
|
/* 47 << 49 */
|
|
{ { 0x52c7fdc9233222faL,0x89ff1092e419fb6bL,0x3cd6db9925254977L,
|
|
0x2e85a1611cf12ca7L },
|
|
{ 0xadd2547cdc810bc9L,0xea3f458f9d257c22L,0x642c1fbe27d6b19bL,
|
|
0xed07e6b5140481a6L } },
|
|
/* 48 << 49 */
|
|
{ { 0x6ada1d4286d2e0f8L,0xe59201220e8a9fd5L,0x02c936af708c1b49L,
|
|
0x60f30fee2b4bfaffL },
|
|
{ 0x6637ad06858e6a61L,0xce4c77673fd374d0L,0x39d54b2d7188defbL,
|
|
0xa8c9d250f56a6b66L } },
|
|
/* 49 << 49 */
|
|
{ { 0x58fc0f5eb24fe1dcL,0x9eaf9dee6b73f24cL,0xa90d588b33650705L,
|
|
0xde5b62c5af2ec729L },
|
|
{ 0x5c72cfaed3c2b36eL,0x868c19d5034435daL,0x88605f93e17ee145L,
|
|
0xaa60c4ee77a5d5b1L } },
|
|
/* 50 << 49 */
|
|
{ { 0xbcf5bfd23b60c472L,0xaf4ef13ceb1d3049L,0x373f44fce13895c9L,
|
|
0xf29b382f0cbc9822L },
|
|
{ 0x1bfcb85373efaef6L,0xcf56ac9ca8c96f40L,0xd7adf1097a191e24L,
|
|
0x98035f44bf8a8dc2L } },
|
|
/* 51 << 49 */
|
|
{ { 0xf40a71b91e750c84L,0xc57f7b0c5dc6c469L,0x49a0e79c6fbc19c1L,
|
|
0x6b0f5889a48ebdb8L },
|
|
{ 0x5d3fd084a07c4e9fL,0xc3830111ab27de14L,0x0e4929fe33e08dccL,
|
|
0xf4a5ad2440bb73a3L } },
|
|
/* 52 << 49 */
|
|
{ { 0xde86c2bf490f97caL,0x288f09c667a1ce18L,0x364bb8861844478dL,
|
|
0x7840fa42ceedb040L },
|
|
{ 0x1269fdd25a631b37L,0x94761f1ea47c8b7dL,0xfc0c2e17481c6266L,
|
|
0x85e16ea23daa5fa7L } },
|
|
/* 53 << 49 */
|
|
{ { 0xccd8603392491048L,0x0c2f6963f4d402d7L,0x6336f7dfdf6a865cL,
|
|
0x0a2a463cb5c02a87L },
|
|
{ 0xb0e29be7bf2f12eeL,0xf0a2200266bad988L,0x27f87e039123c1d7L,
|
|
0x21669c55328a8c98L } },
|
|
/* 54 << 49 */
|
|
{ { 0x186b980392f14529L,0xd3d056cc63954df3L,0x2f03fd58175a46f6L,
|
|
0x63e34ebe11558558L },
|
|
{ 0xe13fedee5b80cfa5L,0xe872a120d401dbd1L,0x52657616e8a9d667L,
|
|
0xbc8da4b6e08d6693L } },
|
|
/* 55 << 49 */
|
|
{ { 0x370fb9bb1b703e75L,0x6773b186d4338363L,0x18dad378ecef7bffL,
|
|
0xaac787ed995677daL },
|
|
{ 0x4801ea8b0437164bL,0xf430ad2073fe795eL,0xb164154d8ee5eb73L,
|
|
0x0884ecd8108f7c0eL } },
|
|
/* 56 << 49 */
|
|
{ { 0x0e6ec0965f520698L,0x640631fe44f7b8d9L,0x92fd34fca35a68b9L,
|
|
0x9c5a4b664d40cf4eL },
|
|
{ 0x949454bf80b6783dL,0x80e701fe3a320a10L,0x8d1a564a1a0a39b2L,
|
|
0x1436d53d320587dbL } },
|
|
/* 57 << 49 */
|
|
{ { 0xf5096e6d6556c362L,0xbc23a3c0e2455d7eL,0x3a7aee54807230f9L,
|
|
0x9ba1cfa622ae82fdL },
|
|
{ 0x833a057a99c5d706L,0x8be85f4b842315c9L,0xd083179a66a72f12L,
|
|
0x2fc77d5dcdcc73cdL } },
|
|
/* 58 << 49 */
|
|
{ { 0x22b88a805616ee30L,0xfb09548fe7ab1083L,0x8ad6ab0d511270cdL,
|
|
0x61f6c57a6924d9abL },
|
|
{ 0xa0f7bf7290aecb08L,0x849f87c90df784a4L,0x27c79c15cfaf1d03L,
|
|
0xbbf9f675c463faceL } },
|
|
/* 59 << 49 */
|
|
{ { 0x91502c65765ba543L,0x18ce3cac42ea60ddL,0xe5cee6ac6e43ecb3L,
|
|
0x63e4e91068f2aeebL },
|
|
{ 0x26234fa3c85932eeL,0x96883e8b4c90c44dL,0x29b9e738a18a50f6L,
|
|
0xbfc62b2a3f0420dfL } },
|
|
/* 60 << 49 */
|
|
{ { 0xd22a7d906d3e1fa9L,0x17115618fe05b8a3L,0x2a0c9926bb2b9c01L,
|
|
0xc739fcc6e07e76a2L },
|
|
{ 0x540e9157165e439aL,0x06353a626a9063d8L,0x84d9559461e927a3L,
|
|
0x013b9b26e2e0be7fL } },
|
|
/* 61 << 49 */
|
|
{ { 0x4feaec3b973497f1L,0x15c0f94e093ebc2dL,0x6af5f22733af0583L,
|
|
0x0c2af206c61f3340L },
|
|
{ 0xd25dbdf14457397cL,0x2e8ed017cabcbae0L,0xe3010938c2815306L,
|
|
0xbaa99337e8c6cd68L } },
|
|
/* 62 << 49 */
|
|
{ { 0x085131823b0ec7deL,0x1e1b822b58df05dfL,0x5c14842fa5c3b683L,
|
|
0x98fe977e3eba34ceL },
|
|
{ 0xfd2316c20d5e8873L,0xe48d839abd0d427dL,0x495b2218623fc961L,
|
|
0x24ee56e7b46fba5eL } },
|
|
/* 63 << 49 */
|
|
{ { 0x9184a55b91e4de58L,0xa7488ca5dfdea288L,0xa723862ea8dcc943L,
|
|
0x92d762b2849dc0fcL },
|
|
{ 0x3c444a12091ff4a9L,0x581113fa0cada274L,0xb9de0a4530d8eae2L,
|
|
0x5e0fcd85df6b41eaL } },
|
|
/* 64 << 49 */
|
|
{ { 0x6233ea68c094dbb5L,0xb77d062ed968d410L,0x3e719bbc58b3002dL,
|
|
0x68e7dd3d3dc49d58L },
|
|
{ 0x8d825740013a5e58L,0x213117473c9e3c1bL,0x0cb0a2a77c99b6abL,
|
|
0x5c48a3b3c2f888f2L } },
|
|
/* 0 << 56 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 56 */
|
|
{ { 0xc7913e91991724f3L,0x5eda799c39cbd686L,0xddb595c763d4fc1eL,
|
|
0x6b63b80bac4fed54L },
|
|
{ 0x6ea0fc697e5fb516L,0x737708bad0f1c964L,0x9628745f11a92ca5L,
|
|
0x61f379589a86967aL } },
|
|
/* 2 << 56 */
|
|
{ { 0x9af39b2caa665072L,0x78322fa4efd324efL,0x3d153394c327bd31L,
|
|
0x81d5f2713129dab0L },
|
|
{ 0xc72e0c42f48027f5L,0xaa40cdbc8536e717L,0xf45a657a2d369d0fL,
|
|
0xb03bbfc4ea7f74e6L } },
|
|
/* 3 << 56 */
|
|
{ { 0x46a8c4180d738dedL,0x6f1a5bb0e0de5729L,0xf10230b98ba81675L,
|
|
0x32c6f30c112b33d4L },
|
|
{ 0x7559129dd8fffb62L,0x6a281b47b459bf05L,0x77c1bd3afa3b6776L,
|
|
0x0709b3807829973aL } },
|
|
/* 4 << 56 */
|
|
{ { 0x8c26b232a3326505L,0x38d69272ee1d41bfL,0x0459453effe32afaL,
|
|
0xce8143ad7cb3ea87L },
|
|
{ 0x932ec1fa7e6ab666L,0x6cd2d23022286264L,0x459a46fe6736f8edL,
|
|
0x50bf0d009eca85bbL } },
|
|
/* 5 << 56 */
|
|
{ { 0x0b825852877a21ecL,0x300414a70f537a94L,0x3f1cba4021a9a6a2L,
|
|
0x50824eee76943c00L },
|
|
{ 0xa0dbfcecf83cba5dL,0xf953814893b4f3c0L,0x6174416248f24dd7L,
|
|
0x5322d64de4fb09ddL } },
|
|
/* 6 << 56 */
|
|
{ { 0x574473843d9325f3L,0xa9bef2d0f371cb84L,0x77d2188ba61e36c5L,
|
|
0xbbd6a7d7c602df72L },
|
|
{ 0xba3aa9028f61bc0bL,0xf49085ed6ed0b6a1L,0x8bc625d6ae6e8298L,
|
|
0x832b0b1da2e9c01dL } },
|
|
/* 7 << 56 */
|
|
{ { 0xa337c447f1f0ced1L,0x800cc7939492dd2bL,0x4b93151dbea08efaL,
|
|
0x820cf3f8de0a741eL },
|
|
{ 0xff1982dc1c0f7d13L,0xef92196084dde6caL,0x1ad7d97245f96ee3L,
|
|
0x319c8dbe29dea0c7L } },
|
|
/* 8 << 56 */
|
|
{ { 0xd3ea38717b82b99bL,0x75922d4d470eb624L,0x8f66ec543b95d466L,
|
|
0x66e673ccbee1e346L },
|
|
{ 0x6afe67c4b5f2b89aL,0x3de9c1e6290e5cd3L,0x8c278bb6310a2adaL,
|
|
0x420fa3840bdb323bL } },
|
|
/* 9 << 56 */
|
|
{ { 0x0ae1d63b0eb919b0L,0xd74ee51da74b9620L,0x395458d0a674290cL,
|
|
0x324c930f4620a510L },
|
|
{ 0x2d1f4d19fbac27d4L,0x4086e8ca9bedeeacL,0x0cdd211b9b679ab8L,
|
|
0x5970167d7090fec4L } },
|
|
/* 10 << 56 */
|
|
{ { 0x3420f2c9faf1fc63L,0x616d333a328c8bb4L,0x7d65364c57f1fe4aL,
|
|
0x9343e87755e5c73aL },
|
|
{ 0x5795176be970e78cL,0xa36ccebf60533627L,0xfc7c738009cdfc1bL,
|
|
0xb39a2afeb3fec326L } },
|
|
/* 11 << 56 */
|
|
{ { 0xb7ff1ba16224408aL,0xcc856e92247cfc5eL,0x01f102e7c18bc493L,
|
|
0x4613ab742091c727L },
|
|
{ 0xaa25e89cc420bf2bL,0x00a5317690337ec2L,0xd2be9f437d025fc7L,
|
|
0x3316fb856e6fe3dcL } },
|
|
/* 12 << 56 */
|
|
{ { 0x27520af59ac50814L,0xfdf95e789a8e4223L,0xb7e7df2a56bec5a0L,
|
|
0xf7022f7ddf159e5dL },
|
|
{ 0x93eeeab1cac1fe8fL,0x8040188c37451168L,0x7ee8aa8ad967dce6L,
|
|
0xfa0e79e73abc9299L } },
|
|
/* 13 << 56 */
|
|
{ { 0x67332cfc2064cfd1L,0x339c31deb0651934L,0x719b28d52a3bcbeaL,
|
|
0xee74c82b9d6ae5c6L },
|
|
{ 0x0927d05ebaf28ee6L,0x82cecf2c9d719028L,0x0b0d353eddb30289L,
|
|
0xfe4bb977fddb2e29L } },
|
|
/* 14 << 56 */
|
|
{ { 0xbb5bb990640bfd9eL,0xd226e27782f62108L,0x4bf0098502ffdd56L,
|
|
0x7756758a2ca1b1b5L },
|
|
{ 0xc32b62a35285fe91L,0xedbc546a8c9cd140L,0x1e47a013af5cb008L,
|
|
0xbca7e720073ce8f2L } },
|
|
/* 15 << 56 */
|
|
{ { 0xe10b2ab817a91caeL,0xb89aab6508e27f63L,0x7b3074a7dba3ddf9L,
|
|
0x1c20ce09330c2972L },
|
|
{ 0x6b9917b45fcf7e33L,0xe6793743945ceb42L,0x18fc22155c633d19L,
|
|
0xad1adb3cc7485474L } },
|
|
/* 16 << 56 */
|
|
{ { 0x646f96796424c49bL,0xf888dfe867c241c9L,0xe12d4b9324f68b49L,
|
|
0x9a6b62d8a571df20L },
|
|
{ 0x81b4b26d179483cbL,0x666f96329511fae2L,0xd281b3e4d53aa51fL,
|
|
0x7f96a7657f3dbd16L } },
|
|
/* 17 << 56 */
|
|
{ { 0xa7f8b5bf074a30ceL,0xd7f52107005a32e6L,0x6f9e090750237ed4L,
|
|
0x2f21da478096fa2bL },
|
|
{ 0xf3e19cb4eec863a0L,0xd18f77fd9527620aL,0x9505c81c407c1cf8L,
|
|
0x9998db4e1b6ec284L } },
|
|
/* 18 << 56 */
|
|
{ { 0x7e3389e5c247d44dL,0x125071413f4f3d80L,0xd4ba01104a78a6c7L,
|
|
0x312874a0767720beL },
|
|
{ 0xded059a675944370L,0xd6123d903b2c0bddL,0xa56b717b51c108e3L,
|
|
0x9bb7940e070623e9L } },
|
|
/* 19 << 56 */
|
|
{ { 0x794e2d5984ac066cL,0xf5954a92e68c69a0L,0x28c524584fd99dccL,
|
|
0x60e639fcb1012517L },
|
|
{ 0xc2e601257de79248L,0xe9ef6404f12fc6d7L,0x4c4f28082a3b5d32L,
|
|
0x865ad32ec768eb8aL } },
|
|
/* 20 << 56 */
|
|
{ { 0xac02331b13fb70b6L,0x037b44c195599b27L,0x1a860fc460bd082cL,
|
|
0xa2e25745c980cd01L },
|
|
{ 0xee3387a81da0263eL,0x931bfb952d10f3d6L,0x5b687270a1f24a32L,
|
|
0xf140e65dca494b86L } },
|
|
/* 21 << 56 */
|
|
{ { 0x4f4ddf91b2f1ac7aL,0xf99eaabb760fee27L,0x57f4008a49c228e5L,
|
|
0x090be4401cf713bbL },
|
|
{ 0xac91fbe45004f022L,0xd838c2c2569e1af6L,0xd6c7d20b0f1daaa5L,
|
|
0xaa063ac11bbb02c0L } },
|
|
/* 22 << 56 */
|
|
{ { 0x0938a42259558a78L,0x5343c6698435da2fL,0x96f67b18034410dcL,
|
|
0x7cc1e42484510804L },
|
|
{ 0x86a1543f16dfbb7dL,0x921fa9425b5bd592L,0x9dcccb6eb33dd03cL,
|
|
0x8581ddd9b843f51eL } },
|
|
/* 23 << 56 */
|
|
{ { 0x54935fcb81d73c9eL,0x6d07e9790a5e97abL,0x4dc7b30acf3a6babL,
|
|
0x147ab1f3170bee11L },
|
|
{ 0x0aaf8e3d9fafdee4L,0xfab3dbcb538a8b95L,0x405df4b36ef13871L,
|
|
0xf1f4e9cb088d5a49L } },
|
|
/* 24 << 56 */
|
|
{ { 0x9bcd24d366b33f1dL,0x3b97b8205ce445c0L,0xe2926549ba93ff61L,
|
|
0xd9c341ce4dafe616L },
|
|
{ 0xfb30a76e16efb6f3L,0xdf24b8ca605b953cL,0x8bd52afec2fffb9fL,
|
|
0xbbac5ff7e19d0b96L } },
|
|
/* 25 << 56 */
|
|
{ { 0x43c01b87459afccdL,0x6bd45143b7432652L,0x8473453055b5d78eL,
|
|
0x81088fdb1554ba7dL },
|
|
{ 0xada0a52c1e269375L,0xf9f037c42dc5ec10L,0xc066060794bfbc11L,
|
|
0xc0a630bbc9c40d2fL } },
|
|
/* 26 << 56 */
|
|
{ { 0x5efc797eab64c31eL,0xffdb1dab74507144L,0xf61242871ca6790cL,
|
|
0xe9609d81e69bf1bfL },
|
|
{ 0xdb89859500d24fc9L,0x9c750333e51fb417L,0x51830a91fef7bbdeL,
|
|
0x0ce67dc8945f585cL } },
|
|
/* 27 << 56 */
|
|
{ { 0x9a730ed44763eb50L,0x24a0e221c1ab0d66L,0x643b6393648748f3L,
|
|
0x1982daa16d3c6291L },
|
|
{ 0x6f00a9f78bbc5549L,0x7a1783e17f36384eL,0xe8346323de977f50L,
|
|
0x91ab688db245502aL } },
|
|
/* 28 << 56 */
|
|
{ { 0x331ab6b56d0bdd66L,0x0a6ef32e64b71229L,0x1028150efe7c352fL,
|
|
0x27e04350ce7b39d3L },
|
|
{ 0x2a3c8acdc1070c82L,0xfb2034d380c9feefL,0x2d729621709f3729L,
|
|
0x8df290bf62cb4549L } },
|
|
/* 29 << 56 */
|
|
{ { 0x02f99f33fc2e4326L,0x3b30076d5eddf032L,0xbb21f8cf0c652fb5L,
|
|
0x314fb49eed91cf7bL },
|
|
{ 0xa013eca52f700750L,0x2b9e3c23712a4575L,0xe5355557af30fbb0L,
|
|
0x1ada35167c77e771L } },
|
|
/* 30 << 56 */
|
|
{ { 0x45f6ecb27b135670L,0xe85d19df7cfc202eL,0x0f1b50c758d1be9fL,
|
|
0x5ebf2c0aead2e344L },
|
|
{ 0x1531fe4eabc199c9L,0xc703259256bab0aeL,0x16ab2e486c1fec54L,
|
|
0x0f87fda804280188L } },
|
|
/* 31 << 56 */
|
|
{ { 0xdc9f46fc609e4a74L,0x2a44a143ba667f91L,0xbc3d8b95b4d83436L,
|
|
0xa01e4bd0c7bd2958L },
|
|
{ 0x7b18293273483c90L,0xa79c6aa1a7c7b598L,0xbf3983c6eaaac07eL,
|
|
0x8f18181e96e0d4e6L } },
|
|
/* 32 << 56 */
|
|
{ { 0x8553d37c051af62bL,0xe9a998eb0bf94496L,0xe0844f9fb0d59aa1L,
|
|
0x983fd558e6afb813L },
|
|
{ 0x9670c0ca65d69804L,0x732b22de6ea5ff2dL,0xd7640ba95fd8623bL,
|
|
0x9f619163a6351782L } },
|
|
/* 33 << 56 */
|
|
{ { 0x0bfc27eeacee5043L,0xae419e732eb10f02L,0x19c028d18943fb05L,
|
|
0x71f01cf7ff13aa2aL },
|
|
{ 0x7790737e8887a132L,0x6751330966318410L,0x9819e8a37ddb795eL,
|
|
0xfecb8ef5dad100b2L } },
|
|
/* 34 << 56 */
|
|
{ { 0x59f74a223021926aL,0xb7c28a496f9b4c1cL,0xed1a733f912ad0abL,
|
|
0x42a910af01a5659cL },
|
|
{ 0x3842c6e07bd68cabL,0x2b57fa3876d70ac8L,0x8a6707a83c53aaebL,
|
|
0x62c1c51065b4db18L } },
|
|
/* 35 << 56 */
|
|
{ { 0x8de2c1fbb2d09dc7L,0xc3dfed12266bd23bL,0x927d039bd5b27db6L,
|
|
0x2fb2f0f1103243daL },
|
|
{ 0xf855a07b80be7399L,0xed9327ce1f9f27a8L,0xa0bd99c7729bdef7L,
|
|
0x2b67125e28250d88L } },
|
|
/* 36 << 56 */
|
|
{ { 0x784b26e88670ced7L,0xe3dfe41fc31bd3b4L,0x9e353a06bcc85cbcL,
|
|
0x302e290960178a9dL },
|
|
{ 0x860abf11a6eac16eL,0x76447000aa2b3aacL,0x46ff9d19850afdabL,
|
|
0x35bdd6a5fdb2d4c1L } },
|
|
/* 37 << 56 */
|
|
{ { 0xe82594b07e5c9ce9L,0x0f379e5320af346eL,0x608b31e3bc65ad4aL,
|
|
0x710c6b12267c4826L },
|
|
{ 0x51c966f971954cf1L,0xb1cec7930d0aa215L,0x1f15598986bd23a8L,
|
|
0xae2ff99cf9452e86L } },
|
|
/* 38 << 56 */
|
|
{ { 0xd8dd953c340ceaa2L,0x263552752e2e9333L,0x15d4e5f98586f06dL,
|
|
0xd6bf94a8f7cab546L },
|
|
{ 0x33c59a0ab76a9af0L,0x52740ab3ba095af7L,0xc444de8a24389ca0L,
|
|
0xcc6f9863706da0cbL } },
|
|
/* 39 << 56 */
|
|
{ { 0xb5a741a76b2515cfL,0x71c416019585c749L,0x78350d4fe683de97L,
|
|
0x31d6152463d0b5f5L },
|
|
{ 0x7a0cc5e1fbce090bL,0xaac927edfbcb2a5bL,0xe920de4920d84c35L,
|
|
0x8c06a0b622b4de26L } },
|
|
/* 40 << 56 */
|
|
{ { 0xd34dd58bafe7ddf3L,0x55851fedc1e6e55bL,0xd1395616960696e7L,
|
|
0x940304b25f22705fL },
|
|
{ 0x6f43f861b0a2a860L,0xcf1212820e7cc981L,0x121862120ab64a96L,
|
|
0x09215b9ab789383cL } },
|
|
/* 41 << 56 */
|
|
{ { 0x311eb30537387c09L,0xc5832fcef03ee760L,0x30358f5832f7ea19L,
|
|
0xe01d3c3491d53551L },
|
|
{ 0x1ca5ee41da48ea80L,0x34e71e8ecf4fa4c1L,0x312abd257af1e1c7L,
|
|
0xe3afcdeb2153f4a5L } },
|
|
/* 42 << 56 */
|
|
{ { 0x9d5c84d700235e9aL,0x0308d3f48c4c836fL,0xc0a66b0489332de5L,
|
|
0x610dd39989e566efL },
|
|
{ 0xf8eea460d1ac1635L,0x84cbb3fb20a2c0dfL,0x40afb488e74a48c5L,
|
|
0x29738198d326b150L } },
|
|
/* 43 << 56 */
|
|
{ { 0x2a17747fa6d74081L,0x60ea4c0555a26214L,0x53514bb41f88c5feL,
|
|
0xedd645677e83426cL },
|
|
{ 0xd5d6cbec96460b25L,0xa12fd0ce68dc115eL,0xc5bc3ed2697840eaL,
|
|
0x969876a8a6331e31L } },
|
|
/* 44 << 56 */
|
|
{ { 0x60c36217472ff580L,0xf42297054ad41393L,0x4bd99ef0a03b8b92L,
|
|
0x501c7317c144f4f6L },
|
|
{ 0x159009b318464945L,0x6d5e594c74c5c6beL,0x2d587011321a3660L,
|
|
0xd1e184b13898d022L } },
|
|
/* 45 << 56 */
|
|
{ { 0x5ba047524c6a7e04L,0x47fa1e2b45550b65L,0x9419daf048c0a9a5L,
|
|
0x663629537c243236L },
|
|
{ 0xcd0744b15cb12a88L,0x561b6f9a2b646188L,0x599415a566c2c0c0L,
|
|
0xbe3f08590f83f09aL } },
|
|
/* 46 << 56 */
|
|
{ { 0x9141c5beb92041b8L,0x01ae38c726477d0dL,0xca8b71f3d12c7a94L,
|
|
0xfab5b31f765c70dbL },
|
|
{ 0x76ae7492487443e9L,0x8595a310990d1349L,0xf8dbeda87d460a37L,
|
|
0x7f7ad0821e45a38fL } },
|
|
/* 47 << 56 */
|
|
{ { 0xed1d4db61059705aL,0xa3dd492ae6b9c697L,0x4b92ee3a6eb38bd5L,
|
|
0xbab2609d67cc0bb7L },
|
|
{ 0x7fc4fe896e70ee82L,0xeff2c56e13e6b7e3L,0x9b18959e34d26fcaL,
|
|
0x2517ab66889d6b45L } },
|
|
/* 48 << 56 */
|
|
{ { 0xf167b4e0bdefdd4fL,0x69958465f366e401L,0x5aa368aba73bbec0L,
|
|
0x121487097b240c21L },
|
|
{ 0x378c323318969006L,0xcb4d73cee1fe53d1L,0x5f50a80e130c4361L,
|
|
0xd67f59517ef5212bL } },
|
|
/* 49 << 56 */
|
|
{ { 0xf145e21e9e70c72eL,0xb2e52e295566d2fbL,0x44eaba4a032397f5L,
|
|
0x5e56937b7e31a7deL },
|
|
{ 0x68dcf517456c61e1L,0xbc2e954aa8b0a388L,0xe3552fa760a8b755L,
|
|
0x03442dae73ad0cdeL } },
|
|
/* 50 << 56 */
|
|
{ { 0x37ffe747ceb26210L,0x983545e8787baef9L,0x8b8c853586a3de31L,
|
|
0xc621dbcbfacd46dbL },
|
|
{ 0x82e442e959266fbbL,0xa3514c37339d471cL,0x3a11b77162cdad96L,
|
|
0xf0cb3b3cecf9bdf0L } },
|
|
/* 51 << 56 */
|
|
{ { 0x3fcbdbce478e2135L,0x7547b5cfbda35342L,0xa97e81f18a677af6L,
|
|
0xc8c2bf8328817987L },
|
|
{ 0xdf07eaaf45580985L,0xc68d1f05c93b45cbL,0x106aa2fec77b4cacL,
|
|
0x4c1d8afc04a7ae86L } },
|
|
/* 52 << 56 */
|
|
{ { 0xdb41c3fd9eb45ab2L,0x5b234b5bd4b22e74L,0xda253decf215958aL,
|
|
0x67e0606ea04edfa0L },
|
|
{ 0xabbbf070ef751b11L,0xf352f175f6f06dceL,0xdfc4b6af6839f6b4L,
|
|
0x53ddf9a89959848eL } },
|
|
/* 53 << 56 */
|
|
{ { 0xda49c379c21520b0L,0x90864ff0dbd5d1b6L,0x2f055d235f49c7f7L,
|
|
0xe51e4e6aa796b2d8L },
|
|
{ 0xc361a67f5c9dc340L,0x5ad53c37bca7c620L,0xda1d658832c756d0L,
|
|
0xad60d9118bb67e13L } },
|
|
/* 54 << 56 */
|
|
{ { 0xd6c47bdf0eeec8c6L,0x4a27fec1078a1821L,0x081f7415c3099524L,
|
|
0x8effdf0b82cd8060L },
|
|
{ 0xdb70ec1c65842df8L,0x8821b358d319a901L,0x72ee56eede42b529L,
|
|
0x5bb39592236e4286L } },
|
|
/* 55 << 56 */
|
|
{ { 0xd1183316fd6f7140L,0xf9fadb5bbd8e81f7L,0x701d5e0c5a02d962L,
|
|
0xfdee4dbf1b601324L },
|
|
{ 0xbed1740735d7620eL,0x04e3c2c3f48c0012L,0x9ee29da73455449aL,
|
|
0x562cdef491a836c4L } },
|
|
/* 56 << 56 */
|
|
{ { 0x8f682a5f47701097L,0x617125d8ff88d0c2L,0x948fda2457bb86ddL,
|
|
0x348abb8f289f7286L },
|
|
{ 0xeb10eab599d94bbdL,0xd51ba28e4684d160L,0xabe0e51c30c8f41aL,
|
|
0x66588b4513254f4aL } },
|
|
/* 57 << 56 */
|
|
{ { 0x147ebf01fad097a5L,0x49883ea8610e815dL,0xe44d60ba8a11de56L,
|
|
0xa970de6e827a7a6dL },
|
|
{ 0x2be414245e17fc19L,0xd833c65701214057L,0x1375813b363e723fL,
|
|
0x6820bb88e6a52e9bL } },
|
|
/* 58 << 56 */
|
|
{ { 0x7e7f6970d875d56aL,0xd6a0a9ac51fbf6bfL,0x54ba8790a3083c12L,
|
|
0xebaeb23d6ae7eb64L },
|
|
{ 0xa8685c3ab99a907aL,0xf1e74550026bf40bL,0x7b73a027c802cd9eL,
|
|
0x9a8a927c4fef4635L } },
|
|
/* 59 << 56 */
|
|
{ { 0xe1b6f60c08191224L,0xc4126ebbde4ec091L,0xe1dff4dc4ae38d84L,
|
|
0xde3f57db4f2ef985L },
|
|
{ 0x34964337d446a1ddL,0x7bf217a0859e77f6L,0x8ff105278e1d13f5L,
|
|
0xa304ef0374eeae27L } },
|
|
/* 60 << 56 */
|
|
{ { 0xfc6f5e47d19dfa5aL,0xdb007de37fad982bL,0x28205ad1613715f5L,
|
|
0x251e67297889529eL },
|
|
{ 0x727051841ae98e78L,0xf818537d271cac32L,0xc8a15b7eb7f410f5L,
|
|
0xc474356f81f62393L } },
|
|
/* 61 << 56 */
|
|
{ { 0x92dbdc5ac242316bL,0xabe060acdbf4aff5L,0x6e8c38fe909a8ec6L,
|
|
0x43e514e56116cb94L },
|
|
{ 0x2078fa3807d784f9L,0x1161a880f4b5b357L,0x5283ce7913adea3dL,
|
|
0x0756c3e6cc6a910bL } },
|
|
/* 62 << 56 */
|
|
{ { 0x60bcfe01aaa79697L,0x04a73b2956391db1L,0xdd8dad47189b45a0L,
|
|
0xbfac0dd048d5b8d9L },
|
|
{ 0x34ab3af57d3d2ec2L,0x6fa2fc2d207bd3afL,0x9ff4009266550dedL,
|
|
0x719b3e871fd5b913L } },
|
|
/* 63 << 56 */
|
|
{ { 0xa573a4966d17fbc7L,0x0cd1a70a73d2b24eL,0x34e2c5cab2676937L,
|
|
0xe7050b06bf669f21L },
|
|
{ 0xfbe948b61ede9046L,0xa053005197662659L,0x58cbd4edf10124c5L,
|
|
0xde2646e4dd6c06c8L } },
|
|
/* 64 << 56 */
|
|
{ { 0x332f81088cad38c0L,0x471b7e906bd68ae2L,0x56ac3fb20d8e27a3L,
|
|
0xb54660db136b4b0dL },
|
|
{ 0x123a1e11a6fd8de4L,0x44dbffeaa37799efL,0x4540b977ce6ac17cL,
|
|
0x495173a8af60acefL } },
|
|
/* 0 << 63 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 63 */
|
|
{ { 0x9ebb284d391c2a82L,0xbcdd4863158308e8L,0x006f16ec83f1edcaL,
|
|
0xa13e2c37695dc6c8L },
|
|
{ 0x2ab756f04a057a87L,0xa8765500a6b48f98L,0x4252face68651c44L,
|
|
0xa52b540be1765e02L } },
|
|
/* 2 << 63 */
|
|
{ { 0x4f922fc516a0d2bbL,0x0d5cc16c1a623499L,0x9241cf3a57c62c8bL,
|
|
0x2f5e6961fd1b667fL },
|
|
{ 0x5c15c70bf5a01797L,0x3d20b44d60956192L,0x04911b37071fdb52L,
|
|
0xf648f9168d6f0f7bL } },
|
|
/* 3 << 63 */
|
|
{ { 0x6dc1acafe60b7cf7L,0x25860a5084a9d869L,0x56fc6f09e7ba8ac4L,
|
|
0x828c5bd06148d29eL },
|
|
{ 0xac6b435edc55ae5fL,0xa527f56cc0117411L,0x94d5045efd24342cL,
|
|
0x2c4c0a3570b67c0dL } },
|
|
/* 4 << 63 */
|
|
{ { 0x027cc8b8fac61d9aL,0x7d25e062e3c6fe8aL,0xe08805bfe5bff503L,
|
|
0x13271e6c6ff632f7L },
|
|
{ 0x55dca6c0232f76a5L,0x8957c32d701ef426L,0xee728bcba10a5178L,
|
|
0x5ea60411b62c5173L } },
|
|
/* 5 << 63 */
|
|
{ { 0xfc4e964ed0b8892bL,0x9ea176839301bb74L,0x6265c5aefcc48626L,
|
|
0xe60cf82ebb3e9102L },
|
|
{ 0x57adf797d4df5531L,0x235b59a18deeefe2L,0x60adcf583f306eb1L,
|
|
0x105c27533d09492dL } },
|
|
/* 6 << 63 */
|
|
{ { 0x4090914bb5def996L,0x1cb69c83233dd1e7L,0xc1e9c1d39b3d5e76L,
|
|
0x1f3338edfccf6012L },
|
|
{ 0xb1e95d0d2f5378a8L,0xacf4c2c72f00cd21L,0x6e984240eb5fe290L,
|
|
0xd66c038d248088aeL } },
|
|
/* 7 << 63 */
|
|
{ { 0x804d264af94d70cfL,0xbdb802ef7314bf7eL,0x8fb54de24333ed02L,
|
|
0x740461e0285635d9L },
|
|
{ 0x4113b2c8365e9383L,0xea762c833fdef652L,0x4eec6e2e47b956c1L,
|
|
0xa3d814be65620fa4L } },
|
|
/* 8 << 63 */
|
|
{ { 0x9ad5462bb4d8bc50L,0x181c0b16a9195770L,0xebd4fe1c78412a68L,
|
|
0xae0341bcc0dff48cL },
|
|
{ 0xb6bc45cf7003e866L,0xf11a6dea8a24a41bL,0x5407151ad04c24c2L,
|
|
0x62c9d27dda5b7b68L } },
|
|
/* 9 << 63 */
|
|
{ { 0x2e96423588cceff6L,0x8594c54f8b07ed69L,0x1578e73cc84d0d0dL,
|
|
0x7b4e1055ff532868L },
|
|
{ 0xa348c0d5b5ec995aL,0xbf4b9d5514289a54L,0x9ba155a658fbd777L,
|
|
0x186ed7a81a84491dL } },
|
|
/* 10 << 63 */
|
|
{ { 0xd4992b30614c0900L,0xda98d121bd00c24bL,0x7f534dc87ec4bfa1L,
|
|
0x4a5ff67437dc34bcL },
|
|
{ 0x68c196b81d7ea1d7L,0x38cf289380a6d208L,0xfd56cd09e3cbbd6eL,
|
|
0xec72e27e4205a5b6L } },
|
|
/* 11 << 63 */
|
|
{ { 0x15ea68f5a44f77f7L,0x7aa5f9fdb43c52bcL,0x86ff676f94f0e609L,
|
|
0xa4cde9632e2d432bL },
|
|
{ 0x8cafa0c0eee470afL,0x84137d0e8a3f5ec8L,0xebb40411faa31231L,
|
|
0xa239c13f6f7f7ccfL } },
|
|
/* 12 << 63 */
|
|
{ { 0x32865719a8afd30bL,0x867983288a826dceL,0xdf04e891c4a8fbe0L,
|
|
0xbb6b6e1bebf56ad3L },
|
|
{ 0x0a695b11471f1ff0L,0xd76c3389be15baf0L,0x018edb95be96c43eL,
|
|
0xf2beaaf490794158L } },
|
|
/* 13 << 63 */
|
|
{ { 0x152db09ec3076a27L,0x5e82908ee416545dL,0xa2c41272356d6f2eL,
|
|
0xdc9c964231fd74e1L },
|
|
{ 0x66ceb88d519bf615L,0xe29ecd7605a2274eL,0x3a0473c4bf5e2fa0L,
|
|
0x6b6eb67164284e67L } },
|
|
/* 14 << 63 */
|
|
{ { 0xe8b97932b88756ddL,0xed4e8652f17e3e61L,0xc2dd14993ee1c4a4L,
|
|
0xc0aaee17597f8c0eL },
|
|
{ 0x15c4edb96c168af3L,0x6563c7bfb39ae875L,0xadfadb6f20adb436L,
|
|
0xad55e8c99a042ac0L } },
|
|
/* 15 << 63 */
|
|
{ { 0x975a1ed8b76da1f5L,0x10dfa466a58acb94L,0x8dd7f7e3ac060282L,
|
|
0x6813e66a572a051eL },
|
|
{ 0xb4ccae1e350cb901L,0xb653d65650cb7822L,0x42484710dfab3b87L,
|
|
0xcd7ee5379b670fd0L } },
|
|
/* 16 << 63 */
|
|
{ { 0x0a50b12e523b8bf6L,0x8009eb5b8f910c1bL,0xf535af824a167588L,
|
|
0x0f835f9cfb2a2abdL },
|
|
{ 0xf59b29312afceb62L,0xc797df2a169d383fL,0xeb3f5fb066ac02b0L,
|
|
0x029d4c6fdaa2d0caL } },
|
|
/* 17 << 63 */
|
|
{ { 0xd4059bc1afab4bc5L,0x833f5c6f56783247L,0xb53466308d2d3605L,
|
|
0x83387891d34d8433L },
|
|
{ 0xd973b30fadd9419aL,0xbcca1099afe3fce8L,0x081783150809aac6L,
|
|
0x01b7f21a540f0f11L } },
|
|
/* 18 << 63 */
|
|
{ { 0x65c29219909523c8L,0xa62f648fa3a1c741L,0x88598d4f60c9e55aL,
|
|
0xbce9141b0e4f347aL },
|
|
{ 0x9af97d8435f9b988L,0x0210da62320475b6L,0x3c076e229191476cL,
|
|
0x7520dbd944fc7834L } },
|
|
/* 19 << 63 */
|
|
{ { 0x6a6b2cfec1ab1bbdL,0xef8a65bedc650938L,0x72855540805d7bc4L,
|
|
0xda389396ed11fdfdL },
|
|
{ 0xa9d5bd3674660876L,0x11d67c54b45dff35L,0x6af7d148a4f5da94L,
|
|
0xbb8d4c3fc0bbeb31L } },
|
|
/* 20 << 63 */
|
|
{ { 0x87a7ebd1e0a1b12aL,0x1e4ef88d770ba95fL,0x8c33345cdc2ae9cbL,
|
|
0xcecf127601cc8403L },
|
|
{ 0x687c012e1b39b80fL,0xfd90d0ad35c33ba4L,0xa3ef5a675c9661c2L,
|
|
0x368fc88ee017429eL } },
|
|
/* 21 << 63 */
|
|
{ { 0xd30c6761196a2fa2L,0x931b9817bd5b312eL,0xba01000c72f54a31L,
|
|
0xa203d2c866eaa541L },
|
|
{ 0xf2abdee098939db3L,0xe37d6c2c3e606c02L,0xf2921574521ff643L,
|
|
0x2781b3c4d7e2fca3L } },
|
|
/* 22 << 63 */
|
|
{ { 0x664300b07850ec06L,0xac5a38b97d3a10cfL,0x9233188de34ab39dL,
|
|
0xe77057e45072cbb9L },
|
|
{ 0xbcf0c042b59e78dfL,0x4cfc91e81d97de52L,0x4661a26c3ee0ca4aL,
|
|
0x5620a4c1fb8507bcL } },
|
|
/* 23 << 63 */
|
|
{ { 0x4b44d4aa049f842cL,0xceabc5d51540e82bL,0x306710fd15c6f156L,
|
|
0xbe5ae52b63db1d72L },
|
|
{ 0x06f1e7e6334957f1L,0x57e388f031144a70L,0xfb69bb2fdf96447bL,
|
|
0x0f78ebd373e38a12L } },
|
|
/* 24 << 63 */
|
|
{ { 0xb82226052b7ce542L,0xe6d4ce997472bde1L,0x53e16ebe09d2f4daL,
|
|
0x180ff42e53b92b2eL },
|
|
{ 0xc59bcc022c34a1c6L,0x3803d6f9422c46c2L,0x18aff74f5c14a8a2L,
|
|
0x55aebf8010a08b28L } },
|
|
/* 25 << 63 */
|
|
{ { 0x66097d587135593fL,0x32e6eff72be570cdL,0x584e6a102a8c860dL,
|
|
0xcd185890a2eb4163L },
|
|
{ 0x7ceae99d6d97e134L,0xd42c6b70dd8447ceL,0x59ddbb4ab8c50273L,
|
|
0x03c612df3cf34e1eL } },
|
|
/* 26 << 63 */
|
|
{ { 0x84b9ca1504b6c5a0L,0x35216f3918f0e3a3L,0x3ec2d2bcbd986c00L,
|
|
0x8bf546d9d19228feL },
|
|
{ 0xd1c655a44cd623c3L,0x366ce718502b8e5aL,0x2cfc84b4eea0bfe7L,
|
|
0xe01d5ceecf443e8eL } },
|
|
/* 27 << 63 */
|
|
{ { 0x8ec045d9036520f8L,0xdfb3c3d192d40e98L,0x0bac4ccecc559a04L,
|
|
0x35eccae5240ea6b1L },
|
|
{ 0x180b32dbf8a5a0acL,0x547972a5eb699700L,0xa3765801ca26bca0L,
|
|
0x57e09d0ea647f25aL } },
|
|
/* 28 << 63 */
|
|
{ { 0xb956970e2fdd23ccL,0xb80288bc5682e971L,0xe6e6d91e9ae86ebcL,
|
|
0x0564c83f8c9f1939L },
|
|
{ 0x551932a239560368L,0xe893752b049c28e2L,0x0b03cee5a6a158c3L,
|
|
0xe12d656b04964263L } },
|
|
/* 29 << 63 */
|
|
{ { 0x4b47554e63e3bc1dL,0xc719b6a245044ff7L,0x4f24d30ae48daa07L,
|
|
0xa3f37556c8c1edc3L },
|
|
{ 0x9a47bf760700d360L,0xbb1a1824822ae4e2L,0x22e275a389f1fb4cL,
|
|
0x72b1aa239968c5f5L } },
|
|
/* 30 << 63 */
|
|
{ { 0xa75feacabe063f64L,0x9b392f43bce47a09L,0xd42415091ad07acaL,
|
|
0x4b0c591b8d26cd0fL },
|
|
{ 0x2d42ddfd92f1169aL,0x63aeb1ac4cbf2392L,0x1de9e8770691a2afL,
|
|
0xebe79af7d98021daL } },
|
|
/* 31 << 63 */
|
|
{ { 0xcfdf2a4e40e50acfL,0xf0a98ad7af01d665L,0xefb640bf1831be1fL,
|
|
0x6fe8bd2f80e9ada0L },
|
|
{ 0x94c103a16cafbc91L,0x170f87598308e08cL,0x5de2d2ab9780ff4fL,
|
|
0x666466bc45b201f2L } },
|
|
/* 32 << 63 */
|
|
{ { 0x58af2010f5b343bcL,0x0f2e400af2f142feL,0x3483bfdea85f4bdfL,
|
|
0xf0b1d09303bfeaa9L },
|
|
{ 0x2ea01b95c7081603L,0xe943e4c93dba1097L,0x47be92adb438f3a6L,
|
|
0x00bb7742e5bf6636L } },
|
|
/* 33 << 63 */
|
|
{ { 0x136b7083824297b4L,0x9d0e55805584455fL,0xab48cedcf1c7d69eL,
|
|
0x53a9e4812a256e76L },
|
|
{ 0x0402b0e065eb2413L,0xdadbbb848fc407a7L,0xa65cd5a48d7f5492L,
|
|
0x21d4429374bae294L } },
|
|
/* 34 << 63 */
|
|
{ { 0x66917ce63b5f1cc4L,0x37ae52eace872e62L,0xbb087b722905f244L,
|
|
0x120770861e6af74fL },
|
|
{ 0x4b644e491058edeaL,0x827510e3b638ca1dL,0x8cf2b7046038591cL,
|
|
0xffc8b47afe635063L } },
|
|
/* 35 << 63 */
|
|
{ { 0x3ae220e61b4d5e63L,0xbd8647429d961b4bL,0x610c107e9bd16bedL,
|
|
0x4270352a1127147bL },
|
|
{ 0x7d17ffe664cfc50eL,0x50dee01a1e36cb42L,0x068a762235dc5f9aL,
|
|
0x9a08d536df53f62cL } },
|
|
/* 36 << 63 */
|
|
{ { 0x4ed714576be5f7deL,0xd93006f8c2263c9eL,0xe073694ccacacb36L,
|
|
0x2ff7a5b43ae118abL },
|
|
{ 0x3cce53f1cd871236L,0xf156a39dc2aa6d52L,0x9cc5f271b198d76dL,
|
|
0xbc615b6f81383d39L } },
|
|
/* 37 << 63 */
|
|
{ { 0xa54538e8de3eee6bL,0x58c77538ab910d91L,0x31e5bdbc58d278bdL,
|
|
0x3cde4adfb963acaeL },
|
|
{ 0xb1881fd25302169cL,0x8ca60fa0a989ed8bL,0xa1999458ff96a0eeL,
|
|
0xc1141f03ac6c283dL } },
|
|
/* 38 << 63 */
|
|
{ { 0x7677408d6dfafed3L,0x33a0165339661588L,0x3c9c15ec0b726fa0L,
|
|
0x090cfd936c9b56daL },
|
|
{ 0xe34f4baea3c40af5L,0x3469eadbd21129f1L,0xcc51674a1e207ce8L,
|
|
0x1e293b24c83b1ef9L } },
|
|
/* 39 << 63 */
|
|
{ { 0x17173d131e6c0bb4L,0x1900469590776d35L,0xe7980e346de6f922L,
|
|
0x873554cbf4dd9a22L },
|
|
{ 0x0316c627cbf18a51L,0x4d93651b3032c081L,0x207f27713946834dL,
|
|
0x2c08d7b430cdbf80L } },
|
|
/* 40 << 63 */
|
|
{ { 0x137a4fb486df2a61L,0xa1ed9c07ecf7b4a2L,0xb2e460e27bd042ffL,
|
|
0xb7f5e2fa5f62f5ecL },
|
|
{ 0x7aa6ec6bcc2423b7L,0x75ce0a7fba63eea7L,0x67a45fb1f250a6e1L,
|
|
0x93bc919ce53cdc9fL } },
|
|
/* 41 << 63 */
|
|
{ { 0x9271f56f871942dfL,0x2372ff6f7859ad66L,0x5f4c2b9633cb1a78L,
|
|
0xe3e291015838aa83L },
|
|
{ 0xa7ed1611e4e8110cL,0x2a2d70d5330198ceL,0xbdf132e86720efe0L,
|
|
0xe61a896266a471bfL } },
|
|
/* 42 << 63 */
|
|
{ { 0x796d3a85825808bdL,0x51dc3cb73fd6e902L,0x643c768a916219d1L,
|
|
0x36cd7685a2ad7d32L },
|
|
{ 0xe3db9d05b22922a4L,0x6494c87edba29660L,0xf0ac91dfbcd2ebc7L,
|
|
0x4deb57a045107f8dL } },
|
|
/* 43 << 63 */
|
|
{ { 0x42271f59c3d12a73L,0x5f71687ca5c2c51dL,0xcb1f50c605797bcbL,
|
|
0x29ed0ed9d6d34eb0L },
|
|
{ 0xe5fe5b474683c2ebL,0x4956eeb597447c46L,0x5b163a4371207167L,
|
|
0x93fa2fed0248c5efL } },
|
|
/* 44 << 63 */
|
|
{ { 0x67930af231f63950L,0xa77797c114caa2c9L,0x526e80ee27ac7e62L,
|
|
0xe1e6e62658b28aecL },
|
|
{ 0x636178b0b3c9fef0L,0xaf7752e06d5f90beL,0x94ecaf18eece51cfL,
|
|
0x2864d0edca806e1fL } },
|
|
/* 45 << 63 */
|
|
{ { 0x6de2e38397c69134L,0x5a42c316eb291293L,0xc77792196a60bae0L,
|
|
0xa24de3466b7599d1L },
|
|
{ 0x49d374aab75d4941L,0x989005862d501ff0L,0x9f16d40eeb7974cfL,
|
|
0x1033860bcdd8c115L } },
|
|
/* 46 << 63 */
|
|
{ { 0xb6c69ac82094cec3L,0x9976fb88403b770cL,0x1dea026c4859590dL,
|
|
0xb6acbb468562d1fdL },
|
|
{ 0x7cd6c46144569d85L,0xc3190a3697f0891dL,0xc6f5319548d5a17dL,
|
|
0x7d919966d749abc8L } },
|
|
/* 47 << 63 */
|
|
{ { 0x65104837dd1c8a20L,0x7e5410c82f683419L,0x958c3ca8be94022eL,
|
|
0x605c31976145dac2L },
|
|
{ 0x3fc0750101683d54L,0x1d7127c5595b1234L,0x10b8f87c9481277fL,
|
|
0x677db2a8e65a1adbL } },
|
|
/* 48 << 63 */
|
|
{ { 0xec2fccaaddce3345L,0x2a6811b7012a4350L,0x96760ff1ac598bdcL,
|
|
0x054d652ad1bf4128L },
|
|
{ 0x0a1151d492a21005L,0xad7f397133110fdfL,0x8c95928c1960100fL,
|
|
0x6c91c8257bf03362L } },
|
|
/* 49 << 63 */
|
|
{ { 0xc8c8b2a2ce309f06L,0xfdb27b59ca27204bL,0xd223eaa50848e32eL,
|
|
0xb93e4b2ee7bfaf1eL },
|
|
{ 0xc5308ae644aa3dedL,0x317a666ac015d573L,0xc888ce231a979707L,
|
|
0xf141c1e60d5c4958L } },
|
|
/* 50 << 63 */
|
|
{ { 0xb53b7de561906373L,0x858dbadeeb999595L,0x8cbb47b2a59e5c36L,
|
|
0x660318b3dcf4e842L },
|
|
{ 0xbd161ccd12ba4b7aL,0xf399daabf8c8282aL,0x1587633aeeb2130dL,
|
|
0xa465311ada38dd7dL } },
|
|
/* 51 << 63 */
|
|
{ { 0x5f75eec864d3779bL,0x3c5d0476ad64c171L,0x874103712a914428L,
|
|
0x8096a89190e2fc29L },
|
|
{ 0xd3d2ae9d23b3ebc2L,0x90bdd6dba580cfd6L,0x52dbb7f3c5b01f6cL,
|
|
0xe68eded4e102a2dcL } },
|
|
/* 52 << 63 */
|
|
{ { 0x17785b7799eb6df0L,0x26c3cc517386b779L,0x345ed9886417a48eL,
|
|
0xe990b4e407d6ef31L },
|
|
{ 0x0f456b7e2586abbaL,0x239ca6a559c96e9aL,0xe327459ce2eb4206L,
|
|
0x3a4c3313a002b90aL } },
|
|
/* 53 << 63 */
|
|
{ { 0x2a114806f6a3f6fbL,0xad5cad2f85c251ddL,0x92c1f613f5a784d3L,
|
|
0xec7bfacf349766d5L },
|
|
{ 0x04b3cd333e23cb3bL,0x3979fe84c5a64b2dL,0x192e27207e589106L,
|
|
0xa60c43d1a15b527fL } },
|
|
/* 54 << 63 */
|
|
{ { 0x2dae9082be7cf3a6L,0xcc86ba92bc967274L,0xf28a2ce8aea0a8a9L,
|
|
0x404ca6d96ee988b3L },
|
|
{ 0xfd7e9c5d005921b8L,0xf56297f144e79bf9L,0xa163b4600d75ddc2L,
|
|
0x30b23616a1f2be87L } },
|
|
/* 55 << 63 */
|
|
{ { 0x4b070d21bfe50e2bL,0x7ef8cfd0e1bfede1L,0xadba00112aac4ae0L,
|
|
0x2a3e7d01b9ebd033L },
|
|
{ 0x995277ece38d9d1cL,0xb500249e9c5d2de3L,0x8912b820f13ca8c9L,
|
|
0xc8798114877793afL } },
|
|
/* 56 << 63 */
|
|
{ { 0x19e6125dec3f1decL,0x07b1f040911178daL,0xd93ededa904a6738L,
|
|
0x55187a5a0bebedcdL },
|
|
{ 0xf7d04722eb329d41L,0xf449099ef170b391L,0xfd317a69ca99f828L,
|
|
0x50c3db2b34a4976dL } },
|
|
/* 57 << 63 */
|
|
{ { 0xe9ba77843757b392L,0x326caefdaa3ca05aL,0x78e5293bf1e593d4L,
|
|
0x7842a9370d98fd13L },
|
|
{ 0xe694bf965f96b10dL,0x373a9df606a8cd05L,0x997d1e51e8f0c7fcL,
|
|
0x1d01979063fd972eL } },
|
|
/* 58 << 63 */
|
|
{ { 0x0064d8585499fb32L,0x7b67bad977a8aeb7L,0x1d3eb9772d08eec5L,
|
|
0x5fc047a6cbabae1dL },
|
|
{ 0x0577d159e54a64bbL,0x8862201bc43497e4L,0xad6b4e282ce0608dL,
|
|
0x8b687b7d0b167aacL } },
|
|
/* 59 << 63 */
|
|
{ { 0x6ed4d3678b2ecfa9L,0x24dfe62da90c3c38L,0xa1862e103fe5c42bL,
|
|
0x1ca73dcad5732a9fL },
|
|
{ 0x35f038b776bb87adL,0x674976abf242b81fL,0x4f2bde7eb0fd90cdL,
|
|
0x6efc172ea7fdf092L } },
|
|
/* 60 << 63 */
|
|
{ { 0x3806b69b92222f1fL,0x5a2459ca6cf7ae70L,0x6789f69ca85217eeL,
|
|
0x5f232b5ee3dc85acL },
|
|
{ 0x660e3ec548e9e516L,0x124b4e473197eb31L,0x10a0cb13aafcca23L,
|
|
0x7bd63ba48213224fL } },
|
|
/* 61 << 63 */
|
|
{ { 0xaffad7cc290a7f4fL,0x6b409c9e0286b461L,0x58ab809fffa407afL,
|
|
0xc3122eedc68ac073L },
|
|
{ 0x17bf9e504ef24d7eL,0x5d9297943e2a5811L,0x519bc86702902e01L,
|
|
0x76bba5da39c8a851L } },
|
|
/* 62 << 63 */
|
|
{ { 0xe9f9669cda94951eL,0x4b6af58d66b8d418L,0xfa32107417d426a4L,
|
|
0xc78e66a99dde6027L },
|
|
{ 0x0516c0834a53b964L,0xfc659d38ff602330L,0x0ab55e5c58c5c897L,
|
|
0x985099b2838bc5dfL } },
|
|
/* 63 << 63 */
|
|
{ { 0x061d9efcc52fc238L,0x712b27286ac1da3fL,0xfb6581499283fe08L,
|
|
0x4954ac94b8aaa2f7L },
|
|
{ 0x85c0ada47fb2e74fL,0xee8ba98eb89926b0L,0xe4f9d37d23d1af5bL,
|
|
0x14ccdbf9ba9b015eL } },
|
|
/* 64 << 63 */
|
|
{ { 0xb674481b7bfe7178L,0x4e1debae65405868L,0x061b2821c48c867dL,
|
|
0x69c15b35513b30eaL },
|
|
{ 0x3b4a166636871088L,0xe5e29f5d1220b1ffL,0x4b82bb35233d9f4dL,
|
|
0x4e07633318cdc675L } },
|
|
/* 0 << 70 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 70 */
|
|
{ { 0x0d53f5c7a3e6fcedL,0xe8cbbdd5f45fbdebL,0xf85c01df13339a70L,
|
|
0x0ff71880142ceb81L },
|
|
{ 0x4c4e8774bd70437aL,0x5fb32891ba0bda6aL,0x1cdbebd2f18bd26eL,
|
|
0x2f9526f103a9d522L } },
|
|
/* 2 << 70 */
|
|
{ { 0x40ce305192c4d684L,0x8b04d7257612efcdL,0xb9dcda366f9cae20L,
|
|
0x0edc4d24f058856cL },
|
|
{ 0x64f2e6bf85427900L,0x3de81295dc09dfeaL,0xd41b4487379bf26cL,
|
|
0x50b62c6d6df135a9L } },
|
|
/* 3 << 70 */
|
|
{ { 0xd4f8e3b4c72dfe67L,0xc416b0f690e19fdfL,0x18b9098d4c13bd35L,
|
|
0xac11118a15b8cb9eL },
|
|
{ 0xf598a318f0062841L,0xbfe0602f89f356f4L,0x7ae3637e30177a0cL,
|
|
0x3409774761136537L } },
|
|
/* 4 << 70 */
|
|
{ { 0x0db2fb5ed005832aL,0x5f5efd3b91042e4fL,0x8c4ffdc6ed70f8caL,
|
|
0xe4645d0bb52da9ccL },
|
|
{ 0x9596f58bc9001d1fL,0x52c8f0bc4e117205L,0xfd4aa0d2e398a084L,
|
|
0x815bfe3a104f49deL } },
|
|
/* 5 << 70 */
|
|
{ { 0x97e5443f23885e5fL,0xf72f8f99e8433aabL,0xbd00b154e4d4e604L,
|
|
0xd0b35e6ae5e173ffL },
|
|
{ 0x57b2a0489164722dL,0x3e3c665b88761ec8L,0x6bdd13973da83832L,
|
|
0x3c8b1a1e73dafe3bL } },
|
|
/* 6 << 70 */
|
|
{ { 0x4497ace654317cacL,0xbe600ab9521771b3L,0xb42e409eb0dfe8b8L,
|
|
0x386a67d73942310fL },
|
|
{ 0x25548d8d4431cc28L,0xa7cff142985dc524L,0x4d60f5a193c4be32L,
|
|
0x83ebd5c8d071c6e1L } },
|
|
/* 7 << 70 */
|
|
{ { 0xba3a80a7b1fd2b0bL,0x9b3ad3965bec33e8L,0xb3868d6179743fb3L,
|
|
0xcfd169fcfdb462faL },
|
|
{ 0xd3b499d79ce0a6afL,0x55dc1cf1e42d3ff8L,0x04fb9e6cc6c3e1b2L,
|
|
0x47e6961d6f69a474L } },
|
|
/* 8 << 70 */
|
|
{ { 0x54eb3acce548b37bL,0xb38e754284d40549L,0x8c3daa517b341b4fL,
|
|
0x2f6928ec690bf7faL },
|
|
{ 0x0496b32386ce6c41L,0x01be1c5510adadcdL,0xc04e67e74bb5faf9L,
|
|
0x3cbaf678e15c9985L } },
|
|
/* 9 << 70 */
|
|
{ { 0x8cd1214550ca4247L,0xba1aa47ae7dd30aaL,0x2f81ddf1e58fee24L,
|
|
0x03452936eec9b0e8L },
|
|
{ 0x8bdc3b81243aea96L,0x9a2919af15c3d0e5L,0x9ea640ec10948361L,
|
|
0x5ac86d5b6e0bcccfL } },
|
|
/* 10 << 70 */
|
|
{ { 0xf892d918c36cf440L,0xaed3e837c939719cL,0xb07b08d2c0218b64L,
|
|
0x6f1bcbbace9790ddL },
|
|
{ 0x4a84d6ed60919b8eL,0xd89007918ac1f9ebL,0xf84941aa0dd5daefL,
|
|
0xb22fe40a67fd62c5L } },
|
|
/* 11 << 70 */
|
|
{ { 0x97e15ba2157f2db3L,0xbda2fc8f8e28ca9cL,0x5d050da437b9f454L,
|
|
0x3d57eb572379d72eL },
|
|
{ 0xe9b5eba2fb5ee997L,0x01648ca2e11538caL,0x32bb76f6f6327974L,
|
|
0x338f14b8ff3f4bb7L } },
|
|
/* 12 << 70 */
|
|
{ { 0x524d226ad7ab9a2dL,0x9c00090d7dfae958L,0x0ba5f5398751d8c2L,
|
|
0x8afcbcdd3ab8262dL },
|
|
{ 0x57392729e99d043bL,0xef51263baebc943aL,0x9feace9320862935L,
|
|
0x639efc03b06c817bL } },
|
|
/* 13 << 70 */
|
|
{ { 0x1fe054b366b4be7aL,0x3f25a9de84a37a1eL,0xf39ef1ad78d75cd9L,
|
|
0xd7b58f495062c1b5L },
|
|
{ 0x6f74f9a9ff563436L,0xf718ff29e8af51e7L,0x5234d31315e97fecL,
|
|
0xb6a8e2b1292f1c0aL } },
|
|
/* 14 << 70 */
|
|
{ { 0xa7f53aa8327720c1L,0x956ca322ba092cc8L,0x8f03d64a28746c4dL,
|
|
0x51fe178266d0d392L },
|
|
{ 0xd19b34db3c832c80L,0x60dccc5c6da2e3b4L,0x245dd62e0a104cccL,
|
|
0xa7ab1de1620b21fdL } },
|
|
/* 15 << 70 */
|
|
{ { 0xb293ae0b3893d123L,0xf7b75783b15ee71cL,0x5aa3c61442a9468bL,
|
|
0xd686123cdb15d744L },
|
|
{ 0x8c616891a7ab4116L,0x6fcd72c8a4e6a459L,0xac21911077e5fad7L,
|
|
0xfb6a20e7704fa46bL } },
|
|
/* 16 << 70 */
|
|
{ { 0xe839be7d341d81dcL,0xcddb688932148379L,0xda6211a1f7026eadL,
|
|
0xf3b2575ff4d1cc5eL },
|
|
{ 0x40cfc8f6a7a73ae6L,0x83879a5e61d5b483L,0xc5acb1ed41a50ebcL,
|
|
0x59a60cc83c07d8faL } },
|
|
/* 17 << 70 */
|
|
{ { 0x1b73bdceb1876262L,0x2b0d79f012af4ee9L,0x8bcf3b0bd46e1d07L,
|
|
0x17d6af9de45d152fL },
|
|
{ 0x735204616d736451L,0x43cbbd9756b0bf5aL,0xb0833a5bd5999b9dL,
|
|
0x702614f0eb72e398L } },
|
|
/* 18 << 70 */
|
|
{ { 0x0aadf01a59c3e9f8L,0x40200e77ce6b3d16L,0xda22bdd3deddafadL,
|
|
0x76dedaf4310d72e1L },
|
|
{ 0x49ef807c4bc2e88fL,0x6ba81291146dd5a5L,0xa1a4077a7d8d59e9L,
|
|
0x87b6a2e7802db349L } },
|
|
/* 19 << 70 */
|
|
{ { 0xd56799971b4e598eL,0xf499ef1f06fe4b1dL,0x3978d3aefcb267c5L,
|
|
0xb582b557235786d0L },
|
|
{ 0x32b3b2ca1715cb07L,0x4c3de6a28480241dL,0x63b5ffedcb571ecdL,
|
|
0xeaf53900ed2fe9a9L } },
|
|
/* 20 << 70 */
|
|
{ { 0xdec98d4ac3b81990L,0x1cb837229e0cc8feL,0xfe0b0491d2b427b9L,
|
|
0x0f2386ace983a66cL },
|
|
{ 0x930c4d1eb3291213L,0xa2f82b2e59a62ae4L,0x77233853f93e89e3L,
|
|
0x7f8063ac11777c7fL } },
|
|
/* 21 << 70 */
|
|
{ { 0xff0eb56759ad2877L,0x6f4546429865c754L,0xe6fe701a236e9a84L,
|
|
0xc586ef1606e40fc3L },
|
|
{ 0x3f62b6e024bafad9L,0xc8b42bd264da906aL,0xc98e1eb4da3276a0L,
|
|
0x30d0e5fc06cbf852L } },
|
|
/* 22 << 70 */
|
|
{ { 0x1b6b2ae1e8b4dfd4L,0xd754d5c78301cbacL,0x66097629112a39acL,
|
|
0xf86b599993ba4ab9L },
|
|
{ 0x26c9dea799f9d581L,0x0473b1a8c2fafeaaL,0x1469af553b2505a5L,
|
|
0x227d16d7d6a43323L } },
|
|
/* 23 << 70 */
|
|
{ { 0x3316f73cad3d97f9L,0x52bf3bb51f137455L,0x953eafeb09954e7cL,
|
|
0xa721dfeddd732411L },
|
|
{ 0xb4929821141d4579L,0x3411321caa3bd435L,0xafb355aa17fa6015L,
|
|
0xb4e7ef4a18e42f0eL } },
|
|
/* 24 << 70 */
|
|
{ { 0x604ac97c59371000L,0xe1c48c707f759c18L,0x3f62ecc5a5db6b65L,
|
|
0x0a78b17338a21495L },
|
|
{ 0x6be1819dbcc8ad94L,0x70dc04f6d89c3400L,0x462557b4a6b4840aL,
|
|
0x544c6ade60bd21c0L } },
|
|
/* 25 << 70 */
|
|
{ { 0x6a00f24e907a544bL,0xa7520dcb313da210L,0xfe939b7511e4994bL,
|
|
0x918b6ba6bc275d70L },
|
|
{ 0xd3e5e0fc644be892L,0x707a9816fdaf6c42L,0x60145567f15c13feL,
|
|
0x4818ebaae130a54aL } },
|
|
/* 26 << 70 */
|
|
{ { 0x28aad3ad58d2f767L,0xdc5267fdd7e7c773L,0x4919cc88c3afcc98L,
|
|
0xaa2e6ab02db8cd4bL },
|
|
{ 0xd46fec04d0c63eaaL,0xa1cb92c519ffa832L,0x678dd178e43a631fL,
|
|
0xfb5ae1cd3dc788b3L } },
|
|
/* 27 << 70 */
|
|
{ { 0x68b4fb906e77de04L,0x7992bcf0f06dbb97L,0x896e6a13c417c01dL,
|
|
0x8d96332cb956be01L },
|
|
{ 0x902fc93a413aa2b9L,0x99a4d915fc98c8a5L,0x52c29407565f1137L,
|
|
0x4072690f21e4f281L } },
|
|
/* 28 << 70 */
|
|
{ { 0x36e607cf02ff6072L,0xa47d2ca98ad98cdcL,0xbf471d1ef5f56609L,
|
|
0xbcf86623f264ada0L },
|
|
{ 0xb70c0687aa9e5cb6L,0xc98124f217401c6cL,0x8189635fd4a61435L,
|
|
0xd28fb8afa9d98ea6L } },
|
|
/* 29 << 70 */
|
|
{ { 0xb9a67c2a40c251f8L,0x88cd5d87a2da44beL,0x437deb96e09b5423L,
|
|
0x150467db64287dc1L },
|
|
{ 0xe161debbcdabb839L,0xa79e9742f1839a3eL,0xbb8dd3c2652d202bL,
|
|
0x7b3e67f7e9f97d96L } },
|
|
/* 30 << 70 */
|
|
{ { 0x5aa5d78fb1cb6ac9L,0xffa13e8eca1d0d45L,0x369295dd2ba5bf95L,
|
|
0xd68bd1f839aff05eL },
|
|
{ 0xaf0d86f926d783f2L,0x543a59b3fc3aafc1L,0x3fcf81d27b7da97cL,
|
|
0xc990a056d25dee46L } },
|
|
/* 31 << 70 */
|
|
{ { 0x3e6775b8519cce2cL,0xfc9af71fae13d863L,0x774a4a6f47c1605cL,
|
|
0x46ba42452fd205e8L },
|
|
{ 0xa06feea4d3fd524dL,0x1e7246416de1acc2L,0xf53816f1334e2b42L,
|
|
0x49e5918e922f0024L } },
|
|
/* 32 << 70 */
|
|
{ { 0x439530b665c7322dL,0xcf12cc01b3c1b3fbL,0xc70b01860172f685L,
|
|
0xb915ee221b58391dL },
|
|
{ 0x9afdf03ba317db24L,0x87dec65917b8ffc4L,0x7f46597be4d3d050L,
|
|
0x80a1c1ed006500e7L } },
|
|
/* 33 << 70 */
|
|
{ { 0x84902a9678bf030eL,0xfb5e9c9a50560148L,0x6dae0a9263362426L,
|
|
0xdcaeecf4a9e30c40L },
|
|
{ 0xc0d887bb518d0c6bL,0x99181152cb985b9dL,0xad186898ef7bc381L,
|
|
0x18168ffb9ee46201L } },
|
|
/* 34 << 70 */
|
|
{ { 0x9a04cdaa2502753cL,0xbb279e2651407c41L,0xeacb03aaf23564e5L,
|
|
0x1833658271e61016L },
|
|
{ 0x8684b8c4eb809877L,0xb336e18dea0e672eL,0xefb601f034ee5867L,
|
|
0x2733edbe1341cfd1L } },
|
|
/* 35 << 70 */
|
|
{ { 0xb15e809a26025c3cL,0xe6e981a69350df88L,0x923762378502fd8eL,
|
|
0x4791f2160c12be9bL },
|
|
{ 0xb725678925f02425L,0xec8631947a974443L,0x7c0ce882fb41cc52L,
|
|
0xc266ff7ef25c07f2L } },
|
|
/* 36 << 70 */
|
|
{ { 0x3d4da8c3017025f3L,0xefcf628cfb9579b4L,0x5c4d00161f3716ecL,
|
|
0x9c27ebc46801116eL },
|
|
{ 0x5eba0ea11da1767eL,0xfe15145247004c57L,0x3ace6df68c2373b7L,
|
|
0x75c3dffe5dbc37acL } },
|
|
/* 37 << 70 */
|
|
{ { 0x3dc32a73ddc925fcL,0xb679c8412f65ee0bL,0x715a3295451cbfebL,
|
|
0xd9889768f76e9a29L },
|
|
{ 0xec20ce7fb28ad247L,0xe99146c400894d79L,0x71457d7c9f5e3ea7L,
|
|
0x097b266238030031L } },
|
|
/* 38 << 70 */
|
|
{ { 0xdb7f6ae6cf9f82a8L,0x319decb9438f473aL,0xa63ab386283856c3L,
|
|
0x13e3172fb06a361bL },
|
|
{ 0x2959f8dc7d5a006cL,0x2dbc27c675fba752L,0xc1227ab287c22c9eL,
|
|
0x06f61f7571a268b2L } },
|
|
/* 39 << 70 */
|
|
{ { 0x1b6bb97104779ce2L,0xaca838120aadcb1dL,0x297ae0bcaeaab2d5L,
|
|
0xa5c14ee75bfb9f13L },
|
|
{ 0xaa00c583f17a62c7L,0x39eb962c173759f6L,0x1eeba1d486c9a88fL,
|
|
0x0ab6c37adf016c5eL } },
|
|
/* 40 << 70 */
|
|
{ { 0xa2a147dba28a0749L,0x246c20d6ee519165L,0x5068d1b1d3810715L,
|
|
0xb1e7018c748160b9L },
|
|
{ 0x03f5b1faf380ff62L,0xef7fb1ddf3cb2c1eL,0xeab539a8fc91a7daL,
|
|
0x83ddb707f3f9b561L } },
|
|
/* 41 << 70 */
|
|
{ { 0xc550e211fe7df7a4L,0xa7cd07f2063f6f40L,0xb0de36352976879cL,
|
|
0xb5f83f85e55741daL },
|
|
{ 0x4ea9d25ef3d8ac3dL,0x6fe2066f62819f02L,0x4ab2b9c2cef4a564L,
|
|
0x1e155d965ffa2de3L } },
|
|
/* 42 << 70 */
|
|
{ { 0x0eb0a19bc3a72d00L,0x4037665b8513c31bL,0x2fb2b6bf04c64637L,
|
|
0x45c34d6e08cdc639L },
|
|
{ 0x56f1e10ff01fd796L,0x4dfb8101fe3667b8L,0xe0eda2539021d0c0L,
|
|
0x7a94e9ff8a06c6abL } },
|
|
/* 43 << 70 */
|
|
{ { 0x2d3bb0d9bb9aa882L,0xea20e4e5ec05fd10L,0xed7eeb5f1a1ca64eL,
|
|
0x2fa6b43cc6327cbdL },
|
|
{ 0xb577e3cf3aa91121L,0x8c6bd5ea3a34079bL,0xd7e5ba3960e02fc0L,
|
|
0xf16dd2c390141bf8L } },
|
|
/* 44 << 70 */
|
|
{ { 0xb57276d980101b98L,0x760883fdb82f0f66L,0x89d7de754bc3eff3L,
|
|
0x03b606435dc2ab40L },
|
|
{ 0xcd6e53dfe05beeacL,0xf2f1e862bc3325cdL,0xdd0f7921774f03c3L,
|
|
0x97ca72214552cc1bL } },
|
|
/* 45 << 70 */
|
|
{ { 0x5a0d6afe1cd19f72L,0xa20915dcf183fbebL,0x9fda4b40832c403cL,
|
|
0x32738eddbe425442L },
|
|
{ 0x469a1df6b5eccf1aL,0x4b5aff4228bbe1f0L,0x31359d7f570dfc93L,
|
|
0xa18be235f0088628L } },
|
|
/* 46 << 70 */
|
|
{ { 0xa5b30fbab00ed3a9L,0x34c6137473cdf8beL,0x2c5c5f46abc56797L,
|
|
0x5cecf93db82a8ae2L },
|
|
{ 0x7d3dbe41a968fbf0L,0xd23d45831a5c7f3dL,0xf28f69a0c087a9c7L,
|
|
0xc2d75471474471caL } },
|
|
/* 47 << 70 */
|
|
{ { 0x36ec9f4a4eb732ecL,0x6c943bbdb1ca6bedL,0xd64535e1f2457892L,
|
|
0x8b84a8eaf7e2ac06L },
|
|
{ 0xe0936cd32499dd5fL,0x12053d7e0ed04e57L,0x4bdd0076e4305d9dL,
|
|
0x34a527b91f67f0a2L } },
|
|
/* 48 << 70 */
|
|
{ { 0xe79a4af09cec46eaL,0xb15347a1658b9bc7L,0x6bd2796f35af2f75L,
|
|
0xac9579904051c435L },
|
|
{ 0x2669dda3c33a655dL,0x5d503c2e88514aa3L,0xdfa113373753dd41L,
|
|
0x3f0546730b754f78L } },
|
|
/* 49 << 70 */
|
|
{ { 0xbf185677496125bdL,0xfb0023c83775006cL,0xfa0f072f3a037899L,
|
|
0x4222b6eb0e4aea57L },
|
|
{ 0x3dde5e767866d25aL,0xb6eb04f84837aa6fL,0x5315591a2cf1cdb8L,
|
|
0x6dfb4f412d4e683cL } },
|
|
/* 50 << 70 */
|
|
{ { 0x7e923ea448ee1f3aL,0x9604d9f705a2afd5L,0xbe1d4a3340ea4948L,
|
|
0x5b45f1f4b44cbd2fL },
|
|
{ 0x5faf83764acc757eL,0xa7cf9ab863d68ff7L,0x8ad62f69df0e404bL,
|
|
0xd65f33c212bdafdfL } },
|
|
/* 51 << 70 */
|
|
{ { 0xc365de15a377b14eL,0x6bf5463b8e39f60cL,0x62030d2d2ce68148L,
|
|
0xd95867efe6f843a8L },
|
|
{ 0xd39a0244ef5ab017L,0x0bd2d8c14ab55d12L,0xc9503db341639169L,
|
|
0x2d4e25b0f7660c8aL } },
|
|
/* 52 << 70 */
|
|
{ { 0x760cb3b5e224c5d7L,0xfa3baf8c68616919L,0x9fbca1138d142552L,
|
|
0x1ab18bf17669ebf5L },
|
|
{ 0x55e6f53e9bdf25ddL,0x04cc0bf3cb6cd154L,0x595bef4995e89080L,
|
|
0xfe9459a8104a9ac1L } },
|
|
/* 53 << 70 */
|
|
{ { 0xad2d89cacce9bb32L,0xddea65e1f7de8285L,0x62ed8c35b351bd4bL,
|
|
0x4150ff360c0e19a7L },
|
|
{ 0x86e3c801345f4e47L,0x3bf21f71203a266cL,0x7ae110d4855b1f13L,
|
|
0x5d6aaf6a07262517L } },
|
|
/* 54 << 70 */
|
|
{ { 0x1e0f12e1813d28f1L,0x6000e11d7ad7a523L,0xc7d8deefc744a17bL,
|
|
0x1e990b4814c05a00L },
|
|
{ 0x68fddaee93e976d5L,0x696241d146610d63L,0xb204e7c3893dda88L,
|
|
0x8bccfa656a3a6946L } },
|
|
/* 55 << 70 */
|
|
{ { 0xb59425b4c5cd1411L,0x701b4042ff3658b1L,0xe3e56bca4784cf93L,
|
|
0x27de5f158fe68d60L },
|
|
{ 0x4ab9cfcef8d53f19L,0xddb10311a40a730dL,0x6fa73cd14eee0a8aL,
|
|
0xfd5487485249719dL } },
|
|
/* 56 << 70 */
|
|
{ { 0x49d66316a8123ef0L,0x73c32db4e7f95438L,0x2e2ed2090d9e7854L,
|
|
0xf98a93299d9f0507L },
|
|
{ 0xc5d33cf60c6aa20aL,0x9a32ba1475279bb2L,0x7e3202cb774a7307L,
|
|
0x64ed4bc4e8c42dbdL } },
|
|
/* 57 << 70 */
|
|
{ { 0xc20f1a06d4caed0dL,0xb8021407171d22b3L,0xd426ca04d13268d7L,
|
|
0x9237700725f4d126L },
|
|
{ 0x4204cbc371f21a85L,0x18461b7af82369baL,0xc0c07d313fc858f9L,
|
|
0x5deb5a50e2bab569L } },
|
|
/* 58 << 70 */
|
|
{ { 0xd5959d46d5eea89eL,0xfdff842408437f4bL,0xf21071e43cfe254fL,
|
|
0x7241769695468321L },
|
|
{ 0x5d8288b9102cae3eL,0x2d143e3df1965dffL,0x00c9a376a078d847L,
|
|
0x6fc0da3126028731L } },
|
|
/* 59 << 70 */
|
|
{ { 0xa2baeadfe45083a2L,0x66bc72185e5b4bcdL,0x2c826442d04b8e7fL,
|
|
0xc19f54516c4b586bL },
|
|
{ 0x60182c495b7eeed5L,0xd9954ecd7aa9dfa1L,0xa403a8ecc73884adL,
|
|
0x7fb17de29bb39041L } },
|
|
/* 60 << 70 */
|
|
{ { 0x694b64c5abb020e8L,0x3d18c18419c4eec7L,0x9c4673ef1c4793e5L,
|
|
0xc7b8aeb5056092e6L },
|
|
{ 0x3aa1ca43f0f8c16bL,0x224ed5ecd679b2f6L,0x0d56eeaf55a205c9L,
|
|
0xbfe115ba4b8e028bL } },
|
|
/* 61 << 70 */
|
|
{ { 0x97e608493927f4feL,0xf91fbf94759aa7c5L,0x985af7696be90a51L,
|
|
0xc1277b7878ccb823L },
|
|
{ 0x395b656ee7a75952L,0x00df7de0928da5f5L,0x09c231754ca4454fL,
|
|
0x4ec971f47aa2d3c1L } },
|
|
/* 62 << 70 */
|
|
{ { 0x45c3c507e75d9cccL,0x63b7be8a3dc90306L,0x37e09c665db44bdcL,
|
|
0x50d60da16841c6a2L },
|
|
{ 0x6f9b65ee08df1b12L,0x387348797ff089dfL,0x9c331a663fe8013dL,
|
|
0x017f5de95f42fcc8L } },
|
|
/* 63 << 70 */
|
|
{ { 0x43077866e8e57567L,0xc9f781cef9fcdb18L,0x38131dda9b12e174L,
|
|
0x25d84aa38a03752aL },
|
|
{ 0x45e09e094d0c0ce2L,0x1564008b92bebba5L,0xf7e8ad31a87284c7L,
|
|
0xb7c4b46c97e7bbaaL } },
|
|
/* 64 << 70 */
|
|
{ { 0x3e22a7b397acf4ecL,0x0426c4005ea8b640L,0x5e3295a64e969285L,
|
|
0x22aabc59a6a45670L },
|
|
{ 0xb929714c5f5942bcL,0x9a6168bdfa3182edL,0x2216a665104152baL,
|
|
0x46908d03b6926368L } },
|
|
/* 0 << 77 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 77 */
|
|
{ { 0xa9f5d8745a1251fbL,0x967747a8c72725c7L,0x195c33e531ffe89eL,
|
|
0x609d210fe964935eL },
|
|
{ 0xcafd6ca82fe12227L,0xaf9b5b960426469dL,0x2e9ee04c5693183cL,
|
|
0x1084a333c8146fefL } },
|
|
/* 2 << 77 */
|
|
{ { 0x96649933aed1d1f7L,0x566eaff350563090L,0x345057f0ad2e39cfL,
|
|
0x148ff65b1f832124L },
|
|
{ 0x042e89d4cf94cf0dL,0x319bec84520c58b3L,0x2a2676265361aa0dL,
|
|
0xc86fa3028fbc87adL } },
|
|
/* 3 << 77 */
|
|
{ { 0xfc83d2ab5c8b06d5L,0xb1a785a2fe4eac46L,0xb99315bc846f7779L,
|
|
0xcf31d816ef9ea505L },
|
|
{ 0x2391fe6a15d7dc85L,0x2f132b04b4016b33L,0x29547fe3181cb4c7L,
|
|
0xdb66d8a6650155a1L } },
|
|
/* 4 << 77 */
|
|
{ { 0x6b66d7e1adc1696fL,0x98ebe5930acd72d0L,0x65f24550cc1b7435L,
|
|
0xce231393b4b9a5ecL },
|
|
{ 0x234a22d4db067df9L,0x98dda095caff9b00L,0x1bbc75a06100c9c1L,
|
|
0x1560a9c8939cf695L } },
|
|
/* 5 << 77 */
|
|
{ { 0xcf006d3e99e0925fL,0x2dd74a966322375aL,0xc58b446ab56af5baL,
|
|
0x50292683e0b9b4f1L },
|
|
{ 0xe2c34cb41aeaffa3L,0x8b17203f9b9587c1L,0x6d559207ead1350cL,
|
|
0x2b66a215fb7f9604L } },
|
|
/* 6 << 77 */
|
|
{ { 0x0850325efe51bf74L,0x9c4f579e5e460094L,0x5c87b92a76da2f25L,
|
|
0x889de4e06febef33L },
|
|
{ 0x6900ec06646083ceL,0xbe2a0335bfe12773L,0xadd1da35c5344110L,
|
|
0x757568b7b802cd20L } },
|
|
/* 7 << 77 */
|
|
{ { 0x7555977900f7e6c8L,0x38e8b94f0facd2f0L,0xfea1f3af03fde375L,
|
|
0x5e11a1d875881dfcL },
|
|
{ 0xb3a6b02ec1e2f2efL,0x193d2bbbc605a6c5L,0x325ffeee339a0b2dL,
|
|
0x27b6a7249e0c8846L } },
|
|
/* 8 << 77 */
|
|
{ { 0xe4050f1cf1c367caL,0x9bc85a9bc90fbc7dL,0xa373c4a2e1a11032L,
|
|
0xb64232b7ad0393a9L },
|
|
{ 0xf5577eb0167dad29L,0x1604f30194b78ab2L,0x0baa94afe829348bL,
|
|
0x77fbd8dd41654342L } },
|
|
/* 9 << 77 */
|
|
{ { 0xdab50ea5b964e39aL,0xd4c29e3cd0d3c76eL,0x80dae67c56d11964L,
|
|
0x7307a8bfe5ffcc2fL },
|
|
{ 0x65bbc1aa91708c3bL,0xa151e62c28bf0eebL,0x6cb533816fa34db7L,
|
|
0x5139e05ca29403a8L } },
|
|
/* 10 << 77 */
|
|
{ { 0x6ff651b494a7cd2eL,0x5671ffd10699336cL,0x6f5fd2cc979a896aL,
|
|
0x11e893a8d8148cefL },
|
|
{ 0x988906a165cf7b10L,0x81b67178c50d8485L,0x7c0deb358a35b3deL,
|
|
0x423ac855c1d29799L } },
|
|
/* 11 << 77 */
|
|
{ { 0xaf580d87dac50b74L,0x28b2b89f5869734cL,0x99a3b936874e28fbL,
|
|
0xbb2c919025f3f73aL },
|
|
{ 0x199f691884a9d5b7L,0x7ebe23257e770374L,0xf442e1070738efe2L,
|
|
0xcf9f3f56cf9082d2L } },
|
|
/* 12 << 77 */
|
|
{ { 0x719f69e109618708L,0xcc9e8364c183f9b1L,0xec203a95366a21afL,
|
|
0x6aec5d6d068b141fL },
|
|
{ 0xee2df78a994f04e9L,0xb39ccae8271245b0L,0xb875a4a997e43f4fL,
|
|
0x507dfe11db2cea98L } },
|
|
/* 13 << 77 */
|
|
{ { 0x4fbf81cb489b03e9L,0xdb86ec5b6ec414faL,0xfad444f9f51b3ae5L,
|
|
0xca7d33d61914e3feL },
|
|
{ 0xa9c32f5c0ae6c4d0L,0xa9ca1d1e73969568L,0x98043c311aa7467eL,
|
|
0xe832e75ce21b5ac6L } },
|
|
/* 14 << 77 */
|
|
{ { 0x314b7aea5232123dL,0x08307c8c65ae86dbL,0x06e7165caa4668edL,
|
|
0xb170458bb4d3ec39L },
|
|
{ 0x4d2e3ec6c19bb986L,0xc5f34846ae0304edL,0x917695a06c9f9722L,
|
|
0x6c7f73174cab1c0aL } },
|
|
/* 15 << 77 */
|
|
{ { 0x6295940e9d6d2e8bL,0xd318b8c1549f7c97L,0x2245320497713885L,
|
|
0x468d834ba8a440feL },
|
|
{ 0xd81fe5b2bfba796eL,0x152364db6d71f116L,0xbb8c7c59b5b66e53L,
|
|
0x0b12c61b2641a192L } },
|
|
/* 16 << 77 */
|
|
{ { 0x31f14802fcf0a7fdL,0x42fd07895488b01eL,0x71d78d6d9952b498L,
|
|
0x8eb572d907ac5201L },
|
|
{ 0xe0a2a44c4d194a88L,0xd2b63fd9ba017e66L,0x78efc6c8f888aefcL,
|
|
0xb76f6bda4a881a11L } },
|
|
/* 17 << 77 */
|
|
{ { 0x187f314bb46c2397L,0x004cf5665ded2819L,0xa9ea570438764d34L,
|
|
0xbba4521778084709L },
|
|
{ 0x064745711171121eL,0xad7b7eb1e7c9b671L,0xdacfbc40730f7507L,
|
|
0x178cd8c6c7ad7bd1L } },
|
|
/* 18 << 77 */
|
|
{ { 0xbf0be101b2a67238L,0x3556d367af9c14f2L,0x104b7831a5662075L,
|
|
0x58ca59bb79d9e60aL },
|
|
{ 0x4bc45392a569a73bL,0x517a52e85698f6c9L,0x85643da5aeadd755L,
|
|
0x1aed0cd52a581b84L } },
|
|
/* 19 << 77 */
|
|
{ { 0xb9b4ff8480af1372L,0x244c3113f1ba5d1fL,0x2a5dacbef5f98d31L,
|
|
0x2c3323e84375bc2aL },
|
|
{ 0x17a3ab4a5594b1ddL,0xa1928bfbceb4797eL,0xe83af245e4886a19L,
|
|
0x8979d54672b5a74aL } },
|
|
/* 20 << 77 */
|
|
{ { 0xa0f726bc19f9e967L,0xd9d03152e8fbbf4eL,0xcfd6f51db7707d40L,
|
|
0x633084d963f6e6e0L },
|
|
{ 0xedcd9cdc55667eafL,0x73b7f92b2e44d56fL,0xfb2e39b64e962b14L,
|
|
0x7d408f6ef671fcbfL } },
|
|
/* 21 << 77 */
|
|
{ { 0xcc634ddc164a89bbL,0x74a42bb23ef3bd05L,0x1280dbb2428decbbL,
|
|
0x6103f6bb402c8596L },
|
|
{ 0xfa2bf581355a5752L,0x562f96a800946674L,0x4e4ca16d6da0223bL,
|
|
0xfe47819f28d3aa25L } },
|
|
/* 22 << 77 */
|
|
{ { 0x9eea3075f8dfcf8aL,0xa284f0aa95669825L,0xb3fca250867d3fd8L,
|
|
0x20757b5f269d691eL },
|
|
{ 0xf2c2402093b8a5deL,0xd3f93359ebc06da6L,0x1178293eb2739c33L,
|
|
0xd2a3e770bcd686e5L } },
|
|
/* 23 << 77 */
|
|
{ { 0xa76f49f4cd941534L,0x0d37406be3c71c0eL,0x172d93973b97f7e3L,
|
|
0xec17e239bd7fd0deL },
|
|
{ 0xe32905516f496ba2L,0x6a69317236ad50e7L,0xc4e539a283e7eff5L,
|
|
0x752737e718e1b4cfL } },
|
|
/* 24 << 77 */
|
|
{ { 0xa2f7932c68af43eeL,0x5502468e703d00bdL,0xe5dc978f2fb061f5L,
|
|
0xc9a1904a28c815adL },
|
|
{ 0xd3af538d470c56a4L,0x159abc5f193d8cedL,0x2a37245f20108ef3L,
|
|
0xfa17081e223f7178L } },
|
|
/* 25 << 77 */
|
|
{ { 0x27b0fb2b10c8c0f5L,0x2102c3ea40650547L,0x594564df8ac3bfa7L,
|
|
0x98102033509dad96L },
|
|
{ 0x6989643ff1d18a13L,0x35eebd91d7fc5af0L,0x078d096afaeaafd8L,
|
|
0xb7a89341def3de98L } },
|
|
/* 26 << 77 */
|
|
{ { 0x2a206e8decf2a73aL,0x066a63978e551994L,0x3a6a088ab98d53a2L,
|
|
0x0ce7c67c2d1124aaL },
|
|
{ 0x48cec671759a113cL,0xe3b373d34f6f67faL,0x5455d479fd36727bL,
|
|
0xe5a428eea13c0d81L } },
|
|
/* 27 << 77 */
|
|
{ { 0xb853dbc81c86682bL,0xb78d2727b8d02b2aL,0xaaf69bed8ebc329aL,
|
|
0xdb6b40b3293b2148L },
|
|
{ 0xe42ea77db8c4961fL,0xb1a12f7c20e5e0abL,0xa0ec527479e8b05eL,
|
|
0x68027391fab60a80L } },
|
|
/* 28 << 77 */
|
|
{ { 0x6bfeea5f16b1bd5eL,0xf957e4204de30ad3L,0xcbaf664e6a353b9eL,
|
|
0x5c87331226d14febL },
|
|
{ 0x4e87f98cb65f57cbL,0xdb60a6215e0cdd41L,0x67c16865a6881440L,
|
|
0x1093ef1a46ab52aaL } },
|
|
/* 29 << 77 */
|
|
{ { 0xc095afb53f4ece64L,0x6a6bb02e7604551aL,0x55d44b4e0b26b8cdL,
|
|
0xe5f9a999f971268aL },
|
|
{ 0xc08ec42511a7de84L,0x83568095fda469ddL,0x737bfba16c6c90a2L,
|
|
0x1cb9c4a0be229831L } },
|
|
/* 30 << 77 */
|
|
{ { 0x93bccbbabb2eec64L,0xa0c23b64da03adbeL,0x5f7aa00ae0e86ac4L,
|
|
0x470b941efc1401e6L },
|
|
{ 0x5ad8d6799df43574L,0x4ccfb8a90f65d810L,0x1bce80e3aa7fbd81L,
|
|
0x273291ad9508d20aL } },
|
|
/* 31 << 77 */
|
|
{ { 0xf5c4b46b42a92806L,0x810684eca86ab44aL,0x4591640bca0bc9f8L,
|
|
0xb5efcdfc5c4b6054L },
|
|
{ 0x16fc89076e9edd12L,0xe29d0b50d4d792f9L,0xa45fd01c9b03116dL,
|
|
0x85035235c81765a4L } },
|
|
/* 32 << 77 */
|
|
{ { 0x1fe2a9b2b4b4b67cL,0xc1d10df0e8020604L,0x9d64abfcbc8058d8L,
|
|
0x8943b9b2712a0fbbL },
|
|
{ 0x90eed9143b3def04L,0x85ab3aa24ce775ffL,0x605fd4ca7bbc9040L,
|
|
0x8b34a564e2c75dfbL } },
|
|
/* 33 << 77 */
|
|
{ { 0x41ffc94a10358560L,0x2d8a50729e5c28aaL,0xe915a0fc4cc7eb15L,
|
|
0xe9efab058f6d0f5dL },
|
|
{ 0xdbab47a9d19e9b91L,0x8cfed7450276154cL,0x154357ae2cfede0dL,
|
|
0x520630df19f5a4efL } },
|
|
/* 34 << 77 */
|
|
{ { 0x25759f7ce382360fL,0xb6db05c988bf5857L,0x2917d61d6c58d46cL,
|
|
0x14f8e491fd20cb7aL },
|
|
{ 0xb68a727a11c20340L,0x0386f86faf7ccbb6L,0x5c8bc6ccfee09a20L,
|
|
0x7d76ff4abb7eea35L } },
|
|
/* 35 << 77 */
|
|
{ { 0xa7bdebe7db15be7aL,0x67a08054d89f0302L,0x56bf0ea9c1193364L,
|
|
0xc824446762837ebeL },
|
|
{ 0x32bd8e8b20d841b8L,0x127a0548dbb8a54fL,0x83dd4ca663b20236L,
|
|
0x87714718203491faL } },
|
|
/* 36 << 77 */
|
|
{ { 0x4dabcaaaaa8a5288L,0x91cc0c8aaf23a1c9L,0x34c72c6a3f220e0cL,
|
|
0xbcc20bdf1232144aL },
|
|
{ 0x6e2f42daa20ede1bL,0xc441f00c74a00515L,0xbf46a5b6734b8c4bL,
|
|
0x574095037b56c9a4L } },
|
|
/* 37 << 77 */
|
|
{ { 0x9f735261e4585d45L,0x9231faed6734e642L,0x1158a176be70ee6cL,
|
|
0x35f1068d7c3501bfL },
|
|
{ 0x6beef900a2d26115L,0x649406f2ef0afee3L,0x3f43a60abc2420a1L,
|
|
0x509002a7d5aee4acL } },
|
|
/* 38 << 77 */
|
|
{ { 0xb46836a53ff3571bL,0x24f98b78837927c1L,0x6254256a4533c716L,
|
|
0xf27abb0bd07ee196L },
|
|
{ 0xd7cf64fc5c6d5bfdL,0x6915c751f0cd7a77L,0xd9f590128798f534L,
|
|
0x772b0da8f81d8b5fL } },
|
|
/* 39 << 77 */
|
|
{ { 0x1244260c2e03fa69L,0x36cf0e3a3be1a374L,0x6e7c1633ef06b960L,
|
|
0xa71a4c55671f90f6L },
|
|
{ 0x7a94125133c673dbL,0xc0bea51073e8c131L,0x61a8a699d4f6c734L,
|
|
0x25e78c88341ed001L } },
|
|
/* 40 << 77 */
|
|
{ { 0x5c18acf88e2f7d90L,0xfdbf33d777be32cdL,0x0a085cd7d2eb5ee9L,
|
|
0x2d702cfbb3201115L },
|
|
{ 0xb6e0ebdb85c88ce8L,0x23a3ce3c1e01d617L,0x3041618e567333acL,
|
|
0x9dd0fd8f157edb6bL } },
|
|
/* 41 << 77 */
|
|
{ { 0x27f74702b57872b8L,0x2ef26b4f657d5fe1L,0x95426f0a57cf3d40L,
|
|
0x847e2ad165a6067aL },
|
|
{ 0xd474d9a009996a74L,0x16a56acd2a26115cL,0x02a615c3d16f4d43L,
|
|
0xcc3fc965aadb85b7L } },
|
|
/* 42 << 77 */
|
|
{ { 0x386bda73ce07d1b0L,0xd82910c258ad4178L,0x124f82cfcd2617f4L,
|
|
0xcc2f5e8def691770L },
|
|
{ 0x82702550b8c30cccL,0x7b856aea1a8e575aL,0xbb822fefb1ab9459L,
|
|
0x085928bcec24e38eL } },
|
|
/* 43 << 77 */
|
|
{ { 0x5d0402ecba8f4b4dL,0xc07cd4ba00b4d58bL,0x5d8dffd529227e7aL,
|
|
0x61d44d0c31bf386fL },
|
|
{ 0xe486dc2b135e6f4dL,0x680962ebe79410efL,0xa61bd343f10088b5L,
|
|
0x6aa76076e2e28686L } },
|
|
/* 44 << 77 */
|
|
{ { 0x80463d118fb98871L,0xcb26f5c3bbc76affL,0xd4ab8eddfbe03614L,
|
|
0xc8eb579bc0cf2deeL },
|
|
{ 0xcc004c15c93bae41L,0x46fbae5d3aeca3b2L,0x671235cf0f1e9ab1L,
|
|
0xadfba9349ec285c1L } },
|
|
/* 45 << 77 */
|
|
{ { 0x88ded013f216c980L,0xc8ac4fb8f79e0bc1L,0xa29b89c6fb97a237L,
|
|
0xb697b7809922d8e7L },
|
|
{ 0x3142c639ddb945b5L,0x447b06c7e094c3a9L,0xcdcb364272266c90L,
|
|
0x633aad08a9385046L } },
|
|
/* 46 << 77 */
|
|
{ { 0xa36c936bb57c6477L,0x871f8b64e94dbcc6L,0x28d0fb62a591a67bL,
|
|
0x9d40e081c1d926f5L },
|
|
{ 0x3111eaf6f2d84b5aL,0x228993f9a565b644L,0x0ccbf5922c83188bL,
|
|
0xf87b30ab3df3e197L } },
|
|
/* 47 << 77 */
|
|
{ { 0xb8658b317642bca8L,0x1a032d7f52800f17L,0x051dcae579bf9445L,
|
|
0xeba6b8ee54a2e253L },
|
|
{ 0x5c8b9cadd4485692L,0x84bda40e8986e9beL,0xd16d16a42f0db448L,
|
|
0x8ec80050a14d4188L } },
|
|
/* 48 << 77 */
|
|
{ { 0xb2b2610798fa7aaaL,0x41209ee4f073aa4eL,0xf1570359f2d6b19bL,
|
|
0xcbe6868cfc577cafL },
|
|
{ 0x186c4bdc32c04dd3L,0xa6c35faecfeee397L,0xb4a1b312f086c0cfL,
|
|
0xe0a5ccc6d9461fe2L } },
|
|
/* 49 << 77 */
|
|
{ { 0xc32278aa1536189fL,0x1126c55fba6df571L,0x0f71a602b194560eL,
|
|
0x8b2d7405324bd6e1L },
|
|
{ 0x8481939e3738be71L,0xb5090b1a1a4d97a9L,0x116c65a3f05ba915L,
|
|
0x21863ad3aae448aaL } },
|
|
/* 50 << 77 */
|
|
{ { 0xd24e2679a7aae5d3L,0x7076013d0de5c1c4L,0x2d50f8babb05b629L,
|
|
0x73c1abe26e66efbbL },
|
|
{ 0xefd4b422f2488af7L,0xe4105d02663ba575L,0x7eb60a8b53a69457L,
|
|
0x62210008c945973bL } },
|
|
/* 51 << 77 */
|
|
{ { 0xfb25547877a50ec6L,0xbf0392f70a37a72cL,0xa0a7a19c4be18e7aL,
|
|
0x90d8ea1625b1e0afL },
|
|
{ 0x7582a293ef953f57L,0x90a64d05bdc5465aL,0xca79c497e2510717L,
|
|
0x560dbb7c18cb641fL } },
|
|
/* 52 << 77 */
|
|
{ { 0x1d8e32864b66abfbL,0xd26f52e559030900L,0x1ee3f6435584941aL,
|
|
0x6d3b3730569f5958L },
|
|
{ 0x9ff2a62f4789dba5L,0x91fcb81572b5c9b7L,0xf446cb7d6c8f9a0eL,
|
|
0x48f625c139b7ecb5L } },
|
|
/* 53 << 77 */
|
|
{ { 0xbabae8011c6219b8L,0xe7a562d928ac2f23L,0xe1b4873226e20588L,
|
|
0x06ee1cad775af051L },
|
|
{ 0xda29ae43faff79f7L,0xc141a412652ee9e0L,0x1e127f6f195f4bd0L,
|
|
0x29c6ab4f072f34f8L } },
|
|
/* 54 << 77 */
|
|
{ { 0x7b7c147730448112L,0x82b51af1e4a38656L,0x2bf2028a2f315010L,
|
|
0xc9a4a01f6ea88cd4L },
|
|
{ 0xf63e95d8257e5818L,0xdd8efa10b4519b16L,0xed8973e00da910bfL,
|
|
0xed49d0775c0fe4a9L } },
|
|
/* 55 << 77 */
|
|
{ { 0xac3aac5eb7caee1eL,0x1033898da7f4da57L,0x42145c0e5c6669b9L,
|
|
0x42daa688c1aa2aa0L },
|
|
{ 0x629cc15c1a1d885aL,0x25572ec0f4b76817L,0x8312e4359c8f8f28L,
|
|
0x8107f8cd81965490L } },
|
|
/* 56 << 77 */
|
|
{ { 0x516ff3a36fa6110cL,0x74fb1eb1fb93561fL,0x6c0c90478457522bL,
|
|
0xcfd321046bb8bdc6L },
|
|
{ 0x2d6884a2cc80ad57L,0x7c27fc3586a9b637L,0x3461baedadf4e8cdL,
|
|
0x1d56251a617242f0L } },
|
|
/* 57 << 77 */
|
|
{ { 0x0b80d209c955bef4L,0xdf02cad206adb047L,0xf0d7cb915ec74feeL,
|
|
0xd25033751111ba44L },
|
|
{ 0x9671755edf53cb36L,0x54dcb6123368551bL,0x66d69aacc8a025a4L,
|
|
0x6be946c6e77ef445L } },
|
|
/* 58 << 77 */
|
|
{ { 0x719946d1a995e094L,0x65e848f6e51e04d8L,0xe62f33006a1e3113L,
|
|
0x1541c7c1501de503L },
|
|
{ 0x4daac9faf4acfadeL,0x0e58589744cd0b71L,0x544fd8690a51cd77L,
|
|
0x60fc20ed0031016dL } },
|
|
/* 59 << 77 */
|
|
{ { 0x58b404eca4276867L,0x46f6c3cc34f34993L,0x477ca007c636e5bdL,
|
|
0x8018f5e57c458b47L },
|
|
{ 0xa1202270e47b668fL,0xcef48ccdee14f203L,0x23f98bae62ff9b4dL,
|
|
0x55acc035c589edddL } },
|
|
/* 60 << 77 */
|
|
{ { 0x3fe712af64db4444L,0x19e9d634becdd480L,0xe08bc047a930978aL,
|
|
0x2dbf24eca1280733L },
|
|
{ 0x3c0ae38c2cd706b2L,0x5b012a5b359017b9L,0x3943c38c72e0f5aeL,
|
|
0x786167ea57176fa3L } },
|
|
/* 61 << 77 */
|
|
{ { 0xe5f9897d594881dcL,0x6b5efad8cfb820c1L,0xb2179093d55018deL,
|
|
0x39ad7d320bac56ceL },
|
|
{ 0xb55122e02cfc0e81L,0x117c4661f6d89daaL,0x362d01e1cb64fa09L,
|
|
0x6a309b4e3e9c4dddL } },
|
|
/* 62 << 77 */
|
|
{ { 0xfa979fb7abea49b1L,0xb4b1d27d10e2c6c5L,0xbd61c2c423afde7aL,
|
|
0xeb6614f89786d358L },
|
|
{ 0x4a5d816b7f6f7459L,0xe431a44f09360e7bL,0x8c27a032c309914cL,
|
|
0xcea5d68acaede3d8L } },
|
|
/* 63 << 77 */
|
|
{ { 0x3668f6653a0a3f95L,0x893694167ceba27bL,0x89981fade4728fe9L,
|
|
0x7102c8a08a093562L },
|
|
{ 0xbb80310e235d21c8L,0x505e55d1befb7f7bL,0xa0a9081112958a67L,
|
|
0xd67e106a4d851fefL } },
|
|
/* 64 << 77 */
|
|
{ { 0xb84011a9431dd80eL,0xeb7c7cca73306cd9L,0x20fadd29d1b3b730L,
|
|
0x83858b5bfe37b3d3L },
|
|
{ 0xbf4cd193b6251d5cL,0x1cca1fd31352d952L,0xc66157a490fbc051L,
|
|
0x7990a63889b98636L } },
|
|
/* 0 << 84 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 84 */
|
|
{ { 0xe5aa692a87dec0e1L,0x010ded8df7b39d00L,0x7b1b80c854cfa0b5L,
|
|
0x66beb876a0f8ea28L },
|
|
{ 0x50d7f5313476cd0eL,0xa63d0e65b08d3949L,0x1a09eea953479fc6L,
|
|
0x82ae9891f499e742L } },
|
|
/* 2 << 84 */
|
|
{ { 0xab58b9105ca7d866L,0x582967e23adb3b34L,0x89ae4447cceac0bcL,
|
|
0x919c667c7bf56af5L },
|
|
{ 0x9aec17b160f5dcd7L,0xec697b9fddcaadbcL,0x0b98f341463467f5L,
|
|
0xb187f1f7a967132fL } },
|
|
/* 3 << 84 */
|
|
{ { 0x90fe7a1d214aeb18L,0x1506af3c741432f7L,0xbb5565f9e591a0c4L,
|
|
0x10d41a77b44f1bc3L },
|
|
{ 0xa09d65e4a84bde96L,0x42f060d8f20a6a1cL,0x652a3bfdf27f9ce7L,
|
|
0xb6bdb65c3b3d739fL } },
|
|
/* 4 << 84 */
|
|
{ { 0xeb5ddcb6ec7fae9fL,0x995f2714efb66e5aL,0xdee95d8e69445d52L,
|
|
0x1b6c2d4609e27620L },
|
|
{ 0x32621c318129d716L,0xb03909f10958c1aaL,0x8c468ef91af4af63L,
|
|
0x162c429ffba5cdf6L } },
|
|
/* 5 << 84 */
|
|
{ { 0x2f682343753b9371L,0x29cab45a5f1f9cd7L,0x571623abb245db96L,
|
|
0xc507db093fd79999L },
|
|
{ 0x4e2ef652af036c32L,0x86f0cc7805018e5cL,0xc10a73d4ab8be350L,
|
|
0x6519b3977e826327L } },
|
|
/* 6 << 84 */
|
|
{ { 0xe8cb5eef9c053df7L,0x8de25b37b300ea6fL,0xdb03fa92c849cffbL,
|
|
0x242e43a7e84169bbL },
|
|
{ 0xe4fa51f4dd6f958eL,0x6925a77ff4445a8dL,0xe6e72a50e90d8949L,
|
|
0xc66648e32b1f6390L } },
|
|
/* 7 << 84 */
|
|
{ { 0xb2ab1957173e460cL,0x1bbbce7530704590L,0xc0a90dbddb1c7162L,
|
|
0x505e399e15cdd65dL },
|
|
{ 0x68434dcb57797ab7L,0x60ad35ba6a2ca8e8L,0x4bfdb1e0de3336c1L,
|
|
0xbbef99ebd8b39015L } },
|
|
/* 8 << 84 */
|
|
{ { 0x6c3b96f31711ebecL,0x2da40f1fce98fdc4L,0xb99774d357b4411fL,
|
|
0x87c8bdf415b65bb6L },
|
|
{ 0xda3a89e3c2eef12dL,0xde95bb9b3c7471f3L,0x600f225bd812c594L,
|
|
0x54907c5d2b75a56bL } },
|
|
/* 9 << 84 */
|
|
{ { 0xa93cc5f08db60e35L,0x743e3cd6fa833319L,0x7dad5c41f81683c9L,
|
|
0x70c1e7d99c34107eL },
|
|
{ 0x0edc4a39a6be0907L,0x36d4703586d0b7d3L,0x8c76da03272bfa60L,
|
|
0x0b4a07ea0f08a414L } },
|
|
/* 10 << 84 */
|
|
{ { 0x699e4d2945c1dd53L,0xcadc5898231debb5L,0xdf49fcc7a77f00e0L,
|
|
0x93057bbfa73e5a0eL },
|
|
{ 0x2f8b7ecd027a4cd1L,0x114734b3c614011aL,0xe7a01db767677c68L,
|
|
0x89d9be5e7e273f4fL } },
|
|
/* 11 << 84 */
|
|
{ { 0xd225cb2e089808efL,0xf1f7a27dd59e4107L,0x53afc7618211b9c9L,
|
|
0x0361bc67e6819159L },
|
|
{ 0x2a865d0b7f071426L,0x6a3c1810e7072567L,0x3e3bca1e0d6bcabdL,
|
|
0xa1b02bc1408591bcL } },
|
|
/* 12 << 84 */
|
|
{ { 0xe0deee5931fba239L,0xf47424d398bd91d1L,0x0f8886f4071a3c1dL,
|
|
0x3f7d41e8a819233bL },
|
|
{ 0x708623c2cf6eb998L,0x86bb49af609a287fL,0x942bb24963c90762L,
|
|
0x0ef6eea555a9654bL } },
|
|
/* 13 << 84 */
|
|
{ { 0x5f6d2d7236f5defeL,0xfa9922dc56f99176L,0x6c8c5ecef78ce0c7L,
|
|
0x7b44589dbe09b55eL },
|
|
{ 0xe11b3bca9ea83770L,0xd7fa2c7f2ab71547L,0x2a3dd6fa2a1ddcc0L,
|
|
0x09acb4305a7b7707L } },
|
|
/* 14 << 84 */
|
|
{ { 0x4add4a2e649d4e57L,0xcd53a2b01917526eL,0xc526233020b44ac4L,
|
|
0x4028746abaa2c31dL },
|
|
{ 0x5131839064291d4cL,0xbf48f151ee5ad909L,0xcce57f597b185681L,
|
|
0x7c3ac1b04854d442L } },
|
|
/* 15 << 84 */
|
|
{ { 0x65587dc3c093c171L,0xae7acb2424f42b65L,0x5a338adb955996cbL,
|
|
0xc8e656756051f91bL },
|
|
{ 0x66711fba28b8d0b1L,0x15d74137b6c10a90L,0x70cdd7eb3a232a80L,
|
|
0xc9e2f07f6191ed24L } },
|
|
/* 16 << 84 */
|
|
{ { 0xa80d1db6f79588c0L,0xfa52fc69b55768ccL,0x0b4df1ae7f54438aL,
|
|
0x0cadd1a7f9b46a4fL },
|
|
{ 0xb40ea6b31803dd6fL,0x488e4fa555eaae35L,0x9f047d55382e4e16L,
|
|
0xc9b5b7e02f6e0c98L } },
|
|
/* 17 << 84 */
|
|
{ { 0x6b1bd2d395762649L,0xa9604ee7c7aea3f6L,0x3646ff276dc6f896L,
|
|
0x9bf0e7f52860bad1L },
|
|
{ 0x2d92c8217cb44b92L,0xa2f5ce63aea9c182L,0xd0a2afb19154a5fdL,
|
|
0x482e474c95801da6L } },
|
|
/* 18 << 84 */
|
|
{ { 0xc19972d0b611c24bL,0x1d468e6560a8f351L,0xeb7580697bcf6421L,
|
|
0xec9dd0ee88fbc491L },
|
|
{ 0x5b59d2bf956c2e32L,0x73dc6864dcddf94eL,0xfd5e2321bcee7665L,
|
|
0xa7b4f8ef5e9a06c4L } },
|
|
/* 19 << 84 */
|
|
{ { 0xfba918dd7280f855L,0xbbaac2608baec688L,0xa3b3f00f33400f42L,
|
|
0x3d2dba2966f2e6e4L },
|
|
{ 0xb6f71a9498509375L,0x8f33031fcea423ccL,0x009b8dd04807e6fbL,
|
|
0x5163cfe55cdb954cL } },
|
|
/* 20 << 84 */
|
|
{ { 0x03cc8f17cf41c6e8L,0xf1f03c2a037b925cL,0xc39c19cc66d2427cL,
|
|
0x823d24ba7b6c18e4L },
|
|
{ 0x32ef9013901f0b4fL,0x684360f1f8941c2eL,0x0ebaff522c28092eL,
|
|
0x7891e4e3256c932fL } },
|
|
/* 21 << 84 */
|
|
{ { 0x51264319ac445e3dL,0x553432e78ea74381L,0xe6eeaa6967e9c50aL,
|
|
0x27ced28462e628c7L },
|
|
{ 0x3f96d3757a4afa57L,0xde0a14c3e484c150L,0x364a24eb38bd9923L,
|
|
0x1df18da0e5177422L } },
|
|
/* 22 << 84 */
|
|
{ { 0x174e8f82d8d38a9bL,0x2e97c600e7de1391L,0xc5709850a1c175ddL,
|
|
0x969041a032ae5035L },
|
|
{ 0xcbfd533b76a2086bL,0xd6bba71bd7c2e8feL,0xb2d58ee6099dfb67L,
|
|
0x3a8b342d064a85d9L } },
|
|
/* 23 << 84 */
|
|
{ { 0x3bc07649522f9be3L,0x690c075bdf1f49a8L,0x80e1aee83854ec42L,
|
|
0x2a7dbf4417689dc7L },
|
|
{ 0xc004fc0e3faf4078L,0xb2f02e9edf11862cL,0xf10a5e0fa0a1b7b3L,
|
|
0x30aca6238936ec80L } },
|
|
/* 24 << 84 */
|
|
{ { 0xf83cbf0502f40d9aL,0x4681c4682c318a4dL,0x985756180e9c2674L,
|
|
0xbe79d0461847092eL },
|
|
{ 0xaf1e480a78bd01e0L,0x6dd359e472a51db9L,0x62ce3821e3afbab6L,
|
|
0xc5cee5b617733199L } },
|
|
/* 25 << 84 */
|
|
{ { 0xe08b30d46ffd9fbbL,0x6e5bc69936c610b7L,0xf343cff29ce262cfL,
|
|
0xca2e4e3568b914c1L },
|
|
{ 0x011d64c016de36c5L,0xe0b10fdd42e2b829L,0x789429816685aaf8L,
|
|
0xe7511708230ede97L } },
|
|
/* 26 << 84 */
|
|
{ { 0x671ed8fc3b922bf8L,0xe4d8c0a04c29b133L,0x87eb12393b6e99c4L,
|
|
0xaff3974c8793bebaL },
|
|
{ 0x037494052c18df9bL,0xc5c3a29391007139L,0x6a77234fe37a0b95L,
|
|
0x02c29a21b661c96bL } },
|
|
/* 27 << 84 */
|
|
{ { 0xc3aaf1d6141ecf61L,0x9195509e3bb22f53L,0x2959740422d51357L,
|
|
0x1b083822537bed60L },
|
|
{ 0xcd7d6e35e07289f0L,0x1f94c48c6dd86effL,0xc8bb1f82eb0f9cfaL,
|
|
0x9ee0b7e61b2eb97dL } },
|
|
/* 28 << 84 */
|
|
{ { 0x5a52fe2e34d74e31L,0xa352c3103bf79ab6L,0x97ff6c5aabfeeb8fL,
|
|
0xbfbe8feff5c97305L },
|
|
{ 0xd6081ce6a7904608L,0x1f812f3ac4fca249L,0x9b24bc9ab9e5e200L,
|
|
0x91022c6738012ee8L } },
|
|
/* 29 << 84 */
|
|
{ { 0xe83d9c5d30a713a1L,0x4876e3f084ef0f93L,0xc9777029c1fbf928L,
|
|
0xef7a6bb3bce7d2a4L },
|
|
{ 0xb8067228dfa2a659L,0xd5cd3398d877a48fL,0xbea4fd8f025d0f3fL,
|
|
0xd67d2e352eae7c2bL } },
|
|
/* 30 << 84 */
|
|
{ { 0x184de7d7cc5f4394L,0xb5551b5c4536e142L,0x2e89b212d34aa60aL,
|
|
0x14a96feaf50051d5L },
|
|
{ 0x4e21ef740d12bb0bL,0xc522f02060b9677eL,0x8b12e4672df7731dL,
|
|
0x39f803827b326d31L } },
|
|
/* 31 << 84 */
|
|
{ { 0xdfb8630c39024a94L,0xaacb96a897319452L,0xd68a3961eda3867cL,
|
|
0x0c58e2b077c4ffcaL },
|
|
{ 0x3d545d634da919faL,0xef79b69af15e2289L,0x54bc3d3d808bab10L,
|
|
0xc8ab300745f82c37L } },
|
|
/* 32 << 84 */
|
|
{ { 0xc12738b67c4a658aL,0xb3c4763940e72182L,0x3b77be468798e44fL,
|
|
0xdc047df217a7f85fL },
|
|
{ 0x2439d4c55e59d92dL,0xcedca475e8e64d8dL,0xa724cd0d87ca9b16L,
|
|
0x35e4fd59a5540dfeL } },
|
|
/* 33 << 84 */
|
|
{ { 0xf8c1ff18e4bcf6b1L,0x856d6285295018faL,0x433f665c3263c949L,
|
|
0xa6a76dd6a1f21409L },
|
|
{ 0x17d32334cc7b4f79L,0xa1d0312206720e4aL,0xadb6661d81d9bed5L,
|
|
0xf0d6fb0211db15d1L } },
|
|
/* 34 << 84 */
|
|
{ { 0x7fd11ad51fb747d2L,0xab50f9593033762bL,0x2a7e711bfbefaf5aL,
|
|
0xc73932783fef2bbfL },
|
|
{ 0xe29fa2440df6f9beL,0x9092757b71efd215L,0xee60e3114f3d6fd9L,
|
|
0x338542d40acfb78bL } },
|
|
/* 35 << 84 */
|
|
{ { 0x44a23f0838961a0fL,0x1426eade986987caL,0x36e6ee2e4a863cc6L,
|
|
0x48059420628b8b79L },
|
|
{ 0x30303ad87396e1deL,0x5c8bdc4838c5aad1L,0x3e40e11f5c8f5066L,
|
|
0xabd6e7688d246bbdL } },
|
|
/* 36 << 84 */
|
|
{ { 0x68aa40bb23330a01L,0xd23f5ee4c34eafa0L,0x3bbee3155de02c21L,
|
|
0x18dd4397d1d8dd06L },
|
|
{ 0x3ba1939a122d7b44L,0xe6d3b40aa33870d6L,0x8e620f701c4fe3f8L,
|
|
0xf6bba1a5d3a50cbfL } },
|
|
/* 37 << 84 */
|
|
{ { 0x4a78bde5cfc0aee0L,0x847edc46c08c50bdL,0xbaa2439cad63c9b2L,
|
|
0xceb4a72810fc2acbL },
|
|
{ 0xa419e40e26da033dL,0x6cc3889d03e02683L,0x1cd28559fdccf725L,
|
|
0x0fd7e0f18d13d208L } },
|
|
/* 38 << 84 */
|
|
{ { 0x01b9733b1f0df9d4L,0x8cc2c5f3a2b5e4f3L,0x43053bfa3a304fd4L,
|
|
0x8e87665c0a9f1aa7L },
|
|
{ 0x087f29ecd73dc965L,0x15ace4553e9023dbL,0x2370e3092bce28b4L,
|
|
0xf9723442b6b1e84aL } },
|
|
/* 39 << 84 */
|
|
{ { 0xbeee662eb72d9f26L,0xb19396def0e47109L,0x85b1fa73e13289d0L,
|
|
0x436cf77e54e58e32L },
|
|
{ 0x0ec833b3e990ef77L,0x7373e3ed1b11fc25L,0xbe0eda870fc332ceL,
|
|
0xced049708d7ea856L } },
|
|
/* 40 << 84 */
|
|
{ { 0xf85ff7857e977ca0L,0xb66ee8dadfdd5d2bL,0xf5e37950905af461L,
|
|
0x587b9090966d487cL },
|
|
{ 0x6a198a1b32ba0127L,0xa7720e07141615acL,0xa23f3499996ef2f2L,
|
|
0xef5f64b4470bcb3dL } },
|
|
/* 41 << 84 */
|
|
{ { 0xa526a96292b8c559L,0x0c14aac069740a0fL,0x0d41a9e3a6bdc0a5L,
|
|
0x97d521069c48aef4L },
|
|
{ 0xcf16bd303e7c253bL,0xcc834b1a47fdedc1L,0x7362c6e5373aab2eL,
|
|
0x264ed85ec5f590ffL } },
|
|
/* 42 << 84 */
|
|
{ { 0x7a46d9c066d41870L,0xa50c20b14787ba09L,0x185e7e51e3d44635L,
|
|
0xb3b3e08031e2d8dcL },
|
|
{ 0xbed1e558a179e9d9L,0x2daa3f7974a76781L,0x4372baf23a40864fL,
|
|
0x46900c544fe75cb5L } },
|
|
/* 43 << 84 */
|
|
{ { 0xb95f171ef76765d0L,0x4ad726d295c87502L,0x2ec769da4d7c99bdL,
|
|
0x5e2ddd19c36cdfa8L },
|
|
{ 0xc22117fca93e6deaL,0xe8a2583b93771123L,0xbe2f6089fa08a3a2L,
|
|
0x4809d5ed8f0e1112L } },
|
|
/* 44 << 84 */
|
|
{ { 0x3b414aa3da7a095eL,0x9049acf126f5aaddL,0x78d46a4d6be8b84aL,
|
|
0xd66b1963b732b9b3L },
|
|
{ 0x5c2ac2a0de6e9555L,0xcf52d098b5bd8770L,0x15a15fa60fd28921L,
|
|
0x56ccb81e8b27536dL } },
|
|
/* 45 << 84 */
|
|
{ { 0x0f0d8ab89f4ccbb8L,0xed5f44d2db221729L,0x4314198800bed10cL,
|
|
0xc94348a41d735b8bL },
|
|
{ 0x79f3e9c429ef8479L,0x4c13a4e3614c693fL,0x32c9af568e143a14L,
|
|
0xbc517799e29ac5c4L } },
|
|
/* 46 << 84 */
|
|
{ { 0x05e179922774856fL,0x6e52fb056c1bf55fL,0xaeda4225e4f19e16L,
|
|
0x70f4728aaf5ccb26L },
|
|
{ 0x5d2118d1b2947f22L,0xc827ea16281d6fb9L,0x8412328d8cf0eabdL,
|
|
0x45ee9fb203ef9dcfL } },
|
|
/* 47 << 84 */
|
|
{ { 0x8e700421bb937d63L,0xdf8ff2d5cc4b37a6L,0xa4c0d5b25ced7b68L,
|
|
0x6537c1efc7308f59L },
|
|
{ 0x25ce6a263b37f8e8L,0x170e9a9bdeebc6ceL,0xdd0379528728d72cL,
|
|
0x445b0e55850154bcL } },
|
|
/* 48 << 84 */
|
|
{ { 0x4b7d0e0683a7337bL,0x1e3416d4ffecf249L,0x24840eff66a2b71fL,
|
|
0xd0d9a50ab37cc26dL },
|
|
{ 0xe21981506fe28ef7L,0x3cc5ef1623324c7fL,0x220f3455769b5263L,
|
|
0xe2ade2f1a10bf475L } },
|
|
/* 49 << 84 */
|
|
{ { 0x28cd20fa458d3671L,0x1549722c2dc4847bL,0x6dd01e55591941e3L,
|
|
0x0e6fbcea27128ccbL },
|
|
{ 0xae1a1e6b3bef0262L,0xfa8c472c8f54e103L,0x7539c0a872c052ecL,
|
|
0xd7b273695a3490e9L } },
|
|
/* 50 << 84 */
|
|
{ { 0x143fe1f171684349L,0x36b4722e32e19b97L,0xdc05922790980affL,
|
|
0x175c9c889e13d674L },
|
|
{ 0xa7de5b226e6bfdb1L,0x5ea5b7b2bedb4b46L,0xd5570191d34a6e44L,
|
|
0xfcf60d2ea24ff7e6L } },
|
|
/* 51 << 84 */
|
|
{ { 0x614a392d677819e1L,0x7be74c7eaa5a29e8L,0xab50fece63c85f3fL,
|
|
0xaca2e2a946cab337L },
|
|
{ 0x7f700388122a6fe3L,0xdb69f703882a04a8L,0x9a77935dcf7aed57L,
|
|
0xdf16207c8d91c86fL } },
|
|
/* 52 << 84 */
|
|
{ { 0x2fca49ab63ed9998L,0xa3125c44a77ddf96L,0x05dd8a8624344072L,
|
|
0xa023dda2fec3fb56L },
|
|
{ 0x421b41fc0c743032L,0x4f2120c15e438639L,0xfb7cae51c83c1b07L,
|
|
0xb2370caacac2171aL } },
|
|
/* 53 << 84 */
|
|
{ { 0x2eb2d9626cc820fbL,0x59feee5cb85a44bfL,0x94620fca5b6598f0L,
|
|
0x6b922cae7e314051L },
|
|
{ 0xff8745ad106bed4eL,0x546e71f5dfa1e9abL,0x935c1e481ec29487L,
|
|
0x9509216c4d936530L } },
|
|
/* 54 << 84 */
|
|
{ { 0xc7ca306785c9a2dbL,0xd6ae51526be8606fL,0x09dbcae6e14c651dL,
|
|
0xc9536e239bc32f96L },
|
|
{ 0xa90535a934521b03L,0xf39c526c878756ffL,0x383172ec8aedf03cL,
|
|
0x20a8075eefe0c034L } },
|
|
/* 55 << 84 */
|
|
{ { 0xf22f9c6264026422L,0x8dd1078024b9d076L,0x944c742a3bef2950L,
|
|
0x55b9502e88a2b00bL },
|
|
{ 0xa59e14b486a09817L,0xa39dd3ac47bb4071L,0x55137f663be0592fL,
|
|
0x07fcafd4c9e63f5bL } },
|
|
/* 56 << 84 */
|
|
{ { 0x963652ee346eb226L,0x7dfab085ec2facb7L,0x273bf2b8691add26L,
|
|
0x30d74540f2b46c44L },
|
|
{ 0x05e8e73ef2c2d065L,0xff9b8a00d42eeac9L,0x2fcbd20597209d22L,
|
|
0xeb740ffade14ea2cL } },
|
|
/* 57 << 84 */
|
|
{ { 0xc71ff913a8aef518L,0x7bfc74bbfff4cfa2L,0x1716680cb6b36048L,
|
|
0x121b2cce9ef79af1L },
|
|
{ 0xbff3c836a01eb3d3L,0x50eb1c6a5f79077bL,0xa48c32d6a004bbcfL,
|
|
0x47a593167d64f61dL } },
|
|
/* 58 << 84 */
|
|
{ { 0x6068147f93102016L,0x12c5f65494d12576L,0xefb071a7c9bc6b91L,
|
|
0x7c2da0c56e23ea95L },
|
|
{ 0xf4fd45b6d4a1dd5dL,0x3e7ad9b69122b13cL,0x342ca118e6f57a48L,
|
|
0x1c2e94a706f8288fL } },
|
|
/* 59 << 84 */
|
|
{ { 0x99e68f075a97d231L,0x7c80de974d838758L,0xbce0f5d005872727L,
|
|
0xbe5d95c219c4d016L },
|
|
{ 0x921d5cb19c2492eeL,0x42192dc1404d6fb3L,0x4c84dcd132f988d3L,
|
|
0xde26d61fa17b8e85L } },
|
|
/* 60 << 84 */
|
|
{ { 0xc466dcb6137c7408L,0x9a38d7b636a266daL,0x7ef5cb0683bebf1bL,
|
|
0xe5cdcbbf0fd014e3L },
|
|
{ 0x30aa376df65965a0L,0x60fe88c2ebb3e95eL,0x33fd0b6166ee6f20L,
|
|
0x8827dcdb3f41f0a0L } },
|
|
/* 61 << 84 */
|
|
{ { 0xbf8a9d240c56c690L,0x40265dadddb7641dL,0x522b05bf3a6b662bL,
|
|
0x466d1dfeb1478c9bL },
|
|
{ 0xaa6169621484469bL,0x0db6054902df8f9fL,0xc37bca023cb8bf51L,
|
|
0x5effe34621371ce8L } },
|
|
/* 62 << 84 */
|
|
{ { 0xe8f65264ff112c32L,0x8a9c736d7b971fb2L,0xa4f194707b75080dL,
|
|
0xfc3f2c5a8839c59bL },
|
|
{ 0x1d6c777e5aeb49c2L,0xf3db034dda1addfeL,0xd76fee5a5535affcL,
|
|
0x0853ac70b92251fdL } },
|
|
/* 63 << 84 */
|
|
{ { 0x37e3d5948b2a29d5L,0x28f1f4574de00ddbL,0x8083c1b5f42c328bL,
|
|
0xd8ef1d8fe493c73bL },
|
|
{ 0x96fb626041dc61bdL,0xf74e8a9d27ee2f8aL,0x7c605a802c946a5dL,
|
|
0xeed48d653839ccfdL } },
|
|
/* 64 << 84 */
|
|
{ { 0x9894344f3a29467aL,0xde81e949c51eba6dL,0xdaea066ba5e5c2f2L,
|
|
0x3fc8a61408c8c7b3L },
|
|
{ 0x7adff88f06d0de9fL,0xbbc11cf53b75ce0aL,0x9fbb7accfbbc87d5L,
|
|
0xa1458e267badfde2L } },
|
|
/* 0 << 91 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 91 */
|
|
{ { 0x1cb43668e039c256L,0x5f26fb8b7c17fd5dL,0xeee426af79aa062bL,
|
|
0x072002d0d78fbf04L },
|
|
{ 0x4c9ca237e84fb7e3L,0xb401d8a10c82133dL,0xaaa525926d7e4181L,
|
|
0xe943083373dbb152L } },
|
|
/* 2 << 91 */
|
|
{ { 0xf92dda31be24319aL,0x03f7d28be095a8e7L,0xa52fe84098782185L,
|
|
0x276ddafe29c24dbcL },
|
|
{ 0x80cd54961d7a64ebL,0xe43608897f1dbe42L,0x2f81a8778438d2d5L,
|
|
0x7e4d52a885169036L } },
|
|
/* 3 << 91 */
|
|
{ { 0x19e3d5b11d59715dL,0xc7eaa762d788983eL,0xe5a730b0abf1f248L,
|
|
0xfbab8084fae3fd83L },
|
|
{ 0x65e50d2153765b2fL,0xbdd4e083fa127f3dL,0x9cf3c074397b1b10L,
|
|
0x59f8090cb1b59fd3L } },
|
|
/* 4 << 91 */
|
|
{ { 0x7b15fd9d615faa8fL,0x8fa1eb40968554edL,0x7bb4447e7aa44882L,
|
|
0x2bb2d0d1029fff32L },
|
|
{ 0x075e2a646caa6d2fL,0x8eb879de22e7351bL,0xbcd5624e9a506c62L,
|
|
0x218eaef0a87e24dcL } },
|
|
/* 5 << 91 */
|
|
{ { 0x37e5684744ddfa35L,0x9ccfc5c5dab3f747L,0x9ac1df3f1ee96cf4L,
|
|
0x0c0571a13b480b8fL },
|
|
{ 0x2fbeb3d54b3a7b3cL,0x35c036695dcdbb99L,0x52a0f5dcb2415b3aL,
|
|
0xd57759b44413ed9aL } },
|
|
/* 6 << 91 */
|
|
{ { 0x1fe647d83d30a2c5L,0x0857f77ef78a81dcL,0x11d5a334131a4a9bL,
|
|
0xc0a94af929d393f5L },
|
|
{ 0xbc3a5c0bdaa6ec1aL,0xba9fe49388d2d7edL,0xbb4335b4bb614797L,
|
|
0x991c4d6872f83533L } },
|
|
/* 7 << 91 */
|
|
{ { 0x53258c28d2f01cb3L,0x93d6eaa3d75db0b1L,0x419a2b0de87d0db4L,
|
|
0xa1e48f03d8fe8493L },
|
|
{ 0xf747faf6c508b23aL,0xf137571a35d53549L,0x9f5e58e2fcf9b838L,
|
|
0xc7186ceea7fd3cf5L } },
|
|
/* 8 << 91 */
|
|
{ { 0x77b868cee978a1d3L,0xe3a68b337ab92d04L,0x5102979487a5b862L,
|
|
0x5f0606c33a61d41dL },
|
|
{ 0x2814be276f9326f1L,0x2f521c14c6fe3c2eL,0x17464d7dacdf7351L,
|
|
0x10f5f9d3777f7e44L } },
|
|
/* 9 << 91 */
|
|
{ { 0xce8e616b269fb37dL,0xaaf738047de62de5L,0xaba111754fdd4153L,
|
|
0x515759ba3770b49bL },
|
|
{ 0x8b09ebf8aa423a61L,0x592245a1cd41fb92L,0x1cba8ec19b4c8936L,
|
|
0xa87e91e3af36710eL } },
|
|
/* 10 << 91 */
|
|
{ { 0x1fd84ce43d34a2e3L,0xee3759ceb43b5d61L,0x895bc78c619186c7L,
|
|
0xf19c3809cbb9725aL },
|
|
{ 0xc0be21aade744b1fL,0xa7d222b060f8056bL,0x74be6157b23efe11L,
|
|
0x6fab2b4f0cd68253L } },
|
|
/* 11 << 91 */
|
|
{ { 0xad33ea5f4bf1d725L,0x9c1d8ee24f6c950fL,0x544ee78aa377af06L,
|
|
0x54f489bb94a113e1L },
|
|
{ 0x8f11d634992fb7e8L,0x0169a7aaa2a44347L,0x1d49d4af95020e00L,
|
|
0x95945722e08e120bL } },
|
|
/* 12 << 91 */
|
|
{ { 0xb6e33878a4d32282L,0xe36e029d48020ae7L,0xe05847fb37a9b750L,
|
|
0xf876812cb29e3819L },
|
|
{ 0x84ad138ed23a17f0L,0x6d7b4480f0b3950eL,0xdfa8aef42fd67ae0L,
|
|
0x8d3eea2452333af6L } },
|
|
/* 13 << 91 */
|
|
{ { 0x0d052075b15d5accL,0xc6d9c79fbd815bc4L,0x8dcafd88dfa36cf2L,
|
|
0x908ccbe238aa9070L },
|
|
{ 0x638722c4ba35afceL,0x5a3da8b0fd6abf0bL,0x2dce252cc9c335c1L,
|
|
0x84e7f0de65aa799bL } },
|
|
/* 14 << 91 */
|
|
{ { 0x2101a522b99a72cbL,0x06de6e6787618016L,0x5ff8c7cde6f3653eL,
|
|
0x0a821ab5c7a6754aL },
|
|
{ 0x7e3fa52b7cb0b5a2L,0xa7fb121cc9048790L,0x1a72502006ce053aL,
|
|
0xb490a31f04e929b0L } },
|
|
/* 15 << 91 */
|
|
{ { 0xe17be47d62dd61adL,0x781a961c6be01371L,0x1063bfd3dae3cbbaL,
|
|
0x356474067f73c9baL },
|
|
{ 0xf50e957b2736a129L,0xa6313702ed13f256L,0x9436ee653a19fcc5L,
|
|
0xcf2bdb29e7a4c8b6L } },
|
|
/* 16 << 91 */
|
|
{ { 0xb06b1244c5f95cd8L,0xda8c8af0f4ab95f4L,0x1bae59c2b9e5836dL,
|
|
0x07d51e7e3acffffcL },
|
|
{ 0x01e15e6ac2ccbcdaL,0x3bc1923f8528c3e0L,0x43324577a49fead4L,
|
|
0x61a1b8842aa7a711L } },
|
|
/* 17 << 91 */
|
|
{ { 0xf9a86e08700230efL,0x0af585a1bd19adf8L,0x7645f361f55ad8f2L,
|
|
0x6e67622346c3614cL },
|
|
{ 0x23cb257c4e774d3fL,0x82a38513ac102d1bL,0x9bcddd887b126aa5L,
|
|
0xe716998beefd3ee4L } },
|
|
/* 18 << 91 */
|
|
{ { 0x4239d571fb167583L,0xdd011c78d16c8f8aL,0x271c289569a27519L,
|
|
0x9ce0a3b7d2d64b6aL },
|
|
{ 0x8c977289d5ec6738L,0xa3b49f9a8840ef6bL,0x808c14c99a453419L,
|
|
0x5c00295b0cf0a2d5L } },
|
|
/* 19 << 91 */
|
|
{ { 0x524414fb1d4bcc76L,0xb07691d2459a88f1L,0x77f43263f70d110fL,
|
|
0x64ada5e0b7abf9f3L },
|
|
{ 0xafd0f94e5b544cf5L,0xb4a13a15fd2713feL,0xb99b7d6e250c74f4L,
|
|
0x097f2f7320324e45L } },
|
|
/* 20 << 91 */
|
|
{ { 0x994b37d8affa8208L,0xc3c31b0bdc29aafcL,0x3da746517a3a607fL,
|
|
0xd8e1b8c1fe6955d6L },
|
|
{ 0x716e1815c8418682L,0x541d487f7dc91d97L,0x48a04669c6996982L,
|
|
0xf39cab1583a6502eL } },
|
|
/* 21 << 91 */
|
|
{ { 0x025801a0e68db055L,0xf3569758ba3338d5L,0xb0c8c0aaee2afa84L,
|
|
0x4f6985d3fb6562d1L },
|
|
{ 0x351f1f15132ed17aL,0x510ed0b4c04365feL,0xa3f98138e5b1f066L,
|
|
0xbc9d95d632df03dcL } },
|
|
/* 22 << 91 */
|
|
{ { 0xa83ccf6e19abd09eL,0x0b4097c14ff17edbL,0x58a5c478d64a06ceL,
|
|
0x2ddcc3fd544a58fdL },
|
|
{ 0xd449503d9e8153b8L,0x3324fd027774179bL,0xaf5d47c8dbd9120cL,
|
|
0xeb86016234fa94dbL } },
|
|
/* 23 << 91 */
|
|
{ { 0x5817bdd1972f07f4L,0xe5579e2ed27bbcebL,0x86847a1f5f11e5a6L,
|
|
0xb39ed2557c3cf048L },
|
|
{ 0xe1076417a2f62e55L,0x6b9ab38f1bcf82a2L,0x4bb7c3197aeb29f9L,
|
|
0xf6d17da317227a46L } },
|
|
/* 24 << 91 */
|
|
{ { 0xab53ddbd0f968c00L,0xa03da7ec000c880bL,0x7b2396246a9ad24dL,
|
|
0x612c040101ec60d0L },
|
|
{ 0x70d10493109f5df1L,0xfbda403080af7550L,0x30b93f95c6b9a9b3L,
|
|
0x0c74ec71007d9418L } },
|
|
/* 25 << 91 */
|
|
{ { 0x941755646edb951fL,0x5f4a9d787f22c282L,0xb7870895b38d1196L,
|
|
0xbc593df3a228ce7cL },
|
|
{ 0xc78c5bd46af3641aL,0x7802200b3d9b3dccL,0x0dc73f328be33304L,
|
|
0x847ed87d61ffb79aL } },
|
|
/* 26 << 91 */
|
|
{ { 0xf85c974e6d671192L,0x1e14100ade16f60fL,0x45cb0d5a95c38797L,
|
|
0x18923bba9b022da4L },
|
|
{ 0xef2be899bbe7e86eL,0x4a1510ee216067bfL,0xd98c815484d5ce3eL,
|
|
0x1af777f0f92a2b90L } },
|
|
/* 27 << 91 */
|
|
{ { 0x9fbcb4004ef65724L,0x3e04a4c93c0ca6feL,0xfb3e2cb555002994L,
|
|
0x1f3a93c55363ecabL },
|
|
{ 0x1fe00efe3923555bL,0x744bedd91e1751eaL,0x3fb2db596ab69357L,
|
|
0x8dbd7365f5e6618bL } },
|
|
/* 28 << 91 */
|
|
{ { 0x99d53099df1ea40eL,0xb3f24a0b57d61e64L,0xd088a198596eb812L,
|
|
0x22c8361b5762940bL },
|
|
{ 0x66f01f97f9c0d95cL,0x884611728e43cdaeL,0x11599a7fb72b15c3L,
|
|
0x135a7536420d95ccL } },
|
|
/* 29 << 91 */
|
|
{ { 0x2dcdf0f75f7ae2f6L,0x15fc6e1dd7fa6da2L,0x81ca829ad1d441b6L,
|
|
0x84c10cf804a106b6L },
|
|
{ 0xa9b26c95a73fbbd0L,0x7f24e0cb4d8f6ee8L,0x48b459371e25a043L,
|
|
0xf8a74fca036f3dfeL } },
|
|
/* 30 << 91 */
|
|
{ { 0x1ed46585c9f84296L,0x7fbaa8fb3bc278b0L,0xa8e96cd46c4fcbd0L,
|
|
0x940a120273b60a5fL },
|
|
{ 0x34aae12055a4aec8L,0x550e9a74dbd742f0L,0x794456d7228c68abL,
|
|
0x492f8868a4e25ec6L } },
|
|
/* 31 << 91 */
|
|
{ { 0x682915adb2d8f398L,0xf13b51cc5b84c953L,0xcda90ab85bb917d6L,
|
|
0x4b6155604ea3dee1L },
|
|
{ 0x578b4e850a52c1c8L,0xeab1a69520b75fc4L,0x60c14f3caa0bb3c6L,
|
|
0x220f448ab8216094L } },
|
|
/* 32 << 91 */
|
|
{ { 0x4fe7ee31b0e63d34L,0xf4600572a9e54fabL,0xc0493334d5e7b5a4L,
|
|
0x8589fb9206d54831L },
|
|
{ 0xaa70f5cc6583553aL,0x0879094ae25649e5L,0xcc90450710044652L,
|
|
0xebb0696d02541c4fL } },
|
|
/* 33 << 91 */
|
|
{ { 0x5a171fdeb9718710L,0x38f1bed8f374a9f5L,0xc8c582e1ba39bdc1L,
|
|
0xfc457b0a908cc0ceL },
|
|
{ 0x9a187fd4883841e2L,0x8ec25b3938725381L,0x2553ed0596f84395L,
|
|
0x095c76616f6c6897L } },
|
|
/* 34 << 91 */
|
|
{ { 0x917ac85c4bdc5610L,0xb2885fe4179eb301L,0x5fc655478b78bdccL,
|
|
0x4a9fc893e59e4699L },
|
|
{ 0xbb7ff0cd3ce299afL,0x195be9b3adf38b20L,0x6a929c87d38ddb8fL,
|
|
0x55fcc99cb21a51b9L } },
|
|
/* 35 << 91 */
|
|
{ { 0x2b695b4c721a4593L,0xed1e9a15768eaac2L,0xfb63d71c7489f914L,
|
|
0xf98ba31c78118910L },
|
|
{ 0x802913739b128eb4L,0x7801214ed448af4aL,0xdbd2e22b55418dd3L,
|
|
0xeffb3c0dd3998242L } },
|
|
/* 36 << 91 */
|
|
{ { 0xdfa6077cc7bf3827L,0xf2165bcb47f8238fL,0xfe37cf688564d554L,
|
|
0xe5f825c40a81fb98L },
|
|
{ 0x43cc4f67ffed4d6fL,0xbc609578b50a34b0L,0x8aa8fcf95041faf1L,
|
|
0x5659f053651773b6L } },
|
|
/* 37 << 91 */
|
|
{ { 0xe87582c36044d63bL,0xa60894090cdb0ca0L,0x8c993e0fbfb2bcf6L,
|
|
0xfc64a71945985cfcL },
|
|
{ 0x15c4da8083dbedbaL,0x804ae1122be67df7L,0xda4c9658a23defdeL,
|
|
0x12002ddd5156e0d3L } },
|
|
/* 38 << 91 */
|
|
{ { 0xe68eae895dd21b96L,0x8b99f28bcf44624dL,0x0ae008081ec8897aL,
|
|
0xdd0a93036712f76eL },
|
|
{ 0x962375224e233de4L,0x192445b12b36a8a5L,0xabf9ff74023993d9L,
|
|
0x21f37bf42aad4a8fL } },
|
|
/* 39 << 91 */
|
|
{ { 0x340a4349f8bd2bbdL,0x1d902cd94868195dL,0x3d27bbf1e5fdb6f1L,
|
|
0x7a5ab088124f9f1cL },
|
|
{ 0xc466ab06f7a09e03L,0x2f8a197731f2c123L,0xda355dc7041b6657L,
|
|
0xcb840d128ece2a7cL } },
|
|
/* 40 << 91 */
|
|
{ { 0xb600ad9f7db32675L,0x78fea13307a06f1bL,0x5d032269b31f6094L,
|
|
0x07753ef583ec37aaL },
|
|
{ 0x03485aed9c0bea78L,0x41bb3989bc3f4524L,0x09403761697f726dL,
|
|
0x6109beb3df394820L } },
|
|
/* 41 << 91 */
|
|
{ { 0x804111ea3b6d1145L,0xb6271ea9a8582654L,0x619615e624e66562L,
|
|
0xa2554945d7b6ad9cL },
|
|
{ 0xd9c4985e99bfe35fL,0x9770ccc07b51cdf6L,0x7c32701392881832L,
|
|
0x8777d45f286b26d1L } },
|
|
/* 42 << 91 */
|
|
{ { 0x9bbeda22d847999dL,0x03aa33b6c3525d32L,0x4b7b96d428a959a1L,
|
|
0xbb3786e531e5d234L },
|
|
{ 0xaeb5d3ce6961f247L,0x20aa85af02f93d3fL,0x9cd1ad3dd7a7ae4fL,
|
|
0xbf6688f0781adaa8L } },
|
|
/* 43 << 91 */
|
|
{ { 0xb1b40e867469ceadL,0x1904c524309fca48L,0x9b7312af4b54bbc7L,
|
|
0xbe24bf8f593affa2L },
|
|
{ 0xbe5e0790bd98764bL,0xa0f45f17a26e299eL,0x4af0d2c26b8fe4c7L,
|
|
0xef170db18ae8a3e6L } },
|
|
/* 44 << 91 */
|
|
{ { 0x0e8d61a029e0ccc1L,0xcd53e87e60ad36caL,0x328c6623c8173822L,
|
|
0x7ee1767da496be55L },
|
|
{ 0x89f13259648945afL,0x9e45a5fd25c8009cL,0xaf2febd91f61ab8cL,
|
|
0x43f6bc868a275385L } },
|
|
/* 45 << 91 */
|
|
{ { 0x87792348f2142e79L,0x17d89259c6e6238aL,0x7536d2f64a839d9bL,
|
|
0x1f428fce76a1fbdcL },
|
|
{ 0x1c1096010db06dfeL,0xbfc16bc150a3a3ccL,0xf9cbd9ec9b30f41bL,
|
|
0x5b5da0d600138cceL } },
|
|
/* 46 << 91 */
|
|
{ { 0xec1d0a4856ef96a7L,0xb47eb848982bf842L,0x66deae32ec3f700dL,
|
|
0x4e43c42caa1181e0L },
|
|
{ 0xa1d72a31d1a4aa2aL,0x440d4668c004f3ceL,0x0d6a2d3b45fe8a7aL,
|
|
0x820e52e2fb128365L } },
|
|
/* 47 << 91 */
|
|
{ { 0x29ac5fcf25e51b09L,0x180cd2bf2023d159L,0xa9892171a1ebf90eL,
|
|
0xf97c4c877c132181L },
|
|
{ 0x9f1dc724c03dbb7eL,0xae043765018cbbe4L,0xfb0b2a360767d153L,
|
|
0xa8e2f4d6249cbaebL } },
|
|
/* 48 << 91 */
|
|
{ { 0x172a5247d95ea168L,0x1758fada2970764aL,0xac803a511d978169L,
|
|
0x299cfe2ede77e01bL },
|
|
{ 0x652a1e17b0a98927L,0x2e26e1d120014495L,0x7ae0af9f7175b56aL,
|
|
0xc2e22a80d64b9f95L } },
|
|
/* 49 << 91 */
|
|
{ { 0x4d0ff9fbd90a060aL,0x496a27dbbaf38085L,0x32305401da776bcfL,
|
|
0xb8cdcef6725f209eL },
|
|
{ 0x61ba0f37436a0bbaL,0x263fa10876860049L,0x92beb98eda3542cfL,
|
|
0xa2d4d14ad5849538L } },
|
|
/* 50 << 91 */
|
|
{ { 0x989b9d6812e9a1bcL,0x61d9075c5f6e3268L,0x352c6aa999ace638L,
|
|
0xde4e4a55920f43ffL },
|
|
{ 0xe5e4144ad673c017L,0x667417ae6f6e05eaL,0x613416aedcd1bd56L,
|
|
0x5eb3620186693711L } },
|
|
/* 51 << 91 */
|
|
{ { 0x2d7bc5043a1aa914L,0x175a129976dc5975L,0xe900e0f23fc8125cL,
|
|
0x569ef68c11198875L },
|
|
{ 0x9012db6363a113b4L,0xe3bd3f5698835766L,0xa5c94a5276412deaL,
|
|
0xad9e2a09aa735e5cL } },
|
|
/* 52 << 91 */
|
|
{ { 0x405a984c508b65e9L,0xbde4a1d16df1a0d1L,0x1a9433a1dfba80daL,
|
|
0xe9192ff99440ad2eL },
|
|
{ 0x9f6496965099fe92L,0x25ddb65c0b27a54aL,0x178279ddc590da61L,
|
|
0x5479a999fbde681aL } },
|
|
/* 53 << 91 */
|
|
{ { 0xd0e84e05013fe162L,0xbe11dc92632d471bL,0xdf0b0c45fc0e089fL,
|
|
0x04fb15b04c144025L },
|
|
{ 0xa61d5fc213c99927L,0xa033e9e03de2eb35L,0xf8185d5cb8dacbb4L,
|
|
0x9a88e2658644549dL } },
|
|
/* 54 << 91 */
|
|
{ { 0xf717af6254671ff6L,0x4bd4241b5fa58603L,0x06fba40be67773c0L,
|
|
0xc1d933d26a2847e9L },
|
|
{ 0xf4f5acf3689e2c70L,0x92aab0e746bafd31L,0x798d76aa3473f6e5L,
|
|
0xcc6641db93141934L } },
|
|
/* 55 << 91 */
|
|
{ { 0xcae27757d31e535eL,0x04cc43b687c2ee11L,0x8d1f96752e029ffaL,
|
|
0xc2150672e4cc7a2cL },
|
|
{ 0x3b03c1e08d68b013L,0xa9d6816fedf298f3L,0x1bfbb529a2804464L,
|
|
0x95a52fae5db22125L } },
|
|
/* 56 << 91 */
|
|
{ { 0x55b321600e1cb64eL,0x004828f67e7fc9feL,0x13394b821bb0fb93L,
|
|
0xb6293a2d35f1a920L },
|
|
{ 0xde35ef21d145d2d9L,0xbe6225b3bb8fa603L,0x00fc8f6b32cf252dL,
|
|
0xa28e52e6117cf8c2L } },
|
|
/* 57 << 91 */
|
|
{ { 0x9d1dc89b4c371e6dL,0xcebe067536ef0f28L,0x5de05d09a4292f81L,
|
|
0xa8303593353e3083L },
|
|
{ 0xa1715b0a7e37a9bbL,0x8c56f61e2b8faec3L,0x5250743133c9b102L,
|
|
0x0130cefca44431f0L } },
|
|
/* 58 << 91 */
|
|
{ { 0x56039fa0bd865cfbL,0x4b03e578bc5f1dd7L,0x40edf2e4babe7224L,
|
|
0xc752496d3a1988f6L },
|
|
{ 0xd1572d3b564beb6bL,0x0db1d11039a1c608L,0x568d193416f60126L,
|
|
0x05ae9668f354af33L } },
|
|
/* 59 << 91 */
|
|
{ { 0x19de6d37c92544f2L,0xcc084353a35837d5L,0xcbb6869c1a514eceL,
|
|
0xb633e7282e1d1066L },
|
|
{ 0xf15dd69f936c581cL,0x96e7b8ce7439c4f9L,0x5e676f482e448a5bL,
|
|
0xb2ca7d5bfd916bbbL } },
|
|
/* 60 << 91 */
|
|
{ { 0xd55a2541f5024025L,0x47bc5769e4c2d937L,0x7d31b92a0362189fL,
|
|
0x83f3086eef7816f9L },
|
|
{ 0xf9f46d94b587579aL,0xec2d22d830e76c5fL,0x27d57461b000ffcfL,
|
|
0xbb7e65f9364ffc2cL } },
|
|
/* 61 << 91 */
|
|
{ { 0x7c7c94776652a220L,0x61618f89d696c981L,0x5021701d89effff3L,
|
|
0xf2c8ff8e7c314163L },
|
|
{ 0x2da413ad8efb4d3eL,0x937b5adfce176d95L,0x22867d342a67d51cL,
|
|
0x262b9b1018eb3ac9L } },
|
|
/* 62 << 91 */
|
|
{ { 0x4e314fe4c43ff28bL,0x764766276a664e7aL,0x3e90e40bb7a565c2L,
|
|
0x8588993ac1acf831L },
|
|
{ 0xd7b501d68f938829L,0x996627ee3edd7d4cL,0x37d44a6290cd34c7L,
|
|
0xa8327499f3833e8dL } },
|
|
/* 63 << 91 */
|
|
{ { 0x2e18917d4bf50353L,0x85dd726b556765fbL,0x54fe65d693d5ab66L,
|
|
0x3ddbaced915c25feL },
|
|
{ 0xa799d9a412f22e85L,0xe2a248676d06f6bcL,0xf4f1ee5643ca1637L,
|
|
0xfda2828b61ece30aL } },
|
|
/* 64 << 91 */
|
|
{ { 0x758c1a3ea2dee7a6L,0xdcde2f3c734b2284L,0xaba445d24eaba6adL,
|
|
0x35aaf66876cee0a7L },
|
|
{ 0x7e0b04a9e5aa049aL,0xe74083ad91103e84L,0xbeb183ce40afecc3L,
|
|
0x6b89de9fea043f7aL } },
|
|
/* 0 << 98 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 98 */
|
|
{ { 0x0e299d23fe67ba66L,0x9145076093cf2f34L,0xf45b5ea997fcf913L,
|
|
0x5be008438bd7dddaL },
|
|
{ 0x358c3e05d53ff04dL,0xbf7ccdc35de91ef7L,0xad684dbfb69ec1a0L,
|
|
0x367e7cf2801fd997L } },
|
|
/* 2 << 98 */
|
|
{ { 0x0ca1f3b7b0dc8595L,0x27de46089f1d9f2eL,0x1af3bf39badd82a7L,
|
|
0x79356a7965862448L },
|
|
{ 0xc0602345f5f9a052L,0x1a8b0f89139a42f9L,0xb53eee42844d40fcL,
|
|
0x93b0bfe54e5b6368L } },
|
|
/* 3 << 98 */
|
|
{ { 0x5434dd02c024789cL,0x90dca9ea41b57bfcL,0x8aa898e2243398dfL,
|
|
0xf607c834894a94bbL },
|
|
{ 0xbb07be97c2c99b76L,0x6576ba6718c29302L,0x3d79efcce703a88cL,
|
|
0xf259ced7b6a0d106L } },
|
|
/* 4 << 98 */
|
|
{ { 0x0f893a5dc8de610bL,0xe8c515fb67e223ceL,0x7774bfa64ead6dc5L,
|
|
0x89d20f95925c728fL },
|
|
{ 0x7a1e0966098583ceL,0xa2eedb9493f2a7d7L,0x1b2820974c304d4aL,
|
|
0x0842e3dac077282dL } },
|
|
/* 5 << 98 */
|
|
{ { 0xe4d972a33b9e2d7bL,0x7cc60b27c48218ffL,0x8fc7083884149d91L,
|
|
0x5c04346f2f461eccL },
|
|
{ 0xebe9fdf2614650a9L,0x5e35b537c1f666acL,0x645613d188babc83L,
|
|
0x88cace3ac5e1c93eL } },
|
|
/* 6 << 98 */
|
|
{ { 0x209ca3753de92e23L,0xccb03cc85fbbb6e3L,0xccb90f03d7b1487eL,
|
|
0xfa9c2a38c710941fL },
|
|
{ 0x756c38236724ceedL,0x3a902258192d0323L,0xb150e519ea5e038eL,
|
|
0xdcba2865c7427591L } },
|
|
/* 7 << 98 */
|
|
{ { 0xe549237f78890732L,0xc443bef953fcb4d9L,0x9884d8a6eb3480d6L,
|
|
0x8a35b6a13048b186L },
|
|
{ 0xb4e4471665e9a90aL,0x45bf380d653006c0L,0x8f3f820d4fe9ae3bL,
|
|
0x244a35a0979a3b71L } },
|
|
/* 8 << 98 */
|
|
{ { 0xa1010e9d74cd06ffL,0x9c17c7dfaca3eeacL,0x74c86cd38063aa2bL,
|
|
0x8595c4b3734614ffL },
|
|
{ 0xa3de00ca990f62ccL,0xd9bed213ca0c3be5L,0x7886078adf8ce9f5L,
|
|
0xddb27ce35cd44444L } },
|
|
/* 9 << 98 */
|
|
{ { 0xed374a6658926dddL,0x138b2d49908015b8L,0x886c6579de1f7ab8L,
|
|
0x888b9aa0c3020b7aL },
|
|
{ 0xd3ec034e3a96e355L,0xba65b0b8f30fbe9aL,0x064c8e50ff21367aL,
|
|
0x1f508ea40b04b46eL } },
|
|
/* 10 << 98 */
|
|
{ { 0x98561a49747c866cL,0xbbb1e5fe0518a062L,0x20ff4e8becdc3608L,
|
|
0x7f55cded20184027L },
|
|
{ 0x8d73ec95f38c85f0L,0x5b589fdf8bc3b8c3L,0xbe95dd980f12b66fL,
|
|
0xf5bd1a090e338e01L } },
|
|
/* 11 << 98 */
|
|
{ { 0x65163ae55e915918L,0x6158d6d986f8a46bL,0x8466b538eeebf99cL,
|
|
0xca8761f6bca477efL },
|
|
{ 0xaf3449c29ebbc601L,0xef3b0f41e0c3ae2fL,0xaa6c577d5de63752L,
|
|
0xe916660164682a51L } },
|
|
/* 12 << 98 */
|
|
{ { 0x5a3097befc15aa1eL,0x40d12548b54b0745L,0x5bad4706519a5f12L,
|
|
0xed03f717a439dee6L },
|
|
{ 0x0794bb6c4a02c499L,0xf725083dcffe71d2L,0x2cad75190f3adcafL,
|
|
0x7f68ea1c43729310L } },
|
|
/* 13 << 98 */
|
|
{ { 0xe747c8c7b7ffd977L,0xec104c3580761a22L,0x8395ebaf5a3ffb83L,
|
|
0xfb3261f4e4b63db7L },
|
|
{ 0x53544960d883e544L,0x13520d708cc2eeb8L,0x08f6337bd3d65f99L,
|
|
0x83997db2781cf95bL } },
|
|
/* 14 << 98 */
|
|
{ { 0xce6ff1060dbd2c01L,0x4f8eea6b1f9ce934L,0x546f7c4b0e993921L,
|
|
0x6236a3245e753fc7L },
|
|
{ 0x65a41f84a16022e9L,0x0c18d87843d1dbb2L,0x73c556402d4cef9cL,
|
|
0xa042810870444c74L } },
|
|
/* 15 << 98 */
|
|
{ { 0x68e4f15e9afdfb3cL,0x49a561435bdfb6dfL,0xa9bc1bd45f823d97L,
|
|
0xbceb5970ea111c2aL },
|
|
{ 0x366b455fb269bbc4L,0x7cd85e1ee9bc5d62L,0xc743c41c4f18b086L,
|
|
0xa4b4099095294fb9L } },
|
|
/* 16 << 98 */
|
|
{ { 0x9c7c581d26ee8382L,0xcf17dcc5359d638eL,0xee8273abb728ae3dL,
|
|
0x1d112926f821f047L },
|
|
{ 0x1149847750491a74L,0x687fa761fde0dfb9L,0x2c2580227ea435abL,
|
|
0x6b8bdb9491ce7e3fL } },
|
|
/* 17 << 98 */
|
|
{ { 0x4c5b5dc93bf834aaL,0x043718194f6c7e4bL,0xc284e00a3736bcadL,
|
|
0x0d88111821ae8f8dL },
|
|
{ 0xf9cf0f82f48c8e33L,0xa11fd075a1bf40dbL,0xdceab0dedc2733e5L,
|
|
0xc560a8b58e986bd7L } },
|
|
/* 18 << 98 */
|
|
{ { 0x48dd1fe23929d097L,0x3885b29092f188f1L,0x0f2ae613da6fcdacL,
|
|
0x9054303eb662a46cL },
|
|
{ 0xb6871e440738042aL,0x98e6a977bdaf6449L,0xd8bc0650d1c9df1bL,
|
|
0xef3d645136e098f9L } },
|
|
/* 19 << 98 */
|
|
{ { 0x03fbae82b6d72d28L,0x77ca9db1f5d84080L,0x8a112cffa58efc1cL,
|
|
0x518d761cc564cb4aL },
|
|
{ 0x69b5740ef0d1b5ceL,0x717039cce9eb1785L,0x3fe29f9022f53382L,
|
|
0x8e54ba566bc7c95cL } },
|
|
/* 20 << 98 */
|
|
{ { 0x9c806d8af7f91d0fL,0x3b61b0f1a82a5728L,0x4640032d94d76754L,
|
|
0x273eb5de47d834c6L },
|
|
{ 0x2988abf77b4e4d53L,0xb7ce66bfde401777L,0x9fba6b32715071b3L,
|
|
0x82413c24ad3a1a98L } },
|
|
/* 21 << 98 */
|
|
{ { 0x5b7fc8c4e0e8ad93L,0xb5679aee5fab868dL,0xb1f9d2fa2b3946f3L,
|
|
0x458897dc5685b50aL },
|
|
{ 0x1e98c93089d0caf3L,0x39564c5f78642e92L,0x1b77729a0dbdaf18L,
|
|
0xf9170722579e82e6L } },
|
|
/* 22 << 98 */
|
|
{ { 0x680c0317e4515fa5L,0xf85cff84fb0c790fL,0xc7a82aab6d2e0765L,
|
|
0x7446bca935c82b32L },
|
|
{ 0x5de607aa6d63184fL,0x7c1a46a8262803a6L,0xd218313daebe8035L,
|
|
0x92113ffdc73c51f8L } },
|
|
/* 23 << 98 */
|
|
{ { 0x4b38e08312e7e46cL,0x69d0a37a56126bd5L,0xfb3f324b73c07e04L,
|
|
0xa0c22f678fda7267L },
|
|
{ 0x8f2c00514d2c7d8fL,0xbc45ced3cbe2cae5L,0xe1c6cf07a8f0f277L,
|
|
0xbc3923121eb99a98L } },
|
|
/* 24 << 98 */
|
|
{ { 0x75537b7e3cc8ac85L,0x8d725f57dd02753bL,0xfd05ff64b737df2fL,
|
|
0x55fe8712f6d2531dL },
|
|
{ 0x57ce04a96ab6b01cL,0x69a02a897cd93724L,0x4f82ac35cf86699bL,
|
|
0x8242d3ad9cb4b232L } },
|
|
/* 25 << 98 */
|
|
{ { 0x713d0f65d62105e5L,0xbb222bfa2d29be61L,0xf2f9a79e6cfbef09L,
|
|
0xfc24d8d3d5d6782fL },
|
|
{ 0x5db77085d4129967L,0xdb81c3ccdc3c2a43L,0x9d655fc005d8d9a3L,
|
|
0x3f5d057a54298026L } },
|
|
/* 26 << 98 */
|
|
{ { 0x1157f56d88c54694L,0xb26baba59b09573eL,0x2cab03b022adffd1L,
|
|
0x60a412c8dd69f383L },
|
|
{ 0xed76e98b54b25039L,0xd4ee67d3687e714dL,0x877396487b00b594L,
|
|
0xce419775c9ef709bL } },
|
|
/* 27 << 98 */
|
|
{ { 0x40f76f851c203a40L,0x30d352d6eafd8f91L,0xaf196d3d95578dd2L,
|
|
0xea4bb3d777cc3f3dL },
|
|
{ 0x42a5bd03b98e782bL,0xac958c400624920dL,0xb838134cfc56fcc8L,
|
|
0x86ec4ccf89572e5eL } },
|
|
/* 28 << 98 */
|
|
{ { 0x69c435269be47be0L,0x323b7dd8cb28fea1L,0xfa5538ba3a6c67e5L,
|
|
0xef921d701d378e46L },
|
|
{ 0xf92961fc3c4b880eL,0x3f6f914e98940a67L,0xa990eb0afef0ff39L,
|
|
0xa6c2920ff0eeff9cL } },
|
|
/* 29 << 98 */
|
|
{ { 0xca80416651b8d9a3L,0x42531bc90ffb0db1L,0x72ce4718aa82e7ceL,
|
|
0x6e199913df574741L },
|
|
{ 0xd5f1b13dd5d36946L,0x8255dc65f68f0194L,0xdc9df4cd8710d230L,
|
|
0x3453c20f138c1988L } },
|
|
/* 30 << 98 */
|
|
{ { 0x9af98dc089a6ef01L,0x4dbcc3f09857df85L,0x348056015c1ad924L,
|
|
0x40448da5d0493046L },
|
|
{ 0xf629926d4ee343e2L,0x6343f1bd90e8a301L,0xefc9349140815b3fL,
|
|
0xf882a423de8f66fbL } },
|
|
/* 31 << 98 */
|
|
{ { 0x3a12d5f4e7db9f57L,0x7dfba38a3c384c27L,0x7a904bfd6fc660b1L,
|
|
0xeb6c5db32773b21cL },
|
|
{ 0xc350ee661cdfe049L,0x9baac0ce44540f29L,0xbc57b6aba5ec6aadL,
|
|
0x167ce8c30a7c1baaL } },
|
|
/* 32 << 98 */
|
|
{ { 0xb23a03a553fb2b56L,0x6ce141e74e057f78L,0x796525c389e490d9L,
|
|
0x0bc95725a31a7e75L },
|
|
{ 0x1ec567911220fd06L,0x716e3a3c408b0bd6L,0x31cd6bf7e8ebeba9L,
|
|
0xa7326ca6bee6b670L } },
|
|
/* 33 << 98 */
|
|
{ { 0x3d9f851ccd090c43L,0x561e8f13f12c3988L,0x50490b6a904b7be4L,
|
|
0x61690ce10410737bL },
|
|
{ 0x299e9a370f009052L,0x258758f0f026092eL,0x9fa255f3fdfcdc0fL,
|
|
0xdbc9fb1fc0e1bcd2L } },
|
|
/* 34 << 98 */
|
|
{ { 0x35f9dd6e24651840L,0xdca45a84a5c59abcL,0x103d396fecca4938L,
|
|
0x4532da0ab97b3f29L },
|
|
{ 0xc4135ea51999a6bfL,0x3aa9505a5e6bf2eeL,0xf77cef063f5be093L,
|
|
0x97d1a0f8a943152eL } },
|
|
/* 35 << 98 */
|
|
{ { 0x2cb0ebba2e1c21ddL,0xf41b29fc2c6797c4L,0xc6e17321b300101fL,
|
|
0x4422b0e9d0d79a89L },
|
|
{ 0x49e4901c92f1bfc4L,0x06ab1f8fe1e10ed9L,0x84d35577db2926b8L,
|
|
0xca349d39356e8ec2L } },
|
|
/* 36 << 98 */
|
|
{ { 0x70b63d32343bf1a9L,0x8fd3bd2837d1a6b1L,0x0454879c316865b4L,
|
|
0xee959ff6c458efa2L },
|
|
{ 0x0461dcf89706dc3fL,0x737db0e2164e4b2eL,0x092626802f8843c8L,
|
|
0x54498bbc7745e6f6L } },
|
|
/* 37 << 98 */
|
|
{ { 0x359473faa29e24afL,0xfcc3c45470aa87a1L,0xfd2c4bf500573aceL,
|
|
0xb65b514e28dd1965L },
|
|
{ 0xe46ae7cf2193e393L,0x60e9a4e1f5444d97L,0xe7594e9600ff38edL,
|
|
0x43d84d2f0a0e0f02L } },
|
|
/* 38 << 98 */
|
|
{ { 0x8b6db141ee398a21L,0xb88a56aee3bcc5beL,0x0a1aa52f373460eaL,
|
|
0x20da1a56160bb19bL },
|
|
{ 0xfb54999d65bf0384L,0x71a14d245d5a180eL,0xbc44db7b21737b04L,
|
|
0xd84fcb1801dd8e92L } },
|
|
/* 39 << 98 */
|
|
{ { 0x80de937bfa44b479L,0x535054995c98fd4fL,0x1edb12ab28f08727L,
|
|
0x4c58b582a5f3ef53L },
|
|
{ 0xbfb236d88327f246L,0xc3a3bfaa4d7df320L,0xecd96c59b96024f2L,
|
|
0xfc293a537f4e0433L } },
|
|
/* 40 << 98 */
|
|
{ { 0x5341352b5acf6e10L,0xc50343fdafe652c3L,0x4af3792d18577a7fL,
|
|
0xe1a4c617af16823dL },
|
|
{ 0x9b26d0cd33425d0aL,0x306399ed9b7bc47fL,0x2a792f33706bb20bL,
|
|
0x3121961498111055L } },
|
|
/* 41 << 98 */
|
|
{ { 0x864ec06487f5d28bL,0x11392d91962277fdL,0xb5aa7942bb6aed5fL,
|
|
0x080094dc47e799d9L },
|
|
{ 0x4afa588c208ba19bL,0xd3e7570f8512f284L,0xcbae64e602f5799aL,
|
|
0xdeebe7ef514b9492L } },
|
|
/* 42 << 98 */
|
|
{ { 0x30300f98e5c298ffL,0x17f561be3678361fL,0xf52ff31298cb9a16L,
|
|
0x6233c3bc5562d490L },
|
|
{ 0x7bfa15a192e3a2cbL,0x961bcfd1e6365119L,0x3bdd29bf2c8c53b1L,
|
|
0x739704df822844baL } },
|
|
/* 43 << 98 */
|
|
{ { 0x7dacfb587e7b754bL,0x23360791a806c9b9L,0xe7eb88c923504452L,
|
|
0x2983e996852c1783L },
|
|
{ 0xdd4ae529958d881dL,0x026bae03262c7b3cL,0x3a6f9193960b52d1L,
|
|
0xd0980f9092696cfbL } },
|
|
/* 44 << 98 */
|
|
{ { 0x4c1f428cd5f30851L,0x94dfed272a4f6630L,0x4df53772fc5d48a4L,
|
|
0xdd2d5a2f933260ceL },
|
|
{ 0x574115bdd44cc7a5L,0x4ba6b20dbd12533aL,0x30e93cb8243057c9L,
|
|
0x794c486a14de320eL } },
|
|
/* 45 << 98 */
|
|
{ { 0xe925d4cef21496e4L,0xf951d198ec696331L,0x9810e2de3e8d812fL,
|
|
0xd0a47259389294abL },
|
|
{ 0x513ba2b50e3bab66L,0x462caff5abad306fL,0xe2dc6d59af04c49eL,
|
|
0x1aeb8750e0b84b0bL } },
|
|
/* 46 << 98 */
|
|
{ { 0xc034f12f2f7d0ca2L,0x6d2e8128e06acf2fL,0x801f4f8321facc2fL,
|
|
0xa1170c03f40ef607L },
|
|
{ 0xfe0a1d4f7805a99cL,0xbde56a36cc26aba5L,0x5b1629d035531f40L,
|
|
0xac212c2b9afa6108L } },
|
|
/* 47 << 98 */
|
|
{ { 0x30a06bf315697be5L,0x6f0545dc2c63c7c1L,0x5d8cb8427ccdadafL,
|
|
0xd52e379bac7015bbL },
|
|
{ 0xc4f56147f462c23eL,0xd44a429846bc24b0L,0xbc73d23ae2856d4fL,
|
|
0x61cedd8c0832bcdfL } },
|
|
/* 48 << 98 */
|
|
{ { 0x6095355699f241d7L,0xee4adbd7001a349dL,0x0b35bf6aaa89e491L,
|
|
0x7f0076f4136f7546L },
|
|
{ 0xd19a18ba9264da3dL,0x6eb2d2cd62a7a28bL,0xcdba941f8761c971L,
|
|
0x1550518ba3be4a5dL } },
|
|
/* 49 << 98 */
|
|
{ { 0xd0e8e2f057d0b70cL,0xeea8612ecd133ba3L,0x814670f044416aecL,
|
|
0x424db6c330775061L },
|
|
{ 0xd96039d116213fd1L,0xc61e7fa518a3478fL,0xa805bdcccb0c5021L,
|
|
0xbdd6f3a80cc616ddL } },
|
|
/* 50 << 98 */
|
|
{ { 0x060096675d97f7e2L,0x31db0fc1af0bf4b6L,0x23680ed45491627aL,
|
|
0xb99a3c667d741fb1L },
|
|
{ 0xe9bb5f5536b1ff92L,0x29738577512b388dL,0xdb8a2ce750fcf263L,
|
|
0x385346d46c4f7b47L } },
|
|
/* 51 << 98 */
|
|
{ { 0xbe86c5ef31631f9eL,0xbf91da2103a57a29L,0xc3b1f7967b23f821L,
|
|
0x0f7d00d2770db354L },
|
|
{ 0x8ffc6c3bd8fe79daL,0xcc5e8c40d525c996L,0x4640991dcfff632aL,
|
|
0x64d97e8c67112528L } },
|
|
/* 52 << 98 */
|
|
{ { 0xc232d97302f1cd1eL,0xce87eacb1dd212a4L,0x6e4c8c73e69802f7L,
|
|
0x12ef02901fffddbdL },
|
|
{ 0x941ec74e1bcea6e2L,0xd0b540243cb92cbbL,0x809fb9d47e8f9d05L,
|
|
0x3bf16159f2992aaeL } },
|
|
/* 53 << 98 */
|
|
{ { 0xad40f279f8a7a838L,0x11aea63105615660L,0xbf52e6f1a01f6fa1L,
|
|
0xef0469953dc2aec9L },
|
|
{ 0x785dbec9d8080711L,0xe1aec60a9fdedf76L,0xece797b5fa21c126L,
|
|
0xc66e898f05e52732L } },
|
|
/* 54 << 98 */
|
|
{ { 0x39bb69c408811fdbL,0x8bfe1ef82fc7f082L,0xc8e7a393174f4138L,
|
|
0xfba8ad1dd58d1f98L },
|
|
{ 0xbc21d0cebfd2fd5bL,0x0b839a826ee60d61L,0xaacf7658afd22253L,
|
|
0xb526bed8aae396b3L } },
|
|
/* 55 << 98 */
|
|
{ { 0xccc1bbc238564464L,0x9e3ff9478c45bc73L,0xcde9bca358188a78L,
|
|
0x138b8ee0d73bf8f7L },
|
|
{ 0x5c7e234c4123c489L,0x66e69368fa643297L,0x0629eeee39a15fa3L,
|
|
0x95fab881a9e2a927L } },
|
|
/* 56 << 98 */
|
|
{ { 0xb2497007eafbb1e1L,0xd75c9ce6e75b7a93L,0x3558352defb68d78L,
|
|
0xa2f26699223f6396L },
|
|
{ 0xeb911ecfe469b17aL,0x62545779e72d3ec2L,0x8ea47de782cb113fL,
|
|
0xebe4b0864e1fa98dL } },
|
|
/* 57 << 98 */
|
|
{ { 0xec2d5ed78cdfedb1L,0xa535c077fe211a74L,0x9678109b11d244c5L,
|
|
0xf17c8bfbbe299a76L },
|
|
{ 0xb651412efb11fbc4L,0xea0b548294ab3f65L,0xd8dffd950cf78243L,
|
|
0x2e719e57ce0361d4L } },
|
|
/* 58 << 98 */
|
|
{ { 0x9007f085304ddc5bL,0x095e8c6d4daba2eaL,0x5a33cdb43f9d28a9L,
|
|
0x85b95cd8e2283003L },
|
|
{ 0xbcd6c819b9744733L,0x29c5f538fc7f5783L,0x6c49b2fad59038e4L,
|
|
0x68349cc13bbe1018L } },
|
|
/* 59 << 98 */
|
|
{ { 0xcc490c1d21830ee5L,0x36f9c4eee9bfa297L,0x58fd729448de1a94L,
|
|
0xaadb13a84e8f2cdcL },
|
|
{ 0x515eaaa081313dbaL,0xc76bb468c2152dd8L,0x357f8d75a653dbf8L,
|
|
0xe4d8c4d1b14ac143L } },
|
|
/* 60 << 98 */
|
|
{ { 0xbdb8e675b055cb40L,0x898f8e7b977b5167L,0xecc65651b82fb863L,
|
|
0x565448146d88f01fL },
|
|
{ 0xb0928e95263a75a9L,0xcfb6836f1a22fcdaL,0x651d14db3f3bd37cL,
|
|
0x1d3837fbb6ad4664L } },
|
|
/* 61 << 98 */
|
|
{ { 0x7c5fb538ff4f94abL,0x7243c7126d7fb8f2L,0xef13d60ca85c5287L,
|
|
0x18cfb7c74bb8dd1bL },
|
|
{ 0x82f9bfe672908219L,0x35c4592b9d5144abL,0x52734f379cf4b42fL,
|
|
0x6bac55e78c60ddc4L } },
|
|
/* 62 << 98 */
|
|
{ { 0xb5cd811e94dea0f6L,0x259ecae4e18cc1a3L,0x6a0e836e15e660f8L,
|
|
0x6c639ea60e02bff2L },
|
|
{ 0x8721b8cb7e1026fdL,0x9e73b50b63261942L,0xb8c7097477f01da3L,
|
|
0x1839e6a68268f57fL } },
|
|
/* 63 << 98 */
|
|
{ { 0x571b94155150b805L,0x1892389ef92c7097L,0x8d69c18e4a084b95L,
|
|
0x7014c512be5b495cL },
|
|
{ 0x4780db361b07523cL,0x2f6219ce2c1c64faL,0xc38b81b0602c105aL,
|
|
0xab4f4f205dc8e360L } },
|
|
/* 64 << 98 */
|
|
{ { 0x20d3c982cf7d62d2L,0x1f36e29d23ba8150L,0x48ae0bf092763f9eL,
|
|
0x7a527e6b1d3a7007L },
|
|
{ 0xb4a89097581a85e3L,0x1f1a520fdc158be5L,0xf98db37d167d726eL,
|
|
0x8802786e1113e862L } },
|
|
/* 0 << 105 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 105 */
|
|
{ { 0xefb2149e36f09ab0L,0x03f163ca4a10bb5bL,0xd029704506e20998L,
|
|
0x56f0af001b5a3babL },
|
|
{ 0x7af4cfec70880e0dL,0x7332a66fbe3d913fL,0x32e6c84a7eceb4bdL,
|
|
0xedc4a79a9c228f55L } },
|
|
/* 2 << 105 */
|
|
{ { 0xc37c7dd0c55c4496L,0xa6a9635725bbabd2L,0x5b7e63f2add7f363L,
|
|
0x9dce37822e73f1dfL },
|
|
{ 0xe1e5a16ab2b91f71L,0xe44898235ba0163cL,0xf2759c32f6e515adL,
|
|
0xa5e2f1f88615eecfL } },
|
|
/* 3 << 105 */
|
|
{ { 0x74519be7abded551L,0x03d358b8c8b74410L,0x4d00b10b0e10d9a9L,
|
|
0x6392b0b128da52b7L },
|
|
{ 0x6744a2980b75c904L,0xc305b0aea8f7f96cL,0x042e421d182cf932L,
|
|
0xf6fc5d509e4636caL } },
|
|
/* 4 << 105 */
|
|
{ { 0x795847c9d64cc78cL,0x6c50621b9b6cb27bL,0x07099bf8df8022abL,
|
|
0x48f862ebc04eda1dL },
|
|
{ 0xd12732ede1603c16L,0x19a80e0f5c9a9450L,0xe2257f54b429b4fcL,
|
|
0x66d3b2c645460515L } },
|
|
/* 5 << 105 */
|
|
{ { 0x6ca4f87e822e37beL,0x73f237b4253bda4eL,0xf747f3a241190aebL,
|
|
0xf06fa36f804cf284L },
|
|
{ 0x0a6bbb6efc621c12L,0x5d624b6440b80ec6L,0x4b0724257ba556f3L,
|
|
0x7fa0c3543e2d20a8L } },
|
|
/* 6 << 105 */
|
|
{ { 0xe921fa31e3229d41L,0xa929c65294531bd4L,0x84156027a6d38209L,
|
|
0xf3d69f736bdb97bdL },
|
|
{ 0x8906d19a16833631L,0x68a34c2e03d51be3L,0xcb59583b0e511cd8L,
|
|
0x99ce6bfdfdc132a8L } },
|
|
/* 7 << 105 */
|
|
{ { 0x3facdaaaffcdb463L,0x658bbc1a34a38b08L,0x12a801f8f1a9078dL,
|
|
0x1567bcf96ab855deL },
|
|
{ 0xe08498e03572359bL,0xcf0353e58659e68bL,0xbb86e9c87d23807cL,
|
|
0xbc08728d2198e8a2L } },
|
|
/* 8 << 105 */
|
|
{ { 0x8de2b7bc453cadd6L,0x203900a7bc0bc1f8L,0xbcd86e47a6abd3afL,
|
|
0x911cac128502effbL },
|
|
{ 0x2d550242ec965469L,0x0e9f769229e0017eL,0x633f078f65979885L,
|
|
0xfb87d4494cf751efL } },
|
|
/* 9 << 105 */
|
|
{ { 0xe1790e4bfc25419aL,0x364672034bff3cfdL,0xc8db638625b6e83fL,
|
|
0x6cc69f236cad6fd2L },
|
|
{ 0x0219e45a6bc68bb9L,0xe43d79b6297f7334L,0x7d445368465dc97cL,
|
|
0x4b9eea322a0b949aL } },
|
|
/* 10 << 105 */
|
|
{ { 0x1b96c6ba6102d021L,0xeaafac782f4461eaL,0xd4b85c41c49f19a8L,
|
|
0x275c28e4cf538875L },
|
|
{ 0x35451a9ddd2e54e0L,0x6991adb50605618bL,0x5b8b4bcd7b36cd24L,
|
|
0x372a4f8c56f37216L } },
|
|
/* 11 << 105 */
|
|
{ { 0xc890bd73a6a5da60L,0x6f083da0dc4c9ff0L,0xf4e14d94f0536e57L,
|
|
0xf9ee1edaaaec8243L },
|
|
{ 0x571241ec8bdcf8e7L,0xa5db82710b041e26L,0x9a0b9a99e3fff040L,
|
|
0xcaaf21dd7c271202L } },
|
|
/* 12 << 105 */
|
|
{ { 0xb4e2b2e14f0dd2e8L,0xe77e7c4f0a377ac7L,0x69202c3f0d7a2198L,
|
|
0xf759b7ff28200eb8L },
|
|
{ 0xc87526eddcfe314eL,0xeb84c52453d5cf99L,0xb1b52ace515138b6L,
|
|
0x5aa7ff8c23fca3f4L } },
|
|
/* 13 << 105 */
|
|
{ { 0xff0b13c3b9791a26L,0x960022dacdd58b16L,0xdbd55c9257aad2deL,
|
|
0x3baaaaa3f30fe619L },
|
|
{ 0x9a4b23460d881efdL,0x506416c046325e2aL,0x91381e76035c18d4L,
|
|
0xb3bb68bef27817b0L } },
|
|
/* 14 << 105 */
|
|
{ { 0x15bfb8bf5116f937L,0x7c64a586c1268943L,0x71e25cc38419a2c8L,
|
|
0x9fd6b0c48335f463L },
|
|
{ 0x4bf0ba3ce8ee0e0eL,0x6f6fba60298c21faL,0x57d57b39ae66bee0L,
|
|
0x292d513022672544L } },
|
|
/* 15 << 105 */
|
|
{ { 0xf451105dbab093b3L,0x012f59b902839986L,0x8a9158023474a89cL,
|
|
0x048c919c2de03e97L },
|
|
{ 0xc476a2b591071cd5L,0x791ed89a034970a5L,0x89bd9042e1b7994bL,
|
|
0x8eaf5179a1057ffdL } },
|
|
/* 16 << 105 */
|
|
{ { 0x6066e2a2d551ee10L,0x87a8f1d8727e09a6L,0x00d08bab2c01148dL,
|
|
0x6da8e4f1424f33feL },
|
|
{ 0x466d17f0cf9a4e71L,0xff5020103bf5cb19L,0xdccf97d8d062ecc0L,
|
|
0x80c0d9af81d80ac4L } },
|
|
/* 17 << 105 */
|
|
{ { 0xe87771d8033f2876L,0xb0186ec67d5cc3dbL,0x58e8bb803bc9bc1dL,
|
|
0x4d1395cc6f6ef60eL },
|
|
{ 0xa73c62d6186244a0L,0x918e5f23110a5b53L,0xed4878ca741b7eabL,
|
|
0x3038d71adbe03e51L } },
|
|
/* 18 << 105 */
|
|
{ { 0x840204b7a93c3246L,0x21ab6069a0b9b4cdL,0xf5fa6e2bb1d64218L,
|
|
0x1de6ad0ef3d56191L },
|
|
{ 0x570aaa88ff1929c7L,0xc6df4c6b640e87b5L,0xde8a74f2c65f0cccL,
|
|
0x8b972fd5e6f6cc01L } },
|
|
/* 19 << 105 */
|
|
{ { 0x3fff36b60b846531L,0xba7e45e610a5e475L,0x84a1d10e4145b6c5L,
|
|
0xf1f7f91a5e046d9dL },
|
|
{ 0x0317a69244de90d7L,0x951a1d4af199c15eL,0x91f78046c9d73debL,
|
|
0x74c82828fab8224fL } },
|
|
/* 20 << 105 */
|
|
{ { 0xaa6778fce7560b90L,0xb4073e61a7e824ceL,0xff0d693cd642eba8L,
|
|
0x7ce2e57a5dccef38L },
|
|
{ 0x89c2c7891df1ad46L,0x83a06922098346fdL,0x2d715d72da2fc177L,
|
|
0x7b6dd71d85b6cf1dL } },
|
|
/* 21 << 105 */
|
|
{ { 0xc60a6d0a73fa9cb0L,0xedd3992e328bf5a9L,0xc380ddd0832c8c82L,
|
|
0xd182d410a2a0bf50L },
|
|
{ 0x7d9d7438d9a528dbL,0xe8b1a0e9caf53994L,0xddd6e5fe0e19987cL,
|
|
0xacb8df03190b059dL } },
|
|
/* 22 << 105 */
|
|
{ { 0x53703a328300129fL,0x1f63766268c43bfdL,0xbcbd191300e54051L,
|
|
0x812fcc627bf5a8c5L },
|
|
{ 0x3f969d5f29fb85daL,0x72f4e00a694759e8L,0x426b6e52790726b7L,
|
|
0x617bbc873bdbb209L } },
|
|
/* 23 << 105 */
|
|
{ { 0x511f8bb997aee317L,0x812a4096e81536a8L,0x137dfe593ac09b9bL,
|
|
0x0682238fba8c9a7aL },
|
|
{ 0x7072ead6aeccb4bdL,0x6a34e9aa692ba633L,0xc82eaec26fff9d33L,
|
|
0xfb7535121d4d2b62L } },
|
|
/* 24 << 105 */
|
|
{ { 0x1a0445ff1d7aadabL,0x65d38260d5f6a67cL,0x6e62fb0891cfb26fL,
|
|
0xef1e0fa55c7d91d6L },
|
|
{ 0x47e7c7ba33db72cdL,0x017cbc09fa7c74b2L,0x3c931590f50a503cL,
|
|
0xcac54f60616baa42L } },
|
|
/* 25 << 105 */
|
|
{ { 0x9b6cd380b2369f0fL,0x97d3a70d23c76151L,0x5f9dd6fc9862a9c6L,
|
|
0x044c4ab212312f51L },
|
|
{ 0x035ea0fd834a2ddcL,0x49e6b862cc7b826dL,0xb03d688362fce490L,
|
|
0x62f2497ab37e36e9L } },
|
|
/* 26 << 105 */
|
|
{ { 0x04b005b6c6458293L,0x36bb5276e8d10af7L,0xacf2dc138ee617b8L,
|
|
0x470d2d35b004b3d4L },
|
|
{ 0x06790832feeb1b77L,0x2bb75c3985657f9cL,0xd70bd4edc0f60004L,
|
|
0xfe797ecc219b018bL } },
|
|
/* 27 << 105 */
|
|
{ { 0x9b5bec2a753aebccL,0xdaf9f3dcc939eca5L,0xd6bc6833d095ad09L,
|
|
0x98abdd51daa4d2fcL },
|
|
{ 0xd9840a318d168be5L,0xcf7c10e02325a23cL,0xa5c02aa07e6ecfafL,
|
|
0x2462e7e6b5bfdf18L } },
|
|
/* 28 << 105 */
|
|
{ { 0xab2d8a8ba0cc3f12L,0x68dd485dbc672a29L,0x72039752596f2cd3L,
|
|
0x5d3eea67a0cf3d8dL },
|
|
{ 0x810a1a81e6602671L,0x8f144a4014026c0cL,0xbc753a6d76b50f85L,
|
|
0xc4dc21e8645cd4a4L } },
|
|
/* 29 << 105 */
|
|
{ { 0xc5262dea521d0378L,0x802b8e0e05011c6fL,0x1ba19cbb0b4c19eaL,
|
|
0x21db64b5ebf0aaecL },
|
|
{ 0x1f394ee970342f9dL,0x93a10aee1bc44a14L,0xa7eed31b3efd0baaL,
|
|
0x6e7c824e1d154e65L } },
|
|
/* 30 << 105 */
|
|
{ { 0xee23fa819966e7eeL,0x64ec4aa805b7920dL,0x2d44462d2d90aad4L,
|
|
0xf44dd195df277ad5L },
|
|
{ 0x8d6471f1bb46b6a1L,0x1e65d313fd885090L,0x33a800f513a977b4L,
|
|
0xaca9d7210797e1efL } },
|
|
/* 31 << 105 */
|
|
{ { 0x9a5a85a0fcff6a17L,0x9970a3f31eca7ceeL,0xbb9f0d6bc9504be3L,
|
|
0xe0c504beadd24ee2L },
|
|
{ 0x7e09d95677fcc2f4L,0xef1a522765bb5fc4L,0x145d4fb18b9286aaL,
|
|
0x66fd0c5d6649028bL } },
|
|
/* 32 << 105 */
|
|
{ { 0x98857ceb1bf4581cL,0xe635e186aca7b166L,0x278ddd22659722acL,
|
|
0xa0903c4c1db68007L },
|
|
{ 0x366e458948f21402L,0x31b49c14b96abda2L,0x329c4b09e0403190L,
|
|
0x97197ca3d29f43feL } },
|
|
/* 33 << 105 */
|
|
{ { 0x8073dd1e274983d8L,0xda1a3bde55717c8fL,0xfd3d4da20361f9d1L,
|
|
0x1332d0814c7de1ceL },
|
|
{ 0x9b7ef7a3aa6d0e10L,0x17db2e73f54f1c4aL,0xaf3dffae4cd35567L,
|
|
0xaaa2f406e56f4e71L } },
|
|
/* 34 << 105 */
|
|
{ { 0x8966759e7ace3fc7L,0x9594eacf45a8d8c6L,0x8de3bd8b91834e0eL,
|
|
0xafe4ca53548c0421L },
|
|
{ 0xfdd7e856e6ee81c6L,0x8f671beb6b891a3aL,0xf7a58f2bfae63829L,
|
|
0x9ab186fb9c11ac9fL } },
|
|
/* 35 << 105 */
|
|
{ { 0x8d6eb36910b5be76L,0x046b7739fb040bcdL,0xccb4529fcb73de88L,
|
|
0x1df0fefccf26be03L },
|
|
{ 0xad7757a6bcfcd027L,0xa8786c75bb3165caL,0xe9db1e347e99a4d9L,
|
|
0x99ee86dfb06c504bL } },
|
|
/* 36 << 105 */
|
|
{ { 0x5b7c2dddc15c9f0aL,0xdf87a7344295989eL,0x59ece47c03d08fdaL,
|
|
0xb074d3ddad5fc702L },
|
|
{ 0x2040790351a03776L,0x2bb1f77b2a608007L,0x25c58f4fe1153185L,
|
|
0xe6df62f6766e6447L } },
|
|
/* 37 << 105 */
|
|
{ { 0xefb3d1beed51275aL,0x5de47dc72f0f483fL,0x7932d98e97c2bedfL,
|
|
0xd5c119270219f8a1L },
|
|
{ 0x9d751200a73a294eL,0x5f88434a9dc20172L,0xd28d9fd3a26f506aL,
|
|
0xa890cd319d1dcd48L } },
|
|
/* 38 << 105 */
|
|
{ { 0x0aebaec170f4d3b4L,0xfd1a13690ffc8d00L,0xb9d9c24057d57838L,
|
|
0x45929d2668bac361L },
|
|
{ 0x5a2cd06025b15ca6L,0x4b3c83e16e474446L,0x1aac7578ee1e5134L,
|
|
0xa418f5d6c91e2f41L } },
|
|
/* 39 << 105 */
|
|
{ { 0x6936fc8a213ed68bL,0x860ae7ed510a5224L,0x63660335def09b53L,
|
|
0x641b2897cd79c98dL },
|
|
{ 0x29bd38e101110f35L,0x79c26f42648b1937L,0x64dae5199d9164f4L,
|
|
0xd85a23100265c273L } },
|
|
/* 40 << 105 */
|
|
{ { 0x7173dd5d4b07e2b1L,0xd144c4cb8d9ea221L,0xe8b04ea41105ab14L,
|
|
0x92dda542fe80d8f1L },
|
|
{ 0xe9982fa8cf03dce6L,0x8b5ea9651a22cffcL,0xf7f4ea7f3fad88c4L,
|
|
0x62db773e6a5ba95cL } },
|
|
/* 41 << 105 */
|
|
{ { 0xd20f02fb93f24567L,0xfd46c69a315257caL,0x0ac74cc78bcab987L,
|
|
0x46f31c015ceca2f5L },
|
|
{ 0x40aedb59888b219eL,0xe50ecc37e1fccd02L,0x1bcd9dad911f816cL,
|
|
0x583cc1ec8db9b00cL } },
|
|
/* 42 << 105 */
|
|
{ { 0xf3cd2e66a483bf11L,0xfa08a6f5b1b2c169L,0xf375e2454be9fa28L,
|
|
0x99a7ffec5b6d011fL },
|
|
{ 0x6a3ebddbc4ae62daL,0x6cea00ae374aef5dL,0xab5fb98d9d4d05bcL,
|
|
0x7cba1423d560f252L } },
|
|
/* 43 << 105 */
|
|
{ { 0x49b2cc21208490deL,0x1ca66ec3bcfb2879L,0x7f1166b71b6fb16fL,
|
|
0xfff63e0865fe5db3L },
|
|
{ 0xb8345abe8b2610beL,0xb732ed8039de3df4L,0x0e24ed50211c32b4L,
|
|
0xd10d8a69848ff27dL } },
|
|
/* 44 << 105 */
|
|
{ { 0xc1074398ed4de248L,0xd7cedace10488927L,0xa4aa6bf885673e13L,
|
|
0xb46bae916daf30afL },
|
|
{ 0x07088472fcef7ad8L,0x61151608d4b35e97L,0xbcfe8f26dde29986L,
|
|
0xeb84c4c7d5a34c79L } },
|
|
/* 45 << 105 */
|
|
{ { 0xc1eec55c164e1214L,0x891be86da147bb03L,0x9fab4d100ba96835L,
|
|
0xbf01e9b8a5c1ae9fL },
|
|
{ 0x6b4de139b186ebc0L,0xd5c74c2685b91bcaL,0x5086a99cc2d93854L,
|
|
0xeed62a7ba7a9dfbcL } },
|
|
/* 46 << 105 */
|
|
{ { 0x8778ed6f76b7618aL,0xbff750a503b66062L,0x4cb7be22b65186dbL,
|
|
0x369dfbf0cc3a6d13L },
|
|
{ 0xc7dab26c7191a321L,0x9edac3f940ed718eL,0xbc142b36d0cfd183L,
|
|
0xc8af82f67c991693L } },
|
|
/* 47 << 105 */
|
|
{ { 0xb3d1e4d897ce0b2aL,0xe6d7c87fc3a55cdfL,0x35846b9568b81afeL,
|
|
0x018d12afd3c239d8L },
|
|
{ 0x2b2c620801206e15L,0xe0e42453a3b882c6L,0x854470a3a50162d5L,
|
|
0x081574787017a62aL } },
|
|
/* 48 << 105 */
|
|
{ { 0x18bd3fb4820357c7L,0x992039ae6f1458adL,0x9a1df3c525b44aa1L,
|
|
0x2d780357ed3d5281L },
|
|
{ 0x58cf7e4dc77ad4d4L,0xd49a7998f9df4fc4L,0x4465a8b51d71205eL,
|
|
0xa0ee0ea6649254aaL } },
|
|
/* 49 << 105 */
|
|
{ { 0x4b5eeecfab7bd771L,0x6c87307335c262b9L,0xdc5bd6483c9d61e7L,
|
|
0x233d6d54321460d2L },
|
|
{ 0xd20c5626fc195bccL,0x2544595804d78b63L,0xe03fcb3d17ec8ef3L,
|
|
0x54b690d146b8f781L } },
|
|
/* 50 << 105 */
|
|
{ { 0x82fa2c8a21230646L,0xf51aabb9084f418cL,0xff4fbec11a30ba43L,
|
|
0x6a5acf73743c9df7L },
|
|
{ 0x1da2b357d635b4d5L,0xc3de68ddecd5c1daL,0xa689080bd61af0ddL,
|
|
0xdea5938ad665bf99L } },
|
|
/* 51 << 105 */
|
|
{ { 0x0231d71afe637294L,0x01968aa6a5a81cd8L,0x11252d50048e63b5L,
|
|
0xc446bc526ca007e9L },
|
|
{ 0xef8c50a696d6134bL,0x9361fbf59e09a05cL,0xf17f85a6dca3291aL,
|
|
0xb178d548ff251a21L } },
|
|
/* 52 << 105 */
|
|
{ { 0x87f6374ba4df3915L,0x566ce1bf2fd5d608L,0x425cba4d7de35102L,
|
|
0x6b745f8f58c5d5e2L },
|
|
{ 0x88402af663122edfL,0x3190f9ed3b989a89L,0x4ad3d387ebba3156L,
|
|
0xef385ad9c7c469a5L } },
|
|
/* 53 << 105 */
|
|
{ { 0xb08281de3f642c29L,0x20be0888910ffb88L,0xf353dd4ad5292546L,
|
|
0x3f1627de8377a262L },
|
|
{ 0xa5faa013eefcd638L,0x8f3bf62674cc77c3L,0x32618f65a348f55eL,
|
|
0x5787c0dc9fefeb9eL } },
|
|
/* 54 << 105 */
|
|
{ { 0xf1673aa2d9a23e44L,0x88dfa9934e10690dL,0x1ced1b362bf91108L,
|
|
0x9193ceca3af48649L },
|
|
{ 0xfb34327d2d738fc5L,0x6697b037975fee6cL,0x2f485da0c04079a5L,
|
|
0x2cdf57352feaa1acL } },
|
|
/* 55 << 105 */
|
|
{ { 0x76944420bd55659eL,0x7973e32b4376090cL,0x86bb4fe1163b591aL,
|
|
0x10441aedc196f0caL },
|
|
{ 0x3b431f4a045ad915L,0x6c11b437a4afacb1L,0x30b0c7db71fdbbd8L,
|
|
0xb642931feda65acdL } },
|
|
/* 56 << 105 */
|
|
{ { 0x4baae6e89c92b235L,0xa73bbd0e6b3993a1L,0xd06d60ec693dd031L,
|
|
0x03cab91b7156881cL },
|
|
{ 0xd615862f1db3574bL,0x485b018564bb061aL,0x27434988a0181e06L,
|
|
0x2cd61ad4c1c0c757L } },
|
|
/* 57 << 105 */
|
|
{ { 0x3effed5a2ff9f403L,0x8dc98d8b62239029L,0x2206021e1f17b70dL,
|
|
0xafbec0cabf510015L },
|
|
{ 0x9fed716480130dfaL,0x306dc2b58a02dcf5L,0x48f06620feb10fc0L,
|
|
0x78d1e1d55a57cf51L } },
|
|
/* 58 << 105 */
|
|
{ { 0xadef8c5a192ef710L,0x88afbd4b3b7431f9L,0x7e1f740764250c9eL,
|
|
0x6e31318db58bec07L },
|
|
{ 0xfd4fc4b824f89b4eL,0x65a5dd8848c36a2aL,0x4f1eccfff024baa7L,
|
|
0x22a21cf2cba94650L } },
|
|
/* 59 << 105 */
|
|
{ { 0x95d29dee42a554f7L,0x828983a5002ec4baL,0x8112a1f78badb73dL,
|
|
0x79ea8897a27c1839L },
|
|
{ 0x8969a5a7d065fd83L,0xf49af791b262a0bcL,0xfcdea8b6af2b5127L,
|
|
0x10e913e1564c2dbcL } },
|
|
/* 60 << 105 */
|
|
{ { 0x51239d14bc21ef51L,0xe51c3ceb4ce57292L,0x795ff06847bbcc3bL,
|
|
0x86b46e1ebd7e11e6L },
|
|
{ 0x0ea6ba2380041ef4L,0xd72fe5056262342eL,0x8abc6dfd31d294d4L,
|
|
0xbbe017a21278c2c9L } },
|
|
/* 61 << 105 */
|
|
{ { 0xb1fcfa09b389328aL,0x322fbc62d01771b5L,0x04c0d06360b045bfL,
|
|
0xdb652edc10e52d01L },
|
|
{ 0x50ef932c03ec6627L,0xde1b3b2dc1ee50e3L,0x5ab7bdc5dc37a90dL,
|
|
0xfea6721331e33a96L } },
|
|
/* 62 << 105 */
|
|
{ { 0x6482b5cb4f2999aaL,0x38476cc6b8cbf0ddL,0x93ebfacb173405bbL,
|
|
0x15cdafe7e52369ecL },
|
|
{ 0xd42d5ba4d935b7dbL,0x648b60041c99a4cdL,0x785101bda3b5545bL,
|
|
0x4bf2c38a9dd67fafL } },
|
|
/* 63 << 105 */
|
|
{ { 0xb1aadc634442449cL,0xe0e9921a33ad4fb8L,0x5c552313aa686d82L,
|
|
0xdee635fa465d866cL },
|
|
{ 0xbc3c224a18ee6e8aL,0xeed748a6ed42e02fL,0xe70f930ad474cd08L,
|
|
0x774ea6ecfff24adfL } },
|
|
/* 64 << 105 */
|
|
{ { 0x03e2de1cf3480d4aL,0xf0d8edc7bc8acf1aL,0xf23e330368295a9cL,
|
|
0xfadd5f68c546a97dL },
|
|
{ 0x895597ad96f8acb1L,0xbddd49d5671bdae2L,0x16fcd52821dd43f4L,
|
|
0xa5a454126619141aL } },
|
|
/* 0 << 112 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 112 */
|
|
{ { 0x8ce9b6bfc360e25aL,0xe6425195075a1a78L,0x9dc756a8481732f4L,
|
|
0x83c0440f5432b57aL },
|
|
{ 0xc670b3f1d720281fL,0x2205910ed135e051L,0xded14b0edb052be7L,
|
|
0x697b3d27c568ea39L } },
|
|
/* 2 << 112 */
|
|
{ { 0x2e599b9afb3ff9edL,0x28c2e0ab17f6515cL,0x1cbee4fd474da449L,
|
|
0x071279a44f364452L },
|
|
{ 0x97abff6601fbe855L,0x3ee394e85fda51c4L,0x190385f667597c0bL,
|
|
0x6e9fccc6a27ee34bL } },
|
|
/* 3 << 112 */
|
|
{ { 0x0b89de9314092ebbL,0xf17256bd428e240cL,0xcf89a7f393d2f064L,
|
|
0x4f57841ee1ed3b14L },
|
|
{ 0x4ee14405e708d855L,0x856aae7203f1c3d0L,0xc8e5424fbdd7eed5L,
|
|
0x3333e4ef73ab4270L } },
|
|
/* 4 << 112 */
|
|
{ { 0x3bc77adedda492f8L,0xc11a3aea78297205L,0x5e89a3e734931b4cL,
|
|
0x17512e2e9f5694bbL },
|
|
{ 0x5dc349f3177bf8b6L,0x232ea4ba08c7ff3eL,0x9c4f9d16f511145dL,
|
|
0xccf109a333b379c3L } },
|
|
/* 5 << 112 */
|
|
{ { 0xe75e7a88a1f25897L,0x7ac6961fa1b5d4d8L,0xe3e1077308f3ed5cL,
|
|
0x208a54ec0a892dfbL },
|
|
{ 0xbe826e1978660710L,0x0cf70a97237df2c8L,0x418a7340ed704da5L,
|
|
0xa3eeb9a908ca33fdL } },
|
|
/* 6 << 112 */
|
|
{ { 0x49d96233169bca96L,0x04d286d42da6aafbL,0xc09606eca0c2fa94L,
|
|
0x8869d0d523ff0fb3L },
|
|
{ 0xa99937e5d0150d65L,0xa92e2503240c14c9L,0x656bf945108e2d49L,
|
|
0x152a733aa2f59e2bL } },
|
|
/* 7 << 112 */
|
|
{ { 0xb4323d588434a920L,0xc0af8e93622103c5L,0x667518ef938dbf9aL,
|
|
0xa184307383a9cdf2L },
|
|
{ 0x350a94aa5447ab80L,0xe5e5a325c75a3d61L,0x74ba507f68411a9eL,
|
|
0x10581fc1594f70c5L } },
|
|
/* 8 << 112 */
|
|
{ { 0x60e2857080eb24a9L,0x7bedfb4d488e0cfdL,0x721ebbd7c259cdb8L,
|
|
0x0b0da855bc6390a9L },
|
|
{ 0x2b4d04dbde314c70L,0xcdbf1fbc6c32e846L,0x33833eabb162fc9eL,
|
|
0x9939b48bb0dd3ab7L } },
|
|
/* 9 << 112 */
|
|
{ { 0x5aaa98a7cb0c9c8cL,0x75105f3081c4375cL,0xceee50575ef1c90fL,
|
|
0xb31e065fc23a17bfL },
|
|
{ 0x5364d275d4b6d45aL,0xd363f3ad62ec8996L,0xb5d212394391c65bL,
|
|
0x84564765ebb41b47L } },
|
|
/* 10 << 112 */
|
|
{ { 0x20d18ecc37107c78L,0xacff3b6b570c2a66L,0x22f975d99bd0d845L,
|
|
0xef0a0c46ba178fa0L },
|
|
{ 0x1a41965176b6028eL,0xc49ec674248612d4L,0x5b6ac4f27338af55L,
|
|
0x06145e627bee5a36L } },
|
|
/* 11 << 112 */
|
|
{ { 0x33e95d07e75746b5L,0x1c1e1f6dc40c78beL,0x967833ef222ff8e2L,
|
|
0x4bedcf6ab49180adL },
|
|
{ 0x6b37e9c13d7a4c8aL,0x2748887c6ddfe760L,0xf7055123aa3a5bbcL,
|
|
0x954ff2257bbb8e74L } },
|
|
/* 12 << 112 */
|
|
{ { 0xc42b8ab197c3dfb9L,0x55a549b0cf168154L,0xad6748e7c1b50692L,
|
|
0x2775780f6fc5cbcbL },
|
|
{ 0x4eab80b8e1c9d7c8L,0x8c69dae13fdbcd56L,0x47e6b4fb9969eaceL,
|
|
0x002f1085a705cb5aL } },
|
|
/* 13 << 112 */
|
|
{ { 0x4e23ca446d3fea55L,0xb4ae9c86f4810568L,0x47bfb91b2a62f27dL,
|
|
0x60deb4c9d9bac28cL },
|
|
{ 0xa892d8947de6c34cL,0x4ee682594494587dL,0x914ee14e1a3f8a5bL,
|
|
0xbb113eaa28700385L } },
|
|
/* 14 << 112 */
|
|
{ { 0x81ca03b92115b4c9L,0x7c163d388908cad1L,0xc912a118aa18179aL,
|
|
0xe09ed750886e3081L },
|
|
{ 0xa676e3fa26f516caL,0x753cacf78e732f91L,0x51592aea833da8b4L,
|
|
0xc626f42f4cbea8aaL } },
|
|
/* 15 << 112 */
|
|
{ { 0xef9dc899a7b56eafL,0x00c0e52c34ef7316L,0x5b1e4e24fe818a86L,
|
|
0x9d31e20dc538be47L },
|
|
{ 0x22eb932d3ed68974L,0xe44bbc087c4e87c4L,0x4121086e0dde9aefL,
|
|
0x8e6b9cff134f4345L } },
|
|
/* 16 << 112 */
|
|
{ { 0x96892c1f711b0eb9L,0xb905f2c8780ab954L,0xace26309a20792dbL,
|
|
0xec8ac9b30684e126L },
|
|
{ 0x486ad8b6b40a2447L,0x60121fc19fe3fb24L,0x5626fccf1a8e3b3fL,
|
|
0x4e5686226ad1f394L } },
|
|
/* 17 << 112 */
|
|
{ { 0xda7aae0d196aa5a1L,0xe0df8c771041b5fbL,0x451465d926b318b7L,
|
|
0xc29b6e557ab136e9L },
|
|
{ 0x2c2ab48b71148463L,0xb5738de364454a76L,0x54ccf9a05a03abe4L,
|
|
0x377c02960427d58eL } },
|
|
/* 18 << 112 */
|
|
{ { 0x73f5f0b92bb39c1fL,0x14373f2ce608d8c5L,0xdcbfd31400fbb805L,
|
|
0xdf18fb2083afdcfbL },
|
|
{ 0x81a57f4242b3523fL,0xe958532d87f650fbL,0xaa8dc8b68b0a7d7cL,
|
|
0x1b75dfb7150166beL } },
|
|
/* 19 << 112 */
|
|
{ { 0x90e4f7c92d7d1413L,0x67e2d6b59834f597L,0x4fd4f4f9a808c3e8L,
|
|
0xaf8237e0d5281ec1L },
|
|
{ 0x25ab5fdc84687ceeL,0xc5ded6b1a5b26c09L,0x8e4a5aecc8ea7650L,
|
|
0x23b73e5c14cc417fL } },
|
|
/* 20 << 112 */
|
|
{ { 0x2bfb43183037bf52L,0xb61e6db578c725d7L,0x8efd4060bbb3e5d7L,
|
|
0x2e014701dbac488eL },
|
|
{ 0xac75cf9a360aa449L,0xb70cfd0579634d08L,0xa591536dfffb15efL,
|
|
0xb2c37582d07c106cL } },
|
|
/* 21 << 112 */
|
|
{ { 0xb4293fdcf50225f9L,0xc52e175cb0e12b03L,0xf649c3bad0a8bf64L,
|
|
0x745a8fefeb8ae3c6L },
|
|
{ 0x30d7e5a358321bc3L,0xb1732be70bc4df48L,0x1f217993e9ea5058L,
|
|
0xf7a71cde3e4fd745L } },
|
|
/* 22 << 112 */
|
|
{ { 0x86cc533e894c5bbbL,0x6915c7d969d83082L,0xa6aa2d055815c244L,
|
|
0xaeeee59249b22ce5L },
|
|
{ 0x89e39d1378135486L,0x3a275c1f16b76f2fL,0xdb6bcc1be036e8f5L,
|
|
0x4df69b215e4709f5L } },
|
|
/* 23 << 112 */
|
|
{ { 0xa188b2502d0f39aaL,0x622118bb15a85947L,0x2ebf520ffde0f4faL,
|
|
0xa40e9f294860e539L },
|
|
{ 0x7b6a51eb22b57f0fL,0x849a33b97e80644aL,0x50e5d16f1cf095feL,
|
|
0xd754b54eec55f002L } },
|
|
/* 24 << 112 */
|
|
{ { 0x5cfbbb22236f4a98L,0x0b0c59e9066800bbL,0x4ac69a8f5a9a7774L,
|
|
0x2b33f804d6bec948L },
|
|
{ 0xb372929532e6c466L,0x68956d0f4e599c73L,0xa47a249f155c31ccL,
|
|
0x24d80f0de1ce284eL } },
|
|
/* 25 << 112 */
|
|
{ { 0xcd821dfb988baf01L,0xe6331a7ddbb16647L,0x1eb8ad33094cb960L,
|
|
0x593cca38c91bbca5L },
|
|
{ 0x384aac8d26567456L,0x40fa0309c04b6490L,0x97834cd6dab6c8f6L,
|
|
0x68a7318d3f91e55fL } },
|
|
/* 26 << 112 */
|
|
{ { 0xa00fd04efc4d3157L,0xb56f8ab22bf3bdeaL,0x014f56484fa57172L,
|
|
0x948c5860450abdb3L },
|
|
{ 0x342b5df00ebd4f08L,0x3e5168cd0e82938eL,0x7aedc1ceb0df5dd0L,
|
|
0x6bbbc6d9e5732516L } },
|
|
/* 27 << 112 */
|
|
{ { 0xc7bfd486605daaa6L,0x46fd72b7bb9a6c9eL,0xe4847fb1a124fb89L,
|
|
0x75959cbda2d8ffbcL },
|
|
{ 0x42579f65c8a588eeL,0x368c92e6b80b499dL,0xea4ef6cd999a5df1L,
|
|
0xaa73bb7f936fe604L } },
|
|
/* 28 << 112 */
|
|
{ { 0xf347a70d6457d188L,0x86eda86b8b7a388bL,0xb7cdff060ccd6013L,
|
|
0xbeb1b6c7d0053fb2L },
|
|
{ 0x0b02238799240a9fL,0x1bbb384f776189b2L,0x8695e71e9066193aL,
|
|
0x2eb5009706ffac7eL } },
|
|
/* 29 << 112 */
|
|
{ { 0x0654a9c04a7d2caaL,0x6f3fb3d1a5aaa290L,0x835db041ff476e8fL,
|
|
0x540b8b0bc42295e4L },
|
|
{ 0xa5c73ac905e214f5L,0x9a74075a56a0b638L,0x2e4b1090ce9e680bL,
|
|
0x57a5b4796b8d9afaL } },
|
|
/* 30 << 112 */
|
|
{ { 0x0dca48e726bfe65cL,0x097e391c7290c307L,0x683c462e6669e72eL,
|
|
0xf505be1e062559acL },
|
|
{ 0x5fbe3ea1e3a3035aL,0x6431ebf69cd50da8L,0xfd169d5c1f6407f2L,
|
|
0x8d838a9560fce6b8L } },
|
|
/* 31 << 112 */
|
|
{ { 0x2a2bfa7f650006f0L,0xdfd7dad350c0fbb2L,0x92452495ccf9ad96L,
|
|
0x183bf494d95635f9L },
|
|
{ 0x02d5df434a7bd989L,0x505385cca5431095L,0xdd98e67dfd43f53eL,
|
|
0xd61e1a6c500c34a9L } },
|
|
/* 32 << 112 */
|
|
{ { 0x5a4b46c64a8a3d62L,0x8469c4d0247743d2L,0x2bb3a13d88f7e433L,
|
|
0x62b23a1001be5849L },
|
|
{ 0xe83596b4a63d1a4cL,0x454e7fea7d183f3eL,0x643fce6117afb01cL,
|
|
0x4e65e5e61c4c3638L } },
|
|
/* 33 << 112 */
|
|
{ { 0x41d85ea1ef74c45bL,0x2cfbfa66ae328506L,0x98b078f53ada7da9L,
|
|
0xd985fe37ec752fbbL },
|
|
{ 0xeece68fe5a0148b4L,0x6f9a55c72d78136dL,0x232dccc4d2b729ceL,
|
|
0xa27e0dfd90aafbc4L } },
|
|
/* 34 << 112 */
|
|
{ { 0x9647445212b4603eL,0xa876c5516b706d14L,0xdf145fcf69a9d412L,
|
|
0xe2ab75b72d479c34L },
|
|
{ 0x12df9a761a23ff97L,0xc61389925d359d10L,0x6e51c7aefa835f22L,
|
|
0x69a79cb1c0fcc4d9L } },
|
|
/* 35 << 112 */
|
|
{ { 0xf57f350d594cc7e1L,0x3079ca633350ab79L,0x226fb6149aff594aL,
|
|
0x35afec026d59a62bL },
|
|
{ 0x9bee46f406ed2c6eL,0x58da17357d939a57L,0x44c504028fd1797eL,
|
|
0xd8853e7c5ccea6caL } },
|
|
/* 36 << 112 */
|
|
{ { 0x4065508da35fcd5fL,0x8965df8c495ccaebL,0x0f2da85012e1a962L,
|
|
0xee471b94c1cf1cc4L },
|
|
{ 0xcef19bc80a08fb75L,0x704958f581de3591L,0x2867f8b23aef4f88L,
|
|
0x8d749384ea9f9a5fL } },
|
|
/* 37 << 112 */
|
|
{ { 0x1b3855378c9049f4L,0x5be948f37b92d8b6L,0xd96f725db6e2bd6bL,
|
|
0x37a222bc958c454dL },
|
|
{ 0xe7c61abb8809bf61L,0x46f07fbc1346f18dL,0xfb567a7ae87c0d1cL,
|
|
0x84a461c87ef3d07aL } },
|
|
/* 38 << 112 */
|
|
{ { 0x0a5adce6d9278d98L,0x24d948139dfc73e1L,0x4f3528b6054321c3L,
|
|
0x2e03fdde692ea706L },
|
|
{ 0x10e6061947b533c0L,0x1a8bc73f2ca3c055L,0xae58d4b21bb62b8fL,
|
|
0xb2045a73584a24e3L } },
|
|
/* 39 << 112 */
|
|
{ { 0x3ab3d5afbd76e195L,0x478dd1ad6938a810L,0x6ffab3936ee3d5cbL,
|
|
0xdfb693db22b361e4L },
|
|
{ 0xf969449651dbf1a7L,0xcab4b4ef08a2e762L,0xe8c92f25d39bba9aL,
|
|
0x850e61bcf1464d96L } },
|
|
/* 40 << 112 */
|
|
{ { 0xb7e830e3dc09508bL,0xfaf6d2cf74317655L,0x72606cebdf690355L,
|
|
0x48bb92b3d0c3ded6L },
|
|
{ 0x65b754845c7cf892L,0xf6cd7ac9d5d5f01fL,0xc2c30a5996401d69L,
|
|
0x91268650ed921878L } },
|
|
/* 41 << 112 */
|
|
{ { 0x380bf913b78c558fL,0x43c0baebc8afdaa9L,0x377f61d554f169d3L,
|
|
0xf8da07e3ae5ff20bL },
|
|
{ 0xb676c49da8a90ea8L,0x81c1ff2b83a29b21L,0x383297ac2ad8d276L,
|
|
0x3001122fba89f982L } },
|
|
/* 42 << 112 */
|
|
{ { 0xe1d794be6718e448L,0x246c14827c3e6e13L,0x56646ef85d26b5efL,
|
|
0x80f5091e88069cddL },
|
|
{ 0xc5992e2f724bdd38L,0x02e915b48471e8c7L,0x96ff320a0d0ff2a9L,
|
|
0xbf8864874384d1a0L } },
|
|
/* 43 << 112 */
|
|
{ { 0xbbe1e6a6c93f72d6L,0xd5f75d12cad800eaL,0xfa40a09fe7acf117L,
|
|
0x32c8cdd57581a355L },
|
|
{ 0x742219927023c499L,0xa8afe5d738ec3901L,0x5691afcba90e83f0L,
|
|
0x41bcaa030b8f8eacL } },
|
|
/* 44 << 112 */
|
|
{ { 0xe38b5ff98d2668d5L,0x0715281a7ad81965L,0x1bc8fc7c03c6ce11L,
|
|
0xcbbee6e28b650436L },
|
|
{ 0x06b00fe80cdb9808L,0x17d6e066fe3ed315L,0x2e9d38c64d0b5018L,
|
|
0xab8bfd56844dcaefL } },
|
|
/* 45 << 112 */
|
|
{ { 0x42894a59513aed8bL,0xf77f3b6d314bd07aL,0xbbdecb8f8e42b582L,
|
|
0xf10e2fa8d2390fe6L },
|
|
{ 0xefb9502262a2f201L,0x4d59ea5050ee32b0L,0xd87f77286da789a8L,
|
|
0xcf98a2cff79492c4L } },
|
|
/* 46 << 112 */
|
|
{ { 0xf9577239720943c2L,0xba044cf53990b9d0L,0x5aa8e82395f2884aL,
|
|
0x834de6ed0278a0afL },
|
|
{ 0xc8e1ee9a5f25bd12L,0x9259ceaa6f7ab271L,0x7e6d97a277d00b76L,
|
|
0x5c0c6eeaa437832aL } },
|
|
/* 47 << 112 */
|
|
{ { 0x5232c20f5606b81dL,0xabd7b3750d991ee5L,0x4d2bfe358632d951L,
|
|
0x78f8514698ed9364L },
|
|
{ 0x951873f0f30c3282L,0x0da8ac80a789230bL,0x3ac7789c5398967fL,
|
|
0xa69b8f7fbdda0fb5L } },
|
|
/* 48 << 112 */
|
|
{ { 0xe5db77176add8545L,0x1b71cb6672c49b66L,0xd856073968421d77L,
|
|
0x03840fe883e3afeaL },
|
|
{ 0xb391dad51ec69977L,0xae243fb9307f6726L,0xc88ac87be8ca160cL,
|
|
0x5174cced4ce355f4L } },
|
|
/* 49 << 112 */
|
|
{ { 0x98a35966e58ba37dL,0xfdcc8da27817335dL,0x5b75283083fbc7bfL,
|
|
0x68e419d4d9c96984L },
|
|
{ 0x409a39f402a40380L,0x88940faf1fe977bcL,0xc640a94b8f8edea6L,
|
|
0x1e22cd17ed11547dL } },
|
|
/* 50 << 112 */
|
|
{ { 0xe28568ce59ffc3e2L,0x60aa1b55c1dee4e7L,0xc67497c8837cb363L,
|
|
0x06fb438a105a2bf2L },
|
|
{ 0x30357ec4500d8e20L,0x1ad9095d0670db10L,0x7f589a05c73b7cfdL,
|
|
0xf544607d880d6d28L } },
|
|
/* 51 << 112 */
|
|
{ { 0x17ba93b1a20ef103L,0xad8591306ba6577bL,0x65c91cf66fa214a0L,
|
|
0xd7d49c6c27990da5L },
|
|
{ 0xecd9ec8d20bb569dL,0xbd4b2502eeffbc33L,0x2056ca5a6bed0467L,
|
|
0x7916a1f75b63728cL } },
|
|
/* 52 << 112 */
|
|
{ { 0xd4f9497d53a4f566L,0x8973466497b56810L,0xf8e1da740494a621L,
|
|
0x82546a938d011c68L },
|
|
{ 0x1f3acb19c61ac162L,0x52f8fa9cabad0d3eL,0x15356523b4b7ea43L,
|
|
0x5a16ad61ae608125L } },
|
|
/* 53 << 112 */
|
|
{ { 0xb0bcb87f4faed184L,0x5f236b1d5029f45fL,0xd42c76070bc6b1fcL,
|
|
0xc644324e68aefce3L },
|
|
{ 0x8e191d595c5d8446L,0xc020807713ae1979L,0xadcaee553ba59cc7L,
|
|
0x20ed6d6ba2cb81baL } },
|
|
/* 54 << 112 */
|
|
{ { 0x0952ba19b6efcffcL,0x60f12d6897c0b87cL,0x4ee2c7c49caa30bcL,
|
|
0x767238b797fbff4eL },
|
|
{ 0xebc73921501b5d92L,0x3279e3dfc2a37737L,0x9fc12bc86d197543L,
|
|
0xfa94dc6f0a40db4eL } },
|
|
/* 55 << 112 */
|
|
{ { 0x7392b41a530ccbbdL,0x87c82146ea823525L,0xa52f984c05d98d0cL,
|
|
0x2ae57d735ef6974cL },
|
|
{ 0x9377f7bf3042a6ddL,0xb1a007c019647a64L,0xfaa9079a0cca9767L,
|
|
0x3d81a25bf68f72d5L } },
|
|
/* 56 << 112 */
|
|
{ { 0x752067f8ff81578eL,0x786221509045447dL,0xc0c22fcf0505aa6fL,
|
|
0x1030f0a66bed1c77L },
|
|
{ 0x31f29f151f0bd739L,0x2d7989c7e6debe85L,0x5c070e728e677e98L,
|
|
0x0a817bd306e81fd5L } },
|
|
/* 57 << 112 */
|
|
{ { 0xc110d830b0f2ac95L,0x48d0995aab20e64eL,0x0f3e00e17729cd9aL,
|
|
0x2a570c20dd556946L },
|
|
{ 0x912dbcfd4e86214dL,0x2d014ee2cf615498L,0x55e2b1e63530d76eL,
|
|
0xc5135ae4fd0fd6d1L } },
|
|
/* 58 << 112 */
|
|
{ { 0x0066273ad4f3049fL,0xbb8e9893e7087477L,0x2dba1ddb14c6e5fdL,
|
|
0xdba3788651f57e6cL },
|
|
{ 0x5aaee0a65a72f2cfL,0x1208bfbf7bea5642L,0xf5c6aa3b67872c37L,
|
|
0xd726e08343f93224L } },
|
|
/* 59 << 112 */
|
|
{ { 0x1854daa5061f1658L,0xc0016df1df0cd2b3L,0xc2a3f23e833d50deL,
|
|
0x73b681d2bbbd3017L },
|
|
{ 0x2f046dc43ac343c0L,0x9c847e7d85716421L,0xe1e13c910917eed4L,
|
|
0x3fc9eebd63a1b9c6L } },
|
|
/* 60 << 112 */
|
|
{ { 0x0f816a727fe02299L,0x6335ccc2294f3319L,0x3820179f4745c5beL,
|
|
0xe647b782922f066eL },
|
|
{ 0xc22e49de02cafb8aL,0x299bc2fffcc2ecccL,0x9a8feea26e0e8282L,
|
|
0xa627278bfe893205L } },
|
|
/* 61 << 112 */
|
|
{ { 0xa7e197337933e47bL,0xf4ff6b132e766402L,0xa4d8be0a98440d9fL,
|
|
0x658f5c2f38938808L },
|
|
{ 0x90b75677c95b3b3eL,0xfa0442693137b6ffL,0x077b039b43c47c29L,
|
|
0xcca95dd38a6445b2L } },
|
|
/* 62 << 112 */
|
|
{ { 0x0b498ba42333fc4cL,0x274f8e68f736a1b1L,0x6ca348fd5f1d4b2eL,
|
|
0x24d3be78a8f10199L },
|
|
{ 0x8535f858ca14f530L,0xa6e7f1635b982e51L,0x847c851236e1bf62L,
|
|
0xf6a7c58e03448418L } },
|
|
/* 63 << 112 */
|
|
{ { 0x583f3703f9374ab6L,0x864f91956e564145L,0x33bc3f4822526d50L,
|
|
0x9f323c801262a496L },
|
|
{ 0xaa97a7ae3f046a9aL,0x70da183edf8a039aL,0x5b68f71c52aa0ba6L,
|
|
0x9be0fe5121459c2dL } },
|
|
/* 64 << 112 */
|
|
{ { 0xc1e17eb6cbc613e5L,0x33131d55497ea61cL,0x2f69d39eaf7eded5L,
|
|
0x73c2f434de6af11bL },
|
|
{ 0x4ca52493a4a375faL,0x5f06787cb833c5c2L,0x814e091f3e6e71cfL,
|
|
0x76451f578b746666L } },
|
|
/* 0 << 119 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 119 */
|
|
{ { 0x80f9bdef694db7e0L,0xedca8787b9fcddc6L,0x51981c3403b8dce1L,
|
|
0x4274dcf170e10ba1L },
|
|
{ 0xf72743b86def6d1aL,0xd25b1670ebdb1866L,0xc4491e8c050c6f58L,
|
|
0x2be2b2ab87fbd7f5L } },
|
|
/* 2 << 119 */
|
|
{ { 0x3e0e5c9dd111f8ecL,0xbcc33f8db7c4e760L,0x702f9a91bd392a51L,
|
|
0x7da4a795c132e92dL },
|
|
{ 0x1a0b0ae30bb1151bL,0x54febac802e32251L,0xea3a5082694e9e78L,
|
|
0xe58ffec1e4fe40b8L } },
|
|
/* 3 << 119 */
|
|
{ { 0xf85592fcd1e0cf9eL,0xdea75f0dc0e7b2e8L,0xc04215cfc135584eL,
|
|
0x174fc7272f57092aL },
|
|
{ 0xe7277877eb930beaL,0x504caccb5eb02a5aL,0xf9fe08f7f5241b9bL,
|
|
0xe7fb62f48d5ca954L } },
|
|
/* 4 << 119 */
|
|
{ { 0xfbb8349d29c4120bL,0x9f94391fc0d0d915L,0xc4074fa75410ba51L,
|
|
0xa66adbf6150a5911L },
|
|
{ 0xc164543c34bfca38L,0xe0f27560b9e1ccfcL,0x99da0f53e820219cL,
|
|
0xe8234498c6b4997aL } },
|
|
/* 5 << 119 */
|
|
{ { 0xcfb88b769d4c5423L,0x9e56eb10b0521c49L,0x418e0b5ebe8700a1L,
|
|
0x00cbaad6f93cb58aL },
|
|
{ 0xe923fbded92a5e67L,0xca4979ac1f347f11L,0x89162d856bc0585bL,
|
|
0xdd6254afac3c70e3L } },
|
|
/* 6 << 119 */
|
|
{ { 0x7b23c513516e19e4L,0x56e2e847c5c4d593L,0x9f727d735ce71ef6L,
|
|
0x5b6304a6f79a44c5L },
|
|
{ 0x6638a7363ab7e433L,0x1adea470fe742f83L,0xe054b8545b7fc19fL,
|
|
0xf935381aba1d0698L } },
|
|
/* 7 << 119 */
|
|
{ { 0x546eab2d799e9a74L,0x96239e0ea949f729L,0xca274c6b7090055aL,
|
|
0x835142c39020c9b0L },
|
|
{ 0xa405667aa2e8807fL,0x29f2c0851aa3d39eL,0xcc555d6442fc72f5L,
|
|
0xe856e0e7fbeacb3cL } },
|
|
/* 8 << 119 */
|
|
{ { 0xb5504f9d918e4936L,0x65035ef6b2513982L,0x0553a0c26f4d9cb9L,
|
|
0x6cb10d56bea85509L },
|
|
{ 0x48d957b7a242da11L,0x16a4d3dd672b7268L,0x3d7e637c8502a96bL,
|
|
0x27c7032b730d463bL } },
|
|
/* 9 << 119 */
|
|
{ { 0xbdc02b18e4136a14L,0xbacf969d678e32bfL,0xc98d89a3dd9c3c03L,
|
|
0x7b92420a23becc4fL },
|
|
{ 0xd4b41f78c64d565cL,0x9f969d0010f28295L,0xec7f7f76b13d051aL,
|
|
0x08945e1ea92da585L } },
|
|
/* 10 << 119 */
|
|
{ { 0x55366b7d5846426fL,0xe7d09e89247d441dL,0x510b404d736fbf48L,
|
|
0x7fa003d0e784bd7dL },
|
|
{ 0x25f7614f17fd9596L,0x49e0e0a135cb98dbL,0x2c65957b2e83a76aL,
|
|
0x5d40da8dcddbe0f8L } },
|
|
/* 11 << 119 */
|
|
{ { 0xf2b8c405050bad24L,0x8918426dc2aa4823L,0x2aeab3dda38365a7L,
|
|
0x720317177c91b690L },
|
|
{ 0x8b00d69960a94120L,0x478a255de99eaeecL,0xbf656a5f6f60aafdL,
|
|
0xdfd7cb755dee77b3L } },
|
|
/* 12 << 119 */
|
|
{ { 0x37f68bb4a595939dL,0x0355647928740217L,0x8e740e7c84ad7612L,
|
|
0xd89bc8439044695fL },
|
|
{ 0xf7f3da5d85a9184dL,0x562563bb9fc0b074L,0x06d2e6aaf88a888eL,
|
|
0x612d8643161fbe7cL } },
|
|
/* 13 << 119 */
|
|
{ { 0x465edba7f64085e7L,0xb230f30429aa8511L,0x53388426cda2d188L,
|
|
0x908857354b666649L },
|
|
{ 0x6f02ff9a652f54f6L,0x65c822945fae2bf0L,0x7816ade062f5eee3L,
|
|
0xdcdbdf43fcc56d70L } },
|
|
/* 14 << 119 */
|
|
{ { 0x9fb3bba354530bb2L,0xbde3ef77cb0869eaL,0x89bc90460b431163L,
|
|
0x4d03d7d2e4819a35L },
|
|
{ 0x33ae4f9e43b6a782L,0x216db3079c88a686L,0x91dd88e000ffedd9L,
|
|
0xb280da9f12bd4840L } },
|
|
/* 15 << 119 */
|
|
{ { 0x32a7cb8a1635e741L,0xfe14008a78be02a7L,0x3fafb3341b7ae030L,
|
|
0x7fd508e75add0ce9L },
|
|
{ 0x72c83219d607ad51L,0x0f229c0a8d40964aL,0x1be2c3361c878da2L,
|
|
0xe0c96742eab2ab86L } },
|
|
/* 16 << 119 */
|
|
{ { 0x458f86913e538cd7L,0xa7001f6c8e08ad53L,0x52b8c6e6bf5d15ffL,
|
|
0x548234a4011215ddL },
|
|
{ 0xff5a9d2d3d5b4045L,0xb0ffeeb64a904190L,0x55a3aca448607f8bL,
|
|
0x8cbd665c30a0672aL } },
|
|
/* 17 << 119 */
|
|
{ { 0x87f834e042583068L,0x02da2aebf3f6e683L,0x6b763e5d05c12248L,
|
|
0x7230378f65a8aefcL },
|
|
{ 0x93bd80b571e8e5caL,0x53ab041cb3b62524L,0x1b8605136c9c552eL,
|
|
0xe84d402cd5524e66L } },
|
|
/* 18 << 119 */
|
|
{ { 0xa37f3573f37f5937L,0xeb0f6c7dd1e4fca5L,0x2965a554ac8ab0fcL,
|
|
0x17fbf56c274676acL },
|
|
{ 0x2e2f6bd9acf7d720L,0x41fc8f8810224766L,0x517a14b385d53befL,
|
|
0xdae327a57d76a7d1L } },
|
|
/* 19 << 119 */
|
|
{ { 0x6ad0a065c4818267L,0x33aa189b37c1bbc1L,0x64970b5227392a92L,
|
|
0x21699a1c2d1535eaL },
|
|
{ 0xcd20779cc2d7a7fdL,0xe318605999c83cf2L,0x9b69440b72c0b8c7L,
|
|
0xa81497d77b9e0e4dL } },
|
|
/* 20 << 119 */
|
|
{ { 0x515d5c891f5f82dcL,0x9a7f67d76361079eL,0xa8da81e311a35330L,
|
|
0xe44990c44b18be1bL },
|
|
{ 0xc7d5ed95af103e59L,0xece8aba78dac9261L,0xbe82b0999394b8d3L,
|
|
0x6830f09a16adfe83L } },
|
|
/* 21 << 119 */
|
|
{ { 0x250a29b488172d01L,0x8b20bd65caff9e02L,0xb8a7661ee8a6329aL,
|
|
0x4520304dd3fce920L },
|
|
{ 0xae45da1f2b47f7efL,0xe07f52885bffc540L,0xf79970093464f874L,
|
|
0x2244c2cda6fa1f38L } },
|
|
/* 22 << 119 */
|
|
{ { 0x43c41ac194d7d9b1L,0x5bafdd82c82e7f17L,0xdf0614c15fda0fcaL,
|
|
0x74b043a7a8ae37adL },
|
|
{ 0x3ba6afa19e71734cL,0x15d5437e9c450f2eL,0x4a5883fe67e242b1L,
|
|
0x5143bdc22c1953c2L } },
|
|
/* 23 << 119 */
|
|
{ { 0x542b8b53fc5e8920L,0x363bf9a89a9cee08L,0x02375f10c3486e08L,
|
|
0x2037543b8c5e70d2L },
|
|
{ 0x7109bccc625640b4L,0xcbc1051e8bc62c3bL,0xf8455fed803f26eaL,
|
|
0x6badceabeb372424L } },
|
|
/* 24 << 119 */
|
|
{ { 0xa2a9ce7c6b53f5f9L,0x642465951b176d99L,0xb1298d36b95c081bL,
|
|
0x53505bb81d9a9ee6L },
|
|
{ 0x3f6f9e61f2ba70b0L,0xd07e16c98afad453L,0x9f1694bbe7eb4a6aL,
|
|
0xdfebced93cb0bc8eL } },
|
|
/* 25 << 119 */
|
|
{ { 0x92d3dcdc53868c8bL,0x174311a2386107a6L,0x4109e07c689b4e64L,
|
|
0x30e4587f2df3dcb6L },
|
|
{ 0x841aea310811b3b2L,0x6144d41d0cce43eaL,0x464c45812a9a7803L,
|
|
0xd03d371f3e158930L } },
|
|
/* 26 << 119 */
|
|
{ { 0xc676d7f2b1f3390bL,0x9f7a1b8ca5b61272L,0x4ebebfc9c2e127a9L,
|
|
0x4602500c5dd997bfL },
|
|
{ 0x7f09771c4711230fL,0x058eb37c020f09c1L,0xab693d4bfee5e38bL,
|
|
0x9289eb1f4653cbc0L } },
|
|
/* 27 << 119 */
|
|
{ { 0xbecf46abd51b9cf5L,0xd2aa9c029f0121afL,0x36aaf7d2e90dc274L,
|
|
0x909e4ea048b95a3cL },
|
|
{ 0xe6b704966f32dbdbL,0x672188a08b030b3eL,0xeeffe5b3cfb617e2L,
|
|
0x87e947de7c82709eL } },
|
|
/* 28 << 119 */
|
|
{ { 0xa44d2b391770f5a7L,0xe4d4d7910e44eb82L,0x42e69d1e3f69712aL,
|
|
0xbf11c4d6ac6a820eL },
|
|
{ 0xb5e7f3e542c4224cL,0xd6b4e81c449d941cL,0x5d72bd165450e878L,
|
|
0x6a61e28aee25ac54L } },
|
|
/* 29 << 119 */
|
|
{ { 0x33272094e6f1cd95L,0x7512f30d0d18673fL,0x32f7a4ca5afc1464L,
|
|
0x2f0956566bbb977bL },
|
|
{ 0x586f47caa8226200L,0x02c868ad1ac07369L,0x4ef2b845c613acbeL,
|
|
0x43d7563e0386054cL } },
|
|
/* 30 << 119 */
|
|
{ { 0x54da9dc7ab952578L,0xb5423df226e84d0bL,0xa8b64eeb9b872042L,
|
|
0xac2057825990f6dfL },
|
|
{ 0x4ff696eb21f4c77aL,0x1a79c3e4aab273afL,0x29bc922e9436b3f1L,
|
|
0xff807ef8d6d9a27aL } },
|
|
/* 31 << 119 */
|
|
{ { 0x82acea3d778f22a0L,0xfb10b2e85b5e7469L,0xc0b169802818ee7dL,
|
|
0x011afff4c91c1a2fL },
|
|
{ 0x95a6d126ad124418L,0x31c081a5e72e295fL,0x36bb283af2f4db75L,
|
|
0xd115540f7acef462L } },
|
|
/* 32 << 119 */
|
|
{ { 0xc7f3a8f833f6746cL,0x21e46f65fea990caL,0x915fd5c5caddb0a9L,
|
|
0xbd41f01678614555L },
|
|
{ 0x346f4434426ffb58L,0x8055943614dbc204L,0xf3dd20fe5a969b7fL,
|
|
0x9d59e956e899a39aL } },
|
|
/* 33 << 119 */
|
|
{ { 0xf1b0971c8ad4cf4bL,0x034488602ffb8fb8L,0xf071ac3c65340ba4L,
|
|
0x408d0596b27fd758L },
|
|
{ 0xe7c78ea498c364b0L,0xa4aac4a5051e8ab5L,0xb9e1d560485d9002L,
|
|
0x9acd518a88844455L } },
|
|
/* 34 << 119 */
|
|
{ { 0xe4ca688fd06f56c0L,0xa48af70ddf027972L,0x691f0f045e9a609dL,
|
|
0xa9dd82cdee61270eL },
|
|
{ 0x8903ca63a0ef18d3L,0x9fb7ee353d6ca3bdL,0xa7b4a09cabf47d03L,
|
|
0x4cdada011c67de8eL } },
|
|
/* 35 << 119 */
|
|
{ { 0x520037499355a244L,0xe77fd2b64f2151a9L,0x695d6cf666b4efcbL,
|
|
0xc5a0cacfda2cfe25L },
|
|
{ 0x104efe5cef811865L,0xf52813e89ea5cc3dL,0x855683dc40b58dbcL,
|
|
0x0338ecde175fcb11L } },
|
|
/* 36 << 119 */
|
|
{ { 0xf9a0563774921592L,0xb4f1261db9bb9d31L,0x551429b74e9c5459L,
|
|
0xbe182e6f6ea71f53L },
|
|
{ 0xd3a3b07cdfc50573L,0x9ba1afda62be8d44L,0x9bcfd2cb52ab65d3L,
|
|
0xdf11d547a9571802L } },
|
|
/* 37 << 119 */
|
|
{ { 0x099403ee02a2404aL,0x497406f421088a71L,0x994794095004ae71L,
|
|
0xbdb42078a812c362L },
|
|
{ 0x2b72a30fd8828442L,0x283add27fcb5ed1cL,0xf7c0e20066a40015L,
|
|
0x3e3be64108b295efL } },
|
|
/* 38 << 119 */
|
|
{ { 0xac127dc1e038a675L,0x729deff38c5c6320L,0xb7df8fd4a90d2c53L,
|
|
0x9b74b0ec681e7cd3L },
|
|
{ 0x5cb5a623dab407e5L,0xcdbd361576b340c6L,0xa184415a7d28392cL,
|
|
0xc184c1d8e96f7830L } },
|
|
/* 39 << 119 */
|
|
{ { 0xc3204f1981d3a80fL,0xfde0c841c8e02432L,0x78203b3e8149e0c1L,
|
|
0x5904bdbb08053a73L },
|
|
{ 0x30fc1dd1101b6805L,0x43c223bc49aa6d49L,0x9ed671417a174087L,
|
|
0x311469a0d5997008L } },
|
|
/* 40 << 119 */
|
|
{ { 0xb189b6845e43fc61L,0xf3282375e0d3ab57L,0x4fa34b67b1181da8L,
|
|
0x621ed0b299ee52b8L },
|
|
{ 0x9b178de1ad990676L,0xd51de67b56d54065L,0x2a2c27c47538c201L,
|
|
0x33856ec838a40f5cL } },
|
|
/* 41 << 119 */
|
|
{ { 0x2522fc15be6cdcdeL,0x1e603f339f0c6f89L,0x7994edc3103e30a6L,
|
|
0x033a00db220c853eL },
|
|
{ 0xd3cfa409f7bb7fd7L,0x70f8781e462d18f6L,0xbbd82980687fe295L,
|
|
0x6eef4c32595669f3L } },
|
|
/* 42 << 119 */
|
|
{ { 0x86a9303b2f7e85c3L,0x5fce462171988f9bL,0x5b935bf6c138acb5L,
|
|
0x30ea7d6725661212L },
|
|
{ 0xef1eb5f4e51ab9a2L,0x0587c98aae067c78L,0xb3ce1b3c77ca9ca6L,
|
|
0x2a553d4d54b5f057L } },
|
|
/* 43 << 119 */
|
|
{ { 0xc78982364da29ec2L,0xdbdd5d13b9c57316L,0xc57d6e6b2cd80d47L,
|
|
0x80b460cffe9e7391L },
|
|
{ 0x98648cabf963c31eL,0x67f9f633cc4d32fdL,0x0af42a9dfdf7c687L,
|
|
0x55f292a30b015ea7L } },
|
|
/* 44 << 119 */
|
|
{ { 0x89e468b2cd21ab3dL,0xe504f022c393d392L,0xab21e1d4a5013af9L,
|
|
0xe3283f78c2c28acbL },
|
|
{ 0xf38b35f6226bf99fL,0xe83542740e291e69L,0x61673a15b20c162dL,
|
|
0xc101dc75b04fbdbeL } },
|
|
/* 45 << 119 */
|
|
{ { 0x8323b4c2255bd617L,0x6c9696936c2a9154L,0xc6e6586062679387L,
|
|
0x8e01db0cb8c88e23L },
|
|
{ 0x33c42873893a5559L,0x7630f04b47a3e149L,0xb5d80805ddcf35f8L,
|
|
0x582ca08077dfe732L } },
|
|
/* 46 << 119 */
|
|
{ { 0x2c7156e10b1894a0L,0x92034001d81c68c0L,0xed225d00c8b115b5L,
|
|
0x237f9c2283b907f2L },
|
|
{ 0x0ea2f32f4470e2c0L,0xb725f7c158be4e95L,0x0f1dcafab1ae5463L,
|
|
0x59ed51871ba2fc04L } },
|
|
/* 47 << 119 */
|
|
{ { 0xf6e0f316d0115d4dL,0x5180b12fd3691599L,0x157e32c9527f0a41L,
|
|
0x7b0b081da8e0ecc0L },
|
|
{ 0x6dbaaa8abf4f0dd0L,0x99b289c74d252696L,0x79b7755edbf864feL,
|
|
0x6974e2b176cad3abL } },
|
|
/* 48 << 119 */
|
|
{ { 0x35dbbee206ddd657L,0xe7cbdd112ff3a96dL,0x88381968076be758L,
|
|
0x2d737e7208c91f5dL },
|
|
{ 0x5f83ab6286ec3776L,0x98aa649d945fa7a1L,0xf477ec3772ef0933L,
|
|
0x66f52b1e098c17b1L } },
|
|
/* 49 << 119 */
|
|
{ { 0x9eec58fbd803738bL,0x91aaade7e4e86aa4L,0x6b1ae617a5b51492L,
|
|
0x63272121bbc45974L },
|
|
{ 0x7e0e28f0862c5129L,0x0a8f79a93321a4a0L,0xe26d16645041c88fL,
|
|
0x0571b80553233e3aL } },
|
|
/* 50 << 119 */
|
|
{ { 0xd1b0ccdec9520711L,0x55a9e4ed3c8b84bfL,0x9426bd39a1fef314L,
|
|
0x4f5f638e6eb93f2bL },
|
|
{ 0xba2a1ed32bf9341bL,0xd63c13214d42d5a9L,0xd2964a89316dc7c5L,
|
|
0xd1759606ca511851L } },
|
|
/* 51 << 119 */
|
|
{ { 0xd8a9201ff9e6ed35L,0xb7b5ee456736925aL,0x0a83fbbc99581af7L,
|
|
0x3076bc4064eeb051L },
|
|
{ 0x5511c98c02dec312L,0x270de898238dcb78L,0x2cf4cf9c539c08c9L,
|
|
0xa70cb65e38d3b06eL } },
|
|
/* 52 << 119 */
|
|
{ { 0xb12ec10ecfe57bbdL,0x82c7b65635a0c2b5L,0xddc7d5cd161c67bdL,
|
|
0xe32e8985ae3a32ccL },
|
|
{ 0x7aba9444d11a5529L,0xe964ed022427fa1aL,0x1528392d24a1770aL,
|
|
0xa152ce2c12c72fcdL } },
|
|
/* 53 << 119 */
|
|
{ { 0x714553a48ec07649L,0x18b4c290459dd453L,0xea32b7147b64b110L,
|
|
0xb871bfa52e6f07a2L },
|
|
{ 0xb67112e59e2e3c9bL,0xfbf250e544aa90f6L,0xf77aedb8bd539006L,
|
|
0x3b0cdf9ad172a66fL } },
|
|
/* 54 << 119 */
|
|
{ { 0xedf69feaf8c51187L,0x05bb67ec741e4da7L,0x47df0f3208114345L,
|
|
0x56facb07bb9792b1L },
|
|
{ 0xf3e007e98f6229e4L,0x62d103f4526fba0fL,0x4f33bef7b0339d79L,
|
|
0x9841357bb59bfec1L } },
|
|
/* 55 << 119 */
|
|
{ { 0xfa8dbb59c34e6705L,0xc3c7180b7fdaa84cL,0xf95872fca4108537L,
|
|
0x8750cc3b932a3e5aL },
|
|
{ 0xb61cc69db7275d7dL,0xffa0168b2e59b2e9L,0xca032abc6ecbb493L,
|
|
0x1d86dbd32c9082d8L } },
|
|
/* 56 << 119 */
|
|
{ { 0xae1e0b67e28ef5baL,0x2c9a4699cb18e169L,0x0ecd0e331e6bbd20L,
|
|
0x571b360eaf5e81d2L },
|
|
{ 0xcd9fea58101c1d45L,0x6651788e18880452L,0xa99726351f8dd446L,
|
|
0x44bed022e37281d0L } },
|
|
/* 57 << 119 */
|
|
{ { 0x094b2b2d33da525dL,0xf193678e13144fd8L,0xb8ab5ba4f4c1061dL,
|
|
0x4343b5fadccbe0f4L },
|
|
{ 0xa870237163812713L,0x47bf6d2df7611d93L,0x46729b8cbd21e1d7L,
|
|
0x7484d4e0d629e77dL } },
|
|
/* 58 << 119 */
|
|
{ { 0x830e6eea60dbac1fL,0x23d8c484da06a2f7L,0x896714b050ca535bL,
|
|
0xdc8d3644ebd97a9bL },
|
|
{ 0x106ef9fab12177b4L,0xf79bf464534d5d9cL,0x2537a349a6ab360bL,
|
|
0xc7c54253a00c744fL } },
|
|
/* 59 << 119 */
|
|
{ { 0xb3c7a047e5911a76L,0x61ffa5c8647f1ee7L,0x15aed36f8f56ab42L,
|
|
0x6a0d41b0a3ff9ac9L },
|
|
{ 0x68f469f5cc30d357L,0xbe9adf816b72be96L,0x1cd926fe903ad461L,
|
|
0x7e89e38fcaca441bL } },
|
|
/* 60 << 119 */
|
|
{ { 0xf0f82de5facf69d4L,0x363b7e764775344cL,0x6894f312b2e36d04L,
|
|
0x3c6cb4fe11d1c9a5L },
|
|
{ 0x85d9c3394008e1f2L,0x5e9a85ea249f326cL,0xdc35c60a678c5e06L,
|
|
0xc08b944f9f86fba9L } },
|
|
/* 61 << 119 */
|
|
{ { 0xde40c02c89f71f0fL,0xad8f3e31ff3da3c0L,0x3ea5096b42125dedL,
|
|
0x13879cbfa7379183L },
|
|
{ 0x6f4714a56b306a0bL,0x359c2ea667646c5eL,0xfacf894307726368L,
|
|
0x07a5893565ff431eL } },
|
|
/* 62 << 119 */
|
|
{ { 0x24d661d168754ab0L,0x801fce1d6f429a76L,0xc068a85fa58ce769L,
|
|
0xedc35c545d5eca2bL },
|
|
{ 0xea31276fa3f660d1L,0xa0184ebeb8fc7167L,0x0f20f21a1d8db0aeL,
|
|
0xd96d095f56c35e12L } },
|
|
/* 63 << 119 */
|
|
{ { 0xedf402b5f8c2a25bL,0x1bb772b9059204b6L,0x50cbeae219b4e34cL,
|
|
0x93109d803fa0845aL },
|
|
{ 0x54f7ccf78ef59fb5L,0x3b438fe288070963L,0x9e28c65931f3ba9bL,
|
|
0x9cc31b46ead9da92L } },
|
|
/* 64 << 119 */
|
|
{ { 0x3c2f0ba9b733aa5fL,0xdece47cbf05af235L,0xf8e3f715a2ac82a5L,
|
|
0xc97ba6412203f18aL },
|
|
{ 0xc3af550409c11060L,0x56ea2c0546af512dL,0xfac28daff3f28146L,
|
|
0x87fab43a959ef494L } },
|
|
/* 0 << 126 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 126 */
|
|
{ { 0x09891641d4c5105fL,0x1ae80f8e6d7fbd65L,0x9d67225fbee6bdb0L,
|
|
0x3b433b597fc4d860L },
|
|
{ 0x44e66db693e85638L,0xf7b59252e3e9862fL,0xdb785157665c32ecL,
|
|
0x702fefd7ae362f50L } },
|
|
/* 2 << 126 */
|
|
{ { 0x3754475d0fefb0c3L,0xd48fb56b46d7c35dL,0xa070b633363798a4L,
|
|
0xae89f3d28fdb98e6L },
|
|
{ 0x970b89c86363d14cL,0x8981752167abd27dL,0x9bf7d47444d5a021L,
|
|
0xb3083bafcac72aeeL } },
|
|
/* 3 << 126 */
|
|
{ { 0x389741debe949a44L,0x638e9388546a4fa5L,0x3fe6419ca0047bdcL,
|
|
0x7047f648aaea57caL },
|
|
{ 0x54e48a9041fbab17L,0xda8e0b28576bdba2L,0xe807eebcc72afddcL,
|
|
0x07d3336df42577bfL } },
|
|
/* 4 << 126 */
|
|
{ { 0x62a8c244bfe20925L,0x91c19ac38fdce867L,0x5a96a5d5dd387063L,
|
|
0x61d587d421d324f6L },
|
|
{ 0xe87673a2a37173eaL,0x2384800853778b65L,0x10f8441e05bab43eL,
|
|
0xfa11fe124621efbeL } },
|
|
/* 5 << 126 */
|
|
{ { 0x047b772e81685d7bL,0x23f27d81bf34a976L,0xc27608e2915f48efL,
|
|
0x3b0b43faa521d5c3L },
|
|
{ 0x7613fb2663ca7284L,0x7f5729b41d4db837L,0x87b14898583b526bL,
|
|
0x00b732a6bbadd3d1L } },
|
|
/* 6 << 126 */
|
|
{ { 0x8e02f4262048e396L,0x436b50b6383d9de4L,0xf78d3481471e85adL,
|
|
0x8b01ea6ad005c8d6L },
|
|
{ 0xd3c7afee97015c07L,0x46cdf1a94e3ba2aeL,0x7a42e50183d3a1d2L,
|
|
0xd54b5268b541dff4L } },
|
|
/* 7 << 126 */
|
|
{ { 0x3f24cf304e23e9bcL,0x4387f816126e3624L,0x26a46a033b0b6d61L,
|
|
0xaf1bc8458b2d777cL },
|
|
{ 0x25c401ba527de79cL,0x0e1346d44261bbb6L,0x4b96c44b287b4bc7L,
|
|
0x658493c75254562fL } },
|
|
/* 8 << 126 */
|
|
{ { 0x23f949feb8a24a20L,0x17ebfed1f52ca53fL,0x9b691bbebcfb4853L,
|
|
0x5617ff6b6278a05dL },
|
|
{ 0x241b34c5e3c99ebdL,0xfc64242e1784156aL,0x4206482f695d67dfL,
|
|
0xb967ce0eee27c011L } },
|
|
/* 9 << 126 */
|
|
{ { 0x65db375121c80b5dL,0x2e7a563ca31ecca0L,0xe56ffc4e5238a07eL,
|
|
0x3d6c296632ced854L },
|
|
{ 0xe99d7d1aaf70b885L,0xafc3bad92d686459L,0x9c78bf460cc8ba5bL,
|
|
0x5a43951918955aa3L } },
|
|
/* 10 << 126 */
|
|
{ { 0xf8b517a85fe4e314L,0xe60234d0fcb8906fL,0xffe542acf2061b23L,
|
|
0x287e191f6b4cb59cL },
|
|
{ 0x21857ddc09d877d8L,0x1c23478c14678941L,0xbbf0c056b6e05ea4L,
|
|
0x82da4b53b01594feL } },
|
|
/* 11 << 126 */
|
|
{ { 0xf7526791fadb8608L,0x049e832d7b74cdf6L,0xa43581ccc2b90a34L,
|
|
0x73639eb89360b10cL },
|
|
{ 0x4fba331fe1e4a71bL,0x6ffd6b938072f919L,0x6e53271c65679032L,
|
|
0x67206444f14272ceL } },
|
|
/* 12 << 126 */
|
|
{ { 0xc0f734a3b2335834L,0x9526205a90ef6860L,0xcb8be71704e2bb0dL,
|
|
0x2418871e02f383faL },
|
|
{ 0xd71776814082c157L,0xcc914ad029c20073L,0xf186c1ebe587e728L,
|
|
0x6fdb3c2261bcd5fdL } },
|
|
/* 13 << 126 */
|
|
{ { 0x30d014a6f2f9f8e9L,0x963ece234fec49d2L,0x862025c59605a8d9L,
|
|
0x3987444519f8929aL },
|
|
{ 0x01b6ff6512bf476aL,0x598a64d809cf7d91L,0xd7ec774993be56caL,
|
|
0x10899785cbb33615L } },
|
|
/* 14 << 126 */
|
|
{ { 0xb8a092fd02eee3adL,0xa86b3d3530145270L,0x323d98c68512b675L,
|
|
0x4b8bc78562ebb40fL },
|
|
{ 0x7d301f54413f9cdeL,0xa5e4fb4f2bab5664L,0x1d2b252d1cbfec23L,
|
|
0xfcd576bbe177120dL } },
|
|
/* 15 << 126 */
|
|
{ { 0x04427d3e83731a34L,0x2bb9028eed836e8eL,0xb36acff8b612ca7cL,
|
|
0xb88fe5efd3d9c73aL },
|
|
{ 0xbe2a6bc6edea4eb3L,0x43b93133488eec77L,0xf41ff566b17106e1L,
|
|
0x469e9172654efa32L } },
|
|
/* 16 << 126 */
|
|
{ { 0xb4480f0441c23fa3L,0xb4712eb0c1989a2eL,0x3ccbba0f93a29ca7L,
|
|
0x6e205c14d619428cL },
|
|
{ 0x90db7957b3641686L,0x0432691d45ac8b4eL,0x07a759acf64e0350L,
|
|
0x0514d89c9c972517L } },
|
|
/* 17 << 126 */
|
|
{ { 0x1701147fa8e67fc3L,0x9e2e0b8bab2085beL,0xd5651824ac284e57L,
|
|
0x890d432574893664L },
|
|
{ 0x8a7c5e6ec55e68a3L,0xbf12e90b4339c85aL,0x31846b85f922b655L,
|
|
0x9a54ce4d0bf4d700L } },
|
|
/* 18 << 126 */
|
|
{ { 0xd7f4e83af1a14295L,0x916f955cb285d4f9L,0xe57bb0e099ffdabaL,
|
|
0x28a43034eab0d152L },
|
|
{ 0x0a36ffa2b8a9cef8L,0x5517407eb9ec051aL,0x9c796096ea68e672L,
|
|
0x853db5fbfb3c77fbL } },
|
|
/* 19 << 126 */
|
|
{ { 0x21474ba9e864a51aL,0x6c2676996e8a1b8bL,0x7c82362694120a28L,
|
|
0xe61e9a488383a5dbL },
|
|
{ 0x7dd750039f84216dL,0xab020d07ad43cd85L,0x9437ae48da12c659L,
|
|
0x6449c2ebe65452adL } },
|
|
/* 20 << 126 */
|
|
{ { 0xcc7c4c1c2cf9d7c1L,0x1320886aee95e5abL,0xbb7b9056beae170cL,
|
|
0xc8a5b250dbc0d662L },
|
|
{ 0x4ed81432c11d2303L,0x7da669121f03769fL,0x3ac7a5fd84539828L,
|
|
0x14dada943bccdd02L } },
|
|
/* 21 << 126 */
|
|
{ { 0x8b84c3217ef6b0d1L,0x52a9477a7c933f22L,0x5ef6728afd440b82L,
|
|
0x5c3bd8596ce4bd5eL },
|
|
{ 0x918b80f5f22c2d3eL,0x368d5040b7bb6cc5L,0xb66142a12695a11cL,
|
|
0x60ac583aeb19ea70L } },
|
|
/* 22 << 126 */
|
|
{ { 0x317cbb980eab2437L,0x8cc08c555e2654c8L,0xfe2d6520e6d8307fL,
|
|
0xe9f147f357428993L },
|
|
{ 0x5f9c7d14d2fd6cf1L,0xa3ecd0642d4fcbb0L,0xad83fef08e7341f7L,
|
|
0x643f23a03a63115cL } },
|
|
/* 23 << 126 */
|
|
{ { 0xd38a78abe65ab743L,0xbf7c75b135edc89cL,0x3dd8752e530df568L,
|
|
0xf85c4a76e308c682L },
|
|
{ 0x4c9955b2e68acf37L,0xa544df3dab32af85L,0x4b8ec3f5a25cf493L,
|
|
0x4d8f27641a622febL } },
|
|
/* 24 << 126 */
|
|
{ { 0x7bb4f7aaf0dcbc49L,0x7de551f970bbb45bL,0xcfd0f3e49f2ca2e5L,
|
|
0xece587091f5c76efL },
|
|
{ 0x32920edd167d79aeL,0x039df8a2fa7d7ec1L,0xf46206c0bb30af91L,
|
|
0x1ff5e2f522676b59L } },
|
|
/* 25 << 126 */
|
|
{ { 0x11f4a0396ea51d66L,0x506c1445807d7a26L,0x60da5705755a9b24L,
|
|
0x8fc8cc321f1a319eL },
|
|
{ 0x83642d4d9433d67dL,0x7fa5cb8f6a7dd296L,0x576591db9b7bde07L,
|
|
0x13173d25419716fbL } },
|
|
/* 26 << 126 */
|
|
{ { 0xea30599dd5b340ffL,0xfc6b5297b0fe76c5L,0x1c6968c8ab8f5adcL,
|
|
0xf723c7f5901c928dL },
|
|
{ 0x4203c3219773d402L,0xdf7c6aa31b51dd47L,0x3d49e37a552be23cL,
|
|
0x57febee80b5a6e87L } },
|
|
/* 27 << 126 */
|
|
{ { 0xc5ecbee47bd8e739L,0x79d44994ae63bf75L,0x168bd00f38fb8923L,
|
|
0x75d48ee4d0533130L },
|
|
{ 0x554f77aadb5cdf33L,0x3396e8963c696769L,0x2fdddbf2d3fd674eL,
|
|
0xbbb8f6ee99d0e3e5L } },
|
|
/* 28 << 126 */
|
|
{ { 0x51b90651cbae2f70L,0xefc4bc0593aaa8ebL,0x8ecd8689dd1df499L,
|
|
0x1aee99a822f367a5L },
|
|
{ 0x95d485b9ae8274c5L,0x6c14d4457d30b39cL,0xbafea90bbcc1ef81L,
|
|
0x7c5f317aa459a2edL } },
|
|
/* 29 << 126 */
|
|
{ { 0x012110754ef44227L,0xa17bed6edc20f496L,0x0cdfe424819853cdL,
|
|
0x13793298f71e2ce7L },
|
|
{ 0x3c1f3078dbbe307bL,0x6dd1c20e76ee9936L,0x23ee4b57423caa20L,
|
|
0x4ac3793b8efb840eL } },
|
|
/* 30 << 126 */
|
|
{ { 0x934438ebed1f8ca0L,0x3e5466584ebb25a2L,0xc415af0ec069896fL,
|
|
0xc13eddb09a5aa43dL },
|
|
{ 0x7a04204fd49eb8f6L,0xd0d5bdfcd74f1670L,0x3697e28656fc0558L,
|
|
0x1020737101cebadeL } },
|
|
/* 31 << 126 */
|
|
{ { 0x5f87e6900647a82bL,0x908e0ed48f40054fL,0xa9f633d479853803L,
|
|
0x8ed13c9a4a28b252L },
|
|
{ 0x3e2ef6761f460f64L,0x53930b9b36d06336L,0x347073ac8fc4979bL,
|
|
0x84380e0e5ecd5597L } },
|
|
/* 32 << 126 */
|
|
{ { 0xe3b22c6bc4fe3c39L,0xba4a81536c7bebdfL,0xf23ab6b725693459L,
|
|
0x53bc377014922b11L },
|
|
{ 0x4645c8ab5afc60dbL,0xaa02235520b9f2a3L,0x52a2954cce0fc507L,
|
|
0x8c2731bb7ce1c2e7L } },
|
|
/* 33 << 126 */
|
|
{ { 0xf39608ab18a0339dL,0xac7a658d3735436cL,0xb22c2b07cd992b4fL,
|
|
0x4e83daecf40dcfd4L },
|
|
{ 0x8a34c7be2f39ea3eL,0xef0c005fb0a56d2eL,0x62731f6a6edd8038L,
|
|
0x5721d7404e3cb075L } },
|
|
/* 34 << 126 */
|
|
{ { 0x1ea41511fbeeee1bL,0xd1ef5e73ef1d0c05L,0x42feefd173c07d35L,
|
|
0xe530a00a8a329493L },
|
|
{ 0x5d55b7fef15ebfb0L,0x549de03cd322491aL,0xf7b5f602745b3237L,
|
|
0x3632a3a21ab6e2b6L } },
|
|
/* 35 << 126 */
|
|
{ { 0x0d3bba890ef59f78L,0x0dfc6443c9e52b9aL,0x1dc7969972631447L,
|
|
0xef033917b3be20b1L },
|
|
{ 0x0c92735db1383948L,0xc1fc29a2c0dd7d7dL,0x6485b697403ed068L,
|
|
0x13bfaab3aac93bdcL } },
|
|
/* 36 << 126 */
|
|
{ { 0x410dc6a90deeaf52L,0xb003fb024c641c15L,0x1384978c5bc504c4L,
|
|
0x37640487864a6a77L },
|
|
{ 0x05991bc6222a77daL,0x62260a575e47eb11L,0xc7af6613f21b432cL,
|
|
0x22f3acc9ab4953e9L } },
|
|
/* 37 << 126 */
|
|
{ { 0x529349228e41d155L,0x4d0245683ac059efL,0xb02017554d884411L,
|
|
0xce8055cfa59a178fL },
|
|
{ 0xcd77d1aff6204549L,0xa0a00a3ec7066759L,0x471071ef0272c229L,
|
|
0x009bcf6bd3c4b6b0L } },
|
|
/* 38 << 126 */
|
|
{ { 0x2a2638a822305177L,0xd51d59df41645bbfL,0xa81142fdc0a7a3c0L,
|
|
0xa17eca6d4c7063eeL },
|
|
{ 0x0bb887ed60d9dcecL,0xd6d28e5120ad2455L,0xebed6308a67102baL,
|
|
0x042c31148bffa408L } },
|
|
/* 39 << 126 */
|
|
{ { 0xfd099ac58aa68e30L,0x7a6a3d7c1483513eL,0xffcc6b75ba2d8f0cL,
|
|
0x54dacf961e78b954L },
|
|
{ 0xf645696fa4a9af89L,0x3a41194006ac98ecL,0x41b8b3f622a67a20L,
|
|
0x2d0b1e0f99dec626L } },
|
|
/* 40 << 126 */
|
|
{ { 0x27c8919240be34e8L,0xc7162b3791907f35L,0x90188ec1a956702bL,
|
|
0xca132f7ddf93769cL },
|
|
{ 0x3ece44f90e2025b4L,0x67aaec690c62f14cL,0xad74141822e3cc11L,
|
|
0xcf9b75c37ff9a50eL } },
|
|
/* 41 << 126 */
|
|
{ { 0x02fa2b164d348272L,0xbd99d61a9959d56dL,0xbc4f19db18762916L,
|
|
0xcc7cce5049c1ac80L },
|
|
{ 0x4d59ebaad846bd83L,0x8775a9dca9202849L,0x07ec4ae16e1f4ca9L,
|
|
0x27eb5875ba893f11L } },
|
|
/* 42 << 126 */
|
|
{ { 0x00284d51662cc565L,0x82353a6b0db4138dL,0xd9c7aaaaaa32a594L,
|
|
0xf5528b5ea5669c47L },
|
|
{ 0xf32202312f23c5ffL,0xe3e8147a6affa3a1L,0xfb423d5c202ddda0L,
|
|
0x3d6414ac6b871bd4L } },
|
|
/* 43 << 126 */
|
|
{ { 0x586f82e1a51a168aL,0xb712c67148ae5448L,0x9a2e4bd176233eb8L,
|
|
0x0188223a78811ca9L },
|
|
{ 0x553c5e21f7c18de1L,0x7682e451b27bb286L,0x3ed036b30e51e929L,
|
|
0xf487211bec9cb34fL } },
|
|
/* 44 << 126 */
|
|
{ { 0x0d0942770c24efc8L,0x0349fd04bef737a4L,0x6d1c9dd2514cdd28L,
|
|
0x29c135ff30da9521L },
|
|
{ 0xea6e4508f78b0b6fL,0x176f5dd2678c143cL,0x081484184be21e65L,
|
|
0x27f7525ce7df38c4L } },
|
|
/* 45 << 126 */
|
|
{ { 0x1fb70e09748ab1a4L,0x9cba50a05efe4433L,0x7846c7a615f75af2L,
|
|
0x2a7c2c575ee73ea8L },
|
|
{ 0x42e566a43f0a449aL,0x45474c3bad90fc3dL,0x7447be3d8b61d057L,
|
|
0x3e9d1cf13a4ec092L } },
|
|
/* 46 << 126 */
|
|
{ { 0x1603e453f380a6e6L,0x0b86e4319b1437c2L,0x7a4173f2ef29610aL,
|
|
0x8fa729a7f03d57f7L },
|
|
{ 0x3e186f6e6c9c217eL,0xbe1d307991919524L,0x92a62a70153d4fb1L,
|
|
0x32ed3e34d68c2f71L } },
|
|
/* 47 << 126 */
|
|
{ { 0xd785027f9eb1a8b7L,0xbc37eb77c5b22fe8L,0x466b34f0b9d6a191L,
|
|
0x008a89af9a05f816L },
|
|
{ 0x19b028fb7d42c10aL,0x7fe8c92f49b3f6b8L,0x58907cc0a5a0ade3L,
|
|
0xb3154f51559d1a7cL } },
|
|
/* 48 << 126 */
|
|
{ { 0x5066efb6d9790ed6L,0xa77a0cbca6aa793bL,0x1a915f3c223e042eL,
|
|
0x1c5def0469c5874bL },
|
|
{ 0x0e83007873b6c1daL,0x55cf85d2fcd8557aL,0x0f7c7c760460f3b1L,
|
|
0x87052acb46e58063L } },
|
|
/* 49 << 126 */
|
|
{ { 0x09212b80907eae66L,0x3cb068e04d721c89L,0xa87941aedd45ac1cL,
|
|
0xde8d5c0d0daa0dbbL },
|
|
{ 0xda421fdce3502e6eL,0xc89442014d89a084L,0x7307ba5ef0c24bfbL,
|
|
0xda212beb20bde0efL } },
|
|
/* 50 << 126 */
|
|
{ { 0xea2da24bf82ce682L,0x058d381607f71fe4L,0x35a024625ffad8deL,
|
|
0xcd7b05dcaadcefabL },
|
|
{ 0xd442f8ed1d9f54ecL,0x8be3d618b2d3b5caL,0xe2220ed0e06b2ce2L,
|
|
0x82699a5f1b0da4c0L } },
|
|
/* 51 << 126 */
|
|
{ { 0x3ff106f571c0c3a7L,0x8f580f5a0d34180cL,0x4ebb120e22d7d375L,
|
|
0x5e5782cce9513675L },
|
|
{ 0x2275580c99c82a70L,0xe8359fbf15ea8c4cL,0x53b48db87b415e70L,
|
|
0xaacf2240100c6014L } },
|
|
/* 52 << 126 */
|
|
{ { 0x9faaccf5e4652f1dL,0xbd6fdd2ad56157b2L,0xa4f4fb1f6261ec50L,
|
|
0x244e55ad476bcd52L },
|
|
{ 0x881c9305047d320bL,0x1ca983d56181263fL,0x354e9a44278fb8eeL,
|
|
0xad2dbc0f396e4964L } },
|
|
/* 53 << 126 */
|
|
{ { 0x723f3aa29268b3deL,0x0d1ca29ae6e0609aL,0x794866aa6cf44252L,
|
|
0x0b59f3e301af87edL },
|
|
{ 0xe234e5ff7f4a6c51L,0xa8768fd261dc2f7eL,0xdafc73320a94d81fL,
|
|
0xd7f8428206938ce1L } },
|
|
/* 54 << 126 */
|
|
{ { 0xae0b3c0e0546063eL,0x7fbadcb25d61abc6L,0xd5d7a2c9369ac400L,
|
|
0xa5978d09ae67d10cL },
|
|
{ 0x290f211e4f85eaacL,0xe61e2ad1facac681L,0xae125225388384cdL,
|
|
0xa7fb68e9ccfde30fL } },
|
|
/* 55 << 126 */
|
|
{ { 0x7a59b9363daed4c2L,0x80a9aa402606f789L,0xb40c1ea5f6a6d90aL,
|
|
0x948364d3514d5885L },
|
|
{ 0x062ebc6070985182L,0xa6db5b0e33310895L,0x64a12175e329c2f5L,
|
|
0xc5f25bd290ea237eL } },
|
|
/* 56 << 126 */
|
|
{ { 0x7915c5242d0a4c23L,0xeb5d26e46bb3cc52L,0x369a9116c09e2c92L,
|
|
0x0c527f92cf182cf8L },
|
|
{ 0x9e5919382aede0acL,0xb29222086cc34939L,0x3c9d896299a34361L,
|
|
0x3c81836dc1905fe6L } },
|
|
/* 57 << 126 */
|
|
{ { 0x4bfeb57fa001ec5aL,0xe993f5bba0dc5dbaL,0x47884109724a1380L,
|
|
0x8a0369ab32fe9a04L },
|
|
{ 0xea068d608c927db8L,0xbf5f37cf94655741L,0x47d402a204b6c7eaL,
|
|
0x4551c2956af259cbL } },
|
|
/* 58 << 126 */
|
|
{ { 0x698b71e7ed77ee8bL,0xbddf7bd0f309d5c7L,0x6201c22c34e780caL,
|
|
0xab04f7d84c295ef4L },
|
|
{ 0x1c9472944313a8ceL,0xe532e4ac92ca4cfeL,0x89738f80d0a7a97aL,
|
|
0xec088c88a580fd5bL } },
|
|
/* 59 << 126 */
|
|
{ { 0x612b1ecc42ce9e51L,0x8f9840fdb25fdd2aL,0x3cda78c001e7f839L,
|
|
0x546b3d3aece05480L },
|
|
{ 0x271719a980d30916L,0x45497107584c20c4L,0xaf8f94785bc78608L,
|
|
0x28c7d484277e2a4cL } },
|
|
/* 60 << 126 */
|
|
{ { 0xfce0176788a2ffe4L,0xdc506a3528e169a5L,0x0ea108617af9c93aL,
|
|
0x1ed2436103fa0e08L },
|
|
{ 0x96eaaa92a3d694e7L,0xc0f43b4def50bc74L,0xce6aa58c64114db4L,
|
|
0x8218e8ea7c000fd4L } },
|
|
/* 61 << 126 */
|
|
{ { 0xac815dfb185f8844L,0xcd7e90cb1557abfbL,0x23d16655afbfecdfL,
|
|
0x80f3271f085cac4aL },
|
|
{ 0x7fc39aa7d0e62f47L,0x88d519d1460a48e5L,0x59559ac4d28f101eL,
|
|
0x7981d9e9ca9ae816L } },
|
|
/* 62 << 126 */
|
|
{ { 0x5c38652c9ac38203L,0x86eaf87f57657fe5L,0x568fc472e21f5416L,
|
|
0x2afff39ce7e597b5L },
|
|
{ 0x3adbbb07256d4eabL,0x225986928285ab89L,0x35f8112a041caefeL,
|
|
0x95df02e3a5064c8bL } },
|
|
/* 63 << 126 */
|
|
{ { 0x4d63356ec7004bf3L,0x230a08f4db83c7deL,0xca27b2708709a7b7L,
|
|
0x0d1c4cc4cb9abd2dL },
|
|
{ 0x8a0bc66e7550fee8L,0x369cd4c79cf7247eL,0x75562e8492b5b7e7L,
|
|
0x8fed0da05802af7bL } },
|
|
/* 64 << 126 */
|
|
{ { 0x6a7091c2e48fb889L,0x26882c137b8a9d06L,0xa24986631b82a0e2L,
|
|
0x844ed7363518152dL },
|
|
{ 0x282f476fd86e27c7L,0xa04edaca04afefdcL,0x8b256ebc6119e34dL,
|
|
0x56a413e90787d78bL } },
|
|
/* 0 << 133 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 133 */
|
|
{ { 0x82ee061d5a74be50L,0xe41781c4dea16ff5L,0xe0b0c81e99bfc8a2L,
|
|
0x624f4d690b547e2dL },
|
|
{ 0x3a83545dbdcc9ae4L,0x2573dbb6409b1e8eL,0x482960c4a6c93539L,
|
|
0xf01059ad5ae18798L } },
|
|
/* 2 << 133 */
|
|
{ { 0x715c9f973112795fL,0xe8244437984e6ee1L,0x55cb4858ecb66bcdL,
|
|
0x7c136735abaffbeeL },
|
|
{ 0x546615955dbec38eL,0x51c0782c388ad153L,0x9ba4c53ac6e0952fL,
|
|
0x27e6782a1b21dfa8L } },
|
|
/* 3 << 133 */
|
|
{ { 0x682f903d4ed2dbc2L,0x0eba59c87c3b2d83L,0x8e9dc84d9c7e9335L,
|
|
0x5f9b21b00eb226d7L },
|
|
{ 0xe33bd394af267baeL,0xaa86cc25be2e15aeL,0x4f0bf67d6a8ec500L,
|
|
0x5846aa44f9630658L } },
|
|
/* 4 << 133 */
|
|
{ { 0xfeb09740e2c2bf15L,0x627a2205a9e99704L,0xec8d73d0c2fbc565L,
|
|
0x223eed8fc20c8de8L },
|
|
{ 0x1ee32583a8363b49L,0x1a0b6cb9c9c2b0a6L,0x49f7c3d290dbc85cL,
|
|
0xa8dfbb971ef4c1acL } },
|
|
/* 5 << 133 */
|
|
{ { 0xafb34d4c65c7c2abL,0x1d4610e7e2c5ea84L,0x893f6d1b973c4ab5L,
|
|
0xa3cdd7e9945ba5c4L },
|
|
{ 0x60514983064417eeL,0x1459b23cad6bdf2bL,0x23b2c3415cf726c3L,
|
|
0x3a82963532d6354aL } },
|
|
/* 6 << 133 */
|
|
{ { 0x294f901fab192c18L,0xec5fcbfe7030164fL,0xe2e2fcb7e2246ba6L,
|
|
0x1e7c88b3221a1a0cL },
|
|
{ 0x72c7dd93c92d88c5L,0x41c2148e1106fb59L,0x547dd4f5a0f60f14L,
|
|
0xed9b52b263960f31L } },
|
|
/* 7 << 133 */
|
|
{ { 0x6c8349ebb0a5b358L,0xb154c5c29e7e2ed6L,0xcad5eccfeda462dbL,
|
|
0xf2d6dbe42de66b69L },
|
|
{ 0x426aedf38665e5b2L,0x488a85137b7f5723L,0x15cc43b38bcbb386L,
|
|
0x27ad0af3d791d879L } },
|
|
/* 8 << 133 */
|
|
{ { 0xc16c236e846e364fL,0x7f33527cdea50ca0L,0xc48107750926b86dL,
|
|
0x6c2a36090598e70cL },
|
|
{ 0xa6755e52f024e924L,0xe0fa07a49db4afcaL,0x15c3ce7d66831790L,
|
|
0x5b4ef350a6cbb0d6L } },
|
|
/* 9 << 133 */
|
|
{ { 0x2c4aafc4b6205969L,0x42563f02f6c7854fL,0x016aced51d983b48L,
|
|
0xfeb356d899949755L },
|
|
{ 0x8c2a2c81d1a39bd7L,0x8f44340fe6934ae9L,0x148cf91c447904daL,
|
|
0x7340185f0f51a926L } },
|
|
/* 10 << 133 */
|
|
{ { 0x2f8f00fb7409ab46L,0x057e78e680e289b2L,0x03e5022ca888e5d1L,
|
|
0x3c87111a9dede4e2L },
|
|
{ 0x5b9b0e1c7809460bL,0xe751c85271c9abc7L,0x8b944e28c7cc1dc9L,
|
|
0x4f201ffa1d3cfa08L } },
|
|
/* 11 << 133 */
|
|
{ { 0x02fc905c3e6721ceL,0xd52d70dad0b3674cL,0x5dc2e5ca18810da4L,
|
|
0xa984b2735c69dd99L },
|
|
{ 0x63b9252784de5ca4L,0x2f1c9872c852dec4L,0x18b03593c2e3de09L,
|
|
0x19d70b019813dc2fL } },
|
|
/* 12 << 133 */
|
|
{ { 0x42806b2da6dc1d29L,0xd3030009f871e144L,0xa1feb333aaf49276L,
|
|
0xb5583b9ec70bc04bL },
|
|
{ 0x1db0be7895695f20L,0xfc84181189d012b5L,0x6409f27205f61643L,
|
|
0x40d34174d5883128L } },
|
|
/* 13 << 133 */
|
|
{ { 0xd79196f567419833L,0x6059e252863b7b08L,0x84da18171c56700cL,
|
|
0x5758ee56b28d3ec4L },
|
|
{ 0x7da2771d013b0ea6L,0xfddf524b54c5e9b9L,0x7df4faf824305d80L,
|
|
0x58f5c1bf3a97763fL } },
|
|
/* 14 << 133 */
|
|
{ { 0xa5af37f17c696042L,0xd4cba22c4a2538deL,0x211cb9959ea42600L,
|
|
0xcd105f417b069889L },
|
|
{ 0xb1e1cf19ddb81e74L,0x472f2d895157b8caL,0x086fb008ee9db885L,
|
|
0x365cd5700f26d131L } },
|
|
/* 15 << 133 */
|
|
{ { 0x284b02bba2be7053L,0xdcbbf7c67ab9a6d6L,0x4425559c20f7a530L,
|
|
0x961f2dfa188767c8L },
|
|
{ 0xe2fd943570dc80c4L,0x104d6b63f0784120L,0x7f592bc153567122L,
|
|
0xf6bc1246f688ad77L } },
|
|
/* 16 << 133 */
|
|
{ { 0x05214c050f15dde9L,0xa47a76a80d5f2b82L,0xbb254d3062e82b62L,
|
|
0x11a05fe03ec955eeL },
|
|
{ 0x7eaff46e9d529b36L,0x55ab13018f9e3df6L,0xc463e37199317698L,
|
|
0xfd251438ccda47adL } },
|
|
/* 17 << 133 */
|
|
{ { 0xca9c354723d695eaL,0x48ce626e16e589b5L,0x6b5b64c7b187d086L,
|
|
0xd02e1794b2207948L },
|
|
{ 0x8b58e98f7198111dL,0x90ca6305dcf9c3ccL,0x5691fe72f34089b0L,
|
|
0x60941af1fc7c80ffL } },
|
|
/* 18 << 133 */
|
|
{ { 0xa09bc0a222eb51e5L,0xc0bb7244aa9cf09aL,0x36a8077f80159f06L,
|
|
0x8b5c989edddc560eL },
|
|
{ 0x19d2f316512e1f43L,0x02eac554ad08ff62L,0x012ab84c07d20b4eL,
|
|
0x37d1e115d6d4e4e1L } },
|
|
/* 19 << 133 */
|
|
{ { 0xb6443e1aab7b19a8L,0xf08d067edef8cd45L,0x63adf3e9685e03daL,
|
|
0xcf15a10e4792b916L },
|
|
{ 0xf44bcce5b738a425L,0xebe131d59636b2fdL,0x940688417850d605L,
|
|
0x09684eaab40d749dL } },
|
|
/* 20 << 133 */
|
|
{ { 0x8c3c669c72ba075bL,0x89f78b55ba469015L,0x5706aade3e9f8ba8L,
|
|
0x6d8bd565b32d7ed7L },
|
|
{ 0x25f4e63b805f08d6L,0x7f48200dc3bcc1b5L,0x4e801968b025d847L,
|
|
0x74afac0487cbe0a8L } },
|
|
/* 21 << 133 */
|
|
{ { 0x43ed2c2b7e63d690L,0xefb6bbf00223cdb8L,0x4fec3cae2884d3feL,
|
|
0x065ecce6d75e25a4L },
|
|
{ 0x6c2294ce69f79071L,0x0d9a8e5f044b8666L,0x5009f23817b69d8fL,
|
|
0x3c29f8fec5dfdaf7L } },
|
|
/* 22 << 133 */
|
|
{ { 0x9067528febae68c4L,0x5b38563230c5ba21L,0x540df1191fdd1aecL,
|
|
0xcf37825bcfba4c78L },
|
|
{ 0x77eff980beb11454L,0x40a1a99160c1b066L,0xe8018980f889a1c7L,
|
|
0xb9c52ae976c24be0L } },
|
|
/* 23 << 133 */
|
|
{ { 0x05fbbcce45650ef4L,0xae000f108aa29ac7L,0x884b71724f04c470L,
|
|
0x7cd4fde219bb5c25L },
|
|
{ 0x6477b22ae8840869L,0xa88688595fbd0686L,0xf23cc02e1116dfbaL,
|
|
0x76cd563fd87d7776L } },
|
|
/* 24 << 133 */
|
|
{ { 0xe2a37598a9d82abfL,0x5f188ccbe6c170f5L,0x816822005066b087L,
|
|
0xda22c212c7155adaL },
|
|
{ 0x151e5d3afbddb479L,0x4b606b846d715b99L,0x4a73b54bf997cb2eL,
|
|
0x9a1bfe433ecd8b66L } },
|
|
/* 25 << 133 */
|
|
{ { 0x1c3128092a67d48aL,0xcd6a671e031fa9e2L,0xbec3312a0e43a34aL,
|
|
0x1d93563955ef47d3L },
|
|
{ 0x5ea024898fea73eaL,0x8247b364a035afb2L,0xb58300a65265b54cL,
|
|
0x3286662f722c7148L } },
|
|
/* 26 << 133 */
|
|
{ { 0xb77fd76bb4ec4c20L,0xf0a12fa70f3fe3fdL,0xf845bbf541d8c7e8L,
|
|
0xe4d969ca5ec10aa8L },
|
|
{ 0x4c0053b743e232a3L,0xdc7a3fac37f8a45aL,0x3c4261c520d81c8fL,
|
|
0xfd4b3453b00eab00L } },
|
|
/* 27 << 133 */
|
|
{ { 0x76d48f86d36e3062L,0x626c5277a143ff02L,0x538174deaf76f42eL,
|
|
0x2267aa866407ceacL },
|
|
{ 0xfad7635172e572d5L,0xab861af7ba7330ebL,0xa0a1c8c7418d8657L,
|
|
0x988821cb20289a52L } },
|
|
/* 28 << 133 */
|
|
{ { 0x79732522cccc18adL,0xaadf3f8df1a6e027L,0xf7382c9317c2354dL,
|
|
0x5ce1680cd818b689L },
|
|
{ 0x359ebbfcd9ecbee9L,0x4330689c1cae62acL,0xb55ce5b4c51ac38aL,
|
|
0x7921dfeafe238ee8L } },
|
|
/* 29 << 133 */
|
|
{ { 0x3972bef8271d1ca5L,0x3e423bc7e8aabd18L,0x57b09f3f44a3e5e3L,
|
|
0x5da886ae7b444d66L },
|
|
{ 0x68206634a9964375L,0x356a2fa3699cd0ffL,0xaf0faa24dba515e9L,
|
|
0x536e1f5cb321d79aL } },
|
|
/* 30 << 133 */
|
|
{ { 0xd3b9913a5c04e4eaL,0xd549dcfed6f11513L,0xee227bf579fd1d94L,
|
|
0x9f35afeeb43f2c67L },
|
|
{ 0xd2638d24f1314f53L,0x62baf948cabcd822L,0x5542de294ef48db0L,
|
|
0xb3eb6a04fc5f6bb2L } },
|
|
/* 31 << 133 */
|
|
{ { 0x23c110ae1208e16aL,0x1a4d15b5f8363e24L,0x30716844164be00bL,
|
|
0xa8e24824f6f4690dL },
|
|
{ 0x548773a290b170cfL,0xa1bef33142f191f4L,0x70f418d09247aa97L,
|
|
0xea06028e48be9147L } },
|
|
/* 32 << 133 */
|
|
{ { 0xe13122f3dbfb894eL,0xbe9b79f6ce274b18L,0x85a49de5ca58aadfL,
|
|
0x2495775811487351L },
|
|
{ 0x111def61bb939099L,0x1d6a974a26d13694L,0x4474b4ced3fc253bL,
|
|
0x3a1485e64c5db15eL } },
|
|
/* 33 << 133 */
|
|
{ { 0xe79667b4147c15b4L,0xe34f553b7bc61301L,0x032b80f817094381L,
|
|
0x55d8bafd723eaa21L },
|
|
{ 0x5a987995f1c0e74eL,0x5a9b292eebba289cL,0x413cd4b2eb4c8251L,
|
|
0x98b5d243d162db0aL } },
|
|
/* 34 << 133 */
|
|
{ { 0xbb47bf6668342520L,0x08d68949baa862d1L,0x11f349c7e906abcdL,
|
|
0x454ce985ed7bf00eL },
|
|
{ 0xacab5c9eb55b803bL,0xb03468ea31e3c16dL,0x5c24213dd273bf12L,
|
|
0x211538eb71587887L } },
|
|
/* 35 << 133 */
|
|
{ { 0x198e4a2f731dea2dL,0xd5856cf274ed7b2aL,0x86a632eb13a664feL,
|
|
0x932cd909bda41291L },
|
|
{ 0x850e95d4c0c4ddc0L,0xc0f422f8347fc2c9L,0xe68cbec486076bcbL,
|
|
0xf9e7c0c0cd6cd286L } },
|
|
/* 36 << 133 */
|
|
{ { 0x65994ddb0f5f27caL,0xe85461fba80d59ffL,0xff05481a66601023L,
|
|
0xc665427afc9ebbfbL },
|
|
{ 0xb0571a697587fd52L,0x935289f88d49efceL,0x61becc60ea420688L,
|
|
0xb22639d913a786afL } },
|
|
/* 37 << 133 */
|
|
{ { 0x1a8e6220361ecf90L,0x001f23e025506463L,0xe4ae9b5d0a5c2b79L,
|
|
0xebc9cdadd8149db5L },
|
|
{ 0xb33164a1934aa728L,0x750eb00eae9b60f3L,0x5a91615b9b9cfbfdL,
|
|
0x97015cbfef45f7f6L } },
|
|
/* 38 << 133 */
|
|
{ { 0xb462c4a5bf5151dfL,0x21adcc41b07118f2L,0xd60c545b043fa42cL,
|
|
0xfc21aa54e96be1abL },
|
|
{ 0xe84bc32f4e51ea80L,0x3dae45f0259b5d8dL,0xbb73c7ebc38f1b5eL,
|
|
0xe405a74ae8ae617dL } },
|
|
/* 39 << 133 */
|
|
{ { 0xbb1ae9c69f1c56bdL,0x8c176b9849f196a4L,0xc448f3116875092bL,
|
|
0xb5afe3de9f976033L },
|
|
{ 0xa8dafd49145813e5L,0x687fc4d9e2b34226L,0xf2dfc92d4c7ff57fL,
|
|
0x004e3fc1401f1b46L } },
|
|
/* 40 << 133 */
|
|
{ { 0x5afddab61430c9abL,0x0bdd41d32238e997L,0xf0947430418042aeL,
|
|
0x71f9addacdddc4cbL },
|
|
{ 0x7090c016c52dd907L,0xd9bdf44d29e2047fL,0xe6f1fe801b1011a6L,
|
|
0xb63accbcd9acdc78L } },
|
|
/* 41 << 133 */
|
|
{ { 0xcfc7e2351272a95bL,0x0c667717a6276ac8L,0x3c0d3709e2d7eef7L,
|
|
0x5add2b069a685b3eL },
|
|
{ 0x363ad32d14ea5d65L,0xf8e01f068d7dd506L,0xc9ea221375b4aac6L,
|
|
0xed2a2bf90d353466L } },
|
|
/* 42 << 133 */
|
|
{ { 0x439d79b5e9d3a7c3L,0x8e0ee5a681b7f34bL,0xcf3dacf51dc4ba75L,
|
|
0x1d3d1773eb3310c7L },
|
|
{ 0xa8e671127747ae83L,0x31f43160197d6b40L,0x0521cceecd961400L,
|
|
0x67246f11f6535768L } },
|
|
/* 43 << 133 */
|
|
{ { 0x702fcc5aef0c3133L,0x247cc45d7e16693bL,0xfd484e49c729b749L,
|
|
0x522cef7db218320fL },
|
|
{ 0xe56ef40559ab93b3L,0x225fba119f181071L,0x33bd659515330ed0L,
|
|
0xc4be69d51ddb32f7L } },
|
|
/* 44 << 133 */
|
|
{ { 0x264c76680448087cL,0xac30903f71432daeL,0x3851b26600f9bf47L,
|
|
0x400ed3116cdd6d03L },
|
|
{ 0x045e79fef8fd2424L,0xfdfd974afa6da98bL,0x45c9f6410c1e673aL,
|
|
0x76f2e7335b2c5168L } },
|
|
/* 45 << 133 */
|
|
{ { 0x1adaebb52a601753L,0xb286514cc57c2d49L,0xd87696701e0bfd24L,
|
|
0x950c547e04478922L },
|
|
{ 0xd1d41969e5d32bfeL,0x30bc1472750d6c3eL,0x8f3679fee0e27f3aL,
|
|
0x8f64a7dca4a6ee0cL } },
|
|
/* 46 << 133 */
|
|
{ { 0x2fe59937633dfb1fL,0xea82c395977f2547L,0xcbdfdf1a661ea646L,
|
|
0xc7ccc591b9085451L },
|
|
{ 0x8217796281761e13L,0xda57596f9196885cL,0xbc17e84928ffbd70L,
|
|
0x1e6e0a412671d36fL } },
|
|
/* 47 << 133 */
|
|
{ { 0x61ae872c4152fcf5L,0x441c87b09e77e754L,0xd0799dd5a34dff09L,
|
|
0x766b4e4488a6b171L },
|
|
{ 0xdc06a51211f1c792L,0xea02ae934be35c3eL,0xe5ca4d6de90c469eL,
|
|
0x4df4368e56e4ff5cL } },
|
|
/* 48 << 133 */
|
|
{ { 0x7817acab4baef62eL,0x9f5a2202a85b91e8L,0x9666ebe66ce57610L,
|
|
0x32ad31f3f73bfe03L },
|
|
{ 0x628330a425bcf4d6L,0xea950593515056e6L,0x59811c89e1332156L,
|
|
0xc89cf1fe8c11b2d7L } },
|
|
/* 49 << 133 */
|
|
{ { 0x75b6391304e60cc0L,0xce811e8d4625d375L,0x030e43fc2d26e562L,
|
|
0xfbb30b4b608d36a0L },
|
|
{ 0x634ff82c48528118L,0x7c6fe085cd285911L,0x7f2830c099358f28L,
|
|
0x2e60a95e665e6c09L } },
|
|
/* 50 << 133 */
|
|
{ { 0x08407d3d9b785dbfL,0x530889aba759bce7L,0xf228e0e652f61239L,
|
|
0x2b6d14616879be3cL },
|
|
{ 0xe6902c0451a7bbf7L,0x30ad99f076f24a64L,0x66d9317a98bc6da0L,
|
|
0xf4f877f3cb596ac0L } },
|
|
/* 51 << 133 */
|
|
{ { 0xb05ff62d4c44f119L,0x4555f536e9b77416L,0xc7c0d0598caed63bL,
|
|
0x0cd2b7cec358b2a9L },
|
|
{ 0x3f33287b46945fa3L,0xf8785b20d67c8791L,0xc54a7a619637bd08L,
|
|
0x54d4598c18be79d7L } },
|
|
/* 52 << 133 */
|
|
{ { 0x889e5acbc46d7ce1L,0x9a515bb78b085877L,0xfac1a03d0b7a5050L,
|
|
0x7d3e738af2926035L },
|
|
{ 0x861cc2ce2a6cb0ebL,0x6f2e29558f7adc79L,0x61c4d45133016376L,
|
|
0xd9fd2c805ad59090L } },
|
|
/* 53 << 133 */
|
|
{ { 0xe5a83738b2b836a1L,0x855b41a07c0d6622L,0x186fe3177cc19af1L,
|
|
0x6465c1fffdd99acbL },
|
|
{ 0x46e5c23f6974b99eL,0x75a7cf8ba2717cbeL,0x4d2ebc3f062be658L,
|
|
0x094b44475f209c98L } },
|
|
/* 54 << 133 */
|
|
{ { 0x4af285edb940cb5aL,0x6706d7927cc82f10L,0xc8c8776c030526faL,
|
|
0xfa8e6f76a0da9140L },
|
|
{ 0x77ea9d34591ee4f0L,0x5f46e33740274166L,0x1bdf98bbea671457L,
|
|
0xd7c08b46862a1fe2L } },
|
|
/* 55 << 133 */
|
|
{ { 0x46cc303c1c08ad63L,0x995434404c845e7bL,0x1b8fbdb548f36bf7L,
|
|
0x5b82c3928c8273a7L },
|
|
{ 0x08f712c4928435d5L,0x071cf0f179330380L,0xc74c2d24a8da054aL,
|
|
0xcb0e720143c46b5cL } },
|
|
/* 56 << 133 */
|
|
{ { 0x0ad7337ac0b7eff3L,0x8552225ec5e48b3cL,0xe6f78b0c73f13a5fL,
|
|
0x5e70062e82349cbeL },
|
|
{ 0x6b8d5048e7073969L,0x392d2a29c33cb3d2L,0xee4f727c4ecaa20fL,
|
|
0xa068c99e2ccde707L } },
|
|
/* 57 << 133 */
|
|
{ { 0xfcd5651fb87a2913L,0xea3e3c153cc252f0L,0x777d92df3b6cd3e4L,
|
|
0x7a414143c5a732e7L },
|
|
{ 0xa895951aa71ff493L,0xfe980c92bbd37cf6L,0x45bd5e64decfeeffL,
|
|
0x910dc2a9a44c43e9L } },
|
|
/* 58 << 133 */
|
|
{ { 0xcb403f26cca9f54dL,0x928bbdfb9303f6dbL,0x3c37951ea9eee67cL,
|
|
0x3bd61a52f79961c3L },
|
|
{ 0x09a238e6395c9a79L,0x6940ca2d61eb352dL,0x7d1e5c5ec1875631L,
|
|
0x1e19742c1e1b20d1L } },
|
|
/* 59 << 133 */
|
|
{ { 0x4633d90823fc2e6eL,0xa76e29a908959149L,0x61069d9c84ed7da5L,
|
|
0x0baa11cf5dbcad51L },
|
|
{ 0xd01eec64961849daL,0x93b75f1faf3d8c28L,0x57bc4f9f1ca2ee44L,
|
|
0x5a26322d00e00558L } },
|
|
/* 60 << 133 */
|
|
{ { 0x1888d65861a023efL,0x1d72aab4b9e5246eL,0xa9a26348e5563ec0L,
|
|
0xa0971963c3439a43L },
|
|
{ 0x567dd54badb9b5b7L,0x73fac1a1c45a524bL,0x8fe97ef7fe38e608L,
|
|
0x608748d23f384f48L } },
|
|
/* 61 << 133 */
|
|
{ { 0xb0571794c486094fL,0x869254a38bf3a8d6L,0x148a8dd1310b0e25L,
|
|
0x99ab9f3f9aa3f7d8L },
|
|
{ 0x0927c68a6706c02eL,0x22b5e76c69790e6cL,0x6c3252606c71376cL,
|
|
0x53a5769009ef6657L } },
|
|
/* 62 << 133 */
|
|
{ { 0x8d63f852edffcf3aL,0xb4d2ed043c0a6f55L,0xdb3aa8de12519b9eL,
|
|
0x5d38e9c41e0a569aL },
|
|
{ 0x871528bf303747e2L,0xa208e77cf5b5c18dL,0x9d129c88ca6bf923L,
|
|
0xbcbf197fbf02839fL } },
|
|
/* 63 << 133 */
|
|
{ { 0x9b9bf03027323194L,0x3b055a8b339ca59dL,0xb46b23120f669520L,
|
|
0x19789f1f497e5f24L },
|
|
{ 0x9c499468aaf01801L,0x72ee11908b69d59cL,0x8bd39595acf4c079L,
|
|
0x3ee11ece8e0cd048L } },
|
|
/* 64 << 133 */
|
|
{ { 0xebde86ec1ed66f18L,0x225d906bd61fce43L,0x5cab07d6e8bed74dL,
|
|
0x16e4617f27855ab7L },
|
|
{ 0x6568aaddb2fbc3ddL,0xedb5484f8aeddf5bL,0x878f20e86dcf2fadL,
|
|
0x3516497c615f5699L } },
|
|
/* 0 << 140 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 140 */
|
|
{ { 0xef0a3fecfa181e69L,0x9ea02f8130d69a98L,0xb2e9cf8e66eab95dL,
|
|
0x520f2beb24720021L },
|
|
{ 0x621c540a1df84361L,0x1203772171fa6d5dL,0x6e3c7b510ff5f6ffL,
|
|
0x817a069babb2bef3L } },
|
|
/* 2 << 140 */
|
|
{ { 0x83572fb6b294cda6L,0x6ce9bf75b9039f34L,0x20e012f0095cbb21L,
|
|
0xa0aecc1bd063f0daL },
|
|
{ 0x57c21c3af02909e5L,0xc7d59ecf48ce9cdcL,0x2732b8448ae336f8L,
|
|
0x056e37233f4f85f4L } },
|
|
/* 3 << 140 */
|
|
{ { 0x8a10b53189e800caL,0x50fe0c17145208fdL,0x9e43c0d3b714ba37L,
|
|
0x427d200e34189accL },
|
|
{ 0x05dee24fe616e2c0L,0x9c25f4c8ee1854c1L,0x4d3222a58f342a73L,
|
|
0x0807804fa027c952L } },
|
|
/* 4 << 140 */
|
|
{ { 0xc222653a4f0d56f3L,0x961e4047ca28b805L,0x2c03f8b04a73434bL,
|
|
0x4c966787ab712a19L },
|
|
{ 0xcc196c42864fee42L,0xc1be93da5b0ece5cL,0xa87d9f22c131c159L,
|
|
0x2bb6d593dce45655L } },
|
|
/* 5 << 140 */
|
|
{ { 0x22c49ec9b809b7ceL,0x8a41486be2c72c2cL,0x813b9420fea0bf36L,
|
|
0xb3d36ee9a66dac69L },
|
|
{ 0x6fddc08a328cc987L,0x0a3bcd2c3a326461L,0x7103c49dd810dbbaL,
|
|
0xf9d81a284b78a4c4L } },
|
|
/* 6 << 140 */
|
|
{ { 0x3de865ade4d55941L,0xdedafa5e30384087L,0x6f414abb4ef18b9bL,
|
|
0x9ee9ea42faee5268L },
|
|
{ 0x260faa1637a55a4aL,0xeb19a514015f93b9L,0x51d7ebd29e9c3598L,
|
|
0x523fc56d1932178eL } },
|
|
/* 7 << 140 */
|
|
{ { 0x501d070cb98fe684L,0xd60fbe9a124a1458L,0xa45761c892bc6b3fL,
|
|
0xf5384858fe6f27cbL },
|
|
{ 0x4b0271f7b59e763bL,0x3d4606a95b5a8e5eL,0x1eda5d9b05a48292L,
|
|
0xda7731d0e6fec446L } },
|
|
/* 8 << 140 */
|
|
{ { 0xa3e3369390d45871L,0xe976404006166d8dL,0xb5c3368289a90403L,
|
|
0x4bd1798372f1d637L },
|
|
{ 0xa616679ed5d2c53aL,0x5ec4bcd8fdcf3b87L,0xae6d7613b66a694eL,
|
|
0x7460fc76e3fc27e5L } },
|
|
/* 9 << 140 */
|
|
{ { 0x70469b8295caabeeL,0xde024ca5889501e3L,0x6bdadc06076ed265L,
|
|
0x0cb1236b5a0ef8b2L },
|
|
{ 0x4065ddbf0972ebf9L,0xf1dd387522aca432L,0xa88b97cf744aff76L,
|
|
0xd1359afdfe8e3d24L } },
|
|
/* 10 << 140 */
|
|
{ { 0x52a3ba2b91502cf3L,0x2c3832a8084db75dL,0x04a12dddde30b1c9L,
|
|
0x7802eabce31fd60cL },
|
|
{ 0x33707327a37fddabL,0x65d6f2abfaafa973L,0x3525c5b811e6f91aL,
|
|
0x76aeb0c95f46530bL } },
|
|
/* 11 << 140 */
|
|
{ { 0xe8815ff62f93a675L,0xa6ec968405f48679L,0x6dcbb556358ae884L,
|
|
0x0af61472e19e3873L },
|
|
{ 0x72334372a5f696beL,0xc65e57ea6f22fb70L,0x268da30c946cea90L,
|
|
0x136a8a8765681b2aL } },
|
|
/* 12 << 140 */
|
|
{ { 0xad5e81dc0f9f44d4L,0xf09a69602c46585aL,0xd1649164c447d1b1L,
|
|
0x3b4b36c8879dc8b1L },
|
|
{ 0x20d4177b3b6b234cL,0x096a25051730d9d0L,0x0611b9b8ef80531dL,
|
|
0xba904b3b64bb495dL } },
|
|
/* 13 << 140 */
|
|
{ { 0x1192d9d493a3147aL,0x9f30a5dc9a565545L,0x90b1f9cb6ef07212L,
|
|
0x299585460d87fc13L },
|
|
{ 0xd3323effc17db9baL,0xcb18548ccb1644a8L,0x18a306d44f49ffbcL,
|
|
0x28d658f14c2e8684L } },
|
|
/* 14 << 140 */
|
|
{ { 0x44ba60cda99f8c71L,0x67b7abdb4bf742ffL,0x66310f9c914b3f99L,
|
|
0xae430a32f412c161L },
|
|
{ 0x1e6776d388ace52fL,0x4bc0fa2452d7067dL,0x03c286aa8f07cd1bL,
|
|
0x4cb8f38ca985b2c1L } },
|
|
/* 15 << 140 */
|
|
{ { 0x83ccbe808c3bff36L,0x005a0bd25263e575L,0x460d7dda259bdcd1L,
|
|
0x4a1c5642fa5cab6bL },
|
|
{ 0x2b7bdbb99fe4fc88L,0x09418e28cc97bbb5L,0xd8274fb4a12321aeL,
|
|
0xb137007d5c87b64eL } },
|
|
/* 16 << 140 */
|
|
{ { 0x80531fe1c63c4962L,0x50541e89981fdb25L,0xdc1291a1fd4c2b6bL,
|
|
0xc0693a17a6df4fcaL },
|
|
{ 0xb2c4604e0117f203L,0x245f19630a99b8d0L,0xaedc20aac6212c44L,
|
|
0xb1ed4e56520f52a8L } },
|
|
/* 17 << 140 */
|
|
{ { 0xfe48f575f8547be3L,0x0a7033cda9e45f98L,0x4b45d3a918c50100L,
|
|
0xb2a6cd6aa61d41daL },
|
|
{ 0x60bbb4f557933c6bL,0xa7538ebd2b0d7ffcL,0x9ea3ab8d8cd626b6L,
|
|
0x8273a4843601625aL } },
|
|
/* 18 << 140 */
|
|
{ { 0x888598450168e508L,0x8cbc9bb299a94abdL,0x713ac792fab0a671L,
|
|
0xa3995b196c9ebffcL },
|
|
{ 0xe711668e1239e152L,0x56892558bbb8dff4L,0x8bfc7dabdbf17963L,
|
|
0x5b59fe5ab3de1253L } },
|
|
/* 19 << 140 */
|
|
{ { 0x7e3320eb34a9f7aeL,0xe5e8cf72d751efe4L,0x7ea003bcd9be2f37L,
|
|
0xc0f551a0b6c08ef7L },
|
|
{ 0x56606268038f6725L,0x1dd38e356d92d3b6L,0x07dfce7cc3cbd686L,
|
|
0x4e549e04651c5da8L } },
|
|
/* 20 << 140 */
|
|
{ { 0x4058f93b08b19340L,0xc2fae6f4cac6d89dL,0x4bad8a8c8f159cc7L,
|
|
0x0ddba4b3cb0b601cL },
|
|
{ 0xda4fc7b51dd95f8cL,0x1d163cd7cea5c255L,0x30707d06274a8c4cL,
|
|
0x79d9e0082802e9ceL } },
|
|
/* 21 << 140 */
|
|
{ { 0x02a29ebfe6ddd505L,0x37064e74b50bed1aL,0x3f6bae65a7327d57L,
|
|
0x3846f5f1f83920bcL },
|
|
{ 0x87c3749160df1b9bL,0x4cfb28952d1da29fL,0x10a478ca4ed1743cL,
|
|
0x390c60303edd47c6L } },
|
|
/* 22 << 140 */
|
|
{ { 0x8f3e53128c0a78deL,0xccd02bda1e85df70L,0xd6c75c03a61b6582L,
|
|
0x0762921cfc0eebd1L },
|
|
{ 0xd34d0823d85010c0L,0xd73aaacb0044cf1fL,0xfb4159bba3b5e78aL,
|
|
0x2287c7f7e5826f3fL } },
|
|
/* 23 << 140 */
|
|
{ { 0x4aeaf742580b1a01L,0xf080415d60423b79L,0xe12622cda7dea144L,
|
|
0x49ea499659d62472L },
|
|
{ 0xb42991ef571f3913L,0x0610f214f5b25a8aL,0x47adc58530b79e8fL,
|
|
0xf90e3df607a065a2L } },
|
|
/* 24 << 140 */
|
|
{ { 0x5d0a5deb43e2e034L,0x53fb5a34444024aaL,0xa8628c686b0c9f7fL,
|
|
0x9c69c29cac563656L },
|
|
{ 0x5a231febbace47b6L,0xbdce02899ea5a2ecL,0x05da1fac9463853eL,
|
|
0x96812c52509e78aaL } },
|
|
/* 25 << 140 */
|
|
{ { 0xd3fb577157151692L,0xeb2721f8d98e1c44L,0xc050608732399be1L,
|
|
0xda5a5511d979d8b8L },
|
|
{ 0x737ed55dc6f56780L,0xe20d30040dc7a7f4L,0x02ce7301f5941a03L,
|
|
0x91ef5215ed30f83aL } },
|
|
/* 26 << 140 */
|
|
{ { 0x28727fc14092d85fL,0x72d223c65c49e41aL,0xa7cf30a2ba6a4d81L,
|
|
0x7c086209b030d87dL },
|
|
{ 0x04844c7dfc588b09L,0x728cd4995874bbb0L,0xcc1281eee84c0495L,
|
|
0x0769b5baec31958fL } },
|
|
/* 27 << 140 */
|
|
{ { 0x665c228bf99c2471L,0xf2d8a11b191eb110L,0x4594f494d36d7024L,
|
|
0x482ded8bcdcb25a1L },
|
|
{ 0xc958a9d8dadd4885L,0x7004477ef1d2b547L,0x0a45f6ef2a0af550L,
|
|
0x4fc739d62f8d6351L } },
|
|
/* 28 << 140 */
|
|
{ { 0x75cdaf27786f08a9L,0x8700bb2642c2737fL,0x855a71411c4e2670L,
|
|
0x810188c115076fefL },
|
|
{ 0xc251d0c9abcd3297L,0xae4c8967f48108ebL,0xbd146de718ceed30L,
|
|
0xf9d4f07ac986bcedL } },
|
|
/* 29 << 140 */
|
|
{ { 0x5ad98ed583fa1e08L,0x7780d33ebeabd1fbL,0xe330513c903b1196L,
|
|
0xba11de9ea47bc8c4L },
|
|
{ 0x684334da02c2d064L,0x7ecf360da48de23bL,0x57a1b4740a9089d8L,
|
|
0xf28fa439ff36734cL } },
|
|
/* 30 << 140 */
|
|
{ { 0xf2a482cbea4570b3L,0xee65d68ba5ebcee9L,0x988d0036b9694cd5L,
|
|
0x53edd0e937885d32L },
|
|
{ 0xe37e3307beb9bc6dL,0xe9abb9079f5c6768L,0x4396ccd551f2160fL,
|
|
0x2500888c47336da6L } },
|
|
/* 31 << 140 */
|
|
{ { 0x383f9ed9926fce43L,0x809dd1c704da2930L,0x30f6f5968a4cb227L,
|
|
0x0d700c7f73a56b38L },
|
|
{ 0x1825ea33ab64a065L,0xaab9b7351338df80L,0x1516100d9b63f57fL,
|
|
0x2574395a27a6a634L } },
|
|
/* 32 << 140 */
|
|
{ { 0xb5560fb6700a1acdL,0xe823fd73fd999681L,0xda915d1f6cb4e1baL,
|
|
0x0d0301186ebe00a3L },
|
|
{ 0x744fb0c989fca8cdL,0x970d01dbf9da0e0bL,0x0ad8c5647931d76fL,
|
|
0xb15737bff659b96aL } },
|
|
/* 33 << 140 */
|
|
{ { 0xdc9933e8a8b484e7L,0xb2fdbdf97a26dec7L,0x2349e9a49f1f0136L,
|
|
0x7860368e70fddddbL },
|
|
{ 0xd93d2c1cf9ad3e18L,0x6d6c5f17689f4e79L,0x7a544d91b24ff1b6L,
|
|
0x3e12a5ebfe16cd8cL } },
|
|
/* 34 << 140 */
|
|
{ { 0x543574e9a56b872fL,0xa1ad550cfcf68ea2L,0x689e37d23f560ef7L,
|
|
0x8c54b9cac9d47a8bL },
|
|
{ 0x46d40a4a088ac342L,0xec450c7c1576c6d0L,0xb589e31c1f9689e9L,
|
|
0xdacf2602b8781718L } },
|
|
/* 35 << 140 */
|
|
{ { 0xa89237c6c8cb6b42L,0x1326fc93b96ef381L,0x55d56c6db5f07825L,
|
|
0xacba2eea7449e22dL },
|
|
{ 0x74e0887a633c3000L,0xcb6cd172d7cbcf71L,0x309e81dec36cf1beL,
|
|
0x07a18a6d60ae399bL } },
|
|
/* 36 << 140 */
|
|
{ { 0xb36c26799edce57eL,0x52b892f4df001d41L,0xd884ae5d16a1f2c6L,
|
|
0x9b329424efcc370aL },
|
|
{ 0x3120daf2bd2e21dfL,0x55298d2d02470a99L,0x0b78af6ca05db32eL,
|
|
0x5c76a331601f5636L } },
|
|
/* 37 << 140 */
|
|
{ { 0xaae861fff8a4f29cL,0x70dc9240d68f8d49L,0x960e649f81b1321cL,
|
|
0x3d2c801b8792e4ceL },
|
|
{ 0xf479f77242521876L,0x0bed93bc416c79b1L,0xa67fbc05263e5bc9L,
|
|
0x01e8e630521db049L } },
|
|
/* 38 << 140 */
|
|
{ { 0x76f26738c6f3431eL,0xe609cb02e3267541L,0xb10cff2d818c877cL,
|
|
0x1f0e75ce786a13cbL },
|
|
{ 0xf4fdca641158544dL,0x5d777e896cb71ed0L,0x3c233737a9aa4755L,
|
|
0x7b453192e527ab40L } },
|
|
/* 39 << 140 */
|
|
{ { 0xdb59f68839f05ffeL,0x8f4f4be06d82574eL,0xcce3450cee292d1bL,
|
|
0xaa448a1261ccd086L },
|
|
{ 0xabce91b3f7914967L,0x4537f09b1908a5edL,0xa812421ef51042e7L,
|
|
0xfaf5cebcec0b3a34L } },
|
|
/* 40 << 140 */
|
|
{ { 0x730ffd874ca6b39aL,0x70fb72ed02efd342L,0xeb4735f9d75c8edbL,
|
|
0xc11f2157c278aa51L },
|
|
{ 0xc459f635bf3bfebfL,0x3a1ff0b46bd9601fL,0xc9d12823c420cb73L,
|
|
0x3e9af3e23c2915a3L } },
|
|
/* 41 << 140 */
|
|
{ { 0xe0c82c72b41c3440L,0x175239e5e3039a5fL,0xe1084b8a558795a3L,
|
|
0x328d0a1dd01e5c60L },
|
|
{ 0x0a495f2ed3788a04L,0x25d8ff1666c11a9fL,0xf5155f059ed692d6L,
|
|
0x954fa1074f425fe4L } },
|
|
/* 42 << 140 */
|
|
{ { 0xd16aabf2e98aaa99L,0x90cd8ba096b0f88aL,0x957f4782c154026aL,
|
|
0x54ee073452af56d2L },
|
|
{ 0xbcf89e5445b4147aL,0x3d102f219a52816cL,0x6808517e39b62e77L,
|
|
0x92e2542169169ad8L } },
|
|
/* 43 << 140 */
|
|
{ { 0xd721d871bb608558L,0x60e4ebaef6d4ff9bL,0x0ba1081941f2763eL,
|
|
0xca2e45be51ee3247L },
|
|
{ 0x66d172ec2bfd7a5fL,0x528a8f2f74d0b12dL,0xe17f1e38dabe70dcL,
|
|
0x1d5d73169f93983cL } },
|
|
/* 44 << 140 */
|
|
{ { 0x51b2184adf423e31L,0xcb417291aedb1a10L,0x2054ca93625bcab9L,
|
|
0x54396860a98998f0L },
|
|
{ 0x4e53f6c4a54ae57eL,0x0ffeb590ee648e9dL,0xfbbdaadc6afaf6bcL,
|
|
0xf88ae796aa3bfb8aL } },
|
|
/* 45 << 140 */
|
|
{ { 0x209f1d44d2359ed9L,0xac68dd03f3544ce2L,0xf378da47fd51e569L,
|
|
0xe1abd8602cc80097L },
|
|
{ 0x23ca18d9343b6e3aL,0x480797e8b40a1baeL,0xd1f0c717533f3e67L,
|
|
0x4489697006e6cdfcL } },
|
|
/* 46 << 140 */
|
|
{ { 0x8ca2105552a82e8dL,0xb2caf78578460cdcL,0x4c1b7b62e9037178L,
|
|
0xefc09d2cdb514b58L },
|
|
{ 0x5f2df9ee9113be5cL,0x2fbda78fb3f9271cL,0xe09a81af8f83fc54L,
|
|
0x06b138668afb5141L } },
|
|
/* 47 << 140 */
|
|
{ { 0x38f6480f43e3865dL,0x72dd77a81ddf47d9L,0xf2a8e9714c205ff7L,
|
|
0x46d449d89d088ad8L },
|
|
{ 0x926619ea185d706fL,0xe47e02ebc7dd7f62L,0xe7f120a78cbc2031L,
|
|
0xc18bef00998d4ac9L } },
|
|
/* 48 << 140 */
|
|
{ { 0x18f37a9c6bdf22daL,0xefbc432f90dc82dfL,0xc52cef8e5d703651L,
|
|
0x82887ba0d99881a5L },
|
|
{ 0x7cec9ddab920ec1dL,0xd0d7e8c3ec3e8d3bL,0x445bc3954ca88747L,
|
|
0xedeaa2e09fd53535L } },
|
|
/* 49 << 140 */
|
|
{ { 0x461b1d936cc87475L,0xd92a52e26d2383bdL,0xfabccb59d7903546L,
|
|
0x6111a7613d14b112L },
|
|
{ 0x0ae584feb3d5f612L,0x5ea69b8d60e828ecL,0x6c07898554087030L,
|
|
0x649cab04ac4821feL } },
|
|
/* 50 << 140 */
|
|
{ { 0x25ecedcf8bdce214L,0xb5622f7286af7361L,0x0e1227aa7038b9e2L,
|
|
0xd0efb273ac20fa77L },
|
|
{ 0x817ff88b79df975bL,0x856bf2861999503eL,0xb4d5351f5038ec46L,
|
|
0x740a52c5fc42af6eL } },
|
|
/* 51 << 140 */
|
|
{ { 0x2e38bb152cbb1a3fL,0xc3eb99fe17a83429L,0xca4fcbf1dd66bb74L,
|
|
0x880784d6cde5e8fcL },
|
|
{ 0xddc84c1cb4e7a0beL,0x8780510dbd15a72fL,0x44bcf1af81ec30e1L,
|
|
0x141e50a80a61073eL } },
|
|
/* 52 << 140 */
|
|
{ { 0x0d95571847be87aeL,0x68a61417f76a4372L,0xf57e7e87c607c3d3L,
|
|
0x043afaf85252f332L },
|
|
{ 0xcc14e1211552a4d2L,0xb6dee692bb4d4ab4L,0xb6ab74c8a03816a4L,
|
|
0x84001ae46f394a29L } },
|
|
/* 53 << 140 */
|
|
{ { 0x5bed8344d795fb45L,0x57326e7db79f55a5L,0xc9533ce04accdffcL,
|
|
0x53473caf3993fa04L },
|
|
{ 0x7906eb93a13df4c8L,0xa73e51f697cbe46fL,0xd1ab3ae10ae4ccf8L,
|
|
0x256145088a5b3dbcL } },
|
|
/* 54 << 140 */
|
|
{ { 0x61eff96211a71b27L,0xdf71412b6bb7fa39L,0xb31ba6b82bd7f3efL,
|
|
0xb0b9c41569180d29L },
|
|
{ 0xeec14552014cdde5L,0x702c624b227b4bbbL,0x2b15e8c2d3e988f3L,
|
|
0xee3bcc6da4f7fd04L } },
|
|
/* 55 << 140 */
|
|
{ { 0x9d00822a42ac6c85L,0x2db0cea61df9f2b7L,0xd7cad2ab42de1e58L,
|
|
0x346ed5262d6fbb61L },
|
|
{ 0xb39629951a2faf09L,0x2fa8a5807c25612eL,0x30ae04da7cf56490L,
|
|
0x756629080eea3961L } },
|
|
/* 56 << 140 */
|
|
{ { 0x3609f5c53d080847L,0xcb081d395241d4f6L,0xb4fb381077961a63L,
|
|
0xc20c59842abb66fcL },
|
|
{ 0x3d40aa7cf902f245L,0x9cb127364e536b1eL,0x5eda24da99b3134fL,
|
|
0xafbd9c695cd011afL } },
|
|
/* 57 << 140 */
|
|
{ { 0x9a16e30ac7088c7dL,0x5ab657103207389fL,0x1b09547fe7407a53L,
|
|
0x2322f9d74fdc6eabL },
|
|
{ 0xc0f2f22d7430de4dL,0x19382696e68ca9a9L,0x17f1eff1918e5868L,
|
|
0xe3b5b635586f4204L } },
|
|
/* 58 << 140 */
|
|
{ { 0x146ef9803fbc4341L,0x359f2c805b5eed4eL,0x9f35744e7482e41dL,
|
|
0x9a9ac3ecf3b224c2L },
|
|
{ 0x9161a6fe91fc50aeL,0x89ccc66bc613fa7cL,0x89268b14c732f15aL,
|
|
0x7cd6f4e2b467ed03L } },
|
|
/* 59 << 140 */
|
|
{ { 0xfbf79869ce56b40eL,0xf93e094cc02dde98L,0xefe0c3a8edee2cd7L,
|
|
0x90f3ffc0b268fd42L },
|
|
{ 0x81a7fd5608241aedL,0x95ab7ad800b1afe8L,0x401270563e310d52L,
|
|
0xd3ffdeb109d9fc43L } },
|
|
/* 60 << 140 */
|
|
{ { 0xc8f85c91d11a8594L,0x2e74d25831cf6db8L,0x829c7ca302b5dfd0L,
|
|
0xe389cfbe69143c86L },
|
|
{ 0xd01b6405941768d8L,0x4510399503bf825dL,0xcc4ee16656cd17e2L,
|
|
0xbea3c283ba037e79L } },
|
|
/* 61 << 140 */
|
|
{ { 0x4e1ac06ed9a47520L,0xfbfe18aaaf852404L,0x5615f8e28087648aL,
|
|
0x7301e47eb9d150d9L },
|
|
{ 0x79f9f9ddb299b977L,0x76697a7ba5b78314L,0x10d674687d7c90e7L,
|
|
0x7afffe03937210b5L } },
|
|
/* 62 << 140 */
|
|
{ { 0x5aef3e4b28c22ceeL,0xefb0ecd809fd55aeL,0x4cea71320d2a5d6aL,
|
|
0x9cfb5fa101db6357L },
|
|
{ 0x395e0b57f36e1ac5L,0x008fa9ad36cafb7dL,0x8f6cdf705308c4dbL,
|
|
0x51527a3795ed2477L } },
|
|
/* 63 << 140 */
|
|
{ { 0xba0dee305bd21311L,0x6ed41b22909c90d7L,0xc5f6b7587c8696d3L,
|
|
0x0db8eaa83ce83a80L },
|
|
{ 0xd297fe37b24b4b6fL,0xfe58afe8522d1f0dL,0x973587368c98dbd9L,
|
|
0x6bc226ca9454a527L } },
|
|
/* 64 << 140 */
|
|
{ { 0xa12b384ece53c2d0L,0x779d897d5e4606daL,0xa53e47b073ec12b0L,
|
|
0x462dbbba5756f1adL },
|
|
{ 0x69fe09f2cafe37b6L,0x273d1ebfecce2e17L,0x8ac1d5383cf607fdL,
|
|
0x8035f7ff12e10c25L } },
|
|
/* 0 << 147 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 147 */
|
|
{ { 0x854d34c77e6c5520L,0xc27df9efdcb9ea58L,0x405f2369d686666dL,
|
|
0x29d1febf0417aa85L },
|
|
{ 0x9846819e93470afeL,0x3e6a9669e2a27f9eL,0x24d008a2e31e6504L,
|
|
0xdba7cecf9cb7680aL } },
|
|
/* 2 << 147 */
|
|
{ { 0xecaff541338d6e43L,0x56f7dd734541d5ccL,0xb5d426de96bc88caL,
|
|
0x48d94f6b9ed3a2c3L },
|
|
{ 0x6354a3bb2ef8279cL,0xd575465b0b1867f2L,0xef99b0ff95225151L,
|
|
0xf3e19d88f94500d8L } },
|
|
/* 3 << 147 */
|
|
{ { 0x92a83268e32dd620L,0x913ec99f627849a2L,0xedd8fdfa2c378882L,
|
|
0xaf96f33eee6f8cfeL },
|
|
{ 0xc06737e5dc3fa8a5L,0x236bb531b0b03a1dL,0x33e59f2989f037b0L,
|
|
0x13f9b5a7d9a12a53L } },
|
|
/* 4 << 147 */
|
|
{ { 0x0d0df6ce51efb310L,0xcb5b2eb4958df5beL,0xd6459e2936158e59L,
|
|
0x82aae2b91466e336L },
|
|
{ 0xfb658a39411aa636L,0x7152ecc5d4c0a933L,0xf10c758a49f026b7L,
|
|
0xf4837f97cb09311fL } },
|
|
/* 5 << 147 */
|
|
{ { 0xddfb02c4c753c45fL,0x18ca81b6f9c840feL,0x846fd09ab0f8a3e6L,
|
|
0xb1162adde7733dbcL },
|
|
{ 0x7070ad20236e3ab6L,0xf88cdaf5b2a56326L,0x05fc8719997cbc7aL,
|
|
0x442cd4524b665272L } },
|
|
/* 6 << 147 */
|
|
{ { 0x7807f364b71698f5L,0x6ba418d29f7b605eL,0xfd20b00fa03b2cbbL,
|
|
0x883eca37da54386fL },
|
|
{ 0xff0be43ff3437f24L,0xe910b432a48bb33cL,0x4963a128329df765L,
|
|
0xac1dd556be2fe6f7L } },
|
|
/* 7 << 147 */
|
|
{ { 0x557610f924a0a3fcL,0x38e17bf4e881c3f9L,0x6ba84fafed0dac99L,
|
|
0xd4a222c359eeb918L },
|
|
{ 0xc79c1dbe13f542b6L,0x1fc65e0de425d457L,0xeffb754f1debb779L,
|
|
0x638d8fd09e08af60L } },
|
|
/* 8 << 147 */
|
|
{ { 0x994f523a626332d5L,0x7bc388335561bb44L,0x005ed4b03d845ea2L,
|
|
0xd39d3ee1c2a1f08aL },
|
|
{ 0x6561fdd3e7676b0dL,0x620e35fffb706017L,0x36ce424ff264f9a8L,
|
|
0xc4c3419fda2681f7L } },
|
|
/* 9 << 147 */
|
|
{ { 0xfb6afd2f69beb6e8L,0x3a50b9936d700d03L,0xc840b2ad0c83a14fL,
|
|
0x573207be54085befL },
|
|
{ 0x5af882e309fe7e5bL,0x957678a43b40a7e1L,0x172d4bdd543056e2L,
|
|
0x9c1b26b40df13c0aL } },
|
|
/* 10 << 147 */
|
|
{ { 0x1c30861cf405ff06L,0xebac86bd486e828bL,0xe791a971636933fcL,
|
|
0x50e7c2be7aeee947L },
|
|
{ 0xc3d4a095fa90d767L,0xae60eb7be670ab7bL,0x17633a64397b056dL,
|
|
0x93a21f33105012aaL } },
|
|
/* 11 << 147 */
|
|
{ { 0x663c370babb88643L,0x91df36d722e21599L,0x183ba8358b761671L,
|
|
0x381eea1d728f3bf1L },
|
|
{ 0xb9b2f1ba39966e6cL,0x7c464a28e7295492L,0x0fd5f70a09b26b7fL,
|
|
0xa9aba1f9fbe009dfL } },
|
|
/* 12 << 147 */
|
|
{ { 0x857c1f22369b87adL,0x3c00e5d932fca556L,0x1ad74cab90b06466L,
|
|
0xa7112386550faaf2L },
|
|
{ 0x7435e1986d9bd5f5L,0x2dcc7e3859c3463fL,0xdc7df748ca7bd4b2L,
|
|
0x13cd4c089dec2f31L } },
|
|
/* 13 << 147 */
|
|
{ { 0x0d3b5df8e3237710L,0x0dadb26ecbd2f7b0L,0x9f5966abe4aa082bL,
|
|
0x666ec8de350e966eL },
|
|
{ 0x1bfd1ed5ee524216L,0xcd93c59b41dab0b6L,0x658a8435d186d6baL,
|
|
0x1b7d34d2159d1195L } },
|
|
/* 14 << 147 */
|
|
{ { 0x5936e46022caf46bL,0x6a45dd8f9a96fe4fL,0xf7925434b98f474eL,
|
|
0x414104120053ef15L },
|
|
{ 0x71cf8d1241de97bfL,0xb8547b61bd80bef4L,0xb47d3970c4db0037L,
|
|
0xf1bcd328fef20dffL } },
|
|
/* 15 << 147 */
|
|
{ { 0x31a92e0910caad67L,0x1f5919605531a1e1L,0x3bb852e05f4fc840L,
|
|
0x63e297ca93a72c6cL },
|
|
{ 0x3c2b0b2e49abad67L,0x6ec405fced3db0d9L,0xdc14a5307fef1d40L,
|
|
0xccd19846280896fcL } },
|
|
/* 16 << 147 */
|
|
{ { 0x00f831769bb81648L,0xd69eb485653120d0L,0xd17d75f44ccabc62L,
|
|
0x34a07f82b749fcb1L },
|
|
{ 0x2c3af787bbfb5554L,0xb06ed4d062e283f8L,0x5722889fa19213a0L,
|
|
0x162b085edcf3c7b4L } },
|
|
/* 17 << 147 */
|
|
{ { 0xbcaecb31e0dd3ecaL,0xc6237fbce52f13a5L,0xcc2b6b0327bac297L,
|
|
0x2ae1cac5b917f54aL },
|
|
{ 0x474807d47845ae4fL,0xfec7dd92ce5972e0L,0xc3bd25411d7915bbL,
|
|
0x66f85dc4d94907caL } },
|
|
/* 18 << 147 */
|
|
{ { 0xd981b888bdbcf0caL,0xd75f5da6df279e9fL,0x128bbf247054e934L,
|
|
0x3c6ff6e581db134bL },
|
|
{ 0x795b7cf4047d26e4L,0xf370f7b85049ec37L,0xc6712d4dced945afL,
|
|
0xdf30b5ec095642bcL } },
|
|
/* 19 << 147 */
|
|
{ { 0x9b034c624896246eL,0x5652c016ee90bbd1L,0xeb38636f87fedb73L,
|
|
0x5e32f8470135a613L },
|
|
{ 0x0703b312cf933c83L,0xd05bb76e1a7f47e6L,0x825e4f0c949c2415L,
|
|
0x569e56227250d6f8L } },
|
|
/* 20 << 147 */
|
|
{ { 0xbbe9eb3a6568013eL,0x8dbd203f22f243fcL,0x9dbd7694b342734aL,
|
|
0x8f6d12f846afa984L },
|
|
{ 0xb98610a2c9eade29L,0xbab4f32347dd0f18L,0x5779737b671c0d46L,
|
|
0x10b6a7c6d3e0a42aL } },
|
|
/* 21 << 147 */
|
|
{ { 0xfb19ddf33035b41cL,0xd336343f99c45895L,0x61fe493854c857e5L,
|
|
0xc4d506beae4e57d5L },
|
|
{ 0x3cd8c8cbbbc33f75L,0x7281f08a9262c77dL,0x083f4ea6f11a2823L,
|
|
0x8895041e9fba2e33L } },
|
|
/* 22 << 147 */
|
|
{ { 0xfcdfea499c438edfL,0x7678dcc391edba44L,0xf07b3b87e2ba50f0L,
|
|
0xc13888ef43948c1bL },
|
|
{ 0xc2135ad41140af42L,0x8e5104f3926ed1a7L,0xf24430cb88f6695fL,
|
|
0x0ce0637b6d73c120L } },
|
|
/* 23 << 147 */
|
|
{ { 0xb2db01e6fe631e8fL,0x1c5563d7d7bdd24bL,0x8daea3ba369ad44fL,
|
|
0x000c81b68187a9f9L },
|
|
{ 0x5f48a951aae1fd9aL,0xe35626c78d5aed8aL,0x209527630498c622L,
|
|
0x76d17634773aa504L } },
|
|
/* 24 << 147 */
|
|
{ { 0x36d90ddaeb300f7aL,0x9dcf7dfcedb5e801L,0x645cb26874d5244cL,
|
|
0xa127ee79348e3aa2L },
|
|
{ 0x488acc53575f1dbbL,0x95037e8580e6161eL,0x57e59283292650d0L,
|
|
0xabe67d9914938216L } },
|
|
/* 25 << 147 */
|
|
{ { 0x3c7f944b3f8e1065L,0xed908cb6330e8924L,0x08ee8fd56f530136L,
|
|
0x2227b7d5d7ffc169L },
|
|
{ 0x4f55c893b5cd6dd5L,0x82225e11a62796e8L,0x5c6cead1cb18e12cL,
|
|
0x4381ae0c84f5a51aL } },
|
|
/* 26 << 147 */
|
|
{ { 0x345913d37fafa4c8L,0x3d9180820491aac0L,0x9347871f3e69264cL,
|
|
0xbea9dd3cb4f4f0cdL },
|
|
{ 0xbda5d0673eadd3e7L,0x0033c1b80573bcd8L,0x255893795da2486cL,
|
|
0xcb89ee5b86abbee7L } },
|
|
/* 27 << 147 */
|
|
{ { 0x8fe0a8f322532e5dL,0xb6410ff0727dfc4cL,0x619b9d58226726dbL,
|
|
0x5ec256697a2b2dc7L },
|
|
{ 0xaf4d2e064c3beb01L,0x852123d07acea556L,0x0e9470faf783487aL,
|
|
0x75a7ea045664b3ebL } },
|
|
/* 28 << 147 */
|
|
{ { 0x4ad78f356798e4baL,0x9214e6e5c7d0e091L,0xc420b488b1290403L,
|
|
0x64049e0afc295749L },
|
|
{ 0x03ef5af13ae9841fL,0xdbe4ca19b0b662a6L,0x46845c5ffa453458L,
|
|
0xf8dabf1910b66722L } },
|
|
/* 29 << 147 */
|
|
{ { 0xb650f0aacce2793bL,0x71db851ec5ec47c1L,0x3eb78f3e3b234fa9L,
|
|
0xb0c60f35fc0106ceL },
|
|
{ 0x05427121774eadbdL,0x25367fafce323863L,0x7541b5c9cd086976L,
|
|
0x4ff069e2dc507ad1L } },
|
|
/* 30 << 147 */
|
|
{ { 0x741452568776e667L,0x6e76142cb23c6bb5L,0xdbf307121b3a8a87L,
|
|
0x60e7363e98450836L },
|
|
{ 0x5741450eb7366d80L,0xe4ee14ca4837dbdfL,0xa765eb9b69d4316fL,
|
|
0x04548dca8ef43825L } },
|
|
/* 31 << 147 */
|
|
{ { 0x9c9f4e4c5ae888ebL,0x733abb5156e9ac99L,0xdaad3c20ba6ac029L,
|
|
0x9b8dd3d32ba3e38eL },
|
|
{ 0xa9bb4c920bc5d11aL,0xf20127a79c5f88a3L,0x4f52b06e161d3cb8L,
|
|
0x26c1ff096afaf0a6L } },
|
|
/* 32 << 147 */
|
|
{ { 0x32670d2f7189e71fL,0xc64387485ecf91e7L,0x15758e57db757a21L,
|
|
0x427d09f8290a9ce5L },
|
|
{ 0x846a308f38384a7aL,0xaac3acb4b0732b99L,0x9e94100917845819L,
|
|
0x95cba111a7ce5e03L } },
|
|
/* 33 << 147 */
|
|
{ { 0x6f3d4f7fb00009c4L,0xb8396c278ff28b5fL,0xb1a9ae431c97975dL,
|
|
0x9d7ba8afe5d9fed5L },
|
|
{ 0x338cf09f34f485b6L,0xbc0ddacc64122516L,0xa450da1205d471feL,
|
|
0x4c3a6250628dd8c9L } },
|
|
/* 34 << 147 */
|
|
{ { 0x69c7d103d1295837L,0xa2893e503807eb2fL,0xd6e1e1debdb41491L,
|
|
0xc630745b5e138235L },
|
|
{ 0xc892109e48661ae1L,0x8d17e7ebea2b2674L,0x00ec0f87c328d6b5L,
|
|
0x6d858645f079ff9eL } },
|
|
/* 35 << 147 */
|
|
{ { 0x6cdf243e19115eadL,0x1ce1393e4bac4fcfL,0x2c960ed09c29f25bL,
|
|
0x59be4d8e9d388a05L },
|
|
{ 0x0d46e06cd0def72bL,0xb923db5de0342748L,0xf7d3aacd936d4a3dL,
|
|
0x558519cc0b0b099eL } },
|
|
/* 36 << 147 */
|
|
{ { 0x3ea8ebf8827097efL,0x259353dbd054f55dL,0x84c89abc6d2ed089L,
|
|
0x5c548b698e096a7cL },
|
|
{ 0xd587f616994b995dL,0x4d1531f6a5845601L,0x792ab31e451fd9f0L,
|
|
0xc8b57bb265adf6caL } },
|
|
/* 37 << 147 */
|
|
{ { 0x68440fcb1cd5ad73L,0xb9c860e66144da4fL,0x2ab286aa8462beb8L,
|
|
0xcc6b8fffef46797fL },
|
|
{ 0xac820da420c8a471L,0x69ae05a177ff7fafL,0xb9163f39bfb5da77L,
|
|
0xbd03e5902c73ab7aL } },
|
|
/* 38 << 147 */
|
|
{ { 0x7e862b5eb2940d9eL,0x3c663d864b9af564L,0xd8309031bde3033dL,
|
|
0x298231b2d42c5bc6L },
|
|
{ 0x42090d2c552ad093L,0xa4799d1cff854695L,0x0a88b5d6d31f0d00L,
|
|
0xf8b40825a2f26b46L } },
|
|
/* 39 << 147 */
|
|
{ { 0xec29b1edf1bd7218L,0xd491c53b4b24c86eL,0xd2fe588f3395ea65L,
|
|
0x6f3764f74456ef15L },
|
|
{ 0xdb43116dcdc34800L,0xcdbcd456c1e33955L,0xefdb554074ab286bL,
|
|
0x948c7a51d18c5d7cL } },
|
|
/* 40 << 147 */
|
|
{ { 0xeb81aa377378058eL,0x41c746a104411154L,0xa10c73bcfb828ac7L,
|
|
0x6439be919d972b29L },
|
|
{ 0x4bf3b4b043a2fbadL,0x39e6dadf82b5e840L,0x4f7164086397bd4cL,
|
|
0x0f7de5687f1eeccbL } },
|
|
/* 41 << 147 */
|
|
{ { 0x5865c5a1d2ffbfc1L,0xf74211fa4ccb6451L,0x66368a88c0b32558L,
|
|
0x5b539dc29ad7812eL },
|
|
{ 0x579483d02f3af6f6L,0x5213207899934eceL,0x50b9650fdcc9e983L,
|
|
0xca989ec9aee42b8aL } },
|
|
/* 42 << 147 */
|
|
{ { 0x6a44c829d6f62f99L,0x8f06a3094c2a7c0cL,0x4ea2b3a098a0cb0aL,
|
|
0x5c547b70beee8364L },
|
|
{ 0x461d40e1682afe11L,0x9e0fc77a7b41c0a8L,0x79e4aefde20d5d36L,
|
|
0x2916e52032dd9f63L } },
|
|
/* 43 << 147 */
|
|
{ { 0xf59e52e83f883fafL,0x396f96392b868d35L,0xc902a9df4ca19881L,
|
|
0x0fc96822db2401a6L },
|
|
{ 0x4123758766f1c68dL,0x10fc6de3fb476c0dL,0xf8b6b579841f5d90L,
|
|
0x2ba8446cfa24f44aL } },
|
|
/* 44 << 147 */
|
|
{ { 0xa237b920ef4a9975L,0x60bb60042330435fL,0xd6f4ab5acfb7e7b5L,
|
|
0xb2ac509783435391L },
|
|
{ 0xf036ee2fb0d1ea67L,0xae779a6a74c56230L,0x59bff8c8ab838ae6L,
|
|
0xcd83ca999b38e6f0L } },
|
|
/* 45 << 147 */
|
|
{ { 0xbb27bef5e33deed3L,0xe6356f6f001892a8L,0xbf3be6cc7adfbd3eL,
|
|
0xaecbc81c33d1ac9dL },
|
|
{ 0xe4feb909e6e861dcL,0x90a247a453f5f801L,0x01c50acb27346e57L,
|
|
0xce29242e461acc1bL } },
|
|
/* 46 << 147 */
|
|
{ { 0x04dd214a2f998a91L,0x271ee9b1d4baf27bL,0x7e3027d1e8c26722L,
|
|
0x21d1645c1820dce5L },
|
|
{ 0x086f242c7501779cL,0xf0061407fa0e8009L,0xf23ce47760187129L,
|
|
0x05bbdedb0fde9bd0L } },
|
|
/* 47 << 147 */
|
|
{ { 0x682f483225d98473L,0xf207fe855c658427L,0xb6fdd7ba4166ffa1L,
|
|
0x0c3140569eed799dL },
|
|
{ 0x0db8048f4107e28fL,0x74ed387141216840L,0x74489f8f56a3c06eL,
|
|
0x1e1c005b12777134L } },
|
|
/* 48 << 147 */
|
|
{ { 0xdb332a73f37ec3c3L,0xc65259bddd59eba0L,0x2291709cdb4d3257L,
|
|
0x9a793b25bd389390L },
|
|
{ 0xf39fe34be43756f0L,0x2f76bdce9afb56c9L,0x9f37867a61208b27L,
|
|
0xea1d4307089972c3L } },
|
|
/* 49 << 147 */
|
|
{ { 0x8c5953308bdf623aL,0x5f5accda8441fb7dL,0xfafa941832ddfd95L,
|
|
0x6ad40c5a0fde9be7L },
|
|
{ 0x43faba89aeca8709L,0xc64a7cf12c248a9dL,0x1662025272637a76L,
|
|
0xaee1c79122b8d1bbL } },
|
|
/* 50 << 147 */
|
|
{ { 0xf0f798fd21a843b2L,0x56e4ed4d8d005cb1L,0x355f77801f0d8abeL,
|
|
0x197b04cf34522326L },
|
|
{ 0x41f9b31ffd42c13fL,0x5ef7feb2b40f933dL,0x27326f425d60bad4L,
|
|
0x027ecdb28c92cf89L } },
|
|
/* 51 << 147 */
|
|
{ { 0x04aae4d14e3352feL,0x08414d2f73591b90L,0x5ed6124eb7da7d60L,
|
|
0xb985b9314d13d4ecL },
|
|
{ 0xa592d3ab96bf36f9L,0x012dbed5bbdf51dfL,0xa57963c0df6c177dL,
|
|
0x010ec86987ca29cfL } },
|
|
/* 52 << 147 */
|
|
{ { 0xba1700f6bf926dffL,0x7c9fdbd1f4bf6bc2L,0xdc18dc8f64da11f5L,
|
|
0xa6074b7ad938ae75L },
|
|
{ 0x14270066e84f44a4L,0x99998d38d27b954eL,0xc1be8ab2b4f38e9aL,
|
|
0x8bb55bbf15c01016L } },
|
|
/* 53 << 147 */
|
|
{ { 0xf73472b40ea2ab30L,0xd365a340f73d68ddL,0xc01a716819c2e1ebL,
|
|
0x32f49e3734061719L },
|
|
{ 0xb73c57f101d8b4d6L,0x03c8423c26b47700L,0x321d0bc8a4d8826aL,
|
|
0x6004213c4bc0e638L } },
|
|
/* 54 << 147 */
|
|
{ { 0xf78c64a1c1c06681L,0x16e0a16fef018e50L,0x31cbdf91db42b2b3L,
|
|
0xf8f4ffcee0d36f58L },
|
|
{ 0xcdcc71cd4cc5e3e0L,0xd55c7cfaa129e3e0L,0xccdb6ba00fb2cbf1L,
|
|
0x6aba0005c4bce3cbL } },
|
|
/* 55 << 147 */
|
|
{ { 0x501cdb30d232cfc4L,0x9ddcf12ed58a3cefL,0x02d2cf9c87e09149L,
|
|
0xdc5d7ec72c976257L },
|
|
{ 0x6447986e0b50d7ddL,0x88fdbaf7807f112aL,0x58c9822ab00ae9f6L,
|
|
0x6abfb9506d3d27e0L } },
|
|
/* 56 << 147 */
|
|
{ { 0xd0a744878a429f4fL,0x0649712bdb516609L,0xb826ba57e769b5dfL,
|
|
0x82335df21fc7aaf2L },
|
|
{ 0x2389f0675c93d995L,0x59ac367a68677be6L,0xa77985ff21d9951bL,
|
|
0x038956fb85011cceL } },
|
|
/* 57 << 147 */
|
|
{ { 0x608e48cbbb734e37L,0xc08c0bf22be5b26fL,0x17bbdd3bf9b1a0d9L,
|
|
0xeac7d89810483319L },
|
|
{ 0xc95c4bafbc1a6deaL,0xfdd0e2bf172aafdbL,0x40373cbc8235c41aL,
|
|
0x14303f21fb6f41d5L } },
|
|
/* 58 << 147 */
|
|
{ { 0xba0636210408f237L,0xcad3b09aecd2d1edL,0x4667855a52abb6a2L,
|
|
0xba9157dcaa8b417bL },
|
|
{ 0xfe7f35074f013efbL,0x1b112c4baa38c4a2L,0xa1406a609ba64345L,
|
|
0xe53cba336993c80bL } },
|
|
/* 59 << 147 */
|
|
{ { 0x45466063ded40d23L,0x3d5f1f4d54908e25L,0x9ebefe62403c3c31L,
|
|
0x274ea0b50672a624L },
|
|
{ 0xff818d99451d1b71L,0x80e826438f79cf79L,0xa165df1373ce37f5L,
|
|
0xa744ef4ffe3a21fdL } },
|
|
/* 60 << 147 */
|
|
{ { 0x73f1e7f5cf551396L,0xc616898e868c676bL,0x671c28c78c442c36L,
|
|
0xcfe5e5585e0a317dL },
|
|
{ 0x1242d8187051f476L,0x56fad2a614f03442L,0x262068bc0a44d0f6L,
|
|
0xdfa2cd6ece6edf4eL } },
|
|
/* 61 << 147 */
|
|
{ { 0x0f43813ad15d1517L,0x61214cb2377d44f5L,0xd399aa29c639b35fL,
|
|
0x42136d7154c51c19L },
|
|
{ 0x9774711b08417221L,0x0a5546b352545a57L,0x80624c411150582dL,
|
|
0x9ec5c418fbc555bcL } },
|
|
/* 62 << 147 */
|
|
{ { 0x2c87dcad771849f1L,0xb0c932c501d7bf6fL,0x6aa5cd3e89116eb2L,
|
|
0xd378c25a51ca7bd3L },
|
|
{ 0xc612a0da9e6e3e31L,0x0417a54db68ad5d0L,0x00451e4a22c6edb8L,
|
|
0x9fbfe019b42827ceL } },
|
|
/* 63 << 147 */
|
|
{ { 0x2fa92505ba9384a2L,0x21b8596e64ad69c1L,0x8f4fcc49983b35a6L,
|
|
0xde09376072754672L },
|
|
{ 0x2f14ccc8f7bffe6dL,0x27566bff5d94263dL,0xb5b4e9c62df3ec30L,
|
|
0x94f1d7d53e6ea6baL } },
|
|
/* 64 << 147 */
|
|
{ { 0x97b7851aaaca5e9bL,0x518aa52156713b97L,0x3357e8c7150a61f6L,
|
|
0x7842e7e2ec2c2b69L },
|
|
{ 0x8dffaf656868a548L,0xd963bd82e068fc81L,0x64da5c8b65917733L,
|
|
0x927090ff7b247328L } },
|
|
/* 0 << 154 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 154 */
|
|
{ { 0x214bc9a7d298c241L,0xe3b697ba56807cfdL,0xef1c78024564eadbL,
|
|
0xdde8cdcfb48149c5L },
|
|
{ 0x946bf0a75a4d2604L,0x27154d7f6c1538afL,0x95cc9230de5b1fccL,
|
|
0xd88519e966864f82L } },
|
|
/* 2 << 154 */
|
|
{ { 0xb828dd1a7cb1282cL,0xa08d7626be46973aL,0x6baf8d40e708d6b2L,
|
|
0x72571fa14daeb3f3L },
|
|
{ 0x85b1732ff22dfd98L,0x87ab01a70087108dL,0xaaaafea85988207aL,
|
|
0xccc832f869f00755L } },
|
|
/* 3 << 154 */
|
|
{ { 0x964d950e36ff3bf0L,0x8ad20f6ff0b34638L,0x4d9177b3b5d7585fL,
|
|
0xcf839760ef3f019fL },
|
|
{ 0x582fc5b38288c545L,0x2f8e4e9b13116bd1L,0xf91e1b2f332120efL,
|
|
0xcf5687242a17dd23L } },
|
|
/* 4 << 154 */
|
|
{ { 0x488f1185ca8d9d1aL,0xadf2c77dd987ded2L,0x5f3039f060c46124L,
|
|
0xe5d70b7571e095f4L },
|
|
{ 0x82d586506260e70fL,0x39d75ea7f750d105L,0x8cf3d0b175bac364L,
|
|
0xf3a7564d21d01329L } },
|
|
/* 5 << 154 */
|
|
{ { 0x182f04cd2f52d2a7L,0x4fde149ae2df565aL,0xb80c5eeca79fb2f7L,
|
|
0xab491d7b22ddc897L },
|
|
{ 0x99d76c18c6312c7fL,0xca0d5f3d6aa41a57L,0x71207325d15363a0L,
|
|
0xe82aa265beb252c2L } },
|
|
/* 6 << 154 */
|
|
{ { 0x94ab4700ec3128c2L,0x6c76d8628e383f49L,0xdc36b150c03024ebL,
|
|
0xfb43947753daac69L },
|
|
{ 0xfc68764a8dc79623L,0x5b86995db440fbb2L,0xd66879bfccc5ee0dL,
|
|
0x0522894295aa8bd3L } },
|
|
/* 7 << 154 */
|
|
{ { 0xb51a40a51e6a75c1L,0x24327c760ea7d817L,0x0663018207774597L,
|
|
0xd6fdbec397fa7164L },
|
|
{ 0x20c99dfb13c90f48L,0xd6ac5273686ef263L,0xc6a50bdcfef64eebL,
|
|
0xcd87b28186fdfc32L } },
|
|
/* 8 << 154 */
|
|
{ { 0xb24aa43e3fcd3efcL,0xdd26c034b8088e9aL,0xa5ef4dc9bd3d46eaL,
|
|
0xa2f99d588a4c6a6fL },
|
|
{ 0xddabd3552f1da46cL,0x72c3f8ce1afacdd1L,0xd90c4eee92d40578L,
|
|
0xd28bb41fca623b94L } },
|
|
/* 9 << 154 */
|
|
{ { 0x50fc0711745edc11L,0x9dd9ad7d3dc87558L,0xce6931fbb49d1e64L,
|
|
0x6c77a0a2c98bd0f9L },
|
|
{ 0x62b9a6296baf7cb1L,0xcf065f91ccf72d22L,0x7203cce979639071L,
|
|
0x09ae4885f9cb732fL } },
|
|
/* 10 << 154 */
|
|
{ { 0x5e7c3becee8314f3L,0x1c068aeddbea298fL,0x08d381f17c80acecL,
|
|
0x03b56be8e330495bL },
|
|
{ 0xaeffb8f29222882dL,0x95ff38f6c4af8bf7L,0x50e32d351fc57d8cL,
|
|
0x6635be5217b444f0L } },
|
|
/* 11 << 154 */
|
|
{ { 0x04d15276a5177900L,0x4e1dbb47f6858752L,0x5b475622c615796cL,
|
|
0xa6fa0387691867bfL },
|
|
{ 0xed7f5d562844c6d0L,0xc633cf9b03a2477dL,0xf6be5c402d3721d6L,
|
|
0xaf312eb7e9fd68e6L } },
|
|
/* 12 << 154 */
|
|
{ { 0x242792d2e7417ce1L,0xff42bc71970ee7f5L,0x1ff4dc6d5c67a41eL,
|
|
0x77709b7b20882a58L },
|
|
{ 0x3554731dbe217f2cL,0x2af2a8cd5bb72177L,0x58eee769591dd059L,
|
|
0xbb2930c94bba6477L } },
|
|
/* 13 << 154 */
|
|
{ { 0x863ee0477d930cfcL,0x4c262ad1396fd1f4L,0xf4765bc8039af7e1L,
|
|
0x2519834b5ba104f6L },
|
|
{ 0x7cd61b4cd105f961L,0xa5415da5d63bca54L,0x778280a088a1f17cL,
|
|
0xc49689492329512cL } },
|
|
/* 14 << 154 */
|
|
{ { 0x174a9126cecdaa7aL,0xfc8c7e0e0b13247bL,0x29c110d23484c1c4L,
|
|
0xf8eb8757831dfc3bL },
|
|
{ 0x022f0212c0067452L,0x3f6f69ee7b9b926cL,0x09032da0ef42daf4L,
|
|
0x79f00ade83f80de4L } },
|
|
/* 15 << 154 */
|
|
{ { 0x6210db7181236c97L,0x74f7685b3ee0781fL,0x4df7da7ba3e41372L,
|
|
0x2aae38b1b1a1553eL },
|
|
{ 0x1688e222f6dd9d1bL,0x576954485b8b6487L,0x478d21274b2edeaaL,
|
|
0xb2818fa51e85956aL } },
|
|
/* 16 << 154 */
|
|
{ { 0x1e6adddaf176f2c0L,0x01ca4604e2572658L,0x0a404ded85342ffbL,
|
|
0x8cf60f96441838d6L },
|
|
{ 0x9bbc691cc9071c4aL,0xfd58874434442803L,0x97101c85809c0d81L,
|
|
0xa7fb754c8c456f7fL } },
|
|
/* 17 << 154 */
|
|
{ { 0xc95f3c5cd51805e1L,0xab4ccd39b299dca8L,0x3e03d20b47eaf500L,
|
|
0xfa3165c1d7b80893L },
|
|
{ 0x005e8b54e160e552L,0xdc4972ba9019d11fL,0x21a6972e0c9a4a7aL,
|
|
0xa52c258f37840fd7L } },
|
|
/* 18 << 154 */
|
|
{ { 0xf8559ff4c1e99d81L,0x08e1a7d6a3c617c0L,0xb398fd43248c6ba7L,
|
|
0x6ffedd91d1283794L },
|
|
{ 0x8a6a59d2d629d208L,0xa9d141d53490530eL,0x42f6fc1838505989L,
|
|
0x09bf250d479d94eeL } },
|
|
/* 19 << 154 */
|
|
{ { 0x223ad3b1b3822790L,0x6c5926c093b8971cL,0x609efc7e75f7fa62L,
|
|
0x45d66a6d1ec2d989L },
|
|
{ 0x4422d663987d2792L,0x4a73caad3eb31d2bL,0xf06c2ac1a32cb9e6L,
|
|
0xd9445c5f91aeba84L } },
|
|
/* 20 << 154 */
|
|
{ { 0x6af7a1d5af71013fL,0xe68216e50bedc946L,0xf4cba30bd27370a0L,
|
|
0x7981afbf870421ccL },
|
|
{ 0x02496a679449f0e1L,0x86cfc4be0a47edaeL,0x3073c936b1feca22L,
|
|
0xf569461203f8f8fbL } },
|
|
/* 21 << 154 */
|
|
{ { 0xd063b723901515eaL,0x4c6c77a5749cf038L,0x6361e360ab9e5059L,
|
|
0x596cf171a76a37c0L },
|
|
{ 0x800f53fa6530ae7aL,0x0f5e631e0792a7a6L,0x5cc29c24efdb81c9L,
|
|
0xa269e8683f9c40baL } },
|
|
/* 22 << 154 */
|
|
{ { 0xec14f9e12cb7191eL,0x78ea1bd8e5b08ea6L,0x3c65aa9b46332bb9L,
|
|
0x84cc22b3bf80ce25L },
|
|
{ 0x0098e9e9d49d5bf1L,0xcd4ec1c619087da4L,0x3c9d07c5aef6e357L,
|
|
0x839a02689f8f64b8L } },
|
|
/* 23 << 154 */
|
|
{ { 0xc5e9eb62c6d8607fL,0x759689f56aa995e4L,0x70464669bbb48317L,
|
|
0x921474bfe402417dL },
|
|
{ 0xcabe135b2a354c8cL,0xd51e52d2812fa4b5L,0xec74109653311fe8L,
|
|
0x4f774535b864514bL } },
|
|
/* 24 << 154 */
|
|
{ { 0xbcadd6715bde48f8L,0xc97038732189bc7dL,0x5d45299ec709ee8aL,
|
|
0xd1287ee2845aaff8L },
|
|
{ 0x7d1f8874db1dbf1fL,0xea46588b990c88d6L,0x60ba649a84368313L,
|
|
0xd5fdcbce60d543aeL } },
|
|
/* 25 << 154 */
|
|
{ { 0x90b46d43810d5ab0L,0x6739d8f904d7e5ccL,0x021c1a580d337c33L,
|
|
0x00a6116268e67c40L },
|
|
{ 0x95ef413b379f0a1fL,0xfe126605e9e2ab95L,0x67578b852f5f199cL,
|
|
0xf5c003292cb84913L } },
|
|
/* 26 << 154 */
|
|
{ { 0xf795643037577dd8L,0x83b82af429c5fe88L,0x9c1bea26cdbdc132L,
|
|
0x589fa0869c04339eL },
|
|
{ 0x033e9538b13799dfL,0x85fa8b21d295d034L,0xdf17f73fbd9ddccaL,
|
|
0xf32bd122ddb66334L } },
|
|
/* 27 << 154 */
|
|
{ { 0x55ef88a7858b044cL,0x1f0d69c25aa9e397L,0x55fd9cc340d85559L,
|
|
0xc774df727785ddb2L },
|
|
{ 0x5dcce9f6d3bd2e1cL,0xeb30da20a85dfed0L,0x5ed7f5bbd3ed09c4L,
|
|
0x7d42a35c82a9c1bdL } },
|
|
/* 28 << 154 */
|
|
{ { 0xcf3de9959890272dL,0x75f3432a3e713a10L,0x5e13479fe28227b8L,
|
|
0xb8561ea9fefacdc8L },
|
|
{ 0xa6a297a08332aafdL,0x9b0d8bb573809b62L,0xd2fa1cfd0c63036fL,
|
|
0x7a16eb55bd64bda8L } },
|
|
/* 29 << 154 */
|
|
{ { 0x3f5cf5f678e62ddcL,0x2267c45407fd752bL,0x5e361b6b5e437bbeL,
|
|
0x95c595018354e075L },
|
|
{ 0xec725f85f2b254d9L,0x844b617d2cb52b4eL,0xed8554f5cf425fb5L,
|
|
0xab67703e2af9f312L } },
|
|
/* 30 << 154 */
|
|
{ { 0x4cc34ec13cf48283L,0xb09daa259c8a705eL,0xd1e9d0d05b7d4f84L,
|
|
0x4df6ef64db38929dL },
|
|
{ 0xe16b0763aa21ba46L,0xc6b1d178a293f8fbL,0x0ff5b602d520aabfL,
|
|
0x94d671bdc339397aL } },
|
|
/* 31 << 154 */
|
|
{ { 0x7c7d98cf4f5792faL,0x7c5e0d6711215261L,0x9b19a631a7c5a6d4L,
|
|
0xc8511a627a45274dL },
|
|
{ 0x0c16621ca5a60d99L,0xf7fbab88cf5e48cbL,0xab1e6ca2f7ddee08L,
|
|
0x83bd08cee7867f3cL } },
|
|
/* 32 << 154 */
|
|
{ { 0xf7e48e8a2ac13e27L,0x4494f6df4eb1a9f5L,0xedbf84eb981f0a62L,
|
|
0x49badc32536438f0L },
|
|
{ 0x50bea541004f7571L,0xbac67d10df1c94eeL,0x253d73a1b727bc31L,
|
|
0xb3d01cf230686e28L } },
|
|
/* 33 << 154 */
|
|
{ { 0x51b77b1b55fd0b8bL,0xa099d183feec3173L,0x202b1fb7670e72b7L,
|
|
0xadc88b33a8e1635fL },
|
|
{ 0x34e8216af989d905L,0xc2e68d2029b58d01L,0x11f81c926fe55a93L,
|
|
0x15f1462a8f296f40L } },
|
|
/* 34 << 154 */
|
|
{ { 0x1915d375ea3d62f2L,0xa17765a301c8977dL,0x7559710ae47b26f6L,
|
|
0xe0bd29c8535077a5L },
|
|
{ 0x615f976d08d84858L,0x370dfe8569ced5c1L,0xbbc7503ca734fa56L,
|
|
0xfbb9f1ec91ac4574L } },
|
|
/* 35 << 154 */
|
|
{ { 0x95d7ec53060dd7efL,0xeef2dacd6e657979L,0x54511af3e2a08235L,
|
|
0x1e324aa41f4aea3dL },
|
|
{ 0x550e7e71e6e67671L,0xbccd5190bf52faf7L,0xf880d316223cc62aL,
|
|
0x0d402c7e2b32eb5dL } },
|
|
/* 36 << 154 */
|
|
{ { 0xa40bc039306a5a3bL,0x4e0a41fd96783a1bL,0xa1e8d39a0253cdd4L,
|
|
0x6480be26c7388638L },
|
|
{ 0xee365e1d2285f382L,0x188d8d8fec0b5c36L,0x34ef1a481f0f4d82L,
|
|
0x1a8f43e1a487d29aL } },
|
|
/* 37 << 154 */
|
|
{ { 0x8168226d77aefb3aL,0xf69a751e1e72c253L,0x8e04359ae9594df1L,
|
|
0x475ffd7dd14c0467L },
|
|
{ 0xb5a2c2b13844e95cL,0x85caf647dd12ef94L,0x1ecd2a9ff1063d00L,
|
|
0x1dd2e22923843311L } },
|
|
/* 38 << 154 */
|
|
{ { 0x38f0e09d73d17244L,0x3ede77468fc653f1L,0xae4459f5dc20e21cL,
|
|
0x00db2ffa6a8599eaL },
|
|
{ 0x11682c3930cfd905L,0x4934d074a5c112a6L,0xbdf063c5568bfe95L,
|
|
0x779a440a016c441aL } },
|
|
/* 39 << 154 */
|
|
{ { 0x0c23f21897d6fbdcL,0xd3a5cd87e0776aacL,0xcee37f72d712e8dbL,
|
|
0xfb28c70d26f74e8dL },
|
|
{ 0xffe0c728b61301a0L,0xa6282168d3724354L,0x7ff4cb00768ffedcL,
|
|
0xc51b308803b02de9L } },
|
|
/* 40 << 154 */
|
|
{ { 0xa5a8147c3902dda5L,0x35d2f706fe6973b4L,0x5ac2efcfc257457eL,
|
|
0x933f48d48700611bL },
|
|
{ 0xc365af884912beb2L,0x7f5a4de6162edf94L,0xc646ba7c0c32f34bL,
|
|
0x632c6af3b2091074L } },
|
|
/* 41 << 154 */
|
|
{ { 0x58d4f2e3753e43a9L,0x70e1d21724d4e23fL,0xb24bf729afede6a6L,
|
|
0x7f4a94d8710c8b60L },
|
|
{ 0xaad90a968d4faa6aL,0xd9ed0b32b066b690L,0x52fcd37b78b6dbfdL,
|
|
0x0b64615e8bd2b431L } },
|
|
/* 42 << 154 */
|
|
{ { 0x228e2048cfb9fad5L,0xbeaa386d240b76bdL,0x2d6681c890dad7bcL,
|
|
0x3e553fc306d38f5eL },
|
|
{ 0xf27cdb9b9d5f9750L,0x3e85c52ad28c5b0eL,0x190795af5247c39bL,
|
|
0x547831ebbddd6828L } },
|
|
/* 43 << 154 */
|
|
{ { 0xf327a2274a82f424L,0x36919c787e47f89dL,0xe478391943c7392cL,
|
|
0xf101b9aa2316fefeL },
|
|
{ 0xbcdc9e9c1c5009d2L,0xfb55ea139cd18345L,0xf5b5e231a3ce77c7L,
|
|
0xde6b4527d2f2cb3dL } },
|
|
/* 44 << 154 */
|
|
{ { 0x10f6a3339bb26f5fL,0x1e85db8e044d85b6L,0xc3697a0894197e54L,
|
|
0x65e18cc0a7cb4ea8L },
|
|
{ 0xa38c4f50a471fe6eL,0xf031747a2f13439cL,0x53c4a6bac007318bL,
|
|
0xa8da3ee51deccb3dL } },
|
|
/* 45 << 154 */
|
|
{ { 0x0555b31c558216b1L,0x90c7810c2f79e6c2L,0x9b669f4dfe8eed3cL,
|
|
0x70398ec8e0fac126L },
|
|
{ 0xa96a449ef701b235L,0x0ceecdb3eb94f395L,0x285fc368d0cb7431L,
|
|
0x0d37bb5216a18c64L } },
|
|
/* 46 << 154 */
|
|
{ { 0x05110d38b880d2ddL,0xa60f177b65930d57L,0x7da34a67f36235f5L,
|
|
0x47f5e17c183816b9L },
|
|
{ 0xc7664b57db394af4L,0x39ba215d7036f789L,0x46d2ca0e2f27b472L,
|
|
0xc42647eef73a84b7L } },
|
|
/* 47 << 154 */
|
|
{ { 0x44bc754564488f1dL,0xaa922708f4cf85d5L,0x721a01d553e4df63L,
|
|
0x649c0c515db46cedL },
|
|
{ 0x6bf0d64e3cffcb6cL,0xe3bf93fe50f71d96L,0x75044558bcc194a0L,
|
|
0x16ae33726afdc554L } },
|
|
/* 48 << 154 */
|
|
{ { 0xbfc01adf5ca48f3fL,0x64352f06e22a9b84L,0xcee54da1c1099e4aL,
|
|
0xbbda54e8fa1b89c0L },
|
|
{ 0x166a3df56f6e55fbL,0x1ca44a2420176f88L,0x936afd88dfb7b5ffL,
|
|
0xe34c24378611d4a0L } },
|
|
/* 49 << 154 */
|
|
{ { 0x7effbb7586142103L,0x6704ba1b1f34fc4dL,0x7c2a468f10c1b122L,
|
|
0x36b3a6108c6aace9L },
|
|
{ 0xabfcc0a775a0d050L,0x066f91973ce33e32L,0xce905ef429fe09beL,
|
|
0x89ee25baa8376351L } },
|
|
/* 50 << 154 */
|
|
{ { 0x2a3ede22fd29dc76L,0x7fd32ed936f17260L,0x0cadcf68284b4126L,
|
|
0x63422f08a7951fc8L },
|
|
{ 0x562b24f40807e199L,0xfe9ce5d122ad4490L,0xc2f51b100db2b1b4L,
|
|
0xeb3613ffe4541d0dL } },
|
|
/* 51 << 154 */
|
|
{ { 0xbd2c4a052680813bL,0x527aa55d561b08d6L,0xa9f8a40ea7205558L,
|
|
0xe3eea56f243d0becL },
|
|
{ 0x7b853817a0ff58b3L,0xb67d3f651a69e627L,0x0b76bbb9a869b5d6L,
|
|
0xa3afeb82546723edL } },
|
|
/* 52 << 154 */
|
|
{ { 0x5f24416d3e554892L,0x8413b53d430e2a45L,0x99c56aee9032a2a0L,
|
|
0x09432bf6eec367b1L },
|
|
{ 0x552850c6daf0ecc1L,0x49ebce555bc92048L,0xdfb66ba654811307L,
|
|
0x1b84f7976f298597L } },
|
|
/* 53 << 154 */
|
|
{ { 0x795904818d1d7a0dL,0xd9fabe033a6fa556L,0xa40f9c59ba9e5d35L,
|
|
0xcb1771c1f6247577L },
|
|
{ 0x542a47cae9a6312bL,0xa34b3560552dd8c5L,0xfdf94de00d794716L,
|
|
0xd46124a99c623094L } },
|
|
/* 54 << 154 */
|
|
{ { 0x56b7435d68afe8b4L,0x27f205406c0d8ea1L,0x12b77e1473186898L,
|
|
0xdbc3dd467479490fL },
|
|
{ 0x951a9842c03b0c05L,0x8b1b3bb37921bc96L,0xa573b3462b202e0aL,
|
|
0x77e4665d47254d56L } },
|
|
/* 55 << 154 */
|
|
{ { 0x08b70dfcd23e3984L,0xab86e8bcebd14236L,0xaa3e07f857114ba7L,
|
|
0x5ac71689ab0ef4f2L },
|
|
{ 0x88fca3840139d9afL,0x72733f8876644af0L,0xf122f72a65d74f4aL,
|
|
0x13931577a5626c7aL } },
|
|
/* 56 << 154 */
|
|
{ { 0xd5b5d9eb70f8d5a4L,0x375adde7d7bbb228L,0x31e88b860c1c0b32L,
|
|
0xd1f568c4173edbaaL },
|
|
{ 0x1592fc835459df02L,0x2beac0fb0fcd9a7eL,0xb0a6fdb81b473b0aL,
|
|
0xe3224c6f0fe8fc48L } },
|
|
/* 57 << 154 */
|
|
{ { 0x680bd00ee87edf5bL,0x30385f0220e77cf5L,0xe9ab98c04d42d1b2L,
|
|
0x72d191d2d3816d77L },
|
|
{ 0x1564daca0917d9e5L,0x394eab591f8fed7fL,0xa209aa8d7fbb3896L,
|
|
0x5564f3b9be6ac98eL } },
|
|
/* 58 << 154 */
|
|
{ { 0xead21d05d73654efL,0x68d1a9c413d78d74L,0x61e017086d4973a0L,
|
|
0x83da350046e6d32aL },
|
|
{ 0x6a3dfca468ae0118L,0xa1b9a4c9d02da069L,0x0b2ff9c7ebab8302L,
|
|
0x98af07c3944ba436L } },
|
|
/* 59 << 154 */
|
|
{ { 0x85997326995f0f9fL,0x467fade071b58bc6L,0x47e4495abd625a2bL,
|
|
0xfdd2d01d33c3b8cdL },
|
|
{ 0x2c38ae28c693f9faL,0x48622329348f7999L,0x97bf738e2161f583L,
|
|
0x15ee2fa7565e8cc9L } },
|
|
/* 60 << 154 */
|
|
{ { 0xa1a5c8455777e189L,0xcc10bee0456f2829L,0x8ad95c56da762bd5L,
|
|
0x152e2214e9d91da8L },
|
|
{ 0x975b0e727cb23c74L,0xfd5d7670a90c66dfL,0xb5b5b8ad225ffc53L,
|
|
0xab6dff73faded2aeL } },
|
|
/* 61 << 154 */
|
|
{ { 0xebd567816f4cbe9dL,0x0ed8b2496a574bd7L,0x41c246fe81a881faL,
|
|
0x91564805c3db9c70L },
|
|
{ 0xd7c12b085b862809L,0x1facd1f155858d7bL,0x7693747caf09e92aL,
|
|
0x3b69dcba189a425fL } },
|
|
/* 62 << 154 */
|
|
{ { 0x0be28e9f967365efL,0x57300eb2e801f5c9L,0x93b8ac6ad583352fL,
|
|
0xa2cf1f89cd05b2b7L },
|
|
{ 0x7c0c9b744dcc40ccL,0xfee38c45ada523fbL,0xb49a4dec1099cc4dL,
|
|
0x325c377f69f069c6L } },
|
|
/* 63 << 154 */
|
|
{ { 0xe12458ce476cc9ffL,0x580e0b6cc6d4cb63L,0xd561c8b79072289bL,
|
|
0x0377f264a619e6daL },
|
|
{ 0x2668536288e591a5L,0xa453a7bd7523ca2bL,0x8a9536d2c1df4533L,
|
|
0xc8e50f2fbe972f79L } },
|
|
/* 64 << 154 */
|
|
{ { 0xd433e50f6d3549cfL,0x6f33696ffacd665eL,0x695bfdacce11fcb4L,
|
|
0x810ee252af7c9860L },
|
|
{ 0x65450fe17159bb2cL,0xf7dfbebe758b357bL,0x2b057e74d69fea72L,
|
|
0xd485717a92731745L } },
|
|
/* 0 << 161 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 161 */
|
|
{ { 0x896c42e8ee36860cL,0xdaf04dfd4113c22dL,0x1adbb7b744104213L,
|
|
0xe5fd5fa11fd394eaL },
|
|
{ 0x68235d941a4e0551L,0x6772cfbe18d10151L,0x276071e309984523L,
|
|
0xe4e879de5a56ba98L } },
|
|
/* 2 << 161 */
|
|
{ { 0xaaafafb0285b9491L,0x01a0be881e4c705eL,0xff1d4f5d2ad9caabL,
|
|
0x6e349a4ac37a233fL },
|
|
{ 0xcf1c12464a1c6a16L,0xd99e6b6629383260L,0xea3d43665f6d5471L,
|
|
0x36974d04ff8cc89bL } },
|
|
/* 3 << 161 */
|
|
{ { 0xc26c49a1cfe89d80L,0xb42c026dda9c8371L,0xca6c013adad066d2L,
|
|
0xfb8f722856a4f3eeL },
|
|
{ 0x08b579ecd850935bL,0x34c1a74cd631e1b3L,0xcb5fe596ac198534L,
|
|
0x39ff21f6e1f24f25L } },
|
|
/* 4 << 161 */
|
|
{ { 0x27f29e148f929057L,0x7a64ae06c0c853dfL,0x256cd18358e9c5ceL,
|
|
0x9d9cce82ded092a5L },
|
|
{ 0xcc6e59796e93b7c7L,0xe1e4709231bb9e27L,0xb70b3083aa9e29a0L,
|
|
0xbf181a753785e644L } },
|
|
/* 5 << 161 */
|
|
{ { 0xf53f2c658ead09f7L,0x1335e1d59780d14dL,0x69cc20e0cd1b66bcL,
|
|
0x9b670a37bbe0bfc8L },
|
|
{ 0xce53dc8128efbeedL,0x0c74e77c8326a6e5L,0x3604e0d2b88e9a63L,
|
|
0xbab38fca13dc2248L } },
|
|
/* 6 << 161 */
|
|
{ { 0x8ed6e8c85c0a3f1eL,0xbcad24927c87c37fL,0xfdfb62bb9ee3b78dL,
|
|
0xeba8e477cbceba46L },
|
|
{ 0x37d38cb0eeaede4bL,0x0bc498e87976deb6L,0xb2944c046b6147fbL,
|
|
0x8b123f35f71f9609L } },
|
|
/* 7 << 161 */
|
|
{ { 0xa155dcc7de79dc24L,0xf1168a32558f69cdL,0xbac215950d1850dfL,
|
|
0x15c8295bb204c848L },
|
|
{ 0xf661aa367d8184ffL,0xc396228e30447bdbL,0x11cd5143bde4a59eL,
|
|
0xe3a26e3b6beab5e6L } },
|
|
/* 8 << 161 */
|
|
{ { 0xd3b3a13f1402b9d0L,0x573441c32c7bc863L,0x4b301ec4578c3e6eL,
|
|
0xc26fc9c40adaf57eL },
|
|
{ 0x96e71bfd7493cea3L,0xd05d4b3f1af81456L,0xdaca2a8a6a8c608fL,
|
|
0x53ef07f60725b276L } },
|
|
/* 9 << 161 */
|
|
{ { 0x07a5fbd27824fc56L,0x3467521813289077L,0x5bf69fd5e0c48349L,
|
|
0xa613ddd3b6aa7875L },
|
|
{ 0x7f78c19c5450d866L,0x46f4409c8f84a481L,0x9f1d192890fce239L,
|
|
0x016c4168b2ce44b9L } },
|
|
/* 10 << 161 */
|
|
{ { 0xbae023f0c7435978L,0xb152c88820e30e19L,0x9c241645e3fa6fafL,
|
|
0x735d95c184823e60L },
|
|
{ 0x0319757303955317L,0x0b4b02a9f03b4995L,0x076bf55970274600L,
|
|
0x32c5cc53aaf57508L } },
|
|
/* 11 << 161 */
|
|
{ { 0xe8af6d1f60624129L,0xb7bc5d649a5e2b5eL,0x3814b0485f082d72L,
|
|
0x76f267f2ce19677aL },
|
|
{ 0x626c630fb36eed93L,0x55230cd73bf56803L,0x78837949ce2736a0L,
|
|
0x0d792d60aa6c55f1L } },
|
|
/* 12 << 161 */
|
|
{ { 0x0318dbfdd5c7c5d2L,0xb38f8da7072b342dL,0x3569bddc7b8de38aL,
|
|
0xf25b5887a1c94842L },
|
|
{ 0xb2d5b2842946ad60L,0x854f29ade9d1707eL,0xaa5159dc2c6a4509L,
|
|
0x899f94c057189837L } },
|
|
/* 13 << 161 */
|
|
{ { 0xcf6adc51f4a55b03L,0x261762de35e3b2d5L,0x4cc4301204827b51L,
|
|
0xcd22a113c6021442L },
|
|
{ 0xce2fd61a247c9569L,0x59a50973d152becaL,0x6c835a1163a716d4L,
|
|
0xc26455ed187dedcfL } },
|
|
/* 14 << 161 */
|
|
{ { 0x27f536e049ce89e7L,0x18908539cc890cb5L,0x308909abd83c2aa1L,
|
|
0xecd3142b1ab73bd3L },
|
|
{ 0x6a85bf59b3f5ab84L,0x3c320a68f2bea4c6L,0xad8dc5386da4541fL,
|
|
0xeaf34eb0b7c41186L } },
|
|
/* 15 << 161 */
|
|
{ { 0x1c780129977c97c4L,0x5ff9beebc57eb9faL,0xa24d0524c822c478L,
|
|
0xfd8eec2a461cd415L },
|
|
{ 0xfbde194ef027458cL,0xb4ff53191d1be115L,0x63f874d94866d6f4L,
|
|
0x35c75015b21ad0c9L } },
|
|
/* 16 << 161 */
|
|
{ { 0xa6b5c9d646ac49d2L,0x42c77c0b83137aa9L,0x24d000fc68225a38L,
|
|
0x0f63cfc82fe1e907L },
|
|
{ 0x22d1b01bc6441f95L,0x7d38f719ec8e448fL,0x9b33fa5f787fb1baL,
|
|
0x94dcfda1190158dfL } },
|
|
/* 17 << 161 */
|
|
{ { 0xc47cb3395f6d4a09L,0x6b4f355cee52b826L,0x3d100f5df51b930aL,
|
|
0xf4512fac9f668f69L },
|
|
{ 0x546781d5206c4c74L,0xd021d4d4cb4d2e48L,0x494a54c2ca085c2dL,
|
|
0xf1dbaca4520850a8L } },
|
|
/* 18 << 161 */
|
|
{ { 0x63c79326490a1acaL,0xcb64dd9c41526b02L,0xbb772591a2979258L,
|
|
0x3f58297048d97846L },
|
|
{ 0xd66b70d17c213ba7L,0xc28febb5e8a0ced4L,0x6b911831c10338c1L,
|
|
0x0d54e389bf0126f3L } },
|
|
/* 19 << 161 */
|
|
{ { 0x7048d4604af206eeL,0x786c88f677e97cb9L,0xd4375ae1ac64802eL,
|
|
0x469bcfe1d53ec11cL },
|
|
{ 0xfc9b340d47062230L,0xe743bb57c5b4a3acL,0xfe00b4aa59ef45acL,
|
|
0x29a4ef2359edf188L } },
|
|
/* 20 << 161 */
|
|
{ { 0x40242efeb483689bL,0x2575d3f6513ac262L,0xf30037c80ca6db72L,
|
|
0xc9fcce8298864be2L },
|
|
{ 0x84a112ff0149362dL,0x95e575821c4ae971L,0x1fa4b1a8945cf86cL,
|
|
0x4525a7340b024a2fL } },
|
|
/* 21 << 161 */
|
|
{ { 0xe76c8b628f338360L,0x483ff59328edf32bL,0x67e8e90a298b1aecL,
|
|
0x9caab338736d9a21L },
|
|
{ 0x5c09d2fd66892709L,0x2496b4dcb55a1d41L,0x93f5fb1ae24a4394L,
|
|
0x08c750496fa8f6c1L } },
|
|
/* 22 << 161 */
|
|
{ { 0xcaead1c2c905d85fL,0xe9d7f7900733ae57L,0x24c9a65cf07cdd94L,
|
|
0x7389359ca4b55931L },
|
|
{ 0xf58709b7367e45f7L,0x1f203067cb7e7adcL,0x82444bffc7b72818L,
|
|
0x07303b35baac8033L } },
|
|
/* 23 << 161 */
|
|
{ { 0x1e1ee4e4d13b7ea1L,0xe6489b24e0e74180L,0xa5f2c6107e70ef70L,
|
|
0xa1655412bdd10894L },
|
|
{ 0x555ebefb7af4194eL,0x533c1c3c8e89bd9cL,0x735b9b5789895856L,
|
|
0x15fb3cd2567f5c15L } },
|
|
/* 24 << 161 */
|
|
{ { 0x057fed45526f09fdL,0xe8a4f10c8128240aL,0x9332efc4ff2bfd8dL,
|
|
0x214e77a0bd35aa31L },
|
|
{ 0x32896d7314faa40eL,0x767867ec01e5f186L,0xc9adf8f117a1813eL,
|
|
0xcb6cda7854741795L } },
|
|
/* 25 << 161 */
|
|
{ { 0xb7521b6d349d51aaL,0xf56b5a9ee3c7b8e9L,0xc6f1e5c932a096dfL,
|
|
0x083667c4a3635024L },
|
|
{ 0x365ea13518087f2fL,0xf1b8eaacd136e45dL,0xc8a0e48473aec989L,
|
|
0xd75a324b142c9259L } },
|
|
/* 26 << 161 */
|
|
{ { 0xb7b4d00101dae185L,0x45434e0b9b7a94bcL,0xf54339affbd8cb0bL,
|
|
0xdcc4569ee98ef49eL },
|
|
{ 0x7789318a09a51299L,0x81b4d206b2b025d8L,0xf64aa418fae85792L,
|
|
0x3e50258facd7baf7L } },
|
|
/* 27 << 161 */
|
|
{ { 0xdce84cdb2996864bL,0xa2e670891f485fa4L,0xb28b2bb6534c6a5aL,
|
|
0x31a7ec6bc94b9d39L },
|
|
{ 0x1d217766d6bc20daL,0x4acdb5ec86761190L,0x6872632873701063L,
|
|
0x4d24ee7c2128c29bL } },
|
|
/* 28 << 161 */
|
|
{ { 0xc072ebd3a19fd868L,0x612e481cdb8ddd3bL,0xb4e1d7541a64d852L,
|
|
0x00ef95acc4c6c4abL },
|
|
{ 0x1536d2edaa0a6c46L,0x6129408643774790L,0x54af25e8343fda10L,
|
|
0x9ff9d98dfd25d6f2L } },
|
|
/* 29 << 161 */
|
|
{ { 0x0746af7c468b8835L,0x977a31cb730ecea7L,0xa5096b80c2cf4a81L,
|
|
0xaa9868336458c37aL },
|
|
{ 0x6af29bf3a6bd9d34L,0x6a62fe9b33c5d854L,0x50e6c304b7133b5eL,
|
|
0x04b601597d6e6848L } },
|
|
/* 30 << 161 */
|
|
{ { 0x4cd296df5579bea4L,0x10e35ac85ceedaf1L,0x04c4c5fde3bcc5b1L,
|
|
0x95f9ee8a89412cf9L },
|
|
{ 0x2c9459ee82b6eb0fL,0x2e84576595c2aaddL,0x774a84aed327fcfeL,
|
|
0xd8c937220368d476L } },
|
|
/* 31 << 161 */
|
|
{ { 0x0dbd5748f83e8a3bL,0xa579aa968d2495f3L,0x535996a0ae496e9bL,
|
|
0x07afbfe9b7f9bcc2L },
|
|
{ 0x3ac1dc6d5b7bd293L,0x3b592cff7022323dL,0xba0deb989c0a3e76L,
|
|
0x18e78e9f4b197acbL } },
|
|
/* 32 << 161 */
|
|
{ { 0x211cde10296c36efL,0x7ee8967282c4da77L,0xb617d270a57836daL,
|
|
0xf0cd9c319cb7560bL },
|
|
{ 0x01fdcbf7e455fe90L,0x3fb53cbb7e7334f3L,0x781e2ea44e7de4ecL,
|
|
0x8adab3ad0b384fd0L } },
|
|
/* 33 << 161 */
|
|
{ { 0x129eee2f53d64829L,0x7a471e17a261492bL,0xe4f9adb9e4cb4a2cL,
|
|
0x3d359f6f97ba2c2dL },
|
|
{ 0x346c67860aacd697L,0x92b444c375c2f8a8L,0xc79fa117d85df44eL,
|
|
0x56782372398ddf31L } },
|
|
/* 34 << 161 */
|
|
{ { 0x60e690f2bbbab3b8L,0x4851f8ae8b04816bL,0xc72046ab9c92e4d2L,
|
|
0x518c74a17cf3136bL },
|
|
{ 0xff4eb50af9877d4cL,0x14578d90a919cabbL,0x8218f8c4ac5eb2b6L,
|
|
0xa3ccc547542016e4L } },
|
|
/* 35 << 161 */
|
|
{ { 0x025bf48e327f8349L,0xf3e97346f43cb641L,0xdc2bafdf500f1085L,
|
|
0x571678762f063055L },
|
|
{ 0x5bd914b9411925a6L,0x7c078d48a1123de5L,0xee6bf835182b165dL,
|
|
0xb11b5e5bba519727L } },
|
|
/* 36 << 161 */
|
|
{ { 0xe33ea76c1eea7b85L,0x2352b46192d4f85eL,0xf101d334afe115bbL,
|
|
0xfabc1294889175a3L },
|
|
{ 0x7f6bcdc05233f925L,0xe0a802dbe77fec55L,0xbdb47b758069b659L,
|
|
0x1c5e12def98fbd74L } },
|
|
/* 37 << 161 */
|
|
{ { 0x869c58c64b8457eeL,0xa5360f694f7ea9f7L,0xe576c09ff460b38fL,
|
|
0x6b70d54822b7fb36L },
|
|
{ 0x3fd237f13bfae315L,0x33797852cbdff369L,0x97df25f525b516f9L,
|
|
0x46f388f2ba38ad2dL } },
|
|
/* 38 << 161 */
|
|
{ { 0x656c465889d8ddbbL,0x8830b26e70f38ee8L,0x4320fd5cde1212b0L,
|
|
0xc34f30cfe4a2edb2L },
|
|
{ 0xabb131a356ab64b8L,0x7f77f0ccd99c5d26L,0x66856a37bf981d94L,
|
|
0x19e76d09738bd76eL } },
|
|
/* 39 << 161 */
|
|
{ { 0xe76c8ac396238f39L,0xc0a482bea830b366L,0xb7b8eaff0b4eb499L,
|
|
0x8ecd83bc4bfb4865L },
|
|
{ 0x971b2cb7a2f3776fL,0xb42176a4f4b88adfL,0xb9617df5be1fa446L,
|
|
0x8b32d508cd031bd2L } },
|
|
/* 40 << 161 */
|
|
{ { 0x1c6bd47d53b618c0L,0xc424f46c6a227923L,0x7303ffdedd92d964L,
|
|
0xe971287871b5abf2L },
|
|
{ 0x8f48a632f815561dL,0x85f48ff5d3c055d1L,0x222a14277525684fL,
|
|
0xd0d841a067360cc3L } },
|
|
/* 41 << 161 */
|
|
{ { 0x4245a9260b9267c6L,0xc78913f1cf07f863L,0xaa844c8e4d0d9e24L,
|
|
0xa42ad5223d5f9017L },
|
|
{ 0xbd371749a2c989d5L,0x928292dfe1f5e78eL,0x493b383e0a1ea6daL,
|
|
0x5136fd8d13aee529L } },
|
|
/* 42 << 161 */
|
|
{ { 0x860c44b1f2c34a99L,0x3b00aca4bf5855acL,0xabf6aaa0faaf37beL,
|
|
0x65f436822a53ec08L },
|
|
{ 0x1d9a5801a11b12e1L,0x78a7ab2ce20ed475L,0x0de1067e9a41e0d5L,
|
|
0x30473f5f305023eaL } },
|
|
/* 43 << 161 */
|
|
{ { 0xdd3ae09d169c7d97L,0x5cd5baa4cfaef9cdL,0x5cd7440b65a44803L,
|
|
0xdc13966a47f364deL },
|
|
{ 0x077b2be82b8357c1L,0x0cb1b4c5e9d57c2aL,0x7a4ceb3205ff363eL,
|
|
0xf310fa4dca35a9efL } },
|
|
/* 44 << 161 */
|
|
{ { 0xdbb7b352f97f68c6L,0x0c773b500b02cf58L,0xea2e48213c1f96d9L,
|
|
0xffb357b0eee01815L },
|
|
{ 0xb9c924cde0f28039L,0x0b36c95a46a3fbe4L,0x1faaaea45e46db6cL,
|
|
0xcae575c31928aaffL } },
|
|
/* 45 << 161 */
|
|
{ { 0x7f671302a70dab86L,0xfcbd12a971c58cfcL,0xcbef9acfbee0cb92L,
|
|
0x573da0b9f8c1b583L },
|
|
{ 0x4752fcfe0d41d550L,0xe7eec0e32155cffeL,0x0fc39fcb545ae248L,
|
|
0x522cb8d18065f44eL } },
|
|
/* 46 << 161 */
|
|
{ { 0x263c962a70cbb96cL,0xe034362abcd124a9L,0xf120db283c2ae58dL,
|
|
0xb9a38d49fef6d507L },
|
|
{ 0xb1fd2a821ff140fdL,0xbd162f3020aee7e0L,0x4e17a5d4cb251949L,
|
|
0x2aebcb834f7e1c3dL } },
|
|
/* 47 << 161 */
|
|
{ { 0x608eb25f937b0527L,0xf42e1e47eb7d9997L,0xeba699c4b8a53a29L,
|
|
0x1f921c71e091b536L },
|
|
{ 0xcce29e7b5b26bbd5L,0x7a8ef5ed3b61a680L,0xe5ef8043ba1f1c7eL,
|
|
0x16ea821718158ddaL } },
|
|
/* 48 << 161 */
|
|
{ { 0x01778a2b599ff0f9L,0x68a923d78104fc6bL,0x5bfa44dfda694ff3L,
|
|
0x4f7199dbf7667f12L },
|
|
{ 0xc06d8ff6e46f2a79L,0x08b5deade9f8131dL,0x02519a59abb4ce7cL,
|
|
0xc4f710bcb42aec3eL } },
|
|
/* 49 << 161 */
|
|
{ { 0x3d77b05778bde41aL,0x6474bf80b4186b5aL,0x048b3f6788c65741L,
|
|
0xc64519de03c7c154L },
|
|
{ 0xdf0738460edfcc4fL,0x319aa73748f1aa6bL,0x8b9f8a02ca909f77L,
|
|
0x902581397580bfefL } },
|
|
/* 50 << 161 */
|
|
{ { 0xd8bfd3cac0c22719L,0xc60209e4c9ca151eL,0x7a744ab5d9a1a69cL,
|
|
0x6de5048b14937f8fL },
|
|
{ 0x171938d8e115ac04L,0x7df709401c6b16d2L,0xa6aeb6637f8e94e7L,
|
|
0xc130388e2a2cf094L } },
|
|
/* 51 << 161 */
|
|
{ { 0x1850be8477f54e6eL,0x9f258a7265d60fe5L,0xff7ff0c06c9146d6L,
|
|
0x039aaf90e63a830bL },
|
|
{ 0x38f27a739460342fL,0x4703148c3f795f8aL,0x1bb5467b9681a97eL,
|
|
0x00931ba5ecaeb594L } },
|
|
/* 52 << 161 */
|
|
{ { 0xcdb6719d786f337cL,0xd9c01cd2e704397dL,0x0f4a3f20555c2fefL,
|
|
0x004525097c0af223L },
|
|
{ 0x54a5804784db8e76L,0x3bacf1aa93c8aa06L,0x11ca957cf7919422L,
|
|
0x5064105378cdaa40L } },
|
|
/* 53 << 161 */
|
|
{ { 0x7a3038749f7144aeL,0x170c963f43d4acfdL,0x5e14814958ddd3efL,
|
|
0xa7bde5829e72dba8L },
|
|
{ 0x0769da8b6fa68750L,0xfa64e532572e0249L,0xfcaadf9d2619ad31L,
|
|
0x87882daaa7b349cdL } },
|
|
/* 54 << 161 */
|
|
{ { 0x9f6eb7316c67a775L,0xcb10471aefc5d0b1L,0xb433750ce1b806b2L,
|
|
0x19c5714d57b1ae7eL },
|
|
{ 0xc0dc8b7bed03fd3fL,0xdd03344f31bc194eL,0xa66c52a78c6320b5L,
|
|
0x8bc82ce3d0b6fd93L } },
|
|
/* 55 << 161 */
|
|
{ { 0xf8e13501b35f1341L,0xe53156dd25a43e42L,0xd3adf27e4daeb85cL,
|
|
0xb81d8379bbeddeb5L },
|
|
{ 0x1b0b546e2e435867L,0x9020eb94eba5dd60L,0x37d911618210cb9dL,
|
|
0x4c596b315c91f1cfL } },
|
|
/* 56 << 161 */
|
|
{ { 0xb228a90f0e0b040dL,0xbaf02d8245ff897fL,0x2aac79e600fa6122L,
|
|
0x248288178e36f557L },
|
|
{ 0xb9521d31113ec356L,0x9e48861e15eff1f8L,0x2aa1d412e0d41715L,
|
|
0x71f8620353f131b8L } },
|
|
/* 57 << 161 */
|
|
{ { 0xf60da8da3fd19408L,0x4aa716dc278d9d99L,0x394531f7a8c51c90L,
|
|
0xb560b0e8f59db51cL },
|
|
{ 0xa28fc992fa34bdadL,0xf024fa149cd4f8bdL,0x5cf530f723a9d0d3L,
|
|
0x615ca193e28c9b56L } },
|
|
/* 58 << 161 */
|
|
{ { 0x6d2a483d6f73c51eL,0xa4cb2412ea0dc2ddL,0x50663c411eb917ffL,
|
|
0x3d3a74cfeade299eL },
|
|
{ 0x29b3990f4a7a9202L,0xa9bccf59a7b15c3dL,0x66a3ccdca5df9208L,
|
|
0x48027c1443f2f929L } },
|
|
/* 59 << 161 */
|
|
{ { 0xd385377c40b557f0L,0xe001c366cd684660L,0x1b18ed6be2183a27L,
|
|
0x879738d863210329L },
|
|
{ 0xa687c74bbda94882L,0xd1bbcc48a684b299L,0xaf6f1112863b3724L,
|
|
0x6943d1b42c8ce9f8L } },
|
|
/* 60 << 161 */
|
|
{ { 0xe044a3bb098cafb4L,0x27ed231060d48cafL,0x542b56753a31b84dL,
|
|
0xcbf3dd50fcddbed7L },
|
|
{ 0x25031f1641b1d830L,0xa7ec851dcb0c1e27L,0xac1c8fe0b5ae75dbL,
|
|
0xb24c755708c52120L } },
|
|
/* 61 << 161 */
|
|
{ { 0x57f811dc1d4636c3L,0xf8436526681a9939L,0x1f6bc6d99c81adb3L,
|
|
0x840f8ac35b7d80d4L },
|
|
{ 0x731a9811f4387f1aL,0x7c501cd3b5156880L,0xa5ca4a07dfe68867L,
|
|
0xf123d8f05fcea120L } },
|
|
/* 62 << 161 */
|
|
{ { 0x1fbb0e71d607039eL,0x2b70e215cd3a4546L,0x32d2f01d53324091L,
|
|
0xb796ff08180ab19bL },
|
|
{ 0x32d87a863c57c4aaL,0x2aed9cafb7c49a27L,0x9fb35eac31630d98L,
|
|
0x338e8cdf5c3e20a3L } },
|
|
/* 63 << 161 */
|
|
{ { 0x80f1618266cde8dbL,0x4e1599802d72fd36L,0xd7b8f13b9b6e5072L,
|
|
0xf52139073b7b5dc1L },
|
|
{ 0x4d431f1d8ce4396eL,0x37a1a680a7ed2142L,0xbf375696d01aaf6bL,
|
|
0xaa1c0c54e63aab66L } },
|
|
/* 64 << 161 */
|
|
{ { 0x3014368b4ed80940L,0x67e6d0567a6fceddL,0x7c208c49ca97579fL,
|
|
0xfe3d7a81a23597f6L },
|
|
{ 0x5e2032027e096ae2L,0xb1f3e1e724b39366L,0x26da26f32fdcdffcL,
|
|
0x79422f1d6097be83L } },
|
|
/* 0 << 168 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 168 */
|
|
{ { 0x263a2cfb9db3b381L,0x9c3a2deed4df0a4bL,0x728d06e97d04e61fL,
|
|
0x8b1adfbc42449325L },
|
|
{ 0x6ec1d9397e053a1bL,0xee2be5c766daf707L,0x80ba1e14810ac7abL,
|
|
0xdd2ae778f530f174L } },
|
|
/* 2 << 168 */
|
|
{ { 0x0435d97a205b9d8bL,0x6eb8f064056756d4L,0xd5e88a8bb6f8210eL,
|
|
0x070ef12dec9fd9eaL },
|
|
{ 0x4d8495053bcc876aL,0x12a75338a7404ce3L,0xd22b49e1b8a1db5eL,
|
|
0xec1f205114bfa5adL } },
|
|
/* 3 << 168 */
|
|
{ { 0xadbaeb79b6828f36L,0x9d7a025801bd5b9eL,0xeda01e0d1e844b0cL,
|
|
0x4b625175887edfc9L },
|
|
{ 0x14109fdd9669b621L,0x88a2ca56f6f87b98L,0xfe2eb788170df6bcL,
|
|
0x0cea06f4ffa473f9L } },
|
|
/* 4 << 168 */
|
|
{ { 0x43ed81b5c4e83d33L,0xd9f358795efd488bL,0x164a620f9deb4d0fL,
|
|
0xc6927bdbac6a7394L },
|
|
{ 0x45c28df79f9e0f03L,0x2868661efcd7e1a9L,0x7cf4e8d0ffa348f1L,
|
|
0x6bd4c284398538e0L } },
|
|
/* 5 << 168 */
|
|
{ { 0x2618a091289a8619L,0xef796e606671b173L,0x664e46e59090c632L,
|
|
0xa38062d41e66f8fbL },
|
|
{ 0x6c744a200573274eL,0xd07b67e4a9271394L,0x391223b26bdc0e20L,
|
|
0xbe2d93f1eb0a05a7L } },
|
|
/* 6 << 168 */
|
|
{ { 0xf23e2e533f36d141L,0xe84bb3d44dfca442L,0xb804a48d6b7c023aL,
|
|
0x1e16a8fa76431c3bL },
|
|
{ 0x1b5452adddd472e0L,0x7d405ee70d1ee127L,0x50fc6f1dffa27599L,
|
|
0x351ac53cbf391b35L } },
|
|
/* 7 << 168 */
|
|
{ { 0x7efa14b84444896bL,0x64974d2ff94027fbL,0xefdcd0e8de84487dL,
|
|
0x8c45b2602b48989bL },
|
|
{ 0xa8fcbbc2d8463487L,0xd1b2b3f73fbc476cL,0x21d005b7c8f443c0L,
|
|
0x518f2e6740c0139cL } },
|
|
/* 8 << 168 */
|
|
{ { 0x56036e8c06d75fc1L,0x2dcf7bb73249a89fL,0x81dd1d3de245e7ddL,
|
|
0xf578dc4bebd6e2a7L },
|
|
{ 0x4c028903df2ce7a0L,0xaee362889c39afacL,0xdc847c31146404abL,
|
|
0x6304c0d8a4e97818L } },
|
|
/* 9 << 168 */
|
|
{ { 0xae51dca2a91f6791L,0x2abe41909baa9efcL,0xd9d2e2f4559c7ac1L,
|
|
0xe82f4b51fc9f773aL },
|
|
{ 0xa77130274073e81cL,0xc0276facfbb596fcL,0x1d819fc9a684f70cL,
|
|
0x29b47fddc9f7b1e0L } },
|
|
/* 10 << 168 */
|
|
{ { 0x358de103459b1940L,0xec881c595b013e93L,0x51574c9349532ad3L,
|
|
0x2db1d445b37b46deL },
|
|
{ 0xc6445b87df239fd8L,0xc718af75151d24eeL,0xaea1c4a4f43c6259L,
|
|
0x40c0e5d770be02f7L } },
|
|
/* 11 << 168 */
|
|
{ { 0x6a4590f4721b33f2L,0x2124f1fbfedf04eaL,0xf8e53cde9745efe7L,
|
|
0xe7e1043265f046d9L },
|
|
{ 0xc3fca28ee4d0c7e6L,0x847e339a87253b1bL,0x9b5953483743e643L,
|
|
0xcb6a0a0b4fd12fc5L } },
|
|
/* 12 << 168 */
|
|
{ { 0xfb6836c327d02dccL,0x5ad009827a68bcc2L,0x1b24b44c005e912dL,
|
|
0xcc83d20f811fdcfeL },
|
|
{ 0x36527ec1666fba0cL,0x6994819714754635L,0xfcdcb1a8556da9c2L,
|
|
0xa593426781a732b2L } },
|
|
/* 13 << 168 */
|
|
{ { 0xec1214eda714181dL,0x609ac13b6067b341L,0xff4b4c97a545df1fL,
|
|
0xa124050134d2076bL },
|
|
{ 0x6efa0c231409ca97L,0x254cc1a820638c43L,0xd4e363afdcfb46cdL,
|
|
0x62c2adc303942a27L } },
|
|
/* 14 << 168 */
|
|
{ { 0xc67b9df056e46483L,0xa55abb2063736356L,0xab93c098c551bc52L,
|
|
0x382b49f9b15fe64bL },
|
|
{ 0x9ec221ad4dff8d47L,0x79caf615437df4d6L,0x5f13dc64bb456509L,
|
|
0xe4c589d9191f0714L } },
|
|
/* 15 << 168 */
|
|
{ { 0x27b6a8ab3fd40e09L,0xe455842e77313ea9L,0x8b51d1e21f55988bL,
|
|
0x5716dd73062bbbfcL },
|
|
{ 0x633c11e54e8bf3deL,0x9a0e77b61b85be3bL,0x565107290911cca6L,
|
|
0x27e76495efa6590fL } },
|
|
/* 16 << 168 */
|
|
{ { 0xe4ac8b33070d3aabL,0x2643672b9a2cd5e5L,0x52eff79b1cfc9173L,
|
|
0x665ca49b90a7c13fL },
|
|
{ 0x5a8dda59b3efb998L,0x8a5b922d052f1341L,0xae9ebbab3cf9a530L,
|
|
0x35986e7bf56da4d7L } },
|
|
/* 17 << 168 */
|
|
{ { 0x3a636b5cff3513ccL,0xbb0cf8ba3198f7ddL,0xb8d4052241f16f86L,
|
|
0x760575d8de13a7bfL },
|
|
{ 0x36f74e169f7aa181L,0x163a3ecff509ed1cL,0x6aead61f3c40a491L,
|
|
0x158c95fcdfe8fcaaL } },
|
|
/* 18 << 168 */
|
|
{ { 0xa3991b6e13cda46fL,0x79482415342faed0L,0xf3ba5bde666b5970L,
|
|
0x1d52e6bcb26ab6ddL },
|
|
{ 0x768ba1e78608dd3dL,0x4930db2aea076586L,0xd9575714e7dc1afaL,
|
|
0x1fc7bf7df7c58817L } },
|
|
/* 19 << 168 */
|
|
{ { 0x6b47accdd9eee96cL,0x0ca277fbe58cec37L,0x113fe413e702c42aL,
|
|
0xdd1764eec47cbe51L },
|
|
{ 0x041e7cde7b3ed739L,0x50cb74595ce9e1c0L,0x355685132925b212L,
|
|
0x7cff95c4001b081cL } },
|
|
/* 20 << 168 */
|
|
{ { 0x63ee4cbd8088b454L,0xdb7f32f79a9e0c8aL,0xb377d4186b2447cbL,
|
|
0xe3e982aad370219bL },
|
|
{ 0x06ccc1e4c2a2a593L,0x72c368650773f24fL,0xa13b4da795859423L,
|
|
0x8bbf1d3375040c8fL } },
|
|
/* 21 << 168 */
|
|
{ { 0x726f0973da50c991L,0x48afcd5b822d6ee2L,0xe5fc718b20fd7771L,
|
|
0xb9e8e77dfd0807a1L },
|
|
{ 0x7f5e0f4499a7703dL,0x6972930e618e36f3L,0x2b7c77b823807bbeL,
|
|
0xe5b82405cb27ff50L } },
|
|
/* 22 << 168 */
|
|
{ { 0xba8b8be3bd379062L,0xd64b7a1d2dce4a92L,0x040a73c5b2952e37L,
|
|
0x0a9e252ed438aecaL },
|
|
{ 0xdd43956bc39d3bcbL,0x1a31ca00b32b2d63L,0xd67133b85c417a18L,
|
|
0xd08e47902ef442c8L } },
|
|
/* 23 << 168 */
|
|
{ { 0x98cb1ae9255c0980L,0x4bd863812b4a739fL,0x5a5c31e11e4a45a1L,
|
|
0x1e5d55fe9cb0db2fL },
|
|
{ 0x74661b068ff5cc29L,0x026b389f0eb8a4f4L,0x536b21a458848c24L,
|
|
0x2e5bf8ec81dc72b0L } },
|
|
/* 24 << 168 */
|
|
{ { 0x03c187d0ad886aacL,0x5c16878ab771b645L,0xb07dfc6fc74045abL,
|
|
0x2c6360bf7800caedL },
|
|
{ 0x24295bb5b9c972a3L,0xc9e6f88e7c9a6dbaL,0x90ffbf2492a79aa6L,
|
|
0xde29d50a41c26ac2L } },
|
|
/* 25 << 168 */
|
|
{ { 0x9f0af483d309cbe6L,0x5b020d8ae0bced4fL,0x606e986db38023e3L,
|
|
0xad8f2c9d1abc6933L },
|
|
{ 0x19292e1de7400e93L,0xfe3e18a952be5e4dL,0xe8e9771d2e0680bfL,
|
|
0x8c5bec98c54db063L } },
|
|
/* 26 << 168 */
|
|
{ { 0x2af9662a74a55d1fL,0xe3fbf28f046f66d8L,0xa3a72ab4d4dc4794L,
|
|
0x09779f455c7c2dd8L },
|
|
{ 0xd893bdafc3d19d8dL,0xd5a7509457d6a6dfL,0x8cf8fef9952e6255L,
|
|
0x3da67cfbda9a8affL } },
|
|
/* 27 << 168 */
|
|
{ { 0x4c23f62a2c160dcdL,0x34e6c5e38f90eaefL,0x35865519a9a65d5aL,
|
|
0x07c48aae8fd38a3dL },
|
|
{ 0xb7e7aeda50068527L,0x2c09ef231c90936aL,0x31ecfeb6e879324cL,
|
|
0xa0871f6bfb0ec938L } },
|
|
/* 28 << 168 */
|
|
{ { 0xb1f0fb68d84d835dL,0xc90caf39861dc1e6L,0x12e5b0467594f8d7L,
|
|
0x26897ae265012b92L },
|
|
{ 0xbcf68a08a4d6755dL,0x403ee41c0991fbdaL,0x733e343e3bbf17e8L,
|
|
0xd2c7980d679b3d65L } },
|
|
/* 29 << 168 */
|
|
{ { 0x33056232d2e11305L,0x966be492f3c07a6fL,0x6a8878ffbb15509dL,
|
|
0xff2211010a9b59a4L },
|
|
{ 0x6c9f564aabe30129L,0xc6f2c940336e64cfL,0x0fe752628b0c8022L,
|
|
0xbe0267e96ae8db87L } },
|
|
/* 30 << 168 */
|
|
{ { 0x22e192f193bc042bL,0xf085b534b237c458L,0xa0d192bd832c4168L,
|
|
0x7a76e9e3bdf6271dL },
|
|
{ 0x52a882fab88911b5L,0xc85345e4b4db0eb5L,0xa3be02a681a7c3ffL,
|
|
0x51889c8cf0ec0469L } },
|
|
/* 31 << 168 */
|
|
{ { 0x9d031369a5e829e5L,0xcbb4c6fc1607aa41L,0x75ac59a6241d84c1L,
|
|
0xc043f2bf8829e0eeL },
|
|
{ 0x82a38f758ea5e185L,0x8bda40b9d87cbd9fL,0x9e65e75e2d8fc601L,
|
|
0x3d515f74a35690b3L } },
|
|
/* 32 << 168 */
|
|
{ { 0x534acf4fda79e5acL,0x68b83b3a8630215fL,0x5c748b2ed085756eL,
|
|
0xb0317258e5d37cb2L },
|
|
{ 0x6735841ac5ccc2c4L,0x7d7dc96b3d9d5069L,0xa147e410fd1754bdL,
|
|
0x65296e94d399ddd5L } },
|
|
/* 33 << 168 */
|
|
{ { 0xf6b5b2d0bc8fa5bcL,0x8a5ead67500c277bL,0x214625e6dfa08a5dL,
|
|
0x51fdfedc959cf047L },
|
|
{ 0x6bc9430b289fca32L,0xe36ff0cf9d9bdc3fL,0x2fe187cb58ea0edeL,
|
|
0xed66af205a900b3fL } },
|
|
/* 34 << 168 */
|
|
{ { 0x00e0968b5fa9f4d6L,0x2d4066ce37a362e7L,0xa99a9748bd07e772L,
|
|
0x710989c006a4f1d0L },
|
|
{ 0xd5dedf35ce40cbd8L,0xab55c5f01743293dL,0x766f11448aa24e2cL,
|
|
0x94d874f8605fbcb4L } },
|
|
/* 35 << 168 */
|
|
{ { 0xa365f0e8a518001bL,0xee605eb69d04ef0fL,0x5a3915cdba8d4d25L,
|
|
0x44c0e1b8b5113472L },
|
|
{ 0xcbb024e88b6740dcL,0x89087a53ee1d4f0cL,0xa88fa05c1fc4e372L,
|
|
0x8bf395cbaf8b3af2L } },
|
|
/* 36 << 168 */
|
|
{ { 0x1e71c9a1deb8568bL,0xa35daea080fb3d32L,0xe8b6f2662cf8fb81L,
|
|
0x6d51afe89490696aL },
|
|
{ 0x81beac6e51803a19L,0xe3d24b7f86219080L,0x727cfd9ddf6f463cL,
|
|
0x8c6865ca72284ee8L } },
|
|
/* 37 << 168 */
|
|
{ { 0x32c88b7db743f4efL,0x3793909be7d11dceL,0xd398f9222ff2ebe8L,
|
|
0x2c70ca44e5e49796L },
|
|
{ 0xdf4d9929cb1131b1L,0x7826f29825888e79L,0x4d3a112cf1d8740aL,
|
|
0x00384cb6270afa8bL } },
|
|
/* 38 << 168 */
|
|
{ { 0xcb64125b3ab48095L,0x3451c25662d05106L,0xd73d577da4955845L,
|
|
0x39570c16bf9f4433L },
|
|
{ 0xd7dfaad3adecf263L,0xf1c3d8d1dc76e102L,0x5e774a5854c6a836L,
|
|
0xdad4b6723e92d47bL } },
|
|
/* 39 << 168 */
|
|
{ { 0xbe7e990ff0d796a0L,0x5fc62478df0e8b02L,0x8aae8bf4030c00adL,
|
|
0x3d2db93b9004ba0fL },
|
|
{ 0xe48c8a79d85d5ddcL,0xe907caa76bb07f34L,0x58db343aa39eaed5L,
|
|
0x0ea6e007adaf5724L } },
|
|
/* 40 << 168 */
|
|
{ { 0xe00df169d23233f3L,0x3e32279677cb637fL,0x1f897c0e1da0cf6cL,
|
|
0xa651f5d831d6bbddL },
|
|
{ 0xdd61af191a230c76L,0xbd527272cdaa5e4aL,0xca753636d0abcd7eL,
|
|
0x78bdd37c370bd8dcL } },
|
|
/* 41 << 168 */
|
|
{ { 0xc23916c217cd93feL,0x65b97a4ddadce6e2L,0xe04ed4eb174e42f8L,
|
|
0x1491ccaabb21480aL },
|
|
{ 0x145a828023196332L,0x3c3862d7587b479aL,0x9f4a88a301dcd0edL,
|
|
0x4da2b7ef3ea12f1fL } },
|
|
/* 42 << 168 */
|
|
{ { 0xf8e7ae33b126e48eL,0x404a0b32f494e237L,0x9beac474c55acadbL,
|
|
0x4ee5cf3bcbec9fd9L },
|
|
{ 0x336b33b97df3c8c3L,0xbd905fe3b76808fdL,0x8f436981aa45c16aL,
|
|
0x255c5bfa3dd27b62L } },
|
|
/* 43 << 168 */
|
|
{ { 0x71965cbfc3dd9b4dL,0xce23edbffc068a87L,0xb78d4725745b029bL,
|
|
0x74610713cefdd9bdL },
|
|
{ 0x7116f75f1266bf52L,0x0204672218e49bb6L,0xdf43df9f3d6f19e3L,
|
|
0xef1bc7d0e685cb2fL } },
|
|
/* 44 << 168 */
|
|
{ { 0xcddb27c17078c432L,0xe1961b9cb77fedb7L,0x1edc2f5cc2290570L,
|
|
0x2c3fefca19cbd886L },
|
|
{ 0xcf880a36c2af389aL,0x96c610fdbda71ceaL,0xf03977a932aa8463L,
|
|
0x8eb7763f8586d90aL } },
|
|
/* 45 << 168 */
|
|
{ { 0x3f3424542a296e77L,0xc871868342837a35L,0x7dc710906a09c731L,
|
|
0x54778ffb51b816dbL },
|
|
{ 0x6b33bfecaf06defdL,0xfe3c105f8592b70bL,0xf937fda461da6114L,
|
|
0x3c13e6514c266ad7L } },
|
|
/* 46 << 168 */
|
|
{ { 0xe363a829855938e8L,0x2eeb5d9e9de54b72L,0xbeb93b0e20ccfab9L,
|
|
0x3dffbb5f25e61a25L },
|
|
{ 0x7f655e431acc093dL,0x0cb6cc3d3964ce61L,0x6ab283a1e5e9b460L,
|
|
0x55d787c5a1c7e72dL } },
|
|
/* 47 << 168 */
|
|
{ { 0x4d2efd47deadbf02L,0x11e80219ac459068L,0x810c762671f311f0L,
|
|
0xfa17ef8d4ab6ef53L },
|
|
{ 0xaf47fd2593e43bffL,0x5cb5ff3f0be40632L,0x546871068ee61da3L,
|
|
0x7764196eb08afd0fL } },
|
|
/* 48 << 168 */
|
|
{ { 0x831ab3edf0290a8fL,0xcae81966cb47c387L,0xaad7dece184efb4fL,
|
|
0xdcfc53b34749110eL },
|
|
{ 0x6698f23c4cb632f9L,0xc42a1ad6b91f8067L,0xb116a81d6284180aL,
|
|
0xebedf5f8e901326fL } },
|
|
/* 49 << 168 */
|
|
{ { 0xf2274c9f97e3e044L,0x4201852011d09fc9L,0x56a65f17d18e6e23L,
|
|
0x2ea61e2a352b683cL },
|
|
{ 0x27d291bc575eaa94L,0x9e7bc721b8ff522dL,0x5f7268bfa7f04d6fL,
|
|
0x5868c73faba41748L } },
|
|
/* 50 << 168 */
|
|
{ { 0x9f85c2db7be0eeadL,0x511e7842ff719135L,0x5a06b1e9c5ea90d7L,
|
|
0x0c19e28326fab631L },
|
|
{ 0x8af8f0cfe9206c55L,0x89389cb43553c06aL,0x39dbed97f65f8004L,
|
|
0x0621b037c508991dL } },
|
|
/* 51 << 168 */
|
|
{ { 0x1c52e63596e78cc4L,0x5385c8b20c06b4a8L,0xd84ddfdbb0e87d03L,
|
|
0xc49dfb66934bafadL },
|
|
{ 0x7071e17059f70772L,0x3a073a843a1db56bL,0x034949033b8af190L,
|
|
0x7d882de3d32920f0L } },
|
|
/* 52 << 168 */
|
|
{ { 0x91633f0ab2cf8940L,0x72b0b1786f948f51L,0x2d28dc30782653c8L,
|
|
0x88829849db903a05L },
|
|
{ 0xb8095d0c6a19d2bbL,0x4b9e7f0c86f782cbL,0x7af739882d907064L,
|
|
0xd12be0fe8b32643cL } },
|
|
/* 53 << 168 */
|
|
{ { 0x358ed23d0e165dc3L,0x3d47ce624e2378ceL,0x7e2bb0b9feb8a087L,
|
|
0x3246e8aee29e10b9L },
|
|
{ 0x459f4ec703ce2b4dL,0xe9b4ca1bbbc077cfL,0x2613b4f20e9940c1L,
|
|
0xfc598bb9047d1eb1L } },
|
|
/* 54 << 168 */
|
|
{ { 0x9744c62b45036099L,0xa9dee742167c65d8L,0x0c511525dabe1943L,
|
|
0xda11055493c6c624L },
|
|
{ 0xae00a52c651a3be2L,0xcda5111d884449a6L,0x063c06f4ff33bed1L,
|
|
0x73baaf9a0d3d76b4L } },
|
|
/* 55 << 168 */
|
|
{ { 0x52fb0c9d7fc63668L,0x6886c9dd0c039cdeL,0x602bd59955b22351L,
|
|
0xb00cab02360c7c13L },
|
|
{ 0x8cb616bc81b69442L,0x41486700b55c3ceeL,0x71093281f49ba278L,
|
|
0xad956d9c64a50710L } },
|
|
/* 56 << 168 */
|
|
{ { 0x9561f28b638a7e81L,0x54155cdf5980ddc3L,0xb2db4a96d26f247aL,
|
|
0x9d774e4e4787d100L },
|
|
{ 0x1a9e6e2e078637d2L,0x1c363e2d5e0ae06aL,0x7493483ee9cfa354L,
|
|
0x76843cb37f74b98dL } },
|
|
/* 57 << 168 */
|
|
{ { 0xbaca6591d4b66947L,0xb452ce9804460a8cL,0x6830d24643768f55L,
|
|
0xf4197ed87dff12dfL },
|
|
{ 0x6521b472400dd0f7L,0x59f5ca8f4b1e7093L,0x6feff11b080338aeL,
|
|
0x0ada31f6a29ca3c6L } },
|
|
/* 58 << 168 */
|
|
{ { 0x24794eb694a2c215L,0xd83a43ab05a57ab4L,0x264a543a2a6f89feL,
|
|
0x2c2a3868dd5ec7c2L },
|
|
{ 0xd33739408439d9b2L,0x715ea6720acd1f11L,0x42c1d235e7e6cc19L,
|
|
0x81ce6e96b990585cL } },
|
|
/* 59 << 168 */
|
|
{ { 0x04e5dfe0d809c7bdL,0xd7b2580c8f1050abL,0x6d91ad78d8a4176fL,
|
|
0x0af556ee4e2e897cL },
|
|
{ 0x162a8b73921de0acL,0x52ac9c227ea78400L,0xee2a4eeaefce2174L,
|
|
0xbe61844e6d637f79L } },
|
|
/* 60 << 168 */
|
|
{ { 0x0491f1bc789a283bL,0x72d3ac3d880836f4L,0xaa1c5ea388e5402dL,
|
|
0x1b192421d5cc473dL },
|
|
{ 0x5c0b99989dc84cacL,0xb0a8482d9c6e75b8L,0x639961d03a191ce2L,
|
|
0xda3bc8656d837930L } },
|
|
/* 61 << 168 */
|
|
{ { 0xca990653056e6f8fL,0x84861c4164d133a7L,0x8b403276746abe40L,
|
|
0xb7b4d51aebf8e303L },
|
|
{ 0x05b43211220a255dL,0xc997152c02419e6eL,0x76ff47b6630c2feaL,
|
|
0x50518677281fdadeL } },
|
|
/* 62 << 168 */
|
|
{ { 0x3283b8bacf902b0bL,0x8d4b4eb537db303bL,0xcc89f42d755011bcL,
|
|
0xb43d74bbdd09d19bL },
|
|
{ 0x65746bc98adba350L,0x364eaf8cb51c1927L,0x13c7659610ad72ecL,
|
|
0x30045121f8d40c20L } },
|
|
/* 63 << 168 */
|
|
{ { 0x6d2d99b7ea7b979bL,0xcd78cd74e6fb3bcdL,0x11e45a9e86cffbfeL,
|
|
0x78a61cf4637024f6L },
|
|
{ 0xd06bc8723d502295L,0xf1376854458cb288L,0xb9db26a1342f8586L,
|
|
0xf33effcf4beee09eL } },
|
|
/* 64 << 168 */
|
|
{ { 0xd7e0c4cdb30cfb3aL,0x6d09b8c16c9db4c8L,0x40ba1a4207c8d9dfL,
|
|
0x6fd495f71c52c66dL },
|
|
{ 0xfb0e169f275264daL,0x80c2b746e57d8362L,0xedd987f749ad7222L,
|
|
0xfdc229af4398ec7bL } },
|
|
/* 0 << 175 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 175 */
|
|
{ { 0xb0d1ed8452666a58L,0x4bcb6e00e6a9c3c2L,0x3c57411c26906408L,
|
|
0xcfc2075513556400L },
|
|
{ 0xa08b1c505294dba3L,0xa30ba2868b7dd31eL,0xd70ba90e991eca74L,
|
|
0x094e142ce762c2b9L } },
|
|
/* 2 << 175 */
|
|
{ { 0xb81d783e979f3925L,0x1efd130aaf4c89a7L,0x525c2144fd1bf7faL,
|
|
0x4b2969041b265a9eL },
|
|
{ 0xed8e9634b9db65b6L,0x35c82e3203599d8aL,0xdaa7a54f403563f3L,
|
|
0x9df088ad022c38abL } },
|
|
/* 3 << 175 */
|
|
{ { 0xe5cfb066bb3fd30aL,0x429169daeff0354eL,0x809cf8523524e36cL,
|
|
0x136f4fb30155be1dL },
|
|
{ 0x4826af011fbba712L,0x6ef0f0b4506ba1a1L,0xd9928b3177aea73eL,
|
|
0xe2bf6af25eaa244eL } },
|
|
/* 4 << 175 */
|
|
{ { 0x8d084f124237b64bL,0x688ebe99e3ecfd07L,0x57b8a70cf6845dd8L,
|
|
0x808fc59c5da4a325L },
|
|
{ 0xa9032b2ba3585862L,0xb66825d5edf29386L,0xb5a5a8db431ec29bL,
|
|
0xbb143a983a1e8dc8L } },
|
|
/* 5 << 175 */
|
|
{ { 0x35ee94ce12ae381bL,0x3a7f176c86ccda90L,0xc63a657e4606eacaL,
|
|
0x9ae5a38043cd04dfL },
|
|
{ 0x9bec8d15ed251b46L,0x1f5d6d30caca5e64L,0x347b3b359ff20f07L,
|
|
0x4d65f034f7e4b286L } },
|
|
/* 6 << 175 */
|
|
{ { 0x9e93ba24f111661eL,0xedced484b105eb04L,0x96dc9ba1f424b578L,
|
|
0xbf8f66b7e83e9069L },
|
|
{ 0x872d4df4d7ed8216L,0xbf07f3778e2cbecfL,0x4281d89998e73754L,
|
|
0xfec85fbb8aab8708L } },
|
|
/* 7 << 175 */
|
|
{ { 0x9a3c0deea5ba5b0bL,0xe6a116ce42d05299L,0xae9775fee9b02d42L,
|
|
0x72b05200a1545cb6L },
|
|
{ 0xbc506f7d31a3b4eaL,0xe58930788bbd9b32L,0xc8bc5f37e4b12a97L,
|
|
0x6b000c064a73b671L } },
|
|
/* 8 << 175 */
|
|
{ { 0x13b5bf22765fa7d0L,0x59805bf01d6a5370L,0x67a5e29d4280db98L,
|
|
0x4f53916f776b1ce3L },
|
|
{ 0x714ff61f33ddf626L,0x4206238ea085d103L,0x1c50d4b7e5809ee3L,
|
|
0x999f450d85f8eb1dL } },
|
|
/* 9 << 175 */
|
|
{ { 0x658a6051e4c79e9bL,0x1394cb73c66a9feaL,0x27f31ed5c6be7b23L,
|
|
0xf4c88f365aa6f8feL },
|
|
{ 0x0fb0721f4aaa499eL,0x68b3a7d5e3fb2a6bL,0xa788097d3a92851dL,
|
|
0x060e7f8ae96f4913L } },
|
|
/* 10 << 175 */
|
|
{ { 0x82eebe731a3a93bcL,0x42bbf465a21adc1aL,0xc10b6fa4ef030efdL,
|
|
0x247aa4c787b097bbL },
|
|
{ 0x8b8dc632f60c77daL,0x6ffbc26ac223523eL,0xa4f6ff11344579cfL,
|
|
0x5825653c980250f6L } },
|
|
/* 11 << 175 */
|
|
{ { 0xb2dd097ebc1aa2b9L,0x0788939337a0333aL,0x1cf55e7137a0db38L,
|
|
0x2648487f792c1613L },
|
|
{ 0xdad013363fcef261L,0x6239c81d0eabf129L,0x8ee761de9d276be2L,
|
|
0x406a7a341eda6ad3L } },
|
|
/* 12 << 175 */
|
|
{ { 0x4bf367ba4a493b31L,0x54f20a529bf7f026L,0xb696e0629795914bL,
|
|
0xcddab96d8bf236acL },
|
|
{ 0x4ff2c70aed25ea13L,0xfa1d09eb81cbbbe7L,0x88fc8c87468544c5L,
|
|
0x847a670d696b3317L } },
|
|
/* 13 << 175 */
|
|
{ { 0xf133421e64bcb626L,0xaea638c826dee0b5L,0xd6e7680bb310346cL,
|
|
0xe06f4097d5d4ced3L },
|
|
{ 0x099614527512a30bL,0xf3d867fde589a59aL,0x2e73254f52d0c180L,
|
|
0x9063d8a3333c74acL } },
|
|
/* 14 << 175 */
|
|
{ { 0xeda6c595d314e7bcL,0x2ee7464b467899edL,0x1cef423c0a1ed5d3L,
|
|
0x217e76ea69cc7613L },
|
|
{ 0x27ccce1fe7cda917L,0x12d8016b8a893f16L,0xbcd6de849fc74f6bL,
|
|
0xfa5817e2f3144e61L } },
|
|
/* 15 << 175 */
|
|
{ { 0x1f3541640821ee4cL,0x1583eab40bc61992L,0x7490caf61d72879fL,
|
|
0x998ad9f3f76ae7b2L },
|
|
{ 0x1e181950a41157f7L,0xa9d7e1e6e8da3a7eL,0x963784eb8426b95fL,
|
|
0x0ee4ed6e542e2a10L } },
|
|
/* 16 << 175 */
|
|
{ { 0xb79d4cc5ac751e7bL,0x93f96472fd4211bdL,0x8c72d3d2c8de4fc6L,
|
|
0x7b69cbf5df44f064L },
|
|
{ 0x3da90ca2f4bf94e1L,0x1a5325f8f12894e2L,0x0a437f6c7917d60bL,
|
|
0x9be7048696c9cb5dL } },
|
|
/* 17 << 175 */
|
|
{ { 0xb4d880bfe1dc5c05L,0xd738addaeebeeb57L,0x6f0119d3df0fe6a3L,
|
|
0x5c686e5566eaaf5aL },
|
|
{ 0x9cb10b50dfd0b7ecL,0xbdd0264b6a497c21L,0xfc0935148c546c96L,
|
|
0x58a947fa79dbf42aL } },
|
|
/* 18 << 175 */
|
|
{ { 0xc0b48d4e49ccd6d7L,0xff8fb02c88bd5580L,0xc75235e907d473b2L,
|
|
0x4fab1ac5a2188af3L },
|
|
{ 0x030fa3bc97576ec0L,0xe8c946e80b7e7d2fL,0x40a5c9cc70305600L,
|
|
0x6d8260a9c8b013b4L } },
|
|
/* 19 << 175 */
|
|
{ { 0x0368304f70bba85cL,0xad090da1a4a0d311L,0x7170e8702415eec1L,
|
|
0xbfba35fe8461ea47L },
|
|
{ 0x6279019ac1e91938L,0xa47638f31afc415fL,0x36c65cbbbcba0e0fL,
|
|
0x02160efb034e2c48L } },
|
|
/* 20 << 175 */
|
|
{ { 0xe6c51073615cd9e4L,0x498ec047f1243c06L,0x3e5a8809b17b3d8cL,
|
|
0x5cd99e610cc565f1L },
|
|
{ 0x81e312df7851dafeL,0xf156f5baa79061e2L,0x80d62b71880c590eL,
|
|
0xbec9746f0a39faa1L } },
|
|
/* 21 << 175 */
|
|
{ { 0x1d98a9c1c8ed1f7aL,0x09e43bb5a81d5ff2L,0xd5f00f680da0794aL,
|
|
0x412050d9661aa836L },
|
|
{ 0xa89f7c4e90747e40L,0x6dc05ebbb62a3686L,0xdf4de847308e3353L,
|
|
0x53868fbb9fb53bb9L } },
|
|
/* 22 << 175 */
|
|
{ { 0x2b09d2c3cfdcf7ddL,0x41a9fce3723fcab4L,0x73d905f707f57ca3L,
|
|
0x080f9fb1ac8e1555L },
|
|
{ 0x7c088e849ba7a531L,0x07d35586ed9a147fL,0x602846abaf48c336L,
|
|
0x7320fd320ccf0e79L } },
|
|
/* 23 << 175 */
|
|
{ { 0xaa780798b18bd1ffL,0x52c2e300afdd2905L,0xf27ea3d6434267cdL,
|
|
0x8b96d16d15605b5fL },
|
|
{ 0x7bb310494b45706bL,0xe7f58b8e743d25f8L,0xe9b5e45b87f30076L,
|
|
0xd19448d65d053d5aL } },
|
|
/* 24 << 175 */
|
|
{ { 0x1ecc8cb9d3210a04L,0x6bc7d463dafb5269L,0x3e59b10a67c3489fL,
|
|
0x1769788c65641e1bL },
|
|
{ 0x8a53b82dbd6cb838L,0x7066d6e6236d5f22L,0x03aa1c616908536eL,
|
|
0xc971da0d66ae9809L } },
|
|
/* 25 << 175 */
|
|
{ { 0x01b3a86bc49a2facL,0x3b8420c03092e77aL,0x020573007d6fb556L,
|
|
0x6941b2a1bff40a87L },
|
|
{ 0x140b63080658ff2aL,0x878043633424ab36L,0x0253bd515751e299L,
|
|
0xc75bcd76449c3e3aL } },
|
|
/* 26 << 175 */
|
|
{ { 0x92eb40907f8f875dL,0x9c9d754e56c26bbfL,0x158cea618110bbe7L,
|
|
0x62a6b802745f91eaL },
|
|
{ 0xa79c41aac6e7394bL,0x445b6a83ad57ef10L,0x0c5277eb6ea6f40cL,
|
|
0x319fe96b88633365L } },
|
|
/* 27 << 175 */
|
|
{ { 0x0b0fc61f385f63cbL,0x41250c8422bdd127L,0x67d153f109e942c2L,
|
|
0x60920d08c021ad5dL },
|
|
{ 0x229f5746724d81a5L,0xb7ffb8925bba3299L,0x518c51a1de413032L,
|
|
0x2a9bfe773c2fd94cL } },
|
|
/* 28 << 175 */
|
|
{ { 0xcbcde2393191f4fdL,0x43093e16d3d6ada1L,0x184579f358769606L,
|
|
0x2c94a8b3d236625cL },
|
|
{ 0x6922b9c05c437d8eL,0x3d4ae423d8d9f3c8L,0xf72c31c12e7090a2L,
|
|
0x4ac3f5f3d76a55bdL } },
|
|
/* 29 << 175 */
|
|
{ { 0x342508fc6b6af991L,0x0d5271001b5cebbdL,0xb84740d0dd440dd7L,
|
|
0x748ef841780162fdL },
|
|
{ 0xa8dbfe0edfc6fafbL,0xeadfdf05f7300f27L,0x7d06555ffeba4ec9L,
|
|
0x12c56f839e25fa97L } },
|
|
/* 30 << 175 */
|
|
{ { 0x77f84203d39b8c34L,0xed8b1be63125eddbL,0x5bbf2441f6e39dc5L,
|
|
0xb00f6ee66a5d678aL },
|
|
{ 0xba456ecf57d0ea99L,0xdcae0f5817e06c43L,0x01643de40f5b4baaL,
|
|
0x2c324341d161b9beL } },
|
|
/* 31 << 175 */
|
|
{ { 0x80177f55e126d468L,0xed325f1f76748e09L,0x6116004acfa9bdc2L,
|
|
0x2d8607e63a9fb468L },
|
|
{ 0x0e573e276009d660L,0x3a525d2e8d10c5a1L,0xd26cb45c3b9009a0L,
|
|
0xb6b0cdc0de9d7448L } },
|
|
/* 32 << 175 */
|
|
{ { 0x949c9976e1337c26L,0x6faadebdd73d68e5L,0x9e158614f1b768d9L,
|
|
0x22dfa5579cc4f069L },
|
|
{ 0xccd6da17be93c6d6L,0x24866c61a504f5b9L,0x2121353c8d694da1L,
|
|
0x1c6ca5800140b8c6L } },
|
|
/* 33 << 175 */
|
|
{ { 0xc245ad8ce964021eL,0xb83bffba032b82b3L,0xfaa220c647ef9898L,
|
|
0x7e8d3ac6982c948aL },
|
|
{ 0x1faa2091bc2d124aL,0xbd54c3dd05b15ff4L,0x386bf3abc87c6fb7L,
|
|
0xfb2b0563fdeb6f66L } },
|
|
/* 34 << 175 */
|
|
{ { 0x4e77c5575b45afb4L,0xe9ded649efb8912dL,0x7ec9bbf542f6e557L,
|
|
0x2570dfff62671f00L },
|
|
{ 0x2b3bfb7888e084bdL,0xa024b238f37fe5b4L,0x44e7dc0495649aeeL,
|
|
0x498ca2555e7ec1d8L } },
|
|
/* 35 << 175 */
|
|
{ { 0x3bc766eaaaa07e86L,0x0db6facbf3608586L,0xbadd2549bdc259c8L,
|
|
0x95af3c6e041c649fL },
|
|
{ 0xb36a928c02e30afbL,0x9b5356ad008a88b8L,0x4b67a5f1cf1d9e9dL,
|
|
0xc6542e47a5d8d8ceL } },
|
|
/* 36 << 175 */
|
|
{ { 0x73061fe87adfb6ccL,0xcc826fd398678141L,0x00e758b13c80515aL,
|
|
0x6afe324741485083L },
|
|
{ 0x0fcb08b9b6ae8a75L,0xb8cf388d4acf51e1L,0x344a55606961b9d6L,
|
|
0x1a6778b86a97fd0cL } },
|
|
/* 37 << 175 */
|
|
{ { 0xd840fdc1ecc4c7e3L,0xde9fe47d16db68ccL,0xe95f89dea3e216aaL,
|
|
0x84f1a6a49594a8beL },
|
|
{ 0x7ddc7d725a7b162bL,0xc5cfda19adc817a3L,0x80a5d35078b58d46L,
|
|
0x93365b1382978f19L } },
|
|
/* 38 << 175 */
|
|
{ { 0x2e44d22526a1fc90L,0x0d6d10d24d70705dL,0xd94b6b10d70c45f4L,
|
|
0x0f201022b216c079L },
|
|
{ 0xcec966c5658fde41L,0xa8d2bc7d7e27601dL,0xbfcce3e1ff230be7L,
|
|
0x3394ff6b0033ffb5L } },
|
|
/* 39 << 175 */
|
|
{ { 0xd890c5098132c9afL,0xaac4b0eb361e7868L,0x5194ded3e82d15aaL,
|
|
0x4550bd2e23ae6b7dL },
|
|
{ 0x3fda318eea5399d4L,0xd989bffa91638b80L,0x5ea124d0a14aa12dL,
|
|
0x1fb1b8993667b944L } },
|
|
/* 40 << 175 */
|
|
{ { 0x95ec796944c44d6aL,0x91df144a57e86137L,0x915fd62073adac44L,
|
|
0x8f01732d59a83801L },
|
|
{ 0xec579d253aa0a633L,0x06de5e7cc9d6d59cL,0xc132f958b1ef8010L,
|
|
0x29476f96e65c1a02L } },
|
|
/* 41 << 175 */
|
|
{ { 0x336a77c0d34c3565L,0xef1105b21b9f1e9eL,0x63e6d08bf9e08002L,
|
|
0x9aff2f21c613809eL },
|
|
{ 0xb5754f853a80e75dL,0xde71853e6bbda681L,0x86f041df8197fd7aL,
|
|
0x8b332e08127817faL } },
|
|
/* 42 << 175 */
|
|
{ { 0x05d99be8b9c20cdaL,0x89f7aad5d5cd0c98L,0x7ef936fe5bb94183L,
|
|
0x92ca0753b05cd7f2L },
|
|
{ 0x9d65db1174a1e035L,0x02628cc813eaea92L,0xf2d9e24249e4fbf2L,
|
|
0x94fdfd9be384f8b7L } },
|
|
/* 43 << 175 */
|
|
{ { 0x65f5605463428c6bL,0x2f7205b290b409a5L,0xf778bb78ff45ae11L,
|
|
0xa13045bec5ee53b2L },
|
|
{ 0xe00a14ff03ef77feL,0x689cd59fffef8befL,0x3578f0ed1e9ade22L,
|
|
0xe99f3ec06268b6a8L } },
|
|
/* 44 << 175 */
|
|
{ { 0xa2057d91ea1b3c3eL,0x2d1a7053b8823a4aL,0xabbb336a2cca451eL,
|
|
0xcd2466e32218bb5dL },
|
|
{ 0x3ac1f42fc8cb762dL,0x7e312aae7690211fL,0xebb9bd7345d07450L,
|
|
0x207c4b8246c2213fL } },
|
|
/* 45 << 175 */
|
|
{ { 0x99d425c1375913ecL,0x94e45e9667908220L,0xc08f3087cd67dbf6L,
|
|
0xa5670fbec0887056L },
|
|
{ 0x6717b64a66f5b8fcL,0xd5a56aea786fec28L,0xa8c3f55fc0ff4952L,
|
|
0xa77fefae457ac49bL } },
|
|
/* 46 << 175 */
|
|
{ { 0x29882d7c98379d44L,0xd000bdfb509edc8aL,0xc6f95979e66fe464L,
|
|
0x504a6115fa61bde0L },
|
|
{ 0x56b3b871effea31aL,0x2d3de26df0c21a54L,0x21dbff31834753bfL,
|
|
0xe67ecf4969269d86L } },
|
|
/* 47 << 175 */
|
|
{ { 0x7a176952151fe690L,0x035158047f2adb5fL,0xee794b15d1b62a8dL,
|
|
0xf004ceecaae454e6L },
|
|
{ 0x0897ea7cf0386facL,0x3b62ff12d1fca751L,0x154181df1b7a04ecL,
|
|
0x2008e04afb5847ecL } },
|
|
/* 48 << 175 */
|
|
{ { 0xd147148e41dbd772L,0x2b419f7322942654L,0x669f30d3e9c544f7L,
|
|
0x52a2c223c8540149L },
|
|
{ 0x5da9ee14634dfb02L,0x5f074ff0f47869f3L,0x74ee878da3933accL,
|
|
0xe65106514fe35ed1L } },
|
|
/* 49 << 175 */
|
|
{ { 0xb3eb9482f1012e7aL,0x51013cc0a8a566aeL,0xdd5e924347c00d3bL,
|
|
0x7fde089d946bb0e5L },
|
|
{ 0x030754fec731b4b3L,0x12a136a499fda062L,0x7c1064b85a1a35bcL,
|
|
0xbf1f5763446c84efL } },
|
|
/* 50 << 175 */
|
|
{ { 0xed29a56da16d4b34L,0x7fba9d09dca21c4fL,0x66d7ac006d8de486L,
|
|
0x6006198773a2a5e1L },
|
|
{ 0x8b400f869da28ff0L,0x3133f70843c4599cL,0x9911c9b8ee28cb0dL,
|
|
0xcd7e28748e0af61dL } },
|
|
/* 51 << 175 */
|
|
{ { 0x5a85f0f272ed91fcL,0x85214f319cd4a373L,0x881fe5be1925253cL,
|
|
0xd8dc98e091e8bc76L },
|
|
{ 0x7120affe585cc3a2L,0x724952ed735bf97aL,0x5581e7dc3eb34581L,
|
|
0x5cbff4f2e52ee57dL } },
|
|
/* 52 << 175 */
|
|
{ { 0x8d320a0e87d8cc7bL,0x9beaa7f3f1d280d0L,0x7a0b95719beec704L,
|
|
0x9126332e5b7f0057L },
|
|
{ 0x01fbc1b48ed3bd6dL,0x35bb2c12d945eb24L,0x6404694e9a8ae255L,
|
|
0xb6092eec8d6abfb3L } },
|
|
/* 53 << 175 */
|
|
{ { 0x4d76143fcc058865L,0x7b0a5af26e249922L,0x8aef94406a50d353L,
|
|
0xe11e4bcc64f0e07aL },
|
|
{ 0x4472993aa14a90faL,0x7706e20cba0c51d4L,0xf403292f1532672dL,
|
|
0x52573bfa21829382L } },
|
|
/* 54 << 175 */
|
|
{ { 0x6a7bb6a93b5bdb83L,0x08da65c0a4a72318L,0xc58d22aa63eb065fL,
|
|
0x1717596c1b15d685L },
|
|
{ 0x112df0d0b266d88bL,0xf688ae975941945aL,0x487386e37c292cacL,
|
|
0x42f3b50d57d6985cL } },
|
|
/* 55 << 175 */
|
|
{ { 0x6da4f9986a90fc34L,0xc8f257d365ca8a8dL,0xc2feabca6951f762L,
|
|
0xe1bc81d074c323acL },
|
|
{ 0x1bc68f67251a2a12L,0x10d86587be8a70dcL,0xd648af7ff0f84d2eL,
|
|
0xf0aa9ebc6a43ac92L } },
|
|
/* 56 << 175 */
|
|
{ { 0x69e3be0427596893L,0xb6bb02a645bf452bL,0x0875c11af4c698c8L,
|
|
0x6652b5c7bece3794L },
|
|
{ 0x7b3755fd4f5c0499L,0x6ea16558b5532b38L,0xd1c69889a2e96ef7L,
|
|
0x9c773c3a61ed8f48L } },
|
|
/* 57 << 175 */
|
|
{ { 0x2b653a409b323abcL,0xe26605e1f0e1d791L,0x45d410644a87157aL,
|
|
0x8f9a78b7cbbce616L },
|
|
{ 0xcf1e44aac407edddL,0x81ddd1d8a35b964fL,0x473e339efd083999L,
|
|
0x6c94bdde8e796802L } },
|
|
/* 58 << 175 */
|
|
{ { 0x5a304ada8545d185L,0x82ae44ea738bb8cbL,0x628a35e3df87e10eL,
|
|
0xd3624f3da15b9fe3L },
|
|
{ 0xcc44209b14be4254L,0x7d0efcbcbdbc2ea5L,0x1f60336204c37bbeL,
|
|
0x21f363f556a5852cL } },
|
|
/* 59 << 175 */
|
|
{ { 0xa1503d1ca8501550L,0x2251e0e1d8ab10bbL,0xde129c966961c51cL,
|
|
0x1f7246a481910f68L },
|
|
{ 0x2eb744ee5f2591f2L,0x3c47d33f5e627157L,0x4d6d62c922f3bd68L,
|
|
0x6120a64bcb8df856L } },
|
|
/* 60 << 175 */
|
|
{ { 0x3a9ac6c07b5d07dfL,0xa92b95587ef39783L,0xe128a134ab3a9b4fL,
|
|
0x41c18807b1252f05L },
|
|
{ 0xfc7ed08980ba9b1cL,0xac8dc6dec532a9ddL,0xbf829cef55246809L,
|
|
0x101b784f5b4ee80fL } },
|
|
/* 61 << 175 */
|
|
{ { 0xc09945bbb6f11603L,0x57b09dbe41d2801eL,0xfba5202fa97534a8L,
|
|
0x7fd8ae5fc17b9614L },
|
|
{ 0xa50ba66678308435L,0x9572f77cd3868c4dL,0x0cef7bfd2dd7aab0L,
|
|
0xe7958e082c7c79ffL } },
|
|
/* 62 << 175 */
|
|
{ { 0x81262e4225346689L,0x716da290b07c7004L,0x35f911eab7950ee3L,
|
|
0x6fd72969261d21b5L },
|
|
{ 0x5238980308b640d3L,0x5b0026ee887f12a1L,0x20e21660742e9311L,
|
|
0x0ef6d5415ff77ff7L } },
|
|
/* 63 << 175 */
|
|
{ { 0x969127f0f9c41135L,0xf21d60c968a64993L,0x656e5d0ce541875cL,
|
|
0xf1e0f84ea1d3c233L },
|
|
{ 0x9bcca35906002d60L,0xbe2da60c06191552L,0x5da8bbae61181ec3L,
|
|
0x9f04b82365806f19L } },
|
|
/* 64 << 175 */
|
|
{ { 0xf1604a7dd4b79bb8L,0xaee806fb52c878c8L,0x34144f118d47b8e8L,
|
|
0x72edf52b949f9054L },
|
|
{ 0xebfca84e2127015aL,0x9051d0c09cb7cef3L,0x86e8fe58296deec8L,
|
|
0x33b2818841010d74L } },
|
|
/* 0 << 182 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 182 */
|
|
{ { 0x01079383171b445fL,0x9bcf21e38131ad4cL,0x8cdfe205c93987e8L,
|
|
0xe63f4152c92e8c8fL },
|
|
{ 0x729462a930add43dL,0x62ebb143c980f05aL,0x4f3954e53b06e968L,
|
|
0xfe1d75ad242cf6b1L } },
|
|
/* 2 << 182 */
|
|
{ { 0x5f95c6c7af8685c8L,0xd4c1c8ce2f8f01aaL,0xc44bbe322574692aL,
|
|
0xb8003478d4a4a068L },
|
|
{ 0x7c8fc6e52eca3cdbL,0xea1db16bec04d399L,0xb05bc82e8f2bc5cfL,
|
|
0x763d517ff44793d2L } },
|
|
/* 3 << 182 */
|
|
{ { 0x4451c1b808bd98d0L,0x644b1cd46575f240L,0x6907eb337375d270L,
|
|
0x56c8bebdfa2286bdL },
|
|
{ 0xc713d2acc4632b46L,0x17da427aafd60242L,0x313065b7c95c7546L,
|
|
0xf8239898bf17a3deL } },
|
|
/* 4 << 182 */
|
|
{ { 0xf3b7963f4c830320L,0x842c7aa0903203e3L,0xaf22ca0ae7327afbL,
|
|
0x38e13092967609b6L },
|
|
{ 0x73b8fb62757558f1L,0x3cc3e831f7eca8c1L,0xe4174474f6331627L,
|
|
0xa77989cac3c40234L } },
|
|
/* 5 << 182 */
|
|
{ { 0xe5fd17a144a081e0L,0xd797fb7db70e296aL,0x2b472b30481f719cL,
|
|
0x0e632a98fe6f8c52L },
|
|
{ 0x89ccd116c5f0c284L,0xf51088af2d987c62L,0x2a2bccda4c2de6cfL,
|
|
0x810f9efef679f0f9L } },
|
|
/* 6 << 182 */
|
|
{ { 0xb0f394b97ffe4b3eL,0x0b691d21e5fa5d21L,0xb0bd77479dfbbc75L,
|
|
0xd2830fdafaf78b00L },
|
|
{ 0xf78c249c52434f57L,0x4b1f754598096dabL,0x73bf6f948ff8c0b3L,
|
|
0x34aef03d454e134cL } },
|
|
/* 7 << 182 */
|
|
{ { 0xf8d151f4b7ac7ec5L,0xd6ceb95ae50da7d5L,0xa1b492b0dc3a0eb8L,
|
|
0x75157b69b3dd2863L },
|
|
{ 0xe2c4c74ec5413d62L,0xbe329ff7bc5fc4c7L,0x835a2aea60fa9ddaL,
|
|
0xf117f5ad7445cb87L } },
|
|
/* 8 << 182 */
|
|
{ { 0xae8317f4b0166f7aL,0xfbd3e3f7ceec74e6L,0xfdb516ace0874bfdL,
|
|
0x3d846019c681f3a3L },
|
|
{ 0x0b12ee5c7c1620b0L,0xba68b4dd2b63c501L,0xac03cd326668c51eL,
|
|
0x2a6279f74e0bcb5bL } },
|
|
/* 9 << 182 */
|
|
{ { 0x17bd69b06ae85c10L,0x729469791dfdd3a6L,0xd9a032682c078becL,
|
|
0x41c6a658bfd68a52L },
|
|
{ 0xcdea10240e023900L,0xbaeec121b10d144dL,0x5a600e74058ab8dcL,
|
|
0x1333af21bb89ccddL } },
|
|
/* 10 << 182 */
|
|
{ { 0xdf25eae03aaba1f1L,0x2cada16e3b7144cfL,0x657ee27d71ab98bcL,
|
|
0x99088b4c7a6fc96eL },
|
|
{ 0x05d5c0a03549dbd4L,0x42cbdf8ff158c3acL,0x3fb6b3b087edd685L,
|
|
0x22071cf686f064d0L } },
|
|
/* 11 << 182 */
|
|
{ { 0xd2d6721fff2811e5L,0xdb81b703fe7fae8cL,0x3cfb74efd3f1f7bbL,
|
|
0x0cdbcd7616cdeb5dL },
|
|
{ 0x4f39642a566a808cL,0x02b74454340064d6L,0xfabbadca0528fa6fL,
|
|
0xe4c3074cd3fc0bb6L } },
|
|
/* 12 << 182 */
|
|
{ { 0xb32cb8b0b796d219L,0xc3e95f4f34741dd9L,0x8721212568edf6f5L,
|
|
0x7a03aee4a2b9cb8eL },
|
|
{ 0x0cd3c376f53a89aaL,0x0d8af9b1948a28dcL,0xcf86a3f4902ab04fL,
|
|
0x8aacb62a7f42002dL } },
|
|
/* 13 << 182 */
|
|
{ { 0x106985ebf62ffd52L,0xe670b54e5797bf10L,0x4b405209c5e30aefL,
|
|
0x12c97a204365b5e9L },
|
|
{ 0x104646ce1fe32093L,0x13cb4ff63907a8c9L,0x8b9f30d1d46e726bL,
|
|
0xe1985e21aba0f499L } },
|
|
/* 14 << 182 */
|
|
{ { 0xc573dea910a230cdL,0x24f46a93cd30f947L,0xf2623fcfabe2010aL,
|
|
0x3f278cb273f00e4fL },
|
|
{ 0xed55c67d50b920ebL,0xf1cb9a2d8e760571L,0x7c50d1090895b709L,
|
|
0x4207cf07190d4369L } },
|
|
/* 15 << 182 */
|
|
{ { 0x3b027e81c4127fe1L,0xa9f8b9ad3ae9c566L,0x5ab10851acbfbba5L,
|
|
0xa747d648569556f5L },
|
|
{ 0xcc172b5c2ba97bf7L,0x15e0f77dbcfa3324L,0xa345b7977686279dL,
|
|
0x5a723480e38003d3L } },
|
|
/* 16 << 182 */
|
|
{ { 0xfd8e139f8f5fcda8L,0xf3e558c4bdee5bfdL,0xd76cbaf4e33f9f77L,
|
|
0x3a4c97a471771969L },
|
|
{ 0xda27e84bf6dce6a7L,0xff373d9613e6c2d1L,0xf115193cd759a6e9L,
|
|
0x3f9b702563d2262cL } },
|
|
/* 17 << 182 */
|
|
{ { 0xd9764a31317cd062L,0x30779d8e199f8332L,0xd807410616b11b0bL,
|
|
0x7917ab9f78aeaed8L },
|
|
{ 0xb67a9cbe28fb1d8eL,0x2e313563136eda33L,0x010b7069a371a86cL,
|
|
0x44d90fa26744e6b7L } },
|
|
/* 18 << 182 */
|
|
{ { 0x68190867d6b3e243L,0x9fe6cd9d59048c48L,0xb900b02895731538L,
|
|
0xa012062f32cae04fL },
|
|
{ 0x8107c8bc9399d082L,0x47e8c54a41df12e2L,0x14ba5117b6ef3f73L,
|
|
0x22260bea81362f0bL } },
|
|
/* 19 << 182 */
|
|
{ { 0x90ea261e1a18cc20L,0x2192999f2321d636L,0xef64d314e311b6a0L,
|
|
0xd7401e4c3b54a1f5L },
|
|
{ 0x190199836fbca2baL,0x46ad32938fbffc4bL,0xa142d3f63786bf40L,
|
|
0xeb5cbc26b67039fcL } },
|
|
/* 20 << 182 */
|
|
{ { 0x9cb0ae6c252bd479L,0x05e0f88a12b5848fL,0x78f6d2b2a5c97663L,
|
|
0x6f6e149bc162225cL },
|
|
{ 0xe602235cde601a89L,0xd17bbe98f373be1fL,0xcaf49a5ba8471827L,
|
|
0x7e1a0a8518aaa116L } },
|
|
/* 21 << 182 */
|
|
{ { 0x6c833196270580c3L,0x1e233839f1c98a14L,0x67b2f7b4ae34e0a5L,
|
|
0x47ac8745d8ce7289L },
|
|
{ 0x2b74779a100dd467L,0x274a43374ee50d09L,0x603dcf1383608bc9L,
|
|
0xcd9da6c3c89e8388L } },
|
|
/* 22 << 182 */
|
|
{ { 0x2660199f355116acL,0xcc38bb59b6d18eedL,0x3075f31f2f4bc071L,
|
|
0x9774457f265dc57eL },
|
|
{ 0x06a6a9c8c6db88bbL,0x6429d07f4ec98e04L,0x8d05e57b05ecaa8bL,
|
|
0x20f140b17872ea7bL } },
|
|
/* 23 << 182 */
|
|
{ { 0xdf8c0f09ca494693L,0x48d3a020f252e909L,0x4c5c29af57b14b12L,
|
|
0x7e6fa37dbf47ad1cL },
|
|
{ 0x66e7b50649a0c938L,0xb72c0d486be5f41fL,0x6a6242b8b2359412L,
|
|
0xcd35c7748e859480L } },
|
|
/* 24 << 182 */
|
|
{ { 0x12536fea87baa627L,0x58c1fec1f72aa680L,0x6c29b637601e5dc9L,
|
|
0x9e3c3c1cde9e01b9L },
|
|
{ 0xefc8127b2bcfe0b0L,0x351071022a12f50dL,0x6ccd6cb14879b397L,
|
|
0xf792f804f8a82f21L } },
|
|
/* 25 << 182 */
|
|
{ { 0x509d4804a9b46402L,0xedddf85dc10f0850L,0x928410dc4b6208aaL,
|
|
0xf6229c46391012dcL },
|
|
{ 0xc5a7c41e7727b9b6L,0x289e4e4baa444842L,0x049ba1d9e9a947eaL,
|
|
0x44f9e47f83c8debcL } },
|
|
/* 26 << 182 */
|
|
{ { 0xfa77a1fe611f8b8eL,0xfd2e416af518f427L,0xc5fffa70114ebac3L,
|
|
0xfe57c4e95d89697bL },
|
|
{ 0xfdd053acb1aaf613L,0x31df210fea585a45L,0x318cc10e24985034L,
|
|
0x1a38efd15f1d6130L } },
|
|
/* 27 << 182 */
|
|
{ { 0xbf86f2370b1e9e21L,0xb258514d1dbe88aaL,0x1e38a58890c1baf9L,
|
|
0x2936a01ebdb9b692L },
|
|
{ 0xd576de986dd5b20cL,0xb586bf7170f98ecfL,0xcccf0f12c42d2fd7L,
|
|
0x8717e61cfb35bd7bL } },
|
|
/* 28 << 182 */
|
|
{ { 0x8b1e572235e6fc06L,0x3477728f0b3e13d5L,0x150c294daa8a7372L,
|
|
0xc0291d433bfa528aL },
|
|
{ 0xc6c8bc67cec5a196L,0xdeeb31e45c2e8a7cL,0xba93e244fb6e1c51L,
|
|
0xb9f8b71b2e28e156L } },
|
|
/* 29 << 182 */
|
|
{ { 0xce65a287968a2ab9L,0xe3c5ce6946bbcb1fL,0xf8c835b9e7ae3f30L,
|
|
0x16bbee26ff72b82bL },
|
|
{ 0x665e2017fd42cd22L,0x1e139970f8b1d2a0L,0x125cda2979204932L,
|
|
0x7aee94a549c3bee5L } },
|
|
/* 30 << 182 */
|
|
{ { 0x68c7016089821a66L,0xf7c376788f981669L,0xd90829fc48cc3645L,
|
|
0x346af049d70addfcL },
|
|
{ 0x2057b232370bf29cL,0xf90c73ce42e650eeL,0xe03386eaa126ab90L,
|
|
0x0e266e7e975a087bL } },
|
|
/* 31 << 182 */
|
|
{ { 0x80578eb90fca65d9L,0x7e2989ea16af45b8L,0x7438212dcac75a4eL,
|
|
0x38c7ca394fef36b8L },
|
|
{ 0x8650c494d402676aL,0x26ab5a66f72c7c48L,0x4e6cb426ce3a464eL,
|
|
0xf8f998962b72f841L } },
|
|
/* 32 << 182 */
|
|
{ { 0x8c3184911a335cc8L,0x563459ba6a5913e4L,0x1b920d61c7b32919L,
|
|
0x805ab8b6a02425adL },
|
|
{ 0x2ac512da8d006086L,0x6ca4846abcf5c0fdL,0xafea51d8ac2138d7L,
|
|
0xcb647545344cd443L } },
|
|
/* 33 << 182 */
|
|
{ { 0x0429ee8fbd7d9040L,0xee66a2de819b9c96L,0x54f9ec25dea7d744L,
|
|
0x2ffea642671721bbL },
|
|
{ 0x4f19dbd1114344eaL,0x04304536fd0dbc8bL,0x014b50aa29ec7f91L,
|
|
0xb5fc22febb06014dL } },
|
|
/* 34 << 182 */
|
|
{ { 0x60d963a91ee682e0L,0xdf48abc0fe85c727L,0x0cadba132e707c2dL,
|
|
0xde608d3aa645aeffL },
|
|
{ 0x05f1c28bedafd883L,0x3c362edebd94de1fL,0x8dd0629d13593e41L,
|
|
0x0a5e736f766d6eafL } },
|
|
/* 35 << 182 */
|
|
{ { 0xbfa92311f68cf9d1L,0xa4f9ef87c1797556L,0x10d75a1f5601c209L,
|
|
0x651c374c09b07361L },
|
|
{ 0x49950b5888b5ceadL,0x0ef000586fa9dbaaL,0xf51ddc264e15f33aL,
|
|
0x1f8b5ca62ef46140L } },
|
|
/* 36 << 182 */
|
|
{ { 0x343ac0a3ee9523f0L,0xbb75eab2975ea978L,0x1bccf332107387f4L,
|
|
0x790f92599ab0062eL },
|
|
{ 0xf1a363ad1e4f6a5fL,0x06e08b8462519a50L,0x609151877265f1eeL,
|
|
0x6a80ca3493ae985eL } },
|
|
/* 37 << 182 */
|
|
{ { 0x81b29768aaba4864L,0xb13cabf28d52a7d6L,0xb5c363488ead03f1L,
|
|
0xc932ad9581c7c1c0L },
|
|
{ 0x5452708ecae1e27bL,0x9dac42691b0df648L,0x233e3f0cdfcdb8bcL,
|
|
0xe6ceccdfec540174L } },
|
|
/* 38 << 182 */
|
|
{ { 0xbd0d845e95081181L,0xcc8a7920699355d5L,0x111c0f6dc3b375a8L,
|
|
0xfd95bc6bfd51e0dcL },
|
|
{ 0x4a106a266888523aL,0x4d142bd6cb01a06dL,0x79bfd289adb9b397L,
|
|
0x0bdbfb94e9863914L } },
|
|
/* 39 << 182 */
|
|
{ { 0x29d8a2291660f6a6L,0x7f6abcd6551c042dL,0x13039deb0ac3ffe8L,
|
|
0xa01be628ec8523fbL },
|
|
{ 0x6ea341030ca1c328L,0xc74114bdb903928eL,0x8aa4ff4e9e9144b0L,
|
|
0x7064091f7f9a4b17L } },
|
|
/* 40 << 182 */
|
|
{ { 0xa3f4f521e447f2c4L,0x81b8da7a604291f0L,0xd680bc467d5926deL,
|
|
0x84f21fd534a1202fL },
|
|
{ 0x1d1e31814e9df3d8L,0x1ca4861a39ab8d34L,0x809ddeec5b19aa4aL,
|
|
0x59f72f7e4d329366L } },
|
|
/* 41 << 182 */
|
|
{ { 0xa2f93f41386d5087L,0x40bf739cdd67d64fL,0xb449420566702158L,
|
|
0xc33c65be73b1e178L },
|
|
{ 0xcdcd657c38ca6153L,0x97f4519adc791976L,0xcc7c7f29cd6e1f39L,
|
|
0x38de9cfb7e3c3932L } },
|
|
/* 42 << 182 */
|
|
{ { 0xe448eba37b793f85L,0xe9f8dbf9f067e914L,0xc0390266f114ae87L,
|
|
0x39ed75a7cd6a8e2aL },
|
|
{ 0xadb148487ffba390L,0x67f8cb8b6af9bc09L,0x322c38489c7476dbL,
|
|
0xa320fecf52a538d6L } },
|
|
/* 43 << 182 */
|
|
{ { 0xe0493002b2aced2bL,0xdfba1809616bd430L,0x531c4644c331be70L,
|
|
0xbc04d32e90d2e450L },
|
|
{ 0x1805a0d10f9f142dL,0x2c44a0c547ee5a23L,0x31875a433989b4e3L,
|
|
0x6b1949fd0c063481L } },
|
|
/* 44 << 182 */
|
|
{ { 0x2dfb9e08be0f4492L,0x3ff0da03e9d5e517L,0x03dbe9a1f79466a8L,
|
|
0x0b87bcd015ea9932L },
|
|
{ 0xeb64fc83ab1f58abL,0x6d9598da817edc8aL,0x699cff661d3b67e5L,
|
|
0x645c0f2992635853L } },
|
|
/* 45 << 182 */
|
|
{ { 0x253cdd82eabaf21cL,0x82b9602a2241659eL,0x2cae07ec2d9f7091L,
|
|
0xbe4c720c8b48cd9bL },
|
|
{ 0x6ce5bc036f08d6c9L,0x36e8a997af10bf40L,0x83422d213e10ff12L,
|
|
0x7b26d3ebbcc12494L } },
|
|
/* 46 << 182 */
|
|
{ { 0xb240d2d0c9469ad6L,0xc4a11b4d30afa05bL,0x4b604acedd6ba286L,
|
|
0x184866003ee2864cL },
|
|
{ 0x5869d6ba8d9ce5beL,0x0d8f68c5ff4bfb0dL,0xb69f210b5700cf73L,
|
|
0x61f6653a6d37c135L } },
|
|
/* 47 << 182 */
|
|
{ { 0xff3d432b5aff5a48L,0x0d81c4b972ba3a69L,0xee879ae9fa1899efL,
|
|
0xbac7e2a02d6acafdL },
|
|
{ 0xd6d93f6c1c664399L,0x4c288de15bcb135dL,0x83031dab9dab7cbfL,
|
|
0xfe23feb03abbf5f0L } },
|
|
/* 48 << 182 */
|
|
{ { 0x9f1b2466cdedca85L,0x140bb7101a09538cL,0xac8ae8515e11115dL,
|
|
0x0d63ff676f03f59eL },
|
|
{ 0x755e55517d234afbL,0x61c2db4e7e208fc1L,0xaa9859cef28a4b5dL,
|
|
0xbdd6d4fc34af030fL } },
|
|
/* 49 << 182 */
|
|
{ { 0xd1c4a26d3be01cb1L,0x9ba14ffc243aa07cL,0xf95cd3a9b2503502L,
|
|
0xe379bc067d2a93abL },
|
|
{ 0x3efc18e9d4ca8d68L,0x083558ec80bb412aL,0xd903b9409645a968L,
|
|
0xa499f0b69ba6054fL } },
|
|
/* 50 << 182 */
|
|
{ { 0x208b573cb8349abeL,0x3baab3e530b4fc1cL,0x87e978bacb524990L,
|
|
0x3524194eccdf0e80L },
|
|
{ 0x627117257d4bcc42L,0xe90a3d9bb90109baL,0x3b1bdd571323e1e0L,
|
|
0xb78e9bd55eae1599L } },
|
|
/* 51 << 182 */
|
|
{ { 0x0794b7469e03d278L,0x80178605d70e6297L,0x171792f899c97855L,
|
|
0x11b393eef5a86b5cL },
|
|
{ 0x48ef6582d8884f27L,0xbd44737abf19ba5fL,0x8698de4ca42062c6L,
|
|
0x8975eb8061ce9c54L } },
|
|
/* 52 << 182 */
|
|
{ { 0xd50e57c7d7fe71f3L,0x15342190bc97ce38L,0x51bda2de4df07b63L,
|
|
0xba12aeae200eb87dL },
|
|
{ 0xabe135d2a9b4f8f6L,0x04619d65fad6d99cL,0x4a6683a77994937cL,
|
|
0x7a778c8b6f94f09aL } },
|
|
/* 53 << 182 */
|
|
{ { 0x8c50862320a71b89L,0x241a2aed1c229165L,0x352be595aaf83a99L,
|
|
0x9fbfee7f1562bac8L },
|
|
{ 0xeaf658b95c4017e3L,0x1dc7f9e015120b86L,0xd84f13dd4c034d6fL,
|
|
0x283dd737eaea3038L } },
|
|
/* 54 << 182 */
|
|
{ { 0x197f2609cd85d6a2L,0x6ebbc345fae60177L,0xb80f031b4e12fedeL,
|
|
0xde55d0c207a2186bL },
|
|
{ 0x1fb3e37f24dcdd5aL,0x8d602da57ed191fbL,0x108fb05676023e0dL,
|
|
0x70178c71459c20c0L } },
|
|
/* 55 << 182 */
|
|
{ { 0xfad5a3863fe54cf0L,0xa4a3ec4f02bbb475L,0x1aa5ec20919d94d7L,
|
|
0x5d3b63b5a81e4ab3L },
|
|
{ 0x7fa733d85ad3d2afL,0xfbc586ddd1ac7a37L,0x282925de40779614L,
|
|
0xfe0ffffbe74a242aL } },
|
|
/* 56 << 182 */
|
|
{ { 0x3f39e67f906151e5L,0xcea27f5f55e10649L,0xdca1d4e1c17cf7b7L,
|
|
0x0c326d122fe2362dL },
|
|
{ 0x05f7ac337dd35df3L,0x0c3b7639c396dbdfL,0x0912f5ac03b7db1cL,
|
|
0x9dea4b705c9ed4a9L } },
|
|
/* 57 << 182 */
|
|
{ { 0x475e6e53aae3f639L,0xfaba0e7cfc278bacL,0x16f9e2219490375fL,
|
|
0xaebf9746a5a7ed0aL },
|
|
{ 0x45f9af3ff41ad5d6L,0x03c4623cb2e99224L,0x82c5bb5cb3cf56aaL,
|
|
0x6431181934567ed3L } },
|
|
/* 58 << 182 */
|
|
{ { 0xec57f2118be489acL,0x2821895db9a1104bL,0x610dc8756064e007L,
|
|
0x8e526f3f5b20d0feL },
|
|
{ 0x6e71ca775b645aeeL,0x3d1dcb9f800e10ffL,0x36b51162189cf6deL,
|
|
0x2c5a3e306bb17353L } },
|
|
/* 59 << 182 */
|
|
{ { 0xc186cd3e2a6c6fbfL,0xa74516fa4bf97906L,0x5b4b8f4b279d6901L,
|
|
0x0c4e57b42b573743L },
|
|
{ 0x75fdb229b6e386b6L,0xb46793fd99deac27L,0xeeec47eacf712629L,
|
|
0xe965f3c4cbc3b2ddL } },
|
|
/* 60 << 182 */
|
|
{ { 0x8dd1fb83425c6559L,0x7fc00ee60af06fdaL,0xe98c922533d956dfL,
|
|
0x0f1ef3354fbdc8a2L },
|
|
{ 0x2abb5145b79b8ea2L,0x40fd2945bdbff288L,0x6a814ac4d7185db7L,
|
|
0xc4329d6fc084609aL } },
|
|
/* 61 << 182 */
|
|
{ { 0xc9ba7b52ed1be45dL,0x891dd20de4cd2c74L,0x5a4d4a7f824139b1L,
|
|
0x66c17716b873c710L },
|
|
{ 0x5e5bc1412843c4e0L,0xd5ac4817b97eb5bfL,0xc0f8af54450c95c7L,
|
|
0xc91b3fa0318406c5L } },
|
|
/* 62 << 182 */
|
|
{ { 0x360c340aab9d97f8L,0xfb57bd0790a2d611L,0x4339ae3ca6a6f7e5L,
|
|
0x9c1fcd2a2feb8a10L },
|
|
{ 0x972bcca9c7ea7432L,0x1b0b924c308076f6L,0x80b2814a2a5b4ca5L,
|
|
0x2f78f55b61ef3b29L } },
|
|
/* 63 << 182 */
|
|
{ { 0xf838744ac18a414fL,0xc611eaae903d0a86L,0x94dabc162a453f55L,
|
|
0xe6f2e3da14efb279L },
|
|
{ 0x5b7a60179320dc3cL,0x692e382f8df6b5a4L,0x3f5e15e02d40fa90L,
|
|
0xc87883ae643dd318L } },
|
|
/* 64 << 182 */
|
|
{ { 0x511053e453544774L,0x834d0ecc3adba2bcL,0x4215d7f7bae371f5L,
|
|
0xfcfd57bf6c8663bcL },
|
|
{ 0xded2383dd6901b1dL,0x3b49fbb4b5587dc3L,0xfd44a08d07625f62L,
|
|
0x3ee4d65b9de9b762L } },
|
|
/* 0 << 189 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 189 */
|
|
{ { 0x64e5137d0d63d1faL,0x658fc05202a9d89fL,0x4889487450436309L,
|
|
0xe9ae30f8d598da61L },
|
|
{ 0x2ed710d1818baf91L,0xe27e9e068b6a0c20L,0x1e28dcfb1c1a6b44L,
|
|
0x883acb64d6ac57dcL } },
|
|
/* 2 << 189 */
|
|
{ { 0x8735728dc2c6ff70L,0x79d6122fc5dc2235L,0x23f5d00319e277f9L,
|
|
0x7ee84e25dded8cc7L },
|
|
{ 0x91a8afb063cd880aL,0x3f3ea7c63574af60L,0x0cfcdc8402de7f42L,
|
|
0x62d0792fb31aa152L } },
|
|
/* 3 << 189 */
|
|
{ { 0x8e1b4e438a5807ceL,0xad283893e4109a7eL,0xc30cc9cbafd59ddaL,
|
|
0xf65f36c63d8d8093L },
|
|
{ 0xdf31469ea60d32b2L,0xee93df4b3e8191c8L,0x9c1017c5355bdeb5L,
|
|
0xd26231858616aa28L } },
|
|
/* 4 << 189 */
|
|
{ { 0xb02c83f9dec31a21L,0x988c8b236ad9d573L,0x53e983aea57be365L,
|
|
0xe968734d646f834eL },
|
|
{ 0x9137ea8f5da6309bL,0x10f3a624c1f1ce16L,0x782a9ea2ca440921L,
|
|
0xdf94739e5b46f1b5L } },
|
|
/* 5 << 189 */
|
|
{ { 0x9f9be006cce85c9bL,0x360e70d6a4c7c2d3L,0x2cd5beeaaefa1e60L,
|
|
0x64cf63c08c3d2b6dL },
|
|
{ 0xfb107fa3e1cf6f90L,0xb7e937c6d5e044e6L,0x74e8ca78ce34db9fL,
|
|
0x4f8b36c13e210bd0L } },
|
|
/* 6 << 189 */
|
|
{ { 0x1df165a434a35ea8L,0x3418e0f74d4412f6L,0x5af1f8af518836c3L,
|
|
0x42ceef4d130e1965L },
|
|
{ 0x5560ca0b543a1957L,0xc33761e5886cb123L,0x66624b1ffe98ed30L,
|
|
0xf772f4bf1090997dL } },
|
|
/* 7 << 189 */
|
|
{ { 0xf4e540bb4885d410L,0x7287f8109ba5f8d7L,0x22d0d865de98dfb1L,
|
|
0x49ff51a1bcfbb8a3L },
|
|
{ 0xb6b6fa536bc3012eL,0x3d31fd72170d541dL,0x8018724f4b0f4966L,
|
|
0x79e7399f87dbde07L } },
|
|
/* 8 << 189 */
|
|
{ { 0x56f8410ef4f8b16aL,0x97241afec47b266aL,0x0a406b8e6d9c87c1L,
|
|
0x803f3e02cd42ab1bL },
|
|
{ 0x7f0309a804dbec69L,0xa83b85f73bbad05fL,0xc6097273ad8e197fL,
|
|
0xc097440e5067adc1L } },
|
|
/* 9 << 189 */
|
|
{ { 0x730eafb63524ff16L,0xd7f9b51e823fc6ceL,0x27bd0d32443e4ac0L,
|
|
0x40c59ad94d66f217L },
|
|
{ 0x6c33136f17c387a4L,0x5043b8d5eb86804dL,0x74970312675a73c9L,
|
|
0x838fdb31f16669b6L } },
|
|
/* 10 << 189 */
|
|
{ { 0xc507b6dd418e7dddL,0x39888d93472f19d6L,0x7eae26be0c27eb4dL,
|
|
0x17b53ed3fbabb884L },
|
|
{ 0xfc27021b2b01ae4fL,0x88462e87cf488682L,0xbee096ec215e2d87L,
|
|
0xeb2fea9ad242e29bL } },
|
|
/* 11 << 189 */
|
|
{ { 0x5d985b5fb821fc28L,0x89d2e197dc1e2ad2L,0x55b566b89030ba62L,
|
|
0xe3fd41b54f41b1c6L },
|
|
{ 0xb738ac2eb9a96d61L,0x7f8567ca369443f4L,0x8698622df803a440L,
|
|
0x2b5862368fe2f4dcL } },
|
|
/* 12 << 189 */
|
|
{ { 0xbbcc00c756b95bceL,0x5ec03906616da680L,0x79162ee672214252L,
|
|
0x43132b6386a892d2L },
|
|
{ 0x4bdd3ff22f3263bfL,0xd5b3733c9cd0a142L,0x592eaa8244415ccbL,
|
|
0x663e89248d5474eaL } },
|
|
/* 13 << 189 */
|
|
{ { 0x8058a25e5236344eL,0x82e8df9dbda76ee6L,0xdcf6efd811cc3d22L,
|
|
0x00089cda3b4ab529L },
|
|
{ 0x91d3a071bd38a3dbL,0x4ea97fc0ef72b925L,0x0c9fc15bea3edf75L,
|
|
0x5a6297cda4348ed3L } },
|
|
/* 14 << 189 */
|
|
{ { 0x0d38ab35ce7c42d4L,0x9fd493ef82feab10L,0x46056b6d82111b45L,
|
|
0xda11dae173efc5c3L },
|
|
{ 0xdc7402785545a7fbL,0xbdb2601c40d507e6L,0x121dfeeb7066fa58L,
|
|
0x214369a839ae8c2aL } },
|
|
/* 15 << 189 */
|
|
{ { 0x195709cb06e0956cL,0x4c9d254f010cd34bL,0xf51e13f70471a532L,
|
|
0xe19d67911e73054dL },
|
|
{ 0xf702a628db5c7be3L,0xc7141218b24dde05L,0xdc18233cf29b2e2eL,
|
|
0x3a6bd1e885342dbaL } },
|
|
/* 16 << 189 */
|
|
{ { 0x3f747fa0b311898cL,0xe2a272e4cd0eac65L,0x4bba5851f914d0bcL,
|
|
0x7a1a9660c4a43ee3L },
|
|
{ 0xe5a367cea1c8cde9L,0x9d958ba97271abe3L,0xf3ff7eb63d1615cdL,
|
|
0xa2280dcef5ae20b0L } },
|
|
/* 17 << 189 */
|
|
{ { 0x56dba5c1cf640147L,0xea5a2e3d5e83d118L,0x04cd6b6dda24c511L,
|
|
0x1c0f4671e854d214L },
|
|
{ 0x91a6b7a969565381L,0xdc966240decf1f5bL,0x1b22d21cfcf5d009L,
|
|
0x2a05f6419021dbd5L } },
|
|
/* 18 << 189 */
|
|
{ { 0x8c0ed566d4312483L,0x5179a95d643e216fL,0xcc185fec17044493L,
|
|
0xb306333954991a21L },
|
|
{ 0xd801ecdb0081a726L,0x0149b0c64fa89bbbL,0xafe9065a4391b6b9L,
|
|
0xedc92786d633f3a3L } },
|
|
/* 19 << 189 */
|
|
{ { 0xe408c24aae6a8e13L,0x85833fde9f3897abL,0x43800e7ed81a0715L,
|
|
0xde08e346b44ffc5fL },
|
|
{ 0x7094184ccdeff2e0L,0x49f9387b165eaed1L,0x635d6129777c468aL,
|
|
0x8c0dcfd1538c2dd8L } },
|
|
/* 20 << 189 */
|
|
{ { 0xd6d9d9e37a6a308bL,0x623758304c2767d3L,0x874a8bc6f38cbeb6L,
|
|
0xd94d3f1accb6fd9eL },
|
|
{ 0x92a9735bba21f248L,0x272ad0e56cd1efb0L,0x7437b69c05b03284L,
|
|
0xe7f047026948c225L } },
|
|
/* 21 << 189 */
|
|
{ { 0x8a56c04acba2ececL,0x0c181270e3a73e41L,0x6cb34e9d03e93725L,
|
|
0xf77c8713496521a9L },
|
|
{ 0x94569183fa7f9f90L,0xf2e7aa4c8c9707adL,0xced2c9ba26c1c9a3L,
|
|
0x9109fe9640197507L } },
|
|
/* 22 << 189 */
|
|
{ { 0x9ae868a9e9adfe1cL,0x3984403d314e39bbL,0xb5875720f2fe378fL,
|
|
0x33f901e0ba44a628L },
|
|
{ 0xea1125fe3652438cL,0xae9ec4e69dd1f20bL,0x1e740d9ebebf7fbdL,
|
|
0x6dbd3ddc42dbe79cL } },
|
|
/* 23 << 189 */
|
|
{ { 0x62082aecedd36776L,0xf612c478e9859039L,0xa493b201032f7065L,
|
|
0xebd4d8f24ff9b211L },
|
|
{ 0x3f23a0aaaac4cb32L,0xea3aadb715ed4005L,0xacf17ea4afa27e63L,
|
|
0x56125c1ac11fd66cL } },
|
|
/* 24 << 189 */
|
|
{ { 0x266344a43794f8dcL,0xdcca923a483c5c36L,0x2d6b6bbf3f9d10a0L,
|
|
0xb320c5ca81d9bdf3L },
|
|
{ 0x620e28ff47b50a95L,0x933e3b01cef03371L,0xf081bf8599100153L,
|
|
0x183be9a0c3a8c8d6L } },
|
|
/* 25 << 189 */
|
|
{ { 0x4e3ddc5ad6bbe24dL,0xc6c7463053843795L,0x78193dd765ec2d4cL,
|
|
0xb8df26cccd3c89b2L },
|
|
{ 0x98dbe3995a483f8dL,0x72d8a9577dd3313aL,0x65087294ab0bd375L,
|
|
0xfcd892487c259d16L } },
|
|
/* 26 << 189 */
|
|
{ { 0x8a9443d77613aa81L,0x8010080085fe6584L,0x70fc4dbc7fb10288L,
|
|
0xf58280d3e86beee8L },
|
|
{ 0x14fdd82f7c978c38L,0xdf1204c10de44d7bL,0xa08a1c844160252fL,
|
|
0x591554cac17646a5L } },
|
|
/* 27 << 189 */
|
|
{ { 0x214a37d6a05bd525L,0x48d5f09b07957b3cL,0x0247cdcbd7109bc9L,
|
|
0x40f9e4bb30599ce7L },
|
|
{ 0xc325fa03f46ad2ecL,0x00f766cfc3e3f9eeL,0xab556668d43a4577L,
|
|
0x68d30a613ee03b93L } },
|
|
/* 28 << 189 */
|
|
{ { 0x7ddc81ea77b46a08L,0xcf5a6477c7480699L,0x43a8cb346633f683L,
|
|
0x1b867e6b92363c60L },
|
|
{ 0x439211141f60558eL,0xcdbcdd632f41450eL,0x7fc04601cc630e8bL,
|
|
0xea7c66d597038b43L } },
|
|
/* 29 << 189 */
|
|
{ { 0x7259b8a504e99fd8L,0x98a8dd124785549aL,0x0e459a7c840552e1L,
|
|
0xcdfcf4d04bb0909eL },
|
|
{ 0x34a86db253758da7L,0xe643bb83eac997e1L,0x96400bd7530c5b7eL,
|
|
0x9f97af87b41c8b52L } },
|
|
/* 30 << 189 */
|
|
{ { 0x34fc8820fbeee3f9L,0x93e5349049091afdL,0x764b9be59a31f35cL,
|
|
0x71f3786457e3d924L },
|
|
{ 0x02fb34e0943aa75eL,0xa18c9c58ab8ff6e4L,0x080f31b133cf0d19L,
|
|
0x5c9682db083518a7L } },
|
|
/* 31 << 189 */
|
|
{ { 0x873d4ca6b709c3deL,0x64a842623575b8f0L,0x6275da1f020154bbL,
|
|
0x97678caad17cf1abL },
|
|
{ 0x8779795f951a95c3L,0xdd35b16350fccc08L,0x3270962733d8f031L,
|
|
0x3c5ab10a498dd85cL } },
|
|
/* 32 << 189 */
|
|
{ { 0xb6c185c341dca566L,0x7de7fedad8622aa3L,0x99e84d92901b6dfbL,
|
|
0x30a02b0e7c4ad288L },
|
|
{ 0xc7c81daa2fd3cf36L,0xd1319547df89e59fL,0xb2be8184cd496733L,
|
|
0xd5f449eb93d3412bL } },
|
|
/* 33 << 189 */
|
|
{ { 0x7ea41b1b25fe531dL,0xf97974326a1d5646L,0x86067f722bde501aL,
|
|
0xf91481c00c85e89cL },
|
|
{ 0xca8ee465f8b05bc6L,0x1844e1cf02e83cdaL,0xca82114ab4dbe33bL,
|
|
0x0f9f87694eabfde2L } },
|
|
/* 34 << 189 */
|
|
{ { 0x4936b1c038b27fe2L,0x63b6359baba402dfL,0x40c0ea2f656bdbabL,
|
|
0x9c992a896580c39cL },
|
|
{ 0x600e8f152a60aed1L,0xeb089ca4e0bf49dfL,0x9c233d7d2d42d99aL,
|
|
0x648d3f954c6bc2faL } },
|
|
/* 35 << 189 */
|
|
{ { 0xdcc383a8e1add3f3L,0xf42c0c6a4f64a348L,0x2abd176f0030dbdbL,
|
|
0x4de501a37d6c215eL },
|
|
{ 0x4a107c1f4b9a64bcL,0xa77f0ad32496cd59L,0xfb78ac627688dffbL,
|
|
0x7025a2ca67937d8eL } },
|
|
/* 36 << 189 */
|
|
{ { 0xfde8b2d1d1a8f4e7L,0xf5b3da477354927cL,0xe48606a3d9205735L,
|
|
0xac477cc6e177b917L },
|
|
{ 0xfb1f73d2a883239aL,0xe12572f6cc8b8357L,0x9d355e9cfb1f4f86L,
|
|
0x89b795f8d9f3ec6eL } },
|
|
/* 37 << 189 */
|
|
{ { 0x27be56f1b54398dcL,0x1890efd73fedeed5L,0x62f77f1f9c6d0140L,
|
|
0x7ef0e314596f0ee4L },
|
|
{ 0x50ca6631cc61dab3L,0x4a39801df4866e4fL,0x66c8d032ae363b39L,
|
|
0x22c591e52ead66aaL } },
|
|
/* 38 << 189 */
|
|
{ { 0x954ba308de02a53eL,0x2a6c060fd389f357L,0xe6cfcde8fbf40b66L,
|
|
0x8e02fc56c6340ce1L },
|
|
{ 0xe495779573adb4baL,0x7b86122ca7b03805L,0x63f835120c8e6fa6L,
|
|
0x83660ea0057d7804L } },
|
|
/* 39 << 189 */
|
|
{ { 0xbad7910521ba473cL,0xb6c50beeded5389dL,0xee2caf4daa7c9bc0L,
|
|
0xd97b8de48c4e98a7L },
|
|
{ 0xa9f63e70ab3bbddbL,0x3898aabf2597815aL,0x7659af89ac15b3d9L,
|
|
0xedf7725b703ce784L } },
|
|
/* 40 << 189 */
|
|
{ { 0x25470fabe085116bL,0x04a4337587285310L,0x4e39187ee2bfd52fL,
|
|
0x36166b447d9ebc74L },
|
|
{ 0x92ad433cfd4b322cL,0x726aa817ba79ab51L,0xf96eacd8c1db15ebL,
|
|
0xfaf71e910476be63L } },
|
|
/* 41 << 189 */
|
|
{ { 0xdd69a640641fad98L,0xb799591829622559L,0x03c6daa5de4199dcL,
|
|
0x92cadc97ad545eb4L },
|
|
{ 0x1028238b256534e4L,0x73e80ce68595409aL,0x690d4c66d05dc59bL,
|
|
0xc95f7b8f981dee80L } },
|
|
/* 42 << 189 */
|
|
{ { 0xf4337014d856ac25L,0x441bd9ddac524dcaL,0x640b3d855f0499f5L,
|
|
0x39cf84a9d5fda182L },
|
|
{ 0x04e7b055b2aa95a0L,0x29e33f0a0ddf1860L,0x082e74b5423f6b43L,
|
|
0x217edeb90aaa2b0fL } },
|
|
/* 43 << 189 */
|
|
{ { 0x58b83f3583cbea55L,0xc485ee4dbc185d70L,0x833ff03b1e5f6992L,
|
|
0xb5b9b9cccf0c0dd5L },
|
|
{ 0x7caaee8e4e9e8a50L,0x462e907b6269dafdL,0x6ed5cee9fbe791c6L,
|
|
0x68ca3259ed430790L } },
|
|
/* 44 << 189 */
|
|
{ { 0x2b72bdf213b5ba88L,0x60294c8a35ef0ac4L,0x9c3230ed19b99b08L,
|
|
0x560fff176c2589aaL },
|
|
{ 0x552b8487d6770374L,0xa373202d9a56f685L,0xd3e7f90745f175d9L,
|
|
0x3c2f315fd080d810L } },
|
|
/* 45 << 189 */
|
|
{ { 0x1130e9dd7b9520e8L,0xc078f9e20af037b5L,0x38cd2ec71e9c104cL,
|
|
0x0f684368c472fe92L },
|
|
{ 0xd3f1b5ed6247e7efL,0xb32d33a9396dfe21L,0x46f59cf44a9aa2c2L,
|
|
0x69cd5168ff0f7e41L } },
|
|
/* 46 << 189 */
|
|
{ { 0x3f59da0f4b3234daL,0xcf0b0235b4579ebeL,0x6d1cbb256d2476c7L,
|
|
0x4f0837e69dc30f08L },
|
|
{ 0x9a4075bb906f6e98L,0x253bb434c761e7d1L,0xde2e645f6e73af10L,
|
|
0xb89a40600c5f131cL } },
|
|
/* 47 << 189 */
|
|
{ { 0xd12840c5b8cc037fL,0x3d093a5b7405bb47L,0x6202c253206348b8L,
|
|
0xbf5d57fcc55a3ca7L },
|
|
{ 0x89f6c90c8c3bef48L,0x23ac76235a0a960aL,0xdfbd3d6b552b42abL,
|
|
0x3ef22458132061f6L } },
|
|
/* 48 << 189 */
|
|
{ { 0xd74e9bdac97e6516L,0x88779360c230f49eL,0xa6ec1de31e74ea49L,
|
|
0x581dcee53fb645a2L },
|
|
{ 0xbaef23918f483f14L,0x6d2dddfcd137d13bL,0x54cde50ed2743a42L,
|
|
0x89a34fc5e4d97e67L } },
|
|
/* 49 << 189 */
|
|
{ { 0x13f1f5b312e08ce5L,0xa80540b8a7f0b2caL,0x854bcf7701982805L,
|
|
0xb8653ffd233bea04L },
|
|
{ 0x8e7b878702b0b4c9L,0x2675261f9acb170aL,0x061a9d90930c14e5L,
|
|
0xb59b30e0def0abeaL } },
|
|
/* 50 << 189 */
|
|
{ { 0x1dc19ea60200ec7dL,0xb6f4a3f90bce132bL,0xb8d5de90f13e27e0L,
|
|
0xbaee5ef01fade16fL },
|
|
{ 0x6f406aaae4c6cf38L,0xab4cfe06d1369815L,0x0dcffe87efd550c6L,
|
|
0x9d4f59c775ff7d39L } },
|
|
/* 51 << 189 */
|
|
{ { 0xb02553b151deb6adL,0x812399a4b1877749L,0xce90f71fca6006e1L,
|
|
0xc32363a6b02b6e77L },
|
|
{ 0x02284fbedc36c64dL,0x86c81e31a7e1ae61L,0x2576c7e5b909d94aL,
|
|
0x8b6f7d02818b2bb0L } },
|
|
/* 52 << 189 */
|
|
{ { 0xeca3ed0756faa38aL,0xa3790e6c9305bb54L,0xd784eeda7bc73061L,
|
|
0xbd56d3696dd50614L },
|
|
{ 0xd6575949229a8aa9L,0xdcca8f474595ec28L,0x814305c106ab4fe6L,
|
|
0xc8c3976824f43f16L } },
|
|
/* 53 << 189 */
|
|
{ { 0xe2a45f36523f2b36L,0x995c6493920d93bbL,0xf8afdab790f1632bL,
|
|
0x79ebbecd1c295954L },
|
|
{ 0xc7bb3ddb79592f48L,0x67216a7b5f88e998L,0xd91f098bbc01193eL,
|
|
0xf7d928a5b1db83fcL } },
|
|
/* 54 << 189 */
|
|
{ { 0x55e38417e991f600L,0x2a91113e2981a934L,0xcbc9d64806b13bdeL,
|
|
0xb011b6ac0755ff44L },
|
|
{ 0x6f4cb518045ec613L,0x522d2d31c2f5930aL,0x5acae1af382e65deL,
|
|
0x5764306727bc966fL } },
|
|
/* 55 << 189 */
|
|
{ { 0x5e12705d1c7193f0L,0xf0f32f473be8858eL,0x785c3d7d96c6dfc7L,
|
|
0xd75b4a20bf31795dL },
|
|
{ 0x91acf17b342659d4L,0xe596ea3444f0378fL,0x4515708fce52129dL,
|
|
0x17387e1e79f2f585L } },
|
|
/* 56 << 189 */
|
|
{ { 0x72cfd2e949dee168L,0x1ae052233e2af239L,0x009e75be1d94066aL,
|
|
0x6cca31c738abf413L },
|
|
{ 0xb50bd61d9bc49908L,0x4a9b4a8cf5e2bc1eL,0xeb6cc5f7946f83acL,
|
|
0x27da93fcebffab28L } },
|
|
/* 57 << 189 */
|
|
{ { 0xea314c964821c8c5L,0x8de49deda83c15f4L,0x7a64cf207af33004L,
|
|
0x45f1bfebc9627e10L },
|
|
{ 0x878b062654b9df60L,0x5e4fdc3ca95c0b33L,0xe54a37cac2035d8eL,
|
|
0x9087cda980f20b8cL } },
|
|
/* 58 << 189 */
|
|
{ { 0x36f61c238319ade4L,0x766f287ade8cfdf8L,0x48821948346f3705L,
|
|
0x49a7b85316e4f4a2L },
|
|
{ 0xb9b3f8a75cedadfdL,0x8f5628158db2a815L,0xc0b7d55401f68f95L,
|
|
0x12971e27688a208eL } },
|
|
/* 59 << 189 */
|
|
{ { 0xc9f8b696d0ff34fcL,0x20824de21222718cL,0x7213cf9f0c95284dL,
|
|
0xe2ad741bdc158240L },
|
|
{ 0x0ee3a6df54043ccfL,0x16ff479bd84412b3L,0xf6c74ee0dfc98af0L,
|
|
0xa78a169f52fcd2fbL } },
|
|
/* 60 << 189 */
|
|
{ { 0xd8ae874699c930e9L,0x1d33e85849e117a5L,0x7581fcb46624759fL,
|
|
0xde50644f5bedc01dL },
|
|
{ 0xbeec5d00caf3155eL,0x672d66acbc73e75fL,0x86b9d8c6270b01dbL,
|
|
0xd249ef8350f55b79L } },
|
|
/* 61 << 189 */
|
|
{ { 0x6131d6d473978fe3L,0xcc4e4542754b00a1L,0x4e05df0557dfcfe9L,
|
|
0x94b29cdd51ef6bf0L },
|
|
{ 0xe4530cff9bc7edf2L,0x8ac236fdd3da65f3L,0x0faf7d5fc8eb0b48L,
|
|
0x4d2de14c660eb039L } },
|
|
/* 62 << 189 */
|
|
{ { 0xc006bba760430e54L,0x10a2d0d6da3289abL,0x9c037a5dd7979c59L,
|
|
0x04d1f3d3a116d944L },
|
|
{ 0x9ff224738a0983cdL,0x28e25b38c883cabbL,0xe968dba547a58995L,
|
|
0x2c80b505774eebdfL } },
|
|
/* 63 << 189 */
|
|
{ { 0xee763b714a953bebL,0x502e223f1642e7f6L,0x6fe4b64161d5e722L,
|
|
0x9d37c5b0dbef5316L },
|
|
{ 0x0115ed70f8330bc7L,0x139850e675a72789L,0x27d7faecffceccc2L,
|
|
0x3016a8604fd9f7f6L } },
|
|
/* 64 << 189 */
|
|
{ { 0xc492ec644cd8f64cL,0x58a2d790279d7b51L,0x0ced1fc51fc75256L,
|
|
0x3e658aed8f433017L },
|
|
{ 0x0b61942e05da59ebL,0xba3d60a30ddc3722L,0x7c311cd1742e7f87L,
|
|
0x6473ffeef6b01b6eL } },
|
|
/* 0 << 196 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 196 */
|
|
{ { 0x8303604f692ac542L,0xf079ffe1227b91d3L,0x19f63e6315aaf9bdL,
|
|
0xf99ee565f1f344fbL },
|
|
{ 0x8a1d661fd6219199L,0x8c883bc6d48ce41cL,0x1065118f3c74d904L,
|
|
0x713889ee0faf8b1bL } },
|
|
/* 2 << 196 */
|
|
{ { 0x972b3f8f81a1b3beL,0x4f3ce145ce2764a0L,0xe2d0f1cc28c4f5f7L,
|
|
0xdeee0c0dc7f3985bL },
|
|
{ 0x7df4adc0d39e25c3L,0x40619820c467a080L,0x440ebc9361cf5a58L,
|
|
0x527729a6422ad600L } },
|
|
/* 3 << 196 */
|
|
{ { 0xca6c0937b1b76ba6L,0x1a2eab854d2026dcL,0xb1715e1519d9ae0aL,
|
|
0xf1ad9199bac4a026L },
|
|
{ 0x35b3dfb807ea7b0eL,0xedf5496f3ed9eb89L,0x8932e5ff2d6d08abL,
|
|
0xf314874e25bd2731L } },
|
|
/* 4 << 196 */
|
|
{ { 0xefb26a753f73f449L,0x1d1c94f88d44fc79L,0x49f0fbc53bc0dc4dL,
|
|
0xb747ea0b3698a0d0L },
|
|
{ 0x5218c3fe228d291eL,0x35b804b543c129d6L,0xfac859b8d1acc516L,
|
|
0x6c10697d95d6e668L } },
|
|
/* 5 << 196 */
|
|
{ { 0xc38e438f0876fd4eL,0x45f0c30783d2f383L,0x203cc2ecb10934cbL,
|
|
0x6a8f24392c9d46eeL },
|
|
{ 0xf16b431b65ccde7bL,0x41e2cd1827e76a6fL,0xb9c8cf8f4e3484d7L,
|
|
0x64426efd8315244aL } },
|
|
/* 6 << 196 */
|
|
{ { 0x1c0a8e44fc94dea3L,0x34c8cdbfdad6a0b0L,0x919c384004113cefL,
|
|
0xfd32fba415490ffaL },
|
|
{ 0x58d190f6795dcfb7L,0xfef01b0383588bafL,0x9e6d1d63ca1fc1c0L,
|
|
0x53173f96f0a41ac9L } },
|
|
/* 7 << 196 */
|
|
{ { 0x2b1d402aba16f73bL,0x2fb310148cf9b9fcL,0x2d51e60e446ef7bfL,
|
|
0xc731021bb91e1745L },
|
|
{ 0x9d3b47244fee99d4L,0x4bca48b6fac5c1eaL,0x70f5f514bbea9af7L,
|
|
0x751f55a5974c283aL } },
|
|
/* 8 << 196 */
|
|
{ { 0x6e30251acb452fdbL,0x31ee696550f30650L,0xb0b3e508933548d9L,
|
|
0xb8949a4ff4b0ef5bL },
|
|
{ 0x208b83263c88f3bdL,0xab147c30db1d9989L,0xed6515fd44d4df03L,
|
|
0x17a12f75e72eb0c5L } },
|
|
/* 9 << 196 */
|
|
{ { 0x3b59796d36cf69dbL,0x1219eee956670c18L,0xfe3341f77a070d8eL,
|
|
0x9b70130ba327f90cL },
|
|
{ 0x36a324620ae18e0eL,0x2021a62346c0a638L,0x251b5817c62eb0d4L,
|
|
0x87bfbcdf4c762293L } },
|
|
/* 10 << 196 */
|
|
{ { 0xf78ab505cdd61d64L,0x8c7a53fcc8c18857L,0xa653ce6f16147515L,
|
|
0x9c923aa5ea7d52d5L },
|
|
{ 0xc24709cb5c18871fL,0x7d53bec873b3cc74L,0x59264afffdd1d4c4L,
|
|
0x5555917e240da582L } },
|
|
/* 11 << 196 */
|
|
{ { 0xcae8bbda548f5a0eL,0x1910eaba3bbfbbe1L,0xae5796857677afc3L,
|
|
0x49ea61f173ff0b5cL },
|
|
{ 0x786554784f7c3922L,0x95d337cd20c68eefL,0x68f1e1e5df779ab9L,
|
|
0x14b491b0b5cf69a8L } },
|
|
/* 12 << 196 */
|
|
{ { 0x7a6cbbe028e3fe89L,0xe7e1fee4c5aac0ebL,0x7f47eda5697e5140L,
|
|
0x4f450137b454921fL },
|
|
{ 0xdb625f8495cd8185L,0x74be0ba1cdb2e583L,0xaee4fd7cdd5e6de4L,
|
|
0x4251437de8101739L } },
|
|
/* 13 << 196 */
|
|
{ { 0x686d72a0ac620366L,0x4be3fb9cb6d59344L,0x6e8b44e7a1eb75b9L,
|
|
0x84e39da391a5c10cL },
|
|
{ 0x37cc1490b38f0409L,0x029519432c2ade82L,0x9b6887831190a2d8L,
|
|
0x25627d14231182baL } },
|
|
/* 14 << 196 */
|
|
{ { 0x6eb550aa658a6d87L,0x1405aaa7cf9c7325L,0xd147142e5c8748c9L,
|
|
0x7f637e4f53ede0e0L },
|
|
{ 0xf8ca277614ffad2cL,0xe58fb1bdbafb6791L,0x17158c23bf8f93fcL,
|
|
0x7f15b3730a4a4655L } },
|
|
/* 15 << 196 */
|
|
{ { 0x39d4add2d842ca72L,0xa71e43913ed96305L,0x5bb09cbe6700be14L,
|
|
0x68d69d54d8befcf6L },
|
|
{ 0xa45f536737183bcfL,0x7152b7bb3370dff7L,0xcf887baabf12525bL,
|
|
0xe7ac7bddd6d1e3cdL } },
|
|
/* 16 << 196 */
|
|
{ { 0x25914f7881fdad90L,0xcf638f560d2cf6abL,0xb90bc03fcc054de5L,
|
|
0x932811a718b06350L },
|
|
{ 0x2f00b3309bbd11ffL,0x76108a6fb4044974L,0x801bb9e0a851d266L,
|
|
0x0dd099bebf8990c1L } },
|
|
/* 17 << 196 */
|
|
{ { 0x58c5aaaaabe32986L,0x0fe9dd2a50d59c27L,0x84951ff48d307305L,
|
|
0x6c23f82986529b78L },
|
|
{ 0x50bb22180b136a79L,0x7e2174de77a20996L,0x6f00a4b9c0bb4da6L,
|
|
0x89a25a17efdde8daL } },
|
|
/* 18 << 196 */
|
|
{ { 0xf728a27ec11ee01dL,0xf900553ae5f10dfbL,0x189a83c802ec893cL,
|
|
0x3ca5bdc123f66d77L },
|
|
{ 0x9878153797eada9fL,0x59c50ab310256230L,0x346042d9323c69b3L,
|
|
0x1b715a6d2c460449L } },
|
|
/* 19 << 196 */
|
|
{ { 0xa41dd4766ae06e0bL,0xcdd7888e9d42e25fL,0x0f395f7456b25a20L,
|
|
0xeadfe0ae8700e27eL },
|
|
{ 0xb09d52a969950093L,0x3525d9cb327f8d40L,0xb8235a9467df886aL,
|
|
0x77e4b0dd035faec2L } },
|
|
/* 20 << 196 */
|
|
{ { 0x115eb20a517d7061L,0x77fe34336c2df683L,0x6870ddc7cdc6fc67L,
|
|
0xb16105880b87de83L },
|
|
{ 0x343584cad9c4ddbeL,0xb3164f1c3d754be2L,0x0731ed3ac1e6c894L,
|
|
0x26327dec4f6b904cL } },
|
|
/* 21 << 196 */
|
|
{ { 0x9d49c6de97b5cd32L,0x40835daeb5eceecdL,0xc66350edd9ded7feL,
|
|
0x8aeebb5c7a678804L },
|
|
{ 0x51d42fb75b8ee9ecL,0xd7a17bdd8e3ca118L,0x40d7511a2ef4400eL,
|
|
0xc48990ac875a66f4L } },
|
|
/* 22 << 196 */
|
|
{ { 0x8de07d2a2199e347L,0xbee755562a39e051L,0x56918786916e51dcL,
|
|
0xeb1913134a2d89ecL },
|
|
{ 0x6679610d37d341edL,0x434fbb4156d51c2bL,0xe54b7ee7d7492dbaL,
|
|
0xaa33a79a59021493L } },
|
|
/* 23 << 196 */
|
|
{ { 0x49fc5054e4bd6d3dL,0x09540f045ab551d0L,0x8acc90854942d3a6L,
|
|
0x231af02f2d28323bL },
|
|
{ 0x93458cac0992c163L,0x1fef8e71888e3bb4L,0x27578da5be8c268cL,
|
|
0xcc8be792e805ec00L } },
|
|
/* 24 << 196 */
|
|
{ { 0x29267baec61c3855L,0xebff429d58c1fd3bL,0x22d886c08c0b93b8L,
|
|
0xca5e00b22ddb8953L },
|
|
{ 0xcf330117c3fed8b7L,0xd49ac6fa819c01f6L,0x6ddaa6bd3c0fbd54L,
|
|
0x917430688049a2cfL } },
|
|
/* 25 << 196 */
|
|
{ { 0xd67f981eaff2ef81L,0xc3654d352818ae80L,0x81d050441b2aa892L,
|
|
0x2db067bf3d099328L },
|
|
{ 0xe7c79e86703dcc97L,0xe66f9b37e133e215L,0xcdf119a6e39a7a5cL,
|
|
0x47c60de3876f1b61L } },
|
|
/* 26 << 196 */
|
|
{ { 0x6e405939d860f1b2L,0x3e9a1dbcf5ed4d4aL,0x3f23619ec9b6bcbdL,
|
|
0x5ee790cf734e4497L },
|
|
{ 0xf0a834b15bdaf9bbL,0x02cedda74ca295f0L,0x4619aa2bcb8e378cL,
|
|
0xe5613244cc987ea4L } },
|
|
/* 27 << 196 */
|
|
{ { 0x0bc022cc76b23a50L,0x4a2793ad0a6c21ceL,0x3832878089cac3f5L,
|
|
0x29176f1bcba26d56L },
|
|
{ 0x062961874f6f59ebL,0x86e9bca98bdc658eL,0x2ca9c4d357e30402L,
|
|
0x5438b216516a09bbL } },
|
|
/* 28 << 196 */
|
|
{ { 0x0a6a063c7672765aL,0x37a3ce640547b9bfL,0x42c099c898b1a633L,
|
|
0xb5ab800d05ee6961L },
|
|
{ 0xf1963f5911a5acd6L,0xbaee615746201063L,0x36d9a649a596210aL,
|
|
0xaed043631ba7138cL } },
|
|
/* 29 << 196 */
|
|
{ { 0xcf817d1ca4a82b76L,0x5586960ef3806be9L,0x7ab67c8909dc6bb5L,
|
|
0x52ace7a0114fe7ebL },
|
|
{ 0xcd987618cbbc9b70L,0x4f06fd5a604ca5e1L,0x90af14ca6dbde133L,
|
|
0x1afe4322948a3264L } },
|
|
/* 30 << 196 */
|
|
{ { 0xa70d2ca6c44b2c6cL,0xab7267990ef87dfeL,0x310f64dc2e696377L,
|
|
0x49b42e684c8126a0L },
|
|
{ 0x0ea444c3cea0b176L,0x53a8ddf7cb269182L,0xf3e674ebbbba9dcbL,
|
|
0x0d2878a8d8669d33L } },
|
|
/* 31 << 196 */
|
|
{ { 0x04b935d5d019b6a3L,0xbb5cf88e406f1e46L,0xa1912d165b57c111L,
|
|
0x9803fc2119ebfd78L },
|
|
{ 0x4f231c9ec07764a9L,0xd93286eeb75bd055L,0x83a9457d8ee6c9deL,
|
|
0x046959156087ec90L } },
|
|
/* 32 << 196 */
|
|
{ { 0x14c6dd8a58d6cd46L,0x9cb633b58e6634d2L,0xc1305047f81bc328L,
|
|
0x12ede0e226a177e5L },
|
|
{ 0x332cca62065a6f4fL,0xc3a47ecd67be487bL,0x741eb1870f47ed1cL,
|
|
0x99e66e58e7598b14L } },
|
|
/* 33 << 196 */
|
|
{ { 0x6f0544ca63d0ff12L,0xe5efc784b610a05fL,0xf72917b17cad7b47L,
|
|
0x3ff6ea20f2cac0c0L },
|
|
{ 0xcc23791bf21db8b7L,0x7dac70b1d7d93565L,0x682cda1d694bdaadL,
|
|
0xeb88bb8c1023516dL } },
|
|
/* 34 << 196 */
|
|
{ { 0xc4c634b4dfdbeb1bL,0x22f5ca72b4ee4deaL,0x1045a368e6524821L,
|
|
0xed9e8a3f052b18b2L },
|
|
{ 0x9b7f2cb1b961f49aL,0x7fee2ec17b009670L,0x350d875422507a6dL,
|
|
0x561bd7114db55f1dL } },
|
|
/* 35 << 196 */
|
|
{ { 0x4c189ccc320bbcafL,0x568434cfdf1de48cL,0x6af1b00e0fa8f128L,
|
|
0xf0ba9d028907583cL },
|
|
{ 0x735a400432ff9f60L,0x3dd8e4b6c25dcf33L,0xf2230f1642c74cefL,
|
|
0xd8117623013fa8adL } },
|
|
/* 36 << 196 */
|
|
{ { 0x36822876f51fe76eL,0x8a6811cc11d62589L,0xc3fc7e6546225718L,
|
|
0xb7df2c9fc82fdbcdL },
|
|
{ 0x3b1d4e52dd7b205bL,0xb695947847a2e414L,0x05e4d793efa91148L,
|
|
0xb47ed446fd2e9675L } },
|
|
/* 37 << 196 */
|
|
{ { 0x1a7098b904c9d9bfL,0x661e28811b793048L,0xb1a16966b01ee461L,
|
|
0xbc5213082954746fL },
|
|
{ 0xc909a0fc2477de50L,0xd80bb41c7dbd51efL,0xa85be7ec53294905L,
|
|
0x6d465b1883958f97L } },
|
|
/* 38 << 196 */
|
|
{ { 0x16f6f330fb6840fdL,0xfaaeb2143401e6c8L,0xaf83d30fccb5b4f8L,
|
|
0x22885739266dec4bL },
|
|
{ 0x51b4367c7bc467dfL,0x926562e3d842d27aL,0xdfcb66140fea14a6L,
|
|
0xeb394daef2734cd9L } },
|
|
/* 39 << 196 */
|
|
{ { 0x3eeae5d211c0be98L,0xb1e6ed11814e8165L,0x191086bce52bce1cL,
|
|
0x14b74cc6a75a04daL },
|
|
{ 0x63cf11868c060985L,0x071047de2dbd7f7cL,0x4e433b8bce0942caL,
|
|
0xecbac447d8fec61dL } },
|
|
/* 40 << 196 */
|
|
{ { 0x8f0ed0e2ebf3232fL,0xfff80f9ec52a2eddL,0xad9ab43375b55fdbL,
|
|
0x73ca7820e42e0c11L },
|
|
{ 0x6dace0a0e6251b46L,0x89bc6b5c4c0d932dL,0x3438cd77095da19aL,
|
|
0x2f24a9398d48bdfbL } },
|
|
/* 41 << 196 */
|
|
{ { 0x99b47e46766561b7L,0x736600e60ed0322aL,0x06a47cb1638e1865L,
|
|
0x927c1c2dcb136000L },
|
|
{ 0x295423370cc5df69L,0x99b37c0209d649a9L,0xc5f0043c6aefdb27L,
|
|
0x6cdd99871be95c27L } },
|
|
/* 42 << 196 */
|
|
{ { 0x69850931390420d2L,0x299c40ac0983efa4L,0x3a05e778af39aeadL,
|
|
0x8427440843a45193L },
|
|
{ 0x6bcd0fb991a711a0L,0x461592c89f52ab17L,0xb49302b4da3c6ed6L,
|
|
0xc51fddc7330d7067L } },
|
|
/* 43 << 196 */
|
|
{ { 0x94babeb6da50d531L,0x521b840da6a7b9daL,0x5305151e404bdc89L,
|
|
0x1bcde201d0d07449L },
|
|
{ 0xf427a78b3b76a59aL,0xf84841ce07791a1bL,0xebd314bebf91ed1cL,
|
|
0x8e61d34cbf172943L } },
|
|
/* 44 << 196 */
|
|
{ { 0x1d5dc4515541b892L,0xb186ee41fc9d9e54L,0x9d9f345ed5bf610dL,
|
|
0x3e7ba65df6acca9fL },
|
|
{ 0x9dda787aa8369486L,0x09f9dab78eb5ba53L,0x5afb2033d6481bc3L,
|
|
0x76f4ce30afa62104L } },
|
|
/* 45 << 196 */
|
|
{ { 0xa8fa00cff4f066b5L,0x89ab5143461dafc2L,0x44339ed7a3389998L,
|
|
0x2ff862f1bc214903L },
|
|
{ 0x2c88f985b05556e3L,0xcd96058e3467081eL,0x7d6a4176edc637eaL,
|
|
0xe1743d0936a5acdcL } },
|
|
/* 46 << 196 */
|
|
{ { 0x66fd72e27eb37726L,0xf7fa264e1481a037L,0x9fbd3bde45f4aa79L,
|
|
0xed1e0147767c3e22L },
|
|
{ 0x7621f97982e7abe2L,0x19eedc7245f633f8L,0xe69b155e6137bf3aL,
|
|
0xa0ad13ce414ee94eL } },
|
|
/* 47 << 196 */
|
|
{ { 0x93e3d5241c0e651aL,0xab1a6e2a02ce227eL,0xe7af17974ab27ecaL,
|
|
0x245446debd444f39L },
|
|
{ 0x59e22a2156c07613L,0x43deafcef4275498L,0x10834ccb67fd0946L,
|
|
0xa75841e547406edfL } },
|
|
/* 48 << 196 */
|
|
{ { 0xebd6a6777b0ac93dL,0xa6e37b0d78f5e0d7L,0x2516c09676f5492bL,
|
|
0x1e4bf8889ac05f3aL },
|
|
{ 0xcdb42ce04df0ba2bL,0x935d5cfd5062341bL,0x8a30333382acac20L,
|
|
0x429438c45198b00eL } },
|
|
/* 49 << 196 */
|
|
{ { 0x1d083bc9049d33faL,0x58b82dda946f67ffL,0xac3e2db867a1d6a3L,
|
|
0x62e6bead1798aac8L },
|
|
{ 0xfc85980fde46c58cL,0xa7f6937969c8d7beL,0x23557927837b35ecL,
|
|
0x06a933d8e0790c0cL } },
|
|
/* 50 << 196 */
|
|
{ { 0x827c0e9b077ff55dL,0x53977798bb26e680L,0x595308741d9cb54fL,
|
|
0xcca3f4494aac53efL },
|
|
{ 0x11dc5c87a07eda0fL,0xc138bccffd6400c8L,0x549680d313e5da72L,
|
|
0xc93eed824540617eL } },
|
|
/* 51 << 196 */
|
|
{ { 0xfd3db1574d0b75c0L,0x9716eb426386075bL,0x0639605c817b2c16L,
|
|
0x09915109f1e4f201L },
|
|
{ 0x35c9a9285cca6c3bL,0xb25f7d1a3505c900L,0xeb9f7d20630480c4L,
|
|
0xc3c7b8c62a1a501cL } },
|
|
/* 52 << 196 */
|
|
{ { 0x3f99183c5a1f8e24L,0xfdb118fa9dd255f0L,0xb9b18b90c27f62a6L,
|
|
0xe8f732f7396ec191L },
|
|
{ 0x524a2d910be786abL,0x5d32adef0ac5a0f5L,0x9b53d4d69725f694L,
|
|
0x032a76c60510ba89L } },
|
|
/* 53 << 196 */
|
|
{ { 0x840391a3ebeb1544L,0x44b7b88c3ed73ac3L,0xd24bae7a256cb8b3L,
|
|
0x7ceb151ae394cb12L },
|
|
{ 0xbd6b66d05bc1e6a8L,0xec70cecb090f07bfL,0x270644ed7d937589L,
|
|
0xee9e1a3d5f1dccfeL } },
|
|
/* 54 << 196 */
|
|
{ { 0xb0d40a84745b98d2L,0xda429a212556ed40L,0xf676eced85148cb9L,
|
|
0x5a22d40cded18936L },
|
|
{ 0x3bc4b9e570e8a4ceL,0xbfd1445b9eae0379L,0xf23f2c0c1a0bd47eL,
|
|
0xa9c0bb31e1845531L } },
|
|
/* 55 << 196 */
|
|
{ { 0x9ddc4d600a4c3f6bL,0xbdfaad792c15ef44L,0xce55a2367f484accL,
|
|
0x08653ca7055b1f15L },
|
|
{ 0x2efa8724538873a3L,0x09299e5dace1c7e7L,0x07afab66ade332baL,
|
|
0x9be1fdf692dd71b7L } },
|
|
/* 56 << 196 */
|
|
{ { 0xa49b5d595758b11cL,0x0b852893c8654f40L,0xb63ef6f452379447L,
|
|
0xd4957d29105e690cL },
|
|
{ 0x7d484363646559b0L,0xf4a8273c49788a8eL,0xee406cb834ce54a9L,
|
|
0x1e1c260ff86fda9bL } },
|
|
/* 57 << 196 */
|
|
{ { 0xe150e228cf6a4a81L,0x1fa3b6a31b488772L,0x1e6ff110c5a9c15bL,
|
|
0xc6133b918ad6aa47L },
|
|
{ 0x8ac5d55c9dffa978L,0xba1d1c1d5f3965f2L,0xf969f4e07732b52fL,
|
|
0xfceecdb5a5172a07L } },
|
|
/* 58 << 196 */
|
|
{ { 0xb0120a5f10f2b8f5L,0xc83a6cdf5c4c2f63L,0x4d47a491f8f9c213L,
|
|
0xd9e1cce5d3f1bbd5L },
|
|
{ 0x0d91bc7caba7e372L,0xfcdc74c8dfd1a2dbL,0x05efa800374618e5L,
|
|
0x1121696915a7925eL } },
|
|
/* 59 << 196 */
|
|
{ { 0xd4c89823f6021c5dL,0x880d5e84eff14423L,0x6523bc5a6dcd1396L,
|
|
0xd1acfdfc113c978bL },
|
|
{ 0xb0c164e8bbb66840L,0xf7f4301e72b58459L,0xc29ad4a6a638e8ecL,
|
|
0xf5ab896146b78699L } },
|
|
/* 60 << 196 */
|
|
{ { 0x9dbd79740e954750L,0x0121de8864f9d2c6L,0x2e597b42d985232eL,
|
|
0x55b6c3c553451777L },
|
|
{ 0xbb53e547519cb9fbL,0xf134019f8428600dL,0x5a473176e081791aL,
|
|
0x2f3e226335fb0c08L } },
|
|
/* 61 << 196 */
|
|
{ { 0xb28c301773d273b0L,0xccd210767721ef9aL,0x054cc292b650dc39L,
|
|
0x662246de6188045eL },
|
|
{ 0x904b52fa6b83c0d1L,0xa72df26797e9cd46L,0x886b43cd899725e4L,
|
|
0x2b651688d849ff22L } },
|
|
/* 62 << 196 */
|
|
{ { 0x60479b7902f34533L,0x5e354c140c77c148L,0xb4bb7581a8537c78L,
|
|
0x188043d7efe1495fL },
|
|
{ 0x9ba12f428c1d5026L,0x2e0c8a2693d4aaabL,0xbdba7b8baa57c450L,
|
|
0x140c9ad69bbdafefL } },
|
|
/* 63 << 196 */
|
|
{ { 0x2067aa4225ac0f18L,0xf7b1295b04d1fbf3L,0x14829111a4b04824L,
|
|
0x2ce3f19233bd5e91L },
|
|
{ 0x9c7a1d558f2e1b72L,0xfe932286302aa243L,0x497ca7b4d4be9554L,
|
|
0xb8e821b8e0547a6eL } },
|
|
/* 64 << 196 */
|
|
{ { 0xfb2838be67e573e0L,0x05891db94084c44bL,0x9131137396c1c2c5L,
|
|
0x6aebfa3fd958444bL },
|
|
{ 0xac9cdce9e56e55c1L,0x7148ced32caa46d0L,0x2e10c7efb61fe8ebL,
|
|
0x9fd835daff97cf4dL } },
|
|
/* 0 << 203 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 203 */
|
|
{ { 0xa36da109081e9387L,0xfb9780d78c935828L,0xd5940332e540b015L,
|
|
0xc9d7b51be0f466faL },
|
|
{ 0xfaadcd41d6d9f671L,0xba6c1e28b1a2ac17L,0x066a7833ed201e5fL,
|
|
0x19d99719f90f462bL } },
|
|
/* 2 << 203 */
|
|
{ { 0xf431f462060b5f61L,0xa56f46b47bd057c2L,0x348dca6c47e1bf65L,
|
|
0x9a38783e41bcf1ffL },
|
|
{ 0x7a5d33a9da710718L,0x5a7799872e0aeaf6L,0xca87314d2d29d187L,
|
|
0xfa0edc3ec687d733L } },
|
|
/* 3 << 203 */
|
|
{ { 0x9df336216a31e09bL,0xde89e44dc1350e35L,0x292148714ca0cf52L,
|
|
0xdf3796720b88a538L },
|
|
{ 0xc92a510a2591d61bL,0x79aa87d7585b447bL,0xf67db604e5287f77L,
|
|
0x1697c8bf5efe7a80L } },
|
|
/* 4 << 203 */
|
|
{ { 0x1c894849cb198ac7L,0xa884a93d0f264665L,0x2da964ef9b200678L,
|
|
0x3c351b87009834e6L },
|
|
{ 0xafb2ef9fe2c4b44bL,0x580f6c473326790cL,0xb84805210b02264aL,
|
|
0x8ba6f9e242a194e2L } },
|
|
/* 5 << 203 */
|
|
{ { 0xfc87975f8fb54738L,0x3516078827c3ead3L,0x834116d2b74a085aL,
|
|
0x53c99a73a62fe996L },
|
|
{ 0x87585be05b81c51bL,0x925bafa8be0852b7L,0x76a4fafda84d19a7L,
|
|
0x39a45982585206d4L } },
|
|
/* 6 << 203 */
|
|
{ { 0x499b6ab65eb03c0eL,0xf19b795472bc3fdeL,0xa86b5b9c6e3a80d2L,
|
|
0xe43775086d42819fL },
|
|
{ 0xc1663650bb3ee8a3L,0x75eb14fcb132075fL,0xa8ccc9067ad834f6L,
|
|
0xea6a2474e6e92ffdL } },
|
|
/* 7 << 203 */
|
|
{ { 0x9d72fd950f8d6758L,0xcb84e101408c07ddL,0xb9114bfda5e23221L,
|
|
0x358b5fe2e94e742cL },
|
|
{ 0x1c0577ec95f40e75L,0xf01554513d73f3d6L,0x9d55cd67bd1b9b66L,
|
|
0x63e86e78af8d63c7L } },
|
|
/* 8 << 203 */
|
|
{ { 0x39d934abd3c095f1L,0x04b261bee4b76d71L,0x1d2e6970e73e6984L,
|
|
0x879fb23b5e5fcb11L },
|
|
{ 0x11506c72dfd75490L,0x3a97d08561bcf1c1L,0x43201d82bf5e7007L,
|
|
0x7f0ac52f798232a7L } },
|
|
/* 9 << 203 */
|
|
{ { 0x2715cbc46eb564d4L,0x8d6c752c9e570e29L,0xf80247c89ef5fd5dL,
|
|
0xc3c66b46d53eb514L },
|
|
{ 0x9666b4010f87de56L,0xce62c06fc6c603b5L,0xae7b4c607e4fc942L,
|
|
0x38ac0b77663a9c19L } },
|
|
/* 10 << 203 */
|
|
{ { 0xcb4d20ee4b049136L,0x8b63bf12356a4613L,0x1221aef670e08128L,
|
|
0xe62d8c514acb6b16L },
|
|
{ 0x71f64a67379e7896L,0xb25237a2cafd7fa5L,0xf077bd983841ba6aL,
|
|
0xc4ac02443cd16e7eL } },
|
|
/* 11 << 203 */
|
|
{ { 0x548ba86921fea4caL,0xd36d0817f3dfdac1L,0x09d8d71ff4685fafL,
|
|
0x8eff66bec52c459aL },
|
|
{ 0x182faee70b57235eL,0xee3c39b10106712bL,0x5107331fc0fcdcb0L,
|
|
0x669fb9dca51054baL } },
|
|
/* 12 << 203 */
|
|
{ { 0xb25101fb319d7682L,0xb02931290a982feeL,0x51c1c9b90261b344L,
|
|
0x0e008c5bbfd371faL },
|
|
{ 0xd866dd1c0278ca33L,0x666f76a6e5aa53b1L,0xe5cfb7796013a2cfL,
|
|
0x1d3a1aada3521836L } },
|
|
/* 13 << 203 */
|
|
{ { 0xcedd253173faa485L,0xc8ee6c4fc0a76878L,0xddbccfc92a11667dL,
|
|
0x1a418ea91c2f695aL },
|
|
{ 0xdb11bd9251f73971L,0x3e4b3c82da2ed89fL,0x9a44f3f4e73e0319L,
|
|
0xd1e3de0f303431afL } },
|
|
/* 14 << 203 */
|
|
{ { 0x3c5604ff50f75f9cL,0x1d8eddf37e752b22L,0x0ef074dd3c9a1118L,
|
|
0xd0ffc172ccb86d7bL },
|
|
{ 0xabd1ece3037d90f2L,0xe3f307d66055856cL,0x422f93287e4c6dafL,
|
|
0x902aac66334879a0L } },
|
|
/* 15 << 203 */
|
|
{ { 0xb6a1e7bf94cdfadeL,0x6c97e1ed7fc6d634L,0x662ad24da2fb63f8L,
|
|
0xf81be1b9a5928405L },
|
|
{ 0x86d765e4d14b4206L,0xbecc2e0e8fa0db65L,0xa28838e0b17fc76cL,
|
|
0xe49a602ae37cf24eL } },
|
|
/* 16 << 203 */
|
|
{ { 0x76b4131a567193ecL,0xaf3c305ae5f6e70bL,0x9587bd39031eebddL,
|
|
0x5709def871bbe831L },
|
|
{ 0x570599830eb2b669L,0x4d80ce1b875b7029L,0x838a7da80364ac16L,
|
|
0x2f431d23be1c83abL } },
|
|
/* 17 << 203 */
|
|
{ { 0xe56812a6f9294dd3L,0xb448d01f9b4b0d77L,0xf3ae606104e8305cL,
|
|
0x2bead64594d8c63eL },
|
|
{ 0x0a85434d84fd8b07L,0x537b983ff7a9dee5L,0xedcc5f18ef55bd85L,
|
|
0x2041af6221c6cf8bL } },
|
|
/* 18 << 203 */
|
|
{ { 0x8e52874cb940c71eL,0x211935a9db5f4b3aL,0x94350492301b1dc3L,
|
|
0x33d2646d29958620L },
|
|
{ 0x16b0d64bef911404L,0x9d1f25ea9a3c5ef4L,0x20f200eb4a352c78L,
|
|
0x43929f2c4bd0b428L } },
|
|
/* 19 << 203 */
|
|
{ { 0xa5656667c7196e29L,0x7992c2f09391be48L,0xaaa97cbd9ee0cd6eL,
|
|
0x51b0310c3dc8c9bfL },
|
|
{ 0x237f8acfdd9f22cbL,0xbb1d81a1b585d584L,0x8d5d85f58c416388L,
|
|
0x0d6e5a5a42fe474fL } },
|
|
/* 20 << 203 */
|
|
{ { 0xe781276638235d4eL,0x1c62bd67496e3298L,0x8378660c3f175bc8L,
|
|
0x4d04e18917afdd4dL },
|
|
{ 0x32a8160185a8068cL,0xdb58e4e192b29a85L,0xe8a65b86c70d8a3bL,
|
|
0x5f0e6f4e98a0403bL } },
|
|
/* 21 << 203 */
|
|
{ { 0x0812968469ed2370L,0x34dc30bd0871ee26L,0x3a5ce9487c9c5b05L,
|
|
0x7d487b8043a90c87L },
|
|
{ 0x4089ba37dd0e7179L,0x45f80191b4041811L,0x1c3e105898747ba5L,
|
|
0x98c4e13a6e1ae592L } },
|
|
/* 22 << 203 */
|
|
{ { 0xd44636e6e82c9f9eL,0x711db87cc33a1043L,0x6f431263aa8aec05L,
|
|
0x43ff120d2744a4aaL },
|
|
{ 0xd3bd892fae77779bL,0xf0fe0cc98cdc9f82L,0xca5f7fe6f1c5b1bcL,
|
|
0xcc63a68244929a72L } },
|
|
/* 23 << 203 */
|
|
{ { 0xc7eaba0c09dbe19aL,0x2f3585ad6b5c73c2L,0x8ab8924b0ae50c30L,
|
|
0x17fcd27a638b30baL },
|
|
{ 0xaf414d3410b3d5a5L,0x09c107d22a9accf1L,0x15dac49f946a6242L,
|
|
0xaec3df2ad707d642L } },
|
|
/* 24 << 203 */
|
|
{ { 0x2c2492b73f894ae0L,0xf59df3e5b75f18ceL,0x7cb740d28f53cad0L,
|
|
0x3eb585fbc4f01294L },
|
|
{ 0x17da0c8632c7f717L,0xeb8c795baf943f4cL,0x4ee23fb5f67c51d2L,
|
|
0xef18757568889949L } },
|
|
/* 25 << 203 */
|
|
{ { 0xa6b4bdb20389168bL,0xc4ecd258ea577d03L,0x3a63782b55743082L,
|
|
0x6f678f4cc72f08cdL },
|
|
{ 0x553511cf65e58dd8L,0xd53b4e3ed402c0cdL,0x37de3e29a037c14cL,
|
|
0x86b6c516c05712aaL } },
|
|
/* 26 << 203 */
|
|
{ { 0x2834da3eb38dff6fL,0xbe012c52ea636be8L,0x292d238c61dd37f8L,
|
|
0x0e54523f8f8142dbL },
|
|
{ 0xe31eb436036a05d8L,0x83e3cdff1e93c0ffL,0x3fd2fe0f50821ddfL,
|
|
0xc8e19b0dff9eb33bL } },
|
|
/* 27 << 203 */
|
|
{ { 0xc8cc943fb569a5feL,0xad0090d4d4342d75L,0x82090b4bcaeca000L,
|
|
0xca39687f1bd410ebL },
|
|
{ 0xe7bb0df765959d77L,0x39d782189c964999L,0xd87f62e8b2415451L,
|
|
0xe5efb774bed76108L } },
|
|
/* 28 << 203 */
|
|
{ { 0x3ea011a4e822f0d0L,0xbc647ad15a8704f8L,0xbb315b3550c6820fL,
|
|
0x863dec3db7e76becL },
|
|
{ 0x01ff5d3af017bfc7L,0x20054439976b8229L,0x067fca370bbd0d3bL,
|
|
0xf63dde647f5e3d0fL } },
|
|
/* 29 << 203 */
|
|
{ { 0x22dbefb32a4c94e9L,0xafbff0fe96f8278aL,0x80aea0b13503793dL,
|
|
0xb22380295f06cd29L },
|
|
{ 0x65703e578ec3fecaL,0x06c38314393e7053L,0xa0b751eb7c6734c4L,
|
|
0xd2e8a435c59f0f1eL } },
|
|
/* 30 << 203 */
|
|
{ { 0x147d90525e9ca895L,0x2f4dd31e972072dfL,0xa16fda8ee6c6755cL,
|
|
0xc66826ffcf196558L },
|
|
{ 0x1f1a76a30cf43895L,0xa9d604e083c3097bL,0xe190830966390e0eL,
|
|
0xa50bf753b3c85effL } },
|
|
/* 31 << 203 */
|
|
{ { 0x0696bddef6a70251L,0x548b801b3c6ab16aL,0x37fcf704a4d08762L,
|
|
0x090b3defdff76c4eL },
|
|
{ 0x87e8cb8969cb9158L,0x44a90744995ece43L,0xf85395f40ad9fbf5L,
|
|
0x49b0f6c54fb0c82dL } },
|
|
/* 32 << 203 */
|
|
{ { 0x75d9bc15adf7cccfL,0x81a3e5d6dfa1e1b0L,0x8c39e444249bc17eL,
|
|
0xf37dccb28ea7fd43L },
|
|
{ 0xda654873907fba12L,0x35daa6da4a372904L,0x0564cfc66283a6c5L,
|
|
0xd09fa4f64a9395bfL } },
|
|
/* 33 << 203 */
|
|
{ { 0x688e9ec9aeb19a36L,0xd913f1cec7bfbfb4L,0x797b9a3c61c2faa6L,
|
|
0x2f979bec6a0a9c12L },
|
|
{ 0xb5969d0f359679ecL,0xebcf523d079b0460L,0xfd6b000810fab870L,
|
|
0x3f2edcda9373a39cL } },
|
|
/* 34 << 203 */
|
|
{ { 0x0d64f9a76f568431L,0xf848c27c02f8898cL,0xf418ade1260b5bd5L,
|
|
0xc1f3e3236973dee8L },
|
|
{ 0x46e9319c26c185ddL,0x6d85b7d8546f0ac4L,0x427965f2247f9d57L,
|
|
0xb519b636b0035f48L } },
|
|
/* 35 << 203 */
|
|
{ { 0x6b6163a9ab87d59cL,0xff9f58c339caaa11L,0x4ac39cde3177387bL,
|
|
0x5f6557c2873e77f9L },
|
|
{ 0x6750400636a83041L,0x9b1c96ca75ef196cL,0xf34283deb08c7940L,
|
|
0x7ea096441128c316L } },
|
|
/* 36 << 203 */
|
|
{ { 0xb510b3b56aa39dffL,0x59b43da29f8e4d8cL,0xa8ce31fd9e4c4b9fL,
|
|
0x0e20be26c1303c01L },
|
|
{ 0x18187182e8ee47c9L,0xd9687cdb7db98101L,0x7a520e4da1e14ff6L,
|
|
0x429808ba8836d572L } },
|
|
/* 37 << 203 */
|
|
{ { 0xa37ca60d4944b663L,0xf901f7a9a3f91ae5L,0xe4e3e76e9e36e3b1L,
|
|
0x9aa219cf29d93250L },
|
|
{ 0x347fe275056a2512L,0xa4d643d9de65d95cL,0x9669d396699fc3edL,
|
|
0xb598dee2cf8c6bbeL } },
|
|
/* 38 << 203 */
|
|
{ { 0x682ac1e5dda9e5c6L,0x4e0d3c72caa9fc95L,0x17faaade772bea44L,
|
|
0x5ef8428cab0009c8L },
|
|
{ 0xcc4ce47a460ff016L,0xda6d12bf725281cbL,0x44c678480223aad2L,
|
|
0x6e342afa36256e28L } },
|
|
/* 39 << 203 */
|
|
{ { 0x1400bb0b93a37c04L,0x62b1bc9bdd10bd96L,0x7251adeb0dac46b7L,
|
|
0x7d33b92e7be4ef51L },
|
|
{ 0x28b2a94be61fa29aL,0x4b2be13f06422233L,0x36d6d062330d8d37L,
|
|
0x5ef80e1eb28ca005L } },
|
|
/* 40 << 203 */
|
|
{ { 0x174d46996d16768eL,0x9fc4ff6a628bf217L,0x77705a94154e490dL,
|
|
0x9d96dd288d2d997aL },
|
|
{ 0x77e2d9d8ce5d72c4L,0x9d06c5a4c11c714fL,0x02aa513679e4a03eL,
|
|
0x1386b3c2030ff28bL } },
|
|
/* 41 << 203 */
|
|
{ { 0xfe82e8a6fb283f61L,0x7df203e5f3abc3fbL,0xeec7c3513a4d3622L,
|
|
0xf7d17dbfdf762761L },
|
|
{ 0xc3956e44522055f0L,0xde3012db8fa748dbL,0xca9fcb63bf1dcc14L,
|
|
0xa56d9dcfbe4e2f3aL } },
|
|
/* 42 << 203 */
|
|
{ { 0xb86186b68bcec9c2L,0x7cf24df9680b9f06L,0xc46b45eac0d29281L,
|
|
0xfff42bc507b10e12L },
|
|
{ 0x12263c404d289427L,0x3d5f1899b4848ec4L,0x11f97010d040800cL,
|
|
0xb4c5f529300feb20L } },
|
|
/* 43 << 203 */
|
|
{ { 0xcc543f8fde94fdcbL,0xe96af739c7c2f05eL,0xaa5e0036882692e1L,
|
|
0x09c75b68950d4ae9L },
|
|
{ 0x62f63df2b5932a7aL,0x2658252ede0979adL,0x2a19343fb5e69631L,
|
|
0x718c7501525b666bL } },
|
|
/* 44 << 203 */
|
|
{ { 0x26a42d69ea40dc3aL,0xdc84ad22aecc018fL,0x25c36c7b3270f04aL,
|
|
0x46ba6d4750fa72edL },
|
|
{ 0x6c37d1c593e58a8eL,0xa2394731120c088cL,0xc3be4263cb6e86daL,
|
|
0x2c417d367126d038L } },
|
|
/* 45 << 203 */
|
|
{ { 0x5b70f9c58b6f8efaL,0x671a2faa37718536L,0xd3ced3c6b539c92bL,
|
|
0xe56f1bd9a31203c2L },
|
|
{ 0x8b096ec49ff3c8ebL,0x2deae43243491ceaL,0x2465c6eb17943794L,
|
|
0x5d267e6620586843L } },
|
|
/* 46 << 203 */
|
|
{ { 0x9d3d116db07159d0L,0xae07a67fc1896210L,0x8fc84d87bb961579L,
|
|
0x30009e491c1f8dd6L },
|
|
{ 0x8a8caf22e3132819L,0xcffa197cf23ab4ffL,0x58103a44205dd687L,
|
|
0x57b796c30ded67a2L } },
|
|
/* 47 << 203 */
|
|
{ { 0x0b9c3a6ca1779ad7L,0xa33cfe2e357c09c5L,0x2ea293153db4a57eL,
|
|
0x919596958ebeb52eL },
|
|
{ 0x118db9a6e546c879L,0x8e996df46295c8d6L,0xdd99048455ec806bL,
|
|
0x24f291ca165c1035L } },
|
|
/* 48 << 203 */
|
|
{ { 0xcca523bb440e2229L,0x324673a273ef4d04L,0xaf3adf343e11ec39L,
|
|
0x6136d7f1dc5968d3L },
|
|
{ 0x7a7b2899b053a927L,0x3eaa2661ae067ecdL,0x8549b9c802779cd9L,
|
|
0x061d7940c53385eaL } },
|
|
/* 49 << 203 */
|
|
{ { 0x3e0ba883f06d18bdL,0x4ba6de53b2700843L,0xb966b668591a9e4dL,
|
|
0x93f675677f4fa0edL },
|
|
{ 0x5a02711b4347237bL,0xbc041e2fe794608eL,0x55af10f570f73d8cL,
|
|
0xd2d4d4f7bb7564f7L } },
|
|
/* 50 << 203 */
|
|
{ { 0xd7d27a89b3e93ce7L,0xf7b5a8755d3a2c1bL,0xb29e68a0255b218aL,
|
|
0xb533837e8af76754L },
|
|
{ 0xd1b05a73579fab2eL,0xb41055a1ecd74385L,0xb2369274445e9115L,
|
|
0x2972a7c4f520274eL } },
|
|
/* 51 << 203 */
|
|
{ { 0x6c08334ef678e68aL,0x4e4160f099b057edL,0x3cfe11b852ccb69aL,
|
|
0x2fd1823a21c8f772L },
|
|
{ 0xdf7f072f3298f055L,0x8c0566f9fec74a6eL,0xe549e0195bb4d041L,
|
|
0x7c3930ba9208d850L } },
|
|
/* 52 << 203 */
|
|
{ { 0xe07141fcaaa2902bL,0x539ad799e4f69ad3L,0xa6453f94813f9ffdL,
|
|
0xc58d3c48375bc2f7L },
|
|
{ 0xb3326fad5dc64e96L,0x3aafcaa9b240e354L,0x1d1b0903aca1e7a9L,
|
|
0x4ceb97671211b8a0L } },
|
|
/* 53 << 203 */
|
|
{ { 0xeca83e49e32a858eL,0x4c32892eae907badL,0xd5b42ab62eb9b494L,
|
|
0x7fde3ee21eabae1bL },
|
|
{ 0x13b5ab09caf54957L,0xbfb028bee5f5d5d5L,0x928a06502003e2c0L,
|
|
0x90793aac67476843L } },
|
|
/* 54 << 203 */
|
|
{ { 0x5e942e79c81710a0L,0x557e4a3627ccadd4L,0x72a2bc564bcf6d0cL,
|
|
0x09ee5f4326d7b80cL },
|
|
{ 0x6b70dbe9d4292f19L,0x56f74c2663f16b18L,0xc23db0f735fbb42aL,
|
|
0xb606bdf66ae10040L } },
|
|
/* 55 << 203 */
|
|
{ { 0x1eb15d4d044573acL,0x7dc3cf86556b0ba4L,0x97af9a33c60df6f7L,
|
|
0x0b1ef85ca716ce8cL },
|
|
{ 0x2922f884c96958beL,0x7c32fa9435690963L,0x2d7f667ceaa00061L,
|
|
0xeaaf7c173547365cL } },
|
|
/* 56 << 203 */
|
|
{ { 0x1eb4de4687032d58L,0xc54f3d835e2c79e0L,0x07818df45d04ef23L,
|
|
0x55faa9c8673d41b4L },
|
|
{ 0xced64f6f89b95355L,0x4860d2eab7415c84L,0x5fdb9bd2050ebad3L,
|
|
0xdb53e0cc6685a5bfL } },
|
|
/* 57 << 203 */
|
|
{ { 0xb830c0319feb6593L,0xdd87f3106accff17L,0x2303ebab9f555c10L,
|
|
0x94603695287e7065L },
|
|
{ 0xf88311c32e83358cL,0x508dd9b4eefb0178L,0x7ca237062dba8652L,
|
|
0x62aac5a30047abe5L } },
|
|
/* 58 << 203 */
|
|
{ { 0x9a61d2a08b1ea7b3L,0xd495ab63ae8b1485L,0x38740f8487052f99L,
|
|
0x178ebe5bb2974eeaL },
|
|
{ 0x030bbcca5b36d17fL,0xb5e4cce3aaf86eeaL,0xb51a022068f8e9e0L,
|
|
0xa434879609eb3e75L } },
|
|
/* 59 << 203 */
|
|
{ { 0xbe592309eef1a752L,0x5d7162d76f2aa1edL,0xaebfb5ed0f007dd2L,
|
|
0x255e14b2c89edd22L },
|
|
{ 0xba85e0720303b697L,0xc5d17e25f05720ffL,0x02b58d6e5128ebb6L,
|
|
0x2c80242dd754e113L } },
|
|
/* 60 << 203 */
|
|
{ { 0x919fca5fabfae1caL,0x937afaac1a21459bL,0x9e0ca91c1f66a4d2L,
|
|
0x194cc7f323ec1331L },
|
|
{ 0xad25143a8aa11690L,0xbe40ad8d09b59e08L,0x37d60d9be750860aL,
|
|
0x6c53b008c6bf434cL } },
|
|
/* 61 << 203 */
|
|
{ { 0xb572415d1356eb80L,0xb8bf9da39578ded8L,0x22658e365e8fb38bL,
|
|
0x9b70ce225af8cb22L },
|
|
{ 0x7c00018a829a8180L,0x84329f93b81ed295L,0x7c343ea25f3cea83L,
|
|
0x38f8655f67586536L } },
|
|
/* 62 << 203 */
|
|
{ { 0xa661a0d01d3ec517L,0x98744652512321aeL,0x084ca591eca92598L,
|
|
0xa9bb9dc91dcb3febL },
|
|
{ 0x14c5435578b4c240L,0x5ed62a3b610cafdcL,0x07512f371b38846bL,
|
|
0x571bb70ab0e38161L } },
|
|
/* 63 << 203 */
|
|
{ { 0xb556b95b2da705d2L,0x3ef8ada6b1a08f98L,0x85302ca7ddecfbe5L,
|
|
0x0e530573943105cdL },
|
|
{ 0x60554d5521a9255dL,0x63a32fa1f2f3802aL,0x35c8c5b0cd477875L,
|
|
0x97f458ea6ad42da1L } },
|
|
/* 64 << 203 */
|
|
{ { 0x832d7080eb6b242dL,0xd30bd0233b71e246L,0x7027991bbe31139dL,
|
|
0x68797e91462e4e53L },
|
|
{ 0x423fe20a6b4e185aL,0x82f2c67e42d9b707L,0x25c817684cf7811bL,
|
|
0xbd53005e045bb95dL } },
|
|
/* 0 << 210 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 210 */
|
|
{ { 0xe5f649be9d8e68fdL,0xdb0f05331b044320L,0xf6fde9b3e0c33398L,
|
|
0x92f4209b66c8cfaeL },
|
|
{ 0xe9d1afcc1a739d4bL,0x09aea75fa28ab8deL,0x14375fb5eac6f1d0L,
|
|
0x6420b560708f7aa5L } },
|
|
/* 2 << 210 */
|
|
{ { 0x9eae499c6254dc41L,0x7e2939247a837e7eL,0x74aec08c090524a7L,
|
|
0xf82b92198d6f55f2L },
|
|
{ 0x493c962e1402cec5L,0x9f17ca17fa2f30e7L,0xbcd783e8e9b879cbL,
|
|
0xea3d8c145a6f145fL } },
|
|
/* 3 << 210 */
|
|
{ { 0xdede15e75e0dee6eL,0x74f24872dc628aa2L,0xd3e9c4fe7861bb93L,
|
|
0x56d4822a6187b2e0L },
|
|
{ 0xb66417cfc59826f9L,0xca2609692408169eL,0xedf69d06c79ef885L,
|
|
0x00031f8adc7d138fL } },
|
|
/* 4 << 210 */
|
|
{ { 0x103c46e60ebcf726L,0x4482b8316231470eL,0x6f6dfaca487c2109L,
|
|
0x2e0ace9762e666efL },
|
|
{ 0x3246a9d31f8d1f42L,0x1b1e83f1574944d2L,0x13dfa63aa57f334bL,
|
|
0x0cf8daed9f025d81L } },
|
|
/* 5 << 210 */
|
|
{ { 0x30d78ea800ee11c1L,0xeb053cd4b5e3dd75L,0x9b65b13ed58c43c5L,
|
|
0xc3ad49bdbd151663L },
|
|
{ 0x99fd8e41b6427990L,0x12cf15bd707eae1eL,0x29ad4f1b1aabb71eL,
|
|
0x5143e74d07545d0eL } },
|
|
/* 6 << 210 */
|
|
{ { 0x30266336c88bdee1L,0x25f293065876767cL,0x9c078571c6731996L,
|
|
0xc88690b2ed552951L },
|
|
{ 0x274f2c2d852705b4L,0xb0bf8d444e09552dL,0x7628beeb986575d1L,
|
|
0x407be2387f864651L } },
|
|
/* 7 << 210 */
|
|
{ { 0x0e5e3049a639fc6bL,0xe75c35d986003625L,0x0cf35bd85dcc1646L,
|
|
0x8bcaced26c26273aL },
|
|
{ 0xe22ecf1db5536742L,0x013dd8971a9e068bL,0x17f411cb8a7909c5L,
|
|
0x5757ac98861dd506L } },
|
|
/* 8 << 210 */
|
|
{ { 0x85de1f0d1e935abbL,0xdefd10b4154de37aL,0xb8d9e392369cebb5L,
|
|
0x54d5ef9b761324beL },
|
|
{ 0x4d6341ba74f17e26L,0xc0a0e3c878c1dde4L,0xa6d7758187d918fdL,
|
|
0x6687601502ca3a13L } },
|
|
/* 9 << 210 */
|
|
{ { 0xc7313e9cf36658f0L,0xc433ef1c71f8057eL,0x853262461b6a835aL,
|
|
0xc8f053987c86394cL },
|
|
{ 0xff398cdfe983c4a1L,0xbf5e816203b7b931L,0x93193c46b7b9045bL,
|
|
0x1e4ebf5da4a6e46bL } },
|
|
/* 10 << 210 */
|
|
{ { 0xf9942a6043a24fe7L,0x29c1191effb3492bL,0x9f662449902fde05L,
|
|
0xc792a7ac6713c32dL },
|
|
{ 0x2fd88ad8b737982cL,0x7e3a0319a21e60e3L,0x09b0de447383591aL,
|
|
0x6df141ee8310a456L } },
|
|
/* 11 << 210 */
|
|
{ { 0xaec1a039e6d6f471L,0x14b2ba0f1198d12eL,0xebc1a1603aeee5acL,
|
|
0x401f4836e0b964ceL },
|
|
{ 0x2ee437964fd03f66L,0x3fdb4e49dd8f3f12L,0x6ef267f629380f18L,
|
|
0x3e8e96708da64d16L } },
|
|
/* 12 << 210 */
|
|
{ { 0xbc19180c207674f1L,0x112e09a733ae8fdbL,0x996675546aaeb71eL,
|
|
0x79432af1e101b1c7L },
|
|
{ 0xd5eb558fde2ddec6L,0x81392d1f5357753fL,0xa7a76b973ae1158aL,
|
|
0x416fbbff4a899991L } },
|
|
/* 13 << 210 */
|
|
{ { 0x9e65fdfd0d4a9dcfL,0x7bc29e48944ddf12L,0xbc1a92d93c856866L,
|
|
0x273c69056e98dfe2L },
|
|
{ 0x69fce418cdfaa6b8L,0x606bd8235061c69fL,0x42d495a06af75e27L,
|
|
0x8ed3d5056d873a1fL } },
|
|
/* 14 << 210 */
|
|
{ { 0xaf5528416ab25b6aL,0xc6c0ffc72b1a4523L,0xab18827b21c99e03L,
|
|
0x060e86489034691bL },
|
|
{ 0x5207f90f93c7f398L,0x9f4a96cb82f8d10bL,0xdd71cd793ad0f9e3L,
|
|
0x84f435d2fc3a54f5L } },
|
|
/* 15 << 210 */
|
|
{ { 0x4b03c55b8e33787fL,0xef42f975a6384673L,0xff7304f75051b9f0L,
|
|
0x18aca1dc741c87c2L },
|
|
{ 0x56f120a72d4bfe80L,0xfd823b3d053e732cL,0x11bccfe47537ca16L,
|
|
0xdf6c9c741b5a996bL } },
|
|
/* 16 << 210 */
|
|
{ { 0xee7332c7904fc3faL,0x14a23f45c7e3636aL,0xc38659c3f091d9aaL,
|
|
0x4a995e5db12d8540L },
|
|
{ 0x20a53becf3a5598aL,0x56534b17b1eaa995L,0x9ed3dca4bf04e03cL,
|
|
0x716c563ad8d56268L } },
|
|
/* 17 << 210 */
|
|
{ { 0x27ba77a41d6178e7L,0xe4c80c4068a1ff8eL,0x750110990a13f63dL,
|
|
0x7bf33521a61d46f3L },
|
|
{ 0x0aff218e10b365bbL,0x810218040fd7ea75L,0x05a3fd8aa4b3a925L,
|
|
0xb829e75f9b3db4e6L } },
|
|
/* 18 << 210 */
|
|
{ { 0x6bdc75a54d53e5fbL,0x04a5dc02d52717e3L,0x86af502fe9a42ec2L,
|
|
0x8867e8fb2630e382L },
|
|
{ 0xbf845c6ebec9889bL,0x54f491f2cb47c98dL,0xa3091fba790c2a12L,
|
|
0xd7f6fd78c20f708bL } },
|
|
/* 19 << 210 */
|
|
{ { 0xa569ac30acde5e17L,0xd0f996d06852b4d7L,0xe51d4bb54609ae54L,
|
|
0x3fa37d170daed061L },
|
|
{ 0x62a8868434b8fb41L,0x99a2acbd9efb64f1L,0xb75c1a5e6448e1f2L,
|
|
0xfa99951a42b5a069L } },
|
|
/* 20 << 210 */
|
|
{ { 0x6d956e892f3b26e7L,0xf4709860da875247L,0x3ad151792482dda3L,
|
|
0xd64110e3017d82f0L },
|
|
{ 0x14928d2cfad414e4L,0x2b155f582ed02b24L,0x481a141bcb821bf1L,
|
|
0x12e3c7704f81f5daL } },
|
|
/* 21 << 210 */
|
|
{ { 0xe49c5de59fff8381L,0x110532325bbec894L,0xa0d051cc454d88c4L,
|
|
0x4f6db89c1f8e531bL },
|
|
{ 0x34fe3fd6ca563a44L,0x7f5c221558da8ab9L,0x8445016d9474f0a1L,
|
|
0x17d34d61cb7d8a0aL } },
|
|
/* 22 << 210 */
|
|
{ { 0x8e9d39101c474019L,0xcaff2629d52ceefbL,0xf9cf3e32c1622c2bL,
|
|
0xd4b95e3ce9071a05L },
|
|
{ 0xfbbca61f1594438cL,0x1eb6e6a604aadedfL,0x853027f468e14940L,
|
|
0x221d322adfabda9cL } },
|
|
/* 23 << 210 */
|
|
{ { 0xed8ea9f6b7cb179aL,0xdc7b764db7934dccL,0xfcb139405e09180dL,
|
|
0x6629a6bfb47dc2ddL },
|
|
{ 0xbfc55e4e9f5a915eL,0xb1db9d376204441eL,0xf82d68cf930c5f53L,
|
|
0x17d3a142cbb605b1L } },
|
|
/* 24 << 210 */
|
|
{ { 0xdd5944ea308780f2L,0xdc8de7613845f5e4L,0x6beaba7d7624d7a3L,
|
|
0x1e709afd304df11eL },
|
|
{ 0x9536437602170456L,0xbf204b3ac8f94b64L,0x4e53af7c5680ca68L,
|
|
0x0526074ae0c67574L } },
|
|
/* 25 << 210 */
|
|
{ { 0x95d8cef8ecd92af6L,0xe6b9fa7a6cd1745aL,0x3d546d3da325c3e4L,
|
|
0x1f57691d9ae93aaeL },
|
|
{ 0xe891f3fe9d2e1a33L,0xd430093fac063d35L,0xeda59b125513a327L,
|
|
0xdc2134f35536f18fL } },
|
|
/* 26 << 210 */
|
|
{ { 0xaa51fe2c5c210286L,0x3f68aaee1cab658cL,0x5a23a00bf9357292L,
|
|
0x9a626f397efdabedL },
|
|
{ 0xfe2b3bf3199d78e3L,0xb7a2af7771bbc345L,0x3d19827a1e59802cL,
|
|
0x823bbc15b487a51cL } },
|
|
/* 27 << 210 */
|
|
{ { 0x856139f299d0a422L,0x9ac3df65f456c6fbL,0xaddf65c6701f8bd6L,
|
|
0x149f321e3758df87L },
|
|
{ 0xb1ecf714721b7ebaL,0xe17df09831a3312aL,0xdb2fd6ecd5c4d581L,
|
|
0xfd02996f8fcea1b3L } },
|
|
/* 28 << 210 */
|
|
{ { 0xe29fa63e7882f14fL,0xc9f6dc3507c6cadcL,0x46f22d6fb882bed0L,
|
|
0x1a45755bd118e52cL },
|
|
{ 0x9f2c7c277c4608cfL,0x7ccbdf32568012c2L,0xfcb0aedd61729b0eL,
|
|
0x7ca2ca9ef7d75dbfL } },
|
|
/* 29 << 210 */
|
|
{ { 0xf58fecb16f640f62L,0xe274b92b39f51946L,0x7f4dfc046288af44L,
|
|
0x0a91f32aeac329e5L },
|
|
{ 0x43ad274bd6aaba31L,0x719a16400f6884f9L,0x685d29f6daf91e20L,
|
|
0x5ec1cc3327e49d52L } },
|
|
/* 30 << 210 */
|
|
{ { 0x38f4de963b54a059L,0x0e0015e5efbcfdb3L,0x177d23d94dbb8da6L,
|
|
0x98724aa297a617adL },
|
|
{ 0x30f0885bfdb6558eL,0xf9f7a28ac7899a96L,0xd2ae8ac8872dc112L,
|
|
0xfa0642ca73c3c459L } },
|
|
/* 31 << 210 */
|
|
{ { 0x15296981e7dfc8d6L,0x67cd44501fb5b94aL,0x0ec71cf10eddfd37L,
|
|
0xc7e5eeb39a8eddc7L },
|
|
{ 0x02ac8e3d81d95028L,0x0088f17270b0e35dL,0xec041fabe1881fe3L,
|
|
0x62cf71b8d99e7faaL } },
|
|
/* 32 << 210 */
|
|
{ { 0x5043dea7e0f222c2L,0x309d42ac72e65142L,0x94fe9ddd9216cd30L,
|
|
0xd6539c7d0f87feecL },
|
|
{ 0x03c5a57c432ac7d7L,0x72692cf0327fda10L,0xec28c85f280698deL,
|
|
0x2331fb467ec283b1L } },
|
|
/* 33 << 210 */
|
|
{ { 0xd34bfa322867e633L,0x78709a820a9cc815L,0xb7fe6964875e2fa5L,
|
|
0x25cc064f9e98bfb5L },
|
|
{ 0x9eb0151c493a65c5L,0x5fb5d94153182464L,0x69e6f130f04618e2L,
|
|
0xa8ecec22f89c8ab6L } },
|
|
/* 34 << 210 */
|
|
{ { 0xcd6ac88bb96209bdL,0x65fa8cdbb3e1c9e0L,0xa47d22f54a8d8eacL,
|
|
0x83895cdf8d33f963L },
|
|
{ 0xa8adca59b56cd3d1L,0x10c8350bdaf38232L,0x2b161fb3a5080a9fL,
|
|
0xbe7f5c643af65b3aL } },
|
|
/* 35 << 210 */
|
|
{ { 0x2c75403997403a11L,0x94626cf7121b96afL,0x431de7c46a983ec2L,
|
|
0x3780dd3a52cc3df7L },
|
|
{ 0xe28a0e462baf8e3bL,0xabe68aad51d299aeL,0x603eb8f9647a2408L,
|
|
0x14c61ed65c750981L } },
|
|
/* 36 << 210 */
|
|
{ { 0x88b34414c53352e7L,0x5a34889c1337d46eL,0x612c1560f95f2bc8L,
|
|
0x8a3f8441d4807a3aL },
|
|
{ 0x680d9e975224da68L,0x60cd6e88c3eb00e9L,0x3875a98e9a6bc375L,
|
|
0xdc80f9244fd554c2L } },
|
|
/* 37 << 210 */
|
|
{ { 0x6c4b34156ac77407L,0xa1e5ea8f25420681L,0x541bfa144607a458L,
|
|
0x5dbc7e7a96d7fbf9L },
|
|
{ 0x646a851b31590a47L,0x039e85ba15ee6df8L,0xd19fa231d7b43fc0L,
|
|
0x84bc8be8299a0e04L } },
|
|
/* 38 << 210 */
|
|
{ { 0x2b9d2936f20df03aL,0x240543828608d472L,0x76b6ba049149202aL,
|
|
0xb21c38313670e7b7L },
|
|
{ 0xddd93059d6fdee10L,0x9da47ad378488e71L,0x99cc1dfda0fcfb25L,
|
|
0x42abde1064696954L } },
|
|
/* 39 << 210 */
|
|
{ { 0x14cc15fc17eab9feL,0xd6e863e4d3e70972L,0x29a7765c6432112cL,
|
|
0x886600015b0774d8L },
|
|
{ 0x3729175a2c088eaeL,0x13afbcae8230b8d4L,0x44768151915f4379L,
|
|
0xf086431ad8d22812L } },
|
|
/* 40 << 210 */
|
|
{ { 0x37461955c298b974L,0x905fb5f0f8711e04L,0x787abf3afe969d18L,
|
|
0x392167c26f6a494eL },
|
|
{ 0xfc7a0d2d28c511daL,0xf127c7dcb66a262dL,0xf9c4bb95fd63fdf0L,
|
|
0x900165893913ef46L } },
|
|
/* 41 << 210 */
|
|
{ { 0x74d2a73c11aa600dL,0x2f5379bd9fb5ab52L,0xe49e53a47fb70068L,
|
|
0x68dd39e5404aa9a7L },
|
|
{ 0xb9b0cf572ecaa9c3L,0xba0e103be824826bL,0x60c2198b4631a3c4L,
|
|
0xc5ff84abfa8966a2L } },
|
|
/* 42 << 210 */
|
|
{ { 0x2d6ebe22ac95aff8L,0x1c9bb6dbb5a46d09L,0x419062da53ee4f8dL,
|
|
0x7b9042d0bb97efefL },
|
|
{ 0x0f87f080830cf6bdL,0x4861d19a6ec8a6c6L,0xd3a0daa1202f01aaL,
|
|
0xb0111674f25afbd5L } },
|
|
/* 43 << 210 */
|
|
{ { 0x6d00d6cf1afb20d9L,0x1369500040671bc5L,0x913ab0dc2485ea9bL,
|
|
0x1f2bed069eef61acL },
|
|
{ 0x850c82176d799e20L,0x93415f373271c2deL,0x5afb06e96c4f5910L,
|
|
0x688a52dfc4e9e421L } },
|
|
/* 44 << 210 */
|
|
{ { 0x30495ba3e2a9a6dbL,0x4601303d58f9268bL,0xbe3b0dad7eb0f04fL,
|
|
0x4ea472504456936dL },
|
|
{ 0x8caf8798d33fd3e7L,0x1ccd8a89eb433708L,0x9effe3e887fd50adL,
|
|
0xbe240a566b29c4dfL } },
|
|
/* 45 << 210 */
|
|
{ { 0xec4ffd98ca0e7ebdL,0xf586783ae748616eL,0xa5b00d8fc77baa99L,
|
|
0x0acada29b4f34c9cL },
|
|
{ 0x36dad67d0fe723acL,0x1d8e53a539c36c1eL,0xe4dd342d1f4bea41L,
|
|
0x64fd5e35ebc9e4e0L } },
|
|
/* 46 << 210 */
|
|
{ { 0x96f01f9057908805L,0xb5b9ea3d5ed480ddL,0x366c5dc23efd2dd0L,
|
|
0xed2fe3056e9dfa27L },
|
|
{ 0x4575e8926e9197e2L,0x11719c09ab502a5dL,0x264c7bece81f213fL,
|
|
0x741b924155f5c457L } },
|
|
/* 47 << 210 */
|
|
{ { 0x78ac7b6849a5f4f4L,0xf91d70a29fc45b7dL,0x39b05544b0f5f355L,
|
|
0x11f06bceeef930d9L },
|
|
{ 0xdb84d25d038d05e1L,0x04838ee5bacc1d51L,0x9da3ce869e8ee00bL,
|
|
0xc3412057c36eda1fL } },
|
|
/* 48 << 210 */
|
|
{ { 0xae80b91364d9c2f4L,0x7468bac3a010a8ffL,0xdfd2003737359d41L,
|
|
0x1a0f5ab815efeaccL },
|
|
{ 0x7c25ad2f659d0ce0L,0x4011bcbb6785cff1L,0x128b99127e2192c7L,
|
|
0xa549d8e113ccb0e8L } },
|
|
/* 49 << 210 */
|
|
{ { 0x805588d8c85438b1L,0x5680332dbc25cb27L,0xdcd1bc961a4bfdf4L,
|
|
0x779ff428706f6566L },
|
|
{ 0x8bbee998f059987aL,0xf6ce8cf2cc686de7L,0xf8ad3c4a953cfdb2L,
|
|
0xd1d426d92205da36L } },
|
|
/* 50 << 210 */
|
|
{ { 0xb3c0f13fc781a241L,0x3e89360ed75362a8L,0xccd05863c8a91184L,
|
|
0x9bd0c9b7efa8a7f4L },
|
|
{ 0x97ee4d538a912a4bL,0xde5e15f8bcf518fdL,0x6a055bf8c467e1e0L,
|
|
0x10be4b4b1587e256L } },
|
|
/* 51 << 210 */
|
|
{ { 0xd90c14f2668621c9L,0xd5518f51ab9c92c1L,0x8e6a0100d6d47b3cL,
|
|
0xcbe980dd66716175L },
|
|
{ 0x500d3f10ddd83683L,0x3b6cb35d99cac73cL,0x53730c8b6083d550L,
|
|
0xcf159767df0a1987L } },
|
|
/* 52 << 210 */
|
|
{ { 0x84bfcf5343ad73b3L,0x1b528c204f035a94L,0x4294edf733eeac69L,
|
|
0xb6283e83817f3240L },
|
|
{ 0xc3fdc9590a5f25b1L,0xefaf8aa55844ee22L,0xde269ba5dbdde4deL,
|
|
0xe3347160c56133bfL } },
|
|
/* 53 << 210 */
|
|
{ { 0xc11842198d9ea9f8L,0x090de5dbf3fc1ab5L,0x404c37b10bf22cdaL,
|
|
0x7de20ec8f5618894L },
|
|
{ 0x754c588eecdaecabL,0x6ca4b0ed88342743L,0x76f08bddf4a938ecL,
|
|
0xd182de8991493ccbL } },
|
|
/* 54 << 210 */
|
|
{ { 0xd652c53ec8a4186aL,0xb3e878db946d8e33L,0x088453c05f37663cL,
|
|
0x5cd9daaab407748bL },
|
|
{ 0xa1f5197f586d5e72L,0x47500be8c443ca59L,0x78ef35b2e2652424L,
|
|
0x09c5d26f6dd7767dL } },
|
|
/* 55 << 210 */
|
|
{ { 0x7175a79aa74d3f7bL,0x0428fd8dcf5ea459L,0x511cb97ca5d1746dL,
|
|
0x36363939e71d1278L },
|
|
{ 0xcf2df95510350bf4L,0xb381743960aae782L,0xa748c0e43e688809L,
|
|
0x98021fbfd7a5a006L } },
|
|
/* 56 << 210 */
|
|
{ { 0x9076a70c0e367a98L,0xbea1bc150f62b7c2L,0x2645a68c30fe0343L,
|
|
0xacaffa78699dc14fL },
|
|
{ 0xf4469964457bf9c4L,0x0db6407b0d2ead83L,0x68d56cadb2c6f3ebL,
|
|
0x3b512e73f376356cL } },
|
|
/* 57 << 210 */
|
|
{ { 0xe43b0e1ffce10408L,0x89ddc0035a5e257dL,0xb0ae0d120362e5b3L,
|
|
0x07f983c7b0519161L },
|
|
{ 0xc2e94d155d5231e7L,0xcff22aed0b4f9513L,0xb02588dd6ad0b0b5L,
|
|
0xb967d1ac11d0dcd5L } },
|
|
/* 58 << 210 */
|
|
{ { 0x8dac6bc6cf777b6cL,0x0062bdbd4c6d1959L,0x53da71b50ef5cc85L,
|
|
0x07012c7d4006f14fL },
|
|
{ 0x4617f962ac47800dL,0x53365f2bc102ed75L,0xb422efcb4ab8c9d3L,
|
|
0x195cb26b34af31c9L } },
|
|
/* 59 << 210 */
|
|
{ { 0x3a926e2905f2c4ceL,0xbd2bdecb9856966cL,0x5d16ab3a85527015L,
|
|
0x9f81609e4486c231L },
|
|
{ 0xd8b96b2cda350002L,0xbd054690fa1b7d36L,0xdc90ebf5e71d79bcL,
|
|
0xf241b6f908964e4eL } },
|
|
/* 60 << 210 */
|
|
{ { 0x7c8386432fe3cd4cL,0xe0f33acbb4bc633cL,0xb4a9ecec3d139f1fL,
|
|
0x05ce69cddc4a1f49L },
|
|
{ 0xa19d1b16f5f98aafL,0x45bb71d66f23e0efL,0x33789fcd46cdfdd3L,
|
|
0x9b8e2978cee040caL } },
|
|
/* 61 << 210 */
|
|
{ { 0x9c69b246ae0a6828L,0xba533d247078d5aaL,0x7a2e42c07bb4fbdbL,
|
|
0xcfb4879a7035385cL },
|
|
{ 0x8c3dd30b3281705bL,0x7e361c6c404fe081L,0x7b21649c3f604edfL,
|
|
0x5dbf6a3fe52ffe47L } },
|
|
/* 62 << 210 */
|
|
{ { 0xc41b7c234b54d9bfL,0x1374e6813511c3d9L,0x1863bf16c1b2b758L,
|
|
0x90e785071e9e6a96L },
|
|
{ 0xab4bf98d5d86f174L,0xd74e0bd385e96fe4L,0x8afde39fcac5d344L,
|
|
0x90946dbcbd91b847L } },
|
|
/* 63 << 210 */
|
|
{ { 0xf5b42358fe1a838cL,0x05aae6c5620ac9d8L,0x8e193bd8a1ce5a0bL,
|
|
0x8f7105714dabfd72L },
|
|
{ 0x8d8fdd48182caaacL,0x8c4aeefa040745cfL,0x73c6c30af3b93e6dL,
|
|
0x991241f316f42011L } },
|
|
/* 64 << 210 */
|
|
{ { 0xa0158eeae457a477L,0xd19857dbee6ddc05L,0xb326522418c41671L,
|
|
0x3ffdfc7e3c2c0d58L },
|
|
{ 0x3a3a525426ee7cdaL,0x341b0869df02c3a8L,0xa023bf42723bbfc8L,
|
|
0x3d15002a14452691L } },
|
|
/* 0 << 217 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 217 */
|
|
{ { 0x5ef7324c85edfa30L,0x2597655487d4f3daL,0x352f5bc0dcb50c86L,
|
|
0x8f6927b04832a96cL },
|
|
{ 0xd08ee1ba55f2f94cL,0x6a996f99344b45faL,0xe133cb8da8aa455dL,
|
|
0x5d0721ec758dc1f7L } },
|
|
/* 2 << 217 */
|
|
{ { 0x6ba7a92079e5fb67L,0xe1331feb70aa725eL,0x5080ccf57df5d837L,
|
|
0xe4cae01d7ff72e21L },
|
|
{ 0xd9243ee60412a77dL,0x06ff7cacdf449025L,0xbe75f7cd23ef5a31L,
|
|
0xbc9578220ddef7a8L } },
|
|
/* 3 << 217 */
|
|
{ { 0x8cf7230cb0ce1c55L,0x5b534d050bbfb607L,0xee1ef1130e16363bL,
|
|
0x27e0aa7ab4999e82L },
|
|
{ 0xce1dac2d79362c41L,0x67920c9091bb6cb0L,0x1e648d632223df24L,
|
|
0x0f7d9eefe32e8f28L } },
|
|
/* 4 << 217 */
|
|
{ { 0x6943f39afa833834L,0x22951722a6328562L,0x81d63dd54170fc10L,
|
|
0x9f5fa58faecc2e6dL },
|
|
{ 0xb66c8725e77d9a3bL,0x11235cea6384ebe0L,0x06a8c1185845e24aL,
|
|
0x0137b286ebd093b1L } },
|
|
/* 5 << 217 */
|
|
{ { 0xc589e1ce44ace150L,0xe0f8d3d94381e97cL,0x59e99b1162c5a4b8L,
|
|
0x90d262f7fd0ec9f9L },
|
|
{ 0xfbc854c9283e13c9L,0x2d04fde7aedc7085L,0x057d776547dcbecbL,
|
|
0x8dbdf5919a76fa5fL } },
|
|
/* 6 << 217 */
|
|
{ { 0xd01506950de1e578L,0x2e1463e7e9f72bc6L,0xffa684411b39eca5L,
|
|
0x673c85307c037f2fL },
|
|
{ 0xd0d6a600747f91daL,0xb08d43e1c9cb78e9L,0x0fc0c64427b5cef5L,
|
|
0x5c1d160aa60a2fd6L } },
|
|
/* 7 << 217 */
|
|
{ { 0xf98cae5328c8e13bL,0x375f10c4b2eddcd1L,0xd4eb8b7f5cce06adL,
|
|
0xb4669f4580a2e1efL },
|
|
{ 0xd593f9d05bbd8699L,0x5528a4c9e7976d13L,0x3923e0951c7e28d3L,
|
|
0xb92937903f6bb577L } },
|
|
/* 8 << 217 */
|
|
{ { 0xdb567d6ac42bd6d2L,0x6df86468bb1f96aeL,0x0efe5b1a4843b28eL,
|
|
0x961bbb056379b240L },
|
|
{ 0xb6caf5f070a6a26bL,0x70686c0d328e6e39L,0x80da06cf895fc8d3L,
|
|
0x804d8810b363fdc9L } },
|
|
/* 9 << 217 */
|
|
{ { 0xbe22877b207f1670L,0x9b0dd1884e615291L,0x625ae8dc97a3c2bfL,
|
|
0x08584ef7439b86e8L },
|
|
{ 0xde7190a5dcd898ffL,0x26286c402058ee3dL,0x3db0b2175f87b1c1L,
|
|
0xcc334771102a6db5L } },
|
|
/* 10 << 217 */
|
|
{ { 0xd99de9542f770fb1L,0x97c1c6204cd7535eL,0xd3b6c4483f09cefcL,
|
|
0xd725af155a63b4f8L },
|
|
{ 0x0c95d24fc01e20ecL,0xdfd374949ae7121fL,0x7d6ddb72ec77b7ecL,
|
|
0xfe079d3b0353a4aeL } },
|
|
/* 11 << 217 */
|
|
{ { 0x3066e70a2e6ac8d2L,0x9c6b5a43106e5c05L,0x52d3c6f5ede59b8cL,
|
|
0x30d6a5c3fccec9aeL },
|
|
{ 0xedec7c224fc0a9efL,0x190ff08395c16cedL,0xbe12ec8f94de0fdeL,
|
|
0x0d131ab8852d3433L } },
|
|
/* 12 << 217 */
|
|
{ { 0x42ace07e85701291L,0x94793ed9194061a8L,0x30e83ed6d7f4a485L,
|
|
0x9eec7269f9eeff4dL },
|
|
{ 0x90acba590c9d8005L,0x5feca4581e79b9d1L,0x8fbe54271d506a1eL,
|
|
0xa32b2c8e2439cfa7L } },
|
|
/* 13 << 217 */
|
|
{ { 0x1671c17373dd0b4eL,0x37a2821444a054c6L,0x81760a1b4e8b53f1L,
|
|
0xa6c04224f9f93b9eL },
|
|
{ 0x18784b34cf671e3cL,0x81bbecd2cda9b994L,0x38831979b2ab3848L,
|
|
0xef54feb7f2e03c2dL } },
|
|
/* 14 << 217 */
|
|
{ { 0xcf197ca7fb8088faL,0x014272474ddc96c5L,0xa2d2550a30777176L,
|
|
0x534698984d0cf71dL },
|
|
{ 0x6ce937b83a2aaac6L,0xe9f91dc35af38d9bL,0x2598ad83c8bf2899L,
|
|
0x8e706ac9b5536c16L } },
|
|
/* 15 << 217 */
|
|
{ { 0x40dc7495f688dc98L,0x26490cd7124c4afcL,0xe651ec841f18775cL,
|
|
0x393ea6c3b4fdaf4aL },
|
|
{ 0x1e1f33437f338e0dL,0x39fb832b6053e7b5L,0x46e702da619e14d5L,
|
|
0x859cacd1cdeef6e0L } },
|
|
/* 16 << 217 */
|
|
{ { 0x63b99ce74462007dL,0xb8ab48a54cb5f5b7L,0x9ec673d2f55edde7L,
|
|
0xd1567f748cfaefdaL },
|
|
{ 0x46381b6b0887bcecL,0x694497cee178f3c2L,0x5e6525e31e6266cbL,
|
|
0x5931de26697d6413L } },
|
|
/* 17 << 217 */
|
|
{ { 0x87f8df7c0e58d493L,0xb1ae5ed058b73f12L,0xc368f784dea0c34dL,
|
|
0x9bd0a120859a91a0L },
|
|
{ 0xb00d88b7cc863c68L,0x3a1cc11e3d1f4d65L,0xea38e0e70aa85593L,
|
|
0x37f13e987dc4aee8L } },
|
|
/* 18 << 217 */
|
|
{ { 0x10d38667bc947badL,0x738e07ce2a36ee2eL,0xc93470cdc577fcacL,
|
|
0xdee1b6162782470dL },
|
|
{ 0x36a25e672e793d12L,0xd6aa6caee0f186daL,0x474d0fd980e07af7L,
|
|
0xf7cdc47dba8a5cd4L } },
|
|
/* 19 << 217 */
|
|
{ { 0x28af6d9dab15247fL,0x7c789c10493a537fL,0x7ac9b11023a334e7L,
|
|
0x0236ac0912c9c277L },
|
|
{ 0xa7e5bd251d7a5144L,0x098b9c2af13ec4ecL,0x3639dacad3f0abcaL,
|
|
0x642da81aa23960f9L } },
|
|
/* 20 << 217 */
|
|
{ { 0x7d2e5c054f7269b1L,0xfcf30777e287c385L,0x10edc84ff2a46f21L,
|
|
0x354417574f43fa36L },
|
|
{ 0xf1327899fd703431L,0xa438d7a616dd587aL,0x65c34c57e9c8352dL,
|
|
0xa728edab5cc5a24eL } },
|
|
/* 21 << 217 */
|
|
{ { 0xaed78abc42531689L,0x0a51a0e8010963efL,0x5776fa0ad717d9b3L,
|
|
0xf356c2397dd3428bL },
|
|
{ 0x29903fff8d3a3dacL,0x409597fa3d94491fL,0x4cd7a5ffbf4a56a4L,
|
|
0xe50964748adab462L } },
|
|
/* 22 << 217 */
|
|
{ { 0xa97b51265c3427b0L,0x6401405cd282c9bdL,0x3629f8d7222c5c45L,
|
|
0xb1c02c16e8d50aedL },
|
|
{ 0xbea2ed75d9635bc9L,0x226790c76e24552fL,0x3c33f2a365f1d066L,
|
|
0x2a43463e6dfccc2eL } },
|
|
/* 23 << 217 */
|
|
{ { 0x8cc3453adb483761L,0xe7cc608565d5672bL,0x277ed6cbde3efc87L,
|
|
0x19f2f36869234eafL },
|
|
{ 0x9aaf43175c0b800bL,0x1f1e7c898b6da6e2L,0x6cfb4715b94ec75eL,
|
|
0xd590dd5f453118c2L } },
|
|
/* 24 << 217 */
|
|
{ { 0x14e49da11f17a34cL,0x5420ab39235a1456L,0xb76372412f50363bL,
|
|
0x7b15d623c3fabb6eL },
|
|
{ 0xa0ef40b1e274e49cL,0x5cf5074496b1860aL,0xd6583fbf66afe5a4L,
|
|
0x44240510f47e3e9aL } },
|
|
/* 25 << 217 */
|
|
{ { 0x9925434311b2d595L,0xf1367499eec8df57L,0x3cb12c613e73dd05L,
|
|
0xd248c0337dac102aL },
|
|
{ 0xcf154f13a77739f5L,0xbf4288cb23d2af42L,0xaa64c9b632e4a1cfL,
|
|
0xee8c07a8c8a208f3L } },
|
|
/* 26 << 217 */
|
|
{ { 0xe10d49996fe8393fL,0x0f809a3fe91f3a32L,0x61096d1c802f63c8L,
|
|
0x289e146257750d3dL },
|
|
{ 0xed06167e9889feeaL,0xd5c9c0e2e0993909L,0x46fca0d856508ac6L,
|
|
0x918260474f1b8e83L } },
|
|
/* 27 << 217 */
|
|
{ { 0x4f2c877a9a4a2751L,0x71bd0072cae6feadL,0x38df8dcc06aa1941L,
|
|
0x5a074b4c63beeaa8L },
|
|
{ 0xd6d65934c1cec8edL,0xa6ecb49eaabc03bdL,0xaade91c2de8a8415L,
|
|
0xcfb0efdf691136e0L } },
|
|
/* 28 << 217 */
|
|
{ { 0x11af45ee23ab3495L,0xa132df880b77463dL,0x8923c15c815d06f4L,
|
|
0xc3ceb3f50d61a436L },
|
|
{ 0xaf52291de88fb1daL,0xea0579741da12179L,0xb0d7218cd2fef720L,
|
|
0x6c0899c98e1d8845L } },
|
|
/* 29 << 217 */
|
|
{ { 0x98157504752ddad7L,0xd60bd74fa1a68a97L,0x7047a3a9f658fb99L,
|
|
0x1f5d86d65f8511e4L },
|
|
{ 0xb8a4bc424b5a6d88L,0x69eb2c331abefa7dL,0x95bf39e813c9c510L,
|
|
0xf571960ad48aab43L } },
|
|
/* 30 << 217 */
|
|
{ { 0x7e8cfbcf704e23c6L,0xc71b7d2228aaa65bL,0xa041b2bd245e3c83L,
|
|
0x69b98834d21854ffL },
|
|
{ 0x89d227a3963bfeecL,0x99947aaade7da7cbL,0x1d9ee9dbee68a9b1L,
|
|
0x0a08f003698ec368L } },
|
|
/* 31 << 217 */
|
|
{ { 0xe9ea409478ef2487L,0xc8d2d41502cfec26L,0xc52f9a6eb7dcf328L,
|
|
0x0ed489e385b6a937L },
|
|
{ 0x9b94986bbef3366eL,0x0de59c70edddddb8L,0xffdb748ceadddbe2L,
|
|
0x9b9784bb8266ea40L } },
|
|
/* 32 << 217 */
|
|
{ { 0x142b55021a93507aL,0xb4cd11878d3c06cfL,0xdf70e76a91ec3f40L,
|
|
0x484e81ad4e7553c2L },
|
|
{ 0x830f87b5272e9d6eL,0xea1c93e5c6ff514aL,0x67cc2adcc4192a8eL,
|
|
0xc77e27e242f4535aL } },
|
|
/* 33 << 217 */
|
|
{ { 0x9cdbab36d2b713c5L,0x86274ea0cf7b0cd3L,0x784680f309af826bL,
|
|
0xbfcc837a0c72dea3L },
|
|
{ 0xa8bdfe9dd6529b73L,0x708aa22863a88002L,0x6c7a9a54c91d45b9L,
|
|
0xdf1a38bbfd004f56L } },
|
|
/* 34 << 217 */
|
|
{ { 0x2e8c9a26b8bad853L,0x2d52cea33723eae7L,0x054d6d8156ca2830L,
|
|
0xa3317d149a8dc411L },
|
|
{ 0xa08662fefd4ddedaL,0xed2a153ab55d792bL,0x7035c16abfc6e944L,
|
|
0xb6bc583400171cf3L } },
|
|
/* 35 << 217 */
|
|
{ { 0xe27152b383d102b6L,0xfe695a470646b848L,0xa5bb09d8916e6d37L,
|
|
0xb4269d640d17015eL },
|
|
{ 0x8d8156a10a1d2285L,0xfeef6c5146d26d72L,0x9dac57c84c5434a7L,
|
|
0x0282e5be59d39e31L } },
|
|
/* 36 << 217 */
|
|
{ { 0xedfff181721c486dL,0x301baf10bc58824eL,0x8136a6aa00570031L,
|
|
0x55aaf78c1cddde68L },
|
|
{ 0x2682937159c63952L,0x3a3bd2748bc25bafL,0xecdf8657b7e52dc3L,
|
|
0x2dd8c087fd78e6c8L } },
|
|
/* 37 << 217 */
|
|
{ { 0x20553274f5531461L,0x8b4a12815d95499bL,0xe2c8763a1a80f9d2L,
|
|
0xd1dbe32b4ddec758L },
|
|
{ 0xaf12210d30c34169L,0xba74a95378baa533L,0x3d133c6ea438f254L,
|
|
0xa431531a201bef5bL } },
|
|
/* 38 << 217 */
|
|
{ { 0x15295e22f669d7ecL,0xca374f64357fb515L,0x8a8406ffeaa3fdb3L,
|
|
0x106ae448df3f2da8L },
|
|
{ 0x8f9b0a9033c8e9a1L,0x234645e271ad5885L,0x3d0832241c0aed14L,
|
|
0xf10a7d3e7a942d46L } },
|
|
/* 39 << 217 */
|
|
{ { 0x7c11deee40d5c9beL,0xb2bae7ffba84ed98L,0x93e97139aad58dddL,
|
|
0x3d8727963f6d1fa3L },
|
|
{ 0x483aca818569ff13L,0x8b89a5fb9a600f72L,0x4cbc27c3c06f2b86L,
|
|
0x2213071363ad9c0bL } },
|
|
/* 40 << 217 */
|
|
{ { 0xb5358b1e48ac2840L,0x18311294ecba9477L,0xda58f990a6946b43L,
|
|
0x3098baf99ab41819L },
|
|
{ 0x66c4c1584198da52L,0xab4fc17c146bfd1bL,0x2f0a4c3cbf36a908L,
|
|
0x2ae9e34b58cf7838L } },
|
|
/* 41 << 217 */
|
|
{ { 0xf411529e3fa11b1fL,0x21e43677974af2b4L,0x7c20958ec230793bL,
|
|
0x710ea88516e840f3L },
|
|
{ 0xfc0b21fcc5dc67cfL,0x08d5164788405718L,0xd955c21fcfe49eb7L,
|
|
0x9722a5d556dd4a1fL } },
|
|
/* 42 << 217 */
|
|
{ { 0xc9ef50e2c861baa5L,0xc0c21a5d9505ac3eL,0xaf6b9a338b7c063fL,
|
|
0xc63703392f4779c1L },
|
|
{ 0x22df99c7638167c3L,0xfe6ffe76795db30cL,0x2b822d33a4854989L,
|
|
0xfef031dd30563aa5L } },
|
|
/* 43 << 217 */
|
|
{ { 0x16b09f82d57c667fL,0xc70312cecc0b76f1L,0xbf04a9e6c9118aecL,
|
|
0x82fcb4193409d133L },
|
|
{ 0x1a8ab385ab45d44dL,0xfba07222617b83a3L,0xb05f50dd58e81b52L,
|
|
0x1d8db55321ce5affL } },
|
|
/* 44 << 217 */
|
|
{ { 0x3097b8d4e344a873L,0x7d8d116dfe36d53eL,0x6db22f587875e750L,
|
|
0x2dc5e37343e144eaL },
|
|
{ 0xc05f32e6e799eb95L,0xe9e5f4df6899e6ecL,0xbdc3bd681fab23d5L,
|
|
0xb72b8ab773af60e6L } },
|
|
/* 45 << 217 */
|
|
{ { 0x8db27ae02cecc84aL,0x600016d87bdb871cL,0x42a44b13d7c46f58L,
|
|
0xb8919727c3a77d39L },
|
|
{ 0xcfc6bbbddafd6088L,0x1a7401466bd20d39L,0x8c747abd98c41072L,
|
|
0x4c91e765bdf68ea1L } },
|
|
/* 46 << 217 */
|
|
{ { 0x7c95e5ca08819a78L,0xcf48b729c9587921L,0x091c7c5fdebbcc7dL,
|
|
0x6f287404f0e05149L },
|
|
{ 0xf83b5ac226cd44ecL,0x88ae32a6cfea250eL,0x6ac5047a1d06ebc5L,
|
|
0xc7e550b4d434f781L } },
|
|
/* 47 << 217 */
|
|
{ { 0x61ab1cf25c727bd2L,0x2e4badb11cf915b0L,0x1b4dadecf69d3920L,
|
|
0xe61b1ca6f14c1dfeL },
|
|
{ 0x90b479ccbd6bd51fL,0x8024e4018045ec30L,0xcab29ca325ef0e62L,
|
|
0x4f2e941649e4ebc0L } },
|
|
/* 48 << 217 */
|
|
{ { 0x45eb40ec0ccced58L,0x25cd4b9c0da44f98L,0x43e06458871812c6L,
|
|
0x99f80d5516cef651L },
|
|
{ 0x571340c9ce6dc153L,0x138d5117d8665521L,0xacdb45bc4e07014dL,
|
|
0x2f34bb3884b60b91L } },
|
|
/* 49 << 217 */
|
|
{ { 0xf44a4fd22ae8921eL,0xb039288e892ba1e2L,0x9da50174b1c180b2L,
|
|
0x6b70ab661693dc87L },
|
|
{ 0x7e9babc9e7057481L,0x4581ddef9c80dc41L,0x0c890da951294682L,
|
|
0x0b5629d33f4736e5L } },
|
|
/* 50 << 217 */
|
|
{ { 0x2340c79eb06f5b41L,0xa42e84ce4e243469L,0xf9a20135045a71a9L,
|
|
0xefbfb415d27b6fb6L },
|
|
{ 0x25ebea239d33cd6fL,0x9caedb88aa6c0af8L,0x53dc7e9ad9ce6f96L,
|
|
0x3897f9fd51e0b15aL } },
|
|
/* 51 << 217 */
|
|
{ { 0xf51cb1f88e5d788eL,0x1aec7ba8e1d490eeL,0x265991e0cc58cb3cL,
|
|
0x9f306e8c9fc3ad31L },
|
|
{ 0x5fed006e5040a0acL,0xca9d5043fb476f2eL,0xa19c06e8beea7a23L,
|
|
0xd28658010edabb63L } },
|
|
/* 52 << 217 */
|
|
{ { 0xdb92293f6967469aL,0x2894d8398d8a8ed8L,0x87c9e406bbc77122L,
|
|
0x8671c6f12ea3a26aL },
|
|
{ 0xe42df8d6d7de9853L,0x2e3ce346b1f2bcc7L,0xda601dfc899d50cfL,
|
|
0xbfc913defb1b598fL } },
|
|
/* 53 << 217 */
|
|
{ { 0x81c4909fe61f7908L,0x192e304f9bbc7b29L,0xc3ed8738c104b338L,
|
|
0xedbe9e47783f5d61L },
|
|
{ 0x0c06e9be2db30660L,0xda3e613fc0eb7d8eL,0xd8fa3e97322e096eL,
|
|
0xfebd91e8d336e247L } },
|
|
/* 54 << 217 */
|
|
{ { 0x8f13ccc4df655a49L,0xa9e00dfc5eb20210L,0x84631d0fc656b6eaL,
|
|
0x93a058cdd8c0d947L },
|
|
{ 0x6846904a67bd3448L,0x4a3d4e1af394fd5cL,0xc102c1a5db225f52L,
|
|
0xe3455bbafc4f5e9aL } },
|
|
/* 55 << 217 */
|
|
{ { 0x6b36985b4b9ad1ceL,0xa98185365bb7f793L,0x6c25e1d048b1a416L,
|
|
0x1381dd533c81bee7L },
|
|
{ 0xd2a30d617a4a7620L,0xc841292639b8944cL,0x3c1c6fbe7a97c33aL,
|
|
0x941e541d938664e7L } },
|
|
/* 56 << 217 */
|
|
{ { 0x417499e84a34f239L,0x15fdb83cb90402d5L,0xb75f46bf433aa832L,
|
|
0xb61e15af63215db1L },
|
|
{ 0xaabe59d4a127f89aL,0x5d541e0c07e816daL,0xaaba0659a618b692L,
|
|
0x5532773317266026L } },
|
|
/* 57 << 217 */
|
|
{ { 0xaf53a0fc95f57552L,0x329476506cacb0c9L,0x253ff58dc821be01L,
|
|
0xb0309531a06f1146L },
|
|
{ 0x59bbbdf505c2e54dL,0x158f27ad26e8dd22L,0xcc5b7ffb397e1e53L,
|
|
0xae03f65b7fc1e50dL } },
|
|
/* 58 << 217 */
|
|
{ { 0xa9784ebd9c95f0f9L,0x5ed9deb224640771L,0x31244af7035561c4L,
|
|
0x87332f3a7ee857deL },
|
|
{ 0x09e16e9e2b9e0d88L,0x52d910f456a06049L,0x507ed477a9592f48L,
|
|
0x85cb917b2365d678L } },
|
|
/* 59 << 217 */
|
|
{ { 0xf8511c934c8998d1L,0x2186a3f1730ea58fL,0x50189626b2029db0L,
|
|
0x9137a6d902ceb75aL },
|
|
{ 0x2fe17f37748bc82cL,0x87c2e93180469f8cL,0x850f71cdbf891aa2L,
|
|
0x0ca1b89b75ec3d8dL } },
|
|
/* 60 << 217 */
|
|
{ { 0x516c43aa5e1cd3cdL,0x893978089a887c28L,0x0059c699ddea1f9fL,
|
|
0x7737d6fa8e6868f7L },
|
|
{ 0x6d93746a60f1524bL,0x36985e55ba052aa7L,0x41b1d322ed923ea5L,
|
|
0x3429759f25852a11L } },
|
|
/* 61 << 217 */
|
|
{ { 0xbeca6ec3092e9f41L,0x3a238c6662256bbdL,0xd82958ea70ad487dL,
|
|
0x4ac8aaf965610d93L },
|
|
{ 0x3fa101b15e4ccab0L,0x9bf430f29de14bfbL,0xa10f5cc66531899dL,
|
|
0x590005fbea8ce17dL } },
|
|
/* 62 << 217 */
|
|
{ { 0xc437912f24544cb6L,0x9987b71ad79ac2e3L,0x13e3d9ddc058a212L,
|
|
0x00075aacd2de9606L },
|
|
{ 0x80ab508b6cac8369L,0x87842be7f54f6c89L,0xa7ad663d6bc532a4L,
|
|
0x67813de778a91bc8L } },
|
|
/* 63 << 217 */
|
|
{ { 0x5dcb61cec3427239L,0x5f3c7cf0c56934d9L,0xc079e0fbe3191591L,
|
|
0xe40896bdb01aada7L },
|
|
{ 0x8d4667910492d25fL,0x8aeb30c9e7408276L,0xe94374959287aaccL,
|
|
0x23d4708d79fe03d4L } },
|
|
/* 64 << 217 */
|
|
{ { 0x8cda9cf2d0c05199L,0x502fbc22fae78454L,0xc0bda9dff572a182L,
|
|
0x5f9b71b86158b372L },
|
|
{ 0xe0f33a592b82dd07L,0x763027359523032eL,0x7fe1a721c4505a32L,
|
|
0x7b6e3e82f796409fL } },
|
|
/* 0 << 224 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 224 */
|
|
{ { 0xe3417bc035d0b34aL,0x440b386b8327c0a7L,0x8fb7262dac0362d1L,
|
|
0x2c41114ce0cdf943L },
|
|
{ 0x2ba5cef1ad95a0b1L,0xc09b37a867d54362L,0x26d6cdd201e486c9L,
|
|
0x20477abf42ff9297L } },
|
|
/* 2 << 224 */
|
|
{ { 0xa004dcb3292a9287L,0xddc15cf677b092c7L,0x083a8464806c0605L,
|
|
0x4a68df703db997b0L },
|
|
{ 0x9c134e4505bf7dd0L,0xa4e63d398ccf7f8cL,0xa6e6517f41b5f8afL,
|
|
0xaa8b9342ad7bc1ccL } },
|
|
/* 3 << 224 */
|
|
{ { 0x126f35b51e706ad9L,0xb99cebb4c3a9ebdfL,0xa75389afbf608d90L,
|
|
0x76113c4fc6c89858L },
|
|
{ 0x80de8eb097e2b5aaL,0x7e1022cc63b91304L,0x3bdab6056ccc066cL,
|
|
0x33cbb144b2edf900L } },
|
|
/* 4 << 224 */
|
|
{ { 0xc41764717af715d2L,0xe2f7f594d0134a96L,0x2c1873efa41ec956L,
|
|
0xe4e7b4f677821304L },
|
|
{ 0xe5c8ff9788d5374aL,0x2b915e6380823d5bL,0xea6bc755b2ee8fe2L,
|
|
0x6657624ce7112651L } },
|
|
/* 5 << 224 */
|
|
{ { 0x157af101dace5acaL,0xc4fdbcf211a6a267L,0xdaddf340c49c8609L,
|
|
0x97e49f52e9604a65L },
|
|
{ 0x9be8e790937e2ad5L,0x846e2508326e17f1L,0x3f38007a0bbbc0dcL,
|
|
0xcf03603fb11e16d6L } },
|
|
/* 6 << 224 */
|
|
{ { 0xd6f800e07442f1d5L,0x475607d166e0e3abL,0x82807f16b7c64047L,
|
|
0x8858e1e3a749883dL },
|
|
{ 0x5859120b8231ee10L,0x1b80e7eb638a1eceL,0xcb72525ac6aa73a4L,
|
|
0xa7cdea3d844423acL } },
|
|
/* 7 << 224 */
|
|
{ { 0x5ed0c007f8ae7c38L,0x6db07a5c3d740192L,0xbe5e9c2a5fe36db3L,
|
|
0xd5b9d57a76e95046L },
|
|
{ 0x54ac32e78eba20f2L,0xef11ca8f71b9a352L,0x305e373eff98a658L,
|
|
0xffe5a100823eb667L } },
|
|
/* 8 << 224 */
|
|
{ { 0x57477b11e51732d2L,0xdfd6eb282538fc0eL,0x5c43b0cc3b39eec5L,
|
|
0x6af12778cb36cc57L },
|
|
{ 0x70b0852d06c425aeL,0x6df92f8c5c221b9bL,0x6c8d4f9ece826d9cL,
|
|
0xf59aba7bb49359c3L } },
|
|
/* 9 << 224 */
|
|
{ { 0x5c8ed8d5da64309dL,0x61a6de5691b30704L,0xd6b52f6a2f9b5808L,
|
|
0x0eee419498c958a7L },
|
|
{ 0xcddd9aab771e4caaL,0x83965dfd78bc21beL,0x02affce3b3b504f5L,
|
|
0x30847a21561c8291L } },
|
|
/* 10 << 224 */
|
|
{ { 0xd2eb2cf152bfda05L,0xe0e4c4e96197b98cL,0x1d35076cf8a1726fL,
|
|
0x6c06085b2db11e3dL },
|
|
{ 0x15c0c4d74463ba14L,0x9d292f830030238cL,0x1311ee8b3727536dL,
|
|
0xfeea86efbeaedc1eL } },
|
|
/* 11 << 224 */
|
|
{ { 0xb9d18cd366131e2eL,0xf31d974f80fe2682L,0xb6e49e0fe4160289L,
|
|
0x7c48ec0b08e92799L },
|
|
{ 0x818111d8d1989aa7L,0xb34fa0aaebf926f9L,0xdb5fe2f5a245474aL,
|
|
0xf80a6ebb3c7ca756L } },
|
|
/* 12 << 224 */
|
|
{ { 0xa7f96054afa05dd8L,0x26dfcf21fcaf119eL,0xe20ef2e30564bb59L,
|
|
0xef4dca5061cb02b8L },
|
|
{ 0xcda7838a65d30672L,0x8b08d534fd657e86L,0x4c5b439546d595c8L,
|
|
0x39b58725425cb836L } },
|
|
/* 13 << 224 */
|
|
{ { 0x8ea610593de9abe3L,0x404348819cdc03beL,0x9b261245cfedce8cL,
|
|
0x78c318b4cf5234a1L },
|
|
{ 0x510bcf16fde24c99L,0x2a77cb75a2c2ff5dL,0x9c895c2b27960fb4L,
|
|
0xd30ce975b0eda42bL } },
|
|
/* 14 << 224 */
|
|
{ { 0xfda853931a62cc26L,0x23c69b9650c0e052L,0xa227df15bfc633f3L,
|
|
0x2ac788481bae7d48L },
|
|
{ 0x487878f9187d073dL,0x6c2be919967f807dL,0x765861d8336e6d8fL,
|
|
0x88b8974cce528a43L } },
|
|
/* 15 << 224 */
|
|
{ { 0x09521177ff57d051L,0x2ff38037fb6a1961L,0xfc0aba74a3d76ad4L,
|
|
0x7c76480325a7ec17L },
|
|
{ 0x7532d75f48879bc8L,0xea7eacc058ce6bc1L,0xc82176b48e896c16L,
|
|
0x9a30e0b22c750fedL } },
|
|
/* 16 << 224 */
|
|
{ { 0xc37e2c2e421d3aa4L,0xf926407ce84fa840L,0x18abc03d1454e41cL,
|
|
0x26605ecd3f7af644L },
|
|
{ 0x242341a6d6a5eabfL,0x1edb84f4216b668eL,0xd836edb804010102L,
|
|
0x5b337ce7945e1d8cL } },
|
|
/* 17 << 224 */
|
|
{ { 0xd2075c77c055dc14L,0x2a0ffa2581d89cdfL,0x8ce815ea6ffdcbafL,
|
|
0xa3428878fb648867L },
|
|
{ 0x277699cf884655fbL,0xfa5b5bd6364d3e41L,0x01f680c6441e1cb7L,
|
|
0x3fd61e66b70a7d67L } },
|
|
/* 18 << 224 */
|
|
{ { 0x666ba2dccc78cf66L,0xb30181746fdbff77L,0x8d4dd0db168d4668L,
|
|
0x259455d01dab3a2aL },
|
|
{ 0xf58564c5cde3acecL,0x7714192513adb276L,0x527d725d8a303f65L,
|
|
0x55deb6c9e6f38f7bL } },
|
|
/* 19 << 224 */
|
|
{ { 0xfd5bb657b1fa70fbL,0xfa07f50fd8073a00L,0xf72e3aa7bca02500L,
|
|
0xf68f895d9975740dL },
|
|
{ 0x301120605cae2a6aL,0x01bd721802874842L,0x3d4238917ce47bd3L,
|
|
0xa66663c1789544f6L } },
|
|
/* 20 << 224 */
|
|
{ { 0x864d05d73272d838L,0xe22924f9fa6295c5L,0x8189593f6c2fda32L,
|
|
0x330d7189b184b544L },
|
|
{ 0x79efa62cbde1f714L,0x35771c94e5cb1a63L,0x2f4826b8641c8332L,
|
|
0x00a894fbc8cee854L } },
|
|
/* 21 << 224 */
|
|
{ { 0xb4b9a39b36194d40L,0xe857a7c577612601L,0xf4209dd24ecf2f58L,
|
|
0x82b9e66d5a033487L },
|
|
{ 0xc1e36934e4e8b9ddL,0xd2372c9da42377d7L,0x51dc94c70e3ae43bL,
|
|
0x4c57761e04474f6fL } },
|
|
/* 22 << 224 */
|
|
{ { 0xdcdacd0a1058a318L,0x369cf3f578053a9aL,0xc6c3de5031c68de2L,
|
|
0x4653a5763c4b6d9fL },
|
|
{ 0x1688dd5aaa4e5c97L,0x5be80aa1b7ab3c74L,0x70cefe7cbc65c283L,
|
|
0x57f95f1306867091L } },
|
|
/* 23 << 224 */
|
|
{ { 0xa39114e24415503bL,0xc08ff7c64cbb17e9L,0x1eff674dd7dec966L,
|
|
0x6d4690af53376f63L },
|
|
{ 0xff6fe32eea74237bL,0xc436d17ecd57508eL,0x15aa28e1edcc40feL,
|
|
0x0d769c04581bbb44L } },
|
|
/* 24 << 224 */
|
|
{ { 0xc240b6de34eaacdaL,0xd9e116e82ba0f1deL,0xcbe45ec779438e55L,
|
|
0x91787c9d96f752d7L },
|
|
{ 0x897f532bf129ac2fL,0xd307b7c85a36e22cL,0x91940675749fb8f3L,
|
|
0xd14f95d0157fdb28L } },
|
|
/* 25 << 224 */
|
|
{ { 0xfe51d0296ae55043L,0x8931e98f44a87de1L,0xe57f1cc609e4fee2L,
|
|
0x0d063b674e072d92L },
|
|
{ 0x70a998b9ed0e4316L,0xe74a736b306aca46L,0xecf0fbf24fda97c7L,
|
|
0xa40f65cb3e178d93L } },
|
|
/* 26 << 224 */
|
|
{ { 0x1625360416df4285L,0xb0c9babbd0c56ae2L,0x73032b19cfc5cfc3L,
|
|
0xe497e5c309752056L },
|
|
{ 0x12096bb4164bda96L,0x1ee42419a0b74da1L,0x8fc36243403826baL,
|
|
0x0c8f0069dc09e660L } },
|
|
/* 27 << 224 */
|
|
{ { 0x8667e981c27253c9L,0x05a6aefb92b36a45L,0xa62c4b369cb7bb46L,
|
|
0x8394f37511f7027bL },
|
|
{ 0x747bc79c5f109d0fL,0xcad88a765b8cc60aL,0x80c5a66b58f09e68L,
|
|
0xe753d451f6127eacL } },
|
|
/* 28 << 224 */
|
|
{ { 0xc44b74a15b0ec6f5L,0x47989fe45289b2b8L,0x745f848458d6fc73L,
|
|
0xec362a6ff61c70abL },
|
|
{ 0x070c98a7b3a8ad41L,0x73a20fc07b63db51L,0xed2c2173f44c35f4L,
|
|
0x8a56149d9acc9dcaL } },
|
|
/* 29 << 224 */
|
|
{ { 0x98f178819ac6e0f4L,0x360fdeafa413b5edL,0x0625b8f4a300b0fdL,
|
|
0xf1f4d76a5b3222d3L },
|
|
{ 0x9d6f5109587f76b8L,0x8b4ee08d2317fdb5L,0x88089bb78c68b095L,
|
|
0x95570e9a5808d9b9L } },
|
|
/* 30 << 224 */
|
|
{ { 0xa395c36f35d33ae7L,0x200ea12350bb5a94L,0x20c789bd0bafe84bL,
|
|
0x243ef52d0919276aL },
|
|
{ 0x3934c577e23ae233L,0xb93807afa460d1ecL,0xb72a53b1f8fa76a4L,
|
|
0xd8914cb0c3ca4491L } },
|
|
/* 31 << 224 */
|
|
{ { 0x2e1284943fb42622L,0x3b2700ac500907d5L,0xf370fb091a95ec63L,
|
|
0xf8f30be231b6dfbdL },
|
|
{ 0xf2b2f8d269e55f15L,0x1fead851cc1323e9L,0xfa366010d9e5eef6L,
|
|
0x64d487b0e316107eL } },
|
|
/* 32 << 224 */
|
|
{ { 0x4c076b86d23ddc82L,0x03fd344c7e0143f0L,0xa95362ff317af2c5L,
|
|
0x0add3db7e18b7a4fL },
|
|
{ 0x9c673e3f8260e01bL,0xfbeb49e554a1cc91L,0x91351bf292f2e433L,
|
|
0xc755e7ec851141ebL } },
|
|
/* 33 << 224 */
|
|
{ { 0xc9a9513929607745L,0x0ca07420a26f2b28L,0xcb2790e74bc6f9ddL,
|
|
0x345bbb58adcaffc0L },
|
|
{ 0xc65ea38cbe0f27a2L,0x67c24d7c641fcb56L,0x2c25f0a7a9e2c757L,
|
|
0x93f5cdb016f16c49L } },
|
|
/* 34 << 224 */
|
|
{ { 0x2ca5a9d7c5ee30a1L,0xd1593635b909b729L,0x804ce9f3dadeff48L,
|
|
0xec464751b07c30c3L },
|
|
{ 0x89d65ff39e49af6aL,0xf2d6238a6f3d01bcL,0x1095561e0bced843L,
|
|
0x51789e12c8a13fd8L } },
|
|
/* 35 << 224 */
|
|
{ { 0xd633f929763231dfL,0x46df9f7de7cbddefL,0x01c889c0cb265da8L,
|
|
0xfce1ad10af4336d2L },
|
|
{ 0x8d110df6fc6a0a7eL,0xdd431b986da425dcL,0xcdc4aeab1834aabeL,
|
|
0x84deb1248439b7fcL } },
|
|
/* 36 << 224 */
|
|
{ { 0x8796f1693c2a5998L,0x9b9247b47947190dL,0x55b9d9a511597014L,
|
|
0x7e9dd70d7b1566eeL },
|
|
{ 0x94ad78f7cbcd5e64L,0x0359ac179bd4c032L,0x3b11baaf7cc222aeL,
|
|
0xa6a6e284ba78e812L } },
|
|
/* 37 << 224 */
|
|
{ { 0x8392053f24cea1a0L,0xc97bce4a33621491L,0x7eb1db3435399ee9L,
|
|
0x473f78efece81ad1L },
|
|
{ 0x41d72fe0f63d3d0dL,0xe620b880afab62fcL,0x92096bc993158383L,
|
|
0x41a213578f896f6cL } },
|
|
/* 38 << 224 */
|
|
{ { 0x1b5ee2fac7dcfcabL,0x650acfde9546e007L,0xc081b749b1b02e07L,
|
|
0xda9e41a0f9eca03dL },
|
|
{ 0x013ba727175a54abL,0xca0cd190ea5d8d10L,0x85ea52c095fd96a9L,
|
|
0x2c591b9fbc5c3940L } },
|
|
/* 39 << 224 */
|
|
{ { 0x6fb4d4e42bad4d5fL,0xfa4c3590fef0059bL,0x6a10218af5122294L,
|
|
0x9a78a81aa85751d1L },
|
|
{ 0x04f20579a98e84e7L,0xfe1242c04997e5b5L,0xe77a273bca21e1e4L,
|
|
0xfcc8b1ef9411939dL } },
|
|
/* 40 << 224 */
|
|
{ { 0xe20ea30292d0487aL,0x1442dbec294b91feL,0x1f7a4afebb6b0e8fL,
|
|
0x1700ef746889c318L },
|
|
{ 0xf5bbffc370f1fc62L,0x3b31d4b669c79ccaL,0xe8bc2aaba7f6340dL,
|
|
0xb0b08ab4a725e10aL } },
|
|
/* 41 << 224 */
|
|
{ { 0x44f05701ae340050L,0xba4b30161cf0c569L,0x5aa29f83fbe19a51L,
|
|
0x1b9ed428b71d752eL },
|
|
{ 0x1666e54eeb4819f5L,0x616cdfed9e18b75bL,0x112ed5be3ee27b0bL,
|
|
0xfbf2831944c7de4dL } },
|
|
/* 42 << 224 */
|
|
{ { 0xd685ec85e0e60d84L,0x68037e301db7ee78L,0x5b65bdcd003c4d6eL,
|
|
0x33e7363a93e29a6aL },
|
|
{ 0x995b3a6108d0756cL,0xd727f85c2faf134bL,0xfac6edf71d337823L,
|
|
0x99b9aa500439b8b4L } },
|
|
/* 43 << 224 */
|
|
{ { 0x722eb104e2b4e075L,0x49987295437c4926L,0xb1e4c0e446a9b82dL,
|
|
0xd0cb319757a006f5L },
|
|
{ 0xf3de0f7dd7808c56L,0xb5c54d8f51f89772L,0x500a114aadbd31aaL,
|
|
0x9afaaaa6295f6cabL } },
|
|
/* 44 << 224 */
|
|
{ { 0x94705e2104cf667aL,0xfc2a811b9d3935d7L,0x560b02806d09267cL,
|
|
0xf19ed119f780e53bL },
|
|
{ 0xf0227c09067b6269L,0x967b85335caef599L,0x155b924368efeebcL,
|
|
0xcd6d34f5c497bae6L } },
|
|
/* 45 << 224 */
|
|
{ { 0x1dd8d5d36cceb370L,0x2aeac579a78d7bf9L,0x5d65017d70b67a62L,
|
|
0x70c8e44f17c53f67L },
|
|
{ 0xd1fc095086a34d09L,0xe0fca256e7134907L,0xe24fa29c80fdd315L,
|
|
0x2c4acd03d87499adL } },
|
|
/* 46 << 224 */
|
|
{ { 0xbaaf75173b5a9ba6L,0xb9cbe1f612e51a51L,0xd88edae35e154897L,
|
|
0xe4309c3c77b66ca0L },
|
|
{ 0xf5555805f67f3746L,0x85fc37baa36401ffL,0xdf86e2cad9499a53L,
|
|
0x6270b2a3ecbc955bL } },
|
|
/* 47 << 224 */
|
|
{ { 0xafae64f5974ad33bL,0x04d85977fe7b2df1L,0x2a3db3ff4ab03f73L,
|
|
0x0b87878a8702740aL },
|
|
{ 0x6d263f015a061732L,0xc25430cea32a1901L,0xf7ebab3ddb155018L,
|
|
0x3a86f69363a9b78eL } },
|
|
/* 48 << 224 */
|
|
{ { 0x349ae368da9f3804L,0x470f07fea164349cL,0xd52f4cc98562baa5L,
|
|
0xc74a9e862b290df3L },
|
|
{ 0xd3a1aa3543471a24L,0x239446beb8194511L,0xbec2dd0081dcd44dL,
|
|
0xca3d7f0fc42ac82dL } },
|
|
/* 49 << 224 */
|
|
{ { 0x1f3db085fdaf4520L,0xbb6d3e804549daf2L,0xf5969d8a19ad5c42L,
|
|
0x7052b13ddbfd1511L },
|
|
{ 0x11890d1b682b9060L,0xa71d3883ac34452cL,0xa438055b783805b4L,
|
|
0x432412774725b23eL } },
|
|
/* 50 << 224 */
|
|
{ { 0xf20cf96e4901bbedL,0x6419c710f432a2bbL,0x57a0fbb9dfa9cd7dL,
|
|
0x589111e400daa249L },
|
|
{ 0x19809a337b60554eL,0xea5f8887ede283a4L,0x2d713802503bfd35L,
|
|
0x151bb0af585d2a53L } },
|
|
/* 51 << 224 */
|
|
{ { 0x40b08f7443b30ca8L,0xe10b5bbad9934583L,0xe8a546d6b51110adL,
|
|
0x1dd50e6628e0b6c5L },
|
|
{ 0x292e9d54cff2b821L,0x3882555d47281760L,0x134838f83724d6e3L,
|
|
0xf2c679e022ddcda1L } },
|
|
/* 52 << 224 */
|
|
{ { 0x40ee88156d2a5768L,0x7f227bd21c1e7e2dL,0x487ba134d04ff443L,
|
|
0x76e2ff3dc614e54bL },
|
|
{ 0x36b88d6fa3177ec7L,0xbf731d512328fff5L,0x758caea249ba158eL,
|
|
0x5ab8ff4c02938188L } },
|
|
/* 53 << 224 */
|
|
{ { 0x33e1605635edc56dL,0x5a69d3497e940d79L,0x6c4fd00103866dcbL,
|
|
0x20a38f574893cdefL },
|
|
{ 0xfbf3e790fac3a15bL,0x6ed7ea2e7a4f8e6bL,0xa663eb4fbc3aca86L,
|
|
0x22061ea5080d53f7L } },
|
|
/* 54 << 224 */
|
|
{ { 0x2480dfe6f546783fL,0xd38bc6da5a0a641eL,0xfb093cd12ede8965L,
|
|
0x89654db4acb455cfL },
|
|
{ 0x413cbf9a26e1adeeL,0x291f3764373294d4L,0x00797257648083feL,
|
|
0x25f504d3208cc341L } },
|
|
/* 55 << 224 */
|
|
{ { 0x635a8e5ec3a0ee43L,0x70aaebca679898ffL,0x9ee9f5475dc63d56L,
|
|
0xce987966ffb34d00L },
|
|
{ 0xf9f86b195e26310aL,0x9e435484382a8ca8L,0x253bcb81c2352fe4L,
|
|
0xa4eac8b04474b571L } },
|
|
/* 56 << 224 */
|
|
{ { 0xc1b97512c1ad8cf8L,0x193b4e9e99e0b697L,0x939d271601e85df0L,
|
|
0x4fb265b3cd44eafdL },
|
|
{ 0x321e7dcde51e1ae2L,0x8e3a8ca6e3d8b096L,0x8de46cb052604998L,
|
|
0x91099ad839072aa7L } },
|
|
/* 57 << 224 */
|
|
{ { 0x2617f91c93aa96b8L,0x0fc8716b7fca2e13L,0xa7106f5e95328723L,
|
|
0xd1c9c40b262e6522L },
|
|
{ 0xb9bafe8642b7c094L,0x1873439d1543c021L,0xe1baa5de5cbefd5dL,
|
|
0xa363fc5e521e8affL } },
|
|
/* 58 << 224 */
|
|
{ { 0xefe6320df862eaacL,0x14419c6322c647dcL,0x0e06707c4e46d428L,
|
|
0xcb6c834f4a178f8fL },
|
|
{ 0x0f993a45d30f917cL,0xd4c4b0499879afeeL,0xb6142a1e70500063L,
|
|
0x7c9b41c3a5d9d605L } },
|
|
/* 59 << 224 */
|
|
{ { 0xbc00fc2f2f8ba2c7L,0x0966eb2f7c67aa28L,0x13f7b5165a786972L,
|
|
0x3bfb75578a2fbba0L },
|
|
{ 0x131c4f235a2b9620L,0xbff3ed276faf46beL,0x9b4473d17e172323L,
|
|
0x421e8878339f6246L } },
|
|
/* 60 << 224 */
|
|
{ { 0x0fa8587a25a41632L,0xc0814124a35b6c93L,0x2b18a9f559ebb8dbL,
|
|
0x264e335776edb29cL },
|
|
{ 0xaf245ccdc87c51e2L,0x16b3015b501e6214L,0xbb31c5600a3882ceL,
|
|
0x6961bb94fec11e04L } },
|
|
/* 61 << 224 */
|
|
{ { 0x3b825b8deff7a3a0L,0xbec33738b1df7326L,0x68ad747c99604a1fL,
|
|
0xd154c9349a3bd499L },
|
|
{ 0xac33506f1cc7a906L,0x73bb53926c560e8fL,0x6428fcbe263e3944L,
|
|
0xc11828d51c387434L } },
|
|
/* 62 << 224 */
|
|
{ { 0x3cd04be13e4b12ffL,0xc3aad9f92d88667cL,0xc52ddcf8248120cfL,
|
|
0x985a892e2a389532L },
|
|
{ 0xfbb4b21b3bb85fa0L,0xf95375e08dfc6269L,0xfb4fb06c7ee2aceaL,
|
|
0x6785426e309c4d1fL } },
|
|
/* 63 << 224 */
|
|
{ { 0x659b17c8d8ceb147L,0x9b649eeeb70a5554L,0x6b7fa0b5ac6bc634L,
|
|
0xd99fe2c71d6e732fL },
|
|
{ 0x30e6e7628d3abba2L,0x18fee6e7a797b799L,0x5c9d360dc696464dL,
|
|
0xe3baeb4827bfde12L } },
|
|
/* 64 << 224 */
|
|
{ { 0x2bf5db47f23206d5L,0x2f6d34201d260152L,0x17b876533f8ff89aL,
|
|
0x5157c30c378fa458L },
|
|
{ 0x7517c5c52d4fb936L,0xef22f7ace6518cdcL,0xdeb483e6bf847a64L,
|
|
0xf508455892e0fa89L } },
|
|
/* 0 << 231 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 231 */
|
|
{ { 0xab9659d8df7304d4L,0xb71bcf1bff210e8eL,0xa9a2438bd73fbd60L,
|
|
0x4595cd1f5d11b4deL },
|
|
{ 0x9c0d329a4835859dL,0x4a0f0d2d7dbb6e56L,0xc6038e5edf928a4eL,
|
|
0xc94296218f5ad154L } },
|
|
/* 2 << 231 */
|
|
{ { 0x91213462f23f2d92L,0x6cab71bd60b94078L,0x6bdd0a63176cde20L,
|
|
0x54c9b20cee4d54bcL },
|
|
{ 0x3cd2d8aa9f2ac02fL,0x03f8e617206eedb0L,0xc7f68e1693086434L,
|
|
0x831469c592dd3db9L } },
|
|
/* 3 << 231 */
|
|
{ { 0x8521df248f981354L,0x587e23ec3588a259L,0xcbedf281d7a0992cL,
|
|
0x06930a5538961407L },
|
|
{ 0x09320debbe5bbe21L,0xa7ffa5b52491817fL,0xe6c8b4d909065160L,
|
|
0xac4f3992fff6d2a9L } },
|
|
/* 4 << 231 */
|
|
{ { 0x7aa7a1583ae9c1bdL,0xe0af6d98e37ce240L,0xe54342d928ab38b4L,
|
|
0xe8b750070a1c98caL },
|
|
{ 0xefce86afe02358f2L,0x31b8b856ea921228L,0x052a19120a1c67fcL,
|
|
0xb4069ea4e3aead59L } },
|
|
/* 5 << 231 */
|
|
{ { 0x3232d6e27fa03cb3L,0xdb938e5b0fdd7d88L,0x04c1d2cd2ccbfc5dL,
|
|
0xd2f45c12af3a580fL },
|
|
{ 0x592620b57883e614L,0x5fd27e68be7c5f26L,0x139e45a91567e1e3L,
|
|
0x2cc71d2d44d8aaafL } },
|
|
/* 6 << 231 */
|
|
{ { 0x4a9090cde36d0757L,0xf722d7b1d9a29382L,0xfb7fb04c04b48ddfL,
|
|
0x628ad2a7ebe16f43L },
|
|
{ 0xcd3fbfb520226040L,0x6c34ecb15104b6c4L,0x30c0754ec903c188L,
|
|
0xec336b082d23cab0L } },
|
|
/* 7 << 231 */
|
|
{ { 0x473d62a21e206ee5L,0xf1e274808c49a633L,0x87ab956ce9f6b2c3L,
|
|
0x61830b4862b606eaL },
|
|
{ 0x67cd6846e78e815fL,0xfe40139f4c02082aL,0x52bbbfcb952ec365L,
|
|
0x74c116426b9836abL } },
|
|
/* 8 << 231 */
|
|
{ { 0x9f51439e558df019L,0x230da4baac712b27L,0x518919e355185a24L,
|
|
0x4dcefcdd84b78f50L },
|
|
{ 0xa7d90fb2a47d4c5aL,0x55ac9abfb30e009eL,0xfd2fc35974eed273L,
|
|
0xb72d824cdbea8fafL } },
|
|
/* 9 << 231 */
|
|
{ { 0xce721a744513e2caL,0x0b41861238240b2cL,0x05199968d5baa450L,
|
|
0xeb1757ed2b0e8c25L },
|
|
{ 0x6ebc3e283dfac6d5L,0xb2431e2e48a237f5L,0x2acb5e2352f61499L,
|
|
0x5558a2a7e06c936bL } },
|
|
/* 10 << 231 */
|
|
{ { 0xd213f923cbb13d1bL,0x98799f425bfb9bfeL,0x1ae8ddc9701144a9L,
|
|
0x0b8b3bb64c5595eeL },
|
|
{ 0x0ea9ef2e3ecebb21L,0x17cb6c4b3671f9a7L,0x47ef464f726f1d1fL,
|
|
0x171b94846943a276L } },
|
|
/* 11 << 231 */
|
|
{ { 0x51a4ae2d7ef0329cL,0x0850922291c4402aL,0x64a61d35afd45bbcL,
|
|
0x38f096fe3035a851L },
|
|
{ 0xc7468b74a1dec027L,0xe8cf10e74fc7dcbaL,0xea35ff40f4a06353L,
|
|
0x0b4c0dfa8b77dd66L } },
|
|
/* 12 << 231 */
|
|
{ { 0x779b8552de7e5c19L,0xfab28609c1c0256cL,0x64f58eeeabd4743dL,
|
|
0x4e8ef8387b6cc93bL },
|
|
{ 0xee650d264cb1bf3dL,0x4c1f9d0973dedf61L,0xaef7c9d7bfb70cedL,
|
|
0x1ec0507e1641de1eL } },
|
|
/* 13 << 231 */
|
|
{ { 0xcd7e5cc7cde45079L,0xde173c9a516ac9e4L,0x517a8494c170315cL,
|
|
0x438fd90591d8e8fbL },
|
|
{ 0x5145c506c7d9630bL,0x6457a87bf47d4d75L,0xd31646bf0d9a80e8L,
|
|
0x453add2bcef3aabeL } },
|
|
/* 14 << 231 */
|
|
{ { 0xc9941109a607419dL,0xfaa71e62bb6bca80L,0x34158c1307c431f3L,
|
|
0x594abebc992bc47aL },
|
|
{ 0x6dfea691eb78399fL,0x48aafb353f42cba4L,0xedcd65af077c04f0L,
|
|
0x1a29a366e884491aL } },
|
|
/* 15 << 231 */
|
|
{ { 0x023a40e51c21f2bfL,0xf99a513ca5057aeeL,0xa3fe7e25bcab072eL,
|
|
0x8568d2e140e32bcfL },
|
|
{ 0x904594ebd3f69d9fL,0x181a973307affab1L,0xe4d68d76b6e330f4L,
|
|
0x87a6dafbc75a7fc1L } },
|
|
/* 16 << 231 */
|
|
{ { 0x549db2b5ef7d9289L,0x2480d4a8197f015aL,0x61d5590bc40493b6L,
|
|
0x3a55b52e6f780331L },
|
|
{ 0x40eb8115309eadb0L,0xdea7de5a92e5c625L,0x64d631f0cc6a3d5aL,
|
|
0x9d5e9d7c93e8dd61L } },
|
|
/* 17 << 231 */
|
|
{ { 0xf297bef5206d3ffcL,0x23d5e0337d808bd4L,0x4a4f6912d24cf5baL,
|
|
0xe4d8163b09cdaa8aL },
|
|
{ 0x0e0de9efd3082e8eL,0x4fe1246c0192f360L,0x1f9001504b8eee0aL,
|
|
0x5219da81f1da391bL } },
|
|
/* 18 << 231 */
|
|
{ { 0x7bf6a5c1f7ea25aaL,0xd165e6bffbb07d5fL,0xe353936189e78671L,
|
|
0xa3fcac892bac4219L },
|
|
{ 0xdfab6fd4f0baa8abL,0x5a4adac1e2c1c2e5L,0x6cd75e3140d85849L,
|
|
0xce263fea19b39181L } },
|
|
/* 19 << 231 */
|
|
{ { 0xcb6803d307032c72L,0x7f40d5ce790968c8L,0xa6de86bddce978f0L,
|
|
0x25547c4f368f751cL },
|
|
{ 0xb1e685fd65fb2a9eL,0xce69336f1eb9179cL,0xb15d1c2712504442L,
|
|
0xb7df465cb911a06bL } },
|
|
/* 20 << 231 */
|
|
{ { 0xb8d804a3315980cdL,0x693bc492fa3bebf7L,0x3578aeee2253c504L,
|
|
0x158de498cd2474a2L },
|
|
{ 0x1331f5c7cfda8368L,0xd2d7bbb378d7177eL,0xdf61133af3c1e46eL,
|
|
0x5836ce7dd30e7be8L } },
|
|
/* 21 << 231 */
|
|
{ { 0x83084f1994f834cbL,0xd35653d4429ed782L,0xa542f16f59e58243L,
|
|
0xc2b52f650470a22dL },
|
|
{ 0xe3b6221b18f23d96L,0xcb05abac3f5252b4L,0xca00938b87d61402L,
|
|
0x2f186cdd411933e4L } },
|
|
/* 22 << 231 */
|
|
{ { 0xe042ece59a29a5c5L,0xb19b3c073b6c8402L,0xc97667c719d92684L,
|
|
0xb5624622ebc66372L },
|
|
{ 0x0cb96e653c04fa02L,0x83a7176c8eaa39aaL,0x2033561deaa1633fL,
|
|
0x45a9d0864533df73L } },
|
|
/* 23 << 231 */
|
|
{ { 0xe0542c1d3dc090bcL,0x82c996efaa59c167L,0xe3f735e80ee7fc4dL,
|
|
0x7b1793937c35db79L },
|
|
{ 0xb6419e25f8c5dbfdL,0x4d9d7a1e1f327b04L,0x979f6f9b298dfca8L,
|
|
0xc7c5dff18de9366aL } },
|
|
/* 24 << 231 */
|
|
{ { 0x1b7a588d04c82bddL,0x68005534f8319dfdL,0xde8a55b5d8eb9580L,
|
|
0x5ea886da8d5bca81L },
|
|
{ 0xe8530a01252a0b4dL,0x1bffb4fe35eaa0a1L,0x2ad828b1d8e99563L,
|
|
0x7de96ef595f9cd87L } },
|
|
/* 25 << 231 */
|
|
{ { 0x4abb2d0cd77d970cL,0x03cfb933d33ef9cbL,0xb0547c018b211fe9L,
|
|
0x2fe64809a56ed1c6L },
|
|
{ 0xcb7d5624c2ac98ccL,0x2a1372c01a393e33L,0xc8d1ec1c29660521L,
|
|
0xf3d31b04b37ac3e9L } },
|
|
/* 26 << 231 */
|
|
{ { 0xa29ae9df5ece6e7cL,0x0603ac8f0facfb55L,0xcfe85b7adda233a5L,
|
|
0xe618919fbd75f0b8L },
|
|
{ 0xf555a3d299bf1603L,0x1f43afc9f184255aL,0xdcdaf341319a3e02L,
|
|
0xd3b117ef03903a39L } },
|
|
/* 27 << 231 */
|
|
{ { 0xe095da1365d1d131L,0x86f16367c37ad03eL,0x5f37389e462cd8ddL,
|
|
0xc103fa04d67a60e6L },
|
|
{ 0x57c34344f4b478f0L,0xce91edd8e117c98dL,0x001777b0231fc12eL,
|
|
0x11ae47f2b207bccbL } },
|
|
/* 28 << 231 */
|
|
{ { 0xd983cf8d20f8a242L,0x7aff5b1df22e1ad8L,0x68fd11d07fc4feb3L,
|
|
0x5d53ae90b0f1c3e1L },
|
|
{ 0x50fb7905ec041803L,0x85e3c97714404888L,0x0e67faedac628d8fL,
|
|
0x2e8651506668532cL } },
|
|
/* 29 << 231 */
|
|
{ { 0x15acaaa46a67a6b0L,0xf4cdee25b25cec41L,0x49ee565ae4c6701eL,
|
|
0x2a04ca66fc7d63d8L },
|
|
{ 0xeb105018ef0543fbL,0xf709a4f5d1b0d81dL,0x5b906ee62915d333L,
|
|
0xf4a8741296f1f0abL } },
|
|
/* 30 << 231 */
|
|
{ { 0xb6b82fa74d82f4c2L,0x90725a606804efb3L,0xbc82ec46adc3425eL,
|
|
0xb7b805812787843eL },
|
|
{ 0xdf46d91cdd1fc74cL,0xdc1c62cbe783a6c4L,0x59d1b9f31a04cbbaL,
|
|
0xd87f6f7295e40764L } },
|
|
/* 31 << 231 */
|
|
{ { 0x02b4cfc1317f4a76L,0x8d2703eb91036bceL,0x98206cc6a5e72a56L,
|
|
0x57be9ed1cf53fb0fL },
|
|
{ 0x09374571ef0b17acL,0x74b2655ed9181b38L,0xc8f80ea889935d0eL,
|
|
0xc0d9e94291529936L } },
|
|
/* 32 << 231 */
|
|
{ { 0x196860411e84e0e5L,0xa5db84d3aea34c93L,0xf9d5bb197073a732L,
|
|
0xb8d2fe566bcfd7c0L },
|
|
{ 0x45775f36f3eb82faL,0x8cb20cccfdff8b58L,0x1659b65f8374c110L,
|
|
0xb8b4a422330c789aL } },
|
|
/* 33 << 231 */
|
|
{ { 0x75e3c3ea6fe8208bL,0xbd74b9e4286e78feL,0x0be2e81bd7d93a1aL,
|
|
0x7ed06e27dd0a5aaeL },
|
|
{ 0x721f5a586be8b800L,0x428299d1d846db28L,0x95cb8e6b5be88ed3L,
|
|
0xc3186b231c034e11L } },
|
|
/* 34 << 231 */
|
|
{ { 0xa6312c9e8977d99bL,0xbe94433183f531e7L,0x8232c0c218d3b1d4L,
|
|
0x617aae8be1247b73L },
|
|
{ 0x40153fc4282aec3bL,0xc6063d2ff7b8f823L,0x68f10e583304f94cL,
|
|
0x31efae74ee676346L } },
|
|
/* 35 << 231 */
|
|
{ { 0xbadb6c6d40a9b97cL,0x14702c634f666256L,0xdeb954f15184b2e3L,
|
|
0x5184a52694b6ca40L },
|
|
{ 0xfff05337003c32eaL,0x5aa374dd205974c7L,0x9a7638544b0dd71aL,
|
|
0x459cd27fdeb947ecL } },
|
|
/* 36 << 231 */
|
|
{ { 0xa6e28161459c2b92L,0x2f020fa875ee8ef5L,0xb132ec2d30b06310L,
|
|
0xc3e15899bc6a4530L },
|
|
{ 0xdc5f53feaa3f451aL,0x3a3c7f23c2d9acacL,0x2ec2f8926b27e58bL,
|
|
0x68466ee7d742799fL } },
|
|
/* 37 << 231 */
|
|
{ { 0x98324dd41fa26613L,0xa2dc6dabbdc29d63L,0xf9675faad712d657L,
|
|
0x813994be21fd8d15L },
|
|
{ 0x5ccbb722fd4f7553L,0x5135ff8bf3a36b20L,0x44be28af69559df5L,
|
|
0x40b65bed9d41bf30L } },
|
|
/* 38 << 231 */
|
|
{ { 0xd98bf2a43734e520L,0x5e3abbe3209bdcbaL,0x77c76553bc945b35L,
|
|
0x5331c093c6ef14aaL },
|
|
{ 0x518ffe2976b60c80L,0x2285593b7ace16f8L,0xab1f64ccbe2b9784L,
|
|
0xe8f2c0d9ab2421b6L } },
|
|
/* 39 << 231 */
|
|
{ { 0x617d7174c1df065cL,0xafeeb5ab5f6578faL,0x16ff1329263b54a8L,
|
|
0x45c55808c990dce3L },
|
|
{ 0x42eab6c0ecc8c177L,0x799ea9b55982ecaaL,0xf65da244b607ef8eL,
|
|
0x8ab226ce32a3fc2cL } },
|
|
/* 40 << 231 */
|
|
{ { 0x745741e57ea973dcL,0x5c00ca7020888f2eL,0x7cdce3cf45fd9cf1L,
|
|
0x8a741ef15507f872L },
|
|
{ 0x47c51c2f196b4cecL,0x70d08e43c97ea618L,0x930da15c15b18a2bL,
|
|
0x33b6c6782f610514L } },
|
|
/* 41 << 231 */
|
|
{ { 0xc662e4f807ac9794L,0x1eccf050ba06cb79L,0x1ff08623e7d954e5L,
|
|
0x6ef2c5fb24cf71c3L },
|
|
{ 0xb2c063d267978453L,0xa0cf37961d654af8L,0x7cb242ea7ebdaa37L,
|
|
0x206e0b10b86747e0L } },
|
|
/* 42 << 231 */
|
|
{ { 0x481dae5fd5ecfefcL,0x07084fd8c2bff8fcL,0x8040a01aea324596L,
|
|
0x4c646980d4de4036L },
|
|
{ 0x9eb8ab4ed65abfc3L,0xe01cb91f13541ec7L,0x8f029adbfd695012L,
|
|
0x9ae284833c7569ecL } },
|
|
/* 43 << 231 */
|
|
{ { 0xa5614c9ea66d80a1L,0x680a3e4475f5f911L,0x0c07b14dceba4fc1L,
|
|
0x891c285ba13071c1L },
|
|
{ 0xcac67ceb799ece3cL,0x29b910a941e07e27L,0x66bdb409f2e43123L,
|
|
0x06f8b1377ac9ecbeL } },
|
|
/* 44 << 231 */
|
|
{ { 0x5981fafd38547090L,0x19ab8b9f85e3415dL,0xfc28c194c7e31b27L,
|
|
0x843be0aa6fbcbb42L },
|
|
{ 0xf3b1ed43a6db836cL,0x2a1330e401a45c05L,0x4f19f3c595c1a377L,
|
|
0xa85f39d044b5ee33L } },
|
|
/* 45 << 231 */
|
|
{ { 0x3da18e6d4ae52834L,0x5a403b397423dcb0L,0xbb555e0af2374aefL,
|
|
0x2ad599c41e8ca111L },
|
|
{ 0x1b3a2fb9014b3bf8L,0x73092684f66d5007L,0x079f1426c4340102L,
|
|
0x1827cf818fddf4deL } },
|
|
/* 46 << 231 */
|
|
{ { 0xc83605f6f10ff927L,0xd387145123739fc6L,0x6d163450cac1c2ccL,
|
|
0x6b521296a2ec1ac5L },
|
|
{ 0x0606c4f96e3cb4a5L,0xe47d3f41778abff7L,0x425a8d5ebe8e3a45L,
|
|
0x53ea9e97a6102160L } },
|
|
/* 47 << 231 */
|
|
{ { 0x477a106e39cbb688L,0x532401d2f3386d32L,0x8e564f64b1b9b421L,
|
|
0xca9b838881dad33fL },
|
|
{ 0xb1422b4e2093913eL,0x533d2f9269bc8112L,0x3fa017beebe7b2c7L,
|
|
0xb2767c4acaf197c6L } },
|
|
/* 48 << 231 */
|
|
{ { 0xc925ff87aedbae9fL,0x7daf0eb936880a54L,0x9284ddf59c4d0e71L,
|
|
0x1581cf93316f8cf5L },
|
|
{ 0x3eeca8873ac1f452L,0xb417fce9fb6aeffeL,0xa5918046eefb8dc3L,
|
|
0x73d318ac02209400L } },
|
|
/* 49 << 231 */
|
|
{ { 0xe800400f728693e5L,0xe87d814b339927edL,0x93e94d3b57ea9910L,
|
|
0xff8a35b62245fb69L },
|
|
{ 0x043853d77f200d34L,0x470f1e680f653ce1L,0x81ac05bd59a06379L,
|
|
0xa14052c203930c29L } },
|
|
/* 50 << 231 */
|
|
{ { 0x6b72fab526bc2797L,0x13670d1699f16771L,0x001700521e3e48d1L,
|
|
0x978fe401b7adf678L },
|
|
{ 0x55ecfb92d41c5dd4L,0x5ff8e247c7b27da5L,0xe7518272013fb606L,
|
|
0x5768d7e52f547a3cL } },
|
|
/* 51 << 231 */
|
|
{ { 0xbb24eaa360017a5fL,0x6b18e6e49c64ce9bL,0xc225c655103dde07L,
|
|
0xfc3672ae7592f7eaL },
|
|
{ 0x9606ad77d06283a1L,0x542fc650e4d59d99L,0xabb57c492a40e7c2L,
|
|
0xac948f13a8db9f55L } },
|
|
/* 52 << 231 */
|
|
{ { 0x6d4c9682b04465c3L,0xe3d062fa6468bd15L,0xa51729ac5f318d7eL,
|
|
0x1fc87df69eb6fc95L },
|
|
{ 0x63d146a80591f652L,0xa861b8f7589621aaL,0x59f5f15ace31348cL,
|
|
0x8f663391440da6daL } },
|
|
/* 53 << 231 */
|
|
{ { 0xcfa778acb591ffa3L,0x027ca9c54cdfebceL,0xbe8e05a5444ea6b3L,
|
|
0x8aab4e69a78d8254L },
|
|
{ 0x2437f04fb474d6b8L,0x6597ffd4045b3855L,0xbb0aea4eca47ecaaL,
|
|
0x568aae8385c7ebfcL } },
|
|
/* 54 << 231 */
|
|
{ { 0x0e966e64c73b2383L,0x49eb3447d17d8762L,0xde1078218da05dabL,
|
|
0x443d8baa016b7236L },
|
|
{ 0x163b63a5ea7610d6L,0xe47e4185ce1ca979L,0xae648b6580baa132L,
|
|
0xebf53de20e0d5b64L } },
|
|
/* 55 << 231 */
|
|
{ { 0x8d3bfcb4d3c8c1caL,0x0d914ef35d04b309L,0x55ef64153de7d395L,
|
|
0xbde1666f26b850e8L },
|
|
{ 0xdbe1ca6ed449ab19L,0x8902b322e89a2672L,0xb1674b7edacb7a53L,
|
|
0x8e9faf6ef52523ffL } },
|
|
/* 56 << 231 */
|
|
{ { 0x6ba535da9a85788bL,0xd21f03aebd0626d4L,0x099f8c47e873dc64L,
|
|
0xcda8564d018ec97eL },
|
|
{ 0x3e8d7a5cde92c68cL,0x78e035a173323cc4L,0x3ef26275f880ff7cL,
|
|
0xa4ee3dff273eedaaL } },
|
|
/* 57 << 231 */
|
|
{ { 0x58823507af4e18f8L,0x967ec9b50672f328L,0x9ded19d9559d3186L,
|
|
0x5e2ab3de6cdce39cL },
|
|
{ 0xabad6e4d11c226dfL,0xf9783f4387723014L,0x9a49a0cf1a885719L,
|
|
0xfc0c1a5a90da9dbfL } },
|
|
/* 58 << 231 */
|
|
{ { 0x8bbaec49571d92acL,0x569e85fe4692517fL,0x8333b014a14ea4afL,
|
|
0x32f2a62f12e5c5adL },
|
|
{ 0x98c2ce3a06d89b85L,0xb90741aa2ff77a08L,0x2530defc01f795a2L,
|
|
0xd6e5ba0b84b3c199L } },
|
|
/* 59 << 231 */
|
|
{ { 0x7d8e845112e4c936L,0xae419f7dbd0be17bL,0xa583fc8c22262bc9L,
|
|
0x6b842ac791bfe2bdL },
|
|
{ 0x33cef4e9440d6827L,0x5f69f4deef81fb14L,0xf16cf6f6234fbb92L,
|
|
0x76ae3fc3d9e7e158L } },
|
|
/* 60 << 231 */
|
|
{ { 0x4e89f6c2e9740b33L,0x677bc85d4962d6a1L,0x6c6d8a7f68d10d15L,
|
|
0x5f9a72240257b1cdL },
|
|
{ 0x7096b9164ad85961L,0x5f8c47f7e657ab4aL,0xde57d7d0f7461d7eL,
|
|
0x7eb6094d80ce5ee2L } },
|
|
/* 61 << 231 */
|
|
{ { 0x0b1e1dfd34190547L,0x8a394f43f05dd150L,0x0a9eb24d97df44e6L,
|
|
0x78ca06bf87675719L },
|
|
{ 0x6f0b34626ffeec22L,0x9d91bcea36cdd8fbL,0xac83363ca105be47L,
|
|
0x81ba76c1069710e3L } },
|
|
/* 62 << 231 */
|
|
{ { 0x3d1b24cb28c682c6L,0x27f252288612575bL,0xb587c779e8e66e98L,
|
|
0x7b0c03e9405eb1feL },
|
|
{ 0xfdf0d03015b548e7L,0xa8be76e038b36af7L,0x4cdab04a4f310c40L,
|
|
0x6287223ef47ecaecL } },
|
|
/* 63 << 231 */
|
|
{ { 0x678e60558b399320L,0x61fe3fa6c01e4646L,0xc482866b03261a5eL,
|
|
0xdfcf45b85c2f244aL },
|
|
{ 0x8fab9a512f684b43L,0xf796c654c7220a66L,0x1d90707ef5afa58fL,
|
|
0x2c421d974fdbe0deL } },
|
|
/* 64 << 231 */
|
|
{ { 0xc4f4cda3af2ebc2fL,0xa0af843dcb4efe24L,0x53b857c19ccd10b1L,
|
|
0xddc9d1eb914d3e04L },
|
|
{ 0x7bdec8bb62771debL,0x829277aa91c5aa81L,0x7af18dd6832391aeL,
|
|
0x1740f316c71a84caL } },
|
|
/* 0 << 238 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 238 */
|
|
{ { 0x8928e99aeeaf8c49L,0xee7aa73d6e24d728L,0x4c5007c2e72b156cL,
|
|
0x5fcf57c5ed408a1dL },
|
|
{ 0x9f719e39b6057604L,0x7d343c01c2868bbfL,0x2cca254b7e103e2dL,
|
|
0xe6eb38a9f131bea2L } },
|
|
/* 2 << 238 */
|
|
{ { 0xb33e624f8be762b4L,0x2a9ee4d1058e3413L,0x968e636967d805faL,
|
|
0x9848949b7db8bfd7L },
|
|
{ 0x5308d7e5d23a8417L,0x892f3b1df3e29da5L,0xc95c139e3dee471fL,
|
|
0x8631594dd757e089L } },
|
|
/* 3 << 238 */
|
|
{ { 0xe0c82a3cde918dccL,0x2e7b599426fdcf4bL,0x82c5024932cb1b2dL,
|
|
0xea613a9d7657ae07L },
|
|
{ 0xc2eb5f6cf1fdc9f7L,0xb6eae8b8879fe682L,0x253dfee0591cbc7fL,
|
|
0x000da7133e1290e6L } },
|
|
/* 4 << 238 */
|
|
{ { 0x1083e2ea1f095615L,0x0a28ad7714e68c33L,0x6bfc02523d8818beL,
|
|
0xb585113af35850cdL },
|
|
{ 0x7d935f0b30df8aa1L,0xaddda07c4ab7e3acL,0x92c34299552f00cbL,
|
|
0xc33ed1de2909df6cL } },
|
|
/* 5 << 238 */
|
|
{ { 0x22c2195d80e87766L,0x9e99e6d89ddf4ac0L,0x09642e4e65e74934L,
|
|
0x2610ffa2ff1ff241L },
|
|
{ 0x4d1d47d4751c8159L,0x697b4985af3a9363L,0x0318ca4687477c33L,
|
|
0xa90cb5659441eff3L } },
|
|
/* 6 << 238 */
|
|
{ { 0x58bb384836f024cbL,0x85be1f7736016168L,0x6c59587cdc7e07f1L,
|
|
0x191be071af1d8f02L },
|
|
{ 0xbf169fa5cca5e55cL,0x3864ba3cf7d04eacL,0x915e367f8d7d05dbL,
|
|
0xb48a876da6549e5dL } },
|
|
/* 7 << 238 */
|
|
{ { 0xef89c656580e40a2L,0xf194ed8c728068bcL,0x74528045a47990c9L,
|
|
0xf53fc7d75e1a4649L },
|
|
{ 0xbec5ae9b78593e7dL,0x2cac4ee341db65d7L,0xa8c1eb2404a3d39bL,
|
|
0x53b7d63403f8f3efL } },
|
|
/* 8 << 238 */
|
|
{ { 0x2dc40d483e07113cL,0x6e4a5d397d8b63aeL,0x5582a94b79684c2bL,
|
|
0x932b33d4622da26cL },
|
|
{ 0xf534f6510dbbf08dL,0x211d07c964c23a52L,0x0eeece0fee5bdc9bL,
|
|
0xdf178168f7015558L } },
|
|
/* 9 << 238 */
|
|
{ { 0xd42946350a712229L,0x93cbe44809273f8cL,0x00b095ef8f13bc83L,
|
|
0xbb7419728798978cL },
|
|
{ 0x9d7309a256dbe6e7L,0xe578ec565a5d39ecL,0x3961151b851f9a31L,
|
|
0x2da7715de5709eb4L } },
|
|
/* 10 << 238 */
|
|
{ { 0x867f301753dfabf0L,0x728d2078b8e39259L,0x5c75a0cd815d9958L,
|
|
0xf84867a616603be1L },
|
|
{ 0xc865b13d70e35b1cL,0x0241446819b03e2cL,0xe46041daac1f3121L,
|
|
0x7c9017ad6f028a7cL } },
|
|
/* 11 << 238 */
|
|
{ { 0xabc96de90a482873L,0x4265d6b1b77e54d4L,0x68c38e79a57d88e7L,
|
|
0xd461d7669ce82de3L },
|
|
{ 0x817a9ec564a7e489L,0xcc5675cda0def5f2L,0x9a00e785985d494eL,
|
|
0xc626833f1b03514aL } },
|
|
/* 12 << 238 */
|
|
{ { 0xabe7905a83cdd60eL,0x50602fb5a1170184L,0x689886cdb023642aL,
|
|
0xd568d090a6e1fb00L },
|
|
{ 0x5b1922c70259217fL,0x93831cd9c43141e4L,0xdfca35870c95f86eL,
|
|
0xdec2057a568ae828L } },
|
|
/* 13 << 238 */
|
|
{ { 0xc44ea599f98a759aL,0x55a0a7a2f7c23c1dL,0xd5ffb6e694c4f687L,
|
|
0x3563cce212848478L },
|
|
{ 0x812b3517e7b1fbe1L,0x8a7dc9794f7338e0L,0x211ecee952d048dbL,
|
|
0x2eea4056c86ea3b8L } },
|
|
/* 14 << 238 */
|
|
{ { 0xd8cb68a7ba772b34L,0xe16ed3415f4e2541L,0x9b32f6a60fec14dbL,
|
|
0xeee376f7391698beL },
|
|
{ 0xe9a7aa1783674c02L,0x65832f975843022aL,0x29f3a8da5ba4990fL,
|
|
0x79a59c3afb8e3216L } },
|
|
/* 15 << 238 */
|
|
{ { 0x9cdc4d2ebd19bb16L,0xc6c7cfd0b3262d86L,0xd4ce14d0969c0b47L,
|
|
0x1fa352b713e56128L },
|
|
{ 0x383d55b8973db6d3L,0x71836850e8e5b7bfL,0xc7714596e6bb571fL,
|
|
0x259df31f2d5b2dd2L } },
|
|
/* 16 << 238 */
|
|
{ { 0x568f8925913cc16dL,0x18bc5b6de1a26f5aL,0xdfa413bef5f499aeL,
|
|
0xf8835decc3f0ae84L },
|
|
{ 0xb6e60bd865a40ab0L,0x65596439194b377eL,0xbcd8562592084a69L,
|
|
0x5ce433b94f23ede0L } },
|
|
/* 17 << 238 */
|
|
{ { 0xe8e8f04f6ad65143L,0x11511827d6e14af6L,0x3d390a108295c0c7L,
|
|
0x71e29ee4621eba16L },
|
|
{ 0xa588fc0963717b46L,0x02be02fee06ad4a2L,0x931558c604c22b22L,
|
|
0xbb4d4bd612f3c849L } },
|
|
/* 18 << 238 */
|
|
{ { 0x54a4f49620efd662L,0x92ba6d20c5952d14L,0x2db8ea1ecc9784c2L,
|
|
0x81cc10ca4b353644L },
|
|
{ 0x40b570ad4b4d7f6cL,0x5c9f1d9684a1dcd2L,0x01379f813147e797L,
|
|
0xe5c6097b2bd499f5L } },
|
|
/* 19 << 238 */
|
|
{ { 0x40dcafa6328e5e20L,0xf7b5244a54815550L,0xb9a4f11847bfc978L,
|
|
0x0ea0e79fd25825b1L },
|
|
{ 0xa50f96eb646c7ecfL,0xeb811493446dea9dL,0x2af04677dfabcf69L,
|
|
0xbe3a068fc713f6e8L } },
|
|
/* 20 << 238 */
|
|
{ { 0x860d523d42e06189L,0xbf0779414e3aff13L,0x0b616dcac1b20650L,
|
|
0xe66dd6d12131300dL },
|
|
{ 0xd4a0fd67ff99abdeL,0xc9903550c7aac50dL,0x022ecf8b7c46b2d7L,
|
|
0x3333b1e83abf92afL } },
|
|
/* 21 << 238 */
|
|
{ { 0x11cc113c6c491c14L,0x0597668880dd3f88L,0xf5b4d9e729d932edL,
|
|
0xe982aad8a2c38b6dL },
|
|
{ 0x6f9253478be0dcf0L,0x700080ae65ca53f2L,0xd8131156443ca77fL,
|
|
0xe92d6942ec51f984L } },
|
|
/* 22 << 238 */
|
|
{ { 0xd2a08af885dfe9aeL,0xd825d9a54d2a86caL,0x2c53988d39dff020L,
|
|
0xf38b135a430cdc40L },
|
|
{ 0x0c918ae062a7150bL,0xf31fd8de0c340e9bL,0xafa0e7ae4dbbf02eL,
|
|
0x5847fb2a5eba6239L } },
|
|
/* 23 << 238 */
|
|
{ { 0x6b1647dcdccbac8bL,0xb642aa7806f485c8L,0x873f37657038ecdfL,
|
|
0x2ce5e865fa49d3feL },
|
|
{ 0xea223788c98c4400L,0x8104a8cdf1fa5279L,0xbcf7cc7a06becfd7L,
|
|
0x49424316c8f974aeL } },
|
|
/* 24 << 238 */
|
|
{ { 0xc0da65e784d6365dL,0xbcb7443f8f759fb8L,0x35c712b17ae81930L,
|
|
0x80428dff4c6e08abL },
|
|
{ 0xf19dafefa4faf843L,0xced8538dffa9855fL,0x20ac409cbe3ac7ceL,
|
|
0x358c1fb6882da71eL } },
|
|
/* 25 << 238 */
|
|
{ { 0xafa9c0e5fd349961L,0x2b2cfa518421c2fcL,0x2a80db17f3a28d38L,
|
|
0xa8aba5395d138e7eL },
|
|
{ 0x52012d1d6e96eb8dL,0x65d8dea0cbaf9622L,0x57735447b264f56cL,
|
|
0xbeebef3f1b6c8da2L } },
|
|
/* 26 << 238 */
|
|
{ { 0xfc346d98ce785254L,0xd50e8d72bb64a161L,0xc03567c749794addL,
|
|
0x15a76065752c7ef6L },
|
|
{ 0x59f3a222961f23d6L,0x378e443873ecc0b0L,0xc74be4345a82fde4L,
|
|
0xae509af2d8b9cf34L } },
|
|
/* 27 << 238 */
|
|
{ { 0x4a61ee46577f44a1L,0xe09b748cb611deebL,0xc0481b2cf5f7b884L,
|
|
0x3562667861acfa6bL },
|
|
{ 0x37f4c518bf8d21e6L,0x22d96531b205a76dL,0x37fb85e1954073c0L,
|
|
0xbceafe4f65b3a567L } },
|
|
/* 28 << 238 */
|
|
{ { 0xefecdef7be42a582L,0xd3fc608065046be6L,0xc9af13c809e8dba9L,
|
|
0x1e6c9847641491ffL },
|
|
{ 0x3b574925d30c31f7L,0xb7eb72baac2a2122L,0x776a0dacef0859e7L,
|
|
0x06fec31421900942L } },
|
|
/* 29 << 238 */
|
|
{ { 0x2464bc10f8c22049L,0x9bfbcce7875ebf69L,0xd7a88e2a4336326bL,
|
|
0xda05261c5bc2acfaL },
|
|
{ 0xc29f5bdceba7efc8L,0x471237ca25dbbf2eL,0xa72773f22975f127L,
|
|
0xdc744e8e04d0b326L } },
|
|
/* 30 << 238 */
|
|
{ { 0x38a7ed16a56edb73L,0x64357e372c007e70L,0xa167d15b5080b400L,
|
|
0x07b4116423de4be1L },
|
|
{ 0xb2d91e3274c89883L,0x3c1628212882e7edL,0xad6b36ba7503e482L,
|
|
0x48434e8e0ea34331L } },
|
|
/* 31 << 238 */
|
|
{ { 0x79f4f24f2c7ae0b9L,0xc46fbf811939b44aL,0x76fefae856595eb1L,
|
|
0x417b66abcd5f29c7L },
|
|
{ 0x5f2332b2c5ceec20L,0xd69661ffe1a1cae2L,0x5ede7e529b0286e6L,
|
|
0x9d062529e276b993L } },
|
|
/* 32 << 238 */
|
|
{ { 0x324794b07e50122bL,0xdd744f8b4af07ca5L,0x30a12f08d63fc97bL,
|
|
0x39650f1a76626d9dL },
|
|
{ 0x101b47f71fa38477L,0x3d815f19d4dc124fL,0x1569ae95b26eb58aL,
|
|
0xc3cde18895fb1887L } },
|
|
/* 33 << 238 */
|
|
{ { 0x54e9f37bf9539a48L,0xb0100e067408c1a5L,0x821d9811ea580cbbL,
|
|
0x8af52d3586e50c56L },
|
|
{ 0xdfbd9d47dbbf698bL,0x2961a1ea03dc1c73L,0x203d38f8e76a5df8L,
|
|
0x08a53a686def707aL } },
|
|
/* 34 << 238 */
|
|
{ { 0x26eefb481bee45d4L,0xb3cee3463c688036L,0x463c5315c42f2469L,
|
|
0x19d84d2e81378162L },
|
|
{ 0x22d7c3c51c4d349fL,0x65965844163d59c5L,0xcf198c56b8abceaeL,
|
|
0x6fb1fb1b628559d5L } },
|
|
/* 35 << 238 */
|
|
{ { 0x8bbffd0607bf8fe3L,0x46259c583467734bL,0xd8953cea35f7f0d3L,
|
|
0x1f0bece2d65b0ff1L },
|
|
{ 0xf7d5b4b3f3c72914L,0x29e8ea953cb53389L,0x4a365626836b6d46L,
|
|
0xe849f910ea174fdeL } },
|
|
/* 36 << 238 */
|
|
{ { 0x7ec62fbbf4737f21L,0xd8dba5ab6209f5acL,0x24b5d7a9a5f9adbeL,
|
|
0x707d28f7a61dc768L },
|
|
{ 0x7711460bcaa999eaL,0xba7b174d1c92e4ccL,0x3c4bab6618d4bf2dL,
|
|
0xb8f0c980eb8bd279L } },
|
|
/* 37 << 238 */
|
|
{ { 0x024bea9a324b4737L,0xfba9e42332a83bcaL,0x6e635643a232dcedL,
|
|
0x996193672571c8baL },
|
|
{ 0xe8c9f35754b7032bL,0xf936b3ba2442d54aL,0x2263f0f08290c65aL,
|
|
0x48989780ee2c7fdbL } },
|
|
/* 38 << 238 */
|
|
{ { 0xadc5d55a13d4f95eL,0x737cff85ad9b8500L,0x271c557b8a73f43dL,
|
|
0xbed617a4e18bc476L },
|
|
{ 0x662454017dfd8ab2L,0xae7b89ae3a2870aaL,0x1b555f5323a7e545L,
|
|
0x6791e247be057e4cL } },
|
|
/* 39 << 238 */
|
|
{ { 0x860136ad324fa34dL,0xea1114474cbeae28L,0x023a4270bedd3299L,
|
|
0x3d5c3a7fc1c35c34L },
|
|
{ 0xb0f6db678d0412d2L,0xd92625e2fcdc6b9aL,0x92ae5ccc4e28a982L,
|
|
0xea251c3647a3ce7eL } },
|
|
/* 40 << 238 */
|
|
{ { 0x9d658932790691bfL,0xed61058906b736aeL,0x712c2f04c0d63b6eL,
|
|
0x5cf06fd5c63d488fL },
|
|
{ 0x97363facd9588e41L,0x1f9bf7622b93257eL,0xa9d1ffc4667acaceL,
|
|
0x1cf4a1aa0a061ecfL } },
|
|
/* 41 << 238 */
|
|
{ { 0x40e48a49dc1818d0L,0x0643ff39a3621ab0L,0x5768640ce39ef639L,
|
|
0x1fc099ea04d86854L },
|
|
{ 0x9130b9c3eccd28fdL,0xd743cbd27eec54abL,0x052b146fe5b475b6L,
|
|
0x058d9a82900a7d1fL } },
|
|
/* 42 << 238 */
|
|
{ { 0x65e0229291262b72L,0x96f924f9bb0edf03L,0x5cfa59c8fe206842L,
|
|
0xf60370045eafa720L },
|
|
{ 0x5f30699e18d7dd96L,0x381e8782cbab2495L,0x91669b46dd8be949L,
|
|
0xb40606f526aae8efL } },
|
|
/* 43 << 238 */
|
|
{ { 0x2812b839fc6751a4L,0x16196214fba800efL,0x4398d5ca4c1a2875L,
|
|
0x720c00ee653d8349L },
|
|
{ 0xc2699eb0d820007cL,0x880ee660a39b5825L,0x70694694471f6984L,
|
|
0xf7d16ea8e3dda99aL } },
|
|
/* 44 << 238 */
|
|
{ { 0x28d675b2c0519a23L,0x9ebf94fe4f6952e3L,0xf28bb767a2294a8aL,
|
|
0x85512b4dfe0af3f5L },
|
|
{ 0x18958ba899b16a0dL,0x95c2430cba7548a7L,0xb30d1b10a16be615L,
|
|
0xe3ebbb9785bfb74cL } },
|
|
/* 45 << 238 */
|
|
{ { 0xa3273cfe18549fdbL,0xf6e200bf4fcdb792L,0x54a76e1883aba56cL,
|
|
0x73ec66f689ef6aa2L },
|
|
{ 0x8d17add7d1b9a305L,0xa959c5b9b7ae1b9dL,0x886435226bcc094aL,
|
|
0xcc5616c4d7d429b9L } },
|
|
/* 46 << 238 */
|
|
{ { 0xa6dada01e6a33f7cL,0xc6217a079d4e70adL,0xd619a81809c15b7cL,
|
|
0xea06b3290e80c854L },
|
|
{ 0x174811cea5f5e7b9L,0x66dfc310787c65f4L,0x4ea7bd693316ab54L,
|
|
0xc12c4acb1dcc0f70L } },
|
|
/* 47 << 238 */
|
|
{ { 0xe4308d1a1e407dd9L,0xe8a3587c91afa997L,0xea296c12ab77b7a5L,
|
|
0xb5ad49e4673c0d52L },
|
|
{ 0x40f9b2b27006085aL,0xa88ff34087bf6ec2L,0x978603b14e3066a6L,
|
|
0xb3f99fc2b5e486e2L } },
|
|
/* 48 << 238 */
|
|
{ { 0x07b53f5eb2e63645L,0xbe57e54784c84232L,0xd779c2167214d5cfL,
|
|
0x617969cd029a3acaL },
|
|
{ 0xd17668cd8a7017a0L,0x77b4d19abe9b7ee8L,0x58fd0e939c161776L,
|
|
0xa8c4f4efd5968a72L } },
|
|
/* 49 << 238 */
|
|
{ { 0x296071cc67b3de77L,0xae3c0b8e634f7905L,0x67e440c28a7100c9L,
|
|
0xbb8c3c1beb4b9b42L },
|
|
{ 0x6d71e8eac51b3583L,0x7591f5af9525e642L,0xf73a2f7b13f509f3L,
|
|
0x618487aa5619ac9bL } },
|
|
/* 50 << 238 */
|
|
{ { 0x3a72e5f79d61718aL,0x00413bcc7592d28cL,0x7d9b11d3963c35cfL,
|
|
0x77623bcfb90a46edL },
|
|
{ 0xdeef273bdcdd2a50L,0x4a741f9b0601846eL,0x33b89e510ec6e929L,
|
|
0xcb02319f8b7f22cdL } },
|
|
/* 51 << 238 */
|
|
{ { 0xbbe1500d084bae24L,0x2f0ae8d7343d2693L,0xacffb5f27cdef811L,
|
|
0xaa0c030a263fb94fL },
|
|
{ 0x6eef0d61a0f442deL,0xf92e181727b139d3L,0x1ae6deb70ad8bc28L,
|
|
0xa89e38dcc0514130L } },
|
|
/* 52 << 238 */
|
|
{ { 0x81eeb865d2fdca23L,0x5a15ee08cc8ef895L,0x768fa10a01905614L,
|
|
0xeff5b8ef880ee19bL },
|
|
{ 0xf0c0cabbcb1c8a0eL,0x2e1ee9cdb8c838f9L,0x0587d8b88a4a14c0L,
|
|
0xf6f278962ff698e5L } },
|
|
/* 53 << 238 */
|
|
{ { 0xed38ef1c89ee6256L,0xf44ee1fe6b353b45L,0x9115c0c770e903b3L,
|
|
0xc78ec0a1818f31dfL },
|
|
{ 0x6c003324b7dccbc6L,0xd96dd1f3163bbc25L,0x33aa82dd5cedd805L,
|
|
0x123aae4f7f7eb2f1L } },
|
|
/* 54 << 238 */
|
|
{ { 0x1723fcf5a26262cdL,0x1f7f4d5d0060ebd5L,0xf19c5c01b2eaa3afL,
|
|
0x2ccb9b149790accfL },
|
|
{ 0x1f9c1cad52324aa6L,0x632005267247df54L,0x5732fe42bac96f82L,
|
|
0x52fe771f01a1c384L } },
|
|
/* 55 << 238 */
|
|
{ { 0x546ca13db1001684L,0xb56b4eeea1709f75L,0x266545a9d5db8672L,
|
|
0xed971c901e8f3cfbL },
|
|
{ 0x4e7d8691e3a07b29L,0x7570d9ece4b696b9L,0xdc5fa0677bc7e9aeL,
|
|
0x68b44cafc82c4844L } },
|
|
/* 56 << 238 */
|
|
{ { 0x519d34b3bf44da80L,0x283834f95ab32e66L,0x6e6087976278a000L,
|
|
0x1e62960e627312f6L },
|
|
{ 0x9b87b27be6901c55L,0x80e7853824fdbc1fL,0xbbbc09512facc27dL,
|
|
0x06394239ac143b5aL } },
|
|
/* 57 << 238 */
|
|
{ { 0x35bb4a40376c1944L,0x7cb6269463da1511L,0xafd29161b7148a3bL,
|
|
0xa6f9d9ed4e2ea2eeL },
|
|
{ 0x15dc2ca2880dd212L,0x903c3813a61139a9L,0x2aa7b46d6c0f8785L,
|
|
0x36ce2871901c60ffL } },
|
|
/* 58 << 238 */
|
|
{ { 0xc683b028e10d9c12L,0x7573baa2032f33d3L,0x87a9b1f667a31b58L,
|
|
0xfd3ed11af4ffae12L },
|
|
{ 0x83dcaa9a0cb2748eL,0x8239f0185d6fdf16L,0xba67b49c72753941L,
|
|
0x2beec455c321cb36L } },
|
|
/* 59 << 238 */
|
|
{ { 0x880156063f8b84ceL,0x764170838d38c86fL,0x054f1ca7598953ddL,
|
|
0xc939e1104e8e7429L },
|
|
{ 0x9b1ac2b35a914f2fL,0x39e35ed3e74b8f9cL,0xd0debdb2781b2fb0L,
|
|
0x1585638f2d997ba2L } },
|
|
/* 60 << 238 */
|
|
{ { 0x9c4b646e9e2fce99L,0x68a210811e80857fL,0x06d54e443643b52aL,
|
|
0xde8d6d630d8eb843L },
|
|
{ 0x7032156342146a0aL,0x8ba826f25eaa3622L,0x227a58bd86138787L,
|
|
0x43b6c03c10281d37L } },
|
|
/* 61 << 238 */
|
|
{ { 0x6326afbbb54dde39L,0x744e5e8adb6f2d5fL,0x48b2a99acff158e1L,
|
|
0xa93c8fa0ef87918fL },
|
|
{ 0x2182f956de058c5cL,0x216235d2936f9e7aL,0xace0c0dbd2e31e67L,
|
|
0xc96449bff23ac3e7L } },
|
|
/* 62 << 238 */
|
|
{ { 0x7e9a2874170693bdL,0xa28e14fda45e6335L,0x5757f6b356427344L,
|
|
0x822e4556acf8edf9L },
|
|
{ 0x2b7a6ee2e6a285cdL,0x5866f211a9df3af0L,0x40dde2ddf845b844L,
|
|
0x986c3726110e5e49L } },
|
|
/* 63 << 238 */
|
|
{ { 0x73680c2af7172277L,0x57b94f0f0cccb244L,0xbdff72672d438ca7L,
|
|
0xbad1ce11cf4663fdL },
|
|
{ 0x9813ed9dd8f71caeL,0xf43272a6961fdaa6L,0xbeff0119bd6d1637L,
|
|
0xfebc4f9130361978L } },
|
|
/* 64 << 238 */
|
|
{ { 0x02b37a952f41deffL,0x0e44a59ae63b89b7L,0x673257dc143ff951L,
|
|
0x19c02205d752baf4L },
|
|
{ 0x46c23069c4b7d692L,0x2e6392c3fd1502acL,0x6057b1a21b220846L,
|
|
0xe51ff9460c1b5b63L } },
|
|
/* 0 << 245 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 245 */
|
|
{ { 0x6e85cb51566c5c43L,0xcff9c9193597f046L,0x9354e90c4994d94aL,
|
|
0xe0a393322147927dL },
|
|
{ 0x8427fac10dc1eb2bL,0x88cfd8c22ff319faL,0xe2d4e68401965274L,
|
|
0xfa2e067d67aaa746L } },
|
|
/* 2 << 245 */
|
|
{ { 0xb6d92a7f3e5f9f11L,0x9afe153ad6cb3b8eL,0x4d1a6dd7ddf800bdL,
|
|
0xf6c13cc0caf17e19L },
|
|
{ 0x15f6c58e325fc3eeL,0x71095400a31dc3b2L,0x168e7c07afa3d3e7L,
|
|
0x3f8417a194c7ae2dL } },
|
|
/* 3 << 245 */
|
|
{ { 0xec234772813b230dL,0x634d0f5f17344427L,0x11548ab1d77fc56aL,
|
|
0x7fab1750ce06af77L },
|
|
{ 0xb62c10a74f7c4f83L,0xa7d2edc4220a67d9L,0x1c404170921209a0L,
|
|
0x0b9815a0face59f0L } },
|
|
/* 4 << 245 */
|
|
{ { 0x2842589b319540c3L,0x18490f59a283d6f8L,0xa2731f84daae9fcbL,
|
|
0x3db6d960c3683ba0L },
|
|
{ 0xc85c63bb14611069L,0xb19436af0788bf05L,0x905459df347460d2L,
|
|
0x73f6e094e11a7db1L } },
|
|
/* 5 << 245 */
|
|
{ { 0xdc7f938eb6357f37L,0xc5d00f792bd8aa62L,0xc878dcb92ca979fcL,
|
|
0x37e83ed9eb023a99L },
|
|
{ 0x6b23e2731560bf3dL,0x1086e4591d0fae61L,0x782483169a9414bdL,
|
|
0x1b956bc0f0ea9ea1L } },
|
|
/* 6 << 245 */
|
|
{ { 0x7b85bb91c31b9c38L,0x0c5aa90b48ef57b5L,0xdedeb169af3bab6fL,
|
|
0xe610ad732d373685L },
|
|
{ 0xf13870df02ba8e15L,0x0337edb68ca7f771L,0xe4acf747b62c036cL,
|
|
0xd921d576b6b94e81L } },
|
|
/* 7 << 245 */
|
|
{ { 0xdbc864392c422f7aL,0xfb635362ed348898L,0x83084668c45bfcd1L,
|
|
0xc357c9e32b315e11L },
|
|
{ 0xb173b5405b2e5b8cL,0x7e946931e102b9a4L,0x17c890eb7b0fb199L,
|
|
0xec225a83d61b662bL } },
|
|
/* 8 << 245 */
|
|
{ { 0xf306a3c8ee3c76cbL,0x3cf11623d32a1f6eL,0xe6d5ab646863e956L,
|
|
0x3b8a4cbe5c005c26L },
|
|
{ 0xdcd529a59ce6bb27L,0xc4afaa5204d4b16fL,0xb0624a267923798dL,
|
|
0x85e56df66b307fabL } },
|
|
/* 9 << 245 */
|
|
{ { 0x0281893c2bf29698L,0x91fc19a4d7ce7603L,0x75a5dca3ad9a558fL,
|
|
0x40ceb3fa4d50bf77L },
|
|
{ 0x1baf6060bc9ba369L,0x927e1037597888c2L,0xd936bf1986a34c07L,
|
|
0xd4cf10c1c34ae980L } },
|
|
/* 10 << 245 */
|
|
{ { 0x3a3e5334859dd614L,0x9c475b5b18d0c8eeL,0x63080d1f07cd51d5L,
|
|
0xc9c0d0a6b88b4326L },
|
|
{ 0x1ac98691c234296fL,0x2a0a83a494887fb6L,0x565114270cea9cf2L,
|
|
0x5230a6e8a24802f5L } },
|
|
/* 11 << 245 */
|
|
{ { 0xf7a2bf0f72e3d5c1L,0x377174464f21439eL,0xfedcbf259ce30334L,
|
|
0xe0030a787ce202f9L },
|
|
{ 0x6f2d9ebf1202e9caL,0xe79dde6c75e6e591L,0xf52072aff1dac4f8L,
|
|
0x6c8d087ebb9b404dL } },
|
|
/* 12 << 245 */
|
|
{ { 0xad0fc73dbce913afL,0x909e587b458a07cbL,0x1300da84d4f00c8aL,
|
|
0x425cd048b54466acL },
|
|
{ 0xb59cb9be90e9d8bfL,0x991616db3e431b0eL,0xd3aa117a531aecffL,
|
|
0x91af92d359f4dc3bL } },
|
|
/* 13 << 245 */
|
|
{ { 0x9b1ec292e93fda29L,0x76bb6c17e97d91bcL,0x7509d95faface1e6L,
|
|
0x3653fe47be855ae3L },
|
|
{ 0x73180b280f680e75L,0x75eefd1beeb6c26cL,0xa4cdf29fb66d4236L,
|
|
0x2d70a9976b5821d8L } },
|
|
/* 14 << 245 */
|
|
{ { 0x7a3ee20720445c36L,0x71d1ac8259877174L,0x0fc539f7949f73e9L,
|
|
0xd05cf3d7982e3081L },
|
|
{ 0x8758e20b7b1c7129L,0xffadcc20569e61f2L,0xb05d3a2f59544c2dL,
|
|
0xbe16f5c19fff5e53L } },
|
|
/* 15 << 245 */
|
|
{ { 0x73cf65b8aad58135L,0x622c2119037aa5beL,0x79373b3f646fd6a0L,
|
|
0x0e029db50d3978cfL },
|
|
{ 0x8bdfc43794fba037L,0xaefbd687620797a6L,0x3fa5382bbd30d38eL,
|
|
0x7627cfbf585d7464L } },
|
|
/* 16 << 245 */
|
|
{ { 0xb2330fef4e4ca463L,0xbcef72873566cc63L,0xd161d2cacf780900L,
|
|
0x135dc5395b54827dL },
|
|
{ 0x638f052e27bf1bc6L,0x10a224f007dfa06cL,0xe973586d6d3321daL,
|
|
0x8b0c573826152c8fL } },
|
|
/* 17 << 245 */
|
|
{ { 0x07ef4f2a34606074L,0x80fe7fe8a0f7047aL,0x3d1a8152e1a0e306L,
|
|
0x32cf43d888da5222L },
|
|
{ 0xbf89a95f5f02ffe6L,0x3d9eb9a4806ad3eaL,0x012c17bb79c8e55eL,
|
|
0xfdcd1a7499c81dacL } },
|
|
/* 18 << 245 */
|
|
{ { 0x7043178bb9556098L,0x4090a1df801c3886L,0x759800ff9b67b912L,
|
|
0x3e5c0304232620c8L },
|
|
{ 0x4b9d3c4b70dceecaL,0xbb2d3c15181f648eL,0xf981d8376e33345cL,
|
|
0xb626289b0cf2297aL } },
|
|
/* 19 << 245 */
|
|
{ { 0x766ac6598baebdcfL,0x1a28ae0975df01e5L,0xb71283da375876d8L,
|
|
0x4865a96d607b9800L },
|
|
{ 0x25dd1bcd237936b2L,0x332f4f4b60417494L,0xd0923d68370a2147L,
|
|
0x497f5dfbdc842203L } },
|
|
/* 20 << 245 */
|
|
{ { 0x9dc74cbd32be5e0fL,0x7475bcb717a01375L,0x438477c950d872b1L,
|
|
0xcec67879ffe1d63dL },
|
|
{ 0x9b006014d8578c70L,0xc9ad99a878bb6b8bL,0x6799008e11fb3806L,
|
|
0xcfe81435cd44cab3L } },
|
|
/* 21 << 245 */
|
|
{ { 0xa2ee15822f4fb344L,0xb8823450483fa6ebL,0x622d323d652c7749L,
|
|
0xd8474a98beb0a15bL },
|
|
{ 0xe43c154d5d1c00d0L,0x7fd581d90e3e7aacL,0x2b44c6192525ddf8L,
|
|
0x67a033ebb8ae9739L } },
|
|
/* 22 << 245 */
|
|
{ { 0x113ffec19ef2d2e4L,0x1bf6767ed5a0ea7fL,0x57fff75e03714c0aL,
|
|
0xa23c422e0a23e9eeL },
|
|
{ 0xdd5f6b2d540f83afL,0xc2c2c27e55ea46a7L,0xeb6b4246672a1208L,
|
|
0xd13599f7ae634f7aL } },
|
|
/* 23 << 245 */
|
|
{ { 0xcf914b5cd7b32c6eL,0x61a5a640eaf61814L,0x8dc3df8b208a1bbbL,
|
|
0xef627fd6b6d79aa5L },
|
|
{ 0x44232ffcc4c86bc8L,0xe6f9231b061539feL,0x1d04f25a958b9533L,
|
|
0x180cf93449e8c885L } },
|
|
/* 24 << 245 */
|
|
{ { 0x896895959884aaf7L,0xb1959be307b348a6L,0x96250e573c147c87L,
|
|
0xae0efb3add0c61f8L },
|
|
{ 0xed00745eca8c325eL,0x3c911696ecff3f70L,0x73acbc65319ad41dL,
|
|
0x7b01a020f0b1c7efL } },
|
|
/* 25 << 245 */
|
|
{ { 0xea32b29363a1483fL,0x89eabe717a248f96L,0x9c6231d3343157e5L,
|
|
0x93a375e5df3c546dL },
|
|
{ 0xe76e93436a2afe69L,0xc4f89100e166c88eL,0x248efd0d4f872093L,
|
|
0xae0eb3ea8fe0ea61L } },
|
|
/* 26 << 245 */
|
|
{ { 0xaf89790d9d79046eL,0x4d650f2d6cee0976L,0xa3935d9a43071ecaL,
|
|
0x66fcd2c9283b0bfeL },
|
|
{ 0x0e665eb5696605f1L,0xe77e5d07a54cd38dL,0x90ee050a43d950cfL,
|
|
0x86ddebdad32e69b5L } },
|
|
/* 27 << 245 */
|
|
{ { 0x6ad94a3dfddf7415L,0xf7fa13093f6e8d5aL,0xc4831d1de9957f75L,
|
|
0x7de28501d5817447L },
|
|
{ 0x6f1d70789e2aeb6bL,0xba2b9ff4f67a53c2L,0x36963767df9defc3L,
|
|
0x479deed30d38022cL } },
|
|
/* 28 << 245 */
|
|
{ { 0xd2edb89b3a8631e8L,0x8de855de7a213746L,0xb2056cb7b00c5f11L,
|
|
0xdeaefbd02c9b85e4L },
|
|
{ 0x03f39a8dd150892dL,0x37b84686218b7985L,0x36296dd8b7375f1aL,
|
|
0x472cd4b1b78e898eL } },
|
|
/* 29 << 245 */
|
|
{ { 0x15dff651e9f05de9L,0xd40450692ce98ba9L,0x8466a7ae9b38024cL,
|
|
0xb910e700e5a6b5efL },
|
|
{ 0xae1c56eab3aa8f0dL,0xbab2a5077eee74a6L,0x0dca11e24b4c4620L,
|
|
0xfd896e2e4c47d1f4L } },
|
|
/* 30 << 245 */
|
|
{ { 0xeb45ae53308fbd93L,0x46cd5a2e02c36fdaL,0x6a3d4e90baa48385L,
|
|
0xdd55e62e9dbe9960L },
|
|
{ 0xa1406aa02a81ede7L,0x6860dd14f9274ea7L,0xcfdcb0c280414f86L,
|
|
0xff410b1022f94327L } },
|
|
/* 31 << 245 */
|
|
{ { 0x5a33cc3849ad467bL,0xefb48b6c0a7335f1L,0x14fb54a4b153a360L,
|
|
0x604aa9d2b52469ccL },
|
|
{ 0x5e9dc486754e48e9L,0x693cb45537471e8eL,0xfb2fd7cd8d3b37b6L,
|
|
0x63345e16cf09ff07L } },
|
|
/* 32 << 245 */
|
|
{ { 0x9910ba6b23a5d896L,0x1fe19e357fe4364eL,0x6e1da8c39a33c677L,
|
|
0x15b4488b29fd9fd0L },
|
|
{ 0x1f4392541a1f22bfL,0x920a8a70ab8163e8L,0x3fd1b24907e5658eL,
|
|
0xf2c4f79cb6ec839bL } },
|
|
/* 33 << 245 */
|
|
{ { 0x1abbc3d04aa38d1bL,0x3b0db35cb5d9510eL,0x1754ac783e60dec0L,
|
|
0x53272fd7ea099b33L },
|
|
{ 0x5fb0494f07a8e107L,0x4a89e1376a8191faL,0xa113b7f63c4ad544L,
|
|
0x88a2e9096cb9897bL } },
|
|
/* 34 << 245 */
|
|
{ { 0x17d55de3b44a3f84L,0xacb2f34417c6c690L,0x3208816810232390L,
|
|
0xf2e8a61f6c733bf7L },
|
|
{ 0xa774aab69c2d7652L,0xfb5307e3ed95c5bcL,0xa05c73c24981f110L,
|
|
0x1baae31ca39458c9L } },
|
|
/* 35 << 245 */
|
|
{ { 0x1def185bcbea62e7L,0xe8ac9eaeeaf63059L,0x098a8cfd9921851cL,
|
|
0xd959c3f13abe2f5bL },
|
|
{ 0xa4f1952520e40ae5L,0x320789e307a24aa1L,0x259e69277392b2bcL,
|
|
0x58f6c6671918668bL } },
|
|
/* 36 << 245 */
|
|
{ { 0xce1db2bbc55d2d8bL,0x41d58bb7f4f6ca56L,0x7650b6808f877614L,
|
|
0x905e16baf4c349edL },
|
|
{ 0xed415140f661acacL,0x3b8784f0cb2270afL,0x3bc280ac8a402cbaL,
|
|
0xd53f71460937921aL } },
|
|
/* 37 << 245 */
|
|
{ { 0xc03c8ee5e5681e83L,0x62126105f6ac9e4aL,0x9503a53f936b1a38L,
|
|
0x3d45e2d4782fecbdL },
|
|
{ 0x69a5c43976e8ae98L,0xb53b2eebbfb4b00eL,0xf167471272386c89L,
|
|
0x30ca34a24268bce4L } },
|
|
/* 38 << 245 */
|
|
{ { 0x7f1ed86c78341730L,0x8ef5beb8b525e248L,0xbbc489fdb74fbf38L,
|
|
0x38a92a0e91a0b382L },
|
|
{ 0x7a77ba3f22433ccfL,0xde8362d6a29f05a9L,0x7f6a30ea61189afcL,
|
|
0x693b550559ef114fL } },
|
|
/* 39 << 245 */
|
|
{ { 0x50266bc0cd1797a1L,0xea17b47ef4b7af2dL,0xd6c4025c3df9483eL,
|
|
0x8cbb9d9fa37b18c9L },
|
|
{ 0x91cbfd9c4d8424cfL,0xdb7048f1ab1c3506L,0x9eaf641f028206a3L,
|
|
0xf986f3f925bdf6ceL } },
|
|
/* 40 << 245 */
|
|
{ { 0x262143b5224c08dcL,0x2bbb09b481b50c91L,0xc16ed709aca8c84fL,
|
|
0xa6210d9db2850ca8L },
|
|
{ 0x6d8df67a09cb54d6L,0x91eef6e0500919a4L,0x90f613810f132857L,
|
|
0x9acede47f8d5028bL } },
|
|
/* 41 << 245 */
|
|
{ { 0x844d1b7190b771c3L,0x563b71e4ba6426beL,0x2efa2e83bdb802ffL,
|
|
0x3410cbabab5b4a41L },
|
|
{ 0x555b2d2630da84ddL,0xd0711ae9ee1cc29aL,0xcf3e8c602f547792L,
|
|
0x03d7d5dedc678b35L } },
|
|
/* 42 << 245 */
|
|
{ { 0x071a2fa8ced806b8L,0x222e6134697f1478L,0xdc16fd5dabfcdbbfL,
|
|
0x44912ebf121b53b8L },
|
|
{ 0xac9436742496c27cL,0x8ea3176c1ffc26b0L,0xb6e224ac13debf2cL,
|
|
0x524cc235f372a832L } },
|
|
/* 43 << 245 */
|
|
{ { 0xd706e1d89f6f1b18L,0x2552f00544cce35bL,0x8c8326c2a88e31fcL,
|
|
0xb5468b2cf9552047L },
|
|
{ 0xce683e883ff90f2bL,0x77947bdf2f0a5423L,0xd0a1b28bed56e328L,
|
|
0xaee35253c20134acL } },
|
|
/* 44 << 245 */
|
|
{ { 0x7e98367d3567962fL,0x379ed61f8188bffbL,0x73bba348faf130a1L,
|
|
0x6c1f75e1904ed734L },
|
|
{ 0x189566423b4a79fcL,0xf20bc83d54ef4493L,0x836d425d9111eca1L,
|
|
0xe5b5c318009a8dcfL } },
|
|
/* 45 << 245 */
|
|
{ { 0x3360b25d13221bc5L,0x707baad26b3eeaf7L,0xd7279ed8743a95a1L,
|
|
0x7450a875969e809fL },
|
|
{ 0x32b6bd53e5d0338fL,0x1e77f7af2b883bbcL,0x90da12cc1063ecd0L,
|
|
0xe2697b58c315be47L } },
|
|
/* 46 << 245 */
|
|
{ { 0x2771a5bdda85d534L,0x53e78c1fff980eeaL,0xadf1cf84900385e7L,
|
|
0x7d3b14f6c9387b62L },
|
|
{ 0x170e74b0cb8f2bd2L,0x2d50b486827fa993L,0xcdbe8c9af6f32babL,
|
|
0x55e906b0c3b93ab8L } },
|
|
/* 47 << 245 */
|
|
{ { 0x747f22fc8fe280d1L,0xcd8e0de5b2e114abL,0x5ab7dbebe10b68b0L,
|
|
0x9dc63a9ca480d4b2L },
|
|
{ 0x78d4bc3b4be1495fL,0x25eb3db89359122dL,0x3f8ac05b0809cbdcL,
|
|
0xbf4187bbd37c702fL } },
|
|
/* 48 << 245 */
|
|
{ { 0x84cea0691416a6a5L,0x8f860c7943ef881cL,0x41311f8a38038a5dL,
|
|
0xe78c2ec0fc612067L },
|
|
{ 0x494d2e815ad73581L,0xb4cc9e0059604097L,0xff558aecf3612cbaL,
|
|
0x35beef7a9e36c39eL } },
|
|
/* 49 << 245 */
|
|
{ { 0x1845c7cfdbcf41b9L,0x5703662aaea997c0L,0x8b925afee402f6d8L,
|
|
0xd0a1b1ae4dd72162L },
|
|
{ 0x9f47b37503c41c4bL,0xa023829b0391d042L,0x5f5045c3503b8b0aL,
|
|
0x123c268898c010e5L } },
|
|
/* 50 << 245 */
|
|
{ { 0x324ec0cc36ba06eeL,0xface31153dd2cc0cL,0xb364f3bef333e91fL,
|
|
0xef8aff7328e832b0L },
|
|
{ 0x1e9bad042d05841bL,0x42f0e3df356a21e2L,0xa3270bcb4add627eL,
|
|
0xb09a8158d322e711L } },
|
|
/* 51 << 245 */
|
|
{ { 0x86e326a10fee104aL,0xad7788f83703f65dL,0x7e76543047bc4833L,
|
|
0x6cee582b2b9b893aL },
|
|
{ 0x9cd2a167e8f55a7bL,0xefbee3c6d9e4190dL,0x33ee7185d40c2e9dL,
|
|
0x844cc9c5a380b548L } },
|
|
/* 52 << 245 */
|
|
{ { 0x323f8ecd66926e04L,0x0001e38f8110c1baL,0x8dbcac12fc6a7f07L,
|
|
0xd65e1d580cec0827L },
|
|
{ 0xd2cd4141be76ca2dL,0x7895cf5ce892f33aL,0x956d230d367139d2L,
|
|
0xa91abd3ed012c4c1L } },
|
|
/* 53 << 245 */
|
|
{ { 0x34fa488387eb36bfL,0xc5f07102914b8fb4L,0x90f0e579adb9c95fL,
|
|
0xfe6ea8cb28888195L },
|
|
{ 0x7b9b5065edfa9284L,0x6c510bd22b8c8d65L,0xd7b8ebefcbe8aafdL,
|
|
0xedb3af9896b1da07L } },
|
|
/* 54 << 245 */
|
|
{ { 0x28ff779d6295d426L,0x0c4f6ac73fa3ad7bL,0xec44d0548b8e2604L,
|
|
0x9b32a66d8b0050e1L },
|
|
{ 0x1f943366f0476ce2L,0x7554d953a602c7b4L,0xbe35aca6524f2809L,
|
|
0xb6881229fd4edbeaL } },
|
|
/* 55 << 245 */
|
|
{ { 0xe8cd0c8f508efb63L,0x9eb5b5c86abcefc7L,0xf5621f5fb441ab4fL,
|
|
0x79e6c046b76a2b22L },
|
|
{ 0x74a4792ce37a1f69L,0xcbd252cb03542b60L,0x785f65d5b3c20bd3L,
|
|
0x8dea61434fabc60cL } },
|
|
/* 56 << 245 */
|
|
{ { 0x45e21446de673629L,0x57f7aa1e703c2d21L,0xa0e99b7f98c868c7L,
|
|
0x4e42f66d8b641676L },
|
|
{ 0x602884dc91077896L,0xa0d690cfc2c9885bL,0xfeb4da333b9a5187L,
|
|
0x5f789598153c87eeL } },
|
|
/* 57 << 245 */
|
|
{ { 0x2192dd4752b16dbaL,0xdeefc0e63524c1b1L,0x465ea76ee4383693L,
|
|
0x79401711361b8d98L },
|
|
{ 0xa5f9ace9f21a15cbL,0x73d26163efee9aebL,0xcca844b3e677016cL,
|
|
0x6c122b0757eaee06L } },
|
|
/* 58 << 245 */
|
|
{ { 0xb782dce715f09690L,0x508b9b122dfc0fc9L,0x9015ab4b65d89fc6L,
|
|
0x5e79dab7d6d5bb0fL },
|
|
{ 0x64f021f06c775aa2L,0xdf09d8cc37c7eca1L,0x9a761367ef2fa506L,
|
|
0xed4ca4765b81eec6L } },
|
|
/* 59 << 245 */
|
|
{ { 0x262ede3610bbb8b5L,0x0737ce830641ada3L,0x4c94288ae9831cccL,
|
|
0x487fc1ce8065e635L },
|
|
{ 0xb13d7ab3b8bb3659L,0xdea5df3e855e4120L,0xb9a1857385eb0244L,
|
|
0x1a1b8ea3a7cfe0a3L } },
|
|
/* 60 << 245 */
|
|
{ { 0x3b83711967b0867cL,0x8d5e0d089d364520L,0x52dccc1ed930f0e3L,
|
|
0xefbbcec7bf20bbafL },
|
|
{ 0x99cffcab0263ad10L,0xd8199e6dfcd18f8aL,0x64e2773fe9f10617L,
|
|
0x0079e8e108704848L } },
|
|
/* 61 << 245 */
|
|
{ { 0x1169989f8a342283L,0x8097799ca83012e6L,0xece966cb8a6a9001L,
|
|
0x93b3afef072ac7fcL },
|
|
{ 0xe6893a2a2db3d5baL,0x263dc46289bf4fdcL,0x8852dfc9e0396673L,
|
|
0x7ac708953af362b6L } },
|
|
/* 62 << 245 */
|
|
{ { 0xbb9cce4d5c2f342bL,0xbf80907ab52d7aaeL,0x97f3d3cd2161bcd0L,
|
|
0xb25b08340962744dL },
|
|
{ 0xc5b18ea56c3a1ddaL,0xfe4ec7eb06c92317L,0xb787b890ad1c4afeL,
|
|
0xdccd9a920ede801aL } },
|
|
/* 63 << 245 */
|
|
{ { 0x9ac6dddadb58da1fL,0x22bbc12fb8cae6eeL,0xc6f8bced815c4a43L,
|
|
0x8105a92cf96480c7L },
|
|
{ 0x0dc3dbf37a859d51L,0xe3ec7ce63041196bL,0xd9f64b250d1067c9L,
|
|
0xf23213213d1f8dd8L } },
|
|
/* 64 << 245 */
|
|
{ { 0x8b5c619c76497ee8L,0x5d2b0ac6c717370eL,0x98204cb64fcf68e1L,
|
|
0x0bdec21162bc6792L },
|
|
{ 0x6973ccefa63b1011L,0xf9e3fa97e0de1ac5L,0x5efb693e3d0e0c8bL,
|
|
0x037248e9d2d4fcb4L } },
|
|
/* 0 << 252 */
|
|
{ { 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 252 */
|
|
{ { 0x80802dc91ec34f9eL,0xd8772d3533810603L,0x3f06d66c530cb4f3L,
|
|
0x7be5ed0dc475c129L },
|
|
{ 0xcb9e3c1931e82b10L,0xc63d2857c9ff6b4cL,0xb92118c692a1b45eL,
|
|
0x0aec44147285bbcaL } },
|
|
/* 2 << 252 */
|
|
{ { 0xfc189ae71e29a3efL,0xcbe906f04c93302eL,0xd0107914ceaae10eL,
|
|
0xb7a23f34b68e19f8L },
|
|
{ 0xe9d875c2efd2119dL,0x03198c6efcadc9c8L,0x65591bf64da17113L,
|
|
0x3cf0bbf83d443038L } },
|
|
/* 3 << 252 */
|
|
{ { 0xae485bb72b724759L,0x945353e1b2d4c63aL,0x82159d07de7d6f2cL,
|
|
0x389caef34ec5b109L },
|
|
{ 0x4a8ebb53db65ef14L,0x2dc2cb7edd99de43L,0x816fa3ed83f2405fL,
|
|
0x73429bb9c14208a3L } },
|
|
/* 4 << 252 */
|
|
{ { 0xb618d590b01e6e27L,0x047e2ccde180b2dcL,0xd1b299b504aea4a9L,
|
|
0x412c9e1e9fa403a4L },
|
|
{ 0x88d28a3679407552L,0x49c50136f332b8e3L,0x3a1b6fcce668de19L,
|
|
0x178851bc75122b97L } },
|
|
/* 5 << 252 */
|
|
{ { 0xb1e13752fb85fa4cL,0xd61257ce383c8ce9L,0xd43da670d2f74daeL,
|
|
0xa35aa23fbf846bbbL },
|
|
{ 0x5e74235d4421fc83L,0xf6df8ee0c363473bL,0x34d7f52a3c4aa158L,
|
|
0x50d05aab9bc6d22eL } },
|
|
/* 6 << 252 */
|
|
{ { 0x8c56e735a64785f4L,0xbc56637b5f29cd07L,0x53b2bb803ee35067L,
|
|
0x50235a0fdc919270L },
|
|
{ 0x191ab6d8f2c4aa65L,0xc34758318396023bL,0x80400ba5f0f805baL,
|
|
0x8881065b5ec0f80fL } },
|
|
/* 7 << 252 */
|
|
{ { 0xc370e522cc1b5e83L,0xde2d4ad1860b8bfbL,0xad364df067b256dfL,
|
|
0x8f12502ee0138997L },
|
|
{ 0x503fa0dc7783920aL,0xe80014adc0bc866aL,0x3f89b744d3064ba6L,
|
|
0x03511dcdcba5dba5L } },
|
|
/* 8 << 252 */
|
|
{ { 0x197dd46d95a7b1a2L,0x9c4e7ad63c6341fbL,0x426eca29484c2eceL,
|
|
0x9211e489de7f4f8aL },
|
|
{ 0x14997f6ec78ef1f4L,0x2b2c091006574586L,0x17286a6e1c3eede8L,
|
|
0x25f92e470f60e018L } },
|
|
/* 9 << 252 */
|
|
{ { 0x805c564631890a36L,0x703ef60057feea5bL,0x389f747caf3c3030L,
|
|
0xe0e5daeb54dd3739L },
|
|
{ 0xfe24a4c3c9c9f155L,0x7e4bf176b5393962L,0x37183de2af20bf29L,
|
|
0x4a1bd7b5f95a8c3bL } },
|
|
/* 10 << 252 */
|
|
{ { 0xa83b969946191d3dL,0x281fc8dd7b87f257L,0xb18e2c1354107588L,
|
|
0x6372def79b2bafe8L },
|
|
{ 0xdaf4bb480d8972caL,0x3f2dd4b756167a3fL,0x1eace32d84310cf4L,
|
|
0xe3bcefafe42700aaL } },
|
|
/* 11 << 252 */
|
|
{ { 0x5fe5691ed785e73dL,0xa5db5ab62ea60467L,0x02e23d41dfc6514aL,
|
|
0x35e8048ee03c3665L },
|
|
{ 0x3f8b118f1adaa0f8L,0x28ec3b4584ce1a5aL,0xe8cacc6e2c6646b8L,
|
|
0x1343d185dbd0e40fL } },
|
|
/* 12 << 252 */
|
|
{ { 0xe5d7f844caaa358cL,0x1a1db7e49924182aL,0xd64cd42d9c875d9aL,
|
|
0xb37b515f042eeec8L },
|
|
{ 0x4d4dd4097b165fbeL,0xfc322ed9e206eff3L,0x7dee410259b7e17eL,
|
|
0x55a481c08236ca00L } },
|
|
/* 13 << 252 */
|
|
{ { 0x8c885312c23fc975L,0x1571580605d6297bL,0xa078868ef78edd39L,
|
|
0x956b31e003c45e52L },
|
|
{ 0x470275d5ff7b33a6L,0xc8d5dc3a0c7e673fL,0x419227b47e2f2598L,
|
|
0x8b37b6344c14a975L } },
|
|
/* 14 << 252 */
|
|
{ { 0xd0667ed68b11888cL,0x5e0e8c3e803e25dcL,0x34e5d0dcb987a24aL,
|
|
0x9f40ac3bae920323L },
|
|
{ 0x5463de9534e0f63aL,0xa128bf926b6328f9L,0x491ccd7cda64f1b7L,
|
|
0x7ef1ec27c47bde35L } },
|
|
/* 15 << 252 */
|
|
{ { 0xa857240fa36a2737L,0x35dc136663621bc1L,0x7a3a6453d4fb6897L,
|
|
0x80f1a439c929319dL },
|
|
{ 0xfc18274bf8cb0ba0L,0xb0b537668078c5ebL,0xfb0d49241e01d0efL,
|
|
0x50d7c67d372ab09cL } },
|
|
/* 16 << 252 */
|
|
{ { 0xb4e370af3aeac968L,0xe4f7fee9c4b63266L,0xb4acd4c2e3ac5664L,
|
|
0xf8910bd2ceb38cbfL },
|
|
{ 0x1c3ae50cc9c0726eL,0x15309569d97b40bfL,0x70884b7ffd5a5a1bL,
|
|
0x3890896aef8314cdL } },
|
|
/* 17 << 252 */
|
|
{ { 0x58e1515ca5618c93L,0xe665432b77d942d1L,0xb32181bfb6f767a8L,
|
|
0x753794e83a604110L },
|
|
{ 0x09afeb7ce8c0dbccL,0x31e02613598673a3L,0x5d98e5577d46db00L,
|
|
0xfc21fb8c9d985b28L } },
|
|
/* 18 << 252 */
|
|
{ { 0xc9040116b0843e0bL,0x53b1b3a869b04531L,0xdd1649f085d7d830L,
|
|
0xbb3bcc87cb7427e8L },
|
|
{ 0x77261100c93dce83L,0x7e79da61a1922a2aL,0x587a2b02f3149ce8L,
|
|
0x147e1384de92ec83L } },
|
|
/* 19 << 252 */
|
|
{ { 0x484c83d3af077f30L,0xea78f8440658b53aL,0x912076c2027aec53L,
|
|
0xf34714e393c8177dL },
|
|
{ 0x37ef5d15c2376c84L,0x8315b6593d1aa783L,0x3a75c484ef852a90L,
|
|
0x0ba0c58a16086bd4L } },
|
|
/* 20 << 252 */
|
|
{ { 0x29688d7a529a6d48L,0x9c7f250dc2f19203L,0x123042fb682e2df9L,
|
|
0x2b7587e7ad8121bcL },
|
|
{ 0x30fc0233e0182a65L,0xb82ecf87e3e1128aL,0x7168286193fb098fL,
|
|
0x043e21ae85e9e6a7L } },
|
|
/* 21 << 252 */
|
|
{ { 0xab5b49d666c834eaL,0x3be43e1847414287L,0xf40fb859219a2a47L,
|
|
0x0e6559e9cc58df3cL },
|
|
{ 0xfe1dfe8e0c6615b4L,0x14abc8fd56459d70L,0x7be0fa8e05de0386L,
|
|
0x8e63ef68e9035c7cL } },
|
|
/* 22 << 252 */
|
|
{ { 0x116401b453b31e91L,0x0cba7ad44436b4d8L,0x9151f9a0107afd66L,
|
|
0xafaca8d01f0ee4c4L },
|
|
{ 0x75fe5c1d9ee9761cL,0x3497a16bf0c0588fL,0x3ee2bebd0304804cL,
|
|
0xa8fb9a60c2c990b9L } },
|
|
/* 23 << 252 */
|
|
{ { 0xd14d32fe39251114L,0x36bf25bccac73366L,0xc9562c66dba7495cL,
|
|
0x324d301b46ad348bL },
|
|
{ 0x9f46620cd670407eL,0x0ea8d4f1e3733a01L,0xd396d532b0c324e0L,
|
|
0x5b211a0e03c317cdL } },
|
|
/* 24 << 252 */
|
|
{ { 0x090d7d205ffe7b37L,0x3b7f3efb1747d2daL,0xa2cb525fb54fc519L,
|
|
0x6e220932f66a971eL },
|
|
{ 0xddc160dfb486d440L,0x7fcfec463fe13465L,0x83da7e4e76e4c151L,
|
|
0xd6fa48a1d8d302b5L } },
|
|
/* 25 << 252 */
|
|
{ { 0xc6304f265872cd88L,0x806c1d3c278b90a1L,0x3553e725caf0bc1cL,
|
|
0xff59e603bb9d8d5cL },
|
|
{ 0xa4550f327a0b85ddL,0xdec5720a93ecc217L,0x0b88b74169d62213L,
|
|
0x7212f2455b365955L } },
|
|
/* 26 << 252 */
|
|
{ { 0x20764111b5cae787L,0x13cb7f581dfd3124L,0x2dca77da1175aefbL,
|
|
0xeb75466bffaae775L },
|
|
{ 0x74d76f3bdb6cff32L,0x7440f37a61fcda9aL,0x1bb3ac92b525028bL,
|
|
0x20fbf8f7a1975f29L } },
|
|
/* 27 << 252 */
|
|
{ { 0x982692e1df83097fL,0x28738f6c554b0800L,0xdc703717a2ce2f2fL,
|
|
0x7913b93c40814194L },
|
|
{ 0x049245931fe89636L,0x7b98443ff78834a6L,0x11c6ab015114a5a1L,
|
|
0x60deb383ffba5f4cL } },
|
|
/* 28 << 252 */
|
|
{ { 0x4caa54c601a982e6L,0x1dd35e113491cd26L,0x973c315f7cbd6b05L,
|
|
0xcab0077552494724L },
|
|
{ 0x04659b1f6565e15aL,0xbf30f5298c8fb026L,0xfc21641ba8a0de37L,
|
|
0xe9c7a366fa5e5114L } },
|
|
/* 29 << 252 */
|
|
{ { 0xdb849ca552f03ad8L,0xc7e8dbe9024e35c0L,0xa1a2bbaccfc3c789L,
|
|
0xbf733e7d9c26f262L },
|
|
{ 0x882ffbf5b8444823L,0xb7224e886bf8483bL,0x53023b8b65bef640L,
|
|
0xaabfec91d4d5f8cdL } },
|
|
/* 30 << 252 */
|
|
{ { 0xa40e1510079ea1bdL,0x1ad9addcd05d5d26L,0xdb3f2eab13e68d4fL,
|
|
0x1cff1ae2640f803fL },
|
|
{ 0xe0e7b749d4cee117L,0x8e9f275b4036d909L,0xce34e31d8f4d4c38L,
|
|
0x22b37f69d75130fcL } },
|
|
/* 31 << 252 */
|
|
{ { 0x83e0f1fdb4014604L,0xa8ce991989415078L,0x82375b7541792efeL,
|
|
0x4f59bf5c97d4515bL },
|
|
{ 0xac4f324f923a277dL,0xd9bc9b7d650f3406L,0xc6fa87d18a39bc51L,
|
|
0x825885305ccc108fL } },
|
|
/* 32 << 252 */
|
|
{ { 0x5ced3c9f82e4c634L,0x8efb83143a4464f8L,0xe706381b7a1dca25L,
|
|
0x6cd15a3c5a2a412bL },
|
|
{ 0x9347a8fdbfcd8fb5L,0x31db2eef6e54cd22L,0xc4aeb11ef8d8932fL,
|
|
0x11e7c1ed344411afL } },
|
|
/* 33 << 252 */
|
|
{ { 0x2653050cdc9a151eL,0x9edbfc083bb0a859L,0x926c81c7fd5691e7L,
|
|
0x9c1b23426f39019aL },
|
|
{ 0x64a81c8b7f8474b9L,0x90657c0701761819L,0x390b333155e0375aL,
|
|
0xc676c626b6ebc47dL } },
|
|
/* 34 << 252 */
|
|
{ { 0x51623247b7d6dee8L,0x0948d92779659313L,0x99700161e9ab35edL,
|
|
0x06cc32b48ddde408L },
|
|
{ 0x6f2fd664061ef338L,0x1606fa02c202e9edL,0x55388bc1929ba99bL,
|
|
0xc4428c5e1e81df69L } },
|
|
/* 35 << 252 */
|
|
{ { 0xce2028aef91b0b2aL,0xce870a23f03dfd3fL,0x66ec2c870affe8edL,
|
|
0xb205fb46284d0c00L },
|
|
{ 0xbf5dffe744cefa48L,0xb6fc37a8a19876d7L,0xbecfa84c08b72863L,
|
|
0xd7205ff52576374fL } },
|
|
/* 36 << 252 */
|
|
{ { 0x80330d328887de41L,0x5de0df0c869ea534L,0x13f427533c56ea17L,
|
|
0xeb1f6069452b1a78L },
|
|
{ 0x50474396e30ea15cL,0x575816a1c1494125L,0xbe1ce55bfe6bb38fL,
|
|
0xb901a94896ae30f7L } },
|
|
/* 37 << 252 */
|
|
{ { 0xe5af0f08d8fc3548L,0x5010b5d0d73bfd08L,0x993d288053fe655aL,
|
|
0x99f2630b1c1309fdL },
|
|
{ 0xd8677bafb4e3b76fL,0x14e51ddcb840784bL,0x326c750cbf0092ceL,
|
|
0xc83d306bf528320fL } },
|
|
/* 38 << 252 */
|
|
{ { 0xc445671577d4715cL,0xd30019f96b703235L,0x207ccb2ed669e986L,
|
|
0x57c824aff6dbfc28L },
|
|
{ 0xf0eb532fd8f92a23L,0x4a557fd49bb98fd2L,0xa57acea7c1e6199aL,
|
|
0x0c6638208b94b1edL } },
|
|
/* 39 << 252 */
|
|
{ { 0x9b42be8ff83a9266L,0xc7741c970101bd45L,0x95770c1107bd9cebL,
|
|
0x1f50250a8b2e0744L },
|
|
{ 0xf762eec81477b654L,0xc65b900e15efe59aL,0x88c961489546a897L,
|
|
0x7e8025b3c30b4d7cL } },
|
|
/* 40 << 252 */
|
|
{ { 0xae4065ef12045cf9L,0x6fcb2caf9ccce8bdL,0x1fa0ba4ef2cf6525L,
|
|
0xf683125dcb72c312L },
|
|
{ 0xa01da4eae312410eL,0x67e286776cd8e830L,0xabd9575298fb3f07L,
|
|
0x05f11e11eef649a5L } },
|
|
/* 41 << 252 */
|
|
{ { 0xba47faef9d3472c2L,0x3adff697c77d1345L,0x4761fa04dd15afeeL,
|
|
0x64f1f61ab9e69462L },
|
|
{ 0xfa691fab9bfb9093L,0x3df8ae8fa1133dfeL,0xcd5f896758cc710dL,
|
|
0xfbb88d5016c7fe79L } },
|
|
/* 42 << 252 */
|
|
{ { 0x8e011b4ce88c50d1L,0x7532e807a8771c4fL,0x64c78a48e2278ee4L,
|
|
0x0b283e833845072aL },
|
|
{ 0x98a6f29149e69274L,0xb96e96681868b21cL,0x38f0adc2b1a8908eL,
|
|
0x90afcff71feb829dL } },
|
|
/* 43 << 252 */
|
|
{ { 0x9915a383210b0856L,0xa5a80602def04889L,0x800e9af97c64d509L,
|
|
0x81382d0bb8996f6fL },
|
|
{ 0x490eba5381927e27L,0x46c63b324af50182L,0x784c5fd9d3ad62ceL,
|
|
0xe4fa1870f8ae8736L } },
|
|
/* 44 << 252 */
|
|
{ { 0x4ec9d0bcd7466b25L,0x84ddbe1adb235c65L,0x5e2645ee163c1688L,
|
|
0x570bd00e00eba747L },
|
|
{ 0xfa51b629128bfa0fL,0x92fce1bd6c1d3b68L,0x3e7361dcb66778b1L,
|
|
0x9c7d249d5561d2bbL } },
|
|
/* 45 << 252 */
|
|
{ { 0xa40b28bf0bbc6229L,0x1c83c05edfd91497L,0x5f9f5154f083df05L,
|
|
0xbac38b3ceee66c9dL },
|
|
{ 0xf71db7e3ec0dfcfdL,0xf2ecda8e8b0a8416L,0x52fddd867812aa66L,
|
|
0x2896ef104e6f4272L } },
|
|
/* 46 << 252 */
|
|
{ { 0xff27186a0fe9a745L,0x08249fcd49ca70dbL,0x7425a2e6441cac49L,
|
|
0xf4a0885aece5ff57L },
|
|
{ 0x6e2cb7317d7ead58L,0xf96cf7d61898d104L,0xafe67c9d4f2c9a89L,
|
|
0x89895a501c7bf5bcL } },
|
|
/* 47 << 252 */
|
|
{ { 0xdc7cb8e5573cecfaL,0x66497eaed15f03e6L,0x6bc0de693f084420L,
|
|
0x323b9b36acd532b0L },
|
|
{ 0xcfed390a0115a3c1L,0x9414c40b2d65ca0eL,0x641406bd2f530c78L,
|
|
0x29369a44833438f2L } },
|
|
/* 48 << 252 */
|
|
{ { 0x996884f5903fa271L,0xe6da0fd2b9da921eL,0xa6f2f2695db01e54L,
|
|
0x1ee3e9bd6876214eL },
|
|
{ 0xa26e181ce27a9497L,0x36d254e48e215e04L,0x42f32a6c252cabcaL,
|
|
0x9948148780b57614L } },
|
|
/* 49 << 252 */
|
|
{ { 0x4c4dfe6940d9cae1L,0x0586958011a10f09L,0xca287b573491b64bL,
|
|
0x77862d5d3fd4a53bL },
|
|
{ 0xbf94856e50349126L,0x2be30bd171c5268fL,0x10393f19cbb650a6L,
|
|
0x639531fe778cf9fdL } },
|
|
/* 50 << 252 */
|
|
{ { 0x02556a11b2935359L,0xda38aa96af8c126eL,0x47dbe6c20960167fL,
|
|
0x37bbabb6501901cdL },
|
|
{ 0xb6e979e02c947778L,0xd69a51757a1a1dc6L,0xc3ed50959d9faf0cL,
|
|
0x4dd9c0961d5fa5f0L } },
|
|
/* 51 << 252 */
|
|
{ { 0xa0c4304d64f16ea8L,0x8b1cac167e718623L,0x0b5765467c67f03eL,
|
|
0x559cf5adcbd88c01L },
|
|
{ 0x074877bb0e2af19aL,0x1f717ec1a1228c92L,0x70bcb800326e8920L,
|
|
0xec6e2c5c4f312804L } },
|
|
/* 52 << 252 */
|
|
{ { 0x426aea7d3fca4752L,0xf12c09492211f62aL,0x24beecd87be7b6b5L,
|
|
0xb77eaf4c36d7a27dL },
|
|
{ 0x154c2781fda78fd3L,0x848a83b0264eeabeL,0x81287ef04ffe2bc4L,
|
|
0x7b6d88c6b6b6fc2aL } },
|
|
/* 53 << 252 */
|
|
{ { 0x805fb947ce417d99L,0x4b93dcc38b916cc4L,0x72e65bb321273323L,
|
|
0xbcc1badd6ea9886eL },
|
|
{ 0x0e2230114bc5ee85L,0xa561be74c18ee1e4L,0x762fd2d4a6bcf1f1L,
|
|
0x50e6a5a495231489L } },
|
|
/* 54 << 252 */
|
|
{ { 0xca96001fa00b500bL,0x5c098cfc5d7dcdf5L,0xa64e2d2e8c446a85L,
|
|
0xbae9bcf1971f3c62L },
|
|
{ 0x4ec226838435a2c5L,0x8ceaed6c4bad4643L,0xe9f8fb47ccccf4e3L,
|
|
0xbd4f3fa41ce3b21eL } },
|
|
/* 55 << 252 */
|
|
{ { 0xd79fb110a3db3292L,0xe28a37dab536c66aL,0x279ce87b8e49e6a9L,
|
|
0x70ccfe8dfdcec8e3L },
|
|
{ 0x2193e4e03ba464b2L,0x0f39d60eaca9a398L,0x7d7932aff82c12abL,
|
|
0xd8ff50ed91e7e0f7L } },
|
|
/* 56 << 252 */
|
|
{ { 0xea961058fa28a7e0L,0xc726cf250bf5ec74L,0xe74d55c8db229666L,
|
|
0x0bd9abbfa57f5799L },
|
|
{ 0x7479ef074dfc47b3L,0xd9c65fc30c52f91dL,0x8e0283fe36a8bde2L,
|
|
0xa32a8b5e7d4b7280L } },
|
|
/* 57 << 252 */
|
|
{ { 0x6a677c6112e83233L,0x0fbb3512dcc9bf28L,0x562e8ea50d780f61L,
|
|
0x0db8b22b1dc4e89cL },
|
|
{ 0x0a6fd1fb89be0144L,0x8c77d246ca57113bL,0x4639075dff09c91cL,
|
|
0x5b47b17f5060824cL } },
|
|
/* 58 << 252 */
|
|
{ { 0x58aea2b016287b52L,0xa1343520d0cd8eb0L,0x6148b4d0c5d58573L,
|
|
0xdd2b6170291c68aeL },
|
|
{ 0xa61b39291da3b3b7L,0x5f946d7908c4ac10L,0x4105d4a57217d583L,
|
|
0x5061da3d25e6de5eL } },
|
|
/* 59 << 252 */
|
|
{ { 0x3113940dec1b4991L,0xf12195e136f485aeL,0xa7507fb2731a2ee0L,
|
|
0x95057a8e6e9e196eL },
|
|
{ 0xa3c2c9112e130136L,0x97dfbb3633c60d15L,0xcaf3c581b300ee2bL,
|
|
0x77f25d90f4bac8b8L } },
|
|
/* 60 << 252 */
|
|
{ { 0xdb1c4f986d840cd6L,0x471d62c0e634288cL,0x8ec2f85ecec8a161L,
|
|
0x41f37cbcfa6f4ae2L },
|
|
{ 0x6793a20f4b709985L,0x7a7bd33befa8985bL,0x2c6a3fbd938e6446L,
|
|
0x190426192a8d47c1L } },
|
|
/* 61 << 252 */
|
|
{ { 0x16848667cc36975fL,0x02acf1689d5f1dfbL,0x62d41ad4613baa94L,
|
|
0xb56fbb929f684670L },
|
|
{ 0xce610d0de9e40569L,0x7b99c65f35489fefL,0x0c88ad1b3df18b97L,
|
|
0x81b7d9be5d0e9edbL } },
|
|
/* 62 << 252 */
|
|
{ { 0xd85218c0c716cc0aL,0xf4b5ff9085691c49L,0xa4fd666bce356ac6L,
|
|
0x17c728954b327a7aL },
|
|
{ 0xf93d5085da6be7deL,0xff71530e3301d34eL,0x4cd96442d8f448e8L,
|
|
0x9283d3312ed18ffaL } },
|
|
/* 63 << 252 */
|
|
{ { 0x4d33dd992a849870L,0xa716964b41576335L,0xff5e3a9b179be0e5L,
|
|
0x5b9d6b1b83b13632L },
|
|
{ 0x3b8bd7d4a52f313bL,0xc9dd95a0637a4660L,0x300359620b3e218fL,
|
|
0xce1481a3c7b28a3cL } },
|
|
/* 64 << 252 */
|
|
{ { 0xab41b43a43228d83L,0x24ae1c304ad63f99L,0x8e525f1a46a51229L,
|
|
0x14af860fcd26d2b4L },
|
|
{ 0xd6baef613f714aa1L,0xf51865adeb78795eL,0xd3e21fcee6a9d694L,
|
|
0x82ceb1dd8a37b527L } },
|
|
};
|
|
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Pre-computed table containing multiples of g times powers of 2.
|
|
* Width between powers is 7 bits.
|
|
* Accumulate into the result.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to scalar multiply.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table of points.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_add_only_4(sp_point_256* r, const sp_point_256* g,
|
|
const sp_table_entry_256* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* rt = NULL;
|
|
sp_digit* tmp = NULL;
|
|
#else
|
|
sp_point_256 rt[2];
|
|
sp_digit tmp[2 * 4 * 5];
|
|
#endif
|
|
sp_point_256* p = NULL;
|
|
sp_digit* negy = NULL;
|
|
int i;
|
|
ecc_recode_256 v[37];
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 5, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
negy = tmp;
|
|
p = rt + 1;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_ecc_recode_7_4(k, v);
|
|
|
|
XMEMCPY(p->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
XMEMCPY(rt->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
|
|
i = 36;
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_65_4(rt, &table[i * 65], v[i].i);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[i * 65 + v[i].i].x, sizeof(table->x));
|
|
XMEMCPY(rt->y, table[i * 65 + v[i].i].y, sizeof(table->y));
|
|
}
|
|
rt->infinity = !v[i].i;
|
|
for (--i; i>=0; i--) {
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_256_get_entry_65_4(p, &table[i * 65], v[i].i);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[i * 65 + v[i].i].x, sizeof(table->x));
|
|
XMEMCPY(p->y, table[i * 65 + v[i].i].y, sizeof(table->y));
|
|
}
|
|
p->infinity = !v[i].i;
|
|
sp_256_sub_4(negy, p256_mod, p->y);
|
|
sp_256_norm_4(negy);
|
|
sp_256_cond_copy_4(p->y, negy, 0 - v[i].neg);
|
|
sp_256_proj_point_add_qz1_4(rt, rt, p, tmp);
|
|
}
|
|
if (map != 0) {
|
|
sp_256_map_4(r, rt, tmp);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_256));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(tmp, sizeof(sp_digit) * 2 * 4 * 5);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(tmp, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_mulmod_base_4(sp_point_256* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_256_ecc_mulmod_add_only_4(r, NULL, p256_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Multiply the base point of P256 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_256(const mp_int* km, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_256 point[1];
|
|
sp_digit k[4];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(k, 4, km);
|
|
|
|
err = sp_256_ecc_mulmod_base_4(point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_point_to_ecc_point_4(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply the base point of P256 by the scalar, add point a and return
|
|
* the result. If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* am Point to add to scalar mulitply result.
|
|
* inMont Point to add is in montgomery form.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_add_256(const mp_int* km, const ecc_point* am,
|
|
int inMont, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_256 point[2];
|
|
sp_digit k[4 + 4 * 2 * 5];
|
|
#endif
|
|
sp_point_256* addP = NULL;
|
|
sp_digit* tmp = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(
|
|
sizeof(sp_digit) * (4 + 4 * 2 * 5),
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
addP = point + 1;
|
|
tmp = k + 4;
|
|
|
|
sp_256_from_mp(k, 4, km);
|
|
sp_256_point_from_ecc_point_4(addP, am);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->x, addP->x, p256_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->y, addP->y, p256_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_256_mod_mul_norm_4(addP->z, addP->z, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_base_4(point, k, 0, 0, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_proj_point_add_4(point, point, addP, tmp);
|
|
|
|
if (map) {
|
|
sp_256_map_4(point, point, tmp);
|
|
}
|
|
|
|
err = sp_256_point_to_ecc_point_4(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#if defined(WOLFSSL_VALIDATE_ECC_KEYGEN) || defined(HAVE_ECC_SIGN) || \
|
|
defined(HAVE_ECC_VERIFY)
|
|
/* Returns 1 if the number of zero.
|
|
* Implementation is constant time.
|
|
*
|
|
* a Number to check.
|
|
* returns 1 if the number is zero and 0 otherwise.
|
|
*/
|
|
static int sp_256_iszero_4(const sp_digit* a)
|
|
{
|
|
return (a[0] | a[1] | a[2] | a[3]) == 0;
|
|
}
|
|
|
|
#endif /* WOLFSSL_VALIDATE_ECC_KEYGEN | HAVE_ECC_SIGN | HAVE_ECC_VERIFY */
|
|
/* Add 1 to a. (a = a + 1)
|
|
*
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_256_add_one_4(sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x1, x2, [%[a], 0]\n\t"
|
|
"adds x1, x1, #1\n\t"
|
|
"ldr x3, [%[a], 16]\n\t"
|
|
"adcs x2, x2, xzr\n\t"
|
|
"ldr x4, [%[a], 24]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"stp x1, x2, [%[a], 0]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"stp x3, x4, [%[a], 16]\n\t"
|
|
:
|
|
: [a] "r" (a)
|
|
: "memory", "x1", "x2", "x3", "x4"
|
|
);
|
|
}
|
|
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_256_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Generates a scalar that is in the range 1..order-1.
|
|
*
|
|
* rng Random number generator.
|
|
* k Scalar value.
|
|
* returns RNG failures, MEMORY_E when memory allocation fails and
|
|
* MP_OKAY on success.
|
|
*/
|
|
static int sp_256_ecc_gen_k_4(WC_RNG* rng, sp_digit* k)
|
|
{
|
|
int err;
|
|
byte buf[32];
|
|
|
|
do {
|
|
err = wc_RNG_GenerateBlock(rng, buf, sizeof(buf));
|
|
if (err == 0) {
|
|
sp_256_from_bin(k, 4, buf, (int)sizeof(buf));
|
|
if (sp_256_cmp_4(k, p256_order2) <= 0) {
|
|
sp_256_add_one_4(k);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
while (err == 0);
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Makes a random EC key pair.
|
|
*
|
|
* rng Random number generator.
|
|
* priv Generated private value.
|
|
* pub Generated public point.
|
|
* heap Heap to use for allocation.
|
|
* returns ECC_INF_E when the point does not have the correct order, RNG
|
|
* failures, MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_make_key_256(WC_RNG* rng, mp_int* priv, ecc_point* pub, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
sp_point_256 point[2];
|
|
#else
|
|
sp_point_256 point[1];
|
|
#endif
|
|
sp_digit k[4];
|
|
#endif
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
sp_point_256* infinity = NULL;
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap, DYNAMIC_TYPE_ECC);
|
|
#else
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256), heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
infinity = point + 1;
|
|
#endif
|
|
|
|
err = sp_256_ecc_gen_k_4(rng, k);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_base_4(point, k, 1, 1, NULL);
|
|
}
|
|
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_4(infinity, point, p256_order, 1, 1, NULL);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
if (sp_256_iszero_4(point->x) || sp_256_iszero_4(point->y)) {
|
|
err = ECC_INF_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(k, priv);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_point_to_ecc_point_4(point, pub);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL) {
|
|
/* point is not sensitive, so no need to zeroize */
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
}
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef HAVE_ECC_DHE
|
|
/* Write r as big endian to byte array.
|
|
* Fixed length number of bytes written: 32
|
|
*
|
|
* r A single precision integer.
|
|
* a Byte array.
|
|
*/
|
|
static void sp_256_to_bin_4(sp_digit* r, byte* a)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
for (i = 3, j = 0; i >= 0; i--) {
|
|
a[j++] = r[i] >> 56;
|
|
a[j++] = r[i] >> 48;
|
|
a[j++] = r[i] >> 40;
|
|
a[j++] = r[i] >> 32;
|
|
a[j++] = r[i] >> 24;
|
|
a[j++] = r[i] >> 16;
|
|
a[j++] = r[i] >> 8;
|
|
a[j++] = r[i] >> 0;
|
|
}
|
|
}
|
|
|
|
/* Multiply the point by the scalar and serialize the X ordinate.
|
|
* The number is 0 padded to maximum size on output.
|
|
*
|
|
* priv Scalar to multiply the point by.
|
|
* pub Point to multiply.
|
|
* out Buffer to hold X ordinate.
|
|
* outLen On entry, size of the buffer in bytes.
|
|
* On exit, length of data in buffer in bytes.
|
|
* heap Heap to use for allocation.
|
|
* returns BUFFER_E if the buffer is to small for output size,
|
|
* MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_secret_gen_256(const mp_int* priv, const ecc_point* pub, byte* out,
|
|
word32* outLen, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_256 point[1];
|
|
sp_digit k[4];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
if (*outLen < 32U) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(k, 4, priv);
|
|
sp_256_point_from_ecc_point_4(point, pub);
|
|
err = sp_256_ecc_mulmod_4(point, point, k, 1, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_to_bin_4(point->x, out);
|
|
*outLen = 32;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_DHE */
|
|
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_256_sub_in_place_4(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_256_mul_d_4(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"umulh x7, %[b], x2\n\t"
|
|
"mul x2, %[b], x2\n\t"
|
|
"# A[1] * B\n\t"
|
|
"mul x8, %[b], x3\n\t"
|
|
"umulh x9, %[b], x3\n\t"
|
|
"adds x3, x7, x8\n\t"
|
|
"# A[2] * B\n\t"
|
|
"mul x8, %[b], x4\n\t"
|
|
"adc x7, xzr, x9\n\t"
|
|
"umulh x9, %[b], x4\n\t"
|
|
"adds x4, x7, x8\n\t"
|
|
"# A[3] * B\n\t"
|
|
"mul x8, %[b], x5\n\t"
|
|
"adc x7, xzr, x9\n\t"
|
|
"umulh x9, %[b], x5\n\t"
|
|
"adds x5, x7, x8\n\t"
|
|
"str x2, [%[r]]\n\t"
|
|
"adc x6, xzr, x9\n\t"
|
|
"stp x3, x4, [%[r], 8]\n\t"
|
|
"stp x5, x6, [%[r], 24]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
}
|
|
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_256_word_4(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_256_mask_4(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<4; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
r[0] = a[0] & m;
|
|
r[1] = a[1] & m;
|
|
r[2] = a[2] & m;
|
|
r[3] = a[3] & m;
|
|
#endif
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_256_div_4(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[8], t2[5];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[3];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 4);
|
|
for (i=3; i>=0; i--) {
|
|
sp_digit hi = t1[4 + i] - (t1[4 + i] == div);
|
|
r1 = div_256_word_4(hi, t1[4 + i - 1], div);
|
|
|
|
sp_256_mul_d_4(t2, d, r1);
|
|
t1[4 + i] += sp_256_sub_in_place_4(&t1[i], t2);
|
|
t1[4 + i] -= t2[4];
|
|
sp_256_mask_4(t2, d, t1[4 + i]);
|
|
t1[4 + i] += sp_256_add_4(&t1[i], &t1[i], t2);
|
|
sp_256_mask_4(t2, d, t1[4 + i]);
|
|
t1[4 + i] += sp_256_add_4(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_256_cmp_4(t1, d) >= 0;
|
|
sp_256_cond_sub_4(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_256_mod_4(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_256_div_4(a, m, NULL, r);
|
|
}
|
|
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Order-2 for the P256 curve. */
|
|
static const uint64_t p256_order_minus_2[4] = {
|
|
0xf3b9cac2fc63254fU,0xbce6faada7179e84U,0xffffffffffffffffU,
|
|
0xffffffff00000000U
|
|
};
|
|
#else
|
|
/* The low half of the order-2 of the P256 curve. */
|
|
static const sp_int_digit p256_order_low[2] = {
|
|
0xf3b9cac2fc63254fU,0xbce6faada7179e84U
|
|
};
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
/* Multiply two number mod the order of P256 curve. (r = a * b mod order)
|
|
*
|
|
* r Result of the multiplication.
|
|
* a First operand of the multiplication.
|
|
* b Second operand of the multiplication.
|
|
*/
|
|
static void sp_256_mont_mul_order_4(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_256_mul_4(r, a, b);
|
|
sp_256_mont_reduce_order_4(r, p256_order, p256_mp_order);
|
|
}
|
|
|
|
/* Square number mod the order of P256 curve. (r = a * a mod order)
|
|
*
|
|
* r Result of the squaring.
|
|
* a Number to square.
|
|
*/
|
|
static void sp_256_mont_sqr_order_4(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_256_sqr_4(r, a);
|
|
sp_256_mont_reduce_order_4(r, p256_order, p256_mp_order);
|
|
}
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Square number mod the order of P256 curve a number of times.
|
|
* (r = a ^ n mod order)
|
|
*
|
|
* r Result of the squaring.
|
|
* a Number to square.
|
|
*/
|
|
static void sp_256_mont_sqr_n_order_4(sp_digit* r, const sp_digit* a, int n)
|
|
{
|
|
int i;
|
|
|
|
sp_256_mont_sqr_order_4(r, a);
|
|
for (i=1; i<n; i++) {
|
|
sp_256_mont_sqr_order_4(r, r);
|
|
}
|
|
}
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
|
|
/* Invert the number, in Montgomery form, modulo the order of the P256 curve.
|
|
* (r = 1 / a mod order)
|
|
*
|
|
* r Inverse result.
|
|
* a Number to invert.
|
|
* td Temporary data.
|
|
*/
|
|
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_256_mont_inv_order_4_ctx {
|
|
int state;
|
|
int i;
|
|
} sp_256_mont_inv_order_4_ctx;
|
|
static int sp_256_mont_inv_order_4_nb(sp_ecc_ctx_t* sp_ctx, sp_digit* r, const sp_digit* a,
|
|
sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_256_mont_inv_order_4_ctx* ctx = (sp_256_mont_inv_order_4_ctx*)sp_ctx;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_256_mont_inv_order_4_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0:
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 4);
|
|
ctx->i = 254;
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
sp_256_mont_sqr_order_4(t, t);
|
|
ctx->state = 2;
|
|
break;
|
|
case 2:
|
|
if ((p256_order_minus_2[ctx->i / 64] & ((sp_int_digit)1 << (ctx->i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t, t, a);
|
|
}
|
|
ctx->i--;
|
|
ctx->state = (ctx->i == 0) ? 3 : 1;
|
|
break;
|
|
case 3:
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 4U);
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_256_mont_inv_order_4(sp_digit* r, const sp_digit* a,
|
|
sp_digit* td)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit* t = td;
|
|
int i;
|
|
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 4);
|
|
for (i=254; i>=0; i--) {
|
|
sp_256_mont_sqr_order_4(t, t);
|
|
if ((p256_order_minus_2[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t, t, a);
|
|
}
|
|
}
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 4U);
|
|
#else
|
|
sp_digit* t = td;
|
|
sp_digit* t2 = td + 2 * 4;
|
|
sp_digit* t3 = td + 4 * 4;
|
|
int i;
|
|
|
|
/* t = a^2 */
|
|
sp_256_mont_sqr_order_4(t, a);
|
|
/* t = a^3 = t * a */
|
|
sp_256_mont_mul_order_4(t, t, a);
|
|
/* t2= a^c = t ^ 2 ^ 2 */
|
|
sp_256_mont_sqr_n_order_4(t2, t, 2);
|
|
/* t3= a^f = t2 * t */
|
|
sp_256_mont_mul_order_4(t3, t2, t);
|
|
/* t2= a^f0 = t3 ^ 2 ^ 4 */
|
|
sp_256_mont_sqr_n_order_4(t2, t3, 4);
|
|
/* t = a^ff = t2 * t3 */
|
|
sp_256_mont_mul_order_4(t, t2, t3);
|
|
/* t3= a^ff00 = t ^ 2 ^ 8 */
|
|
sp_256_mont_sqr_n_order_4(t2, t, 8);
|
|
/* t = a^ffff = t2 * t */
|
|
sp_256_mont_mul_order_4(t, t2, t);
|
|
/* t2= a^ffff0000 = t ^ 2 ^ 16 */
|
|
sp_256_mont_sqr_n_order_4(t2, t, 16);
|
|
/* t = a^ffffffff = t2 * t */
|
|
sp_256_mont_mul_order_4(t, t2, t);
|
|
/* t2= a^ffffffff0000000000000000 = t ^ 2 ^ 64 */
|
|
sp_256_mont_sqr_n_order_4(t2, t, 64);
|
|
/* t2= a^ffffffff00000000ffffffff = t2 * t */
|
|
sp_256_mont_mul_order_4(t2, t2, t);
|
|
/* t2= a^ffffffff00000000ffffffff00000000 = t2 ^ 2 ^ 32 */
|
|
sp_256_mont_sqr_n_order_4(t2, t2, 32);
|
|
/* t2= a^ffffffff00000000ffffffffffffffff = t2 * t */
|
|
sp_256_mont_mul_order_4(t2, t2, t);
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6 */
|
|
for (i=127; i>=112; i--) {
|
|
sp_256_mont_sqr_order_4(t2, t2);
|
|
if ((p256_order_low[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t2, t2, a);
|
|
}
|
|
}
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6f */
|
|
sp_256_mont_sqr_n_order_4(t2, t2, 4);
|
|
sp_256_mont_mul_order_4(t2, t2, t3);
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84 */
|
|
for (i=107; i>=64; i--) {
|
|
sp_256_mont_sqr_order_4(t2, t2);
|
|
if ((p256_order_low[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t2, t2, a);
|
|
}
|
|
}
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84f */
|
|
sp_256_mont_sqr_n_order_4(t2, t2, 4);
|
|
sp_256_mont_mul_order_4(t2, t2, t3);
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2 */
|
|
for (i=59; i>=32; i--) {
|
|
sp_256_mont_sqr_order_4(t2, t2);
|
|
if ((p256_order_low[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t2, t2, a);
|
|
}
|
|
}
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2f */
|
|
sp_256_mont_sqr_n_order_4(t2, t2, 4);
|
|
sp_256_mont_mul_order_4(t2, t2, t3);
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254 */
|
|
for (i=27; i>=0; i--) {
|
|
sp_256_mont_sqr_order_4(t2, t2);
|
|
if ((p256_order_low[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_256_mont_mul_order_4(t2, t2, a);
|
|
}
|
|
}
|
|
/* t2= a^ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632540 */
|
|
sp_256_mont_sqr_n_order_4(t2, t2, 4);
|
|
/* r = a^ffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc63254f */
|
|
sp_256_mont_mul_order_4(r, t2, t3);
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
#endif /* HAVE_ECC_SIGN | HAVE_ECC_VERIFY */
|
|
#ifdef HAVE_ECC_SIGN
|
|
#ifndef SP_ECC_MAX_SIG_GEN
|
|
#define SP_ECC_MAX_SIG_GEN 64
|
|
#endif
|
|
|
|
/* Calculate second signature value S from R, k and private value.
|
|
*
|
|
* s = (r * x + e) / k
|
|
*
|
|
* s Signature value.
|
|
* r First signature value.
|
|
* k Ephemeral private key.
|
|
* x Private key as a number.
|
|
* e Hash of message as a number.
|
|
* tmp Temporary storage for intermediate numbers.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_calc_s_4(sp_digit* s, const sp_digit* r, sp_digit* k,
|
|
sp_digit* x, const sp_digit* e, sp_digit* tmp)
|
|
{
|
|
int err;
|
|
sp_digit carry;
|
|
sp_int64 c;
|
|
sp_digit* kInv = k;
|
|
|
|
/* Conv k to Montgomery form (mod order) */
|
|
sp_256_mul_4(k, k, p256_norm_order);
|
|
err = sp_256_mod_4(k, k, p256_order);
|
|
if (err == MP_OKAY) {
|
|
sp_256_norm_4(k);
|
|
|
|
/* kInv = 1/k mod order */
|
|
sp_256_mont_inv_order_4(kInv, k, tmp);
|
|
sp_256_norm_4(kInv);
|
|
|
|
/* s = r * x + e */
|
|
sp_256_mul_4(x, x, r);
|
|
err = sp_256_mod_4(x, x, p256_order);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_norm_4(x);
|
|
carry = sp_256_add_4(s, e, x);
|
|
sp_256_cond_sub_4(s, s, p256_order, 0 - carry);
|
|
sp_256_norm_4(s);
|
|
c = sp_256_cmp_4(s, p256_order);
|
|
sp_256_cond_sub_4(s, s, p256_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_256_norm_4(s);
|
|
|
|
/* s = s * k^-1 mod order */
|
|
sp_256_mont_mul_order_4(s, s, kInv);
|
|
sp_256_norm_4(s);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Sign the hash using the private key.
|
|
* e = [hash, 256 bits] from binary
|
|
* r = (k.G)->x mod order
|
|
* s = (r * x + e) / k mod order
|
|
* The hash is truncated to the first 256 bits.
|
|
*
|
|
* hash Hash to sign.
|
|
* hashLen Length of the hash data.
|
|
* rng Random number generator.
|
|
* priv Private part of key - scalar.
|
|
* rm First part of result as an mp_int.
|
|
* sm Sirst part of result as an mp_int.
|
|
* heap Heap to use for allocation.
|
|
* returns RNG failures, MEMORY_E when memory allocation fails and
|
|
* MP_OKAY on success.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_ecc_sign_256_ctx {
|
|
int state;
|
|
union {
|
|
sp_256_ecc_mulmod_4_ctx mulmod_ctx;
|
|
sp_256_mont_inv_order_4_ctx mont_inv_order_ctx;
|
|
};
|
|
sp_digit e[2*4];
|
|
sp_digit x[2*4];
|
|
sp_digit k[2*4];
|
|
sp_digit r[2*4];
|
|
sp_digit tmp[3 * 2*4];
|
|
sp_point_256 point;
|
|
sp_digit* s;
|
|
sp_digit* kInv;
|
|
int i;
|
|
} sp_ecc_sign_256_ctx;
|
|
|
|
int sp_ecc_sign_256_nb(sp_ecc_ctx_t* sp_ctx, const byte* hash, word32 hashLen, WC_RNG* rng,
|
|
mp_int* priv, mp_int* rm, mp_int* sm, mp_int* km, void* heap)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_ecc_sign_256_ctx* ctx = (sp_ecc_sign_256_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_ecc_sign_256_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
(void)heap;
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
ctx->s = ctx->e;
|
|
ctx->kInv = ctx->k;
|
|
if (hashLen > 32U) {
|
|
hashLen = 32U;
|
|
}
|
|
|
|
ctx->i = SP_ECC_MAX_SIG_GEN;
|
|
ctx->state = 1;
|
|
break;
|
|
case 1: /* GEN */
|
|
/* New random point. */
|
|
if (km == NULL || mp_iszero(km)) {
|
|
err = sp_256_ecc_gen_k_4(rng, ctx->k);
|
|
}
|
|
else {
|
|
sp_256_from_mp(ctx->k, 4, km);
|
|
mp_zero(km);
|
|
}
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 2;
|
|
break;
|
|
case 2: /* MULMOD */
|
|
err = sp_256_ecc_mulmod_4_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx,
|
|
&ctx->point, &p256_base, ctx->k, 1, 1, heap);
|
|
if (err == MP_OKAY) {
|
|
ctx->state = 3;
|
|
}
|
|
break;
|
|
case 3: /* MODORDER */
|
|
{
|
|
sp_int64 c;
|
|
/* r = point->x mod order */
|
|
XMEMCPY(ctx->r, ctx->point.x, sizeof(sp_digit) * 4U);
|
|
sp_256_norm_4(ctx->r);
|
|
c = sp_256_cmp_4(ctx->r, p256_order);
|
|
sp_256_cond_sub_4(ctx->r, ctx->r, p256_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_256_norm_4(ctx->r);
|
|
|
|
sp_256_from_mp(ctx->x, 4, priv);
|
|
sp_256_from_bin(ctx->e, 4, hash, (int)hashLen);
|
|
ctx->state = 4;
|
|
break;
|
|
}
|
|
case 4: /* KMODORDER */
|
|
/* Conv k to Montgomery form (mod order) */
|
|
sp_256_mul_4(ctx->k, ctx->k, p256_norm_order);
|
|
err = sp_256_mod_4(ctx->k, ctx->k, p256_order);
|
|
if (err == MP_OKAY) {
|
|
sp_256_norm_4(ctx->k);
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 5;
|
|
}
|
|
break;
|
|
case 5: /* KINV */
|
|
/* kInv = 1/k mod order */
|
|
err = sp_256_mont_inv_order_4_nb((sp_ecc_ctx_t*)&ctx->mont_inv_order_ctx, ctx->kInv, ctx->k, ctx->tmp);
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 6;
|
|
}
|
|
break;
|
|
case 6: /* KINVNORM */
|
|
sp_256_norm_4(ctx->kInv);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7: /* R */
|
|
/* s = r * x + e */
|
|
sp_256_mul_4(ctx->x, ctx->x, ctx->r);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8: /* S1 */
|
|
err = sp_256_mod_4(ctx->x, ctx->x, p256_order);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 9;
|
|
break;
|
|
case 9: /* S2 */
|
|
{
|
|
sp_digit carry;
|
|
sp_int64 c;
|
|
sp_256_norm_4(ctx->x);
|
|
carry = sp_256_add_4(ctx->s, ctx->e, ctx->x);
|
|
sp_256_cond_sub_4(ctx->s, ctx->s,
|
|
p256_order, 0 - carry);
|
|
sp_256_norm_4(ctx->s);
|
|
c = sp_256_cmp_4(ctx->s, p256_order);
|
|
sp_256_cond_sub_4(ctx->s, ctx->s, p256_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_256_norm_4(ctx->s);
|
|
|
|
/* s = s * k^-1 mod order */
|
|
sp_256_mont_mul_order_4(ctx->s, ctx->s, ctx->kInv);
|
|
sp_256_norm_4(ctx->s);
|
|
|
|
/* Check that signature is usable. */
|
|
if (sp_256_iszero_4(ctx->s) == 0) {
|
|
ctx->state = 10;
|
|
break;
|
|
}
|
|
#ifdef WOLFSSL_ECDSA_SET_K_ONE_LOOP
|
|
ctx->i = 1;
|
|
#endif
|
|
|
|
/* not usable gen, try again */
|
|
ctx->i--;
|
|
if (ctx->i == 0) {
|
|
err = RNG_FAILURE_E;
|
|
}
|
|
ctx->state = 1;
|
|
break;
|
|
}
|
|
case 10: /* RES */
|
|
err = sp_256_to_mp(ctx->r, rm);
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(ctx->s, sm);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 10) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
if (err != FP_WOULDBLOCK) {
|
|
XMEMSET(ctx->e, 0, sizeof(sp_digit) * 2U * 4U);
|
|
XMEMSET(ctx->x, 0, sizeof(sp_digit) * 2U * 4U);
|
|
XMEMSET(ctx->k, 0, sizeof(sp_digit) * 2U * 4U);
|
|
XMEMSET(ctx->r, 0, sizeof(sp_digit) * 2U * 4U);
|
|
XMEMSET(ctx->tmp, 0, sizeof(sp_digit) * 3U * 2U * 4U);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
int sp_ecc_sign_256(const byte* hash, word32 hashLen, WC_RNG* rng,
|
|
const mp_int* priv, mp_int* rm, mp_int* sm, mp_int* km, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* e = NULL;
|
|
sp_point_256* point = NULL;
|
|
#else
|
|
sp_digit e[7 * 2 * 4];
|
|
sp_point_256 point[1];
|
|
#endif
|
|
sp_digit* x = NULL;
|
|
sp_digit* k = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_digit* s = NULL;
|
|
sp_int64 c;
|
|
int err = MP_OKAY;
|
|
int i;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
point = (sp_point_256*)XMALLOC(sizeof(sp_point_256), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
e = (sp_digit*)XMALLOC(sizeof(sp_digit) * 7 * 2 * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (e == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
x = e + 2 * 4;
|
|
k = e + 4 * 4;
|
|
r = e + 6 * 4;
|
|
tmp = e + 8 * 4;
|
|
s = e;
|
|
|
|
if (hashLen > 32U) {
|
|
hashLen = 32U;
|
|
}
|
|
}
|
|
|
|
for (i = SP_ECC_MAX_SIG_GEN; err == MP_OKAY && i > 0; i--) {
|
|
/* New random point. */
|
|
if (km == NULL || mp_iszero(km)) {
|
|
err = sp_256_ecc_gen_k_4(rng, k);
|
|
}
|
|
else {
|
|
sp_256_from_mp(k, 4, km);
|
|
mp_zero(km);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_base_4(point, k, 1, 1, heap);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* r = point->x mod order */
|
|
XMEMCPY(r, point->x, sizeof(sp_digit) * 4U);
|
|
sp_256_norm_4(r);
|
|
c = sp_256_cmp_4(r, p256_order);
|
|
sp_256_cond_sub_4(r, r, p256_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_256_norm_4(r);
|
|
|
|
sp_256_from_mp(x, 4, priv);
|
|
sp_256_from_bin(e, 4, hash, (int)hashLen);
|
|
|
|
err = sp_256_calc_s_4(s, r, k, x, e, tmp);
|
|
}
|
|
|
|
/* Check that signature is usable. */
|
|
if ((err == MP_OKAY) && (sp_256_iszero_4(s) == 0)) {
|
|
break;
|
|
}
|
|
#ifdef WOLFSSL_ECDSA_SET_K_ONE_LOOP
|
|
i = 1;
|
|
#endif
|
|
}
|
|
|
|
if (i == 0) {
|
|
err = RNG_FAILURE_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(r, rm);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(s, sm);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (e != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(e, sizeof(sp_digit) * 7 * 2 * 4);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(e, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (point != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(point, sizeof(sp_point_256));
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_SIGN */
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Non-constant time modular inversion.
|
|
*
|
|
* @param [out] r Resulting number.
|
|
* @param [in] a Number to invert.
|
|
* @param [in] m Modulus.
|
|
* @return MP_OKAY on success.
|
|
*/
|
|
static int sp_256_mod_inv_4(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldr x20, [%[m], 0]\n\t"
|
|
"ldr x21, [%[m], 8]\n\t"
|
|
"ldr x22, [%[m], 16]\n\t"
|
|
"ldr %[m], [%[m], 24]\n\t"
|
|
"ldr x7, [%[a], 0]\n\t"
|
|
"ldr x8, [%[a], 8]\n\t"
|
|
"ldr x9, [%[a], 16]\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"mov x3, x20\n\t"
|
|
"mov x4, x21\n\t"
|
|
"mov x5, x22\n\t"
|
|
"mov x6, %[m]\n\t"
|
|
"mov x11, xzr\n\t"
|
|
"mov x12, xzr\n\t"
|
|
"mov x13, xzr\n\t"
|
|
"mov x14, xzr\n\t"
|
|
"mov x15, 1\n\t"
|
|
"mov x16, xzr\n\t"
|
|
"mov x17, xzr\n\t"
|
|
"mov x19, xzr\n\t"
|
|
"cmp x6, 0\n\t"
|
|
"b.eq 10f\n\t"
|
|
"mov x25, 256\n\t"
|
|
"clz x23, x6\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 13f\n\t"
|
|
"\n10:\n\t"
|
|
"cmp x5, 0\n\t"
|
|
"b.eq 11f\n\t"
|
|
"mov x25, 192\n\t"
|
|
"clz x23, x5\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 13f\n\t"
|
|
"\n11:\n\t"
|
|
"cmp x4, 0\n\t"
|
|
"b.eq 12f\n\t"
|
|
"mov x25, 128\n\t"
|
|
"clz x23, x4\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 13f\n\t"
|
|
"\n12:\n\t"
|
|
"mov x25, 64\n\t"
|
|
"clz x23, x3\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"\n13:\n\t"
|
|
"cmp x10, 0\n\t"
|
|
"b.eq 20f\n\t"
|
|
"mov x25, 256\n\t"
|
|
"clz x24, x10\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 23f\n\t"
|
|
"\n20:\n\t"
|
|
"cmp x9, 0\n\t"
|
|
"b.eq 21f\n\t"
|
|
"mov x25, 192\n\t"
|
|
"clz x24, x9\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 23f\n\t"
|
|
"\n21:\n\t"
|
|
"cmp x8, 0\n\t"
|
|
"b.eq 22f\n\t"
|
|
"mov x25, 128\n\t"
|
|
"clz x24, x8\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 23f\n\t"
|
|
"\n22:\n\t"
|
|
"mov x25, 64\n\t"
|
|
"clz x24, x7\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"\n23:\n\t"
|
|
"tst x7, 1\n\t"
|
|
"b.ne 90f\n\t"
|
|
"\n1:\n\t"
|
|
"lsr x7, x7, 1\n\t"
|
|
"lsr x26, x8, 1\n\t"
|
|
"lsr x27, x9, 1\n\t"
|
|
"orr x7, x7, x8, lsl 63\n\t"
|
|
"orr x8, x26, x9, lsl 63\n\t"
|
|
"orr x9, x27, x10, lsl 63\n\t"
|
|
"lsr x10, x10, 1\n\t"
|
|
"sub x24, x24, 1\n\t"
|
|
"ands x25, x15, 1\n\t"
|
|
"b.eq 2f\n\t"
|
|
"adds x15, x15, x20\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adcs x19, x19, %[m]\n\t"
|
|
"cset x25, cs\n\t"
|
|
"\n2:\n\t"
|
|
"lsr x15, x15, 1\n\t"
|
|
"lsr x26, x16, 1\n\t"
|
|
"lsr x27, x17, 1\n\t"
|
|
"lsr x28, x19, 1\n\t"
|
|
"orr x15, x15, x16, lsl 63\n\t"
|
|
"orr x16, x26, x17, lsl 63\n\t"
|
|
"orr x17, x27, x19, lsl 63\n\t"
|
|
"orr x19, x28, x25, lsl 63\n\t"
|
|
"tst x7, 1\n\t"
|
|
"b.eq 1b\n\t"
|
|
"\n90:\n\t"
|
|
"cmp x23, 1\n\t"
|
|
"b.eq 100f\n\t"
|
|
"cmp x24, 1\n\t"
|
|
"b.eq 101f\n\t"
|
|
"cmp x23, x24\n\t"
|
|
"b.hi 91f\n\t"
|
|
"b.cc 92f\n\t"
|
|
"cmp x6, x10\n\t"
|
|
"b.hi 91f\n\t"
|
|
"b.cc 92f\n\t"
|
|
"cmp x5, x9\n\t"
|
|
"b.hi 91f\n\t"
|
|
"b.cc 92f\n\t"
|
|
"cmp x4, x8\n\t"
|
|
"b.hi 91f\n\t"
|
|
"b.cc 92f\n\t"
|
|
"cmp x3, x7\n\t"
|
|
"b.cc 92f\n\t"
|
|
"\n91:\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"sbc x6, x6, x10\n\t"
|
|
"subs x11, x11, x15\n\t"
|
|
"sbcs x12, x12, x16\n\t"
|
|
"sbcs x13, x13, x17\n\t"
|
|
"sbcs x14, x14, x19\n\t"
|
|
"b.cs 30f\n\t"
|
|
"adds x11, x11, x20\n\t"
|
|
"adcs x12, x12, x21\n\t"
|
|
"adcs x13, x13, x22\n\t"
|
|
"adc x14, x14, %[m]\n\t"
|
|
"\n30:\n\t"
|
|
"cmp x6, 0\n\t"
|
|
"b.eq 40f\n\t"
|
|
"mov x25, 256\n\t"
|
|
"clz x23, x6\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 43f\n\t"
|
|
"\n40:\n\t"
|
|
"cmp x5, 0\n\t"
|
|
"b.eq 41f\n\t"
|
|
"mov x25, 192\n\t"
|
|
"clz x23, x5\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 43f\n\t"
|
|
"\n41:\n\t"
|
|
"cmp x4, 0\n\t"
|
|
"b.eq 42f\n\t"
|
|
"mov x25, 128\n\t"
|
|
"clz x23, x4\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"b 43f\n\t"
|
|
"\n42:\n\t"
|
|
"mov x25, 64\n\t"
|
|
"clz x23, x3\n\t"
|
|
"sub x23, x25, x23\n\t"
|
|
"\n43:\n\t"
|
|
"\n50:\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"lsr x26, x4, 1\n\t"
|
|
"lsr x27, x5, 1\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"orr x4, x26, x5, lsl 63\n\t"
|
|
"orr x5, x27, x6, lsl 63\n\t"
|
|
"lsr x6, x6, 1\n\t"
|
|
"sub x23, x23, 1\n\t"
|
|
"ands x25, x11, 1\n\t"
|
|
"b.eq 51f\n\t"
|
|
"adds x11, x11, x20\n\t"
|
|
"adcs x12, x12, x21\n\t"
|
|
"adcs x13, x13, x22\n\t"
|
|
"adcs x14, x14, %[m]\n\t"
|
|
"cset x25, cs\n\t"
|
|
"\n51:\n\t"
|
|
"lsr x11, x11, 1\n\t"
|
|
"lsr x26, x12, 1\n\t"
|
|
"lsr x27, x13, 1\n\t"
|
|
"lsr x28, x14, 1\n\t"
|
|
"orr x11, x11, x12, lsl 63\n\t"
|
|
"orr x12, x26, x13, lsl 63\n\t"
|
|
"orr x13, x27, x14, lsl 63\n\t"
|
|
"orr x14, x28, x25, lsl 63\n\t"
|
|
"tst x3, 1\n\t"
|
|
"b.eq 50b\n\t"
|
|
"b 90b\n\t"
|
|
"\n92:\n\t"
|
|
"subs x7, x7, x3\n\t"
|
|
"sbcs x8, x8, x4\n\t"
|
|
"sbcs x9, x9, x5\n\t"
|
|
"sbc x10, x10, x6\n\t"
|
|
"subs x15, x15, x11\n\t"
|
|
"sbcs x16, x16, x12\n\t"
|
|
"sbcs x17, x17, x13\n\t"
|
|
"sbcs x19, x19, x14\n\t"
|
|
"b.cs 60f\n\t"
|
|
"adds x15, x15, x20\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adc x19, x19, %[m]\n\t"
|
|
"\n60:\n\t"
|
|
"cmp x10, 0\n\t"
|
|
"b.eq 70f\n\t"
|
|
"mov x25, 256\n\t"
|
|
"clz x24, x10\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 73f\n\t"
|
|
"\n70:\n\t"
|
|
"cmp x9, 0\n\t"
|
|
"b.eq 71f\n\t"
|
|
"mov x25, 192\n\t"
|
|
"clz x24, x9\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 73f\n\t"
|
|
"\n71:\n\t"
|
|
"cmp x8, 0\n\t"
|
|
"b.eq 72f\n\t"
|
|
"mov x25, 128\n\t"
|
|
"clz x24, x8\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"b 73f\n\t"
|
|
"\n72:\n\t"
|
|
"mov x25, 64\n\t"
|
|
"clz x24, x7\n\t"
|
|
"sub x24, x25, x24\n\t"
|
|
"\n73:\n\t"
|
|
"\n80:\n\t"
|
|
"lsr x7, x7, 1\n\t"
|
|
"lsr x26, x8, 1\n\t"
|
|
"lsr x27, x9, 1\n\t"
|
|
"orr x7, x7, x8, lsl 63\n\t"
|
|
"orr x8, x26, x9, lsl 63\n\t"
|
|
"orr x9, x27, x10, lsl 63\n\t"
|
|
"lsr x10, x10, 1\n\t"
|
|
"sub x24, x24, 1\n\t"
|
|
"ands x25, x15, 1\n\t"
|
|
"b.eq 81f\n\t"
|
|
"adds x15, x15, x20\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adcs x19, x19, %[m]\n\t"
|
|
"cset x25, cs\n\t"
|
|
"\n81:\n\t"
|
|
"lsr x15, x15, 1\n\t"
|
|
"lsr x26, x16, 1\n\t"
|
|
"lsr x27, x17, 1\n\t"
|
|
"lsr x28, x19, 1\n\t"
|
|
"orr x15, x15, x16, lsl 63\n\t"
|
|
"orr x16, x26, x17, lsl 63\n\t"
|
|
"orr x17, x27, x19, lsl 63\n\t"
|
|
"orr x19, x28, x25, lsl 63\n\t"
|
|
"tst x7, 1\n\t"
|
|
"b.eq 80b\n\t"
|
|
"b 90b\n\t"
|
|
"\n100:\n\t"
|
|
"str x11, [%[r], 0]\n\t"
|
|
"str x12, [%[r], 8]\n\t"
|
|
"str x13, [%[r], 16]\n\t"
|
|
"str x14, [%[r], 24]\n\t"
|
|
"b 102f\n\t"
|
|
"\n101:\n\t"
|
|
"str x15, [%[r], 0]\n\t"
|
|
"str x16, [%[r], 8]\n\t"
|
|
"str x17, [%[r], 16]\n\t"
|
|
"str x19, [%[r], 24]\n\t"
|
|
"\n102:\n\t"
|
|
: [m] "+r" (m)
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
/* Add point p1 into point p2. Handles p1 == p2 and result at infinity.
|
|
*
|
|
* p1 First point to add and holds result.
|
|
* p2 Second point to add.
|
|
* tmp Temporary storage for intermediate numbers.
|
|
*/
|
|
static void sp_256_add_points_4(sp_point_256* p1, const sp_point_256* p2,
|
|
sp_digit* tmp)
|
|
{
|
|
|
|
sp_256_proj_point_add_4(p1, p1, p2, tmp);
|
|
if (sp_256_iszero_4(p1->z)) {
|
|
if (sp_256_iszero_4(p1->x) && sp_256_iszero_4(p1->y)) {
|
|
sp_256_proj_point_dbl_4(p1, p2, tmp);
|
|
}
|
|
else {
|
|
/* Y ordinate is not used from here - don't set. */
|
|
p1->x[0] = 0;
|
|
p1->x[1] = 0;
|
|
p1->x[2] = 0;
|
|
p1->x[3] = 0;
|
|
XMEMCPY(p1->z, p256_norm_mod, sizeof(p256_norm_mod));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Calculate the verification point: [e/s]G + [r/s]Q
|
|
*
|
|
* p1 Calculated point.
|
|
* p2 Public point and temporary.
|
|
* s Second part of signature as a number.
|
|
* u1 Temporary number.
|
|
* u2 Temproray number.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_256_calc_vfy_point_4(sp_point_256* p1, sp_point_256* p2,
|
|
sp_digit* s, sp_digit* u1, sp_digit* u2, sp_digit* tmp, void* heap)
|
|
{
|
|
int err;
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
err = sp_256_mod_inv_4(s, s, p256_order);
|
|
if (err == MP_OKAY)
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
{
|
|
sp_256_mul_4(s, s, p256_norm_order);
|
|
err = sp_256_mod_4(s, s, p256_order);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_norm_4(s);
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
{
|
|
sp_256_mont_inv_order_4(s, s, tmp);
|
|
sp_256_mont_mul_order_4(u1, u1, s);
|
|
sp_256_mont_mul_order_4(u2, u2, s);
|
|
}
|
|
#else
|
|
{
|
|
sp_256_mont_mul_order_4(u1, u1, s);
|
|
sp_256_mont_mul_order_4(u2, u2, s);
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
{
|
|
err = sp_256_ecc_mulmod_base_4(p1, u1, 0, 0, heap);
|
|
}
|
|
}
|
|
if ((err == MP_OKAY) && sp_256_iszero_4(p1->z)) {
|
|
p1->infinity = 1;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_ecc_mulmod_4(p2, p2, u2, 0, 0, heap);
|
|
}
|
|
if ((err == MP_OKAY) && sp_256_iszero_4(p2->z)) {
|
|
p2->infinity = 1;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_add_points_4(p1, p2, tmp);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef HAVE_ECC_VERIFY
|
|
/* Verify the signature values with the hash and public key.
|
|
* e = Truncate(hash, 256)
|
|
* u1 = e/s mod order
|
|
* u2 = r/s mod order
|
|
* r == (u1.G + u2.Q)->x mod order
|
|
* Optimization: Leave point in projective form.
|
|
* (x, y, 1) == (x' / z'*z', y' / z'*z'*z', z' / z')
|
|
* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x'
|
|
* The hash is truncated to the first 256 bits.
|
|
*
|
|
* hash Hash to sign.
|
|
* hashLen Length of the hash data.
|
|
* rng Random number generator.
|
|
* priv Private part of key - scalar.
|
|
* rm First part of result as an mp_int.
|
|
* sm Sirst part of result as an mp_int.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_ecc_verify_256_ctx {
|
|
int state;
|
|
union {
|
|
sp_256_ecc_mulmod_4_ctx mulmod_ctx;
|
|
sp_256_mont_inv_order_4_ctx mont_inv_order_ctx;
|
|
sp_256_proj_point_dbl_4_ctx dbl_ctx;
|
|
sp_256_proj_point_add_4_ctx add_ctx;
|
|
};
|
|
sp_digit u1[2*4];
|
|
sp_digit u2[2*4];
|
|
sp_digit s[2*4];
|
|
sp_digit tmp[2*4 * 5];
|
|
sp_point_256 p1;
|
|
sp_point_256 p2;
|
|
} sp_ecc_verify_256_ctx;
|
|
|
|
int sp_ecc_verify_256_nb(sp_ecc_ctx_t* sp_ctx, const byte* hash,
|
|
word32 hashLen, const mp_int* pX, const mp_int* pY, const mp_int* pZ,
|
|
const mp_int* rm, const mp_int* sm, int* res, void* heap)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_ecc_verify_256_ctx* ctx = (sp_ecc_verify_256_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_ecc_verify_256_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
if (hashLen > 32U) {
|
|
hashLen = 32U;
|
|
}
|
|
|
|
sp_256_from_bin(ctx->u1, 4, hash, (int)hashLen);
|
|
sp_256_from_mp(ctx->u2, 4, rm);
|
|
sp_256_from_mp(ctx->s, 4, sm);
|
|
sp_256_from_mp(ctx->p2.x, 4, pX);
|
|
sp_256_from_mp(ctx->p2.y, 4, pY);
|
|
sp_256_from_mp(ctx->p2.z, 4, pZ);
|
|
ctx->state = 1;
|
|
break;
|
|
case 1: /* NORMS0 */
|
|
sp_256_mul_4(ctx->s, ctx->s, p256_norm_order);
|
|
err = sp_256_mod_4(ctx->s, ctx->s, p256_order);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 2;
|
|
break;
|
|
case 2: /* NORMS1 */
|
|
sp_256_norm_4(ctx->s);
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 3;
|
|
break;
|
|
case 3: /* NORMS2 */
|
|
err = sp_256_mont_inv_order_4_nb((sp_ecc_ctx_t*)&ctx->mont_inv_order_ctx, ctx->s, ctx->s, ctx->tmp);
|
|
if (err == MP_OKAY) {
|
|
ctx->state = 4;
|
|
}
|
|
break;
|
|
case 4: /* NORMS3 */
|
|
sp_256_mont_mul_order_4(ctx->u1, ctx->u1, ctx->s);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5: /* NORMS4 */
|
|
sp_256_mont_mul_order_4(ctx->u2, ctx->u2, ctx->s);
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 6;
|
|
break;
|
|
case 6: /* MULBASE */
|
|
err = sp_256_ecc_mulmod_4_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx, &ctx->p1, &p256_base, ctx->u1, 0, 0, heap);
|
|
if (err == MP_OKAY) {
|
|
if (sp_256_iszero_4(ctx->p1.z)) {
|
|
ctx->p1.infinity = 1;
|
|
}
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 7;
|
|
}
|
|
break;
|
|
case 7: /* MULMOD */
|
|
err = sp_256_ecc_mulmod_4_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx, &ctx->p2, &ctx->p2, ctx->u2, 0, 0, heap);
|
|
if (err == MP_OKAY) {
|
|
if (sp_256_iszero_4(ctx->p2.z)) {
|
|
ctx->p2.infinity = 1;
|
|
}
|
|
XMEMSET(&ctx->add_ctx, 0, sizeof(ctx->add_ctx));
|
|
ctx->state = 8;
|
|
}
|
|
break;
|
|
case 8: /* ADD */
|
|
err = sp_256_proj_point_add_4_nb((sp_ecc_ctx_t*)&ctx->add_ctx, &ctx->p1, &ctx->p1, &ctx->p2, ctx->tmp);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 9;
|
|
break;
|
|
case 9: /* MONT */
|
|
/* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x' */
|
|
/* Reload r and convert to Montgomery form. */
|
|
sp_256_from_mp(ctx->u2, 4, rm);
|
|
err = sp_256_mod_mul_norm_4(ctx->u2, ctx->u2, p256_mod);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 10;
|
|
break;
|
|
case 10: /* SQR */
|
|
/* u1 = r.z'.z' mod prime */
|
|
sp_256_mont_sqr_4(ctx->p1.z, ctx->p1.z, p256_mod, p256_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11: /* MUL */
|
|
sp_256_mont_mul_4(ctx->u1, ctx->u2, ctx->p1.z, p256_mod, p256_mp_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12: /* RES */
|
|
{
|
|
sp_int64 c = 0;
|
|
err = MP_OKAY; /* math okay, now check result */
|
|
*res = (int)(sp_256_cmp_4(ctx->p1.x, ctx->u1) == 0);
|
|
if (*res == 0) {
|
|
sp_digit carry;
|
|
|
|
/* Reload r and add order. */
|
|
sp_256_from_mp(ctx->u2, 4, rm);
|
|
carry = sp_256_add_4(ctx->u2, ctx->u2, p256_order);
|
|
/* Carry means result is greater than mod and is not valid. */
|
|
if (carry == 0) {
|
|
sp_256_norm_4(ctx->u2);
|
|
|
|
/* Compare with mod and if greater or equal then not valid. */
|
|
c = sp_256_cmp_4(ctx->u2, p256_mod);
|
|
}
|
|
}
|
|
if ((*res == 0) && (c < 0)) {
|
|
/* Convert to Montogomery form */
|
|
err = sp_256_mod_mul_norm_4(ctx->u2, ctx->u2, p256_mod);
|
|
if (err == MP_OKAY) {
|
|
/* u1 = (r + 1*order).z'.z' mod prime */
|
|
sp_256_mont_mul_4(ctx->u1, ctx->u2, ctx->p1.z, p256_mod,
|
|
p256_mp_mod);
|
|
*res = (int)(sp_256_cmp_4(ctx->p1.x, ctx->u1) == 0);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
} /* switch */
|
|
|
|
if (err == MP_OKAY && ctx->state != 12) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
int sp_ecc_verify_256(const byte* hash, word32 hashLen, const mp_int* pX,
|
|
const mp_int* pY, const mp_int* pZ, const mp_int* rm, const mp_int* sm,
|
|
int* res, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* u1 = NULL;
|
|
sp_point_256* p1 = NULL;
|
|
#else
|
|
sp_digit u1[16 * 4];
|
|
sp_point_256 p1[2];
|
|
#endif
|
|
sp_digit* u2 = NULL;
|
|
sp_digit* s = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_point_256* p2 = NULL;
|
|
sp_digit carry;
|
|
sp_int64 c = 0;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p1 = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p1 == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
u1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16 * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (u1 == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
u2 = u1 + 2 * 4;
|
|
s = u1 + 4 * 4;
|
|
tmp = u1 + 6 * 4;
|
|
p2 = p1 + 1;
|
|
|
|
if (hashLen > 32U) {
|
|
hashLen = 32U;
|
|
}
|
|
|
|
sp_256_from_bin(u1, 4, hash, (int)hashLen);
|
|
sp_256_from_mp(u2, 4, rm);
|
|
sp_256_from_mp(s, 4, sm);
|
|
sp_256_from_mp(p2->x, 4, pX);
|
|
sp_256_from_mp(p2->y, 4, pY);
|
|
sp_256_from_mp(p2->z, 4, pZ);
|
|
|
|
err = sp_256_calc_vfy_point_4(p1, p2, s, u1, u2, tmp, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x' */
|
|
/* Reload r and convert to Montgomery form. */
|
|
sp_256_from_mp(u2, 4, rm);
|
|
err = sp_256_mod_mul_norm_4(u2, u2, p256_mod);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* u1 = r.z'.z' mod prime */
|
|
sp_256_mont_sqr_4(p1->z, p1->z, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(u1, u2, p1->z, p256_mod, p256_mp_mod);
|
|
*res = (int)(sp_256_cmp_4(p1->x, u1) == 0);
|
|
if (*res == 0) {
|
|
/* Reload r and add order. */
|
|
sp_256_from_mp(u2, 4, rm);
|
|
carry = sp_256_add_4(u2, u2, p256_order);
|
|
/* Carry means result is greater than mod and is not valid. */
|
|
if (carry == 0) {
|
|
sp_256_norm_4(u2);
|
|
|
|
/* Compare with mod and if greater or equal then not valid. */
|
|
c = sp_256_cmp_4(u2, p256_mod);
|
|
}
|
|
}
|
|
if ((*res == 0) && (c < 0)) {
|
|
/* Convert to Montogomery form */
|
|
err = sp_256_mod_mul_norm_4(u2, u2, p256_mod);
|
|
if (err == MP_OKAY) {
|
|
/* u1 = (r + 1*order).z'.z' mod prime */
|
|
sp_256_mont_mul_4(u1, u2, p1->z, p256_mod,
|
|
p256_mp_mod);
|
|
*res = (sp_256_cmp_4(p1->x, u1) == 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (u1 != NULL)
|
|
XFREE(u1, heap, DYNAMIC_TYPE_ECC);
|
|
if (p1 != NULL)
|
|
XFREE(p1, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_VERIFY */
|
|
|
|
#ifdef HAVE_ECC_CHECK_KEY
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* point EC point.
|
|
* heap Heap to use if dynamically allocating.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_256_ecc_is_point_4(const sp_point_256* point,
|
|
void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* t1 = NULL;
|
|
#else
|
|
sp_digit t1[4 * 4];
|
|
#endif
|
|
sp_digit* t2 = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4 * 4, heap, DYNAMIC_TYPE_ECC);
|
|
if (t1 == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
(void)heap;
|
|
|
|
if (err == MP_OKAY) {
|
|
t2 = t1 + 2 * 4;
|
|
|
|
sp_256_sqr_4(t1, point->y);
|
|
(void)sp_256_mod_4(t1, t1, p256_mod);
|
|
sp_256_sqr_4(t2, point->x);
|
|
(void)sp_256_mod_4(t2, t2, p256_mod);
|
|
sp_256_mul_4(t2, t2, point->x);
|
|
(void)sp_256_mod_4(t2, t2, p256_mod);
|
|
(void)sp_256_sub_4(t2, p256_mod, t2);
|
|
sp_256_mont_add_4(t1, t1, t2, p256_mod);
|
|
|
|
sp_256_mont_add_4(t1, t1, point->x, p256_mod);
|
|
sp_256_mont_add_4(t1, t1, point->x, p256_mod);
|
|
sp_256_mont_add_4(t1, t1, point->x, p256_mod);
|
|
|
|
if (sp_256_cmp_4(t1, p256_b) != 0) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t1 != NULL)
|
|
XFREE(t1, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_is_point_256(const mp_int* pX, const mp_int* pY)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_256* pub = NULL;
|
|
#else
|
|
sp_point_256 pub[1];
|
|
#endif
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
pub = (sp_point_256*)XMALLOC(sizeof(sp_point_256), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(pub->x, 4, pX);
|
|
sp_256_from_mp(pub->y, 4, pY);
|
|
sp_256_from_bin(pub->z, 4, one, (int)sizeof(one));
|
|
|
|
err = sp_256_ecc_is_point_4(pub, NULL);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the private scalar generates the EC point (px, py), the point is
|
|
* on the curve and the point has the correct order.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* privm Private scalar that generates EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve, ECC_INF_E if the point does not have the correct order,
|
|
* ECC_PRIV_KEY_E when the private scalar doesn't generate the EC point and
|
|
* MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_check_key_256(const mp_int* pX, const mp_int* pY,
|
|
const mp_int* privm, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* priv = NULL;
|
|
sp_point_256* pub = NULL;
|
|
#else
|
|
sp_digit priv[4];
|
|
sp_point_256 pub[2];
|
|
#endif
|
|
sp_point_256* p = NULL;
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
|
|
/* Quick check the lengs of public key ordinates and private key are in
|
|
* range. Proper check later.
|
|
*/
|
|
if (((mp_count_bits(pX) > 256) ||
|
|
(mp_count_bits(pY) > 256) ||
|
|
((privm != NULL) && (mp_count_bits(privm) > 256)))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
pub = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY && privm) {
|
|
priv = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (priv == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = pub + 1;
|
|
|
|
sp_256_from_mp(pub->x, 4, pX);
|
|
sp_256_from_mp(pub->y, 4, pY);
|
|
sp_256_from_bin(pub->z, 4, one, (int)sizeof(one));
|
|
if (privm)
|
|
sp_256_from_mp(priv, 4, privm);
|
|
|
|
/* Check point at infinitiy. */
|
|
if ((sp_256_iszero_4(pub->x) != 0) &&
|
|
(sp_256_iszero_4(pub->y) != 0)) {
|
|
err = ECC_INF_E;
|
|
}
|
|
}
|
|
|
|
/* Check range of X and Y */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_256_cmp_4(pub->x, p256_mod) >= 0) ||
|
|
(sp_256_cmp_4(pub->y, p256_mod) >= 0))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Check point is on curve */
|
|
err = sp_256_ecc_is_point_4(pub, heap);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Point * order = infinity */
|
|
err = sp_256_ecc_mulmod_4(p, pub, p256_order, 1, 1, heap);
|
|
}
|
|
/* Check result is infinity */
|
|
if ((err == MP_OKAY) && ((sp_256_iszero_4(p->x) == 0) ||
|
|
(sp_256_iszero_4(p->y) == 0))) {
|
|
err = ECC_INF_E;
|
|
}
|
|
|
|
if (privm) {
|
|
if (err == MP_OKAY) {
|
|
/* Base * private = point */
|
|
err = sp_256_ecc_mulmod_base_4(p, priv, 1, 1, heap);
|
|
}
|
|
/* Check result is public key */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_256_cmp_4(p->x, pub->x) != 0) ||
|
|
(sp_256_cmp_4(p->y, pub->y) != 0))) {
|
|
err = ECC_PRIV_KEY_E;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, heap, DYNAMIC_TYPE_ECC);
|
|
if (priv != NULL)
|
|
XFREE(priv, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
#ifdef WOLFSSL_PUBLIC_ECC_ADD_DBL
|
|
/* Add two projective EC points together.
|
|
* (pX, pY, pZ) + (qX, qY, qZ) = (rX, rY, rZ)
|
|
*
|
|
* pX First EC point's X ordinate.
|
|
* pY First EC point's Y ordinate.
|
|
* pZ First EC point's Z ordinate.
|
|
* qX Second EC point's X ordinate.
|
|
* qY Second EC point's Y ordinate.
|
|
* qZ Second EC point's Z ordinate.
|
|
* rX Resultant EC point's X ordinate.
|
|
* rY Resultant EC point's Y ordinate.
|
|
* rZ Resultant EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ,
|
|
mp_int* qX, mp_int* qY, mp_int* qZ,
|
|
mp_int* rX, mp_int* rY, mp_int* rZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_256* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 4 * 5];
|
|
sp_point_256 p[2];
|
|
#endif
|
|
sp_point_256* q = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_256*)XMALLOC(sizeof(sp_point_256) * 2, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 5, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
q = p + 1;
|
|
|
|
sp_256_from_mp(p->x, 4, pX);
|
|
sp_256_from_mp(p->y, 4, pY);
|
|
sp_256_from_mp(p->z, 4, pZ);
|
|
sp_256_from_mp(q->x, 4, qX);
|
|
sp_256_from_mp(q->y, 4, qY);
|
|
sp_256_from_mp(q->z, 4, qZ);
|
|
p->infinity = sp_256_iszero_4(p->x) &
|
|
sp_256_iszero_4(p->y);
|
|
q->infinity = sp_256_iszero_4(q->x) &
|
|
sp_256_iszero_4(q->y);
|
|
|
|
sp_256_proj_point_add_4(p, p, q, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->x, rX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->y, rY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->z, rZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Double a projective EC point.
|
|
* (pX, pY, pZ) + (pX, pY, pZ) = (rX, rY, rZ)
|
|
*
|
|
* pX EC point's X ordinate.
|
|
* pY EC point's Y ordinate.
|
|
* pZ EC point's Z ordinate.
|
|
* rX Resultant EC point's X ordinate.
|
|
* rY Resultant EC point's Y ordinate.
|
|
* rZ Resultant EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ,
|
|
mp_int* rX, mp_int* rY, mp_int* rZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_256* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 4 * 2];
|
|
sp_point_256 p[1];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_256*)XMALLOC(sizeof(sp_point_256), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 2, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(p->x, 4, pX);
|
|
sp_256_from_mp(p->y, 4, pY);
|
|
sp_256_from_mp(p->z, 4, pZ);
|
|
p->infinity = sp_256_iszero_4(p->x) &
|
|
sp_256_iszero_4(p->y);
|
|
|
|
sp_256_proj_point_dbl_4(p, p, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->x, rX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->y, rY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->z, rZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Map a projective EC point to affine in place.
|
|
* pZ will be one.
|
|
*
|
|
* pX EC point's X ordinate.
|
|
* pY EC point's Y ordinate.
|
|
* pZ EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_256* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 4 * 4];
|
|
sp_point_256 p[1];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_256*)XMALLOC(sizeof(sp_point_256), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 4 * 4, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
if (err == MP_OKAY) {
|
|
sp_256_from_mp(p->x, 4, pX);
|
|
sp_256_from_mp(p->y, 4, pY);
|
|
sp_256_from_mp(p->z, 4, pZ);
|
|
p->infinity = sp_256_iszero_4(p->x) &
|
|
sp_256_iszero_4(p->y);
|
|
|
|
sp_256_map_4(p, p, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->x, pX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->y, pY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_256_to_mp(p->z, pZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_PUBLIC_ECC_ADD_DBL */
|
|
#ifdef HAVE_COMP_KEY
|
|
/* Find the square root of a number mod the prime of the curve.
|
|
*
|
|
* y The number to operate on and the result.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_256_mont_sqrt_4(sp_digit* y)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* t1 = NULL;
|
|
#else
|
|
sp_digit t1[4 * 4];
|
|
#endif
|
|
sp_digit* t2 = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4 * 4, NULL, DYNAMIC_TYPE_ECC);
|
|
if (t1 == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
t2 = t1 + 2 * 4;
|
|
|
|
{
|
|
/* t2 = y ^ 0x2 */
|
|
sp_256_mont_sqr_4(t2, y, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0x3 */
|
|
sp_256_mont_mul_4(t1, t2, y, p256_mod, p256_mp_mod);
|
|
/* t2 = y ^ 0xc */
|
|
sp_256_mont_sqr_n_4(t2, t1, 2, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xf */
|
|
sp_256_mont_mul_4(t1, t1, t2, p256_mod, p256_mp_mod);
|
|
/* t2 = y ^ 0xf0 */
|
|
sp_256_mont_sqr_n_4(t2, t1, 4, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xff */
|
|
sp_256_mont_mul_4(t1, t1, t2, p256_mod, p256_mp_mod);
|
|
/* t2 = y ^ 0xff00 */
|
|
sp_256_mont_sqr_n_4(t2, t1, 8, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffff */
|
|
sp_256_mont_mul_4(t1, t1, t2, p256_mod, p256_mp_mod);
|
|
/* t2 = y ^ 0xffff0000 */
|
|
sp_256_mont_sqr_n_4(t2, t1, 16, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffffffff */
|
|
sp_256_mont_mul_4(t1, t1, t2, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffffffff00000000 */
|
|
sp_256_mont_sqr_n_4(t1, t1, 32, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffffffff00000001 */
|
|
sp_256_mont_mul_4(t1, t1, y, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffffffff00000001000000000000000000000000 */
|
|
sp_256_mont_sqr_n_4(t1, t1, 96, p256_mod, p256_mp_mod);
|
|
/* t1 = y ^ 0xffffffff00000001000000000000000000000001 */
|
|
sp_256_mont_mul_4(t1, t1, y, p256_mod, p256_mp_mod);
|
|
sp_256_mont_sqr_n_4(y, t1, 94, p256_mod, p256_mp_mod);
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t1 != NULL)
|
|
XFREE(t1, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
|
|
/* Uncompress the point given the X ordinate.
|
|
*
|
|
* xm X ordinate.
|
|
* odd Whether the Y ordinate is odd.
|
|
* ym Calculated Y ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_uncompress_256(mp_int* xm, int odd, mp_int* ym)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* x = NULL;
|
|
#else
|
|
sp_digit x[4 * 4];
|
|
#endif
|
|
sp_digit* y = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
x = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4 * 4, NULL, DYNAMIC_TYPE_ECC);
|
|
if (x == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
y = x + 2 * 4;
|
|
|
|
sp_256_from_mp(x, 4, xm);
|
|
err = sp_256_mod_mul_norm_4(x, x, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* y = x^3 */
|
|
{
|
|
sp_256_mont_sqr_4(y, x, p256_mod, p256_mp_mod);
|
|
sp_256_mont_mul_4(y, y, x, p256_mod, p256_mp_mod);
|
|
}
|
|
/* y = x^3 - 3x */
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
sp_256_mont_sub_4(y, y, x, p256_mod);
|
|
/* y = x^3 - 3x + b */
|
|
err = sp_256_mod_mul_norm_4(x, p256_b, p256_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_256_mont_add_4(y, y, x, p256_mod);
|
|
/* y = sqrt(x^3 - 3x + b) */
|
|
err = sp_256_mont_sqrt_4(y);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(y + 4, 0, 4U * sizeof(sp_digit));
|
|
sp_256_mont_reduce_4(y, p256_mod, p256_mp_mod);
|
|
if ((((word32)y[0] ^ (word32)odd) & 1U) != 0U) {
|
|
sp_256_mont_sub_4(y, p256_mod, y, p256_mod);
|
|
}
|
|
|
|
err = sp_256_to_mp(y, ym);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (x != NULL)
|
|
XFREE(x, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
#endif /* !WOLFSSL_SP_NO_256 */
|
|
#ifdef WOLFSSL_SP_384
|
|
|
|
/* Point structure to use. */
|
|
typedef struct sp_point_384 {
|
|
/* X ordinate of point. */
|
|
sp_digit x[2 * 6];
|
|
/* Y ordinate of point. */
|
|
sp_digit y[2 * 6];
|
|
/* Z ordinate of point. */
|
|
sp_digit z[2 * 6];
|
|
/* Indicates point is at infinity. */
|
|
int infinity;
|
|
} sp_point_384;
|
|
|
|
/* The modulus (prime) of the curve P384. */
|
|
static const sp_digit p384_mod[6] = {
|
|
0x00000000ffffffffL,0xffffffff00000000L,0xfffffffffffffffeL,
|
|
0xffffffffffffffffL,0xffffffffffffffffL,0xffffffffffffffffL
|
|
};
|
|
/* The Montgomery normalizer for modulus of the curve P384. */
|
|
static const sp_digit p384_norm_mod[6] = {
|
|
0xffffffff00000001L,0x00000000ffffffffL,0x0000000000000001L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L
|
|
};
|
|
/* The Montgomery multiplier for modulus of the curve P384. */
|
|
static sp_digit p384_mp_mod = 0x0000000100000001;
|
|
#if defined(WOLFSSL_VALIDATE_ECC_KEYGEN) || defined(HAVE_ECC_SIGN) || \
|
|
defined(HAVE_ECC_VERIFY)
|
|
/* The order of the curve P384. */
|
|
static const sp_digit p384_order[6] = {
|
|
0xecec196accc52973L,0x581a0db248b0a77aL,0xc7634d81f4372ddfL,
|
|
0xffffffffffffffffL,0xffffffffffffffffL,0xffffffffffffffffL
|
|
};
|
|
#endif
|
|
/* The order of the curve P384 minus 2. */
|
|
static const sp_digit p384_order2[6] = {
|
|
0xecec196accc52971L,0x581a0db248b0a77aL,0xc7634d81f4372ddfL,
|
|
0xffffffffffffffffL,0xffffffffffffffffL,0xffffffffffffffffL
|
|
};
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* The Montgomery normalizer for order of the curve P384. */
|
|
static const sp_digit p384_norm_order[6] = {
|
|
0x1313e695333ad68dL,0xa7e5f24db74f5885L,0x389cb27e0bc8d220L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L
|
|
};
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* The Montgomery multiplier for order of the curve P384. */
|
|
static sp_digit p384_mp_order = 0x6ed46089e88fdc45L;
|
|
#endif
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* The base point of curve P384. */
|
|
static const sp_point_384 p384_base = {
|
|
/* X ordinate */
|
|
{
|
|
0x3a545e3872760ab7L,0x5502f25dbf55296cL,0x59f741e082542a38L,
|
|
0x6e1d3b628ba79b98L,0x8eb1c71ef320ad74L,0xaa87ca22be8b0537L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* Y ordinate */
|
|
{
|
|
0x7a431d7c90ea0e5fL,0x0a60b1ce1d7e819dL,0xe9da3113b5f0b8c0L,
|
|
0xf8f41dbd289a147cL,0x5d9e98bf9292dc29L,0x3617de4a96262c6fL,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* Z ordinate */
|
|
{
|
|
0x0000000000000001L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* infinity */
|
|
0
|
|
};
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#if defined(HAVE_ECC_CHECK_KEY) || defined(HAVE_COMP_KEY)
|
|
static const sp_digit p384_b[6] = {
|
|
0x2a85c8edd3ec2aefL,0xc656398d8a2ed19dL,0x0314088f5013875aL,
|
|
0x181d9c6efe814112L,0x988e056be3f82d19L,0xb3312fa7e23ee7e4L
|
|
};
|
|
#endif
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_384_mul_6(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[12];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 40\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 48\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 80\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#else
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_384_mul_6(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x8, x9, [%[a], 0]\n\t"
|
|
"ldp x10, x11, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [%[a], 32]\n\t"
|
|
"ldp x14, x15, [%[b], 0]\n\t"
|
|
"ldp x16, x17, [%[b], 16]\n\t"
|
|
"ldp x19, x20, [%[b], 32]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"mul x3, x8, x14\n\t"
|
|
"umulh x4, x8, x14\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"mul x6, x8, x15\n\t"
|
|
"umulh x7, x8, x15\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"mul x6, x9, x14\n\t"
|
|
"adc x5, xzr, x7\n\t"
|
|
"umulh x7, x9, x14\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"mul x6, x8, x16\n\t"
|
|
"umulh x7, x8, x16\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"mul x6, x9, x15\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x15\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"mul x6, x10, x14\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x14\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"mul x6, x8, x17\n\t"
|
|
"umulh x7, x8, x17\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"mul x6, x9, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x9, x16\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"mul x6, x10, x15\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x15\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"mul x6, x11, x14\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x14\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[4]\n\t"
|
|
"mul x6, x8, x19\n\t"
|
|
"umulh x7, x8, x19\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"mul x6, x9, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x9, x17\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"mul x6, x10, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x10, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"mul x6, x11, x15\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x15\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[0]\n\t"
|
|
"mul x6, x12, x14\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x14\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[0] * B[5]\n\t"
|
|
"mul x6, x8, x20\n\t"
|
|
"umulh x7, x8, x20\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[4]\n\t"
|
|
"mul x6, x9, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x19\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"mul x6, x10, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"mul x6, x11, x16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x11, x16\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[1]\n\t"
|
|
"mul x6, x12, x15\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x15\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[0]\n\t"
|
|
"mul x6, x13, x14\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x14\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[1] * B[5]\n\t"
|
|
"mul x6, x9, x20\n\t"
|
|
"umulh x7, x9, x20\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[4]\n\t"
|
|
"mul x6, x10, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x19\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"mul x6, x11, x17\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x17\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B[2]\n\t"
|
|
"mul x6, x12, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x12, x16\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[1]\n\t"
|
|
"mul x6, x13, x15\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x15\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[2] * B[5]\n\t"
|
|
"mul x6, x10, x20\n\t"
|
|
"umulh x7, x10, x20\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[4]\n\t"
|
|
"mul x6, x11, x19\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x19\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[3]\n\t"
|
|
"mul x6, x12, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x17\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B[2]\n\t"
|
|
"mul x6, x13, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x13, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[3] * B[5]\n\t"
|
|
"mul x6, x11, x20\n\t"
|
|
"umulh x7, x11, x20\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[4]\n\t"
|
|
"mul x6, x12, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x19\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[3]\n\t"
|
|
"mul x6, x13, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[4] * B[5]\n\t"
|
|
"mul x6, x12, x20\n\t"
|
|
"umulh x7, x12, x20\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[4]\n\t"
|
|
"mul x6, x13, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x19\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[5] * B[5]\n\t"
|
|
"mul x6, x13, x20\n\t"
|
|
"umulh x7, x13, x20\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adc x5, x5, x7\n\t"
|
|
"stp x4, x5, [%[r], 80]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20"
|
|
);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_384_sqr_6(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[12];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 40\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 48\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 80\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#else
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* All registers version.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_384_sqr_6(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x16, x17, [%[a], 0]\n\t"
|
|
"ldp x19, x20, [%[a], 16]\n\t"
|
|
"ldp x21, x22, [%[a], 32]\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x6, x16, x17\n\t"
|
|
"umulh x7, x16, x17\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x4, x16, x19\n\t"
|
|
"umulh x5, x16, x19\n\t"
|
|
"adds x7, x7, x4\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x4, x16, x20\n\t"
|
|
"adc x8, xzr, x5\n\t"
|
|
"umulh x5, x16, x20\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x4, x17, x19\n\t"
|
|
"adc x9, xzr, x5\n\t"
|
|
"umulh x5, x17, x19\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[0] * A[4]\n\t"
|
|
"mul x4, x16, x21\n\t"
|
|
"adcs x9, x9, x5\n\t"
|
|
"umulh x5, x16, x21\n\t"
|
|
"adc x10, xzr, xzr\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x4, x17, x20\n\t"
|
|
"adc x10, x10, x5\n\t"
|
|
"umulh x5, x17, x20\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[0] * A[5]\n\t"
|
|
"mul x4, x16, x22\n\t"
|
|
"adcs x10, x10, x5\n\t"
|
|
"umulh x5, x16, x22\n\t"
|
|
"adc x11, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * A[4]\n\t"
|
|
"mul x4, x17, x21\n\t"
|
|
"adc x11, x11, x5\n\t"
|
|
"umulh x5, x17, x21\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x4, x19, x20\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x19, x20\n\t"
|
|
"adc x12, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * A[5]\n\t"
|
|
"mul x4, x17, x22\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x17, x22\n\t"
|
|
"adc x12, x12, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * A[4]\n\t"
|
|
"mul x4, x19, x21\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x19, x21\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * A[5]\n\t"
|
|
"mul x4, x19, x22\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x19, x22\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * A[4]\n\t"
|
|
"mul x4, x20, x21\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x20, x21\n\t"
|
|
"adc x14, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * A[5]\n\t"
|
|
"mul x4, x20, x22\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x20, x22\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[4] * A[5]\n\t"
|
|
"mul x4, x21, x22\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x21, x22\n\t"
|
|
"adc x15, xzr, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"adc x15, x15, x5\n\t"
|
|
"# Double\n\t"
|
|
"adds x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"adcs x8, x8, x8\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x5, x16, x16\n\t"
|
|
"adcs x15, x15, x15\n\t"
|
|
"umulh x2, x16, x16\n\t"
|
|
"cset x16, cs\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x3, x17, x17\n\t"
|
|
"adds x6, x6, x2\n\t"
|
|
"umulh x4, x17, x17\n\t"
|
|
"adcs x7, x7, x3\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x2, x19, x19\n\t"
|
|
"adcs x8, x8, x4\n\t"
|
|
"umulh x3, x19, x19\n\t"
|
|
"adcs x9, x9, x2\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x4, x20, x20\n\t"
|
|
"adcs x10, x10, x3\n\t"
|
|
"umulh x2, x20, x20\n\t"
|
|
"adcs x11, x11, x4\n\t"
|
|
"# A[4] * A[4]\n\t"
|
|
"mul x3, x21, x21\n\t"
|
|
"adcs x12, x12, x2\n\t"
|
|
"umulh x4, x21, x21\n\t"
|
|
"adcs x13, x13, x3\n\t"
|
|
"# A[5] * A[5]\n\t"
|
|
"mul x2, x22, x22\n\t"
|
|
"adcs x14, x14, x4\n\t"
|
|
"umulh x3, x22, x22\n\t"
|
|
"adcs x15, x15, x2\n\t"
|
|
"stp x5, x6, [%[r], 0]\n\t"
|
|
"adc x16, x16, x3\n\t"
|
|
"stp x7, x8, [%[r], 16]\n\t"
|
|
"stp x9, x10, [%[r], 32]\n\t"
|
|
"stp x11, x12, [%[r], 48]\n\t"
|
|
"stp x13, x14, [%[r], 64]\n\t"
|
|
"stp x15, x16, [%[r], 80]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x16", "x17", "x19", "x20", "x21", "x22"
|
|
);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_384_add_6(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldr x3, [%[a], 32]\n\t"
|
|
"ldr x4, [%[a], 40]\n\t"
|
|
"ldr x7, [%[b], 32]\n\t"
|
|
"ldr x8, [%[b], 40]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"str x3, [%[r], 32]\n\t"
|
|
"str x4, [%[r], 40]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_384_sub_6(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldr x3, [%[a], 32]\n\t"
|
|
"ldr x4, [%[a], 40]\n\t"
|
|
"ldr x7, [%[b], 32]\n\t"
|
|
"ldr x8, [%[b], 40]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"str x3, [%[r], 32]\n\t"
|
|
"str x4, [%[r], 40]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Multiply a number by Montgomery normalizer mod modulus (prime).
|
|
*
|
|
* r The resulting Montgomery form number.
|
|
* a The number to convert.
|
|
* m The modulus (prime).
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_384_mod_mul_norm_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
int64_t* t = NULL;
|
|
#else
|
|
int64_t t[2 * 12];
|
|
#endif
|
|
int64_t* a32 = NULL;
|
|
int64_t o;
|
|
int err = MP_OKAY;
|
|
|
|
(void)m;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (int64_t*)XMALLOC(sizeof(int64_t) * 2 * 12, NULL, DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
a32 = t + 12;
|
|
|
|
a32[0] = a[0] & 0xffffffff;
|
|
a32[1] = a[0] >> 32;
|
|
a32[2] = a[1] & 0xffffffff;
|
|
a32[3] = a[1] >> 32;
|
|
a32[4] = a[2] & 0xffffffff;
|
|
a32[5] = a[2] >> 32;
|
|
a32[6] = a[3] & 0xffffffff;
|
|
a32[7] = a[3] >> 32;
|
|
a32[8] = a[4] & 0xffffffff;
|
|
a32[9] = a[4] >> 32;
|
|
a32[10] = a[5] & 0xffffffff;
|
|
a32[11] = a[5] >> 32;
|
|
|
|
/* 1 0 0 0 0 0 0 0 1 1 0 -1 */
|
|
t[0] = 0 + a32[0] + a32[8] + a32[9] - a32[11];
|
|
/* -1 1 0 0 0 0 0 0 -1 0 1 1 */
|
|
t[1] = 0 - a32[0] + a32[1] - a32[8] + a32[10] + a32[11];
|
|
/* 0 -1 1 0 0 0 0 0 0 -1 0 1 */
|
|
t[2] = 0 - a32[1] + a32[2] - a32[9] + a32[11];
|
|
/* 1 0 -1 1 0 0 0 0 1 1 -1 -1 */
|
|
t[3] = 0 + a32[0] - a32[2] + a32[3] + a32[8] + a32[9] - a32[10] - a32[11];
|
|
/* 1 1 0 -1 1 0 0 0 1 2 1 -2 */
|
|
t[4] = 0 + a32[0] + a32[1] - a32[3] + a32[4] + a32[8] + 2 * a32[9] + a32[10] - 2 * a32[11];
|
|
/* 0 1 1 0 -1 1 0 0 0 1 2 1 */
|
|
t[5] = 0 + a32[1] + a32[2] - a32[4] + a32[5] + a32[9] + 2 * a32[10] + a32[11];
|
|
/* 0 0 1 1 0 -1 1 0 0 0 1 2 */
|
|
t[6] = 0 + a32[2] + a32[3] - a32[5] + a32[6] + a32[10] + 2 * a32[11];
|
|
/* 0 0 0 1 1 0 -1 1 0 0 0 1 */
|
|
t[7] = 0 + a32[3] + a32[4] - a32[6] + a32[7] + a32[11];
|
|
/* 0 0 0 0 1 1 0 -1 1 0 0 0 */
|
|
t[8] = 0 + a32[4] + a32[5] - a32[7] + a32[8];
|
|
/* 0 0 0 0 0 1 1 0 -1 1 0 0 */
|
|
t[9] = 0 + a32[5] + a32[6] - a32[8] + a32[9];
|
|
/* 0 0 0 0 0 0 1 1 0 -1 1 0 */
|
|
t[10] = 0 + a32[6] + a32[7] - a32[9] + a32[10];
|
|
/* 0 0 0 0 0 0 0 1 1 0 -1 1 */
|
|
t[11] = 0 + a32[7] + a32[8] - a32[10] + a32[11];
|
|
|
|
t[1] += t[0] >> 32; t[0] &= 0xffffffff;
|
|
t[2] += t[1] >> 32; t[1] &= 0xffffffff;
|
|
t[3] += t[2] >> 32; t[2] &= 0xffffffff;
|
|
t[4] += t[3] >> 32; t[3] &= 0xffffffff;
|
|
t[5] += t[4] >> 32; t[4] &= 0xffffffff;
|
|
t[6] += t[5] >> 32; t[5] &= 0xffffffff;
|
|
t[7] += t[6] >> 32; t[6] &= 0xffffffff;
|
|
t[8] += t[7] >> 32; t[7] &= 0xffffffff;
|
|
t[9] += t[8] >> 32; t[8] &= 0xffffffff;
|
|
t[10] += t[9] >> 32; t[9] &= 0xffffffff;
|
|
t[11] += t[10] >> 32; t[10] &= 0xffffffff;
|
|
o = t[11] >> 32; t[11] &= 0xffffffff;
|
|
t[0] += o;
|
|
t[1] -= o;
|
|
t[3] += o;
|
|
t[4] += o;
|
|
t[1] += t[0] >> 32; t[0] &= 0xffffffff;
|
|
t[2] += t[1] >> 32; t[1] &= 0xffffffff;
|
|
t[3] += t[2] >> 32; t[2] &= 0xffffffff;
|
|
t[4] += t[3] >> 32; t[3] &= 0xffffffff;
|
|
t[5] += t[4] >> 32; t[4] &= 0xffffffff;
|
|
t[6] += t[5] >> 32; t[5] &= 0xffffffff;
|
|
t[7] += t[6] >> 32; t[6] &= 0xffffffff;
|
|
t[8] += t[7] >> 32; t[7] &= 0xffffffff;
|
|
t[9] += t[8] >> 32; t[8] &= 0xffffffff;
|
|
t[10] += t[9] >> 32; t[9] &= 0xffffffff;
|
|
t[11] += t[10] >> 32; t[10] &= 0xffffffff;
|
|
|
|
r[0] = (t[1] << 32) | t[0];
|
|
r[1] = (t[3] << 32) | t[2];
|
|
r[2] = (t[5] << 32) | t[4];
|
|
r[3] = (t[7] << 32) | t[6];
|
|
r[4] = (t[9] << 32) | t[8];
|
|
r[5] = (t[11] << 32) | t[10];
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_384_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Convert a point of type ecc_point to type sp_point_384.
|
|
*
|
|
* p Point of type sp_point_384 (result).
|
|
* pm Point of type ecc_point.
|
|
*/
|
|
static void sp_384_point_from_ecc_point_6(sp_point_384* p,
|
|
const ecc_point* pm)
|
|
{
|
|
XMEMSET(p->x, 0, sizeof(p->x));
|
|
XMEMSET(p->y, 0, sizeof(p->y));
|
|
XMEMSET(p->z, 0, sizeof(p->z));
|
|
sp_384_from_mp(p->x, 6, pm->x);
|
|
sp_384_from_mp(p->y, 6, pm->y);
|
|
sp_384_from_mp(p->z, 6, pm->z);
|
|
p->infinity = 0;
|
|
}
|
|
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_384_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (384 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 6);
|
|
r->used = 6;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 6; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (384 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 6; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (384 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Convert a point of type sp_point_384 to type ecc_point.
|
|
*
|
|
* p Point of type sp_point_384.
|
|
* pm Point of type ecc_point (result).
|
|
* returns MEMORY_E when allocation of memory in ecc_point fails otherwise
|
|
* MP_OKAY.
|
|
*/
|
|
static int sp_384_point_to_ecc_point_6(const sp_point_384* p, ecc_point* pm)
|
|
{
|
|
int err;
|
|
|
|
err = sp_384_to_mp(p->x, pm->x);
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->y, pm->y);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->z, pm->z);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Conditionally copy a into r using the mask m.
|
|
* m is -1 to copy and 0 when not.
|
|
*
|
|
* r A single precision number to copy over.
|
|
* a A single precision number to copy.
|
|
* m Mask value to apply.
|
|
*/
|
|
static void sp_384_cond_copy_6(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[r], 0]\n\t"
|
|
"ldp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x7, x8, [%[r], 32]\n\t"
|
|
"ldp x9, x10, [%[a], 0]\n\t"
|
|
"ldp x11, x12, [%[a], 16]\n\t"
|
|
"ldp x13, x14, [%[a], 32]\n\t"
|
|
"eor x9, x9, x3\n\t"
|
|
"eor x10, x10, x4\n\t"
|
|
"eor x11, x11, x5\n\t"
|
|
"eor x12, x12, x6\n\t"
|
|
"eor x13, x13, x7\n\t"
|
|
"eor x14, x14, x8\n\t"
|
|
"and x9, x9, %[m]\n\t"
|
|
"and x10, x10, %[m]\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"and x13, x13, %[m]\n\t"
|
|
"and x14, x14, %[m]\n\t"
|
|
"eor x3, x3, x9\n\t"
|
|
"eor x4, x4, x10\n\t"
|
|
"eor x5, x5, x11\n\t"
|
|
"eor x6, x6, x12\n\t"
|
|
"eor x7, x7, x13\n\t"
|
|
"eor x8, x8, x14\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"stp x7, x8, [%[r], 32]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14"
|
|
);
|
|
}
|
|
|
|
#define sp_384_mont_reduce_order_6 sp_384_mont_reduce_6
|
|
|
|
/* Reduce the number back to 384 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_384_mont_reduce_6(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 6\n\t"
|
|
"mov x4, 6\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"neg x3, x3\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 48\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_384_mont_mul_6(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_384_mul_6(r, a, b);
|
|
sp_384_mont_reduce_6(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_384_mont_sqr_6(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_384_sqr_6(r, a);
|
|
sp_384_mont_reduce_6(r, m, mp);
|
|
}
|
|
|
|
#if !defined(WOLFSSL_SP_SMALL) || defined(HAVE_COMP_KEY)
|
|
/* Square the Montgomery form number a number of times. (r = a ^ n mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* n Number of times to square.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_384_mont_sqr_n_6(sp_digit* r, const sp_digit* a, int n,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_384_mont_sqr_6(r, a, m, mp);
|
|
for (; n > 1; n--) {
|
|
sp_384_mont_sqr_6(r, r, m, mp);
|
|
}
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL | HAVE_COMP_KEY */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Mod-2 for the P384 curve. */
|
|
static const uint64_t p384_mod_minus_2[6] = {
|
|
0x00000000fffffffdU,0xffffffff00000000U,0xfffffffffffffffeU,
|
|
0xffffffffffffffffU,0xffffffffffffffffU,0xffffffffffffffffU
|
|
};
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
|
|
/* Invert the number, in Montgomery form, modulo the modulus (prime) of the
|
|
* P384 curve. (r = 1 / a mod m)
|
|
*
|
|
* r Inverse result.
|
|
* a Number to invert.
|
|
* td Temporary data.
|
|
*/
|
|
static void sp_384_mont_inv_6(sp_digit* r, const sp_digit* a, sp_digit* td)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit* t = td;
|
|
int i;
|
|
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 6);
|
|
for (i=382; i>=0; i--) {
|
|
sp_384_mont_sqr_6(t, t, p384_mod, p384_mp_mod);
|
|
if (p384_mod_minus_2[i / 64] & ((sp_digit)1 << (i % 64)))
|
|
sp_384_mont_mul_6(t, t, a, p384_mod, p384_mp_mod);
|
|
}
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 6);
|
|
#else
|
|
sp_digit* t1 = td;
|
|
sp_digit* t2 = td + 2 * 6;
|
|
sp_digit* t3 = td + 4 * 6;
|
|
sp_digit* t4 = td + 6 * 6;
|
|
sp_digit* t5 = td + 8 * 6;
|
|
|
|
/* 0x2 */
|
|
sp_384_mont_sqr_6(t1, a, p384_mod, p384_mp_mod);
|
|
/* 0x3 */
|
|
sp_384_mont_mul_6(t5, t1, a, p384_mod, p384_mp_mod);
|
|
/* 0xc */
|
|
sp_384_mont_sqr_n_6(t1, t5, 2, p384_mod, p384_mp_mod);
|
|
/* 0xf */
|
|
sp_384_mont_mul_6(t2, t5, t1, p384_mod, p384_mp_mod);
|
|
/* 0x1e */
|
|
sp_384_mont_sqr_6(t1, t2, p384_mod, p384_mp_mod);
|
|
/* 0x1f */
|
|
sp_384_mont_mul_6(t4, t1, a, p384_mod, p384_mp_mod);
|
|
/* 0x3e0 */
|
|
sp_384_mont_sqr_n_6(t1, t4, 5, p384_mod, p384_mp_mod);
|
|
/* 0x3ff */
|
|
sp_384_mont_mul_6(t2, t4, t1, p384_mod, p384_mp_mod);
|
|
/* 0x7fe0 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 5, p384_mod, p384_mp_mod);
|
|
/* 0x7fff */
|
|
sp_384_mont_mul_6(t4, t4, t1, p384_mod, p384_mp_mod);
|
|
/* 0x3fff8000 */
|
|
sp_384_mont_sqr_n_6(t1, t4, 15, p384_mod, p384_mp_mod);
|
|
/* 0x3fffffff */
|
|
sp_384_mont_mul_6(t2, t4, t1, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffc */
|
|
sp_384_mont_sqr_n_6(t3, t2, 2, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffd */
|
|
sp_384_mont_mul_6(r, t3, a, p384_mod, p384_mp_mod);
|
|
/* 0xffffffff */
|
|
sp_384_mont_mul_6(t3, t5, t3, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffc0000000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 30, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffff */
|
|
sp_384_mont_mul_6(t2, t2, t1, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffff000000000000000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 60, p384_mod, p384_mp_mod);
|
|
/* 0xffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t2, t2, t1, p384_mod, p384_mp_mod);
|
|
/* 0xffffffffffffffffffffffffffffff000000000000000000000000000000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 120, p384_mod, p384_mp_mod);
|
|
/* 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t2, t2, t1, p384_mod, p384_mp_mod);
|
|
/* 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 15, p384_mod, p384_mp_mod);
|
|
/* 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t2, t4, t1, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00000000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 33, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff */
|
|
sp_384_mont_mul_6(t2, t3, t1, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff000000000000000000000000 */
|
|
sp_384_mont_sqr_n_6(t1, t2, 96, p384_mod, p384_mp_mod);
|
|
/* 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffd */
|
|
sp_384_mont_mul_6(r, r, t1, p384_mod, p384_mp_mod);
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_384_cmp_6(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 40\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[a], 16]\n\t"
|
|
"ldp x9, x10, [%[a], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 0]\n\t"
|
|
"ldp x13, x14, [%[b], 16]\n\t"
|
|
"ldp x15, x16, [%[b], 32]\n\t"
|
|
"and x10, x10, x4\n\t"
|
|
"and x16, x16, x4\n\t"
|
|
"subs x10, x10, x16\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x9, x9, x4\n\t"
|
|
"and x15, x15, x4\n\t"
|
|
"subs x9, x9, x15\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"and x14, x14, x4\n\t"
|
|
"subs x8, x8, x14\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"and x13, x13, x4\n\t"
|
|
"subs x7, x7, x13\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x12, x12, x4\n\t"
|
|
"subs x6, x6, x12\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x11, x11, x4\n\t"
|
|
"subs x5, x5, x11\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_384_norm_6(a)
|
|
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_384_cond_sub_6(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Map the Montgomery form projective coordinate point to an affine point.
|
|
*
|
|
* r Resulting affine coordinate point.
|
|
* p Montgomery form projective coordinate point.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_384_map_6(sp_point_384* r, const sp_point_384* p,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*6;
|
|
sp_int64 n;
|
|
|
|
sp_384_mont_inv_6(t1, p->z, t + 2*6);
|
|
|
|
sp_384_mont_sqr_6(t2, t1, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t1, t2, t1, p384_mod, p384_mp_mod);
|
|
|
|
/* x /= z^2 */
|
|
sp_384_mont_mul_6(r->x, p->x, t2, p384_mod, p384_mp_mod);
|
|
XMEMSET(r->x + 6, 0, sizeof(r->x) / 2U);
|
|
sp_384_mont_reduce_6(r->x, p384_mod, p384_mp_mod);
|
|
/* Reduce x to less than modulus */
|
|
n = sp_384_cmp_6(r->x, p384_mod);
|
|
sp_384_cond_sub_6(r->x, r->x, p384_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_384_norm_6(r->x);
|
|
|
|
/* y /= z^3 */
|
|
sp_384_mont_mul_6(r->y, p->y, t1, p384_mod, p384_mp_mod);
|
|
XMEMSET(r->y + 6, 0, sizeof(r->y) / 2U);
|
|
sp_384_mont_reduce_6(r->y, p384_mod, p384_mp_mod);
|
|
/* Reduce y to less than modulus */
|
|
n = sp_384_cmp_6(r->y, p384_mod);
|
|
sp_384_cond_sub_6(r->y, r->y, p384_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_384_norm_6(r->y);
|
|
|
|
XMEMSET(r->z, 0, sizeof(r->z));
|
|
r->z[0] = 1;
|
|
|
|
}
|
|
|
|
/* Add two Montgomery form numbers (r = a + b % m).
|
|
*
|
|
* r Result of addition.
|
|
* a First number to add in Montgomery form.
|
|
* b Second number to add in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_384_mont_add_6(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_384_add_6(r, a, b);
|
|
sp_384_cond_sub_6(r, r, m, 0 - o);
|
|
}
|
|
|
|
/* Double a Montgomery form number (r = a + a % m).
|
|
*
|
|
* r Result of doubling.
|
|
* a Number to double in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_384_mont_dbl_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_384_add_6(r, a, a);
|
|
sp_384_cond_sub_6(r, r, m, 0 - o);
|
|
}
|
|
|
|
/* Triple a Montgomery form number (r = a + a + a % m).
|
|
*
|
|
* r Result of Tripling.
|
|
* a Number to triple in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_384_mont_tpl_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_384_add_6(r, a, a);
|
|
sp_384_cond_sub_6(r, r, m, 0 - o);
|
|
o = sp_384_add_6(r, r, a);
|
|
sp_384_cond_sub_6(r, r, m, 0 - o);
|
|
}
|
|
|
|
/* Conditionally add a and b using the mask m.
|
|
* m is -1 to add and 0 when not.
|
|
*
|
|
* r A single precision number representing conditional add result.
|
|
* a A single precision number to add with.
|
|
* b A single precision number to add.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_384_cond_add_6(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 48\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
/* Subtract two Montgomery form numbers (r = a - b % m).
|
|
*
|
|
* r Result of subtration.
|
|
* a Number to subtract from in Montgomery form.
|
|
* b Number to subtract with in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_384_mont_sub_6(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_384_sub_6(r, a, b);
|
|
sp_384_cond_add_6(r, r, m, o);
|
|
}
|
|
|
|
static void sp_384_rshift1_6(sp_digit* r, sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x6, x7, [%[a], 32]\n\t"
|
|
"lsr x11, x6, 1\n\t"
|
|
"lsr x10, x5, 1\n\t"
|
|
"lsr x9, x4, 1\n\t"
|
|
"lsr x8, x3, 1\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"orr x3, x8, x4, lsl 63\n\t"
|
|
"orr x4, x9, x5, lsl 63\n\t"
|
|
"orr x5, x10, x6, lsl 63\n\t"
|
|
"orr x6, x11, x7, lsl 63\n\t"
|
|
"lsr x7, x7, 1\n\t"
|
|
"stp x2, x3, [%[r]]\n\t"
|
|
"stp x4, x5, [%[r], 16]\n\t"
|
|
"stp x6, x7, [%[r], 32]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
}
|
|
|
|
/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m)
|
|
*
|
|
* r Result of division by 2.
|
|
* a Number to divide.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_384_div2_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_384_cond_add_6(r, a, m, 0 - (a[0] & 1));
|
|
sp_384_rshift1_6(r, r);
|
|
r[5] |= o << 63;
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p.
|
|
*
|
|
* r Result of doubling point.
|
|
* p Point to double.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_384_proj_point_dbl_6_ctx {
|
|
int state;
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_384_proj_point_dbl_6_ctx;
|
|
|
|
static int sp_384_proj_point_dbl_6_nb(sp_ecc_ctx_t* sp_ctx, sp_point_384* r, const sp_point_384* p, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_384_proj_point_dbl_6_ctx* ctx = (sp_384_proj_point_dbl_6_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_384_proj_point_dbl_6_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0:
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*6;
|
|
ctx->x = r->x;
|
|
ctx->y = r->y;
|
|
ctx->z = r->z;
|
|
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* T1 = Z * Z */
|
|
sp_384_mont_sqr_6(ctx->t1, p->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 2;
|
|
break;
|
|
case 2:
|
|
/* Z = Y * Z */
|
|
sp_384_mont_mul_6(ctx->z, p->y, p->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 3;
|
|
break;
|
|
case 3:
|
|
/* Z = 2Z */
|
|
sp_384_mont_dbl_6(ctx->z, ctx->z, p384_mod);
|
|
ctx->state = 4;
|
|
break;
|
|
case 4:
|
|
/* T2 = X - T1 */
|
|
sp_384_mont_sub_6(ctx->t2, p->x, ctx->t1, p384_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
/* T1 = X + T1 */
|
|
sp_384_mont_add_6(ctx->t1, p->x, ctx->t1, p384_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
/* T2 = T1 * T2 */
|
|
sp_384_mont_mul_6(ctx->t2, ctx->t1, ctx->t2, p384_mod, p384_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* T1 = 3T2 */
|
|
sp_384_mont_tpl_6(ctx->t1, ctx->t2, p384_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
/* Y = 2Y */
|
|
sp_384_mont_dbl_6(ctx->y, p->y, p384_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
/* Y = Y * Y */
|
|
sp_384_mont_sqr_6(ctx->y, ctx->y, p384_mod, p384_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* T2 = Y * Y */
|
|
sp_384_mont_sqr_6(ctx->t2, ctx->y, p384_mod, p384_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* T2 = T2/2 */
|
|
sp_384_div2_6(ctx->t2, ctx->t2, p384_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* Y = Y * X */
|
|
sp_384_mont_mul_6(ctx->y, ctx->y, p->x, p384_mod, p384_mp_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* X = T1 * T1 */
|
|
sp_384_mont_sqr_6(ctx->x, ctx->t1, p384_mod, p384_mp_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* X = X - Y */
|
|
sp_384_mont_sub_6(ctx->x, ctx->x, ctx->y, p384_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
/* X = X - Y */
|
|
sp_384_mont_sub_6(ctx->x, ctx->x, ctx->y, p384_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* Y = Y - X */
|
|
sp_384_mont_sub_6(ctx->y, ctx->y, ctx->x, p384_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
/* Y = Y * T1 */
|
|
sp_384_mont_mul_6(ctx->y, ctx->y, ctx->t1, p384_mod, p384_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
/* Y = Y - T2 */
|
|
sp_384_mont_sub_6(ctx->y, ctx->y, ctx->t2, p384_mod);
|
|
ctx->state = 19;
|
|
/* fall-through */
|
|
case 19:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 19) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_384_proj_point_dbl_6(sp_point_384* r, const sp_point_384* p, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*6;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = r->x;
|
|
y = r->y;
|
|
z = r->z;
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
|
|
/* T1 = Z * Z */
|
|
sp_384_mont_sqr_6(t1, p->z, p384_mod, p384_mp_mod);
|
|
/* Z = Y * Z */
|
|
sp_384_mont_mul_6(z, p->y, p->z, p384_mod, p384_mp_mod);
|
|
/* Z = 2Z */
|
|
sp_384_mont_dbl_6(z, z, p384_mod);
|
|
/* T2 = X - T1 */
|
|
sp_384_mont_sub_6(t2, p->x, t1, p384_mod);
|
|
/* T1 = X + T1 */
|
|
sp_384_mont_add_6(t1, p->x, t1, p384_mod);
|
|
/* T2 = T1 * T2 */
|
|
sp_384_mont_mul_6(t2, t1, t2, p384_mod, p384_mp_mod);
|
|
/* T1 = 3T2 */
|
|
sp_384_mont_tpl_6(t1, t2, p384_mod);
|
|
/* Y = 2Y */
|
|
sp_384_mont_dbl_6(y, p->y, p384_mod);
|
|
/* Y = Y * Y */
|
|
sp_384_mont_sqr_6(y, y, p384_mod, p384_mp_mod);
|
|
/* T2 = Y * Y */
|
|
sp_384_mont_sqr_6(t2, y, p384_mod, p384_mp_mod);
|
|
/* T2 = T2/2 */
|
|
sp_384_div2_6(t2, t2, p384_mod);
|
|
/* Y = Y * X */
|
|
sp_384_mont_mul_6(y, y, p->x, p384_mod, p384_mp_mod);
|
|
/* X = T1 * T1 */
|
|
sp_384_mont_sqr_6(x, t1, p384_mod, p384_mp_mod);
|
|
/* X = X - Y */
|
|
sp_384_mont_sub_6(x, x, y, p384_mod);
|
|
/* X = X - Y */
|
|
sp_384_mont_sub_6(x, x, y, p384_mod);
|
|
/* Y = Y - X */
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
/* Y = Y * T1 */
|
|
sp_384_mont_mul_6(y, y, t1, p384_mod, p384_mp_mod);
|
|
/* Y = Y - T2 */
|
|
sp_384_mont_sub_6(y, y, t2, p384_mod);
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_384_proj_point_dbl_n_6(sp_point_384* p, int n,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*6;
|
|
sp_digit* b = t + 4*6;
|
|
sp_digit* t1 = t + 6*6;
|
|
sp_digit* t2 = t + 8*6;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = p->x;
|
|
y = p->y;
|
|
z = p->z;
|
|
|
|
/* Y = 2*Y */
|
|
sp_384_mont_dbl_6(y, y, p384_mod);
|
|
/* W = Z^4 */
|
|
sp_384_mont_sqr_6(w, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(w, w, p384_mod, p384_mp_mod);
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
while (--n > 0)
|
|
#else
|
|
while (--n >= 0)
|
|
#endif
|
|
{
|
|
/* A = 3*(X^2 - W) */
|
|
sp_384_mont_sqr_6(t1, x, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(t1, t1, w, p384_mod);
|
|
sp_384_mont_tpl_6(a, t1, p384_mod);
|
|
/* B = X*Y^2 */
|
|
sp_384_mont_sqr_6(t1, y, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(b, t1, x, p384_mod, p384_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_384_mont_sqr_6(x, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(t2, b, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t2, p384_mod);
|
|
/* Z = Z*Y */
|
|
sp_384_mont_mul_6(z, z, y, p384_mod, p384_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_384_mont_sqr_6(t1, t1, p384_mod, p384_mp_mod);
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
if (n != 0)
|
|
#endif
|
|
{
|
|
/* W = W*Y^4 */
|
|
sp_384_mont_mul_6(w, w, t1, p384_mod, p384_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_384_mont_sub_6(y, b, x, p384_mod);
|
|
sp_384_mont_mul_6(y, y, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(y, y, p384_mod);
|
|
sp_384_mont_sub_6(y, y, t1, p384_mod);
|
|
}
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* A = 3*(X^2 - W) */
|
|
sp_384_mont_sqr_6(t1, x, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(t1, t1, w, p384_mod);
|
|
sp_384_mont_tpl_6(a, t1, p384_mod);
|
|
/* B = X*Y^2 */
|
|
sp_384_mont_sqr_6(t1, y, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(b, t1, x, p384_mod, p384_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_384_mont_sqr_6(x, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(t2, b, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t2, p384_mod);
|
|
/* Z = Z*Y */
|
|
sp_384_mont_mul_6(z, z, y, p384_mod, p384_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_384_mont_sqr_6(t1, t1, p384_mod, p384_mp_mod);
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_384_mont_sub_6(y, b, x, p384_mod);
|
|
sp_384_mont_mul_6(y, y, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(y, y, p384_mod);
|
|
sp_384_mont_sub_6(y, y, t1, p384_mod);
|
|
#endif
|
|
/* Y = Y/2 */
|
|
sp_384_div2_6(y, y, p384_mod);
|
|
}
|
|
|
|
/* Compare two numbers to determine if they are equal.
|
|
* Constant time implementation.
|
|
*
|
|
* a First number to compare.
|
|
* b Second number to compare.
|
|
* returns 1 when equal and 0 otherwise.
|
|
*/
|
|
static int sp_384_cmp_equal_6(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]) |
|
|
(a[3] ^ b[3]) | (a[4] ^ b[4]) | (a[5] ^ b[5])) == 0;
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_384_proj_point_add_6_ctx {
|
|
int state;
|
|
sp_384_proj_point_dbl_6_ctx dbl_ctx;
|
|
const sp_point_384* ap[2];
|
|
sp_point_384* rp[2];
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* t3;
|
|
sp_digit* t4;
|
|
sp_digit* t5;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_384_proj_point_add_6_ctx;
|
|
|
|
static int sp_384_proj_point_add_6_nb(sp_ecc_ctx_t* sp_ctx, sp_point_384* r,
|
|
const sp_point_384* p, const sp_point_384* q, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_384_proj_point_add_6_ctx* ctx = (sp_384_proj_point_add_6_ctx*)sp_ctx->data;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_384* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
typedef char ctx_size_test[sizeof(sp_384_proj_point_add_6_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*6;
|
|
ctx->t3 = t + 4*6;
|
|
ctx->t4 = t + 6*6;
|
|
ctx->t5 = t + 8*6;
|
|
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* Check double */
|
|
(void)sp_384_sub_6(ctx->t1, p384_mod, q->y);
|
|
sp_384_norm_6(ctx->t1);
|
|
if ((sp_384_cmp_equal_6(p->x, q->x) & sp_384_cmp_equal_6(p->z, q->z) &
|
|
(sp_384_cmp_equal_6(p->y, q->y) | sp_384_cmp_equal_6(p->y, ctx->t1))) != 0)
|
|
{
|
|
XMEMSET(&ctx->dbl_ctx, 0, sizeof(ctx->dbl_ctx));
|
|
ctx->state = 2;
|
|
}
|
|
else {
|
|
ctx->state = 3;
|
|
}
|
|
break;
|
|
case 2:
|
|
err = sp_384_proj_point_dbl_6_nb((sp_ecc_ctx_t*)&ctx->dbl_ctx, r, p, t);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 27; /* done */
|
|
break;
|
|
case 3:
|
|
{
|
|
int i;
|
|
ctx->rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
ctx->rp[1] = (sp_point_384*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(ctx->rp[1], 0, sizeof(sp_point_384));
|
|
ctx->x = ctx->rp[p->infinity | q->infinity]->x;
|
|
ctx->y = ctx->rp[p->infinity | q->infinity]->y;
|
|
ctx->z = ctx->rp[p->infinity | q->infinity]->z;
|
|
|
|
ctx->ap[0] = p;
|
|
ctx->ap[1] = q;
|
|
for (i=0; i<6; i++) {
|
|
r->x[i] = ctx->ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->y[i] = ctx->ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->z[i] = ctx->ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ctx->ap[p->infinity]->infinity;
|
|
|
|
ctx->state = 4;
|
|
break;
|
|
}
|
|
case 4:
|
|
/* U1 = X1*Z2^2 */
|
|
sp_384_mont_sqr_6(ctx->t1, q->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
sp_384_mont_mul_6(ctx->t3, ctx->t1, q->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
sp_384_mont_mul_6(ctx->t1, ctx->t1, ctx->x, p384_mod, p384_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* U2 = X2*Z1^2 */
|
|
sp_384_mont_sqr_6(ctx->t2, ctx->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
sp_384_mont_mul_6(ctx->t4, ctx->t2, ctx->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
sp_384_mont_mul_6(ctx->t2, ctx->t2, q->x, p384_mod, p384_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_384_mont_mul_6(ctx->t3, ctx->t3, ctx->y, p384_mod, p384_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_384_mont_mul_6(ctx->t4, ctx->t4, q->y, p384_mod, p384_mp_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* H = U2 - U1 */
|
|
sp_384_mont_sub_6(ctx->t2, ctx->t2, ctx->t1, p384_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* R = S2 - S1 */
|
|
sp_384_mont_sub_6(ctx->t4, ctx->t4, ctx->t3, p384_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_384_mont_mul_6(ctx->z, ctx->z, q->z, p384_mod, p384_mp_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
sp_384_mont_mul_6(ctx->z, ctx->z, ctx->t2, p384_mod, p384_mp_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_384_mont_sqr_6(ctx->x, ctx->t4, p384_mod, p384_mp_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
sp_384_mont_sqr_6(ctx->t5, ctx->t2, p384_mod, p384_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
sp_384_mont_mul_6(ctx->y, ctx->t1, ctx->t5, p384_mod, p384_mp_mod);
|
|
ctx->state = 19;
|
|
break;
|
|
case 19:
|
|
sp_384_mont_mul_6(ctx->t5, ctx->t5, ctx->t2, p384_mod, p384_mp_mod);
|
|
ctx->state = 20;
|
|
break;
|
|
case 20:
|
|
sp_384_mont_sub_6(ctx->x, ctx->x, ctx->t5, p384_mod);
|
|
ctx->state = 21;
|
|
break;
|
|
case 21:
|
|
sp_384_mont_dbl_6(ctx->t1, ctx->y, p384_mod);
|
|
ctx->state = 22;
|
|
break;
|
|
case 22:
|
|
sp_384_mont_sub_6(ctx->x, ctx->x, ctx->t1, p384_mod);
|
|
ctx->state = 23;
|
|
break;
|
|
case 23:
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_384_mont_sub_6(ctx->y, ctx->y, ctx->x, p384_mod);
|
|
ctx->state = 24;
|
|
break;
|
|
case 24:
|
|
sp_384_mont_mul_6(ctx->y, ctx->y, ctx->t4, p384_mod, p384_mp_mod);
|
|
ctx->state = 25;
|
|
break;
|
|
case 25:
|
|
sp_384_mont_mul_6(ctx->t5, ctx->t5, ctx->t3, p384_mod, p384_mp_mod);
|
|
ctx->state = 26;
|
|
break;
|
|
case 26:
|
|
sp_384_mont_sub_6(ctx->y, ctx->y, ctx->t5, p384_mod);
|
|
ctx->state = 27;
|
|
/* fall-through */
|
|
case 27:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 27) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_384_proj_point_add_6(sp_point_384* r,
|
|
const sp_point_384* p, const sp_point_384* q, sp_digit* t)
|
|
{
|
|
const sp_point_384* ap[2];
|
|
sp_point_384* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*6;
|
|
sp_digit* t3 = t + 4*6;
|
|
sp_digit* t4 = t + 6*6;
|
|
sp_digit* t5 = t + 8*6;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_384* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
/* Check double */
|
|
(void)sp_384_sub_6(t1, p384_mod, q->y);
|
|
sp_384_norm_6(t1);
|
|
if ((sp_384_cmp_equal_6(p->x, q->x) & sp_384_cmp_equal_6(p->z, q->z) &
|
|
(sp_384_cmp_equal_6(p->y, q->y) | sp_384_cmp_equal_6(p->y, t1))) != 0) {
|
|
sp_384_proj_point_dbl_6(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_384*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_384));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<6; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_384_mont_sqr_6(t1, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t3, t1, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t1, t1, x, p384_mod, p384_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_384_mont_sqr_6(t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t4, t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t2, t2, q->x, p384_mod, p384_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_384_mont_mul_6(t3, t3, y, p384_mod, p384_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_384_mont_mul_6(t4, t4, q->y, p384_mod, p384_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_384_mont_sub_6(t2, t2, t1, p384_mod);
|
|
/* R = S2 - S1 */
|
|
sp_384_mont_sub_6(t4, t4, t3, p384_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_384_mont_mul_6(z, z, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(z, z, t2, p384_mod, p384_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_384_mont_sqr_6(x, t4, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(y, t1, t5, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(x, x, t5, p384_mod);
|
|
sp_384_mont_dbl_6(t1, y, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t1, p384_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
sp_384_mont_mul_6(y, y, t4, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, t3, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(y, y, t5, p384_mod);
|
|
}
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_384_proj_point_dbl_n_store_6(sp_point_384* r,
|
|
const sp_point_384* p, int n, int m, sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*6;
|
|
sp_digit* b = t + 4*6;
|
|
sp_digit* t1 = t + 6*6;
|
|
sp_digit* t2 = t + 8*6;
|
|
sp_digit* x = r[2*m].x;
|
|
sp_digit* y = r[(1<<n)*m].y;
|
|
sp_digit* z = r[2*m].z;
|
|
int i;
|
|
int j;
|
|
|
|
for (i=0; i<6; i++) {
|
|
x[i] = p->x[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
y[i] = p->y[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
z[i] = p->z[i];
|
|
}
|
|
|
|
/* Y = 2*Y */
|
|
sp_384_mont_dbl_6(y, y, p384_mod);
|
|
/* W = Z^4 */
|
|
sp_384_mont_sqr_6(w, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(w, w, p384_mod, p384_mp_mod);
|
|
j = m;
|
|
for (i=1; i<=n; i++) {
|
|
j *= 2;
|
|
|
|
/* A = 3*(X^2 - W) */
|
|
sp_384_mont_sqr_6(t1, x, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(t1, t1, w, p384_mod);
|
|
sp_384_mont_tpl_6(a, t1, p384_mod);
|
|
/* B = X*Y^2 */
|
|
sp_384_mont_sqr_6(t2, y, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(b, t2, x, p384_mod, p384_mp_mod);
|
|
x = r[j].x;
|
|
/* X = A^2 - 2B */
|
|
sp_384_mont_sqr_6(x, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(t1, b, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t1, p384_mod);
|
|
/* Z = Z*Y */
|
|
sp_384_mont_mul_6(r[j].z, z, y, p384_mod, p384_mp_mod);
|
|
z = r[j].z;
|
|
/* t2 = Y^4 */
|
|
sp_384_mont_sqr_6(t2, t2, p384_mod, p384_mp_mod);
|
|
if (i != n) {
|
|
/* W = W*Y^4 */
|
|
sp_384_mont_mul_6(w, w, t2, p384_mod, p384_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_384_mont_sub_6(y, b, x, p384_mod);
|
|
sp_384_mont_mul_6(y, y, a, p384_mod, p384_mp_mod);
|
|
sp_384_mont_dbl_6(y, y, p384_mod);
|
|
sp_384_mont_sub_6(y, y, t2, p384_mod);
|
|
|
|
/* Y = Y/2 */
|
|
sp_384_div2_6(r[j].y, y, p384_mod);
|
|
r[j].infinity = 0;
|
|
}
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* ra Result of addition.
|
|
* rs Result of subtraction.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_384_proj_point_add_sub_6(sp_point_384* ra,
|
|
sp_point_384* rs, const sp_point_384* p, const sp_point_384* q,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*6;
|
|
sp_digit* t3 = t + 4*6;
|
|
sp_digit* t4 = t + 6*6;
|
|
sp_digit* t5 = t + 8*6;
|
|
sp_digit* t6 = t + 10*6;
|
|
sp_digit* x = ra->x;
|
|
sp_digit* y = ra->y;
|
|
sp_digit* z = ra->z;
|
|
sp_digit* xs = rs->x;
|
|
sp_digit* ys = rs->y;
|
|
sp_digit* zs = rs->z;
|
|
|
|
|
|
XMEMCPY(x, p->x, sizeof(p->x) / 2);
|
|
XMEMCPY(y, p->y, sizeof(p->y) / 2);
|
|
XMEMCPY(z, p->z, sizeof(p->z) / 2);
|
|
ra->infinity = 0;
|
|
rs->infinity = 0;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_384_mont_sqr_6(t1, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t3, t1, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t1, t1, x, p384_mod, p384_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_384_mont_sqr_6(t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t4, t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t2, t2, q->x, p384_mod, p384_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_384_mont_mul_6(t3, t3, y, p384_mod, p384_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_384_mont_mul_6(t4, t4, q->y, p384_mod, p384_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_384_mont_sub_6(t2, t2, t1, p384_mod);
|
|
/* RS = S2 + S1 */
|
|
sp_384_mont_add_6(t6, t4, t3, p384_mod);
|
|
/* R = S2 - S1 */
|
|
sp_384_mont_sub_6(t4, t4, t3, p384_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
/* ZS = H*Z1*Z2 */
|
|
sp_384_mont_mul_6(z, z, q->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(z, z, t2, p384_mod, p384_mp_mod);
|
|
XMEMCPY(zs, z, sizeof(p->z)/2);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
/* XS = RS^2 - H^3 - 2*U1*H^2 */
|
|
sp_384_mont_sqr_6(x, t4, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(xs, t6, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(y, t1, t5, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(x, x, t5, p384_mod);
|
|
sp_384_mont_sub_6(xs, xs, t5, p384_mod);
|
|
sp_384_mont_dbl_6(t1, y, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t1, p384_mod);
|
|
sp_384_mont_sub_6(xs, xs, t1, p384_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
/* YS = -RS*(U1*H^2 - XS) - S1*H^3 */
|
|
sp_384_mont_sub_6(ys, y, xs, p384_mod);
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
sp_384_mont_mul_6(y, y, t4, p384_mod, p384_mp_mod);
|
|
sp_384_sub_6(t6, p384_mod, t6);
|
|
sp_384_mont_mul_6(ys, ys, t6, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, t3, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(y, y, t5, p384_mod);
|
|
sp_384_mont_sub_6(ys, ys, t5, p384_mod);
|
|
}
|
|
|
|
/* Structure used to describe recoding of scalar multiplication. */
|
|
typedef struct ecc_recode_384 {
|
|
/* Index into pre-computation table. */
|
|
uint8_t i;
|
|
/* Use the negative of the point. */
|
|
uint8_t neg;
|
|
} ecc_recode_384;
|
|
|
|
/* The index into pre-computation table to use. */
|
|
static const uint8_t recode_index_6_6[66] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
|
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
|
|
0, 1,
|
|
};
|
|
|
|
/* Whether to negate y-ordinate. */
|
|
static const uint8_t recode_neg_6_6[66] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
0, 0,
|
|
};
|
|
|
|
/* Recode the scalar for multiplication using pre-computed values and
|
|
* subtraction.
|
|
*
|
|
* k Scalar to multiply by.
|
|
* v Vector of operations to perform.
|
|
*/
|
|
static void sp_384_ecc_recode_6_6(const sp_digit* k, ecc_recode_384* v)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint8_t y;
|
|
int carry = 0;
|
|
int o;
|
|
sp_digit n;
|
|
|
|
j = 0;
|
|
n = k[j];
|
|
o = 0;
|
|
for (i=0; i<65; i++) {
|
|
y = (int8_t)n;
|
|
if (o + 6 < 64) {
|
|
y &= 0x3f;
|
|
n >>= 6;
|
|
o += 6;
|
|
}
|
|
else if (o + 6 == 64) {
|
|
n >>= 6;
|
|
if (++j < 6)
|
|
n = k[j];
|
|
o = 0;
|
|
}
|
|
else if (++j < 6) {
|
|
n = k[j];
|
|
y |= (uint8_t)((n << (64 - o)) & 0x3f);
|
|
o -= 58;
|
|
n >>= o;
|
|
}
|
|
|
|
y += (uint8_t)carry;
|
|
v[i].i = recode_index_6_6[y];
|
|
v[i].neg = recode_neg_6_6[y];
|
|
carry = (y >> 6) + v[i].neg;
|
|
}
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible point that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_384_get_point_33_6(sp_point_384* r, const sp_point_384* table,
|
|
int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->x[4] = 0;
|
|
r->x[5] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
r->y[4] = 0;
|
|
r->y[5] = 0;
|
|
r->z[0] = 0;
|
|
r->z[1] = 0;
|
|
r->z[2] = 0;
|
|
r->z[3] = 0;
|
|
r->z[4] = 0;
|
|
r->z[5] = 0;
|
|
for (i = 1; i < 33; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->x[4] |= mask & table[i].x[4];
|
|
r->x[5] |= mask & table[i].x[5];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
r->y[4] |= mask & table[i].y[4];
|
|
r->y[5] |= mask & table[i].y[5];
|
|
r->z[0] |= mask & table[i].z[0];
|
|
r->z[1] |= mask & table[i].z[1];
|
|
r->z[2] |= mask & table[i].z[2];
|
|
r->z[3] |= mask & table[i].z[3];
|
|
r->z[4] |= mask & table[i].z[4];
|
|
r->z[5] |= mask & table[i].z[5];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Window technique of 6 bits. (Add-Sub variation.)
|
|
* Calculate 0..32 times the point. Use function that adds and
|
|
* subtracts the same two points.
|
|
* Recode to add or subtract one of the computed points.
|
|
* Double to push up.
|
|
* NOT a sliding window.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_win_add_sub_6(sp_point_384* r, const sp_point_384* g,
|
|
const sp_digit* k, int map, int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* t = NULL;
|
|
sp_digit* tmp = NULL;
|
|
#else
|
|
sp_point_384 t[33+2];
|
|
sp_digit tmp[2 * 6 * 6];
|
|
#endif
|
|
sp_point_384* rt = NULL;
|
|
sp_point_384* p = NULL;
|
|
sp_digit* negy;
|
|
int i;
|
|
ecc_recode_384 v[65];
|
|
int err = MP_OKAY;
|
|
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_384*)XMALLOC(sizeof(sp_point_384) *
|
|
(33+2), heap, DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 6,
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
rt = t + 33;
|
|
p = t + 33+1;
|
|
|
|
/* t[0] = {0, 0, 1} * norm */
|
|
XMEMSET(&t[0], 0, sizeof(t[0]));
|
|
t[0].infinity = 1;
|
|
/* t[1] = {g->x, g->y, g->z} * norm */
|
|
err = sp_384_mod_mul_norm_6(t[1].x, g->x, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t[1].y, g->y, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t[1].z, g->z, p384_mod);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
t[1].infinity = 0;
|
|
/* t[2] ... t[32] */
|
|
sp_384_proj_point_dbl_n_store_6(t, &t[ 1], 5, 1, tmp);
|
|
sp_384_proj_point_add_6(&t[ 3], &t[ 2], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[ 6], &t[ 3], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[ 7], &t[ 5], &t[ 6], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[10], &t[ 5], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[11], &t[ 9], &t[10], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[12], &t[ 6], tmp);
|
|
sp_384_proj_point_dbl_6(&t[14], &t[ 7], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[15], &t[13], &t[14], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[18], &t[ 9], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[19], &t[17], &t[18], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[20], &t[10], tmp);
|
|
sp_384_proj_point_dbl_6(&t[22], &t[11], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[23], &t[21], &t[22], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[24], &t[12], tmp);
|
|
sp_384_proj_point_dbl_6(&t[26], &t[13], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[27], &t[25], &t[26], &t[ 1], tmp);
|
|
sp_384_proj_point_dbl_6(&t[28], &t[14], tmp);
|
|
sp_384_proj_point_dbl_6(&t[30], &t[15], tmp);
|
|
sp_384_proj_point_add_sub_6(&t[31], &t[29], &t[30], &t[ 1], tmp);
|
|
|
|
negy = t[0].y;
|
|
|
|
sp_384_ecc_recode_6_6(k, v);
|
|
|
|
i = 64;
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_point_33_6(rt, t, v[i].i);
|
|
rt->infinity = !v[i].i;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt, &t[v[i].i], sizeof(sp_point_384));
|
|
}
|
|
for (--i; i>=0; i--) {
|
|
sp_384_proj_point_dbl_n_6(rt, 6, tmp);
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_point_33_6(p, t, v[i].i);
|
|
p->infinity = !v[i].i;
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p, &t[v[i].i], sizeof(sp_point_384));
|
|
}
|
|
sp_384_sub_6(negy, p384_mod, p->y);
|
|
sp_384_norm_6(negy);
|
|
sp_384_cond_copy_6(p->y, negy, (sp_digit)0 - v[i].neg);
|
|
sp_384_proj_point_add_6(rt, rt, p, tmp);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_384_map_6(r, rt, tmp);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_384));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp != NULL)
|
|
XFREE(tmp, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* A table entry for pre-computed points. */
|
|
typedef struct sp_table_entry_384 {
|
|
sp_digit x[6];
|
|
sp_digit y[6];
|
|
} sp_table_entry_384;
|
|
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
/* Add two Montgomery form projective points. The second point has a q value of
|
|
* one.
|
|
* Only the first point can be the same pointer as the result point.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_384_proj_point_add_qz1_6(sp_point_384* r, const sp_point_384* p,
|
|
const sp_point_384* q, sp_digit* t)
|
|
{
|
|
const sp_point_384* ap[2];
|
|
sp_point_384* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*6;
|
|
sp_digit* t3 = t + 4*6;
|
|
sp_digit* t4 = t + 6*6;
|
|
sp_digit* t5 = t + 8*6;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Check double */
|
|
(void)sp_384_sub_6(t1, p384_mod, q->y);
|
|
sp_384_norm_6(t1);
|
|
if ((sp_384_cmp_equal_6(p->x, q->x) & sp_384_cmp_equal_6(p->z, q->z) &
|
|
(sp_384_cmp_equal_6(p->y, q->y) | sp_384_cmp_equal_6(p->y, t1))) != 0) {
|
|
sp_384_proj_point_dbl_6(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_384*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_384));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<6; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<6; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U2 = X2*Z1^2 */
|
|
sp_384_mont_sqr_6(t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t4, t2, z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t2, t2, q->x, p384_mod, p384_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_384_mont_mul_6(t4, t4, q->y, p384_mod, p384_mp_mod);
|
|
/* H = U2 - X1 */
|
|
sp_384_mont_sub_6(t2, t2, x, p384_mod);
|
|
/* R = S2 - Y1 */
|
|
sp_384_mont_sub_6(t4, t4, y, p384_mod);
|
|
/* Z3 = H*Z1 */
|
|
sp_384_mont_mul_6(z, z, t2, p384_mod, p384_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*X1*H^2 */
|
|
sp_384_mont_sqr_6(t1, t4, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sqr_6(t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t3, x, t5, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(x, t1, t5, p384_mod);
|
|
sp_384_mont_dbl_6(t1, t3, p384_mod);
|
|
sp_384_mont_sub_6(x, x, t1, p384_mod);
|
|
/* Y3 = R*(X1*H^2 - X3) - Y1*H^3 */
|
|
sp_384_mont_sub_6(t3, t3, x, p384_mod);
|
|
sp_384_mont_mul_6(t3, t3, t4, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t5, t5, y, p384_mod, p384_mp_mod);
|
|
sp_384_mont_sub_6(y, t3, t5, p384_mod);
|
|
}
|
|
}
|
|
|
|
#ifdef FP_ECC
|
|
/* Convert the projective point to affine.
|
|
* Ordinates are in Montgomery form.
|
|
*
|
|
* a Point to convert.
|
|
* t Temporary data.
|
|
*/
|
|
static void sp_384_proj_to_affine_6(sp_point_384* a, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 6;
|
|
sp_digit* tmp = t + 4 * 6;
|
|
|
|
sp_384_mont_inv_6(t1, a->z, tmp);
|
|
|
|
sp_384_mont_sqr_6(t2, t1, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(t1, t2, t1, p384_mod, p384_mp_mod);
|
|
|
|
sp_384_mont_mul_6(a->x, a->x, t2, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(a->y, a->y, t1, p384_mod, p384_mp_mod);
|
|
XMEMCPY(a->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
}
|
|
|
|
/* Generate the pre-computed table of points for the base point.
|
|
*
|
|
* width = 6
|
|
* 64 entries
|
|
* 64 bits between
|
|
*
|
|
* a The base point.
|
|
* table Place to store generated point data.
|
|
* tmp Temporary data.
|
|
* heap Heap to use for allocation.
|
|
*/
|
|
static int sp_384_gen_stripe_table_6(const sp_point_384* a,
|
|
sp_table_entry_384* table, sp_digit* tmp, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* t = NULL;
|
|
#else
|
|
sp_point_384 t[3];
|
|
#endif
|
|
sp_point_384* s1 = NULL;
|
|
sp_point_384* s2 = NULL;
|
|
int i;
|
|
int j;
|
|
int err = MP_OKAY;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 3, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
s1 = t + 1;
|
|
s2 = t + 2;
|
|
|
|
err = sp_384_mod_mul_norm_6(t->x, a->x, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t->y, a->y, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t->z, a->z, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t->infinity = 0;
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
|
|
XMEMCPY(s1->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
s1->infinity = 0;
|
|
XMEMCPY(s2->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
s2->infinity = 0;
|
|
|
|
/* table[0] = {0, 0, infinity} */
|
|
XMEMSET(&table[0], 0, sizeof(sp_table_entry_384));
|
|
/* table[1] = Affine version of 'a' in Montgomery form */
|
|
XMEMCPY(table[1].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1].y, t->y, sizeof(table->y));
|
|
|
|
for (i=1; i<6; i++) {
|
|
sp_384_proj_point_dbl_n_6(t, 64, tmp);
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
XMEMCPY(table[1<<i].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1<<i].y, t->y, sizeof(table->y));
|
|
}
|
|
|
|
for (i=1; i<6; i++) {
|
|
XMEMCPY(s1->x, table[1<<i].x, sizeof(table->x));
|
|
XMEMCPY(s1->y, table[1<<i].y, sizeof(table->y));
|
|
for (j=(1<<i)+1; j<(1<<(i+1)); j++) {
|
|
XMEMCPY(s2->x, table[j-(1<<i)].x, sizeof(table->x));
|
|
XMEMCPY(s2->y, table[j-(1<<i)].y, sizeof(table->y));
|
|
sp_384_proj_point_add_qz1_6(t, s1, s2, tmp);
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
XMEMCPY(table[j].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[j].y, t->y, sizeof(table->y));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC */
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_384_get_entry_64_6(sp_point_384* r,
|
|
const sp_table_entry_384* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->x[4] = 0;
|
|
r->x[5] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
r->y[4] = 0;
|
|
r->y[5] = 0;
|
|
for (i = 1; i < 64; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->x[4] |= mask & table[i].x[4];
|
|
r->x[5] |= mask & table[i].x[5];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
r->y[4] |= mask & table[i].y[4];
|
|
r->y[5] |= mask & table[i].y[5];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^64, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 6 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_stripe_6(sp_point_384* r, const sp_point_384* g,
|
|
const sp_table_entry_384* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* rt = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_384 rt[2];
|
|
sp_digit t[2 * 6 * 6];
|
|
#endif
|
|
sp_point_384* p = NULL;
|
|
int i;
|
|
int j;
|
|
int y;
|
|
int x;
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = rt + 1;
|
|
|
|
XMEMCPY(p->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
XMEMCPY(rt->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
|
|
y = 0;
|
|
x = 63;
|
|
for (j=0; j<6; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 64;
|
|
}
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_64_6(rt, table, y);
|
|
} else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(rt->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
rt->infinity = !y;
|
|
for (i=62; i>=0; i--) {
|
|
y = 0;
|
|
x = i;
|
|
for (j=0; j<6; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 64;
|
|
}
|
|
|
|
sp_384_proj_point_dbl_6(rt, rt, t);
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_64_6(p, table, y);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(p->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
p->infinity = !y;
|
|
sp_384_proj_point_add_qz1_6(rt, rt, p, t);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_384_map_6(r, rt, t);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_384));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
#ifndef FP_ENTRIES
|
|
#define FP_ENTRIES 16
|
|
#endif
|
|
|
|
/* Cache entry - holds precomputation tables for a point. */
|
|
typedef struct sp_cache_384_t {
|
|
/* X ordinate of point that table was generated from. */
|
|
sp_digit x[6];
|
|
/* Y ordinate of point that table was generated from. */
|
|
sp_digit y[6];
|
|
/* Precomputation table for point. */
|
|
sp_table_entry_384 table[64];
|
|
/* Count of entries in table. */
|
|
uint32_t cnt;
|
|
/* Point and table set in entry. */
|
|
int set;
|
|
} sp_cache_384_t;
|
|
|
|
/* Cache of tables. */
|
|
static THREAD_LS_T sp_cache_384_t sp_cache_384[FP_ENTRIES];
|
|
/* Index of last entry in cache. */
|
|
static THREAD_LS_T int sp_cache_384_last = -1;
|
|
/* Cache has been initialized. */
|
|
static THREAD_LS_T int sp_cache_384_inited = 0;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
static volatile int initCacheMutex_384 = 0;
|
|
static wolfSSL_Mutex sp_cache_384_lock;
|
|
#endif
|
|
|
|
/* Get the cache entry for the point.
|
|
*
|
|
* g [in] Point scalar multipling.
|
|
* cache [out] Cache table to use.
|
|
*/
|
|
static void sp_ecc_get_cache_384(const sp_point_384* g, sp_cache_384_t** cache)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint32_t least;
|
|
|
|
if (sp_cache_384_inited == 0) {
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
sp_cache_384[i].set = 0;
|
|
}
|
|
sp_cache_384_inited = 1;
|
|
}
|
|
|
|
/* Compare point with those in cache. */
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
if (!sp_cache_384[i].set)
|
|
continue;
|
|
|
|
if (sp_384_cmp_equal_6(g->x, sp_cache_384[i].x) &
|
|
sp_384_cmp_equal_6(g->y, sp_cache_384[i].y)) {
|
|
sp_cache_384[i].cnt++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* No match. */
|
|
if (i == FP_ENTRIES) {
|
|
/* Find empty entry. */
|
|
i = (sp_cache_384_last + 1) % FP_ENTRIES;
|
|
for (; i != sp_cache_384_last; i=(i+1)%FP_ENTRIES) {
|
|
if (!sp_cache_384[i].set) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Evict least used. */
|
|
if (i == sp_cache_384_last) {
|
|
least = sp_cache_384[0].cnt;
|
|
for (j=1; j<FP_ENTRIES; j++) {
|
|
if (sp_cache_384[j].cnt < least) {
|
|
i = j;
|
|
least = sp_cache_384[i].cnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
XMEMCPY(sp_cache_384[i].x, g->x, sizeof(sp_cache_384[i].x));
|
|
XMEMCPY(sp_cache_384[i].y, g->y, sizeof(sp_cache_384[i].y));
|
|
sp_cache_384[i].set = 1;
|
|
sp_cache_384[i].cnt = 1;
|
|
}
|
|
|
|
*cache = &sp_cache_384[i];
|
|
sp_cache_384_last = i;
|
|
}
|
|
#endif /* FP_ECC */
|
|
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_6(sp_point_384* r, const sp_point_384* g, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
#ifndef FP_ECC
|
|
return sp_384_ecc_mulmod_win_add_sub_6(r, g, k, map, ct, heap);
|
|
#else
|
|
sp_digit tmp[2 * 6 * 7];
|
|
sp_cache_384_t* cache;
|
|
int err = MP_OKAY;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
if (initCacheMutex_384 == 0) {
|
|
wc_InitMutex(&sp_cache_384_lock);
|
|
initCacheMutex_384 = 1;
|
|
}
|
|
if (wc_LockMutex(&sp_cache_384_lock) != 0)
|
|
err = BAD_MUTEX_E;
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_ecc_get_cache_384(g, &cache);
|
|
if (cache->cnt == 2)
|
|
sp_384_gen_stripe_table_6(g, cache->table, tmp, heap);
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
wc_UnLockMutex(&sp_cache_384_lock);
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (cache->cnt < 2) {
|
|
err = sp_384_ecc_mulmod_win_add_sub_6(r, g, k, map, ct, heap);
|
|
}
|
|
else {
|
|
err = sp_384_ecc_mulmod_stripe_6(r, g, cache->table, k,
|
|
map, ct, heap);
|
|
}
|
|
}
|
|
|
|
return err;
|
|
#endif
|
|
}
|
|
|
|
#else
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
/* Generate the pre-computed table of points for the base point.
|
|
*
|
|
* width = 8
|
|
* 256 entries
|
|
* 48 bits between
|
|
*
|
|
* a The base point.
|
|
* table Place to store generated point data.
|
|
* tmp Temporary data.
|
|
* heap Heap to use for allocation.
|
|
*/
|
|
static int sp_384_gen_stripe_table_6(const sp_point_384* a,
|
|
sp_table_entry_384* table, sp_digit* tmp, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* t = NULL;
|
|
#else
|
|
sp_point_384 t[3];
|
|
#endif
|
|
sp_point_384* s1 = NULL;
|
|
sp_point_384* s2 = NULL;
|
|
int i;
|
|
int j;
|
|
int err = MP_OKAY;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 3, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
s1 = t + 1;
|
|
s2 = t + 2;
|
|
|
|
err = sp_384_mod_mul_norm_6(t->x, a->x, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t->y, a->y, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_mod_mul_norm_6(t->z, a->z, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t->infinity = 0;
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
|
|
XMEMCPY(s1->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
s1->infinity = 0;
|
|
XMEMCPY(s2->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
s2->infinity = 0;
|
|
|
|
/* table[0] = {0, 0, infinity} */
|
|
XMEMSET(&table[0], 0, sizeof(sp_table_entry_384));
|
|
/* table[1] = Affine version of 'a' in Montgomery form */
|
|
XMEMCPY(table[1].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1].y, t->y, sizeof(table->y));
|
|
|
|
for (i=1; i<8; i++) {
|
|
sp_384_proj_point_dbl_n_6(t, 48, tmp);
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
XMEMCPY(table[1<<i].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1<<i].y, t->y, sizeof(table->y));
|
|
}
|
|
|
|
for (i=1; i<8; i++) {
|
|
XMEMCPY(s1->x, table[1<<i].x, sizeof(table->x));
|
|
XMEMCPY(s1->y, table[1<<i].y, sizeof(table->y));
|
|
for (j=(1<<i)+1; j<(1<<(i+1)); j++) {
|
|
XMEMCPY(s2->x, table[j-(1<<i)].x, sizeof(table->x));
|
|
XMEMCPY(s2->y, table[j-(1<<i)].y, sizeof(table->y));
|
|
sp_384_proj_point_add_qz1_6(t, s1, s2, tmp);
|
|
sp_384_proj_to_affine_6(t, tmp);
|
|
XMEMCPY(table[j].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[j].y, t->y, sizeof(table->y));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC */
|
|
#if defined(FP_ECC) || defined(WOLFSSL_SP_SMALL)
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_384_get_entry_256_6(sp_point_384* r,
|
|
const sp_table_entry_384* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->x[4] = 0;
|
|
r->x[5] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
r->y[4] = 0;
|
|
r->y[5] = 0;
|
|
for (i = 1; i < 256; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->x[4] |= mask & table[i].x[4];
|
|
r->x[5] |= mask & table[i].x[5];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
r->y[4] |= mask & table[i].y[4];
|
|
r->y[5] |= mask & table[i].y[5];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^48, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_stripe_6(sp_point_384* r, const sp_point_384* g,
|
|
const sp_table_entry_384* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* rt = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_384 rt[2];
|
|
sp_digit t[2 * 6 * 6];
|
|
#endif
|
|
sp_point_384* p = NULL;
|
|
int i;
|
|
int j;
|
|
int y;
|
|
int x;
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = rt + 1;
|
|
|
|
XMEMCPY(p->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
XMEMCPY(rt->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
|
|
y = 0;
|
|
x = 47;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 48;
|
|
}
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_256_6(rt, table, y);
|
|
} else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(rt->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
rt->infinity = !y;
|
|
for (i=46; i>=0; i--) {
|
|
y = 0;
|
|
x = i;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 48;
|
|
}
|
|
|
|
sp_384_proj_point_dbl_6(rt, rt, t);
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_256_6(p, table, y);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(p->y, table[y].y, sizeof(table[y].y));
|
|
}
|
|
p->infinity = !y;
|
|
sp_384_proj_point_add_qz1_6(rt, rt, p, t);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_384_map_6(r, rt, t);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_384));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC | WOLFSSL_SP_SMALL */
|
|
#ifdef FP_ECC
|
|
#ifndef FP_ENTRIES
|
|
#define FP_ENTRIES 16
|
|
#endif
|
|
|
|
/* Cache entry - holds precomputation tables for a point. */
|
|
typedef struct sp_cache_384_t {
|
|
/* X ordinate of point that table was generated from. */
|
|
sp_digit x[6];
|
|
/* Y ordinate of point that table was generated from. */
|
|
sp_digit y[6];
|
|
/* Precomputation table for point. */
|
|
sp_table_entry_384 table[256];
|
|
/* Count of entries in table. */
|
|
uint32_t cnt;
|
|
/* Point and table set in entry. */
|
|
int set;
|
|
} sp_cache_384_t;
|
|
|
|
/* Cache of tables. */
|
|
static THREAD_LS_T sp_cache_384_t sp_cache_384[FP_ENTRIES];
|
|
/* Index of last entry in cache. */
|
|
static THREAD_LS_T int sp_cache_384_last = -1;
|
|
/* Cache has been initialized. */
|
|
static THREAD_LS_T int sp_cache_384_inited = 0;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
static volatile int initCacheMutex_384 = 0;
|
|
static wolfSSL_Mutex sp_cache_384_lock;
|
|
#endif
|
|
|
|
/* Get the cache entry for the point.
|
|
*
|
|
* g [in] Point scalar multipling.
|
|
* cache [out] Cache table to use.
|
|
*/
|
|
static void sp_ecc_get_cache_384(const sp_point_384* g, sp_cache_384_t** cache)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint32_t least;
|
|
|
|
if (sp_cache_384_inited == 0) {
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
sp_cache_384[i].set = 0;
|
|
}
|
|
sp_cache_384_inited = 1;
|
|
}
|
|
|
|
/* Compare point with those in cache. */
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
if (!sp_cache_384[i].set)
|
|
continue;
|
|
|
|
if (sp_384_cmp_equal_6(g->x, sp_cache_384[i].x) &
|
|
sp_384_cmp_equal_6(g->y, sp_cache_384[i].y)) {
|
|
sp_cache_384[i].cnt++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* No match. */
|
|
if (i == FP_ENTRIES) {
|
|
/* Find empty entry. */
|
|
i = (sp_cache_384_last + 1) % FP_ENTRIES;
|
|
for (; i != sp_cache_384_last; i=(i+1)%FP_ENTRIES) {
|
|
if (!sp_cache_384[i].set) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Evict least used. */
|
|
if (i == sp_cache_384_last) {
|
|
least = sp_cache_384[0].cnt;
|
|
for (j=1; j<FP_ENTRIES; j++) {
|
|
if (sp_cache_384[j].cnt < least) {
|
|
i = j;
|
|
least = sp_cache_384[i].cnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
XMEMCPY(sp_cache_384[i].x, g->x, sizeof(sp_cache_384[i].x));
|
|
XMEMCPY(sp_cache_384[i].y, g->y, sizeof(sp_cache_384[i].y));
|
|
sp_cache_384[i].set = 1;
|
|
sp_cache_384[i].cnt = 1;
|
|
}
|
|
|
|
*cache = &sp_cache_384[i];
|
|
sp_cache_384_last = i;
|
|
}
|
|
#endif /* FP_ECC */
|
|
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_6(sp_point_384* r, const sp_point_384* g, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
#ifndef FP_ECC
|
|
return sp_384_ecc_mulmod_win_add_sub_6(r, g, k, map, ct, heap);
|
|
#else
|
|
sp_digit tmp[2 * 6 * 7];
|
|
sp_cache_384_t* cache;
|
|
int err = MP_OKAY;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
if (initCacheMutex_384 == 0) {
|
|
wc_InitMutex(&sp_cache_384_lock);
|
|
initCacheMutex_384 = 1;
|
|
}
|
|
if (wc_LockMutex(&sp_cache_384_lock) != 0)
|
|
err = BAD_MUTEX_E;
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_ecc_get_cache_384(g, &cache);
|
|
if (cache->cnt == 2)
|
|
sp_384_gen_stripe_table_6(g, cache->table, tmp, heap);
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
wc_UnLockMutex(&sp_cache_384_lock);
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (cache->cnt < 2) {
|
|
err = sp_384_ecc_mulmod_win_add_sub_6(r, g, k, map, ct, heap);
|
|
}
|
|
else {
|
|
err = sp_384_ecc_mulmod_stripe_6(r, g, cache->table, k,
|
|
map, ct, heap);
|
|
}
|
|
}
|
|
|
|
return err;
|
|
#endif
|
|
}
|
|
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* p Point to multiply.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_384(const mp_int* km, const ecc_point* gm, ecc_point* r,
|
|
int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_384 point[1];
|
|
sp_digit k[6];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(k, 6, km);
|
|
sp_384_point_from_ecc_point_6(point, gm);
|
|
|
|
err = sp_384_ecc_mulmod_6(point, point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_point_to_ecc_point_6(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply the point by the scalar, add point a and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* p Point to multiply.
|
|
* am Point to add to scalar mulitply result.
|
|
* inMont Point to add is in montgomery form.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_add_384(const mp_int* km, const ecc_point* gm,
|
|
const ecc_point* am, int inMont, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_384 point[2];
|
|
sp_digit k[6 + 6 * 2 * 6];
|
|
#endif
|
|
sp_point_384* addP = NULL;
|
|
sp_digit* tmp = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(
|
|
sizeof(sp_digit) * (6 + 6 * 2 * 6), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
addP = point + 1;
|
|
tmp = k + 6;
|
|
|
|
sp_384_from_mp(k, 6, km);
|
|
sp_384_point_from_ecc_point_6(point, gm);
|
|
sp_384_point_from_ecc_point_6(addP, am);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->x, addP->x, p384_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->y, addP->y, p384_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->z, addP->z, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_6(point, point, k, 0, 0, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_proj_point_add_6(point, point, addP, tmp);
|
|
|
|
if (map) {
|
|
sp_384_map_6(point, point, tmp);
|
|
}
|
|
|
|
err = sp_384_point_to_ecc_point_6(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Striping precomputation table.
|
|
* 6 points combined into a table of 64 points.
|
|
* Distance of 64 between points.
|
|
*/
|
|
static const sp_table_entry_384 p384_table[64] = {
|
|
/* 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 */
|
|
{ { 0x3dd0756649c0b528L,0x20e378e2a0d6ce38L,0x879c3afc541b4d6eL,
|
|
0x6454868459a30effL,0x812ff723614ede2bL,0x4d3aadc2299e1513L },
|
|
{ 0x23043dad4b03a4feL,0xa1bfa8bf7bb4a9acL,0x8bade7562e83b050L,
|
|
0xc6c3521968f4ffd9L,0xdd8002263969a840L,0x2b78abc25a15c5e9L } },
|
|
/* 2 */
|
|
{ { 0xa54768dab1b43eefL,0x13e41f47e14fda22L,0x774df203faef6863L,
|
|
0xf795a034bd7471b3L,0xf0958718b47de2e9L,0xc92f7888e1160cffL },
|
|
{ 0x86ded97b0146c790L,0x015918f5480a4b7bL,0x05588920424e8459L,
|
|
0x37455914eecf8b2bL,0xe7d3df1fb968a6faL,0x07a0ffd6bad0719fL } },
|
|
/* 3 */
|
|
{ { 0xda37cd535c54db6fL,0x0e37890a91f06c5cL,0x1730ef7be7ae7db5L,
|
|
0x2b3dcd51ff045f54L,0xf5db3c3c72cc8451L,0x3165d6efcf0c185cL },
|
|
{ 0x177c4f6bf5958d78L,0xcb29d22f8d676a9fL,0x3bcf0068792ac96dL,
|
|
0x60d1c6b719df5641L,0x426e412a68a099f8L,0xf9ca0c5c9f74d52bL } },
|
|
/* 4 */
|
|
{ { 0xf186d6bcc88d568aL,0x872bc4c7528535ddL,0xc9e7432edfe64dc3L,
|
|
0xd9fc4832d795ea57L,0xf4ffdb81c845af2bL,0x66d7e7882b670517L },
|
|
{ 0xa7c1be04d7b7a1c6L,0xbed88479d5b2a249L,0x62ff8aba03f2ef6dL,
|
|
0x60ecaac420dc701dL,0x9f4b559f4ff10119L,0x0582c9313cd54fd0L } },
|
|
/* 5 */
|
|
{ { 0x394fb84de86e3f64L,0xfe4a36e7ff13314eL,0xa1e44b14dc261ec2L,
|
|
0x3924e50a7420408fL,0x637e330242ed7626L,0xeb657b10fd711ba4L },
|
|
{ 0xc16d01c5340949bbL,0x30e043267f1f42c7L,0xe7465819b056d872L,
|
|
0x3386f1c6886fb3dbL,0x5be463a5be56f774L,0xa96fd3b74694e15aL } },
|
|
/* 6 */
|
|
{ { 0x95dd5ee5a98b4254L,0xea328205aa845e67L,0x98640fb5a1e36348L,
|
|
0xd1bc5c251add5ee7L,0xc3158a423d11b799L,0x5feb68ed47c83d54L },
|
|
{ 0x7c5a1204963a207bL,0x2f2b2c7eee4671f8L,0xb63d291cd42867a6L,
|
|
0x0b073620139530f4L,0xbe149492abb05b99L,0x21417da455accd2aL } },
|
|
/* 7 */
|
|
{ { 0x9408555e9e5eba15L,0x416250137b7572c5L,0xfa53ee50bfff6ea7L,
|
|
0x3d682de1e7b178c3L,0xb3e8769dec329f53L,0x1ab8c82e9eb524f4L },
|
|
{ 0x5bbd538dde2f1eb9L,0x1d1b0bea2b19c51eL,0xf785f9b98cb06eeeL,
|
|
0x5cff29c6f58f21d5L,0x44aaa52245cbaef3L,0xd60c19427de40246L } },
|
|
/* 8 */
|
|
{ { 0x378205de2f9fbe67L,0xc4afcb837f728e44L,0xdbcec06c682e00f1L,
|
|
0xf2a145c3114d5423L,0xa01d98747a52463eL,0xfc0935b17d717b0aL },
|
|
{ 0x9653bc4fd4d01f95L,0x9aa83ea89560ad34L,0xf77943dcaf8e3f3fL,
|
|
0x70774a10e86fe16eL,0x6b62e6f1bf9ffdcfL,0x8a72f39e588745c9L } },
|
|
/* 9 */
|
|
{ { 0x73ade4da2341c342L,0xdd326e54ea704422L,0x336c7d983741cef3L,
|
|
0x1eafa00d59e61549L,0xcd3ed892bd9a3efdL,0x03faf26cc5c6c7e4L },
|
|
{ 0x087e2fcf3045f8acL,0x14a65532174f1e73L,0x2cf84f28fe0af9a7L,
|
|
0xddfd7a842cdc935bL,0x4c0f117b6929c895L,0x356572d64c8bcfccL } },
|
|
/* 10 */
|
|
{ { 0x984a6aed6420bc66L,0x6d90e0e0896a24a6L,0xe0adb93a18713003L,
|
|
0xf00d424c1a8369fcL,0x636ebf14712ae802L,0xee39ff8ebe9d739aL },
|
|
{ 0xb330dd3e94f6d1dcL,0x6ba6780eb7731cf8L,0x4e569408198be5a2L,
|
|
0x6639523b0193a22cL,0x6978cc9d91aa1455L,0x62062d8f329f9763L } },
|
|
/* 11 */
|
|
{ { 0x7159107d80efff78L,0xf8ed5f8e8e4c39d5L,0x64a2265cc15e679cL,
|
|
0xfc514e17a6d96c81L,0x59c86545f093e0a8L,0x804b0a588b5a336aL },
|
|
{ 0x94c32118cb9dcbcaL,0x2deb0e385d45251dL,0xd1092b0986869572L,
|
|
0x073bf838fb2e9f97L,0x76b6d7d6de700fcbL,0xd2a6d110f2ddce5fL } },
|
|
/* 12 */
|
|
{ { 0x6da7ccd0229de19eL,0x5050d45df0aa039dL,0xf9f01d68d9e7a861L,
|
|
0x6d8b9f2000aa05f2L,0xae3d9698742cd4d9L,0x43e477abd560c394L },
|
|
{ 0x73d594991cb6dd81L,0x689162b2fac3f62eL,0xd6187ca864d1d0d5L,
|
|
0xe8421a0d2f067457L,0x9b266acbea7c3a8dL,0x707e0e6e44df5cb3L } },
|
|
/* 13 */
|
|
{ { 0x604b2a1a026511a0L,0xd4f6cf16256f4076L,0x7d823347b315a642L,
|
|
0x8f805833786aa438L,0x9883df85f04bb4b3L,0x02bc10305bba6d84L },
|
|
{ 0xfe39a024a72c03acL,0xa980db635f2dbfd0L,0xcd53149f4f259ec6L,
|
|
0xe969079b43f53f97L,0xd3849fdb42f9f27cL,0xd2cfd3f842653dc9L } },
|
|
/* 14 */
|
|
{ { 0xbf69fe6a6abe7d80L,0x4932288192bb50e2L,0xc9e2f7fb61e8b18dL,
|
|
0x24c74788f6c82421L,0xe79e5e3011c0b244L,0xd6612c70e0484571L },
|
|
{ 0x7863ff927ef82d17L,0x692790feb0a1b01cL,0xa2d6ffb5afe51546L,
|
|
0xacdb43f26cf550c6L,0x3b3243dfaecfaf8fL,0x9557335ac233bcd9L } },
|
|
/* 15 */
|
|
{ { 0x25e08c8faff5b387L,0x112c11e2d06208ceL,0x61031c1765234214L,
|
|
0xba06f5550514764dL,0xfaacf6f39bd197d0L,0xe4b032321464a57fL },
|
|
{ 0x00c19adfe35dcd69L,0x81b75730a1c2646cL,0x47baa4fee0c50e32L,
|
|
0xe9297832bcaddb3bL,0x1768d2f9d712c6cfL,0xfcef29fdb82e9eeaL } },
|
|
/* 16 */
|
|
{ { 0xdbe04c3044ce3ad8L,0x995fbb1b4ce8aad5L,0xdbf8b54670911457L,
|
|
0x9e683b5b3f7a1757L,0x7b89a08a9c7bd62cL,0x448865a40b3fc97eL },
|
|
{ 0x0ac9abfc3bb01e94L,0xa07760421e756124L,0x0aa6c335d9deed97L,
|
|
0xe270580f72603e08L,0x70857a946c783bb2L,0xa0047774caa929aeL } },
|
|
/* 17 */
|
|
{ { 0x56211190a353e889L,0x052917c3190eb198L,0xadfd85b03eee3d12L,
|
|
0xde1d761779fd9c91L,0x05be51b7bf500159L,0x271f07178fcb87f1L },
|
|
{ 0x02673e273a75ac71L,0xb1b7246eda12da8dL,0xb25647928f5fb8c0L,
|
|
0x0a22cbe1063b1d7fL,0xb0d7a7365649976eL,0x8f8e6e289e96b15dL } },
|
|
/* 18 */
|
|
{ { 0x8fc113f98312351cL,0xe837b9e0c5eff002L,0x7cb9ef074dad72fcL,
|
|
0x18a8d43eb5eb7ee3L,0x2cf3ae844925efdbL,0x376e9e857756ec6aL },
|
|
{ 0xf77a79c8a3e3705fL,0x2d590b7d6c5fbab3L,0xa59713e27a4766c3L,
|
|
0xb5da6a6861544174L,0xadb04a8adab1fe76L,0x03b6138d375143b4L } },
|
|
/* 19 */
|
|
{ { 0x20d88a80c1bfa043L,0x88806999672583ceL,0x195a89eaaea9b605L,
|
|
0x0b9b4e8532bac07bL,0x8279965683868df6L,0x83c58afab52711a9L },
|
|
{ 0xb895c13d1c869283L,0x00f98d046206dde6L,0x76caaa22884bf311L,
|
|
0x22b2137f995b29a5L,0x7f645809b098b07bL,0xa540c8a6050e2552L } },
|
|
/* 20 */
|
|
{ { 0x47980509e562d904L,0xe736f89d031e112cL,0xbc6bfb0765d8ae25L,
|
|
0xe9ed4cc4ca459646L,0xf540e90e2fff67ffL,0x836280eb1a314e11L },
|
|
{ 0xa710b25041610627L,0xefc22b1573a9f9a2L,0x60f20789456498c0L,
|
|
0x417920438052f4e7L,0x5c850903d5c0e80dL,0x52df5275bf1d8815L } },
|
|
/* 21 */
|
|
{ { 0x25539de98ece218dL,0xb36574a8dca420baL,0x9d1812680e0d07feL,
|
|
0xea79a5f5ad3ed34fL,0x8b739ad57c9277cfL,0xd88659886ee9a930L },
|
|
{ 0xaf07bfb621591a3eL,0xe0138c6508f3524fL,0xd3128f1297ee315eL,
|
|
0x67f8641e21045f63L,0x3e1a96b140c73a2dL,0x8976b70305f51122L } },
|
|
/* 22 */
|
|
{ { 0xdeaf635731960db4L,0x680b054e5948d7f7L,0x0841e40fd272bb5cL,
|
|
0x94d37db26e36117dL,0xaf2d001547f63ec8L,0x82665cdc47493309L },
|
|
{ 0xfe90e844abbe3851L,0x8357709afb79bc0cL,0x811a64d2b6bcc044L,
|
|
0x1937c988882b3415L,0xe8b28724e267b271L,0x84d1eed0af89ed33L } },
|
|
/* 23 */
|
|
{ { 0x52b8234f54c894a7L,0xfe54146fa2d11b70L,0x6412b5eb0aab6097L,
|
|
0xa62499906a13a9daL,0xd2b1eb50adc448caL,0xe7ab51f9b115ab92L },
|
|
{ 0x4638ee62e76551d8L,0x74c3c1e1afe9c98dL,0x59000ad060d77322L,
|
|
0x0a4b105ba06adc9aL,0xcdaeb4a496a6f616L,0x8c79c4a1864b49dcL } },
|
|
/* 24 */
|
|
{ { 0xc09c32d1c0b1bf15L,0x005d510f88d74e44L,0x031f9a9afc2c089eL,
|
|
0x08aac7294ba183f0L,0xf227a7ceaf2245ebL,0xb4ec33cbb3a864ffL },
|
|
{ 0xdb76decd570a24f3L,0xea59387a12283a9eL,0x81b7c569341ef9a4L,
|
|
0xad7c98bd8d77833aL,0x2182133b49ca80ffL,0x1de1d456085802b7L } },
|
|
/* 25 */
|
|
{ { 0xeead25b2e1c02860L,0xb2ae43694ff42d2eL,0x4b39a2ddfd61c1b0L,
|
|
0x29c826ea968718a5L,0x877fdf15d9751a0aL,0x00b321dfb54affdfL },
|
|
{ 0x3c7c0778d4d5dbf7L,0x858a0fdccfc47423L,0xbd8e6544185b3063L,
|
|
0xa22c3ef62da46a04L,0x5c2d84016a6c0ce1L,0x260246eddd6329aeL } },
|
|
/* 26 */
|
|
{ { 0x71753fc00c6463f6L,0x7ec14c015c6c9e33L,0x28b9ab9441ce6153L,
|
|
0x3a1ac251a6702c8dL,0x2b124bc49ed6cb1fL,0x7a11c4be4fc7383fL },
|
|
{ 0x1414913509fac991L,0xf7c188d3cb1ee336L,0x754bc47391c3f406L,
|
|
0x71d34587cad39500L,0x213dd1a7dd0399a1L,0x8457a8f671d05899L } },
|
|
/* 27 */
|
|
{ { 0xa921ca662e9c06d3L,0x1d8974e89ba6521fL,0xbb465c775f79f791L,
|
|
0x8f983f083a3954c8L,0x8492f8398b3935dcL,0x2b87d9c290c04426L },
|
|
{ 0xcec76ea403e60a28L,0x648e9830aa631308L,0x7b542f791eb86b73L,
|
|
0xfc8cc9a3150d854dL,0x2be86940bfcc83feL,0x2e58a13ac88c7585L } },
|
|
/* 28 */
|
|
{ { 0x19249a8fd1bc237fL,0xdec1c6a563505555L,0xc8256977bad2a93bL,
|
|
0x78533659fc598170L,0x888a6578ee7e53cbL,0x28783b0e33766db3L },
|
|
{ 0xcf791e56e42c28f2L,0xfbf8dde8f9c37f4cL,0xf0ffaf1712c05395L,
|
|
0xd27d21e9daf2f012L,0xf90432da9a7be009L,0xa459c036a8012f28L } },
|
|
/* 29 */
|
|
{ { 0x4d99a7cac8b1c6d4L,0x8088818825c899c0L,0xbd27e9be2ebdeb3dL,
|
|
0x73c3e0aa054e77c1L,0x180c848498534ce5L,0x750d52f754ffa9cdL },
|
|
{ 0x5f26eeb16f702f4cL,0x427fc6e4cc76d8f4L,0x93126b8d026b631dL,
|
|
0x5356b93917e145a7L,0xc79ca872c0be7c84L,0x3fca7cad4b615fb7L } },
|
|
/* 30 */
|
|
{ { 0xed48fe78d0241021L,0x252b14a0142f7f8eL,0x19ab85c6db573a09L,
|
|
0x546c3960f3df906fL,0xc688f4b22c810ea8L,0xbccf0cca5ff9e108L },
|
|
{ 0x34f4609e3f2cc69bL,0xf3b1efe414afe4f4L,0x5d809cef37a8ef74L,
|
|
0xa8d1978a176ba328L,0x75dde11fdf59ecb9L,0x34eeeaffa9916ee2L } },
|
|
/* 31 */
|
|
{ { 0xe7f603f248e83c85L,0xa94a539cfa581815L,0x5a61a596dba360b7L,
|
|
0x6cc51dd16a77ef79L,0x4ff36ae0fdbceb9dL,0xfcff65323e8a9c07L },
|
|
{ 0x0ba0ce5436d4d0b8L,0x98087a452464efc2L,0xd456843bcc1a2ba7L,
|
|
0x677384a53853e04cL,0x625d32d56c7971deL,0x86882509f724b331L } },
|
|
/* 32 */
|
|
{ { 0xc20fb9111a42e5e7L,0x075a678b81d12863L,0x12bcbc6a5cc0aa89L,
|
|
0x5279c6ab4fb9f01eL,0xbc8e178911ae1b89L,0xae74a706c290003cL },
|
|
{ 0x9949d6ec79df3f45L,0xba18e26296c8d37fL,0x68de6ee2dd2275bfL,
|
|
0xa9e4fff8c419f1d5L,0xbc759ca4a52b5a40L,0xff18cbd863b0996dL } },
|
|
/* 33 */
|
|
{ { 0x684a681892a5eeeaL,0x1f5b193242a09264L,0x30bd8695d98a2f34L,
|
|
0x6e775e019a8601fcL,0x8126bdc24ca956f8L,0x149e73d9e5595daaL },
|
|
{ 0x876428401f851e83L,0x4b8863dbd3a7c4a0L,0xe1e43b3d8c95d7d9L,
|
|
0x7f1e307ea60fd528L,0xbf2fa5d134341610L,0x11ad4a8181c502d3L } },
|
|
/* 34 */
|
|
{ { 0xc7df022e782dd401L,0xd15aa9a9a7bcc543L,0x6aa42774b94df1d0L,
|
|
0xab2660c30592a13eL,0xaf4e40809ffc40c7L,0x01152c8d9cd52b10L },
|
|
{ 0x649de1d99034a33aL,0x2b9d0ef0d758abfcL,0xdddd0bc2d458adddL,
|
|
0xe5366ac9c09837f8L,0xa003abbb7b1ae35fL,0x880062887ab1fddeL } },
|
|
/* 35 */
|
|
{ { 0x6b6c8f055288f1b4L,0xba05407c033738b4L,0x26cac3a941a955e3L,
|
|
0x28f1692f8e0e0601L,0x2032cb36842c4887L,0x6adeba457d76b20fL },
|
|
{ 0xd282c2ce654c6f5cL,0x30584ca5be9ba4f1L,0x45d766a01b2c528bL,
|
|
0xe918bad7c0c6f8ccL,0x1e050b2a0560f070L,0x4fc95de12d6dd010L } },
|
|
/* 36 */
|
|
{ { 0x2bb26072150191d5L,0xea2617618108dcf6L,0x4dfa1303e6083c63L,
|
|
0xfa4e0709e2876fb8L,0xf901fed0b1668763L,0xf01c53aeb82c967aL },
|
|
{ 0xb43e59d39ed827e8L,0xb58e157e57774eefL,0x57ee54e31b83dceeL,
|
|
0x3d896f32613aa922L,0x69d40667b5c7bfc5L,0xd402b5cb77a2c0d8L } },
|
|
/* 37 */
|
|
{ { 0xabeb70127d3c9923L,0x412ada8dd7ecb93aL,0xeb64dc910b71ae2fL,
|
|
0x52ef537aa9ab061aL,0x0863970fc1b55faeL,0xfaff5fb9b1182dbdL },
|
|
{ 0x5551d6fed0abaa17L,0x7bb3e02072d641f6L,0x939d7793aa9d288cL,
|
|
0x1450f8bf9078e2c2L,0x24ccd102a086b6aeL,0x57d1796f6a3f8a5fL } },
|
|
/* 38 */
|
|
{ { 0x1023120683ce1f76L,0xd16d4b9f03ee406fL,0x9d39c39883caa4b7L,
|
|
0x875732f5ce299b93L,0x1e6a425d2f121f4aL,0x4b1f1d835d8c3279L },
|
|
{ 0xe655f58856dd6a6cL,0x23f106475843fd34L,0x932b7d942bad6ce2L,
|
|
0x70a0580e6772a52eL,0x3240118ac88537afL,0x9ccb2ca9d2407224L } },
|
|
/* 39 */
|
|
{ { 0xa6a40db8710f2324L,0xb3567518c2a8a09aL,0x8816442841b5650aL,
|
|
0x2a352ed27570ba50L,0x23ee46b94c85d77eL,0x643aceffd858a8c3L },
|
|
{ 0xe067908de3f02e82L,0x8d5869f2ffb8cf81L,0x4713f0820bc8ad7eL,
|
|
0xe1ee44c780057c40L,0xb34395087d2cf34eL,0x4307b0e10336a207L } },
|
|
/* 40 */
|
|
{ { 0xe9c1e45746e4d003L,0xa23978c394332057L,0x0e2f300829575db6L,
|
|
0x50a51ff490441e9eL,0x38ce3ed0508d4a07L,0x6a997411cfd7224eL },
|
|
{ 0x4d147c31da6b1e1dL,0xedf604b2da8a3547L,0x7a1b8cf0d5e9ceedL,
|
|
0xd74e501213544e6aL,0xcc49f8da4ad968f9L,0xfb87e604cc69ada9L } },
|
|
/* 41 */
|
|
{ { 0xde79409bdf166882L,0xd645b836d46cc527L,0xda4a02f3b6c3eb28L,
|
|
0x845e3c5900e7cf86L,0x733bdc9b604c6d80L,0xe3a1244b847acd97L },
|
|
{ 0x421312d6d128842cL,0x81f71feaa1c598efL,0xc619465545eaf796L,
|
|
0x1ffb85121f338b6cL,0xe7aed7106632f064L,0xf8d1ffb7f5b6e510L } },
|
|
/* 42 */
|
|
{ { 0x7d3f031f3eace851L,0xef43ab7025923624L,0xbae811881af6cdecL,
|
|
0xb7e93b49ea862112L,0xe35a4fc6af23aba2L,0xc52e1fc0aecc593eL },
|
|
{ 0xbffa292428148b99L,0xd08040fc89e3d795L,0x7da320032db47b3aL,
|
|
0xe78b44e5a0eb7aa3L,0xd1648ec8f0ec090bL,0x4048dba7740fe871L } },
|
|
/* 43 */
|
|
{ { 0x6fddb89fa00a14acL,0x844f991508aa06e7L,0x6d5ac4a9f76aca7dL,
|
|
0xfba1ba85e9fa4d51L,0x159633bbb2ea0fc7L,0xa2eb0e4b76ba2854L },
|
|
{ 0x8a858155c11f5398L,0x30a96e535e8ea044L,0x696210c197e05a47L,
|
|
0x86e55f9415036f4bL,0x0c93ea9c6a96d9d7L,0xb7ba506179eba3daL } },
|
|
/* 44 */
|
|
{ { 0xd305c733cd94d7b2L,0x9ea33e363e7955b2L,0x78a98855bc73812fL,
|
|
0xfb1b791d48a3a9a0L,0x6e5107ee04014aafL,0x0412b2c00ea07de0L },
|
|
{ 0xdd3a2408ddcaca68L,0x5d18e69ae3344f29L,0x3ce65481f9017408L,
|
|
0x50abb4568cbd64fbL,0x442fa5098916a9ebL,0x16b3ddc7c538c410L } },
|
|
/* 45 */
|
|
{ { 0x6757dbfd25e331abL,0x0efde50ba3eaafbcL,0x1cd46222d531d29cL,
|
|
0x1b713ca93561cb2bL,0x7d07334bfb5bc99dL,0x95dba43e885a417dL },
|
|
{ 0x1c9c3f3f77823a59L,0x43533ba83220cb7fL,0x1b918bc182e3e401L,
|
|
0x66a039aacd3fec87L,0x1d39dbb02dad36d5L,0x554025959dc04be4L } },
|
|
/* 46 */
|
|
{ { 0xdf39920847744933L,0x4264f7ea82524dd6L,0xdb57ec08e5182c6dL,
|
|
0x2d6778e705c5e7bfL,0x3f37793f96f53ea2L,0x6472cbae05c47e48L },
|
|
{ 0x9e6dd60fbf78067cL,0xa2817ec2cef34088L,0xde4715b8168edde9L,
|
|
0x6c57105146bf31e1L,0x98113fbbc4272bc0L,0x03bb7922cc3b90c3L } },
|
|
/* 47 */
|
|
{ { 0xe0f23be157d88fefL,0x4125c55b0ca27a01L,0xeadf527e14a71262L,
|
|
0x1f2e803ccc4e9a04L,0x32e07b47d68c4fcfL,0x1577fab79db5070bL },
|
|
{ 0xd786d6e57831990aL,0xf64ff4b154fbde40L,0x4bac5b034f9450aeL,
|
|
0x06ae25e055116af9L,0x33d84ea2d7b4fcfcL,0x44a92e73569c3b9eL } },
|
|
/* 48 */
|
|
{ { 0xf5bdccbabad0cb7fL,0x370f43ca958edd05L,0x3dd8232b04904a26L,
|
|
0x3f8106682f4458e8L,0xdfcb67b99b3ace7eL,0x54e42f2d3e1241fcL },
|
|
{ 0xe30f3fb0db889300L,0x4ca0184b483e51fcL,0x5a32d097a638dac6L,
|
|
0x567a2b5ec62a1db0L,0x2a756ba3c446456cL,0x6919026dd9f8d5c0L } },
|
|
/* 49 */
|
|
{ { 0x7f6493fc4fec874aL,0x8bb8a674d47a0770L,0x90bad2a652bd4f0cL,
|
|
0x16badbe2f5733b07L,0x93be07cf93a1f802L,0x1e37a01541c395f7L },
|
|
{ 0xfe2c0fd6216582b3L,0xdcd98bc81627180dL,0x41e037268e8c9f1eL,
|
|
0x93dbc22cfe8f45afL,0x5728c8a6ff45e059L,0x4f2f15cfca4a98cdL } },
|
|
/* 50 */
|
|
{ { 0xdbe2ec5d656e7d76L,0x84ad1b4bae2757bbL,0xc9297e7a0d4fec75L,
|
|
0xfcc673eecad3ba87L,0xb0f77621dfd1671aL,0x5c386e449704a8c7L },
|
|
{ 0xce78f03f3e29256dL,0x0b185938c3a6ed2fL,0x7b1e2fae7824819bL,
|
|
0x5a85d7f1f2d9313cL,0x238bd27973595b0fL,0x5fbf6b675c1cd2dcL } },
|
|
/* 51 */
|
|
{ { 0x84d1ffb88a3e2412L,0xf01605926515f2feL,0x0e26ea9889905340L,
|
|
0xbfd7a1b7203bd3d4L,0x5301273a88ea0bdaL,0x2f424475b28dd43eL },
|
|
{ 0x31014a2b33c28afaL,0xffbdea0c01e220eaL,0x681c64e8460b81d5L,
|
|
0xdbe6f7286a91e1d5L,0x068bf36332619ad5L,0x4946291f27976c74L } },
|
|
/* 52 */
|
|
{ { 0xa081a9462068e4b0L,0x1a8f5df609bfdad0L,0x5fbba5bcef28dd35L,
|
|
0xa3e60d4f031ff71eL,0x2d47689b702ca18eL,0xd283f247c9b8e66bL },
|
|
{ 0x63e65dd7859ea140L,0x123da61f42aacdc3L,0xa8a9e893336f680cL,
|
|
0x1cc4e12ac23d43acL,0x421e80d586a1fff8L,0x833d60d543deecc9L } },
|
|
/* 53 */
|
|
{ { 0x3c25b57c29014f8fL,0xa19fcb1e35d8e122L,0x916c0e3ceda32ac8L,
|
|
0x9a23d289f36b6096L,0x5099038439a39871L,0xdc5b77b661c64196L },
|
|
{ 0x5a7d9917942bf2b6L,0xd21853934f41cf6dL,0x90ff1016fcc45c2fL,
|
|
0x9891093deb8938aaL,0xe3c49b1baac4e6e9L,0x0f21a1d1d7a8e91eL } },
|
|
/* 54 */
|
|
{ { 0x3a808e336f364b7eL,0x6a96d1b8bfa17359L,0x3387ec8552b36545L,
|
|
0x2fde350af712180cL,0x9219d6f4703a2183L,0x8ba27e0086457946L },
|
|
{ 0x7446bca0ed80a9afL,0xbaf78b6f7203637aL,0x0304129d497c9d0fL,
|
|
0x6df1e0356a883b68L,0x93ea2bb5e8018c47L,0xc86fd77cdb46443cL } },
|
|
/* 55 */
|
|
{ { 0x8de865d255dc2427L,0x74f7f83d6f72d126L,0xee1111786c7e665aL,
|
|
0x272a8b3dddf44f12L,0xad3546449164eb4fL,0x2ffbdb586859d68fL },
|
|
{ 0xbefd36c509701865L,0x63c256162c983d01L,0x15a7ba0b2eb68703L,
|
|
0x3318a82b5bb0fafcL,0x8e930fa9a0804f38L,0xb7459eb6be60ed1dL } },
|
|
/* 56 */
|
|
{ { 0xace01c514260b948L,0x04a6080f49210f78L,0x0d1eef6b2241b00dL,
|
|
0x85a25069ef63912aL,0xcc96c4ec13dd8bc2L,0x90f14d1140d7e234L },
|
|
{ 0xae33f18ca69c8dc3L,0x76921f2a9adfa431L,0x18158ccf048c9f49L,
|
|
0x90bcf7fbfb8fb345L,0x0d50b4dc38b3ff5dL,0x3914ea0b59ef84a8L } },
|
|
/* 57 */
|
|
{ { 0x4929d3f9d4e37cf3L,0x622183d1b24c24c0L,0x65cec0675f904d34L,
|
|
0x65f9931a8a6f76faL,0xeed975b0e73282f2L,0xa045552a5e1625fdL },
|
|
{ 0xfd6b3e02f8fe8e42L,0x5f9f40256203907cL,0x8307eedb42b2c264L,
|
|
0x2fb3ee719f757e92L,0x4502f2ecdc157ea8L,0xd976e7755d1cc0d5L } },
|
|
/* 58 */
|
|
{ { 0xe46fb9a28fe1946eL,0xe91df3ed63bdde6eL,0x2e995306e9c28432L,
|
|
0x7b3a6fe10988235bL,0xc55199f077f92a71L,0x47dd034853cb7950L },
|
|
{ 0xead52de2b727a6d1L,0xb87c9f75eea9c8daL,0xf3e2f3280d944f21L,
|
|
0xce82734edd751eddL,0xfb83225ce616cedcL,0x15850e4b4a31eb49L } },
|
|
/* 59 */
|
|
{ { 0x92c4b6d50196ad3aL,0x0205ea484e1205e4L,0x8e08a97c0afc5affL,
|
|
0xda8687c6727827ebL,0x2eace83106e398aaL,0x3a086c0f6d69e4e8L },
|
|
{ 0x5ff9b7aaf286e62aL,0xc428503962aae55eL,0x4ebd4258d9530a3fL,
|
|
0x57ea313a8afc7fcbL,0x6d30a67522c18879L,0xd3c00cc994afb659L } },
|
|
/* 60 */
|
|
{ { 0x53ee47c5dee0d48bL,0xbd9e84ad9dfa2397L,0x2d581e12f81ba5e2L,
|
|
0x26269f4f132cd325L,0x9e6224df58860a5fL,0x9306c607ff55522aL },
|
|
{ 0xb48af6d4146950e5L,0x09920ed00436805eL,0x3a1bc276cdce7eaeL,
|
|
0x55ba728ac39a425eL,0x6a04d4e6d961d03eL,0x13891c66736e684aL } },
|
|
/* 61 */
|
|
{ { 0x7c75175a04cd04d6L,0xb76f9bd909c27a17L,0xa0cff6d408e5fe36L,
|
|
0xc9097695dcd5ef90L,0x26bea24585e28054L,0x658e03c61580f068L },
|
|
{ 0x0da9f75e811eed27L,0x086e5e04aca0d2eeL,0xd4c157faa53a6787L,
|
|
0x2e9266d2b40a595cL,0x8f1cb52698fa0820L,0x32a74240a1aef514L } },
|
|
/* 62 */
|
|
{ { 0xeb42e3d91ae86e7cL,0xd6956c8ce04a5026L,0x4c0b8b980f4302ebL,
|
|
0xde43c938b37211fdL,0x9fa6a158e7090f80L,0x5f3c9afc73c47fb6L },
|
|
{ 0x2dc4f109f850a4d0L,0x56e63a4b6fd49d6aL,0x8e80a0694cbff048L,
|
|
0x18d8b8cf2284afb0L,0x61dd086dc89363a1L,0x034c2202c37342a4L } },
|
|
/* 63 */
|
|
{ { 0x1ae0c4e11c718580L,0x303f48a6bf99a0bfL,0xa5551e4491ae219fL,
|
|
0xdc41d9bd55a05287L,0xd5aa73e36872b123L,0x6fd94b0ce6395bf6L },
|
|
{ 0xbb95fdbac00afbc1L,0x9cd96208497cac10L,0x8adbd8c1ca51afeaL,
|
|
0x94fedafbf3bc5f5fL,0x29c0217bdf9f5371L,0x5c13eb4bd9024634L } },
|
|
};
|
|
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^64, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 6 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_base_6(sp_point_384* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_384_ecc_mulmod_stripe_6(r, &p384_base, p384_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#else
|
|
/* Striping precomputation table.
|
|
* 8 points combined into a table of 256 points.
|
|
* Distance of 48 between points.
|
|
*/
|
|
static const sp_table_entry_384 p384_table[256] = {
|
|
/* 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 */
|
|
{ { 0x3dd0756649c0b528L,0x20e378e2a0d6ce38L,0x879c3afc541b4d6eL,
|
|
0x6454868459a30effL,0x812ff723614ede2bL,0x4d3aadc2299e1513L },
|
|
{ 0x23043dad4b03a4feL,0xa1bfa8bf7bb4a9acL,0x8bade7562e83b050L,
|
|
0xc6c3521968f4ffd9L,0xdd8002263969a840L,0x2b78abc25a15c5e9L } },
|
|
/* 2 */
|
|
{ { 0x298647532b0c535bL,0x90dd695370506296L,0x038cd6b4216ab9acL,
|
|
0x3df9b7b7be12d76aL,0x13f4d9785f347bdbL,0x222c5c9c13e94489L },
|
|
{ 0x5f8e796f2680dc64L,0x120e7cb758352417L,0x254b5d8ad10740b8L,
|
|
0xc38b8efb5337dee6L,0xf688c2e194f02247L,0x7b5c75f36c25bc4cL } },
|
|
/* 3 */
|
|
{ { 0xe26a3cc39edffea5L,0x35bbfd1c37d7e9fcL,0xf0e7700d9bde3ef6L,
|
|
0x0380eb471a538f5aL,0x2e9da8bb05bf9eb3L,0xdbb93c731a460c3eL },
|
|
{ 0x37dba260f526b605L,0x95d4978efd785537L,0x24ed793aed72a04aL,
|
|
0x2694837776005b1aL,0x99f557b99e681f82L,0xae5f9557d64954efL } },
|
|
/* 4 */
|
|
{ { 0x24480c57f26feef9L,0xc31a26943a0e1240L,0x735002c3273e2bc7L,
|
|
0x8c42e9c53ef1ed4cL,0x028babf67f4948e8L,0x6a502f438a978632L },
|
|
{ 0xf5f13a46b74536feL,0x1d218babd8a9f0ebL,0x30f36bcc37232768L,
|
|
0xc5317b31576e8c18L,0xef1d57a69bbcb766L,0x917c4930b3e3d4dcL } },
|
|
/* 5 */
|
|
{ { 0x11426e2ee349ddd0L,0x9f117ef99b2fc250L,0xff36b480ec0174a6L,
|
|
0x4f4bde7618458466L,0x2f2edb6d05806049L,0x8adc75d119dfca92L },
|
|
{ 0xa619d097b7d5a7ceL,0x874275e5a34411e9L,0x5403e0470da4b4efL,
|
|
0x2ebaafd977901d8fL,0x5e63ebcea747170fL,0x12a369447f9d8036L } },
|
|
/* 6 */
|
|
{ { 0x28f9c07a4fc52870L,0xce0b37481a53a961L,0xd550fa180e1828d9L,
|
|
0xa24abaf76adb225aL,0xd11ed0a56e58a348L,0xf3d811e6948acb62L },
|
|
{ 0x8618dd774c61ed22L,0x0bb747f980b47c9dL,0x22bf796fde6b8559L,
|
|
0xfdfd1c6d680a21e9L,0xc0db15772af2c9ddL,0xa09379e6c1e90f3dL } },
|
|
/* 7 */
|
|
{ { 0x386c66efe085c629L,0x5fc2a461095bc89aL,0x1353d631203f4b41L,
|
|
0x7ca1972b7e4bd8f5L,0xb077380aa7df8ce9L,0xd8a90389ee7e4ea3L },
|
|
{ 0x1bc74dc7e7b14461L,0xdc2cb0140c9c4f78L,0x52b4b3a684ef0a10L,
|
|
0xbde6ea5d20327fe2L,0xb71ec435660f9615L,0xeede5a04b8ad8173L } },
|
|
/* 8 */
|
|
{ { 0x5584cbb3893b9a2dL,0x820c660b00850c5dL,0x4126d8267df2d43dL,
|
|
0xdd5bbbf00109e801L,0x85b92ee338172f1cL,0x609d4f93f31430d9L },
|
|
{ 0x1e059a07eadaf9d6L,0x70e6536c0f125fb0L,0xd6220751560f20e7L,
|
|
0xa59489ae7aaf3a9aL,0x7b70e2f664bae14eL,0x0dd0370176d08249L } },
|
|
/* 9 */
|
|
{ { 0x4cc13be88510521fL,0x87315ba9f724cc17L,0xb49d83bb353dc263L,
|
|
0x8b677efe0c279257L,0x510a1c1cc93c9537L,0x33e30cd8a4702c99L },
|
|
{ 0xf0ffc89d2208353fL,0x0170fa8dced42b2bL,0x090851ed26e2a5f5L,
|
|
0x81276455ecb52c96L,0x0646c4e17fe1adf4L,0x513f047eb0868eabL } },
|
|
/* 10 */
|
|
{ { 0xc07611f4df5bdf53L,0x45d331a758b11a6dL,0x58965daf1c4ee394L,
|
|
0xba8bebe75a5878d1L,0xaecc0a1882dd3025L,0xcf2a3899a923eb8bL },
|
|
{ 0xf98c9281d24fd048L,0x841bfb598bbb025dL,0xb8ddf8cec9ab9d53L,
|
|
0x538a4cb67fef044eL,0x092ac21f23236662L,0xa919d3850b66f065L } },
|
|
/* 11 */
|
|
{ { 0x3db03b4085d480d8L,0x8cd9f4791b287a7dL,0x8f24dc754a8f3baeL,
|
|
0x482eb8003db41892L,0x38bf9eb39c56e0f5L,0x8b9773209a91dc6fL },
|
|
{ 0xa31b05b27209cfc2L,0x4c49bf8505b2db70L,0x56462498d619527bL,
|
|
0x3fe510391fac51baL,0xfb04f55eab4b8342L,0xc07c10dc04c6eabfL } },
|
|
/* 12 */
|
|
{ { 0xad22fe4cdb32f048L,0x5f23bf91475ed6dfL,0xa50ce0c0aa66b6cbL,
|
|
0xdf627a89f03405c0L,0x3674837df95e2d6aL,0x081c95b6ba42e64eL },
|
|
{ 0xeba3e036e71d6cebL,0xb45bcccf6c6b0271L,0x67b47e630684701dL,
|
|
0x60f8f942e712523fL,0x824234725cd47adcL,0x83027d7987649cbbL } },
|
|
/* 13 */
|
|
{ { 0xb3929ea63615b0b8L,0xb41441fda54dac41L,0x8995d556b5b6a368L,
|
|
0xa80d4529167ef05eL,0xf6bcb4a16d25a27fL,0x210d6a4c7bd55b68L },
|
|
{ 0xf3804abb25351130L,0x1d2df699903e37ebL,0x5f201efc084c25c8L,
|
|
0x31a28c87a1c68e91L,0x81dad253563f62a5L,0x5dd6de70d6c415d4L } },
|
|
/* 14 */
|
|
{ { 0x29f470fd846612ceL,0x986f3eecda18d997L,0x6b84c1612f34af86L,
|
|
0x5ef0a40846ddaf8bL,0x14405a00e49e795fL,0x5f491b16aa2f7a37L },
|
|
{ 0xc7f07ae4db41b38dL,0xef7d119e18fbfcaaL,0x3a18e07614443b19L,
|
|
0x4356841a79a19926L,0x91f4a91ce2226fbeL,0xdc77248c3cc88721L } },
|
|
/* 15 */
|
|
{ { 0xd570ff1ae4b1ec9dL,0x21d23e0ee7eef706L,0x3cde40f4ca19e086L,
|
|
0x7d6523c4cd4bb270L,0x16c1f06cbf13aa6cL,0x5aa7245ad14c4b60L },
|
|
{ 0x37f8146744b74de8L,0x839e7a17620a934eL,0xf74d14e8de8b1aa1L,
|
|
0x8789fa51f30d75e2L,0x09b24052c81c261eL,0x654e267833c565eeL } },
|
|
/* 16 */
|
|
{ { 0x378205de2f9fbe67L,0xc4afcb837f728e44L,0xdbcec06c682e00f1L,
|
|
0xf2a145c3114d5423L,0xa01d98747a52463eL,0xfc0935b17d717b0aL },
|
|
{ 0x9653bc4fd4d01f95L,0x9aa83ea89560ad34L,0xf77943dcaf8e3f3fL,
|
|
0x70774a10e86fe16eL,0x6b62e6f1bf9ffdcfL,0x8a72f39e588745c9L } },
|
|
/* 17 */
|
|
{ { 0x73ade4da2341c342L,0xdd326e54ea704422L,0x336c7d983741cef3L,
|
|
0x1eafa00d59e61549L,0xcd3ed892bd9a3efdL,0x03faf26cc5c6c7e4L },
|
|
{ 0x087e2fcf3045f8acL,0x14a65532174f1e73L,0x2cf84f28fe0af9a7L,
|
|
0xddfd7a842cdc935bL,0x4c0f117b6929c895L,0x356572d64c8bcfccL } },
|
|
/* 18 */
|
|
{ { 0x7ecbac017d8c1bbaL,0x6058f9c390b0f3d5L,0xaee116e3f6197d0fL,
|
|
0xc4dd70684033b128L,0xf084dba6c209b983L,0x97c7c2cf831dbc4aL },
|
|
{ 0x2f4e61ddf96010e8L,0xd97e4e20529faa17L,0x4ee6666069d37f20L,
|
|
0xccc139ed3d366d72L,0x690b6ee213488e0fL,0x7cad1dc5f3a6d533L } },
|
|
/* 19 */
|
|
{ { 0x660a9a81da57a41fL,0xe74a0412ec0039b6L,0x42343c6b5e1dad15L,
|
|
0x284f3ff546681d4cL,0xb51087f163749e89L,0x070f23cc6f9f2f13L },
|
|
{ 0x542211da5d186e14L,0x84748f37fddb0dffL,0x41a3aab4db1f4180L,
|
|
0x25ed667ba6402d0eL,0x2f2924a902f58355L,0x5844ee7cfa44a689L } },
|
|
/* 20 */
|
|
{ { 0xfab086073f3b236fL,0x19e9d41d81e221daL,0xf3f6571e3927b428L,
|
|
0x4348a9337550f1f6L,0x7167b996a85e62f0L,0x62d437597f5452bfL },
|
|
{ 0xd85feb9ef2955926L,0x440a561f6df78353L,0x389668ec9ca36b59L,
|
|
0x052bf1a1a22da016L,0xbdfbff72f6093254L,0x94e50f28e22209f3L } },
|
|
/* 21 */
|
|
{ { 0x90b2e5b33062e8afL,0xa8572375e8a3d369L,0x3fe1b00b201db7b1L,
|
|
0xe926def0ee651aa2L,0x6542c9beb9b10ad7L,0x098e309ba2fcbe74L },
|
|
{ 0x779deeb3fff1d63fL,0x23d0e80a20bfd374L,0x8452bb3b8768f797L,
|
|
0xcf75bb4d1f952856L,0x8fe6b40029ea3faaL,0x12bd3e4081373a53L } },
|
|
/* 22 */
|
|
{ { 0xc023780d104cbba5L,0x6207e747fa35dd4cL,0x35c239281ca9b6a3L,
|
|
0x4ff19be897987b10L,0xb8476bbf8022eee8L,0xaa0a4a14d3bbe74dL },
|
|
{ 0x20f94331187d4543L,0x3215387079f6e066L,0x83b0f74eac7e82e1L,
|
|
0xa7748ba2828f06abL,0xc5f0298ac26ef35fL,0x0f0c50708e9a7dbdL } },
|
|
/* 23 */
|
|
{ { 0x0c5c244cdef029ddL,0x3dabc687850661b8L,0x9992b865fe11d981L,
|
|
0xe9801b8f6274dbadL,0xe54e6319098da242L,0x9929a91a91a53d08L },
|
|
{ 0x37bffd7235285887L,0xbc759425f1418102L,0x9280cc35fd2e6e20L,
|
|
0x735c600cfbc42ee5L,0xb7ad28648837619aL,0xa3627231a778c57bL } },
|
|
/* 24 */
|
|
{ { 0xae799b5c91361ed8L,0x47d71b756c63366cL,0x54cdd5211b265a6aL,
|
|
0xe0215a5998d77b74L,0x4424d9b7bab29db0L,0x8b0ffacc7fd9e536L },
|
|
{ 0x46d85d1237b5d9efL,0x5b106d62bfa91747L,0xed0479f85f99ba2dL,
|
|
0x0e6f39231d104de4L,0x83a84c8425e8983fL,0xa9507e0af8105a70L } },
|
|
/* 25 */
|
|
{ { 0xf6c68a6e14cf381cL,0xaf9d27bdc22e31ccL,0x23568d4daa8a5ccbL,
|
|
0xe431eec0e338e4d2L,0xf1a828fe8f52ad1fL,0xdb6a0579e86acd80L },
|
|
{ 0x2885672e4507832aL,0x73fc275f887e5289L,0x65f8027805610d08L,
|
|
0x8d9b4554075ff5b0L,0x3a8e8fb109f712b5L,0x39f0ac862ebe9cf2L } },
|
|
/* 26 */
|
|
{ { 0xd8fabf784c52edf5L,0xdcd737e5a589ae53L,0x94918bf0d791ab17L,
|
|
0xb5fbd956bcff06c9L,0xf6d3032edca46d45L,0x2cdff7e141a3e486L },
|
|
{ 0x6674b3ba61f47ec8L,0x8a882163eef84608L,0xa257c7054c687f90L,
|
|
0xe30cb2edf6cdf227L,0x2c4c64ca7f6ea846L,0x186fa17ccc6bcd3cL } },
|
|
/* 27 */
|
|
{ { 0x48a3f5361dfcb91eL,0x83595e13646d358aL,0xbd15827b91128798L,
|
|
0x3ce612b82187757aL,0x873150a161bd7372L,0xf4684530b662f568L },
|
|
{ 0x8833950b401896f6L,0xe11cb89a77f3e090L,0xb2f12cac48e7f4a5L,
|
|
0x313dd769f606677eL,0xfdcf08b316579f93L,0x6429cec946b8f22bL } },
|
|
/* 28 */
|
|
{ { 0x4984dd54bb75f9a4L,0x4aef06b929d3b570L,0xb5f84ca23d6e4c1eL,
|
|
0x24c61c11b083ef35L,0xce4a7392392ca9ffL,0x865d65176730a800L },
|
|
{ 0xca3dfe76722b4a2bL,0x12c04bf97b083e0eL,0x803ce5b51b86b8a5L,
|
|
0x3fc7632d6a7e3e0cL,0xc89970c2c81adbe4L,0x3cbcd3ad120e16b1L } },
|
|
/* 29 */
|
|
{ { 0xfbfb4cc7ec30ce93L,0x10ed6c7db72720a2L,0xec675bf747b55500L,
|
|
0x90725903333ff7c3L,0xc7c3973e5075bfc0L,0xb049ecb007acf31bL },
|
|
{ 0xb4076eaf4f58839cL,0x101896daa2b05e4fL,0x3f6033b0ab40c66eL,
|
|
0x19ee9eebc8d864baL,0xeb6cf15547bf6d2aL,0x8e5a9663f826477dL } },
|
|
/* 30 */
|
|
{ { 0x69e62fddf7fbd5e1L,0x38ecfe5476912b1dL,0x845a3d56d1da3bfbL,
|
|
0x0494950e1c86f0d4L,0x83cadbf93bc36ce8L,0x41fce5724fccc8d1L },
|
|
{ 0x05f939c28332c144L,0xb17f248b0871e46eL,0x3d8534e266e8aff6L,
|
|
0x1d06f1dc3b85c629L,0xdb06a32ea3131b73L,0xf295184d8b3f64e5L } },
|
|
/* 31 */
|
|
{ { 0xd9653ff736ddc103L,0x25f43e3795ef606fL,0x09e301fcfe06dce8L,
|
|
0x85af234130b6eebfL,0x79b12b530ff56b20L,0x9b4fb499fe9a3c6bL },
|
|
{ 0x0154f89251d27ac2L,0xd33167e356ca5389L,0x7828ec1fafc065a6L,
|
|
0x0959a2587f746c9bL,0xb18f1be30c44f837L,0xa7946117c4132fdbL } },
|
|
/* 32 */
|
|
{ { 0xc0426b775e3c647bL,0xbfcbd9398cf05348L,0x31d312e3172c0d3dL,
|
|
0x5f49fde6ee754737L,0x895530f06da7ee61L,0xcf281b0ae8b3a5fbL },
|
|
{ 0xfd14973541b8a543L,0x41a625a73080dd30L,0xe2baae07653908cfL,
|
|
0xc3d01436ba02a278L,0xa0d0222e7b21b8f8L,0xfdc270e9d7ec1297L } },
|
|
/* 33 */
|
|
{ { 0x00873c0cbc7f41d6L,0xd976113e1b7ad641L,0x2a536ff4238443fbL,
|
|
0x030d00e241e62e45L,0x532e98675f545fc6L,0xcd0331088e91208cL },
|
|
{ 0xd1a04c999797612cL,0xd4393e02eea674e2L,0xd56fa69ee19742a1L,
|
|
0xdd2ab48085f0590eL,0xa5cefc5248a2243dL,0x48cc67b654383f41L } },
|
|
/* 34 */
|
|
{ { 0x4e50430efc14ab48L,0x195b7f4f26706a74L,0x2fe8a228cc881ff6L,
|
|
0xb1b968e2d945013dL,0x936aa5794b92162bL,0x4fb766b7364e754aL },
|
|
{ 0x13f93bca31e1ff7fL,0x696eb5cace4f2691L,0xff754bf8a2b09e02L,
|
|
0x58f13c9ce58e3ff8L,0xb757346f1678c0b0L,0xd54200dba86692b3L } },
|
|
/* 35 */
|
|
{ { 0x9a030bbd6dda1265L,0xf7b4f3fce89718ddL,0xa6a4931f936065b8L,
|
|
0xbce72d875f72241cL,0x6cbb51cb65775857L,0xc71618154e993675L },
|
|
{ 0xe81a0f792ee32189L,0xef2fab26277dc0b2L,0x9e64f6feb71f469fL,
|
|
0xb448ce33dfdaf859L,0x3f5c1c4cbe6b5df1L,0xfb8dfb001de45f7bL } },
|
|
/* 36 */
|
|
{ { 0xc7345fa74d5bb921L,0x5c7e04be4d2b667eL,0x47ed3a80282d7a3eL,
|
|
0x5c2777f87e47b2a4L,0x89b3b10008488e2eL,0x9aad77c2b2eb5b45L },
|
|
{ 0xd681bca7daac34aeL,0x2452e4e526afb326L,0x0c88792441a1ee14L,
|
|
0x743b04d4c2407adeL,0xcb5e999bfc17a2acL,0x4dca2f824a701a06L } },
|
|
/* 37 */
|
|
{ { 0x68e31ca61127bc1aL,0xa3edd59b17ead3beL,0x67b6b645e25f5a15L,
|
|
0x76221794a420e15eL,0x794fd83b4b1e872eL,0x7cab3f03b2dece1bL },
|
|
{ 0x7119bf15ca9b3586L,0xa55459244d250bd7L,0x173633eacc6bcf24L,
|
|
0x9bd308c2b1b6f884L,0x3bae06f5447d38c3L,0x54dcc135f341fe1cL } },
|
|
/* 38 */
|
|
{ { 0x56d3598d943caf0dL,0xce044ea9225ff133L,0x9edf6a7c563fadeaL,
|
|
0x632eb94473e8dc27L,0x814b467e3190dcabL,0x2d4f4f316dbb1e31L },
|
|
{ 0x8d69811ca143b7caL,0x4ec1ac32de7cf950L,0x223ab5fd37b5fe82L,
|
|
0xe82616e49390f1d9L,0xabff4b2075804610L,0x11b9be15875b08f0L } },
|
|
/* 39 */
|
|
{ { 0x4ae31a3d3bbe682cL,0xbc7c5d2674eef2ddL,0x92afd10a3c47dd40L,
|
|
0xec7e0a3bc14ab9e1L,0x6a6c3dd1b2e495e4L,0x085ee5e9309bcd85L },
|
|
{ 0xf381a9088c2e67fdL,0x32083a80e261eaf2L,0x0fcd6a4996deee15L,
|
|
0xe3b8fb035e524c79L,0x8dc360d91d5b08b9L,0x3a06e2c87f26719fL } },
|
|
/* 40 */
|
|
{ { 0x5cd9f5a87237cac0L,0x93f0b59d43586794L,0x4384a764e94f6c4eL,
|
|
0x8304ed2bb62782d3L,0x0b8db8b3cde06015L,0x4336dd535dbe190fL },
|
|
{ 0x5744355392ab473aL,0x031c7275be5ed046L,0x3e78678c21909aa4L,
|
|
0x4ab7e04f99202ddbL,0x2648d2066977e635L,0xd427d184093198beL } },
|
|
/* 41 */
|
|
{ { 0x822848f50f9b5a31L,0xbb003468baadb62aL,0x233a04723357559cL,
|
|
0x49ef688079aee843L,0xa89867a0aeb9e1e3L,0xc151931b1f6f9a55L },
|
|
{ 0xd264eb0bad74251eL,0x37b9b2634abf295eL,0xb600921b04960d10L,
|
|
0x0de53dbc4da77dc0L,0x01d9bab3d2b18697L,0xad54ec7af7156ddfL } },
|
|
/* 42 */
|
|
{ { 0x8e74dc3579efdc58L,0x456bd3694ff68ddbL,0x724e74ccd32096a5L,
|
|
0xe41cff42386783d0L,0xa04c7f217c70d8a4L,0x41199d2fe61a19a2L },
|
|
{ 0xd389a3e029c05dd2L,0x535f2a6be7e3fda9L,0x26ecf72d7c2b4df8L,
|
|
0x678275f4fe745294L,0x6319c9cc9d23f519L,0x1e05a02d88048fc4L } },
|
|
/* 43 */
|
|
{ { 0x75cc8e2ed4d5ffe8L,0xf8bb4896dbea17f2L,0x35059790cee3cb4aL,
|
|
0x4c06ee85a47c6165L,0xf98fff2592935d2fL,0x34c4a57232ffd7c7L },
|
|
{ 0xc4b14806ea0376a2L,0x2ea5e7504f115e02L,0x532d76e21e55d7c0L,
|
|
0x68dc9411f31044daL,0x9272e46571b77993L,0xadaa38bb93a8cfd5L } },
|
|
/* 44 */
|
|
{ { 0x4bf0c7127d4ed72aL,0xda0e9264ba1f79a3L,0x48c0258bf4c39ea4L,
|
|
0xa5394ed82a715138L,0x4af511cebf06c660L,0xfcebceefec5c37cdL },
|
|
{ 0xf23b75aa779ae8c1L,0xdeff59ccad1e606eL,0xf3f526fd22755c82L,
|
|
0x64c5ab44bb32cefdL,0xa96e11a2915bdefdL,0xab19746a1143813eL } },
|
|
/* 45 */
|
|
{ { 0x43c78585ec837d7dL,0xca5b6fbcb8ee0ba4L,0x34e924d9d5dbb5eeL,
|
|
0x3f4fa104bb4f1ca5L,0x15458b72398640f7L,0x4231faa9d7f407eaL },
|
|
{ 0x53e0661ef96e6896L,0x554e4c69d03b0f9dL,0xd4fcb07b9c7858d1L,
|
|
0x7e95279352cb04faL,0x5f5f15748974e7f7L,0x2e3fa5586b6d57c8L } },
|
|
/* 46 */
|
|
{ { 0x42cd48036a9951a8L,0xa8b15b8842792ad0L,0x18e8bcf9abb29a73L,
|
|
0xbfd9a092409933e8L,0x760a3594efb88dc4L,0x1441886340724458L },
|
|
{ 0x162a56ee99caedc7L,0x8fb12ecd91d101c9L,0xea671967393202daL,
|
|
0x1aac8c4aa4ccd796L,0x7db050361cf185a8L,0x0c9f86cd8cfd095aL } },
|
|
/* 47 */
|
|
{ { 0x9a72814710b2a556L,0x767ca964327b70b2L,0x04ed9e125e3799b7L,
|
|
0x6781d2dc22a3eb2aL,0x5bd116eb0d9450acL,0xeccac1fca7ebe08aL },
|
|
{ 0xde68444fdc2d6e94L,0x3621f42935ecf21bL,0x14e2d54329e03a2cL,
|
|
0x53e42cd57d3e7f0aL,0xbba26c0973ed00b9L,0x00297c39c57d2272L } },
|
|
/* 48 */
|
|
{ { 0x3aaaab10b8243a7dL,0x6eeef93e8fa58c5bL,0xf866fca39ae7f764L,
|
|
0x64105a2661ab04d3L,0xa3578d8a03945d66L,0xb08cd3e4791b848cL },
|
|
{ 0x45edc5f8756d2411L,0xd4a790d9a755128cL,0xc2cf096349e5f6a0L,
|
|
0xc66d267df649beaaL,0x3ce6d9688467039eL,0x50046c6b42f7816fL } },
|
|
/* 49 */
|
|
{ { 0x92ae160266425043L,0x1ff66afdf08db890L,0x386f5a7f8f162ce5L,
|
|
0x18d2dea0fcf5598fL,0x78372b3a1a8ca18eL,0xdf0d20eb8cd0e6f7L },
|
|
{ 0x7edd5e1d75bb4045L,0x252a47ceb96d94b7L,0xbdb293582c626776L,
|
|
0x853c394340dd1031L,0x9dc9becf7d5f47fdL,0x27c2302fbae4044aL } },
|
|
/* 50 */
|
|
{ { 0x2d1d208a8f2d49ceL,0x0d91aa02162df0a2L,0x9c5cce8709a07f65L,
|
|
0xdf07238b84339012L,0x5028e2c8419442cdL,0x2dcbd35872062abaL },
|
|
{ 0xb5fbc3cbe4680967L,0x2a7bc6459f92d72cL,0x806c76e1116c369dL,
|
|
0x5c50677a3177e8d8L,0x753739eb4569df57L,0x2d481ef636c3f40bL } },
|
|
/* 51 */
|
|
{ { 0x1a2d39fdfea1103eL,0xeaae559295f81b17L,0xdbd0aa18f59b264aL,
|
|
0x90c39c1acb592ee0L,0xdf62f80d9750cca3L,0xda4d8283df97cc6cL },
|
|
{ 0x0a6dd3461e201067L,0x1531f85969fb1f6bL,0x4895e5521d60121fL,
|
|
0x0b21aab04c041c91L,0x9d896c46bcc1ccf8L,0xd24da3b33141bde7L } },
|
|
/* 52 */
|
|
{ { 0x575a053753b0a354L,0x392ff2f40c6ddcd8L,0x0b8e8cff56157b94L,
|
|
0x073e57bd3b1b80d1L,0x2a75e0f03fedee15L,0x752380e4aa8e6f19L },
|
|
{ 0x1f4e227c6558ffe9L,0x3a34861819ec5415L,0xab382d5ef7997085L,
|
|
0x5e6deaffddc46ac2L,0xe5144078fc8d094cL,0xf674fe51f60e37c6L } },
|
|
/* 53 */
|
|
{ { 0x6fb87ae5af63408fL,0xa39c36a9cd75a737L,0x7833313fcf4c618dL,
|
|
0xfbcd4482f034c88dL,0x4469a76139b35288L,0x77a711c566b5d9c9L },
|
|
{ 0x4a695dc7944f8d65L,0xe6da5f65161aaba8L,0x8654e9c324601669L,
|
|
0xbc8b93f528ae7491L,0x5f1d1e838f5580d8L,0x8ccf9a1acea32cc8L } },
|
|
/* 54 */
|
|
{ { 0x28ab110c7196fee2L,0x75799d63874c8945L,0xa262934829aedaddL,
|
|
0x9714cc7b2be88ff4L,0xf71293cfd58d60d6L,0xda6b6cb332a564e9L },
|
|
{ 0xf43fddb13dd821c2L,0xf2f2785f90dd323dL,0x91246419048489f8L,
|
|
0x61660f26d24c6749L,0x961d9e8cc803c15cL,0x631c6158faadc4c9L } },
|
|
/* 55 */
|
|
{ { 0xacf2ebe0fd752366L,0xb93c340e139be88bL,0x98f664850f20179eL,
|
|
0x14820254ff1da785L,0x5278e2764f85c16eL,0xa246ee457aab1913L },
|
|
{ 0x43861eb453763b33L,0xc49f03fc45c0bc0dL,0xafff16bcad6b1ea1L,
|
|
0xce33908b6fd49c99L,0x5c51e9bff7fde8c3L,0x076a7a39ff142c5eL } },
|
|
/* 56 */
|
|
{ { 0x04639dfe9e338d10L,0x8ee6996ff42b411bL,0x960461d1a875cef2L,
|
|
0x1057b6d695b4d0baL,0x27639252a906e0bcL,0x2c19f09ae1c20f8aL },
|
|
{ 0x5b8fc3f0eef4c43dL,0xe2e1b1a807a84aa9L,0x5f455528835d2bdbL,
|
|
0x0f4aee4d207132ddL,0xe9f8338c3907f675L,0x7a874dc90e0531f0L } },
|
|
/* 57 */
|
|
{ { 0x84b22d4597c27050L,0xbd0b8df759e70bf8L,0xb4d6740579738b9bL,
|
|
0x47f4d5f5cd917c4fL,0x9099c4ce13ce6e33L,0x942bfd39521d0f8bL },
|
|
{ 0x5028f0f6a43b566dL,0xaf6e866921bff7deL,0x83f6f856c44232cdL,
|
|
0x65680579f915069aL,0xd12095a2ecfecb85L,0xcf7f06aedb01ba16L } },
|
|
/* 58 */
|
|
{ { 0x0f56e3c48ef96c80L,0xd521f2b33ddb609cL,0x2be941027dc1450dL,
|
|
0x2d21a07102a91fe2L,0x2e6f74fa1efa37deL,0x9a9a90b8156c28a1L },
|
|
{ 0xc54ea9ea9dc7dfcbL,0xc74e66fc2c2c1d62L,0x9f23f96749d3e067L,
|
|
0x1c7c3a4654dd38adL,0xc70058845946cee3L,0x8985636845cc045dL } },
|
|
/* 59 */
|
|
{ { 0x29da7cd4fce73946L,0x8f697db523168563L,0x8e235e9ccba92ec6L,
|
|
0x55d4655f9f91d3eaL,0xf3689f23aa50a6cdL,0xdcf21c2621e6a1a0L },
|
|
{ 0xcffbc82e61b818bfL,0xc74a2f96da47a243L,0x234e980a8bc1a0cfL,
|
|
0xf35fd6b57929cb6dL,0x81468e12efe17d6cL,0xddea6ae558b2dafbL } },
|
|
/* 60 */
|
|
{ { 0x294de8877e787b2eL,0x258acc1f39a9310dL,0x92d9714aac14265dL,
|
|
0x18b5591c708b48a0L,0x27cc6bb0e1abbf71L,0xc0581fa3568307b9L },
|
|
{ 0x9e0f58a3f24d4d58L,0xfebe9bb8e0ce2327L,0x91fd6a419d1be702L,
|
|
0x9a7d8a45facac993L,0xabc0a08c9e50d66dL,0x02c342f706498201L } },
|
|
/* 61 */
|
|
{ { 0xccd71407157bdbc2L,0x72fa89c6ad0e1605L,0xb1d3da2bb92a015fL,
|
|
0x8ad9e7cda0a3fe56L,0x160edcbd24f06737L,0x79d4db3361275be6L },
|
|
{ 0xd3d31fd95f3497c4L,0x8cafeaee04192fb0L,0xe13ca74513a50af3L,
|
|
0x188261678c85aae5L,0xce06cea89eb556ffL,0x2eef1995bdb549f3L } },
|
|
/* 62 */
|
|
{ { 0x8ed7d3eb50596edcL,0xaa359362905243a2L,0xa212c2c2a4b6d02bL,
|
|
0x611fd727c4fbec68L,0x8a0b8ff7b84f733dL,0xd85a6b905f0daf0eL },
|
|
{ 0x60e899f5d4091cf7L,0x4fef2b672eff2768L,0xc1f195cb10c33964L,
|
|
0x8275d36993626a8fL,0xc77904f40d6c840aL,0x88d8b7fd7a868acdL } },
|
|
/* 63 */
|
|
{ { 0x85f237237bd98425L,0xd4463992c70b154eL,0xcbb00ee296687a2eL,
|
|
0x905fdbf7c83214fdL,0x2019d29313593684L,0x0428c393ef51218eL },
|
|
{ 0x40c7623f981e909aL,0x925133857be192daL,0x48fe480f4010907eL,
|
|
0xdd7a187c3120b459L,0xc9d7702da1fd8f3cL,0x66e4753be358efc5L } },
|
|
/* 64 */
|
|
{ { 0x070d34e116973cf4L,0x20aee08b7e4f34f7L,0x269af9b95eb8ad29L,
|
|
0xdde0a036a6a45ddaL,0xa18b528e63df41e0L,0x03cc71b2a260df2aL },
|
|
{ 0x24a6770aa06b1dd7L,0x5bfa9c119d2675d3L,0x73c1e2a196844432L,
|
|
0x3660558d131a6cf0L,0xb0289c832ee79454L,0xa6aefb01c6d8ddcdL } },
|
|
/* 65 */
|
|
{ { 0xba1464b401ab5245L,0x9b8d0b6dc48d93ffL,0x939867dc93ad272cL,
|
|
0xbebe085eae9fdc77L,0x73ae5103894ea8bdL,0x740fc89a39ac22e1L },
|
|
{ 0x5e28b0a328e23b23L,0x2352722ee13104d0L,0xf4667a18b0a2640dL,
|
|
0xac74a72e49bb37c3L,0x79f734f0e81e183aL,0xbffe5b6c3fd9c0ebL } },
|
|
/* 66 */
|
|
{ { 0xb1a358f5c6a2123fL,0x927b2d95fe28df6dL,0x89702753f199d2f9L,
|
|
0x0a73754c1a3f82dcL,0x063d029d777affe1L,0x5439817edae6d34dL },
|
|
{ 0xf7979eef6b8b83c4L,0x615cb2149d945682L,0x8f0e4facc5e57eaeL,
|
|
0x042b89b8113047ddL,0x888356dc93f36508L,0xbf008d185fd1f32fL } },
|
|
/* 67 */
|
|
{ { 0x8012aa244e8068dbL,0xc72cc641a5729a47L,0x3c33df2c43f0691dL,
|
|
0xfa0573471d92145fL,0xaefc0f2fb97f7946L,0x813d75cb2f8121bfL },
|
|
{ 0x05613c724383bba6L,0xa924ce70a4224b3fL,0xe59cecbe5f2179a6L,
|
|
0x78e2e8aa79f62b61L,0x3ac2cc3b53ad8079L,0x55518d71d8f4fa96L } },
|
|
/* 68 */
|
|
{ { 0x03cf292200623f3bL,0x095c71115f29ebffL,0x42d7224780aa6823L,
|
|
0x044c7ba17458c0b0L,0xca62f7ef0959ec20L,0x40ae2ab7f8ca929fL },
|
|
{ 0xb8c5377aa927b102L,0x398a86a0dc031771L,0x04908f9dc216a406L,
|
|
0xb423a73a918d3300L,0x634b0ff1e0b94739L,0xe29de7252d69f697L } },
|
|
/* 69 */
|
|
{ { 0x744d14008435af04L,0x5f255b1dfec192daL,0x1f17dc12336dc542L,
|
|
0x5c90c2a7636a68a8L,0x960c9eb77704ca1eL,0x9de8cf1e6fb3d65aL },
|
|
{ 0xc60fee0d511d3d06L,0x466e2313f9eb52c7L,0x743c0f5f206b0914L,
|
|
0x42f55bac2191aa4dL,0xcefc7c8fffebdbc2L,0xd4fa6081e6e8ed1cL } },
|
|
/* 70 */
|
|
{ { 0xb5e405d3b0ab9645L,0xaeec7f98d5f1f711L,0x8ad42311585c2a6eL,
|
|
0x045acb9e512c6944L,0xae106c4ea90db1c6L,0xb89f33d5898e6563L },
|
|
{ 0x43b07cd97fed2ce4L,0xf9934e17dd815b20L,0x6778d4d50a81a349L,
|
|
0x9e616ade52918061L,0xfa06db06d7e67112L,0x1da23cf188488091L } },
|
|
/* 71 */
|
|
{ { 0x821c46b342f2c4b5L,0x931513ef66059e47L,0x7030ae4366f50cd1L,
|
|
0x43b536c943e7b127L,0x006258cf5fca5360L,0xe4e3ee796b557abfL },
|
|
{ 0xbb6b390024c8b22fL,0x2eb5e2c1fcbf1054L,0x937b18c9567492afL,
|
|
0xf09432e4acf53957L,0x585f5a9d1dbf3a56L,0xf86751fdbe0887cfL } },
|
|
/* 72 */
|
|
{ { 0x157399cb9d10e0b2L,0x1c0d595660dc51b7L,0x1d496b8a1f583090L,
|
|
0x6658bc2688590484L,0x88c08ab703213f28L,0x8d2e0f737ae58de4L },
|
|
{ 0x9b79bc95486cfee6L,0x036a26c7e9e5bc57L,0x1ad03601cd8ae97aL,
|
|
0x06907f87ff3a0494L,0x078f4bbf2c7eb584L,0xe3731bf57e8d0a5aL } },
|
|
/* 73 */
|
|
{ { 0x72f2282be1cd0abeL,0xd4f9015e87efefa2L,0x9d1898066c3834bdL,
|
|
0x9c8cdcc1b8a29cedL,0x0601b9f4fee82ebcL,0x371052bc7206a756L },
|
|
{ 0x76fa109246f32562L,0xdaad534c17351bb4L,0xc3d64c37b3636bb5L,
|
|
0x038a8c5145d54e00L,0x301e618032c09e7cL,0x9764eae795735151L } },
|
|
/* 74 */
|
|
{ { 0x8791b19fcbd5256aL,0x4007e0f26ca13a3bL,0x03b794604cf06904L,
|
|
0xb18a9c22b6c17589L,0xa1cb7d7d81d45908L,0x6e13fa9d21bb68f1L },
|
|
{ 0x47183c62a71e6e16L,0x5cf0ef8ee18749edL,0x2c9c7f9b2e5ed409L,
|
|
0x042eeacce6e117e1L,0xb86d481613fb5a7fL,0xea1cf0edc9e5feb1L } },
|
|
/* 75 */
|
|
{ { 0x6e6573c9cea4cc9bL,0x5417961dafcec8f3L,0x804bf02aa438b6f6L,
|
|
0xb894b03cdcd4ea88L,0xd0f807e93799571fL,0x3466a7f5862156e8L },
|
|
{ 0x51e59acd56515664L,0x55b0f93ca3c5eb0bL,0x84a06b026a4279dbL,
|
|
0x5c850579c5fae08eL,0xcf07b8dba663a1a2L,0x49a36bbcf46ffc8dL } },
|
|
/* 76 */
|
|
{ { 0xe47f5acc46d93106L,0x65b7ade0aa897c9cL,0x37cf4c9412d7e4beL,
|
|
0xa2ae9b80d4b2caa9L,0x5e7ce09ce60357a3L,0x29f77667c8ecd5f9L },
|
|
{ 0xdf6868f5a8a0b1c5L,0x240858cf62978ad8L,0x0f7ac101dc0002a1L,
|
|
0x1d28a9d7ffe9aa05L,0x744984d65b962c97L,0xa8a7c00b3d28c8b2L } },
|
|
/* 77 */
|
|
{ { 0x7c58a852ae11a338L,0xa78613f1d1af96e7L,0x7e9767d25355cc73L,
|
|
0x6ba37009792a2de6L,0x7d60f618124386b2L,0xab09b53111157674L },
|
|
{ 0x95a0484198eb9dd0L,0xe6c17acc15070328L,0xafc6da45489c6e49L,
|
|
0xab45a60abb211530L,0xc58d65927d7ea933L,0xa3ef3c65095642c6L } },
|
|
/* 78 */
|
|
{ { 0x89d420e9df010879L,0x9d25255d39576179L,0x9cdefd50e39513b6L,
|
|
0xe4efe45bd5d1c313L,0xc0149de73f7af771L,0x55a6b4f4340ab06bL },
|
|
{ 0xf1325251ebeaf771L,0x2ab44128878d4288L,0xfcd5832e18e05afeL,
|
|
0xef52a348cc1fb62bL,0x2bd08274c1c4792aL,0x345c5846877c6dc7L } },
|
|
/* 79 */
|
|
{ { 0xde15ceb0bea65e90L,0x0987f72b2416d99cL,0x44db578dfd863decL,
|
|
0xf617b74bac6a3578L,0x9e62bd7adb48e999L,0x877cae61eab1a1beL },
|
|
{ 0x23adddaa3a358610L,0x2fc4d6d1325e2b07L,0x897198f51585754eL,
|
|
0xf741852cb392b584L,0x9927804cb55f7de1L,0xe9e6c4ed1aa8efaeL } },
|
|
/* 80 */
|
|
{ { 0x867db63998683186L,0xfb5cf424ddcc4ea9L,0xcc9a7ffed4f0e7bdL,
|
|
0x7c57f71c7a779f7eL,0x90774079d6b25ef2L,0x90eae903b4081680L },
|
|
{ 0xdf2aae5e0ee1fcebL,0x3ff1da24e86c1a1fL,0x80f587d6ca193edfL,
|
|
0xa5695523dc9b9d6aL,0x7b84090085920303L,0x1efa4dfcba6dbdefL } },
|
|
/* 81 */
|
|
{ { 0xfbd838f9e0540015L,0x2c323946c39077dcL,0x8b1fb9e6ad619124L,
|
|
0x9612440c0ca62ea8L,0x9ad9b52c2dbe00ffL,0xf52abaa1ae197643L },
|
|
{ 0xd0e898942cac32adL,0xdfb79e4262a98f91L,0x65452ecf276f55cbL,
|
|
0xdb1ac0d27ad23e12L,0xf68c5f6ade4986f0L,0x389ac37b82ce327dL } },
|
|
/* 82 */
|
|
{ { 0x511188b4f8e60f5bL,0x7fe6701548aa2adaL,0xdb333cb8381abca2L,
|
|
0xb15e6d9ddaf3fc97L,0x4b24f6eb36aabc03L,0xc59789df72a748b4L },
|
|
{ 0x26fcb8a529cf5279L,0x7a3c6bfc01ad9a6cL,0x866cf88d4b8bac9bL,
|
|
0xf4c899899c80d041L,0xf0a0424170add148L,0x5a02f47945d81a41L } },
|
|
/* 83 */
|
|
{ { 0xfa5c877cc1c90202L,0xd099d440f8ac7570L,0x428a5b1bd17881f7L,
|
|
0x61e267db5b2501d7L,0xf889bf04f2e4465bL,0x4da3ae0876aa4cb8L },
|
|
{ 0x3ef0fe26e3e66861L,0x5e7729533318b86dL,0xc3c35fbc747396dfL,
|
|
0x5115a29c439ffd37L,0xbfc4bd97b2d70374L,0x088630ea56246b9dL } },
|
|
/* 84 */
|
|
{ { 0xcd96866db8a9e8c9L,0xa11963b85bb8091eL,0xc7f90d53045b3cd2L,
|
|
0x755a72b580f36504L,0x46f8b39921d3751cL,0x4bffdc9153c193deL },
|
|
{ 0xcd15c049b89554e7L,0x353c6754f7a26be6L,0x79602370bd41d970L,
|
|
0xde16470b12b176c0L,0x56ba117540c8809dL,0xe2db35c3e435fb1eL } },
|
|
/* 85 */
|
|
{ { 0xd71e4aab6328e33fL,0x5486782baf8136d1L,0x07a4995f86d57231L,
|
|
0xf1f0a5bd1651a968L,0xa5dc5b2476803b6dL,0x5c587cbc42dda935L },
|
|
{ 0x2b6cdb32bae8b4c0L,0x66d1598bb1331138L,0x4a23b2d25d7e9614L,
|
|
0x93e402a674a8c05dL,0x45ac94e6da7ce82eL,0xeb9f8281e463d465L } },
|
|
/* 86 */
|
|
{ { 0x34e0f9d1fecf5b9bL,0xa115b12bf206966aL,0x5591cf3b1eaa0534L,
|
|
0x5f0293cbfb1558f9L,0x1c8507a41bc703a5L,0x92e6b81c862c1f81L },
|
|
{ 0xcc9ebc66cdaf24e3L,0x68917ecd72fcfc70L,0x6dc9a9308157ba48L,
|
|
0x5d425c08b06ab2b2L,0x362f8ce736e929c4L,0x09f6f57c62e89324L } },
|
|
/* 87 */
|
|
{ { 0x1c7d6b78d29375fbL,0xfabd851ee35d1157L,0xf6f62dcd4243ea47L,
|
|
0x1dd924608fe30b0fL,0x08166dfaffc6e709L,0xc6c4c6930881e6a7L },
|
|
{ 0x20368f87d6a53fb0L,0x38718e9f9eb4d1f9L,0x03f08acdafd7e790L,
|
|
0x0835eb4472fe2a1cL,0x7e05090388076e5dL,0x538f765ea638e731L } },
|
|
/* 88 */
|
|
{ { 0x0e0249d9c2663b4bL,0xe700ab5b47cd38ddL,0xb192559d2c46559fL,
|
|
0x8f9f74a84bcde66dL,0xad1615233e2aced5L,0xc155c0473dd03a5bL },
|
|
{ 0x346a87993be454ebL,0x66ee94db83b7dccdL,0x1f6d8378ab9d2abeL,
|
|
0x4a396dd27733f355L,0x419bd40af53553c2L,0xd0ead98d731dd943L } },
|
|
/* 89 */
|
|
{ { 0x908e0b0eec142408L,0x98943cb94114b310L,0x03dbf7d81742b1d7L,
|
|
0xd270df6b693412f4L,0xc50654948f69e20cL,0xa76a90c3697e43a1L },
|
|
{ 0xe0fa33844624825aL,0x82e48c0b8acc34c2L,0x7b24bd14e9a14f2bL,
|
|
0x4f5dd5e24db30803L,0x0c77a9e7932da0a3L,0x20db90f274c653dcL } },
|
|
/* 90 */
|
|
{ { 0x261179b70e6c5fd9L,0xf8bec1236c982eeaL,0x47683338d4957b7eL,
|
|
0xcc47e6640a72f66aL,0xbd54bf6a1bad9350L,0xdfbf4c6af454e95aL },
|
|
{ 0x3f7a7afa6907f4faL,0x7311fae0865ca735L,0x24737ab82a496adaL,
|
|
0x13e425f115feb79bL,0xe9e97c50a1b93c21L,0xb26b6eac4ddd3eb5L } },
|
|
/* 91 */
|
|
{ { 0x81cab9f52a2e5f2bL,0xf93caf29bf385ac4L,0xf4bf35c3c909963aL,
|
|
0x081e730074c9143cL,0x3ea57fa8c281b4c5L,0xe497905c9b340741L },
|
|
{ 0xf556dd8a55ab3cfbL,0xd444b96b518db6adL,0x34f5425a5ef4b955L,
|
|
0xdda7a3acecd26aa3L,0xb57da11bda655e97L,0x02da3effc2024c70L } },
|
|
/* 92 */
|
|
{ { 0xe24b00366481d0d9L,0x3740dbe5818fdfe2L,0xc1fc1f45190fda00L,
|
|
0x329c92803cf27fdeL,0x7435cb536934f43eL,0x2b505a5d7884e8feL },
|
|
{ 0x6cfcc6a6711adcc9L,0xf034325c531e21e1L,0xa2f4a9679b2a8a99L,
|
|
0x9d5f38423c21bdffL,0xb25c781131b57d66L,0xdb5344d80b8093b9L } },
|
|
/* 93 */
|
|
{ { 0x0d72e667ae50a2f5L,0x9b7f8d8ae4a861d1L,0xa129f70f330df1cbL,
|
|
0xe90aa5d7e04fefc3L,0xff561ecbe72c3ae1L,0x0d8fb428cdb955faL },
|
|
{ 0xd2235f73d7663784L,0xc05baec67e2c456aL,0xe5c292e42adbfcccL,
|
|
0x4fd17988efb110d5L,0x27e57734d19d49f3L,0x188ac4ce84f679feL } },
|
|
/* 94 */
|
|
{ { 0x7ee344cfa796c53eL,0xbbf6074d0868009bL,0x1f1594f7474a1295L,
|
|
0x66776edcac11632dL,0x1862278b04e2fa5aL,0x52665cf2c854a89aL },
|
|
{ 0x7e3764648104ab58L,0x167759137204fd6dL,0x86ca06a544ea1199L,
|
|
0xaa3f765b1c9240ddL,0x5f8501a924746149L,0x7b982e30dcd251d7L } },
|
|
/* 95 */
|
|
{ { 0xe44e9efcc15f3060L,0x5ad62f2ea87ebbe6L,0x36499d41c79500d4L,
|
|
0xa66d6dc0336fa9d1L,0xf8afc4955afd3b1fL,0x1d8ccb24e5c9822bL },
|
|
{ 0x4031422b79d7584bL,0xc54a0580ea3f20ddL,0x3f837c8f958468c5L,
|
|
0x3d82f110fbea7735L,0x679a87787dffe2fcL,0x48eba63b20704803L } },
|
|
/* 96 */
|
|
{ { 0x89b10d41df46e2f6L,0x13ab57f819514367L,0x067372b91d469c87L,
|
|
0x0c195afa4f6c5798L,0xea43a12a272c9acfL,0x9dadd8cb678abdacL },
|
|
{ 0xcce56c6be182579aL,0x86febadb2d26c2d8L,0x1c668ee12a44745cL,
|
|
0x580acd8698dc047aL,0x5a2b79cc51b9ec2dL,0x007da6084054f6a0L } },
|
|
/* 97 */
|
|
{ { 0x9e3ca35217b00dd0L,0x046779cb0e81a7a6L,0xb999fef3d482d871L,
|
|
0xe6f38134d9233fbcL,0x112c3001f48cd0e0L,0x934e75763c6c66aeL },
|
|
{ 0xb44d4fc3d73234dcL,0xfcae2062864eafc1L,0x843afe2526bef21aL,
|
|
0x61355107f3b75fdfL,0x8367a5aa794c2e6bL,0x3d2629b18548a372L } },
|
|
/* 98 */
|
|
{ { 0x6230618f437cfaf8L,0x5b8742cb2032c299L,0x949f72472293643aL,
|
|
0xb8040f1a09464f79L,0x049462d24f254143L,0xabd6b522366c7e76L },
|
|
{ 0x119b392bd5338f55L,0x1a80a9ce01495a0cL,0xf3118ca7f8d7537eL,
|
|
0xb715adc26bf4b762L,0x24506165a8482b6cL,0xd958d7c696a7c84dL } },
|
|
/* 99 */
|
|
{ { 0x9ad8aa87bdc21f31L,0xadb3cab48063e58cL,0xefd86283b07dd7b8L,
|
|
0xc7b9b7621be7c6b4L,0x2ef58741015582deL,0xc970c52e299addf3L },
|
|
{ 0x78f02e2a22f24d66L,0xefec1d1074cc100aL,0xaf2a6a3909316e1aL,
|
|
0xce7c22055849dd49L,0x9c1fe75c96bffc4cL,0xcad98fd27ba06ec0L } },
|
|
/* 100 */
|
|
{ { 0xed76e2d0b648b73eL,0xa9f92ce51cfd285eL,0xa8c86c062ed13de1L,
|
|
0x1d3a574ea5191a93L,0x385cdf8b1ad1b8bfL,0xbbecc28a47d2cfe3L },
|
|
{ 0x98d326c069cec548L,0x4f5bc1ddf240a0b2L,0x241a706229057236L,
|
|
0x0fc6e9c5c68294a4L,0x4d04838ba319f17aL,0x8b612cf19ffc1c6fL } },
|
|
/* 101 */
|
|
{ { 0x9bb0b5014c3830ebL,0x3d08f83c8ee0d0c5L,0xa4a6264279ba9389L,
|
|
0x5d5d40449cbc2914L,0xae9eb83e074c46f0L,0x63bb758f74ead7d6L },
|
|
{ 0x1c40d2eac6bb29e0L,0x95aa2d874b02f41eL,0x9298917553cb199aL,
|
|
0xdd91bafe51584f6dL,0x3715efb931a1aaecL,0xc1b6ae5b46780f9eL } },
|
|
/* 102 */
|
|
{ { 0xcded3e4b42772f41L,0x3a700d5d3bcb79d1L,0x4430d50e80feee60L,
|
|
0x444ef1fcf5e5d4bbL,0xc660194fe6e358ffL,0xe68a2f326a91b43cL },
|
|
{ 0x5842775c977fe4d2L,0x78fdef5c7e2a41ebL,0x5f3bec02ff8df00eL,
|
|
0xf4b840cd5852525dL,0x0870483a4e6988bdL,0x39499e39cc64b837L } },
|
|
/* 103 */
|
|
{ { 0xfc05de80b08df5feL,0x0c12957c63ba0362L,0xea379414d5cf1428L,
|
|
0xc559132a54ef6216L,0x33d5f12fb9e65cf8L,0x09c602781695d663L },
|
|
{ 0x3ac1ced461f7a2fbL,0xdd838444d4f5eeb8L,0x82a38c6c8318fcadL,
|
|
0x315be2e5e9f1a864L,0x317b5771442daf47L,0x81b5904a95aa5f9eL } },
|
|
/* 104 */
|
|
{ { 0x6b6b1c508b21d232L,0x87f3dbc08c2cba75L,0xa7e74b46ae9f0fafL,
|
|
0x036a0985bb7b8079L,0x4f185b908d974a25L,0x5aa7cef0d9af5ec9L },
|
|
{ 0xe0566a7057dcfffcL,0x6ea311dab8453225L,0x72ea1a8d23368aa9L,
|
|
0xed9b208348cd552dL,0xb987967cc80ea435L,0xad735c756c104173L } },
|
|
/* 105 */
|
|
{ { 0xaea85ab3cee76ef4L,0x44997444af1d2b93L,0x0851929beacb923fL,
|
|
0xb080b59051e3bc0cL,0xc4ee1d8659be68a2L,0xf00de21964b26cdaL },
|
|
{ 0x8d7fb5c0f2e90d4dL,0x00e219a777d9ec64L,0xc4e6febd5d1c491cL,
|
|
0x080e37541a8f4585L,0x4a9b86c848d2af9cL,0x2ed70db6b6679851L } },
|
|
/* 106 */
|
|
{ { 0xaee44116586f25cbL,0xf7b6861fa0fcf70fL,0x55d2cd2018a350e8L,
|
|
0x861bf3e592dc286fL,0x9ab18ffa6226aba7L,0xd15827bea9857b03L },
|
|
{ 0x26c1f54792e6acefL,0x422c63c8ac1fbac3L,0xa2d8760dfcbfd71dL,
|
|
0x35f6a539b2511224L,0xbaa88fa1048d1a21L,0x49f1abe9ebf999dbL } },
|
|
/* 107 */
|
|
{ { 0x16f9f4f4f7492b73L,0xcf28ec1ecb392b1aL,0x45b130d469ca6ffcL,
|
|
0x28ba8d40b72efa58L,0xace987c75ca066f5L,0x3e3992464ad022ebL },
|
|
{ 0x63a2d84e752555bbL,0xaaa93b4a9c2ae394L,0xcd80424ec89539caL,
|
|
0x6d6b5a6daa119a99L,0xbd50334c379f2629L,0x899e925eef3cc7d3L } },
|
|
/* 108 */
|
|
{ { 0xb7ff3651bf825dc4L,0x0f741cc440b9c462L,0x771ff5a95cc4fb5bL,
|
|
0xcb9e9c9b47fd56feL,0xbdf053db5626c0d3L,0xa97ce675f7e14098L },
|
|
{ 0x68afe5a36c934f5eL,0x6cd5e148ccefc46fL,0xc7758570d7a88586L,
|
|
0x49978f5edd558d40L,0xa1d5088a64ae00c1L,0x58f2a720f1d65bb2L } },
|
|
/* 109 */
|
|
{ { 0x66fdda4a3e4daedbL,0x38318c1265d1b052L,0x28d910a24c4bbf5cL,
|
|
0x762fe5c478a9cd14L,0x08e5ebaad2cc0aeeL,0xd2cdf257ca0c654cL },
|
|
{ 0x48f7c58b08b717d2L,0x3807184a386cd07aL,0x3240f626ae7d0112L,
|
|
0x03e9361bc43917b0L,0xf261a87620aea018L,0x53f556a47e1e6372L } },
|
|
/* 110 */
|
|
{ { 0xc84cee562f512a90L,0x24b3c0041b0ea9f1L,0x0ee15d2de26cc1eaL,
|
|
0xd848762cf0c9ef7dL,0x1026e9c5d5341435L,0x8f5b73dcfdb16b31L },
|
|
{ 0x1f69bef2d2c75d95L,0x8d33d581be064ddaL,0x8c024c1257ed35e6L,
|
|
0xf8d435f9c309c281L,0xfd295061d6960193L,0x66618d78e9e49541L } },
|
|
/* 111 */
|
|
{ { 0x571cfd458ce382deL,0x175806eede900ddeL,0x6184996534aba3b5L,
|
|
0xe899778ade7aec95L,0xe8f00f6eff4aa97fL,0xae971cb5010b0c6dL },
|
|
{ 0x1827eebc3af788f1L,0xd46229ffe413fe2dL,0x8a15455b4741c9b4L,
|
|
0x5f02e690f8e424ebL,0x40a1202edae87712L,0x49b3bda264944f6dL } },
|
|
/* 112 */
|
|
{ { 0xd63c6067035b2d69L,0xb507150d6bed91b0L,0x1f35f82f7afb39b2L,
|
|
0xb9bd9c0116012b66L,0x00d97960ed0a5f50L,0xed7054512716f7c9L },
|
|
{ 0x1576eff4127abdb4L,0x6850d698f01e701cL,0x9fa7d7493fc87e2fL,
|
|
0x0b6bcc6fb0ce3e48L,0xf4fbe1f5f7d8c1c0L,0xcf75230e02719cc6L } },
|
|
/* 113 */
|
|
{ { 0x6761d6c2722d94edL,0xd1ec3f213718820eL,0x65a40b7025d0e7c6L,
|
|
0xd67f830ebaf3cf31L,0x633b3807b93ea430L,0x17faa0ea0bc96c69L },
|
|
{ 0xe6bf3482df866b98L,0x205c1ee9a9db52d4L,0x51ef9bbdff9ab869L,
|
|
0x3863dad175eeb985L,0xef216c3bd3cf442aL,0x3fb228e3f9c8e321L } },
|
|
/* 114 */
|
|
{ { 0x94f9b70c0760ac07L,0xf3c9ccae9d79bf4dL,0x73cea084c5ffc83dL,
|
|
0xef50f943dc49c38eL,0xf467a2aebc9e7330L,0x5ee534b644ea7fbaL },
|
|
{ 0x20cb627203609e7fL,0x0984435562fdc9f0L,0xaf5c8e580f1457f7L,
|
|
0xd1f50a6cb4b25941L,0x77cb247c2ec82395L,0xa5f3e1e5da3dca33L } },
|
|
/* 115 */
|
|
{ { 0x023489d67d85fa94L,0x0ba405372db9ce47L,0x0fdf7a1faed7aad1L,
|
|
0xa57b0d739a4ccb40L,0x48fcec995b18967cL,0xf30b5b6eb7274d24L },
|
|
{ 0x7ccb4773c81c5338L,0xb85639e6a3ed6bd0L,0x7d9df95f1d56eadaL,
|
|
0xe256d57f0a1607adL,0x6da7ffdc957574d6L,0x65f8404601c7a8c4L } },
|
|
/* 116 */
|
|
{ { 0x8d45d0cbcba1e7f1L,0xef0a08c002b55f64L,0x771ca31b17e19892L,
|
|
0xe1843ecb4885907eL,0x67797ebc364ce16aL,0x816d2b2d8df4b338L },
|
|
{ 0xe870b0e539aa8671L,0x9f0db3e4c102b5f5L,0x342966591720c697L,
|
|
0x0ad4c89e613c0d2aL,0x1af900b2418ddd61L,0xe087ca72d336e20eL } },
|
|
/* 117 */
|
|
{ { 0x222831ffaba10079L,0x0dc5f87b6d64fff2L,0x445479073e8cb330L,
|
|
0xe815aaa2702a33fbL,0x338d6b2e5fba3215L,0x0f7535cb79f549c8L },
|
|
{ 0x471ecd972ee95923L,0x1e868b37c6d1c09fL,0x2bc7b8ecc666ef4eL,
|
|
0xf5416589808a4bfcL,0xf23e9ee23fbc4d2eL,0x4357236c2d75125bL } },
|
|
/* 118 */
|
|
{ { 0xfe176d95ba9cdb1bL,0x45a1ca012f82791eL,0x97654af24de4cca2L,
|
|
0xbdbf9d0e5cc4bcb9L,0xf6a7df50ad97ac0aL,0xc52112b061359fd6L },
|
|
{ 0x696d9ce34f05eae3L,0x903adc02e943ac2bL,0xa90753470848be17L,
|
|
0x1e20f1702a3973e5L,0xe1aacc1c6feb67e9L,0x2ca0ac32e16bc6b9L } },
|
|
/* 119 */
|
|
{ { 0xffea12e4ef871eb5L,0x94c2f25da8bf0a7aL,0x4d1e4c2a78134eaaL,
|
|
0x11ed16fb0360fb10L,0x4029b6db85fc11beL,0x5e9f7ab7f4d390faL },
|
|
{ 0x5076d72f30646612L,0xa0afed1ddda1d0d8L,0x2902225785a1d103L,
|
|
0xcb499e174e276bcdL,0x16d1da7151246c3dL,0xc72d56d3589a0443L } },
|
|
/* 120 */
|
|
{ { 0xdf5ffc74dae5bb45L,0x99068c4a261bd6dcL,0xdc0afa7aaa98ec7bL,
|
|
0xedd2ee00f121e96dL,0x163cc7be1414045cL,0xb0b1bbce335af50eL },
|
|
{ 0xd440d78501a06293L,0xcdebab7c6552e644L,0x48cb8dbc8c757e46L,
|
|
0x81f9cf783cabe3cbL,0xddd02611b123f59aL,0x3dc7b88eeeb3784dL } },
|
|
/* 121 */
|
|
{ { 0xe1b8d398c4741456L,0xa9dfa9026032a121L,0x1cbfc86d1263245bL,
|
|
0xf411c7625244718cL,0x96521d5405b0fc54L,0x1afab46edbaa4985L },
|
|
{ 0xa75902ba8674b4adL,0x486b43ad5ad87d12L,0x72b1c73636e0d099L,
|
|
0x39890e07bb6cd6d6L,0x8128999c59bace4eL,0xd8da430b7b535e33L } },
|
|
/* 122 */
|
|
{ { 0x39f65642c6b75791L,0x050947a621806bfbL,0x0ca3e3701362ef84L,
|
|
0x9bc60aed8c3d2391L,0x9b488671732e1ddcL,0x12d10d9ea98ee077L },
|
|
{ 0xb6f2822d3651b7dcL,0x6345a5ba80abd138L,0x62033262472d3c84L,
|
|
0xd54a1d40acc57527L,0x6ea46b3a424447cbL,0x5bc410572fb1a496L } },
|
|
/* 123 */
|
|
{ { 0xe70c57a3a751cd0eL,0x190d8419eba3c7d6L,0xb1c3bee79d47d55aL,
|
|
0xda941266f912c6d8L,0x12e9aacc407a6ad6L,0xd6ce5f116e838911L },
|
|
{ 0x063ca97b70e1f2ceL,0xa3e47c728213d434L,0xa016e24184df810aL,
|
|
0x688ad7b0dfd881a4L,0xa37d99fca89bf0adL,0xd8e3f339a23c2d23L } },
|
|
/* 124 */
|
|
{ { 0xbdf53163750bed6fL,0x808abc3283e68b0aL,0x85a366275bb08a33L,
|
|
0xf72a3a0f6b0e4abeL,0xf7716d19faf0c6adL,0x22dcc0205379b25fL },
|
|
{ 0x7400bf8df9a56e11L,0x6cb8bad756a47f21L,0x7c97176f7a6eb644L,
|
|
0xe8fd84f7d1f5b646L,0x98320a9444ddb054L,0x07071ba31dde86f5L } },
|
|
/* 125 */
|
|
{ { 0x6fdfa0e598f8fcb9L,0x89cec8e094d0d70cL,0xa0899397106d20a8L,
|
|
0x915bfb9aba8acc9cL,0x1370c94b5507e01cL,0x83246a608a821ffbL },
|
|
{ 0xa8273a9fbe3c378fL,0x7e54478935a25be9L,0x6cfa49724dd929d7L,
|
|
0x987fed9d365bd878L,0x4982ac945c29a7aeL,0x4589a5d75ddd7ec5L } },
|
|
/* 126 */
|
|
{ { 0x9fabb174a95540a9L,0x7cfb886f0162c5b0L,0x17be766bea3dee18L,
|
|
0xff7da41fe88e624cL,0xad0b71eb8b919c38L,0x86a522e0f31ff9a9L },
|
|
{ 0xbc8e6f72868bc259L,0x6130c6383ccef9e4L,0x09f1f4549a466555L,
|
|
0x8e6c0f0919b2bfb4L,0x945c46c90ca7bb22L,0xacd871684dafb67bL } },
|
|
/* 127 */
|
|
{ { 0x090c72ca10c53841L,0xc20ae01b55a4fcedL,0x03f7ebd5e10234adL,
|
|
0xb3f42a6a85892064L,0xbdbc30c0b4a14722L,0x971bc4378ca124ccL },
|
|
{ 0x6f79f46d517ff2ffL,0x6a9c96e2ecba947bL,0x5e79f2f462925122L,
|
|
0x30a96bb16a4e91f1L,0x1147c9232d4c72daL,0x65bc311f5811e4dfL } },
|
|
/* 128 */
|
|
{ { 0x87c7dd7d139b3239L,0x8b57824e4d833baeL,0xbcbc48789fff0015L,
|
|
0x8ffcef8b909eaf1aL,0x9905f4eef1443a78L,0x020dd4a2e15cbfedL },
|
|
{ 0xca2969eca306d695L,0xdf940cadb93caf60L,0x67f7fab787ea6e39L,
|
|
0x0d0ee10ff98c4fe5L,0xc646879ac19cb91eL,0x4b4ea50c7d1d7ab4L } },
|
|
/* 129 */
|
|
{ { 0x19e409457a0db57eL,0xe6017cad9a8c9702L,0xdbf739e51be5cff9L,
|
|
0x3646b3cda7a938a2L,0x0451108568350dfcL,0xad3bd6f356e098b5L },
|
|
{ 0x935ebabfee2e3e3eL,0xfbd01702473926cbL,0x7c735b029e9fb5aaL,
|
|
0xc52a1b852e3feff0L,0x9199abd3046b405aL,0xe306fcec39039971L } },
|
|
/* 130 */
|
|
{ { 0xd6d9aec823e4712cL,0x7ca8376cc3c198eeL,0xe6d8318731bebd8aL,
|
|
0xed57aff3d88bfef3L,0x72a645eecf44edc7L,0xd4e63d0b5cbb1517L },
|
|
{ 0x98ce7a1cceee0ecfL,0x8f0126335383ee8eL,0x3b879078a6b455e8L,
|
|
0xcbcd3d96c7658c06L,0x721d6fe70783336aL,0xf21a72635a677136L } },
|
|
/* 131 */
|
|
{ { 0x19d8b3cd9586ba11L,0xd9e0aeb28a5c0480L,0xe4261dbf2230ef5cL,
|
|
0x095a9dee02e6bf09L,0x8963723c80dc7784L,0x5c97dbaf145157b1L },
|
|
{ 0x97e744344bc4503eL,0x0fb1cb3185a6b370L,0x3e8df2becd205d4bL,
|
|
0x497dd1bcf8f765daL,0x92ef95c76c988a1aL,0x3f924baa64dc4cfaL } },
|
|
/* 132 */
|
|
{ { 0x6bf1b8dd7268b448L,0xd4c28ba1efd79b94L,0x2fa1f8c8e4e3551fL,
|
|
0x769e3ad45c9187a9L,0x28843b4d40326c0dL,0xfefc809450d5d669L },
|
|
{ 0x30c85bfd90339366L,0x4eeb56f15ccf6c3aL,0x0e72b14928ccd1dcL,
|
|
0x73ee85b5f2ce978eL,0xcdeb2bf33165bb23L,0x8106c9234e410abfL } },
|
|
/* 133 */
|
|
{ { 0xc8df01617d02f4eeL,0x8a78154718e21225L,0x4ea895eb6acf9e40L,
|
|
0x8b000cb56e5a633dL,0xf31d86d57e981ffbL,0xf5c8029c4475bc32L },
|
|
{ 0x764561ce1b568973L,0x2f809b81a62996ecL,0x9e513d64da085408L,
|
|
0xc27d815de61ce309L,0x0da6ff99272999e0L,0xbd284779fead73f7L } },
|
|
/* 134 */
|
|
{ { 0x6033c2f99b1cdf2bL,0x2a99cf06bc5fa151L,0x7d27d25912177b3bL,
|
|
0xb1f15273c4485483L,0x5fd57d81102e2297L,0x3d43e017c7f6acb7L },
|
|
{ 0x41a8bb0b3a70eb28L,0x67de2d8e3e80b06bL,0x09245a4170c28de5L,
|
|
0xad7dbcb1a7b26023L,0x70b08a352cbc6c1eL,0xb504fb669b33041fL } },
|
|
/* 135 */
|
|
{ { 0xa8e85ab5f97a27c2L,0x6ac5ec8bc10a011bL,0x55745533ffbcf161L,
|
|
0x01780e8565790a60L,0xe451bf8599ee75b0L,0x8907a63b39c29881L },
|
|
{ 0x76d46738260189edL,0x284a443647bd35cbL,0xd74e8c4020cab61eL,
|
|
0x6264bf8c416cf20aL,0xfa5a6c955fd820ceL,0xfa7154d0f24bb5fcL } },
|
|
/* 136 */
|
|
{ { 0x18482cec9b3f5034L,0x962d445acd9e68fdL,0x266fb1d695746f23L,
|
|
0xc66ade5a58c94a4bL,0xdbbda826ed68a5b6L,0x05664a4d7ab0d6aeL },
|
|
{ 0xbcd4fe51025e32fcL,0x61a5aebfa96df252L,0xd88a07e231592a31L,
|
|
0x5d9d94de98905517L,0x96bb40105fd440e7L,0x1b0c47a2e807db4cL } },
|
|
/* 137 */
|
|
{ { 0x5c2a6ac808223878L,0xba08c269e65a5558L,0xd22b1b9b9bbc27fdL,
|
|
0x919171bf72b9607dL,0x9ab455f9e588dc58L,0x6d54916e23662d93L },
|
|
{ 0x8da8e9383b1de0c1L,0xa84d186a804f278fL,0xbf4988ccd3461695L,
|
|
0xf5eae3bee10eb0cbL,0x1ff8b68fbf2a66edL,0xa68daf67c305b570L } },
|
|
/* 138 */
|
|
{ { 0xc1004cff44b2e045L,0x91b5e1364b1c05d4L,0x53ae409088a48a07L,
|
|
0x73fb2995ea11bb1aL,0x320485703d93a4eaL,0xcce45de83bfc8a5fL },
|
|
{ 0xaff4a97ec2b3106eL,0x9069c630b6848b4fL,0xeda837a6ed76241cL,
|
|
0x8a0daf136cc3f6cfL,0x199d049d3da018a8L,0xf867c6b1d9093ba3L } },
|
|
/* 139 */
|
|
{ { 0xe4d42a5656527296L,0xae26c73dce71178dL,0x70a0adac6c251664L,
|
|
0x813483ae5dc0ae1dL,0x7574eacddaab2dafL,0xc56b52dcc2d55f4fL },
|
|
{ 0x872bc16795f32923L,0x4be175815bdd2a89L,0x9b57f1e7a7699f00L,
|
|
0x5fcd9c723ac2de02L,0x83af3ba192377739L,0xa64d4e2bfc50b97fL } },
|
|
/* 140 */
|
|
{ { 0x2172dae20e552b40L,0x62f49725d34d52e8L,0x7930ee4007958f98L,
|
|
0x56da2a90751fdd74L,0xf1192834f53e48c3L,0x34d2ac268e53c343L },
|
|
{ 0x1073c21813111286L,0x201dac14da9d9827L,0xec2c29dbee95d378L,
|
|
0x9316f1191f3ee0b1L,0x7890c9f0544ce71cL,0xd77138af27612127L } },
|
|
/* 141 */
|
|
{ { 0x78045e6d3b4ad1cdL,0xcd86b94e4aa49bc1L,0x57e51f1dfd677a16L,
|
|
0xd9290935fa613697L,0x7a3f959334f4d893L,0x8c9c248b5d5fcf9bL },
|
|
{ 0x9f23a4826f70d4e9L,0x1727345463190ae9L,0x4bdd7c135b081a48L,
|
|
0x1e2de38928d65271L,0x0bbaaa25e5841d1fL,0xc4c18a79746772e5L } },
|
|
/* 142 */
|
|
{ { 0x10ee2681593375acL,0x4f3288be7dd5e113L,0x9a97b2fb240f3538L,
|
|
0xfa11089f1de6b1e2L,0x516da5621351bc58L,0x573b61192dfa85b5L },
|
|
{ 0x89e966836cba7df5L,0xf299be158c28ab40L,0xe91c9348ad43fcbfL,
|
|
0xe9bbc7cc9a1cefb3L,0xc8add876738b2775L,0x6e3b1f2e775eaa01L } },
|
|
/* 143 */
|
|
{ { 0x0365a888b677788bL,0x634ae8c43fd6173cL,0x304987619e498dbeL,
|
|
0x08c43e6dc8f779abL,0x068ae3844c09aca9L,0x2380c70b2018d170L },
|
|
{ 0xcf77fbc3a297c5ecL,0xdacbc853ca457948L,0x3690de04336bec7eL,
|
|
0x26bbac6414eec461L,0xd1c23c7e1f713abfL,0xf08bbfcde6fd569eL } },
|
|
/* 144 */
|
|
{ { 0x5f8163f484770ee3L,0x0e0c7f94744a1706L,0x9c8f05f7e1b2d46dL,
|
|
0x417eafe7d01fd99aL,0x2ba15df511440e5bL,0xdc5c552a91a6fbcfL },
|
|
{ 0x86271d74a270f721L,0x32c0a075a004485bL,0x9d1a87e38defa075L,
|
|
0xb590a7acbf0d20feL,0x430c41c28feda1f5L,0x454d287958f6ec24L } },
|
|
/* 145 */
|
|
{ { 0x52b7a6357c525435L,0x3d9ef57f37c4bdbcL,0x2bb93e9edffcc475L,
|
|
0xf7b8ba987710f3beL,0x42ee86da21b727deL,0x55ac3f192e490d01L },
|
|
{ 0x487e3a6ec0c1c390L,0x036fb345446cde7bL,0x089eb276496ae951L,
|
|
0xedfed4d971ed1234L,0x661b0dd5900f0b46L,0x11bd6f1b8582f0d3L } },
|
|
/* 146 */
|
|
{ { 0x5cf9350f076bc9d1L,0x15d903becf3cd2c3L,0x21cfc8c225af031cL,
|
|
0xe0ad32488b1cc657L,0xdd9fb96370014e87L,0xf0f3a5a1297f1658L },
|
|
{ 0xbb908fbaf1f703aaL,0x2f9cc4202f6760baL,0x00ceec6666a38b51L,
|
|
0x4deda33005d645daL,0xb9cf5c72f7de3394L,0xaeef65021ad4c906L } },
|
|
/* 147 */
|
|
{ { 0x0583c8b17a19045dL,0xae7c3102d052824cL,0x2a234979ff6cfa58L,
|
|
0xfe9dffc962c733c0L,0x3a7fa2509c0c4b09L,0x516437bb4fe21805L },
|
|
{ 0x9454e3d5c2a23ddbL,0x0726d887289c104eL,0x8977d9184fd15243L,
|
|
0xc559e73f6d7790baL,0x8fd3e87d465af85fL,0xa2615c745feee46bL } },
|
|
/* 148 */
|
|
{ { 0xc8d607a84335167dL,0x8b42d804e0f5c887L,0x5f9f13df398d11f9L,
|
|
0x5aaa508720740c67L,0x83da9a6aa3d9234bL,0xbd3a5c4e2a54bad1L },
|
|
{ 0xdd13914c2db0f658L,0x29dcb66e5a3f373aL,0xbfd62df55245a72bL,
|
|
0x19d1802391e40847L,0xd9df74dbb136b1aeL,0x72a06b6b3f93bc5bL } },
|
|
/* 149 */
|
|
{ { 0x6da19ec3ad19d96fL,0xb342daa4fb2a4099L,0x0e61633a662271eaL,
|
|
0x3bcece81ce8c054bL,0x7cc8e0618bd62dc6L,0xae189e19ee578d8bL },
|
|
{ 0x73e7a25ddced1eedL,0xc1257f0a7875d3abL,0x2cb2d5a21cfef026L,
|
|
0xd98ef39bb1fdf61cL,0xcd8e6f6924e83e6cL,0xd71e7076c7b7088bL } },
|
|
/* 150 */
|
|
{ { 0x339368309d4245bfL,0x22d962172ac2953bL,0xb3bf5a8256c3c3cdL,
|
|
0x50c9be910d0699e8L,0xec0944638f366459L,0x6c056dba513b7c35L },
|
|
{ 0x687a6a83045ab0e3L,0x8d40b57f445c9295L,0x0f345048a16f5954L,
|
|
0x64b5c6393d8f0a87L,0x106353a29f71c5e2L,0xdd58b475874f0dd4L } },
|
|
/* 151 */
|
|
{ { 0x67ec084f62230c72L,0xf14f6cca481385e3L,0xf58bb4074cda7774L,
|
|
0xe15011b1aa2dbb6bL,0xd488369d0c035ab1L,0xef83c24a8245f2fdL },
|
|
{ 0xfb57328f9fdc2538L,0x79808293191fe46aL,0xe28f5c4432ede548L,
|
|
0x1b3cda99ea1a022cL,0x39e639b73df2ec7fL,0x77b6272b760e9a18L } },
|
|
/* 152 */
|
|
{ { 0x2b1d51bda65d56d5L,0x3a9b71f97ea696e0L,0x95250ecc9904f4c4L,
|
|
0x8bc4d6ebe75774b7L,0x0e343f8aeaeeb9aaL,0xc473c1d1930e04cbL },
|
|
{ 0x282321b1064cd8aeL,0xf4b4371e5562221cL,0xc1cc81ecd1bf1221L,
|
|
0xa52a07a9e2c8082fL,0x350d8e59ba64a958L,0x29e4f3de6fb32c9aL } },
|
|
/* 153 */
|
|
{ { 0x0aa9d56cba89aaa5L,0xf0208ac0c4c6059eL,0x7400d9c6bd6ddca4L,
|
|
0xb384e475f2c2f74aL,0x4c1061fcb1562dd3L,0x3924e2482e153b8dL },
|
|
{ 0xf38b8d98849808abL,0x29bf3260a491aa36L,0x85159ada88220edeL,
|
|
0x8b47915bbe5bc422L,0xa934d72ed7300967L,0xc4f303982e515d0dL } },
|
|
/* 154 */
|
|
{ { 0xe3e9ee421b1de38bL,0xa124e25a42636760L,0x90bf73c090165b1aL,
|
|
0x21802a34146434c5L,0x54aa83f22e1fa109L,0x1d4bd03ced9c51e9L },
|
|
{ 0xc2d96a38798751e6L,0xed27235f8c3507f5L,0xb5fb80e2c8c24f88L,
|
|
0xf873eefad37f4f78L,0x7229fd74f224ba96L,0x9dcd91999edd7149L } },
|
|
/* 155 */
|
|
{ { 0xee9f81a64e94f22aL,0xe5609892f71ec341L,0x6c818ddda998284eL,
|
|
0x9fd472953b54b098L,0x47a6ac030e8a7cc9L,0xde684e5eb207a382L },
|
|
{ 0x4bdd1ecd2b6b956bL,0x09084414f01b3583L,0xe2f80b3255233b14L,
|
|
0x5a0fec54ef5ebc5eL,0x74cf25e6bf8b29a2L,0x1c757fa07f29e014L } },
|
|
/* 156 */
|
|
{ { 0x1bcb5c4aeb0fdfe4L,0xd7c649b3f0899367L,0xaef68e3f05bc083bL,
|
|
0x57a06e46a78aa607L,0xa2136ecc21223a44L,0x89bd648452f5a50bL },
|
|
{ 0x724411b94455f15aL,0x23dfa97008a9c0fdL,0x7b0da4d16db63befL,
|
|
0x6f8a7ec1fb162443L,0xc1ac9ceee98284fbL,0x085a582b33566022L } },
|
|
/* 157 */
|
|
{ { 0x15cb61f9ec1f138aL,0x11c9a230668f0c28L,0xac829729df93f38fL,
|
|
0xcef256984048848dL,0x3f686da02bba8fbfL,0xed5fea78111c619aL },
|
|
{ 0x9b4f73bcd6d1c833L,0x5095160686e7bf80L,0xa2a73508042b1d51L,
|
|
0x9ef6ea495fb89ec2L,0xf1008ce95ef8b892L,0x78a7e6849ae8568bL } },
|
|
/* 158 */
|
|
{ { 0x3fe83a7c10470cd8L,0x92734682f86df000L,0xb5dac06bda9409b5L,
|
|
0x1e7a966094939c5fL,0xdec6c1505cc116dcL,0x1a52b40866bac8ccL },
|
|
{ 0x5303a3656e864045L,0x45eae72a9139efc1L,0x83bec6466f31d54fL,
|
|
0x2fb4a86f6e958a6dL,0x6760718e4ff44030L,0x008117e3e91ae0dfL } },
|
|
/* 159 */
|
|
{ { 0x5d5833ba384310a2L,0xbdfb4edc1fd6c9fcL,0xb9a4f102849c4fb8L,
|
|
0xe5fb239a581c1e1fL,0xba44b2e7d0a9746dL,0x78f7b7683bd942b9L },
|
|
{ 0x076c8ca1c87607aeL,0x82b23c2ed5caaa7eL,0x6a581f392763e461L,
|
|
0xca8a5e4a3886df11L,0xc87e90cf264e7f22L,0x04f74870215cfcfcL } },
|
|
/* 160 */
|
|
{ { 0x5285d116141d161cL,0x67cd2e0e93c4ed17L,0x12c62a647c36187eL,
|
|
0xf5329539ed2584caL,0xc4c777c442fbbd69L,0x107de7761bdfc50aL },
|
|
{ 0x9976dcc5e96beebdL,0xbe2aff95a865a151L,0x0e0a9da19d8872afL,
|
|
0x5e357a3da63c17ccL,0xd31fdfd8e15cc67cL,0xc44bbefd7970c6d8L } },
|
|
/* 161 */
|
|
{ { 0x703f83e24c0c62f1L,0x9b1e28ee4e195572L,0x6a82858bfe26ccedL,
|
|
0xd381c84bc43638faL,0x94f72867a5ba43d8L,0x3b4a783d10b82743L },
|
|
{ 0xee1ad7b57576451eL,0xc3d0b59714b6b5c8L,0x3dc30954fcacc1b8L,
|
|
0x55df110e472c9d7bL,0x97c86ed702f8a328L,0xd043341388dc098fL } },
|
|
/* 162 */
|
|
{ { 0x1a60d1522ca8f2feL,0x61640948491bd41fL,0x6dae29a558dfe035L,
|
|
0x9a615bea278e4863L,0xbbdb44779ad7c8e5L,0x1c7066302ceac2fcL },
|
|
{ 0x5e2b54c699699b4bL,0xb509ca6d239e17e8L,0x728165feea063a82L,
|
|
0x6b5e609db6a22e02L,0x12813905b26ee1dfL,0x07b9f722439491faL } },
|
|
/* 163 */
|
|
{ { 0x1592ec1448ff4e49L,0x3e4e9f176d644129L,0x7acf82881156acc0L,
|
|
0x5aa34ba8bb092b0bL,0xcd0f90227d38393dL,0x416724ddea4f8187L },
|
|
{ 0x3c4e641cc0139e73L,0xe0fe46cf91e4d87dL,0xedb3c792cab61f8aL,
|
|
0x4cb46de4d3868753L,0xe449c21d20f1098aL,0x5e5fd059f5b8ea6eL } },
|
|
/* 164 */
|
|
{ { 0x7fcadd4675856031L,0x89c7a4cdeaf2fbd0L,0x1af523ce7a87c480L,
|
|
0xe5fc109561d9ae90L,0x3fb5864fbcdb95f5L,0xbeb5188ebb5b2c7dL },
|
|
{ 0x3d1563c33ae65825L,0x116854c40e57d641L,0x11f73d341942ebd3L,
|
|
0x24dc5904c06955b3L,0x8a0d4c83995a0a62L,0xfb26b86d5d577b7dL } },
|
|
/* 165 */
|
|
{ { 0xc53108e7c686ae17L,0x9090d739d1c1da56L,0x4583b0139aec50aeL,
|
|
0xdd9a088ba49a6ab2L,0x28192eeaf382f850L,0xcc8df756f5fe910eL },
|
|
{ 0x877823a39cab7630L,0x64984a9afb8e7fc1L,0x5448ef9c364bfc16L,
|
|
0xbbb4f871c44e2a9aL,0x901a41ab435c95e9L,0xc6c23e5faaa50a06L } },
|
|
/* 166 */
|
|
{ { 0xb78016c19034d8ddL,0x856bb44b0b13e79bL,0x85c6409ab3241a05L,
|
|
0x8d2fe19a2d78ed21L,0xdcc7c26d726eddf2L,0x3ccaff5f25104f04L },
|
|
{ 0x397d7edc6b21f843L,0xda88e4dde975de4cL,0x5273d3964f5ab69eL,
|
|
0x537680e39aae6cc0L,0xf749cce53e6f9461L,0x021ddbd9957bffd3L } },
|
|
/* 167 */
|
|
{ { 0x7b64585f777233cfL,0xfe6771f60942a6f0L,0x636aba7adfe6eef0L,
|
|
0x63bbeb5686038029L,0xacee5842de8fcf36L,0x48d9aa99d4a20524L },
|
|
{ 0xcff7a74c0da5e57aL,0xc232593ce549d6c9L,0x68504bccf0f2287bL,
|
|
0x6d7d098dbc8360b5L,0xeac5f1495b402f41L,0x61936f11b87d1bf1L } },
|
|
/* 168 */
|
|
{ { 0xaa9da167b8153a9dL,0xa49fe3ac9e83ecf0L,0x14c18f8e1b661384L,
|
|
0x61c24dab38434de1L,0x3d973c3a283dae96L,0xc99baa0182754fc9L },
|
|
{ 0x477d198f4c26b1e3L,0x12e8e186a7516202L,0x386e52f6362addfaL,
|
|
0x31e8f695c3962853L,0xdec2af136aaedb60L,0xfcfdb4c629cf74acL } },
|
|
/* 169 */
|
|
{ { 0x6b3ee958cca40298L,0xc3878153f2f5d195L,0x0c565630ed2eae5bL,
|
|
0xd089b37e3a697cf2L,0xc2ed2ac7ad5029eaL,0x7e5cdfad0f0dda6aL },
|
|
{ 0xf98426dfd9b86202L,0xed1960b14335e054L,0x1fdb02463f14639eL,
|
|
0x17f709c30db6c670L,0xbfc687ae773421e1L,0x13fefc4a26c1a8acL } },
|
|
/* 170 */
|
|
{ { 0xe361a1987ffa0a5fL,0xf4b26102c63fe109L,0x264acbc56c74e111L,
|
|
0x4af445fa77abebafL,0x448c4fdd24cddb75L,0x0b13157d44506eeaL },
|
|
{ 0x22a6b15972e9993dL,0x2c3c57e485e5ecbeL,0xa673560bfd83e1a1L,
|
|
0x6be23f82c3b8c83bL,0x40b13a9640bbe38eL,0x66eea033ad17399bL } },
|
|
/* 171 */
|
|
{ { 0x49fc6e95b4c6c693L,0xefc735de36af7d38L,0xe053343d35fe42fcL,
|
|
0xf0aa427c6a9ab7c3L,0xc79f04364a0fcb24L,0x1628724393ebbc50L },
|
|
{ 0x5c3d6bd016927e1eL,0x40158ed2673b984cL,0xa7f86fc84cd48b9aL,
|
|
0x1643eda660ea282dL,0x45b393eae2a1beedL,0x664c839e19571a94L } },
|
|
/* 172 */
|
|
{ { 0x5774575027eeaf94L,0x2875c925ea99e1e7L,0xc127e7ba5086adeaL,
|
|
0x765252a086fe424fL,0x1143cc6c2b6c0281L,0xc9bb2989d671312dL },
|
|
{ 0x880c337c51acb0a5L,0xa3710915d3c60f78L,0x496113c09262b6edL,
|
|
0x5d25d9f89ce48182L,0x53b6ad72b3813586L,0x0ea3bebc4c0e159cL } },
|
|
/* 173 */
|
|
{ { 0xcaba450ac5e49beaL,0x684e54157c05da59L,0xa2e9cab9de7ac36cL,
|
|
0x4ca79b5f2e6f957bL,0xef7b024709b817b1L,0xeb3049907d89df0fL },
|
|
{ 0x508f730746fe5096L,0x695810e82e04eaafL,0x88ef1bd93512f76cL,
|
|
0x776613513ebca06bL,0xf7d4863accf158b7L,0xb2a81e4494ee57daL } },
|
|
/* 174 */
|
|
{ { 0xff288e5b6d53e6baL,0xa90de1a914484ea2L,0x2fadb60ced33c8ecL,
|
|
0x579d6ef328b66a40L,0x4f2dd6ddec24372dL,0xe9e33fc91d66ec7dL },
|
|
{ 0x110899d2039eab6eL,0xa31a667a3e97bb5eL,0x6200166dcfdce68eL,
|
|
0xbe83ebae5137d54bL,0x085f7d874800acdfL,0xcf4ab1330c6f8c86L } },
|
|
/* 175 */
|
|
{ { 0x03f65845931e08fbL,0x6438551e1506e2c0L,0x5791f0dc9c36961fL,
|
|
0x68107b29e3dcc916L,0x83242374f495d2caL,0xd8cfb6636ee5895bL },
|
|
{ 0x525e0f16a0349b1bL,0x33cd2c6c4a0fab86L,0x46c12ee82af8dda9L,
|
|
0x7cc424ba71e97ad3L,0x69766ddf37621eb0L,0x95565f56a5f0d390L } },
|
|
/* 176 */
|
|
{ { 0xe0e7bbf21a0f5e94L,0xf771e1151d82d327L,0x10033e3dceb111faL,
|
|
0xd269744dd3426638L,0xbdf2d9da00d01ef6L,0x1cb80c71a049ceafL },
|
|
{ 0x17f183289e21c677L,0x6452af0519c8f98bL,0x35b9c5f780b67997L,
|
|
0x5c2e1cbe40f8f3d4L,0x43f9165666d667caL,0x9faaa059cf9d6e79L } },
|
|
/* 177 */
|
|
{ { 0x8ad246180a078fe6L,0xf6cc73e6464fd1ddL,0x4d2ce34dc3e37448L,
|
|
0x624950c5e3271b5fL,0x62910f5eefc5af72L,0x8b585bf8aa132bc6L },
|
|
{ 0x11723985a839327fL,0x34e2d27d4aac252fL,0x402f59ef6296cc4eL,
|
|
0x00ae055c47053de9L,0xfc22a97228b4f09bL,0xa9e86264fa0c180eL } },
|
|
/* 178 */
|
|
{ { 0x0b7b6224bc310eccL,0x8a1a74f167fa14edL,0x87dd09607214395cL,
|
|
0xdf1b3d09f5c91128L,0x39ff23c686b264a8L,0xdc2d49d03e58d4c5L },
|
|
{ 0x2152b7d3a9d6f501L,0xf4c32e24c04094f7L,0xc6366596d938990fL,
|
|
0x084d078f94fb207fL,0xfd99f1d7328594cbL,0x36defa64cb2d96b3L } },
|
|
/* 179 */
|
|
{ { 0x4619b78113ed7cbeL,0x95e500159784bd0eL,0x2a32251c2c7705feL,
|
|
0xa376af995f0dd083L,0x55425c6c0361a45bL,0x812d2cef1f291e7bL },
|
|
{ 0xccf581a05fd94972L,0x26e20e39e56dc383L,0x0093685d63dbfbf0L,
|
|
0x1fc164cc36b8c575L,0xb9c5ab81390ef5e7L,0x40086beb26908c66L } },
|
|
/* 180 */
|
|
{ { 0xe5e54f7937e3c115L,0x69b8ee8cc1445a8aL,0x79aedff2b7659709L,
|
|
0xe288e1631b46fbe6L,0xdb4844f0d18d7bb7L,0xe0ea23d048aa6424L },
|
|
{ 0x714c0e4ef3d80a73L,0x87a0aa9e3bd64f98L,0x8844b8a82ec63080L,
|
|
0xe0ac9c30255d81a3L,0x86151237455397fcL,0x0b9794642f820155L } },
|
|
/* 181 */
|
|
{ { 0x127a255a4ae03080L,0x232306b4580a89fbL,0x04e8cd6a6416f539L,
|
|
0xaeb70dee13b02a0eL,0xa3038cf84c09684aL,0xa710ec3c28e433eeL },
|
|
{ 0x77a72567681b1f7dL,0x86fbce952fc28170L,0xd3408683f5735ac8L,
|
|
0x3a324e2a6bd68e93L,0x7ec74353c027d155L,0xab60354cd4427177L } },
|
|
/* 182 */
|
|
{ { 0x32a5342aef4c209dL,0x2ba7527408d62704L,0x4bb4af6fc825d5feL,
|
|
0x1c3919ced28e7ff1L,0x1dfc2fdcde0340f6L,0xc6580baf29f33ba9L },
|
|
{ 0xae121e7541d442cbL,0x4c7727fd3a4724e4L,0xe556d6a4524f3474L,
|
|
0x87e13cc7785642a2L,0x182efbb1a17845fdL,0xdcec0cf14e144857L } },
|
|
/* 183 */
|
|
{ { 0x1cb89541e9539819L,0xc8cb3b4f9d94dbf1L,0x1d353f63417da578L,
|
|
0xb7a697fb8053a09eL,0x8d841731c35d8b78L,0x85748d6fb656a7a9L },
|
|
{ 0x1fd03947c1859c5dL,0x6ce965c1535d22a2L,0x1966a13e0ca3aadcL,
|
|
0x9802e41d4fb14effL,0xa9048cbb76dd3fcdL,0x89b182b5e9455bbaL } },
|
|
/* 184 */
|
|
{ { 0xd777ad6a43360710L,0x841287ef55e9936bL,0xbaf5c67004a21b24L,
|
|
0xf2c0725f35ad86f1L,0x338fa650c707e72eL,0x2bf8ed2ed8883e52L },
|
|
{ 0xb0212cf4b56e0d6aL,0x50537e126843290cL,0xd8b184a198b3dc6fL,
|
|
0xd2be9a350210b722L,0x407406db559781eeL,0x5a78d5910bc18534L } },
|
|
/* 185 */
|
|
{ { 0x4d57aa2ad748b02cL,0xbe5b3451a12b3b95L,0xadca7a4564711258L,
|
|
0x597e091a322153dbL,0xf327100632eb1eabL,0xbd9adcba2873f301L },
|
|
{ 0xd1dc79d138543f7fL,0x00022092921b1fefL,0x86db3ef51e5df8edL,
|
|
0x888cae049e6b944aL,0x71bd29ec791a32b4L,0xd3516206a6d1c13eL } },
|
|
/* 186 */
|
|
{ { 0x2ef6b95255924f43L,0xd2f401ae4f9de8d5L,0xfc73e8d7adc68042L,
|
|
0x627ea70c0d9d1bb4L,0xc3bb3e3ebbf35679L,0x7e8a254ad882dee4L },
|
|
{ 0x08906f50b5924407L,0xf14a0e61a1ad444aL,0xaa0efa2165f3738eL,
|
|
0xd60c7dd6ae71f161L,0x9e8390faf175894dL,0xd115cd20149f4c00L } },
|
|
/* 187 */
|
|
{ { 0x2f2e2c1da52abf77L,0xc2a0dca554232568L,0xed423ea254966dccL,
|
|
0xe48c93c7cd0dd039L,0x1e54a225176405c7L,0x1efb5b1670d58f2eL },
|
|
{ 0xa751f9d994fb1471L,0xfdb31e1f67d2941dL,0xa6c74eb253733698L,
|
|
0xd3155d1189a0f64aL,0x4414cfe4a4b8d2b6L,0x8d5a4be8f7a8e9e3L } },
|
|
/* 188 */
|
|
{ { 0x5c96b4d452669e98L,0x4547f9228fd42a03L,0xcf5c1319d285174eL,
|
|
0x805cd1ae064bffa0L,0x50e8bc4f246d27e7L,0xf89ef98fd5781e11L },
|
|
{ 0xb4ff95f6dee0b63fL,0xad850047222663a4L,0x026918604d23ce9cL,
|
|
0x3e5309ce50019f59L,0x27e6f72269a508aeL,0xe9376652267ba52cL } },
|
|
/* 189 */
|
|
{ { 0xa04d289cc0368708L,0xc458872f5e306e1dL,0x76fa23de33112feaL,
|
|
0x718e39746efde42eL,0xf0c98cdc1d206091L,0x5fa3ca6214a71987L },
|
|
{ 0xeee8188bdcaa9f2aL,0x312cc732589a860dL,0xf9808dd6c63aeb1fL,
|
|
0x70fd43db4ea62b53L,0x2c2bfe34890b6e97L,0x105f863cfa426aa6L } },
|
|
/* 190 */
|
|
{ { 0x0b29795db38059adL,0x5686b77e90647ea0L,0xeff0470edb473a3eL,
|
|
0x278d2340f9b6d1e2L,0xebbff95bbd594ec7L,0xf4b72334d3a7f23dL },
|
|
{ 0x2a285980a5a83f0bL,0x0786c41a9716a8b3L,0x138901bd22511812L,
|
|
0xd1b55221e2fede6eL,0x0806e264df4eb590L,0x6c4c897e762e462eL } },
|
|
/* 191 */
|
|
{ { 0xd10b905fb4b41d9dL,0x826ca4664523a65bL,0x535bbd13b699fa37L,
|
|
0x5b9933d773bc8f90L,0x9332d61fcd2118adL,0x158c693ed4a65fd0L },
|
|
{ 0x4ddfb2a8e6806e63L,0xe31ed3ecb5de651bL,0xf9460e51819bc69aL,
|
|
0x6229c0d62c76b1f8L,0xbb78f231901970a3L,0x31f3820f9cee72b8L } },
|
|
/* 192 */
|
|
{ { 0xe931caf2c09e1c72L,0x0715f29812990cf4L,0x33aad81d943262d8L,
|
|
0x5d292b7a73048d3fL,0xb152aaa4dc7415f6L,0xc3d10fd90fd19587L },
|
|
{ 0xf76b35c575ddadd0L,0x9f5f4a511e7b694cL,0x2f1ab7ebc0663025L,
|
|
0x01c9cc87920260b0L,0xc4b1f61a05d39da6L,0x6dcd76c4eb4a9c4eL } },
|
|
/* 193 */
|
|
{ { 0x0ba0916ffdc83f01L,0x354c8b449553e4f9L,0xa6cc511affc5e622L,
|
|
0xb954726ae95be787L,0xcb04811575b41a62L,0xfa2ae6cdebfde989L },
|
|
{ 0x6376bbc70f24659aL,0x13a999fd4c289c43L,0xc7134184ec9abd8bL,
|
|
0x28c02bf6a789ab04L,0xff841ebcd3e526ecL,0x442b191e640893a8L } },
|
|
/* 194 */
|
|
{ { 0x4cac6c62fa2b6e20L,0x97f29e9bf6d69861L,0x228ab1dbbc96d12dL,
|
|
0x6eb913275e8e108dL,0xd4b3d4d140771245L,0x61b20623ca8a803aL },
|
|
{ 0x2c2f3b41a6a560b1L,0x879e1d403859fcf4L,0x7cdb5145024dbfc3L,
|
|
0x55d08f153bfa5315L,0x2f57d773aa93823aL,0xa97f259cc6a2c9a2L } },
|
|
/* 195 */
|
|
{ { 0xc306317be58edbbbL,0x25ade51c79dfdf13L,0x6b5beaf116d83dd6L,
|
|
0xe8038a441dd8f925L,0x7f00143cb2a87b6bL,0xa885d00df5b438deL },
|
|
{ 0xe9f76790cf9e48bdL,0xf0bdf9f0a5162768L,0x0436709fad7b57cbL,
|
|
0x7e151c12f7c15db7L,0x3514f0225d90ee3bL,0x2e84e8032c361a8dL } },
|
|
/* 196 */
|
|
{ { 0x2277607d563ec8d8L,0xa661811fe3934cb7L,0x3ca72e7af58fd5deL,
|
|
0x7989da0462294c6aL,0x88b3708bf6bbefe9L,0x0d524cf753ed7c82L },
|
|
{ 0x69f699ca2f30c073L,0xf0fa264b9dc1dcf3L,0x44ca456805f0aaf6L,
|
|
0x0f5b23c7d19b9bafL,0x39193f41eabd1107L,0x9e3e10ad2a7c9b83L } },
|
|
/* 197 */
|
|
{ { 0xa90824f0d4ae972fL,0x43eef02bc6e846e7L,0x7e46061229d2160aL,
|
|
0x29a178acfe604e91L,0x23056f044eb184b2L,0x4fcad55feb54cdf4L },
|
|
{ 0xa0ff96f3ae728d15L,0x8a2680c6c6a00331L,0x5f84cae07ee52556L,
|
|
0x5e462c3ac5a65dadL,0x5d2b81dfe2d23f4fL,0x6e47301bc5b1eb07L } },
|
|
/* 198 */
|
|
{ { 0x77411d68af8219b9L,0xcb883ce651b1907aL,0x25c87e57101383b5L,
|
|
0x9c7d9859982f970dL,0xaa6abca5118305d2L,0x725fed2f9013a5dbL },
|
|
{ 0x487cdbafababd109L,0xc0f8cf5687586528L,0xa02591e68ad58254L,
|
|
0xc071b1d1debbd526L,0x927dfe8b961e7e31L,0x55f895f99263dfe1L } },
|
|
/* 199 */
|
|
{ { 0xf899b00db175645bL,0x51f3a627b65b4b92L,0xa2f3ac8db67399efL,
|
|
0xe717867fe400bc20L,0x42cc90201967b952L,0x3d5967513ecd1de1L },
|
|
{ 0xd41ebcdedb979775L,0x99ba61bc6a2e7e88L,0x039149a5321504f2L,
|
|
0xe7dc231427ba2fadL,0x9f556308b57d8368L,0x2b6d16c957da80a7L } },
|
|
/* 200 */
|
|
{ { 0x84af5e76279ad982L,0x9bb4c92d9c8b81a6L,0xd79ad44e0e698e67L,
|
|
0xe8be9048265fc167L,0xf135f7e60c3a4cccL,0xa0a10d38b8863a33L },
|
|
{ 0xe197247cd386efd9L,0x0eefd3f9b52346c2L,0xc22415f978607bc8L,
|
|
0xa2a8f862508674ceL,0xa72ad09ec8c9d607L,0xcd9f0ede50fa764fL } },
|
|
/* 201 */
|
|
{ { 0x063391c7d1a46d4dL,0x2df51c119eb01693L,0xc5849800849e83deL,
|
|
0x48fd09aa8ad08382L,0xa405d873aa742736L,0xee49e61ee1f9600cL },
|
|
{ 0xd76676be48c76f73L,0xd9c100f601274b2aL,0x110bb67c83f8718dL,
|
|
0xec85a42002fc0d73L,0xc0449e1e744656adL,0x28ce737637d9939bL } },
|
|
/* 202 */
|
|
{ { 0x97e9af7244544ac7L,0xf2c658d5ba010426L,0x732dec39fb3adfbdL,
|
|
0xd12faf91a2df0b07L,0x8ac267252171e208L,0xf820cdc85b24fa54L },
|
|
{ 0x307a6eea94f4cf77L,0x18c783d2944a33c6L,0x4b939d4c0b741ac5L,
|
|
0x1d7acd153ffbb6e4L,0x06a248587a255e44L,0x14fbc494ce336d50L } },
|
|
/* 203 */
|
|
{ { 0x9b920c0c51584e3cL,0xc7733c59f7e54027L,0xe24ce13988422bbeL,
|
|
0x11ada812523bd6abL,0xde068800b88e6defL,0x7b872671fe8c582dL },
|
|
{ 0x4e746f287de53510L,0x492f8b99f7971968L,0x1ec80bc77d928ac2L,
|
|
0xb3913e48432eb1b5L,0xad08486632028f6eL,0x122bb8358fc2f38bL } },
|
|
/* 204 */
|
|
{ { 0x0a9f3b1e3b0b29c3L,0x837b64324fa44151L,0xb9905c9217b28ea7L,
|
|
0xf39bc93798451750L,0xcd383c24ce8b6da1L,0x299f57db010620b2L },
|
|
{ 0x7b6ac39658afdce3L,0xa15206b33d05ef47L,0xa0ae37e2b9bb02ffL,
|
|
0x107760ab9db3964cL,0xe29de9a067954beaL,0x446a1ad8431c3f82L } },
|
|
/* 205 */
|
|
{ { 0xc6fecea05c6b8195L,0xd744a7c5f49e71b9L,0xa8e96acc177a7ae7L,
|
|
0x1a05746c358773a7L,0xa416214637567369L,0xaa0217f787d1c971L },
|
|
{ 0x61e9d15877fd3226L,0x0f6f2304e4f600beL,0xa9c4cebc7a6dff07L,
|
|
0xd15afa0109f12a24L,0x2bbadb228c863ee9L,0xa28290e4e5eb8c78L } },
|
|
/* 206 */
|
|
{ { 0x55b87fa03e9de330L,0x12b26066195c145bL,0xe08536e0a920bef0L,
|
|
0x7bff6f2c4d195adcL,0x7f319e9d945f4187L,0xf9848863f892ce47L },
|
|
{ 0xd0efc1d34fe37657L,0x3c58de825cf0e45aL,0x626ad21a8b0ccbbeL,
|
|
0xd2a31208af952fc5L,0x81791995eb437357L,0x5f19d30f98e95d4fL } },
|
|
/* 207 */
|
|
{ { 0x72e83d9a0e6865bbL,0x22f5af3bf63456a6L,0x409e9c73463c8d9eL,
|
|
0x40e9e578dfe6970eL,0x876b6efa711b91caL,0x895512cf942625a3L },
|
|
{ 0x84c8eda8cb4e462bL,0x84c0154a4412e7c8L,0x04325db1ceb7b71fL,
|
|
0x1537dde366f70877L,0xf3a093991992b9acL,0xa7316606d498ae77L } },
|
|
/* 208 */
|
|
{ { 0x13990d2fcad260f5L,0x76c3be29eec0e8c0L,0x7dc5bee00f7bd7d5L,
|
|
0x9be167d2efebda4bL,0xcce3dde69122b87eL,0x75a28b0982b5415cL },
|
|
{ 0xf6810bcde84607a6L,0xc6d581286f4dbf0dL,0xfead577d1b4dafebL,
|
|
0x9bc440b2066b28ebL,0x53f1da978b17e84bL,0x0459504bcda9a575L } },
|
|
/* 209 */
|
|
{ { 0x13e39a02329e5836L,0x2c9e7d51f717269dL,0xc5ac58d6f26c963bL,
|
|
0x3b0c6c4379967bf5L,0x60bbea3f55908d9dL,0xd84811e7f07c9ad1L },
|
|
{ 0xfe7609a75bd20e4aL,0xe4325dd20a70baa8L,0x3711f370b3600386L,
|
|
0x97f9562fd0924302L,0x040dc0c34acc4436L,0xfd6d725cde79cdd4L } },
|
|
/* 210 */
|
|
{ { 0xb3efd0e3cf13eafbL,0x21009cbb5aa0ae5fL,0xe480c55379022279L,
|
|
0x755cf334b2fc9a6dL,0x8564a5bf07096ae7L,0xddd649d0bd238139L },
|
|
{ 0xd0de10b18a045041L,0x6e05b413c957d572L,0x5c5ff8064e0fb25cL,
|
|
0xd933179b641162fbL,0x42d48485e57439f9L,0x70c5bd0a8a8d72aaL } },
|
|
/* 211 */
|
|
{ { 0xa767173897bdf646L,0xaa1485b4ab329f7cL,0xce3e11d6f8f25fdfL,
|
|
0x76a3fc7ec6221824L,0x045f281ff3924740L,0x24557d4e96d13a9aL },
|
|
{ 0x875c804bdd4c27cdL,0x11c5f0f40f5c7feaL,0xac8c880bdc55ff7eL,
|
|
0x2acddec51103f101L,0x38341a21f99faa89L,0xc7b67a2cce9d6b57L } },
|
|
/* 212 */
|
|
{ { 0x9a0d724f8e357586L,0x1d7f4ff5df648da0L,0x9c3e6c9bfdee62a5L,
|
|
0x0499cef00389b372L,0xe904050d98eab879L,0xe8eef1b66c051617L },
|
|
{ 0xebf5bfebc37e3ca9L,0x7c5e946da4e0b91dL,0x790973142c4bea28L,
|
|
0x81f6c109ee67b2b7L,0xaf237d9bdafc5edeL,0xd2e602012abb04c7L } },
|
|
/* 213 */
|
|
{ { 0x6156060c8a4f57bfL,0xf9758696ff11182aL,0x8336773c6296ef00L,
|
|
0x9c054bceff666899L,0xd6a11611719cd11cL,0x9824a641dbe1acfaL },
|
|
{ 0x0b7b7a5fba89fd01L,0xf8d3b809889f79d8L,0xc5e1ea08f578285cL,
|
|
0x7ac74536ae6d8288L,0x5d37a2007521ef5fL,0x5ecc4184b260a25dL } },
|
|
/* 214 */
|
|
{ { 0xddcebb19a708c8d3L,0xe63ed04fc63f81ecL,0xd045f5a011873f95L,
|
|
0x3b5ad54479f276d5L,0x81272a3d425ae5b3L,0x8bfeb50110ce1605L },
|
|
{ 0x4233809c888228bfL,0x4bd82acfb2aff7dfL,0x9c68f1800cbd4a7fL,
|
|
0xfcd771246b44323dL,0x60c0fcf6891db957L,0xcfbb4d8904da8f7fL } },
|
|
/* 215 */
|
|
{ { 0x9a6a5df93b26139aL,0x3e076a83b2cc7eb8L,0x47a8e82d5a964bcdL,
|
|
0x8a4e2a39b9278d6bL,0x93506c98e4443549L,0x06497a8ff1e0d566L },
|
|
{ 0x3dee8d992b1efa05L,0x2da63ca845393e33L,0xa4af7277cf0579adL,
|
|
0xaf4b46393236d8eaL,0x6ccad95b32b617f5L,0xce76d8b8b88bb124L } },
|
|
/* 216 */
|
|
{ { 0x63d2537a083843dcL,0x89eb35141e4153b4L,0x5175ebc4ea9afc94L,
|
|
0x7a6525808ed1aed7L,0x67295611d85e8297L,0x8dd2d68bb584b73dL },
|
|
{ 0x237139e60133c3a4L,0x9de838ab4bd278eaL,0xe829b072c062fcd9L,
|
|
0x70730d4f63ba8706L,0x6080483fd3cd05ecL,0x872ab5b80c85f84dL } },
|
|
/* 217 */
|
|
{ { 0xfc0776d3999d4d49L,0xa3eb59deec3f45e7L,0xbc990e440dae1fc1L,
|
|
0x33596b1ea15371ffL,0xd447dcb29bc7ab25L,0xcd5b63e935979582L },
|
|
{ 0xae3366fa77d1ff11L,0x59f28f05edee6903L,0x6f43fed1a4433bf2L,
|
|
0x15409c9bdf9ce00eL,0x21b5cdedaca9c5dcL,0xf9f3359582d7bdb4L } },
|
|
/* 218 */
|
|
{ { 0x959443789422c792L,0x239ea923c958b8bfL,0x4b61a247df076541L,
|
|
0x4d29ce85bb9fc544L,0x9a692a670b424559L,0x6e0ca5a00e486900L },
|
|
{ 0x6b79a78285b3beceL,0x41f35e39c61f9892L,0xff82099aae747f82L,
|
|
0x58c8ae3fd0ca59d6L,0x4ac930e299406b5fL,0x2ce04eb99df24243L } },
|
|
/* 219 */
|
|
{ { 0x4366b9941ac37b82L,0xff0c728d25b04d83L,0x1f55136119c47b7cL,
|
|
0xdbf2d5edbeff13e7L,0xf78efd51e12a683dL,0x82cd85b9989cf9c4L },
|
|
{ 0xe23c6db6e0cb5d37L,0x818aeebd72ee1a15L,0x8212aafd28771b14L,
|
|
0x7bc221d91def817dL,0xdac403a29445c51fL,0x711b051712c3746bL } },
|
|
/* 220 */
|
|
{ { 0x0ed9ed485ea99eccL,0xf799500db8cab5e1L,0xa8ec87dcb570cbdcL,
|
|
0x52cfb2c2d35dfaecL,0x8d31fae26e4d80a4L,0xe6a37dc9dcdeabe5L },
|
|
{ 0x5d365a341deca452L,0x09a5f8a50d68b44eL,0x59238ea5a60744b1L,
|
|
0xf2fedc0dbb4249e9L,0xe395c74ea909b2e3L,0xe156d1a539388250L } },
|
|
/* 221 */
|
|
{ { 0xd796b3d047181ae9L,0xbaf44ba844197808L,0xe693309434cf3facL,
|
|
0x41aa6adec3bd5c46L,0x4fda75d8eed947c6L,0xacd9d4129ea5a525L },
|
|
{ 0x65cc55a3d430301bL,0x3c9a5bcf7b52ea49L,0x22d319cf159507f0L,
|
|
0x2ee0b9b5de74a8ddL,0x20c26a1e877ac2b6L,0x387d73da92e7c314L } },
|
|
/* 222 */
|
|
{ { 0x13c4833e8cd3fdacL,0x76fcd473332e5b8eL,0xff671b4be2fe1fd3L,
|
|
0x4d734e8b5d98d8ecL,0xb1ead3c6514bbc11L,0xd14ca8587b390494L },
|
|
{ 0x95a443af5d2d37e9L,0x73c6ea7300464622L,0xa44aeb4b15755044L,
|
|
0xba3f8575fab58feeL,0x9779dbc9dc680a6fL,0xe1ee5f5a7b37ddfcL } },
|
|
/* 223 */
|
|
{ { 0xcd0b464812d29f46L,0x93295b0b0ed53137L,0xbfe2609480bef6c9L,
|
|
0xa656578854248b00L,0x69c43fca80e7f9c4L,0x2190837bbe141ea1L },
|
|
{ 0x875e159aa1b26cfbL,0x90ca9f877affe852L,0x15e6550d92ca598eL,
|
|
0xe3e0945d1938ad11L,0xef7636bb366ef937L,0xb6034d0bb39869e5L } },
|
|
/* 224 */
|
|
{ { 0x4d255e3026d8356eL,0xf83666edd314626fL,0x421ddf61d0c8ed64L,
|
|
0x96e473c526677b61L,0xdad4af7e9e9b18b3L,0xfceffd4aa9393f75L },
|
|
{ 0x843138a111c731d5L,0x05bcb3a1b2f141d9L,0x20e1fa95617b7671L,
|
|
0xbefce81288ccec7bL,0x582073dc90f1b568L,0xf572261a1f055cb7L } },
|
|
/* 225 */
|
|
{ { 0xf314827736973088L,0xc008e70886a9f980L,0x1b795947e046c261L,
|
|
0xdf1e6a7dca76bca0L,0xabafd88671acddf0L,0xff7054d91364d8f4L },
|
|
{ 0x2cf63547e2260594L,0x468a5372d73b277eL,0xc7419e24ef9bd35eL,
|
|
0x2b4a1c2024043cc3L,0xa28f047a890b39cdL,0xdca2cea146f9a2e3L } },
|
|
/* 226 */
|
|
{ { 0xab78873653277538L,0xa734e225cf697738L,0x66ee1d1e6b22e2c1L,
|
|
0x2c615389ebe1d212L,0xf36cad4002bb0766L,0x120885c33e64f207L },
|
|
{ 0x59e77d5690fbfec2L,0xf9e781aad7a574aeL,0x801410b05d045e53L,
|
|
0xd3b5f0aaa91b5f0eL,0xb3d1df007fbb3521L,0x11c4b33ec72bee9aL } },
|
|
/* 227 */
|
|
{ { 0xd32b983283c3a7f3L,0x8083abcf88d8a354L,0xdeb1640450f4ec5aL,
|
|
0x18d747f0641e2907L,0x4e8978aef1bbf03eL,0x932447dc88a0cd89L },
|
|
{ 0x561e0febcf3d5897L,0xfc3a682f13600e6dL,0xc78b9d73d16a6b73L,
|
|
0xe713feded29bf580L,0x0a22522308d69e5cL,0x3a924a571ff7fda4L } },
|
|
/* 228 */
|
|
{ { 0xfb64554cb4093beeL,0xa6d65a25a58c6ec0L,0x4126994d43d0ed37L,
|
|
0xa5689a5155152d44L,0xb8e5ea8c284caa8dL,0x33f05d4fd1f25538L },
|
|
{ 0xe0fdfe091b615d6eL,0x2ded7e8f705507daL,0xdd5631e517bbcc80L,
|
|
0x4f87453e267fd11fL,0xc6da723fff89d62dL,0x55cbcae2e3cda21dL } },
|
|
/* 229 */
|
|
{ { 0x336bc94e6b4e84f3L,0x728630314ef72c35L,0x6d85fdeeeeb57f99L,
|
|
0x7f4e3272a42ece1bL,0x7f86cbb536f0320aL,0xf09b6a2b923331e6L },
|
|
{ 0x21d3ecf156778435L,0x2977ba998323b2d2L,0x6a1b57fb1704bc0fL,
|
|
0xd777cf8b389f048aL,0x9ce2174fac6b42cdL,0x404e2bff09e6c55aL } },
|
|
/* 230 */
|
|
{ { 0x9b9b135e204c5ddbL,0x9dbfe0443eff550eL,0x35eab4bfec3be0f6L,
|
|
0x8b4c3f0d0a43e56fL,0x4c1c66730e73f9b3L,0x92ed38bd2c78c905L },
|
|
{ 0xc7003f6aa386e27cL,0xb9c4f46faced8507L,0xea024ec859df5464L,
|
|
0x4af96152429572eaL,0x279cd5e2e1fc1194L,0xaa376a03281e358cL } },
|
|
/* 231 */
|
|
{ { 0x078592233cdbc95cL,0xaae1aa6aef2e337aL,0xc040108d472a8544L,
|
|
0x80c853e68d037b7dL,0xd221315c8c7eee24L,0x195d38568ee47752L },
|
|
{ 0xd4b1ba03dacd7fbeL,0x4b5ac61ed3e0c52bL,0x68d3c0526aab7b52L,
|
|
0xf0d7248c660e3feaL,0xafdb3f893145efb4L,0xa73fd9a38f40936dL } },
|
|
/* 232 */
|
|
{ { 0x891b9ef3bb1b17ceL,0x14023667c6127f31L,0x12b2e58d305521fdL,
|
|
0x3a47e449e3508088L,0xe49fc84bff751507L,0x4023f7225310d16eL },
|
|
{ 0xa608e5edb73399faL,0xf12632d8d532aa3eL,0x13a2758e845e8415L,
|
|
0xae4b6f851fc2d861L,0x3879f5b1339d02f2L,0x446d22a680d99ebdL } },
|
|
/* 233 */
|
|
{ { 0x0f5023024be164f1L,0x8d09d2d688b81920L,0x514056f1984aceffL,
|
|
0xa5c4ddf075e9e80dL,0x38cb47e6df496a93L,0x899e1d6b38df6bf7L },
|
|
{ 0x69e87e88b59eb2a6L,0x280d9d639b47f38bL,0x599411ea3654e955L,
|
|
0xcf8dd4fd969aa581L,0xff5c2baf530742a7L,0xa43915361a373085L } },
|
|
/* 234 */
|
|
{ { 0x6ace72a3a8a4bdd2L,0xc656cdd1b68ef702L,0xd4a33e7e90c4dad8L,
|
|
0x4aece08a9d951c50L,0xea8005ae085d68e6L,0xfdd7a7d76f7502b8L },
|
|
{ 0xce6fb0a698d6fa45L,0x228f86721104eb8cL,0xd23d8787da09d7dcL,
|
|
0x5521428b2ae93065L,0x95faba3dea56c366L,0xedbe50390a88aca5L } },
|
|
/* 235 */
|
|
{ { 0xd64da0adbfb26c82L,0xe5d70b3c952c2f9cL,0xf5e8f365f7e77f68L,
|
|
0x7234e00208f2d695L,0xfaf900eed12e7be6L,0x27dc69344acf734eL },
|
|
{ 0x80e4ff5ec260a46aL,0x7da5ebce2dc31c28L,0x485c5d73ca69f552L,
|
|
0xcdfb6b2969cc84c2L,0x031c5afeed6d4ecaL,0xc7bbf4c822247637L } },
|
|
/* 236 */
|
|
{ { 0x9d5b72c749fe01b2L,0x34785186793a91b8L,0xa3ba3c54cf460438L,
|
|
0x73e8e43d3ab21b6fL,0x50cde8e0be57b8abL,0x6488b3a7dd204264L },
|
|
{ 0xa9e398b3dddc4582L,0x1698c1a95bec46feL,0x7f1446ef156d3843L,
|
|
0x3fd25dd8770329a2L,0x05b1221a2c710668L,0x65b2dc2aa72ee6cfL } },
|
|
/* 237 */
|
|
{ { 0x21a885f7cd021d63L,0x3f344b15fea61f08L,0xad5ba6ddc5cf73e6L,
|
|
0x154d0d8f227a8b23L,0x9b74373cdc559311L,0x4feab71598620fa1L },
|
|
{ 0x5098938e7d9ec924L,0x84d54a5e6d47e550L,0x1a2d1bdc1b617506L,
|
|
0x99fe1782615868a4L,0x171da7803005a924L,0xa70bf5ed7d8f79b6L } },
|
|
/* 238 */
|
|
{ { 0x0bc1250dfe2216c5L,0x2c37e2507601b351L,0xb6300175d6f06b7eL,
|
|
0x4dde8ca18bfeb9b7L,0x4f210432b82f843dL,0x8d70e2f9b1ac0afdL },
|
|
{ 0x25c73b78aae91abbL,0x0230dca3863028f2L,0x8b923ecfe5cf30b7L,
|
|
0xed754ec25506f265L,0x8e41b88c729a5e39L,0xee67cec2babf889bL } },
|
|
/* 239 */
|
|
{ { 0xe183acf51be46c65L,0x9789538fe7565d7aL,0x87873391d9627b4eL,
|
|
0xbf4ac4c19f1d9187L,0x5db99f634691f5c8L,0xa68df80374a1fb98L },
|
|
{ 0x3c448ed1bf92b5faL,0xa098c8413e0bdc32L,0x8e74cd5579bf016cL,
|
|
0x5df0d09c115e244dL,0x9418ad013410b66eL,0x8b6124cb17a02130L } },
|
|
/* 240 */
|
|
{ { 0x425ec3afc26e3392L,0xc07f8470a1722e00L,0xdcc28190e2356b43L,
|
|
0x4ed97dffb1ef59a6L,0xc22b3ad1c63028c1L,0x070723c268c18988L },
|
|
{ 0x70da302f4cf49e7dL,0xc5e87c933f12a522L,0x74acdd1d18594148L,
|
|
0xad5f73abca74124cL,0xe72e4a3ed69fd478L,0x615938687b117cc3L } },
|
|
/* 241 */
|
|
{ { 0x7b7b9577a9aa0486L,0x6e41fb35a063d557L,0xb017d5c7da9047d7L,
|
|
0x8c74828068a87ba9L,0xab45fa5cdf08ad93L,0xcd9fb2174c288a28L },
|
|
{ 0x595446425747843dL,0x34d64c6ca56111e3L,0x12e47ea14bfce8d5L,
|
|
0x17740e056169267fL,0x5c49438eeed03fb5L,0x9da30add4fc3f513L } },
|
|
/* 242 */
|
|
{ { 0xc4e85282ccfa5200L,0x2707608f6a19b13dL,0xdcb9a53df5726e2fL,
|
|
0x612407c9e9427de5L,0x3e5a17e1d54d582aL,0xb99877de655ae118L },
|
|
{ 0x6f0e972b015254deL,0x92a56db1f0a6f7c5L,0xd297e4e1a656f8b2L,
|
|
0x99fe0052ad981983L,0xd3652d2f07cfed84L,0xc784352e843c1738L } },
|
|
/* 243 */
|
|
{ { 0x6ee90af07e9b2d8aL,0xac8d701857cf1964L,0xf6ed903171f28efcL,
|
|
0x7f70d5a96812b20eL,0x27b557f4f1c61eeeL,0xf1c9bd57c6263758L },
|
|
{ 0x5cf7d0142a1a6194L,0xdd614e0b1890ab84L,0x3ef9de100e93c2a6L,
|
|
0xf98cf575e0cd91c5L,0x504ec0c614befc32L,0xd0513a666279d68cL } },
|
|
/* 244 */
|
|
{ { 0xa8eadbada859fb6aL,0xcf8346e7db283666L,0x7b35e61a3e22e355L,
|
|
0x293ece2c99639c6bL,0xfa0162e256f241c8L,0xd2e6c7b9bf7a1ddaL },
|
|
{ 0xd0de625340075e63L,0x2405aa61f9ec8286L,0x2237830a8fe45494L,
|
|
0x4fd01ac7364e9c8cL,0x4d9c3d21904ba750L,0xd589be14af1b520bL } },
|
|
/* 245 */
|
|
{ { 0x13576a4f4662e53bL,0x35ec2f51f9077676L,0x66297d1397c0af97L,
|
|
0xed3201fe9e598b58L,0x49bc752a5e70f604L,0xb54af535bb12d951L },
|
|
{ 0x36ea4c2b212c1c76L,0x18f5bbc7eb250dfdL,0xa0d466cc9a0a1a46L,
|
|
0x52564da4dac2d917L,0x206559f48e95fab5L,0x7487c1909ca67a33L } },
|
|
/* 246 */
|
|
{ { 0x75abfe37dde98e9cL,0x99b90b262a411199L,0x1b410996dcdb1f7cL,
|
|
0xab346f118b3b5675L,0x04852193f1f8ae1eL,0x1ec4d2276b8b98c1L },
|
|
{ 0xba3bc92645452baaL,0x387d1858acc4a572L,0x9478eff6e51f171eL,
|
|
0xf357077d931e1c00L,0xffee77cde54c8ca8L,0xfb4892ff551dc9a4L } },
|
|
/* 247 */
|
|
{ { 0x5b1bdad02db8dff8L,0xd462f4fd5a2285a2L,0x1d6aad8eda00b461L,
|
|
0x43fbefcf41306d1bL,0x428e86f36a13fe19L,0xc8b2f11817f89404L },
|
|
{ 0x762528aaf0d51afbL,0xa3e2fea4549b1d06L,0x86fad8f2ea3ddf66L,
|
|
0x0d9ccc4b4fbdd206L,0xcde97d4cc189ff5aL,0xc36793d6199f19a6L } },
|
|
/* 248 */
|
|
{ { 0xea38909b51b85197L,0xffb17dd0b4c92895L,0x0eb0878b1ddb3f3fL,
|
|
0xb05d28ffc57cf0f2L,0xd8bde2e71abd57e2L,0x7f2be28dc40c1b20L },
|
|
{ 0x6554dca2299a2d48L,0x5130ba2e8377982dL,0x8863205f1071971aL,
|
|
0x15ee62827cf2825dL,0xd4b6c57f03748f2bL,0xa9e3f4da430385a0L } },
|
|
/* 249 */
|
|
{ { 0x33eb7cec83fbc9c6L,0x24a311c74541777eL,0xc81377f74f0767fcL,
|
|
0x12adae364ab702daL,0xb7fcb6db2a779696L,0x4a6fb28401cea6adL },
|
|
{ 0x5e8b1d2acdfc73deL,0xd0efae8d1b02fd32L,0x3f99c190d81d8519L,
|
|
0x3c18f7fafc808971L,0x41f713e751b7ae7bL,0x0a4b3435f07fc3f8L } },
|
|
/* 250 */
|
|
{ { 0x7dda3c4c019b7d2eL,0x631c8d1ad4dc4b89L,0x5489cd6e1cdb313cL,
|
|
0xd44aed104c07bb06L,0x8f97e13a75f000d1L,0x0e9ee64fdda5df4dL },
|
|
{ 0xeaa99f3b3e346910L,0x622f6921fa294ad7L,0x22aaa20d0d0b2fe9L,
|
|
0x4fed2f991e5881baL,0x9af3b2d6c1571802L,0x919e67a8dc7ee17cL } },
|
|
/* 251 */
|
|
{ { 0xc724fe4c76250533L,0x8a2080e57d817ef8L,0xa2afb0f4172c9751L,
|
|
0x9b10cdeb17c0702eL,0xbf3975e3c9b7e3e9L,0x206117df1cd0cdc5L },
|
|
{ 0xfb049e61be05ebd5L,0xeb0bb55c16c782c0L,0x13a331b8ab7fed09L,
|
|
0xf6c58b1d632863f0L,0x6264ef6e4d3b6195L,0x92c51b639a53f116L } },
|
|
/* 252 */
|
|
{ { 0xa57c7bc8288b364dL,0x4a562e087b41e5c4L,0x699d21c6698a9a11L,
|
|
0xa4ed9581f3f849b9L,0xa223eef39eb726baL,0x13159c23cc2884f9L },
|
|
{ 0x73931e583a3f4963L,0x965003890ada6a81L,0x3ee8a1c65ab2950bL,
|
|
0xeedf4949775fab52L,0x63d652e14f2671b6L,0xfed4491c3c4e2f55L } },
|
|
/* 253 */
|
|
{ { 0x335eadc3f4eb453eL,0x5ff74b63cadd1a5bL,0x6933d0d75d84a91aL,
|
|
0x9ca3eeb9b49ba337L,0x1f6faccec04c15b8L,0x4ef19326dc09a7e4L },
|
|
{ 0x53d2d3243dca3233L,0x0ee40590a2259d4bL,0x18c22edb5546f002L,
|
|
0x9242980109ea6b71L,0xaada0addb0e91e61L,0x5fe53ef499963c50L } },
|
|
/* 254 */
|
|
{ { 0x372dd06b90c28c65L,0x1765242c119ce47dL,0xc041fb806b22fc82L,
|
|
0x667edf07b0a7ccc1L,0xc79599e71261beceL,0xbc69d9ba19cff22aL },
|
|
{ 0x009d77cd13c06819L,0x635a66aee282b79dL,0x4edac4a6225b1be8L,
|
|
0x57d4f4e4524008f9L,0xee299ac5b056af84L,0xcc38444c3a0bc386L } },
|
|
/* 255 */
|
|
{ { 0x490643b1cd4c2356L,0x740a4851750547beL,0x643eaf29d4944c04L,
|
|
0xba572479299a98a0L,0x48b29f16ee05fdf9L,0x33fb4f61089b2d7bL },
|
|
{ 0x86704902a950f955L,0x97e1034dfedc3ddfL,0x211320b605fbb6a2L,
|
|
0x23d7b93f432299bbL,0x1fe1a0578590e4a3L,0x8e1d0586f58c0ce6L } },
|
|
};
|
|
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^48, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_base_6(sp_point_384* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_384_ecc_mulmod_stripe_6(r, &p384_base, p384_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#endif /* WC_NO_CACHE_RESISTANT */
|
|
#else
|
|
/* The index into pre-computation table to use. */
|
|
static const uint8_t recode_index_6_7[130] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
|
|
48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
|
|
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
|
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
|
|
0, 1,
|
|
};
|
|
|
|
/* Whether to negate y-ordinate. */
|
|
static const uint8_t recode_neg_6_7[130] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
0, 0,
|
|
};
|
|
|
|
/* Recode the scalar for multiplication using pre-computed values and
|
|
* subtraction.
|
|
*
|
|
* k Scalar to multiply by.
|
|
* v Vector of operations to perform.
|
|
*/
|
|
static void sp_384_ecc_recode_7_6(const sp_digit* k, ecc_recode_384* v)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint8_t y;
|
|
int carry = 0;
|
|
int o;
|
|
sp_digit n;
|
|
|
|
j = 0;
|
|
n = k[j];
|
|
o = 0;
|
|
for (i=0; i<55; i++) {
|
|
y = (int8_t)n;
|
|
if (o + 7 < 64) {
|
|
y &= 0x7f;
|
|
n >>= 7;
|
|
o += 7;
|
|
}
|
|
else if (o + 7 == 64) {
|
|
n >>= 7;
|
|
if (++j < 6)
|
|
n = k[j];
|
|
o = 0;
|
|
}
|
|
else if (++j < 6) {
|
|
n = k[j];
|
|
y |= (uint8_t)((n << (64 - o)) & 0x7f);
|
|
o -= 57;
|
|
n >>= o;
|
|
}
|
|
|
|
y += (uint8_t)carry;
|
|
v[i].i = recode_index_6_7[y];
|
|
v[i].neg = recode_neg_6_7[y];
|
|
carry = (y >> 7) + v[i].neg;
|
|
}
|
|
}
|
|
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
/* Touch each possible entry that could be being copied.
|
|
*
|
|
* r Point to copy into.
|
|
* table Table - start of the entires to access
|
|
* idx Index of entry to retrieve.
|
|
*/
|
|
static void sp_384_get_entry_65_6(sp_point_384* r,
|
|
const sp_table_entry_384* table, int idx)
|
|
{
|
|
int i;
|
|
sp_digit mask;
|
|
|
|
r->x[0] = 0;
|
|
r->x[1] = 0;
|
|
r->x[2] = 0;
|
|
r->x[3] = 0;
|
|
r->x[4] = 0;
|
|
r->x[5] = 0;
|
|
r->y[0] = 0;
|
|
r->y[1] = 0;
|
|
r->y[2] = 0;
|
|
r->y[3] = 0;
|
|
r->y[4] = 0;
|
|
r->y[5] = 0;
|
|
for (i = 1; i < 65; i++) {
|
|
mask = 0 - (i == idx);
|
|
r->x[0] |= mask & table[i].x[0];
|
|
r->x[1] |= mask & table[i].x[1];
|
|
r->x[2] |= mask & table[i].x[2];
|
|
r->x[3] |= mask & table[i].x[3];
|
|
r->x[4] |= mask & table[i].x[4];
|
|
r->x[5] |= mask & table[i].x[5];
|
|
r->y[0] |= mask & table[i].y[0];
|
|
r->y[1] |= mask & table[i].y[1];
|
|
r->y[2] |= mask & table[i].y[2];
|
|
r->y[3] |= mask & table[i].y[3];
|
|
r->y[4] |= mask & table[i].y[4];
|
|
r->y[5] |= mask & table[i].y[5];
|
|
}
|
|
}
|
|
#endif /* !WC_NO_CACHE_RESISTANT */
|
|
static const sp_table_entry_384 p384_table[3575] = {
|
|
/* 0 << 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 0 */
|
|
{ { 0x3dd0756649c0b528L,0x20e378e2a0d6ce38L,0x879c3afc541b4d6eL,
|
|
0x6454868459a30effL,0x812ff723614ede2bL,0x4d3aadc2299e1513L },
|
|
{ 0x23043dad4b03a4feL,0xa1bfa8bf7bb4a9acL,0x8bade7562e83b050L,
|
|
0xc6c3521968f4ffd9L,0xdd8002263969a840L,0x2b78abc25a15c5e9L } },
|
|
/* 2 << 0 */
|
|
{ { 0xc8229e55783dde91L,0x8e6c8f2e022b53f0L,0x3504e6f0ff9d48a1L,
|
|
0xda821495f0687f50L,0x9c90a4fd2de4b506L,0xdb93b776427460c3L },
|
|
{ 0x42ea84633140bfdaL,0xe8e8e4a8c2aaccd8L,0x15e4f18bdc588258L,
|
|
0x09f1fe415172bad9L,0x070d430900b0e684L,0xe34947f7123df0c2L } },
|
|
/* 3 << 0 */
|
|
{ { 0x05e4dbe6c1dc4073L,0xc54ea9fff04f779cL,0x6b2034e9a170ccf0L,
|
|
0x3a48d732d51c6c3eL,0xe36f7e2d263aa470L,0xd283fe68e7c1c3acL },
|
|
{ 0x7e284821c04ee157L,0x92d789a77ae0e36dL,0x132663c04ef67446L,
|
|
0x68012d5ad2e1d0b4L,0xf6db68b15102b339L,0x465465fc983292afL } },
|
|
/* 4 << 0 */
|
|
{ { 0x0aae8477ebb68f2cL,0x30594ccbee0421e3L,0x2e4f153b0aecac46L,
|
|
0x078358d4736400adL,0xfb40f647d685d979L,0xcfeee6dd34179228L },
|
|
{ 0x54f3e8e79b3a03b2L,0xe74bb7f17bfec97eL,0x8e3e61a34c542ad1L,
|
|
0x147162d30418c693L,0xe607b9e33820017dL,0x50946875303df319L } },
|
|
/* 5 << 0 */
|
|
{ { 0xbb595eba68f1f0dfL,0xc185c0cbcc873466L,0x7f1eb1b5293c703bL,
|
|
0x60db2cf5aacc05e6L,0xc676b987e2e8e4c6L,0xe1bb26b11d178ffbL },
|
|
{ 0x2b694ba07073fa21L,0x22c16e2e72f34566L,0x80b61b3101c35b99L,
|
|
0x4b237faf982c0411L,0xe6c5944024de236dL,0x4db1c9d6e209e4a3L } },
|
|
/* 6 << 0 */
|
|
{ { 0x7eb5c9317d56dad8L,0xcb2454b339d3413aL,0xec52930f580d57f2L,
|
|
0x2a33f6661bdf6015L,0x4f0f6a962b02d33bL,0xc482e189f0430c40L },
|
|
{ 0x3f62b16ea7b08203L,0x739ac69d5b3d4dceL,0x8bd4bffcb79e33b0L,
|
|
0x93c9e5f61b546f05L,0x586d8ededf21559aL,0xc9962152af2a9ebaL } },
|
|
/* 7 << 0 */
|
|
{ { 0xdf13b9d17d69222bL,0x4ce6415f874774b1L,0x731edcf8211faa95L,
|
|
0x5f4215d1659753edL,0xf893db589db2df55L,0x932c9f811c89025bL },
|
|
{ 0x0996b2207706a61eL,0x135349d5a8641c79L,0x65aad76f50130844L,
|
|
0x0ff37c0401fff780L,0xf57f238e693b0706L,0xd90a16b6af6c9b3eL } },
|
|
/* 8 << 0 */
|
|
{ { 0x23f60a05dd9bcbbaL,0x9e336de5ae9b587aL,0x1c5c2e7193d7e30fL,
|
|
0x1d9aebd64f3ddb37L,0x1c7b5fe116b66423L,0x5db4f184349cd9b1L },
|
|
{ 0x0d2cfe83e6655a44L,0x836dbb36b7e55e87L,0x701754bf7d8686e4L,
|
|
0xe9923263a42dbba2L,0x7008d943c48ecf0eL,0x3c0c6dd70d27ef61L } },
|
|
/* 9 << 0 */
|
|
{ { 0x2f5d200e2353b92fL,0xe35d87293fd7e4f9L,0x26094833a96d745dL,
|
|
0xdc351dc13cbfff3fL,0x26d464c6dad54d6aL,0x5cab1d1d53636c6aL },
|
|
{ 0xf2813072b18ec0b0L,0x3777e270d742aa2fL,0x27f061c7033ca7c2L,
|
|
0xa6ecaccc68ead0d8L,0x7d9429f4ee69a754L,0xe770633431e8f5c6L } },
|
|
/* 10 << 0 */
|
|
{ { 0x845539d3c8d99c02L,0x2a15a9a6e58d6787L,0xe9f6368eab225fa3L,
|
|
0x54a612d7eb32cabeL,0xc2f646025c4845ecL,0xa91a5280db1c212eL },
|
|
{ 0xbb971f78e67b5fceL,0x03a530eb13b9e85cL,0x592ac0ba794eabfdL,
|
|
0x81961b8ccfd7fd1dL,0x3e03370a47a9b8aaL,0x6eb995bec80174e8L } },
|
|
/* 11 << 0 */
|
|
{ { 0xc7708b19b68b8c7dL,0x4532077c44377abaL,0x0dcc67706cdad64fL,
|
|
0x01b8bf56147b6602L,0xf8d89885f0561d79L,0x9c19e9fc7ba9c437L },
|
|
{ 0x764eb146bdc4ba25L,0x604fe46bac144b83L,0x3ce813298a77e780L,
|
|
0x2e070f36fe9e682eL,0x41821d0c3a53287aL,0x9aa62f9f3533f918L } },
|
|
/* 12 << 0 */
|
|
{ { 0x3db8477270313de0L,0xd4258cc55d970420L,0x03aced26c8edfee1L,
|
|
0xf67eb42235d77d83L,0x523c40dbcf9ab45cL,0x627b415f9c35b26dL },
|
|
{ 0xfacc45e48be55ed8L,0x80d60af627aa651aL,0x8c79848fd0e102acL,
|
|
0x40c64a4e66bed5afL,0x0329eab1f7942f0eL,0x0c6e430ef9c4af3dL } },
|
|
/* 13 << 0 */
|
|
{ { 0x9b7aeb7e75ccbdfbL,0xb25e28c5f6749a95L,0x8a7a8e4633b7d4aeL,
|
|
0xdb5203a8d9c1bd56L,0xd2657265ed22df97L,0xb51c56e18cf23c94L },
|
|
{ 0xf4d394596c3d812dL,0xd8e88f1a87cae0c2L,0x789a2a48cf4d0fe3L,
|
|
0xb7feac2dfec38d60L,0x81fdbd1c3b490ec3L,0x4617adb7cc6979e1L } },
|
|
/* 14 << 0 */
|
|
{ { 0x5865e5018f75244cL,0xd02225fb01ec909fL,0xca6b1af8b1f85c2aL,
|
|
0x44ce05ff88957166L,0x8058994c5710c0c9L,0x46d227c432f6b1baL },
|
|
{ 0xbe4b4a9003cb68e5L,0x540b8b82730a99d1L,0x1ecc8585e11dbbbfL,
|
|
0x72445345d9c3b691L,0x647d24db13690a74L,0x4429839ddefbadf5L } },
|
|
/* 15 << 0 */
|
|
{ { 0x446ad8884709f4a9L,0x2b7210e2ec3dabd8L,0x83ccf19550e07b34L,
|
|
0x59500917789b3075L,0x0fc01fd4eb085993L,0xfb62d26f4903026bL },
|
|
{ 0x2309cc9d6fe989bbL,0x61609cbd144bd586L,0x4b23d3a0de06610cL,
|
|
0xdddc2866d898f470L,0x8733fc41400c5797L,0x5a68c6fed0bc2716L } },
|
|
/* 16 << 0 */
|
|
{ { 0xda6e8a7f7c33ed91L,0x992afb5b0ecdd2d8L,0x37cf65517917652aL,
|
|
0x317b63ea2887d5ffL,0x37065f5313bdc3faL,0xa10896aa435abaa1L },
|
|
{ 0x9b21615fefabca26L,0xeb07ddea230cf00dL,0x914871dc154d410fL,
|
|
0xb333bdfbc88ee148L,0x51c305c6a72d1967L,0x659db48181ef2513L } },
|
|
/* 17 << 0 */
|
|
{ { 0x8903e1304b4a3cd0L,0x3ea4ea4c8ff1f43eL,0xe6fc3f2af655a10dL,
|
|
0x7be3737d524ffefcL,0x9f6928555330455eL,0x524f166ee475ce70L },
|
|
{ 0x3fcc69cd6c12f055L,0x4e23b6ffd5b9c0daL,0x49ce6993336bf183L,
|
|
0xf87d6d854a54504aL,0x25eb5df1b3c2677aL,0xac37986f55b164c9L } },
|
|
/* 18 << 0 */
|
|
{ { 0x5dfee73ce5b82700L,0x198fd3f0f38f6662L,0x3bd1c8f62edb0dbdL,
|
|
0x55a96a6879909f08L,0x68a2324355671693L,0x57505d8d67497030L },
|
|
{ 0x8a60717f75c64513L,0x54b867b7f78aa7deL,0xc266eb8441129858L,
|
|
0x6ffcfc7ca4cfd9bbL,0x9bdd6a092945a757L,0x91700b247eb1be63L } },
|
|
/* 19 << 0 */
|
|
{ { 0x82a2ed4abaa84c08L,0x22c4cc5f41a8c912L,0xca109c3b154aad5eL,
|
|
0x23891298fc38538eL,0xb3b6639c539802aeL,0xfa0f1f450390d706L },
|
|
{ 0x46b78e5db0dc21d0L,0xa8c72d3cc3da2eacL,0x9170b3786ff2f643L,
|
|
0x3f5a799bb67f30c3L,0x15d1dc778264b672L,0xa1d47b23e9577764L } },
|
|
/* 20 << 0 */
|
|
{ { 0xad610a2d94a70ec1L,0xcd96f20591e71d16L,0x713466708cbaffc7L,
|
|
0xf78cff0cd467f03aL,0x98ca8dd42d96c936L,0x1d1cdf7b5f223465L },
|
|
{ 0xe27a189460d4db60L,0x25f546ab321828ffL,0x9933fb25dccd4df3L,
|
|
0x422da643ffe6132bL,0x5e01b72b4718bbc7L,0xab9dd81052ebfb01L } },
|
|
/* 21 << 0 */
|
|
{ { 0x08265e510422ce2fL,0x88e0d496dd2f9e21L,0x30128aa06177f75dL,
|
|
0x2e59ab62bd9ebe69L,0x1b1a0f6c5df0e537L,0xab16c626dac012b5L },
|
|
{ 0x8014214b008c5de7L,0xaa740a9e38f17beaL,0x262ebb498a149098L,
|
|
0xb454111e8527cd59L,0x266ad15aacea5817L,0x21824f411353ccbaL } },
|
|
/* 22 << 0 */
|
|
{ { 0x4f595351262bb775L,0x981b788d16f325b8L,0xccd57831927ed783L,
|
|
0xc382472ebe0e1fdbL,0xfd7a8b13f0681fcaL,0xe082882d69059095L },
|
|
{ 0x4d1c3049faa71fdcL,0xf9d62fd9c9576c69L,0x7b1ab489cbf837b7L,
|
|
0xc764edf840d0fcf7L,0x50fc847215809cddL,0x671d69c98fcd8418L } },
|
|
/* 23 << 0 */
|
|
{ { 0xd1b4e74d12e3683bL,0x990ed20b569b8ef6L,0xb9d3dd25429c0a18L,
|
|
0x1c75b8ab2a351783L,0x61e4ca2b905432f0L,0x80826a69eea8f224L },
|
|
{ 0x7fc33a6bec52abadL,0x0bcca3f0a65e4813L,0x7ad8a132a527cebeL,
|
|
0xf0138950eaf22c7eL,0x282d2437566718c1L,0x9dfccb0de2212559L } },
|
|
/* 24 << 0 */
|
|
{ { 0x259f272cfab816a7L,0x20c1b8e0d809afcdL,0x540c045a409c930bL,
|
|
0x563361909bd5c2f7L,0x38076e8fca77d74fL,0x4f13f901fc55723fL },
|
|
{ 0x890932d7bd3d10c3L,0x98d82ad1da247ec8L,0xdf5579fa4bea82ddL,
|
|
0xe8277439a0f9ad3aL,0x1395a87966a4e904L,0x150808e625a302c9L } },
|
|
/* 25 << 0 */
|
|
{ { 0x1e93722758ce3b83L,0xbb280dfa3cb3fb36L,0x57d0f3d2e2be174aL,
|
|
0x9bd51b99208abe1eL,0x3809ab50de248024L,0xc29c6e2ca5bb7331L },
|
|
{ 0x9944fd2e61124f05L,0x83ccbc4e9009e391L,0x01628f059424a3ccL,
|
|
0xd6a2f51dea8e4344L,0xda3e1a3d4cebc96eL,0x1fe6fb42e97809dcL } },
|
|
/* 26 << 0 */
|
|
{ { 0x6423197d2afd473dL,0xb0391b37897b93f5L,0x6efedb8023bf0b90L,
|
|
0x808497b7b0bba4a7L,0xf14b309f03fa90f2L,0x37a45bdb091cbb80L },
|
|
{ 0xedda4ae48a8f5dcbL,0xdb3f422d95e16d6eL,0x25c7b9146f5f24c7L,
|
|
0x5d512df99d42a727L,0xbf2c0862697c08fdL,0x47d98a9df092241cL } },
|
|
/* 27 << 0 */
|
|
{ { 0xa04482d2467d66e4L,0xcf1912934d78291dL,0x8e0d4168482396f9L,
|
|
0x7228e2d5d18f14d0L,0x2f7e8d509c6a58feL,0xe8ca780e373e5aecL },
|
|
{ 0x42aad1d61b68e9f8L,0x58a6d7f569e2f8f4L,0xd779adfe31da1beaL,
|
|
0x7d26540638c85a85L,0x67e67195d44d3cdfL,0x17820a0bc5134ed7L } },
|
|
/* 28 << 0 */
|
|
{ { 0xc76afaa373b64643L,0x4169b4117b3c1220L,0x550e0bee8ff22c6fL,
|
|
0x8fb0c597a4da3e15L,0xd8232f8b4e492aa8L,0x55be5764d37da1a2L },
|
|
{ 0xf1bc89b628e77f9eL,0x9ff769c4875fee0fL,0x184bd4733ad6983aL,
|
|
0xc48ee6f3b033c112L,0x792377fbf8eb8319L,0x05cdca3fe7988176L } },
|
|
/* 29 << 0 */
|
|
{ { 0x019d6ac5d3021470L,0x25846b66780443d6L,0xce3c15ed55c97647L,
|
|
0x3dc22d490e3feb0fL,0x2065b7cba7df26e4L,0xc8b00ae8187cea1fL },
|
|
{ 0x1a5284a0865dded3L,0x293c164920c83de2L,0xab178d26cce851b3L,
|
|
0x8e6db10b404505fbL,0xf6f57e7190c82033L,0x1d2a1c015977f16cL } },
|
|
/* 30 << 0 */
|
|
{ { 0x6a7a3464d0cbcea0L,0x76aad8b813126388L,0x519b9fd50a183232L,
|
|
0x15f9abe1feb6b100L,0x7002990485ba4143L,0x92cea8f4c4360dd8L },
|
|
{ 0xdc6c5d1dc12748a1L,0x1846eefcdd3eb156L,0x3117dd04d47a41dcL,
|
|
0x96c21b29f6a167f2L,0xf569446a27555692L,0x941292e500f88cb2L } },
|
|
/* 31 << 0 */
|
|
{ { 0xa39c89317c8906a4L,0xb6e7ecdd9e821ee6L,0x2ecf8340f0df4fe6L,
|
|
0xd42f7dc953c14965L,0x1afb51a3e3ba8285L,0x6c07c4040a3305d1L },
|
|
{ 0xdab83288127fc1daL,0xbc0a699b374c4b08L,0x402a9bab42eb20ddL,
|
|
0xd7dd464f045a7a1cL,0x5b3d0d6d36beecc4L,0x475a3e756398a19dL } },
|
|
/* 32 << 0 */
|
|
{ { 0xad852b878c0a64a4L,0x0d784cf208f779d5L,0x1896b9fcc651b1ddL,
|
|
0xba8953d612e8dc87L,0x3a9865baa631cfb0L,0x5dd2a4a0626b3d79L },
|
|
{ 0x1148bc72687c20bbL,0xa372dfc2f2a52bfdL,0x77315f9e9448fd08L,
|
|
0x4bcb06f00a2377b6L,0x73b42725b35b4ff0L,0xc510ad93aabca99fL } },
|
|
/* 33 << 0 */
|
|
{ { 0x61333a382fb3ba63L,0xdf330d9d5b943c86L,0xbbc7c7ee955ef3afL,
|
|
0xda631fc160f09efbL,0x68af622641d5c400L,0xcc9e97a46c833e9dL },
|
|
{ 0x7fd73e8e3a625e76L,0x13bf6124c209e55eL,0x08467cea48b90b91L,
|
|
0x8a416eb9bb6f0abaL,0x6fcc93a1b8c31072L,0xa7fd2b619057dad7L } },
|
|
/* 34 << 0 */
|
|
{ { 0x80b309dd2ada5bf4L,0x0648c2cd2d668c41L,0x45700722abb9102fL,
|
|
0x9d6ac102b4e25201L,0x7ec2bc1cd50b3e6dL,0xcdb55e6ba07b7caeL },
|
|
{ 0xebcbda0786da3943L,0x470ddc68f8a57f48L,0x9e1418a4554557c3L,
|
|
0x02d00cfb8a76b2d6L,0x03c050a061520726L,0xa964eefbfdadd24eL } },
|
|
/* 35 << 0 */
|
|
{ { 0x58a5b5433720ec9bL,0xbb3800d52d7c2fb4L,0x4a508620dde6bd0aL,
|
|
0x65f16273a02583fdL,0x832bd8e34fc78523L,0xd6149f75e9417bc6L },
|
|
{ 0xfeb026e93deeb52aL,0x0ce18088a55e0956L,0x50018998988092a2L,
|
|
0x22f19fab28f35eeeL,0xac8a877f52ccd35cL,0xb13a8ad830e23f26L } },
|
|
/* 36 << 0 */
|
|
{ { 0xf216aa2531238ed0L,0x4a13260770b1b757L,0xa39180d45c2c7ce1L,
|
|
0x9f82b7fbab52606cL,0x6f01faee26946e78L,0x1608643883061d37L },
|
|
{ 0x597edf370fb077bcL,0x1d11bc5ed6e28138L,0x10209418c167fd20L,
|
|
0x6a3258ec33f55675L,0xdf33eed7b73401b1L,0xf699887b806085b7L } },
|
|
/* 37 << 0 */
|
|
{ { 0x0202d57de44f61a3L,0x4027704bb5630ef2L,0xa129e2dff5b54a5dL,
|
|
0xacb60a7597482b86L,0x9261ede87ef27114L,0x1eba28f3defc58b5L },
|
|
{ 0x6c91c0c98be5589eL,0x2f1643d514594beeL,0x2ea912435d2ca034L,
|
|
0xb50649a894047d1fL,0x284fcbb5638ca337L,0xfa0e07b7fe85bf85L } },
|
|
/* 38 << 0 */
|
|
{ { 0x4703cd85891f8ffeL,0x018843c01c0d7702L,0xf3d752f5ad6cbeacL,
|
|
0x479ecf018173fb32L,0x6b464412bc9a48c7L,0x47ba96091da7b147L },
|
|
{ 0x91af26eaabc13488L,0x87c183c3e1a0e06cL,0xdae2479844956b93L,
|
|
0xf300e1c648347f9aL,0x129be314974320a4L,0x1f466694520618f2L } },
|
|
/* 39 << 0 */
|
|
{ { 0x7d894f80506e0e42L,0xd984244a8e3d2c46L,0x6d7edf642b7f006fL,
|
|
0x36a1cd6dde9b6230L,0xc9985040b76c0665L,0x587df4d6b89b1fc2L },
|
|
{ 0x4c0638476a71ae7aL,0x7b2b0ab3e8294747L,0x345c553ab53153b8L,
|
|
0xb646e453436d9fe2L,0x1a95355f1cd60340L,0x2d7bc128074968fbL } },
|
|
/* 40 << 0 */
|
|
{ { 0x6048c6949399c38aL,0x43a53ff21beb359eL,0x86fcfe4760be3ebcL,
|
|
0xae78bc3a3134216cL,0x3b021cf316d7a9adL,0x51c4b1b36a4d6e81L },
|
|
{ 0x54b9cd8db593d816L,0x1df8cc84a69ea3a3L,0x98ff87f7370eb744L,
|
|
0x63a00a0a60e0aa2aL,0xdbb22c9ddeb46e6cL,0xdfd92b6da914bb01L } },
|
|
/* 41 << 0 */
|
|
{ { 0xad148e87bca6d14cL,0x41dfd24d456a201eL,0x73a82933a80d68f3L,
|
|
0x89746c8d852ca035L,0xe3bc778895fd71aeL,0x8764cd2cda92245dL },
|
|
{ 0xa2fe2c4782eb23e2L,0x5ac762e00f3c9d6eL,0x57860ce121646f31L,
|
|
0xbdc9d6c34f9f589aL,0x679952c7d193272eL,0x82ea702eeb18f1c5L } },
|
|
/* 42 << 0 */
|
|
{ { 0x18ef56cd5d76b881L,0x31b22efc5df46c66L,0x4b21c4f3eb6c7e62L,
|
|
0x3fd72a308f234c86L,0xe983e169ffff96c7L,0x7438b4933c1e593cL },
|
|
{ 0x863a23a3a553e8e3L,0x0d959ba9796d9129L,0x25d0caaeda1eadf4L,
|
|
0xe739fb61eaa67763L,0x50029568472a7175L,0xdb6829c2f002bb6eL } },
|
|
/* 43 << 0 */
|
|
{ { 0x37fa935500846d44L,0x09112fc50578bc8cL,0xdad9f5b239c4943dL,
|
|
0x7314f5f0416dbd86L,0x5cf095a901fefb56L,0x35178bad22dab393L },
|
|
{ 0xcf79fc1b36baf1a7L,0x1b7ee42d749e5498L,0xbce78aa9ede314bbL,
|
|
0xaaf8e0f6bd0628dfL,0xa974b09415cbf948L,0x8f3f1f63c9632b78L } },
|
|
/* 44 << 0 */
|
|
{ { 0x1c5f0e5b36a400d3L,0xae97af8bf240b30aL,0x767b4ad7f8f99b51L,
|
|
0xd50a288981ea36c2L,0x04ce2a21986c5ce6L,0x9c7e7754a320d352L },
|
|
{ 0xc3336331bbad8346L,0x7cc82a4df1698fb2L,0xc680176505c7ad6cL,
|
|
0x47678afb27dda8e5L,0xade6096d02e543aeL,0x5fb28e322a1dd73bL } },
|
|
/* 45 << 0 */
|
|
{ { 0xd4c411564fddda5bL,0xd4af65c673ad9112L,0xffe8e0bb39eb8f59L,
|
|
0xb0040c0e8d6fcf13L,0x99e1c0c61f2bb599L,0x9c94c858b2ac3405L },
|
|
{ 0x8f8878d76eeed85dL,0x62b2f54351fcca3fL,0xeb3b44a9e5b56918L,
|
|
0x16f96676b7234e93L,0x17477722bd2af19eL,0x42eb2979db83a485L } },
|
|
/* 46 << 0 */
|
|
{ { 0xa618d7479fc4f435L,0x9f24fba649ddd10eL,0x60976b01b472d789L,
|
|
0x9266634957719f54L,0xd9c79db800541257L,0x374aa9069481ed0dL },
|
|
{ 0x60efb1147fdc2d7aL,0xa1590c30ecf58643L,0xd7a198a4185a849cL,
|
|
0x19ab802314eb4ab9L,0xc82d5998ec090d06L,0xfc539eb3e259c7dbL } },
|
|
/* 47 << 0 */
|
|
{ { 0x6f888f7df0c668caL,0x65c788785f0dc66cL,0xbfb185125f5b07a0L,
|
|
0x780abff7d878acd0L,0x504f21b1570cf950L,0xea5b37c5da233371L },
|
|
{ 0x487ae8bd22437ed1L,0x9c701758249cf9b7L,0xf86562a898fb34ffL,
|
|
0xdfeea1a265e0fc91L,0xeef006912e20fc23L,0xac9dfec7dfa72a8bL } },
|
|
/* 48 << 0 */
|
|
{ { 0x3ccf806ab35bf6cfL,0x2d368d48e7f30c2bL,0x4f504e06ea52bef9L,
|
|
0x40d01ff53a7d2f3cL,0x62e5c5d3e73a1bc9L,0x66e4794bae7d7400L },
|
|
{ 0x3d30625e5ffef312L,0x4580609da766ddf1L,0x5c3ca10d04bab985L,
|
|
0x2605ca009da2a2caL,0x48eab00eb5c9462cL,0x271e42a12624a583L } },
|
|
/* 49 << 0 */
|
|
{ { 0xfa5c3aef697136c6L,0x8ea5af63a5ea6fb8L,0xa669156542e365a4L,
|
|
0x47c56c115b6e3386L,0x1197832bcea03f56L,0x0b470bb250e4ea9eL },
|
|
{ 0x3113c74313b25712L,0x8d6c174ed2497d48L,0xfc4486ee49c9ebe8L,
|
|
0x2487edd57f82bdd3L,0x771e64415b57be2fL,0x2d1cc518e28b2bdbL } },
|
|
/* 50 << 0 */
|
|
{ { 0xa96763d2fba32d1fL,0x172cfe4ecb5af900L,0x510bd675cb2ec3f1L,
|
|
0xbeabb91ac3c90051L,0x9cbf755b46f97ac7L,0xa820e8303a5d50d1L },
|
|
{ 0x83a9f17e308c4545L,0xdf7dc7053048461aL,0x6124642f0f32b151L,
|
|
0xc1b444139333e405L,0x6f7bfa7e13a4f7d6L,0x6f58fa8b7181c2a1L } },
|
|
/* 51 << 0 */
|
|
{ { 0x2c4ccac72070ac8dL,0x1947c0caec4a22b8L,0xa5e0fb598c5a78d9L,
|
|
0x464ae8d241a84de7L,0x3dba16e9daaabc27L,0x16634a504f35cb3cL },
|
|
{ 0xadc18bf9b16ec84fL,0x324d067e7359dd35L,0xdaeac0c3570543f0L,
|
|
0x0b2240003c887d36L,0xc69489e2373f1a0dL,0x518b047dcbaa0d97L } },
|
|
/* 52 << 0 */
|
|
{ { 0x8f6468656f9201b9L,0x8a944b316b326232L,0x5687d1dca6ccfd35L,
|
|
0x0bedaa85e5377c00L,0x252b48f5cd8d7d77L,0x4b820d9b31d83660L },
|
|
{ 0xa9e5af3ccae07f15L,0x0a8930fc1208b9faL,0x6d0a166ced3c3b7aL,
|
|
0x90e2aead7f78aaf8L,0x222465866e5ede76L,0xc5cc339dcba1fd4bL } },
|
|
/* 53 << 0 */
|
|
{ { 0x3b1bddc6fbde49efL,0xdaed7c268a0915ccL,0x0b0110610f0422a2L,
|
|
0xcf485c74a7c54b16L,0x642ec4e615c3aae2L,0xa8ba8f10e0f383eaL },
|
|
{ 0x2a2054b495618501L,0xebec6442089efa8bL,0x5786a19a4e2fa83eL,
|
|
0xd2c71ad139069963L,0xadc93d9a481765e2L,0xedf2e3eb7ecc9485L } },
|
|
/* 54 << 0 */
|
|
{ { 0x11853add834e6c54L,0xab2f15202175fbf4L,0xcff00bd23c9b5a41L,
|
|
0x075134ebabd64a6aL,0x48c075daaadd6150L,0x4576a6497cb89442L },
|
|
{ 0x340a767034adeda3L,0x8dbb571c77fcd1f4L,0x0bf879d693b44ea6L,
|
|
0x1ae1dd97d13444bbL,0x6e9e86bb7b1eb77aL,0x420eb673906a2949L } },
|
|
/* 55 << 0 */
|
|
{ { 0xbcab5f60069f3367L,0xfd6622bc1718ec3cL,0xa4fb7867e3a142d6L,
|
|
0x6078d8bf085faeb3L,0xfa5cbfda60f4554fL,0xb3fcd5d1690cd408L },
|
|
{ 0x4ebdee7d281f7884L,0x82af23aa180a63a7L,0x8de3107c3d079f61L,
|
|
0x17c6b5cbbe2334f8L,0x6a91e73997d0fa06L,0x7460257314ceeed4L } },
|
|
/* 56 << 0 */
|
|
{ { 0x483350a5ebb8cdadL,0xd4215b4fc7a8baa1L,0x8b6fc785e692fdd2L,
|
|
0x2629ba4fd1deca25L,0xe9981ea6820da79fL,0x7772a913e6436cc1L },
|
|
{ 0xd141235c553fb41dL,0x28179e6cc852f64bL,0xb623a1aeeb8cc21cL,
|
|
0x05826192490bb572L,0x56fefff326f349ceL,0x31ff648e0f88b82dL } },
|
|
/* 57 << 0 */
|
|
{ { 0xb14ba61cf97f865cL,0x73bae4c1694b8b0dL,0xa14967dfac4bbf62L,
|
|
0x1e9dd1509bf446e0L,0xc052f3eb1c99ceefL,0x814d7fa07a78c189L },
|
|
{ 0xa101a483ab74b05dL,0x7788c258a1737b65L,0x0d60bab7e809a13cL,
|
|
0x8f427bc473c81d5bL,0xd2e130552952c1fcL,0x0a823b9a4b26df63L } },
|
|
/* 58 << 0 */
|
|
{ { 0x941c5c257d0be180L,0x341cf9d9c46785afL,0xdab9dc0015b0fa13L,
|
|
0xa58db4ea4f96af4fL,0x9e9520bf57acc87aL,0x104cec0666ac72e0L },
|
|
{ 0x9f3f7baa1929e675L,0xb8b4ac9ffa80380aL,0xb5f157aa569b57d8L,
|
|
0xe11699e909fa58a1L,0xc08595e35548fbeaL,0x2b51995f794da901L } },
|
|
/* 59 << 0 */
|
|
{ { 0xaf467ce227bf64c9L,0xdfca6897f929974cL,0x64473b595c322738L,
|
|
0x96a917cf1ed0e315L,0x3703435b0de64db9L,0x9ba039679267b646L },
|
|
{ 0xdf0c2aae3a522fbeL,0x41bdb741b335eff0L,0xaccf2edd7b059703L,
|
|
0x6fb34b3028463cceL,0x96d9ba0bd9e3ca19L,0xff336f12504655c1L } },
|
|
/* 60 << 0 */
|
|
{ { 0xc711d5d1c425543eL,0xa61fada6fb4f60e8L,0x0402d5c4eb809f85L,
|
|
0x84b7c2fed74cccd4L,0x61bba736a55b5277L,0x95bb80cece47968cL },
|
|
{ 0x09f92adc16eb7b95L,0xf0e0f4f7e682aa29L,0xacd70b86ad2a20fcL,
|
|
0xbb45a51f948a8375L,0x29fc3b284892e676L,0x8dd21bf0b4ea4f51L } },
|
|
/* 61 << 0 */
|
|
{ { 0x48da1fd3fc60a6e0L,0x54fb5a34222241e8L,0x6035e34f772ae080L,
|
|
0x5ff77ff2332982d0L,0x2366467300fe51fdL,0xc93ea049ef6ba006L },
|
|
{ 0x6640f1177d381266L,0x394d32cd6ae9f4acL,0xe6a7885370d303ebL,
|
|
0x0dda19ffe5275767L,0xb0a6c77201466d23L,0xc4cc11451fc69829L } },
|
|
/* 62 << 0 */
|
|
{ { 0x49a04dc0f5acf772L,0x1e659730c1fb476eL,0x0c7d749907dbb9afL,
|
|
0x03b9f1cebfec21daL,0xd194b7054b14d117L,0xcb4c0a54561fedf2L },
|
|
{ 0xaf623d3f21da4d42L,0x5f5e9b1fd630c145L,0x65609e59d9ff0abaL,
|
|
0x3d2508922ba9239bL,0xcac324ec82c4faa7L,0x0902cc23149446b8L } },
|
|
/* 63 << 0 */
|
|
{ { 0xc5c0e6d7aaed89c0L,0x6ce8ead6149a1896L,0x7a50f7458c949f8fL,
|
|
0xcd7e35f76e2b71aaL,0xf6159e519a049f7aL,0x1c9bf0b0f1e52d1eL },
|
|
{ 0x3bb6c1f518202c80L,0x8d3a5f621ecd7b1aL,0x3bb034e888d17f19L,
|
|
0xdc89bd4997d4048dL,0xf5af7b8e3735df22L,0x52bb3712a0a689e8L } },
|
|
/* 64 << 0 */
|
|
{ { 0xed4de4f88e89b258L,0x957c980f297a9a37L,0xe04b3d30f8a0580dL,
|
|
0xa309199dca57b7bdL,0xfc8e87cf3be44d56L,0x4f5d5ab6d1b30e5cL },
|
|
{ 0xb213c6a030a9325bL,0x0fd1c52df091bc01L,0xfe51bbbf1090fedeL,
|
|
0x6d97cabc301fe259L,0x3ee127895ecd3fe8L,0x888b708b9404ca51L } },
|
|
/* 0 << 7 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 7 */
|
|
{ { 0xe484fd9f8258030fL,0x0f4fa5eff21af80aL,0xc0dd449e7c1c3984L,
|
|
0xf313389118eb5195L,0x0336aab8777a16d2L,0xa6661cc4c241720aL },
|
|
{ 0x678db970a7efacd0L,0x228968656461e382L,0x5d85a0e4a022c7a4L,
|
|
0xb01f1e0434a02a6bL,0x2657eedda5791ce3L,0x239dcab2a277ac5bL } },
|
|
/* 2 << 7 */
|
|
{ { 0x9a7a5b426ae54da1L,0xcfcadaab7040b022L,0x7539438e3d9f0e61L,
|
|
0x013c6719e328c2e2L,0x7f4a706ccccbf891L,0xa335ab82735a2d28L },
|
|
{ 0x46694ef03d984124L,0x0e0bdfabc166b337L,0x9d54ed8b423d47e4L,
|
|
0x8075a8cbf44c9180L,0xd4f5b184abe9b384L,0x424dd00b41abdc75L } },
|
|
/* 3 << 7 */
|
|
{ { 0x99a710b1400f1d87L,0xec3ca386ee47be8bL,0x3a00dcad37168feeL,
|
|
0x1a69d6741765a0dfL,0x85233afe917c4909L,0xa3aa97a4e9bd6210L },
|
|
{ 0x01010526310885f3L,0x21c5de3fb5007b08L,0x5df0c6efee8ddabdL,
|
|
0x5d17d45a0f6dfdefL,0xb73d831a251c9f79L,0x397779e6cb1df19dL } },
|
|
/* 4 << 7 */
|
|
{ { 0x5e2cb07fd7801edfL,0xf9fa2c0b3adc065aL,0xa296c53fd4de1f25L,
|
|
0xd408060c838f7169L,0x68e19d7b2e8a6ce7L,0x2cc6e06c94b58671L },
|
|
{ 0x93d02a07c1cb6151L,0xa10fb4cf35003126L,0x6aa069f51aa3bc4eL,
|
|
0x0e44fbf0dd09b142L,0xe264f343832e5945L,0x5dca2adc1fc166acL } },
|
|
/* 5 << 7 */
|
|
{ { 0x5f63e391d7afb4c6L,0x85208bcd2bcb4a76L,0x10022d53c3da8fd7L,
|
|
0x607538c007e50047L,0xdbdb0e7212793242L,0x8e6b9f6135eb668fL },
|
|
{ 0xbe5632887e1da455L,0x5e73e1a06e544e82L,0x0c28a5d29a2da4deL,
|
|
0x62b30a8822326300L,0x470764f16013086eL,0xcbe2c34cd3ef5fbbL } },
|
|
/* 6 << 7 */
|
|
{ { 0x9ee4f522b0f6c604L,0x5b8a689d52736e58L,0x0d5f396db7edb07cL,
|
|
0x09b3457c2e829063L,0xf1d28188f83495daL,0xba2511e6cce559b8L },
|
|
{ 0x17cbaf57d8f90669L,0x3ba19a1c514eacf0L,0x298208995145b8fdL,
|
|
0x92cb5da81a33b1a7L,0xca49fe334c5149e9L,0x5c499b661772b4c0L } },
|
|
/* 7 << 7 */
|
|
{ { 0xb98266b132508180L,0xf5008b926719d49dL,0x50c513f98069ffe6L,
|
|
0x99ceb828a7c6f38eL,0x375b8a8225e2a436L,0xb8197f6c416c073dL },
|
|
{ 0x01663a25eadf09ddL,0xfa2ca1571d7ff230L,0xf3b65b2545284aa4L,
|
|
0x144dbefe648bd565L,0x6095ed8ab4c24e35L,0xe1f1fa3696ff2020L } },
|
|
/* 8 << 7 */
|
|
{ { 0x56ad7582a0eb176aL,0x085b5a366e19aa00L,0x85f2c6ffe2c8b036L,
|
|
0x55c6d357fcd7336bL,0xb1ecc56d22a46acdL,0x8e0f976736277ac7L },
|
|
{ 0xa4ed11e901878921L,0xd38355667f4fb650L,0x5fdaba45266158aaL,
|
|
0x6f0b27fd89e0dff0L,0x32ef7ae2eb6b02d0L,0x2f145871cc1b46e1L } },
|
|
/* 9 << 7 */
|
|
{ { 0xc7698dfd4b449cfeL,0x78aacb7bd1517720L,0xaf0f6ef574cd5f32L,
|
|
0x026f1826f17954e3L,0x33ef67ab2453185bL,0x82f0fcc90a420c0fL },
|
|
{ 0x5b444b3645f154b1L,0xb27c4ece70d17f90L,0x6417e0d039282194L,
|
|
0xebfb5fa001aa4f4fL,0x9cc5d0b573932754L,0xe8b56699704ffd85L } },
|
|
/* 10 << 7 */
|
|
{ { 0xc112733b9d4075dcL,0x349281c187737549L,0xbb7d8e0181009785L,
|
|
0x7640a3e2bfe16c4fL,0x4e34813ec1d9f810L,0x61985fbc8d2605d7L },
|
|
{ 0x2a544cd8e3f66442L,0x48879af56a7c9e94L,0x9e6157bacec18a7eL,
|
|
0xa555fc9511b882d6L,0x4305a4dd04f86563L,0xc58ed7631d0fd96eL } },
|
|
/* 11 << 7 */
|
|
{ { 0xaaeec0f9b726e2edL,0x243ba6614493d146L,0xd799c3408980a9fbL,
|
|
0x886e4f44ed060f57L,0x52126b82c1f83f6eL,0x8b4978441df301ceL },
|
|
{ 0xeb2a98abcdc4e434L,0x87dec119474e2c77L,0xcbbc613092eb1528L,
|
|
0xb0b0bcf7c454f37eL,0x404d97a7e1a919d3L,0x26d1baa825e62c30L } },
|
|
/* 12 << 7 */
|
|
{ { 0xf04145e82d2696b3L,0xaffb66acf4fb2928L,0x9ffcba4e12aa299fL,
|
|
0xcc5ec24991b3b517L,0x9edcd4616f81c747L,0x0a96090a77a883ebL },
|
|
{ 0x9b0bab58a2aa4badL,0x76359a5e8f9b84e7L,0xfe8cd81e438a9d43L,
|
|
0xf40e2b5e25ca8b3cL,0x4254030067bc720cL,0x883002a46b2446a3L } },
|
|
/* 13 << 7 */
|
|
{ { 0x4b43bd3206c3aa7bL,0x83ca2db60a470b08L,0x07c1036c06f22f37L,
|
|
0x312e04d7bbb46ed2L,0x6a1d70a40193e5f6L,0xc69720e8ba8a3f38L },
|
|
{ 0x2c003429468a04b1L,0x885c43bfbc83fe25L,0x65a65259393e00e8L,
|
|
0x7154c7ac2af17741L,0x682224d331dda744L,0x6183dd8bc80b57f5L } },
|
|
/* 14 << 7 */
|
|
{ { 0x80e1cd16c496089aL,0x7a59f4c06ec2000fL,0x67a019d509ddce06L,
|
|
0x52573e3e70c4b032L,0x16d253e14d3ba57eL,0xa43c6d42162504f7L },
|
|
{ 0xa237bbf952ff95e4L,0x81187e659acb7273L,0x4b13531a1f384daeL,
|
|
0x39067f3398125165L,0xe98fb141672dccc1L,0x594baca0a75e27b5L } },
|
|
/* 15 << 7 */
|
|
{ { 0x85e12293c205465bL,0x57bbcfb1b71cbe44L,0x201ed45c1bc85881L,
|
|
0xccbc39d5ccbe7dacL,0xc509b77f9277f310L,0x171b603aca1b70efL },
|
|
{ 0x9b99605504d2dbbeL,0x986d6323451c918dL,0x75ad922f63c6fb03L,
|
|
0x69e2cca49630182fL,0x1389a2b7f7b34d1fL,0xa66a80323d4f7c7fL } },
|
|
/* 16 << 7 */
|
|
{ { 0xe65245cef6e9f82cL,0x9e234dfff6da7b5aL,0x5677c121bad2c806L,
|
|
0xc52dec32060fcf24L,0x78d070675d78cccaL,0x630002ea1bc8b6fbL },
|
|
{ 0xc5cb86beeb2e99aeL,0xf13981e78551d16fL,0xfbb7cdf2c92a70d7L,
|
|
0x5a9ff1f1f53cd2a1L,0xfdbe6b7a984f1139L,0x4403d046a470a9f1L } },
|
|
/* 17 << 7 */
|
|
{ { 0xdf8c9325efcc63faL,0xe0d35cd966563147L,0x140b9a8bc144d7b9L,
|
|
0x492bfbd70c17c75fL,0x3cbc2b644c5c4d8bL,0xfecfaf47ff8a3328L },
|
|
{ 0xaf341aa179b8c3d5L,0x5e72713ff04f29e6L,0x652219fb9f5b6fb6L,
|
|
0x9deeba3f0764460fL,0xb8c2bfa5fa069d0fL,0x5d3e6fefe57be3e2L } },
|
|
/* 18 << 7 */
|
|
{ { 0x52c9b94decd84cacL,0x34c2d0ad446dc59bL,0x5563701d951878ceL,
|
|
0x92e2fc1c843c9b1cL,0x2309a5f13dfc7a98L,0xdaf117dc0c57a156L },
|
|
{ 0x5739190d359fb843L,0xd433e9bb4b88e3a8L,0x4d6bb0e2c47a1f45L,
|
|
0x511eaa33d7b59627L,0x42ef82c5e389e532L,0x641a0bdcd75f4c08L } },
|
|
/* 19 << 7 */
|
|
{ { 0x3ae32dbdc7e30cc3L,0x0c970135af5d0ea3L,0x8fc38e50bd9a0528L,
|
|
0xdb0506791bfa634aL,0xf3514fbd245cb0dcL,0x3a3c8c6982319ddeL },
|
|
{ 0x92136baf6426632fL,0xabc3e24aabdd5641L,0x8ccae1429cc004baL,
|
|
0x6c9834d8b3ee0d66L,0xa807ab63e1f7e8d7L,0xb4598e2a220aea7cL } },
|
|
/* 20 << 7 */
|
|
{ { 0x19821469d678d1a3L,0xf9fa42e60df2f58dL,0x1177daf49f284ba0L,
|
|
0x6dd2ad3d2a201dafL,0x667b0e383d427075L,0x39b76d1d4212b65aL },
|
|
{ 0xc6720ae0bf3612fcL,0x72559d98775f8137L,0x466e8e4476c48a09L,
|
|
0xa05f8eb07fb5428aL,0x7fa1fbce5e36b7d3L,0x13bab84f8d1fdcd1L } },
|
|
/* 21 << 7 */
|
|
{ { 0xf1876140ed6f3524L,0x47171ee5cb94b2adL,0x56d836abcb8de844L,
|
|
0x346e80890d3b4271L,0x0110df1fdabf6a02L,0x6850fba1f571cb92L },
|
|
{ 0x490cd9af6209f064L,0x41f32d5f1cf5636cL,0x558bb7ddc328f9dcL,
|
|
0x44abd0b9d32e3e4dL,0x2c42a5607fc2ff0eL,0x8b1dc5e12c9931f5L } },
|
|
/* 22 << 7 */
|
|
{ { 0x6a35f6efdca1ce69L,0x04216d3184de3658L,0x3c3010df732f31b1L,
|
|
0xe4421a872c1444b8L,0x17c987a3c59c1ccbL,0xd67159dba297df1bL },
|
|
{ 0xd13aa7a0bc96041dL,0x686d7b77f44c3d8fL,0x6c2e505f09b2b933L,
|
|
0x8c04eb8256161b34L,0x61785cb4b344bec6L,0x60b4d06cbf8b0b45L } },
|
|
/* 23 << 7 */
|
|
{ { 0xe5b055481883c1bcL,0xd5bc37684597b8afL,0xa71ae49adb2fae11L,
|
|
0xc1ac1b3e050327f0L,0xd990b2a668f3cb1aL,0x566e5175b74a3228L },
|
|
{ 0x348d382957909fe3L,0xe849dd8dd03c2374L,0x4f31a278150fb5b4L,
|
|
0xbfe265cf168c0798L,0x2737c156ce6a34beL,0x4478d6ae4aa6b73fL } },
|
|
/* 24 << 7 */
|
|
{ { 0xb5b16cd48d040c69L,0xfdaba315f95a2dc4L,0xc9fef34961ce4704L,
|
|
0x5fe87a0ddbb53ed6L,0x3f0ccc7973d70f93L,0x4601d1bc46724a1aL },
|
|
{ 0x5c4a15ae24f08565L,0x5eda1e8aaa577320L,0xe31ebb35bb32d307L,
|
|
0xcdc6f13bdc770a0eL,0xbe3ae514c434c2f8L,0x57c7fdf63a0ef0d1L } },
|
|
/* 25 << 7 */
|
|
{ { 0x85165ea2d71c01a5L,0x3935171c99a29e59L,0x2aa1b5837d326190L,
|
|
0xb1d702f8e79f3959L,0x94100c65c6ddffd0L,0xd1d56d626a9c54c6L },
|
|
{ 0x5c93b4cf7ce12b66L,0xfc28574bb32a90caL,0xcd654a96e755969cL,
|
|
0xa06f436cd1bec664L,0x9b27c110ffb6f3e6L,0x529b77d317b476c4L } },
|
|
/* 26 << 7 */
|
|
{ { 0x04c3d9e162ccecd4L,0x6050bc1221cb59a1L,0xb33847543cbb7e07L,
|
|
0xef2201ac4cf1be50L,0x99c3dda42d2ac886L,0xad19cb0ab776eff3L },
|
|
{ 0xd326dd7f5a3d9036L,0x9fe56af2e5b27667L,0x3d849fc072cea4d1L,
|
|
0x262a0cbcd6aa9e3cL,0x8286211885401b09L,0x8ec71d4b98fe8047L } },
|
|
/* 27 << 7 */
|
|
{ { 0x9b769cc43c6b2de7L,0x433d4c26acb13b6dL,0x52878f517530ef4fL,
|
|
0xd0e7ce94b0c5354aL,0x5b094d461d92dbc1L,0x75f681449e4ffb31L },
|
|
{ 0xb9b9e97351b9d1e1L,0xc147ba4698661569L,0x2a06f4cb7a239309L,
|
|
0xd5cb5ad420928958L,0xbde0283bd5bdf5c6L,0xb91664a082e43c18L } },
|
|
/* 28 << 7 */
|
|
{ { 0x8fc0cfa6e51d078aL,0x431d9dd5744ca779L,0x37a4f3120e96e887L,
|
|
0x9c3624fa03ea5144L,0x47d5ecda0b1127f4L,0x018ad424807cf96dL },
|
|
{ 0x58ba530f586b16b9L,0xec7271ed72f47883L,0x8d2918da0281ac88L,
|
|
0x6d0f14ef002330c9L,0x1a90a01591dc35caL,0xeb8e71e9c81607dcL } },
|
|
/* 29 << 7 */
|
|
{ { 0x2eab9c5ee6d01fd3L,0xe030e6d23fa77f57L,0xff41311877edc0e9L,
|
|
0x7817766bb47ca351L,0x70c987e36cb15abaL,0xc3c867ace19c5aa4L },
|
|
{ 0xc24ec23ea05c3810L,0x3965a165c4f0f350L,0x52af99cf7c0d8e5bL,
|
|
0x2d95d23c106e0b12L,0x27507b297f6d44d3L,0x33da846858b191f9L } },
|
|
/* 30 << 7 */
|
|
{ { 0x8e5785629aa664e0L,0xf3a1cfc329a97c9bL,0x91ce3b404037bd09L,
|
|
0x34c447b07f9f2482L,0xebe360164010c2a6L,0x7b8b9b3afdc0a861L },
|
|
{ 0x0e60c49199c4ff9fL,0xf1cf53b1053e703bL,0xabeae550dd974a16L,
|
|
0x28ac5a34994ea50eL,0x9384617d27329793L,0xd04db83ddad0aec7L } },
|
|
/* 31 << 7 */
|
|
{ { 0xcb0ec2bd4b1537bcL,0xd0de683cbac6569bL,0x0688dbee5c96afb7L,
|
|
0x7c7d192f3324ab6fL,0x1455b1e6165fe655L,0x32d135a1ccfe9e1cL },
|
|
{ 0x05a80a2af9e1a86fL,0xdc946c70479c71f1L,0xf8b9ad985aaa0ff3L,
|
|
0x78cf198ef195bbceL,0xadbc082dfcee6b59L,0xe6e1fa844cd19e25L } },
|
|
/* 32 << 7 */
|
|
{ { 0xeb06571c0f547ebaL,0xf292c38d6246c0dcL,0xa185966726eed224L,
|
|
0x8d9e56e46100e387L,0x470506b9dc6298d1L,0xb19e084cf3350ad0L },
|
|
{ 0x83eb62a812abd898L,0x70f152cc2222342cL,0xb089e880e1bd4a82L,
|
|
0xd4d1e70fcaf3b3fcL,0xd0b1ec6395ffd65cL,0x79f27f3a9b184ebbL } },
|
|
/* 33 << 7 */
|
|
{ { 0xb4a7435231a3e816L,0xba8a0af2fd4ada3aL,0x1622289dd8fed2e4L,
|
|
0xb71e579e31d3745cL,0xb090650704a50576L,0xc98b5f20123f900fL },
|
|
{ 0x3799ee82d3587b21L,0xafdd6dc79d9abe55L,0x4053ee2aba64b9d7L,
|
|
0xa816246657b3f258L,0xd9b5c4c4690b1169L,0x32c1d3afd091d158L } },
|
|
/* 34 << 7 */
|
|
{ { 0xff5a9c58de97d0d7L,0xec086138feede4acL,0x55b14035ebf47cecL,
|
|
0xc0b3e061c619fe18L,0x5644c092ead4ebe9L,0xa1a4f7a41e5e0a61L },
|
|
{ 0x8698da06d179219cL,0x86f560bc3f88f732L,0x6ad10b3f1e34a23dL,
|
|
0xd4326bb71307ede6L,0xc93cd2a19b3045adL,0x5a0b733dd8a5160aL } },
|
|
/* 35 << 7 */
|
|
{ { 0x68ef87cdeaedf10dL,0x5ce97a07bed10cb6L,0x9b8dbd896ed762c1L,
|
|
0x1a72b05333c1dcd8L,0x6718eff90f97cfa6L,0x02f886e57dda698bL },
|
|
{ 0x9db378a8c724f4c7L,0x5b55b8383fa6548aL,0x9935a70ecb24bdf9L,
|
|
0xf5da6936e9de8ae0L,0x3b3a10a79b0c4bcfL,0xe4e6a6e86361c492L } },
|
|
/* 36 << 7 */
|
|
{ { 0xb37fc581c634a8f8L,0x06f06c93de1d01acL,0x0f2dac8452fed4ccL,
|
|
0x1673c81bda53f81fL,0x963e500e61e11c94L,0xe86ff87e2144d55fL },
|
|
{ 0x343ddf389bbaec76L,0x16a13527806df1edL,0x1361b5ac0a9edd65L,
|
|
0xf20507fe33c0124fL,0xdf64ec1e4e8e0d18L,0x3f6a42e27860a8f2L } },
|
|
/* 37 << 7 */
|
|
{ { 0xe6db1c43d38266a7L,0x55bee1a3adec0d4dL,0xe41c403ed56d2f9dL,
|
|
0x5fb703f24d3cd93cL,0x4d7ae8c53d2a7ccaL,0x65c8ac50ffa5fff2L },
|
|
{ 0x128814ec264dfa80L,0x08d1372ea642513fL,0xfc5ea1615343a57bL,
|
|
0xc70a6f2f9a2f3f3cL,0xfe61c499df4963f1L,0x2b711eee5cea1508L } },
|
|
/* 38 << 7 */
|
|
{ { 0xfc3e9fb252f9a4f3L,0x8bbeeff32180cd36L,0x274312dbd6438c99L,
|
|
0xbd30984a55612a57L,0x344006d609381db3L,0xd9b696f62bcac509L },
|
|
{ 0x481e4ea3bef646d0L,0x213033d430561b68L,0xf46bf9a05453f623L,
|
|
0x2af3c4a46d848d97L,0xc35e55a543efa02eL,0x8da254342462874dL } },
|
|
/* 39 << 7 */
|
|
{ { 0x1f7fda656a12b927L,0xf628cfac876b9303L,0x1904a0b5d0d0d0b2L,
|
|
0x46d486f6f2894b1dL,0xd35cb5610d243bfeL,0xe759579b851a568eL },
|
|
{ 0xb99572e2c1aeda5cL,0x872e16fb1c54cd1eL,0xf5ec9e42a60fdc40L,
|
|
0x59b03a6201a4b019L,0x9c5e7f87e272e064L,0x6240282f24c918a2L } },
|
|
/* 40 << 7 */
|
|
{ { 0xc2467f9ab92a9a13L,0x0c3ee8eb6add349aL,0x59250eda45e99644L,
|
|
0x22ce0635c8a2df27L,0xec7b643e312e8698L,0x334ccf2eaebd1587L },
|
|
{ 0x0c1c68736bca2900L,0x00beb4c209826cb1L,0x12dbb586cde6b725L,
|
|
0x8d7cee6c66dfed41L,0xc38deba2014de4c8L,0xa3ba6ec76248442dL } },
|
|
/* 41 << 7 */
|
|
{ { 0x870be3ebef38abf3L,0x6e0cf541f74dc605L,0x499976bcda4bc168L,
|
|
0x5513c6122548b3b8L,0x5b9a054c3f647360L,0xa47f9f8bde929154L },
|
|
{ 0xa2ae9ccbb8ec35b4L,0x934c5c0a4d9857e3L,0xc9dd66cc4b4f01ffL,
|
|
0x42a1afa2e5b5e147L,0xc284e464f3d9b380L,0x67845404e21bbe63L } },
|
|
/* 42 << 7 */
|
|
{ { 0x9ec1ed3342ec772dL,0xa77e1ecf5501609bL,0xb059e214a02906f8L,
|
|
0x35b2ebceb28e4d14L,0xb8453ec22cf036eaL,0xe621234b2518fe75L },
|
|
{ 0x079d7d11f03cd158L,0x357492f91b2f011aL,0x3c2186da0661992aL,
|
|
0x7adc1c0fe5df978aL,0x88d329db5300cdccL,0xd915c2444c0d644dL } },
|
|
/* 43 << 7 */
|
|
{ { 0x1b9797a8f0ff03f6L,0x00dafe43f41c9284L,0x1e565c33f2bdc817L,
|
|
0x63b77ad9784b1a5dL,0x3304540e74aa6079L,0x630524f3d7181d2bL },
|
|
{ 0xb4fe5fcca2804658L,0x1e48e50b9e393a6eL,0xb5bccd49397a94a5L,
|
|
0x95394743eef17accL,0x4d67ba5226dd1687L,0x80965c3432349d9fL } },
|
|
/* 44 << 7 */
|
|
{ { 0x1d70669e49f1216eL,0x8645472fa5fca474L,0x9242e8ddfc400357L,
|
|
0xe7ac31548623996fL,0x37b9e68ce61aecb5L,0x7d2e10fdb997e4c9L },
|
|
{ 0xc0cb59a6c2086dc9L,0xb38e2032d7952172L,0x78eaecf6eebac939L,
|
|
0xece490b42f5dbaaeL,0xdb17501dcdc32565L,0x59bd392ab133bf99L } },
|
|
/* 45 << 7 */
|
|
{ { 0x71554fae07de21a7L,0x3dd66b8bcc42db25L,0x9da85c0f0636e9a4L,
|
|
0x61fef273904930d8L,0xcc8f527b73369e81L,0x4207dfab7caeacd8L },
|
|
{ 0x99e5d1404fc763d7L,0x5cc6a3739f4e8947L,0x9ef14ec1cde33eaeL,
|
|
0x25eb3aa8095872d2L,0x0db8268d7d9e6dd9L,0x38846510c2ccfe92L } },
|
|
/* 46 << 7 */
|
|
{ { 0xce6197e822d0a502L,0x69df7f8e09d45970L,0x0274f48b7eb4718dL,
|
|
0x47461334a8c22b75L,0x89cebf17bf25b9abL,0x57c042f6fdfea412L },
|
|
{ 0xb19c338644346b96L,0xdba17de06ba014c4L,0x6697687a5f844d69L,
|
|
0xf16dee4c1a66c6faL,0x7f916e47fdafd0d7L,0x1c3842d2340f158cL } },
|
|
/* 47 << 7 */
|
|
{ { 0x417c9ab760efab2aL,0x1745d5c2f0065f75L,0x1a7d86f2ed71b350L,
|
|
0x6d4d504feee5c850L,0x4ae7ee0da657b859L,0x1f72ded53c302a3fL },
|
|
{ 0x08779fdae7b22e51L,0xb04c1c0446d90bfdL,0x4dc97219712f96d0L,
|
|
0xb15e8c0041a6be82L,0x384a02cca3804090L,0xcea45861babd1ee5L } },
|
|
/* 48 << 7 */
|
|
{ { 0x3c686079d42aeb95L,0xc162e5e985e3ea0fL,0x34cf58611bbb2455L,
|
|
0x7650de1d8773b064L,0x3b7562c6d2bab35dL,0x83191b4433d0741bL },
|
|
{ 0x4b604db03a6bd9cfL,0x87cd84db074aed21L,0x02a042d2d4f91f9cL,
|
|
0x5a5d52e5e42c2a67L,0x31291acd1d5f216aL,0x9c3971bccd6203c8L } },
|
|
/* 49 << 7 */
|
|
{ { 0xec931d6599e9ec3fL,0xe9d780c64bd554d9L,0xa580534502eca45cL,
|
|
0x84701f1ac1276ca3L,0xcb7ba786d5f9438bL,0xf3a27508c85f663aL },
|
|
{ 0x044df512118c9421L,0x1109fd431039871bL,0x7865443de2378386L,
|
|
0x7a5e2d49e70297abL,0x112763ca6824d2b3L,0x8a05f2c90e84bba5L } },
|
|
/* 50 << 7 */
|
|
{ { 0xde3bfdebff044924L,0xd7f2a5181a0458f9L,0xc03df0c00139d557L,
|
|
0x7a958c60cd3ad0d4L,0xec9f2f9759a43584L,0x5e0fbba950d8b4b6L },
|
|
{ 0x5fbc5e3888245837L,0x17235805a267a54aL,0xdc24a508db55d65bL,
|
|
0x431e4d5623c704d1L,0xb1f85b2277585f9cL,0xb288f25ed0b1c374L } },
|
|
/* 51 << 7 */
|
|
{ { 0xd8fd5b405a37c029L,0x5c9d827fe4d37effL,0xe024d7952e046275L,
|
|
0x0661277f913c55c6L,0x21ee10eb904b3679L,0x32c582e066778adfL },
|
|
{ 0xc353ab1fba8d17daL,0x1d4ab06b5658ea17L,0xb908cb88a2d70bb4L,
|
|
0xfc215909a98daaebL,0x7aea6c8777000e24L,0x19e0acbe38446e20L } },
|
|
/* 52 << 7 */
|
|
{ { 0x1bc3803e2f98532bL,0x39d0c3258754d142L,0xa7b035c5d739eaefL,
|
|
0xd36ddeb8fbfdea2dL,0x7df72a94bdf64f2aL,0xab4ad6b880bc3c47L },
|
|
{ 0xdf386df3877fa482L,0x4b94260470519bc3L,0xa3399d91d20e1e04L,
|
|
0x7f5208b797cf58ccL,0x528f6a2814424c00L,0x83d74730bd900d10L } },
|
|
/* 53 << 7 */
|
|
{ { 0x501c657f34ded7f1L,0x9071027e12fa53bbL,0x395e16aedff079ccL,
|
|
0xea95dc84770ac4b2L,0x4d2aa60a41355974L,0xe04effa507f12473L },
|
|
{ 0x38ca98385cd1c738L,0x3c067a0b683c0dbaL,0x55ad2dec67589842L,
|
|
0xe51550f7dfdae3c8L,0x21a56717214d51aeL,0x75b6a4a012a0fdcdL } },
|
|
/* 54 << 7 */
|
|
{ { 0xd63605266a4ea95bL,0x180f72d403e67090L,0x7faf4529751c8c9fL,
|
|
0x1ab7b50d00e4252aL,0xc0e69adf34811274L,0x5c4c83495e99c6ccL },
|
|
{ 0xcc9467f29a9e02a9L,0x5402c2da5c4fc719L,0x1dff8c5d3f6d5bddL,
|
|
0x88a7d27a2c653c3cL,0x067f31183a050dc7L,0xca0f7dafc4f0236eL } },
|
|
/* 55 << 7 */
|
|
{ { 0xa09306e9ca177c3bL,0xea84f03ed0552a4dL,0x7ae9024f3c00d359L,
|
|
0xe189ebc33aa619faL,0x4adeefac8354579bL,0x90168ef9699db1ebL },
|
|
{ 0x75319141ad87490aL,0x7b48fe7629c1bf84L,0x00ae82c7a2235f2aL,
|
|
0x6292c9cf68562b59L,0x0b6500943935ca20L,0x39f22cb027f33addL } },
|
|
/* 56 << 7 */
|
|
{ { 0x92e4c851aa1ef488L,0x4f91fc22846528a9L,0xaa2f5d2d5dc13a84L,
|
|
0xba06aa68f1072d4dL,0xf4f3b17c5e3a2ba9L,0xff36a5355e4dde77L },
|
|
{ 0xe8ef143aae17dddcL,0xcc82631ba1fcd4ecL,0x97db807ec7d3963bL,
|
|
0xe4aff04521d85ce2L,0x2d6480e674667392L,0xc8ce97f3a55d0b3fL } },
|
|
/* 57 << 7 */
|
|
{ { 0x1a32b8457962a675L,0xd78efd71723d217dL,0x9b03d6573b41a2c5L,
|
|
0x1116f33589a380b1L,0x2c0359af931ee15bL,0x8a53744f239ba4c4L },
|
|
{ 0x4801397dc78cdc83L,0xc43b9f0434ae4453L,0x9cc8f6cec356a35bL,
|
|
0xd5a74c2a648b39e6L,0xa54d668c0d5e78fbL,0x36257047cfcb8f6aL } },
|
|
/* 58 << 7 */
|
|
{ { 0xabeef3461549c215L,0xfec59db2ce4aee45L,0xa1743a0f5305df83L,
|
|
0x9d598abdf211bacfL,0xd14609dd52a513fdL,0xd3dc446be00d4ad0L },
|
|
{ 0xbd8883e9b272211aL,0xe991e57757879fd6L,0x5a093d372b732171L,
|
|
0xdd901071f55f18dbL,0x87f04c0034fecfd1L,0x2c07df27c94f6a5bL } },
|
|
/* 59 << 7 */
|
|
{ { 0x518e3ced1c17df0cL,0xf8971149ff5dbc4eL,0x5fec8bfe0ac9d27cL,
|
|
0x41d68852489eed7dL,0xf48ef4bf3c3c4725L,0x3b8d9eee7681eceaL },
|
|
{ 0x7743ededdaae4bdcL,0xb9665ef5d1bcf697L,0x9d77f535471bb958L,
|
|
0xb5db5b96d752b2ddL,0x2cd3c919c368982dL,0xf8297660e9cff6d7L } },
|
|
/* 60 << 7 */
|
|
{ { 0x39e7da1028946a2eL,0x4e628a96c3a76f7cL,0x43b8b808e9f6000aL,
|
|
0x86cbd25ca48bbb79L,0x5ce825e273092951L,0x43a6031df0cbee32L },
|
|
{ 0x6d685a594923485dL,0x8d4483ed81a17f47L,0xf61d329bbc379719L,
|
|
0x9deef7d0f6596ee8L,0x0314a572541b1222L,0xe2b34d387ea7d376L } },
|
|
/* 61 << 7 */
|
|
{ { 0x05ff6faa31f43d37L,0xfb83f23211b801f6L,0x238792d519b223a4L,
|
|
0x28edadcce004f601L,0xf77747b3bdeb7597L,0x2178dbe21e6575d4L },
|
|
{ 0xd48ec49842870ba2L,0x7733661d15dca6dfL,0x08212e2f83393416L,
|
|
0xffa1bfe2614c545cL,0xfaf4ab8494254145L,0xd8f9eb48000d250cL } },
|
|
/* 62 << 7 */
|
|
{ { 0x9ff4f289a66132a2L,0xc54fb8001e098994L,0x09d3cd6624cc2471L,
|
|
0x6d0f74167838e14bL,0x7438cd2dc540cbdaL,0x193b16817d6fa8b4L },
|
|
{ 0x487a7dedab33c6f3L,0x625eb8cf02f5aa09L,0xd8039682501323bdL,
|
|
0x9de122e38e216951L,0x40a8fbde0711c51aL,0xf192b5c283a474c3L } },
|
|
/* 63 << 7 */
|
|
{ { 0x3782cbda57e04e9cL,0xec639886e41b30dfL,0x4cd14afd12d2f686L,
|
|
0x0aa093ee8b768113L,0x6cfc12cdad598f9dL,0xe4a62f1194bcce0fL },
|
|
{ 0xd5035fab150ad4f2L,0xb3cd4871ae2e8da4L,0x49c9e78271ad9c3dL,
|
|
0xdcafeb34825690cdL,0xc05fb7a38c246f85L,0xefe16be3a82cc013L } },
|
|
/* 64 << 7 */
|
|
{ { 0xd42777314c14ee0eL,0xda8146d15e881c3fL,0x6b0746b099f1867cL,
|
|
0x1ec73d72602dd4ccL,0x27fae51538081120L,0x6a677bdc2f8b2f2dL },
|
|
{ 0xb924af64d60544e9L,0x1439e183dcfc6b16L,0x4e88e9ae068565acL,
|
|
0x8a3dbd25a9a4f146L,0xdb4a3e483f93f734L,0xb1971c058f1d33bcL } },
|
|
/* 0 << 14 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 14 */
|
|
{ { 0x721bb8363a7f43c3L,0xab5b3108c12dca0fL,0x9cc9a78934853870L,
|
|
0x78b604a7af598c4fL,0xd370375e476f27c8L,0x9f0415b80b15cba5L },
|
|
{ 0x2bcfd9a4d400dc1fL,0x2a6fe03b4bc62dddL,0xb05a6464a211b19fL,
|
|
0xce059d419990b504L,0x011c5f87d94951d3L,0x13cec08900d9c7b0L } },
|
|
/* 2 << 14 */
|
|
{ { 0xf365419f9b280fd9L,0x13e3b12746365672L,0x8a91c165c41880aaL,
|
|
0x3eb27a97f9712fbdL,0xa6587aec76c55678L,0x7c3a04b702cd79cfL },
|
|
{ 0xfc878f9cda712eb8L,0x076e61170fca3e02L,0x09a184d8caf6df5eL,
|
|
0xd32bf232aabcde75L,0xf601d0de03de597aL,0x85d2b5fcc5da2858L } },
|
|
/* 3 << 14 */
|
|
{ { 0x3075a7636c888df8L,0x6305c20472e21527L,0x6b1d683e8798aad9L,
|
|
0x0d09624680706369L,0x91db5e7f7b854739L,0x0e63cc6e02d72332L },
|
|
{ 0xe929e3ea1f7ff6ccL,0xd53a18a145595925L,0x867916cb93af8be1L,
|
|
0x757e9f56c5c305eeL,0x3f9071c75c83063cL,0xccc0f92d7f6d5bb7L } },
|
|
/* 4 << 14 */
|
|
{ { 0xb6029961ae899afaL,0x8eedd66e681b6e1bL,0x82db693b4df3e5b1L,
|
|
0xb5131488a0c3e357L,0xbfb01ff3ccb2f577L,0x28ea947027a72cc3L },
|
|
{ 0x26170928e39e325eL,0x42d4876b84f80188L,0x0bec6a634c872d76L,
|
|
0xa0a7cc90b14d9c9fL,0x8a32d2c44f6c7778L,0xe7cd346e3b889a4cL } },
|
|
/* 5 << 14 */
|
|
{ { 0xab35a14f5a4a3753L,0x1d0d5a142bbbd563L,0x54cfffc5998d4514L,
|
|
0x1c02f381a77ed59bL,0xe4a7a6ab21c9c190L,0x50059df54a9adb60L },
|
|
{ 0x2d0383ba34bd7008L,0x894889bedf1a4f41L,0xe541c62612ac407dL,
|
|
0xcc0e417964c3b62bL,0xdb8ca1f33a0978b2L,0x4ef45a2d287e8c6cL } },
|
|
/* 6 << 14 */
|
|
{ { 0xea95b5c9437f2efbL,0x67d3e9b58e52ce8eL,0xfb33102488ff5455L,
|
|
0x883ec9fcc3101dedL,0x056218e20ca5f1f9L,0x4c9b2483bccc65d8L },
|
|
{ 0x13199b26123db2ecL,0xbc1d82479aff90dbL,0xc4a9311d367516f6L,
|
|
0x3b40c867cb6e90d6L,0xff674ff84034415cL,0x2787db45a1821e7eL } },
|
|
/* 7 << 14 */
|
|
{ { 0xacc263fcadeb8508L,0xb52ebcd719854c90L,0x3d54e7805f2ce0aaL,
|
|
0x2fc056a97e02e760L,0x47e7173e32da5f93L,0x1d468de3fa893134L },
|
|
{ 0x9adc877dd73396b5L,0x430826afeeb00c82L,0xfde2c3da96a673caL,
|
|
0x467575ad33e43f9cL,0xc3b2c3a1ec1df2f0L,0xf0348e6f2252a8a6L } },
|
|
/* 8 << 14 */
|
|
{ { 0x860ef794609683acL,0xf0631ad39af1c522L,0x322c83662ee7f522L,
|
|
0x58ccd95f54122af0L,0x7454880c2bbb2d80L,0xea173d8286d8d577L },
|
|
{ 0xd5a3057cea1cc801L,0xfd08d482bbb2a189L,0x26aac99ec3c512f8L,
|
|
0xc3eac036556d891eL,0x866c3aa7bf9f6112L,0x7c4c8fb9c144f7e9L } },
|
|
/* 9 << 14 */
|
|
{ { 0x989eef73a9109d83L,0xbe43bd378edd17dfL,0x14a63abd1b17029bL,
|
|
0xfd14ae365ff76860L,0x689dd0a6b8730632L,0x01eb37f147342f9aL },
|
|
{ 0x619bab45e6c446a3L,0x93d26fc97abddba4L,0xda6c120486ffa4cdL,
|
|
0xc608937548758279L,0xaf074ea3034a7230L,0xf220244b82ce176dL } },
|
|
/* 10 << 14 */
|
|
{ { 0xc0c1eb0f8343f5ddL,0xa205e66a0126fa2dL,0x37530a3244fd8be4L,
|
|
0x3c7af6f696ab64cfL,0x1f04305076657202L,0x2c59d31c828f3fb1L },
|
|
{ 0xa61cba51e7f5926eL,0xb2de427391ebeb81L,0x976f2c34bb855476L,
|
|
0x0c6c02c3269e4f86L,0xc69bed8fe2e01fffL,0x19aa421c480bf7b4L } },
|
|
/* 11 << 14 */
|
|
{ { 0xb32e8e229affa929L,0x69ebb533bb7db327L,0x10ac3360a8a8d088L,
|
|
0x066cffa7c485517fL,0x2393e74c12b8eebaL,0xb3a8825a596c8412L },
|
|
{ 0xe2b99fc3bc8b6b92L,0xd7716da085ca802dL,0x92f6693f4de5101fL,
|
|
0xe8b0442304be34eaL,0x05b44ef648324966L,0xa89d9499413df57fL } },
|
|
/* 12 << 14 */
|
|
{ { 0xad0d24c7b617206bL,0xb8be483f9dd13f59L,0xa55134ff7655aa29L,
|
|
0xa3d103857a5e217eL,0xfbb9eeb53a21b295L,0x1de71555c84a136dL },
|
|
{ 0x7579398e0b7487b3L,0xc6ca9575a14dce87L,0x99b32e1e46452257L,
|
|
0x99d54955479d8f2cL,0xc2a8a6a1930b80efL,0x58d9db81656c850bL } },
|
|
/* 13 << 14 */
|
|
{ { 0x0c8fe2e04d89b43aL,0xe4d923e77a04e492L,0x49ecb701617df01cL,
|
|
0x6d80f249bff9a819L,0xf01e604acb7f86c1L,0xd6d3a6664b7f1455L },
|
|
{ 0x657801c19188fb17L,0x339d79450dc92875L,0xca798cf57ec0b757L,
|
|
0xc0808852a62301c2L,0x2dda13558266c908L,0x22bcde8f5e55da21L } },
|
|
/* 14 << 14 */
|
|
{ { 0x6c85a0eda682508cL,0x8350b515edcce6c8L,0xa84a67656f95898dL,
|
|
0x55b0ae971e419847L,0x11115c6edd6a885dL,0x6f0beaf64fb174a4L },
|
|
{ 0xaaae44b2815af3afL,0xcf0697b9927a2c1cL,0x37639d62d7d645eeL,
|
|
0x157b7eda2effec37L,0xb55e50759b9c66e6L,0x33a66a1f85f597ecL } },
|
|
/* 15 << 14 */
|
|
{ { 0x8260c5339b49bb46L,0x3f3df9d6437cac27L,0xd0723229d972d2a8L,
|
|
0xe544a216d0dd92abL,0xeea4a0f5a03588f6L,0x54006166b218dec0L },
|
|
{ 0x0fae2be85778113bL,0xbb9618d68d570227L,0x3ba87360297a47aaL,
|
|
0x9483a8399a76dd6eL,0xa803edaf6eb061b7L,0x6790050cf8067cf4L } },
|
|
/* 16 << 14 */
|
|
{ { 0x171898aa8f7782b6L,0x8b7a706b499b3a81L,0xbc0e835ffdb2c1baL,
|
|
0x4ee30281591f5aafL,0xfd71de3bcc272c6aL,0x532800c46e93f68aL },
|
|
{ 0x35ee08048365c576L,0x6c2bcc94cd4c0221L,0x49f37ff5957b2ff6L,
|
|
0x315d8e7e5ec029c0L,0x33230602ef324c12L,0xf5847f9b966b2578L } },
|
|
/* 17 << 14 */
|
|
{ { 0xed88aa550bf098d0L,0xbc9888fd75f90180L,0x9040919207713428L,
|
|
0x38922bbc1a1f71ddL,0xa430fb65bfbf0f55L,0xa258b9ba867c1998L },
|
|
{ 0xa7f69b03b7294c58L,0x2ec0c5de84dbc1e5L,0x41c9e5207dba8d62L,
|
|
0x545573f1795d8285L,0x1c24a375d3075041L,0x687e1cc8fb6b88dcL } },
|
|
/* 18 << 14 */
|
|
{ { 0xc29b123e1453b1e1L,0xefb0778820059b44L,0x15554ade9291671eL,
|
|
0xeb5a1980429dea37L,0xf96dacbb6c4b867dL,0x4f5563d6abab4d68L },
|
|
{ 0xb5b0ecffcbe76297L,0x5a22996a51d6bd43L,0x0088ec95b7e5cfc6L,
|
|
0x4863a5a1fe373e05L,0x42b7925bc244d93dL,0x85bad13540117113L } },
|
|
/* 19 << 14 */
|
|
{ { 0x01725fbe8201fae2L,0xee4d7d382dc34bbbL,0xaddf878afd7c35bdL,
|
|
0x56522d5865536719L,0x595c3dd8f772d4cfL,0xd87c5b6045af30b9L },
|
|
{ 0x9cc20b9de7992d5dL,0xdfd53d58d56f1964L,0xaf2947bdc7d42a68L,
|
|
0x9322b73dd19e8ad3L,0xa73a9e843243a6d7L,0x9c7dc57992c203d3L } },
|
|
/* 20 << 14 */
|
|
{ { 0x86283e21f9daa551L,0x47fd23f81f696f1bL,0x7d029b1bb9784a9aL,
|
|
0x7c7798bea0c0acb5L,0x41241c716d7c682bL,0x11c6c1131d33c2b0L },
|
|
{ 0x5d469ca23565cf32L,0xa949f022bad4bdbfL,0x3d054cc2a13cf4cdL,
|
|
0x13bd21669e3ce279L,0x01bc70e68a4beafcL,0xb39e351d8aba087eL } },
|
|
/* 21 << 14 */
|
|
{ { 0x92efa2ebfa6cb068L,0x934209b29235050bL,0xc446ee28d5000c05L,
|
|
0xd4e51912862fb7ecL,0xa53940f111193db0L,0x5f2ef2aa82a7fc57L },
|
|
{ 0x1a6b30ecb0210f49L,0x4ab1dac73899548aL,0xb116cc3186737a03L,
|
|
0x56cb33809ebfa5b6L,0x8ac3b61fdfd918b2L,0x65867e3ca102e1feL } },
|
|
/* 22 << 14 */
|
|
{ { 0x26072a5d82357232L,0x3762764e9f0fd2f1L,0x9c5813f60c16733eL,
|
|
0xea2e0e03718951d4L,0xae195bd469e63818L,0x241a4afcfa2f9a6eL },
|
|
{ 0x0e97519f9165d59aL,0x416bd37358e5af1bL,0xc4e811288197b7ecL,
|
|
0x4145be2c9c6ba0d0L,0xc82cb2a17d40b98aL,0xc3c28487bccfa8b8L } },
|
|
/* 23 << 14 */
|
|
{ { 0x920949a810476d2fL,0x5b387bbe2502c026L,0xd1d61a9acd7f026bL,
|
|
0x81003d7ceea9a3f8L,0x6191c15fba5b78aaL,0xacbed41e30ad7befL },
|
|
{ 0x1427f1fd6740f72cL,0xb4b5e7c93c475735L,0x6a374d1773029d5dL,
|
|
0xc1e4bfdacd622400L,0x670b9e36c2686dccL,0x1bb236e08dd4085dL } },
|
|
/* 24 << 14 */
|
|
{ { 0x84aa863ea4ee10a1L,0x24d805a687919ccdL,0x553f3206b5c399b2L,
|
|
0x775b92173cc109bdL,0x25c01263fe384088L,0xa3c4418bd5f743cfL },
|
|
{ 0x3d69705ddf91f1f0L,0x547d46269ebddad1L,0x0198ab1a2626cebdL,
|
|
0xaf8320f285b1afe8L,0xb9c0968ce17e6efdL,0xfedc75c290215bb6L } },
|
|
/* 25 << 14 */
|
|
{ { 0x1d375f7dcee34c76L,0x2295f8dbaa486096L,0xd18577928285cb84L,
|
|
0x53fe6bd5e8c46c3bL,0x6f6cb6c068ba071dL,0x654ab4e8964e0f1bL },
|
|
{ 0xc70857a9edf6aa40L,0xc313c7852fd26360L,0xd705a86a995998d9L,
|
|
0x413d35efd6989c8dL,0xddc0b2070df131bbL,0x21f64be59c7d70f8L } },
|
|
/* 26 << 14 */
|
|
{ { 0x8061d340143ff74dL,0x59e94fc6a23aa7b3L,0xf7c79a0b914c3b81L,
|
|
0x5a836211702c6ae7L,0x2570d63c718123c3L,0x7e86d11ec9f5ce3cL },
|
|
{ 0x80f03f9717bcce3bL,0x073975b1465a7446L,0x29f66de7cb357aceL,
|
|
0xe87bd12c04894fb0L,0xfc501a2651a0b5aeL,0x20a3170c02207a3bL } },
|
|
/* 27 << 14 */
|
|
{ { 0xaab1f0fa2785a18eL,0xa50192fdb37c657aL,0xe7073b27f0c8a908L,
|
|
0xf3e0451b2c82fce1L,0x8237e128c290240fL,0xc1c631621bbf66cdL },
|
|
{ 0x9bbcc2afb6639b7cL,0x07643d299bf0e0c6L,0xf7f070c7671c5be5L,
|
|
0xb09a423a9870ac6aL,0x324503506656cda2L,0x4f404be80584abc2L } },
|
|
/* 28 << 14 */
|
|
{ { 0x3ee52d8f5fe63bd4L,0x09f8405c7a7da77cL,0x35ce95c61881a757L,
|
|
0x0a8cf9d9c13e3707L,0xe71258d548d2d3f6L,0xcf4fd6910bbe7c0dL },
|
|
{ 0xbd6496e1fb9479f1L,0x711c669aab8cb3a2L,0xcbe8501358cfdfb4L,
|
|
0x655c902b59275b4aL,0x7e0ff05b20f722baL,0xcb00031d42b17aadL } },
|
|
/* 29 << 14 */
|
|
{ { 0xc568cee0cef0ae1dL,0x1b3422ca7a55aae0L,0x8dcce5058bb536b8L,
|
|
0x12df74bee92759c9L,0x029abaf02ef962c4L,0x5d30b4359bb1240fL },
|
|
{ 0xc62fe8e7d03a850eL,0x67da35b5b08dcab6L,0x6f4d4e75e8ca1131L,
|
|
0x53d6fbf81bd5bf97L,0x596d850ceaa0b2c6L,0x32e918240e8d39b5L } },
|
|
/* 30 << 14 */
|
|
{ { 0x3360ff11d54bf1a4L,0xbab994cb5c79494bL,0x953ad553757d7771L,
|
|
0xf17f14f068b58ed5L,0x223615317523c422L,0xf0f05f965ebf0d49L },
|
|
{ 0x3386676549182267L,0xf87eccc1ad71c3ebL,0xd7708e18913d8dcaL,
|
|
0x27fe27e1b193eef9L,0x33376365cc45e65dL,0x599b4778d700ac20L } },
|
|
/* 31 << 14 */
|
|
{ { 0xb118f73509ebb3c5L,0x7299c7844d0d36efL,0x409ef9cde10b249fL,
|
|
0x040f91d0156401b9L,0x6b9fa5b107467a49L,0x2ede334334415300L },
|
|
{ 0x0b3abc9c0edc8055L,0x58f850958ca04aa2L,0xeb0d3202e568b6a6L,
|
|
0x5e57bb1a159dce4cL,0x8d3780e03b68641eL,0x78eb21a0d9f50517L } },
|
|
/* 32 << 14 */
|
|
{ { 0xda643272ed068028L,0x86b52135a91fb87fL,0x23865a7c35b43943L,
|
|
0x6ac015884606bbf2L,0x9660ab721559fb9aL,0x1fcb09e73ce2f1a5L },
|
|
{ 0x62af29ab793d2f0cL,0xad5aaef53aee7efcL,0xee9f29b744c11037L,
|
|
0xb2a19cf1d36c2571L,0xb87d88e265b552b7L,0xd8b4f172beb253d4L } },
|
|
/* 33 << 14 */
|
|
{ { 0x6776241470c50124L,0x157c591f57d0eb9bL,0x99e1e2d769b4bcc2L,
|
|
0x81c2b923a9d94ed3L,0xbdd9294fecbf3becL,0x3825c29a4c4fb135L },
|
|
{ 0x431d9f26e915cc2eL,0xc4fb48afec1a4835L,0x97f426c09ada831dL,
|
|
0x0be0cf81d5c48eddL,0x166ee4243d02771fL,0x810bb518b09de508L } },
|
|
/* 34 << 14 */
|
|
{ { 0x9f4dd8185038ba67L,0x5ff1572801111ed1L,0x900d44f163de4d57L,
|
|
0xa36c1a67d5db5e67L,0x2f01142e2bf5cea7L,0x1519ae1f59aefbf4L },
|
|
{ 0x7b963d1f6d989fcaL,0xa5bb3cb85fce44e1L,0x61087c9672fd3285L,
|
|
0xfb2fc6c1c597ef26L,0x5548e25c81e70a6aL,0xa6c53d67a229d7bbL } },
|
|
/* 35 << 14 */
|
|
{ { 0x9d11a26ab9678e36L,0x8142106fbe07b082L,0x3c31548b322fda75L,
|
|
0xa87215ceb7299565L,0xb5229b119ea80113L,0x7221a40f43ae700eL },
|
|
{ 0x1ad48de8cc00aef7L,0xc4573660d266daa8L,0x1cb020a65761657bL,
|
|
0x9e799be24588c895L,0x3d209df968561484L,0xa0fb323295fec6d8L } },
|
|
/* 36 << 14 */
|
|
{ { 0x9292138a3acde05fL,0x7b23f51a50f9e7f0L,0x6ad891a1af59b585L,
|
|
0xbd394db79654da39L,0xcb8c47315f7c6edbL,0x367bbb5d6d2d6e5aL },
|
|
{ 0x8df2c759f51dd55eL,0xce0924d8e6c3517dL,0x49c46188097a8072L,
|
|
0x47169f40980170a7L,0x56198937b96df7ebL,0x09572534531fb3b6L } },
|
|
/* 37 << 14 */
|
|
{ { 0x04c18873d2eef240L,0x5752cce75106879cL,0x4b7fbe6bd9736e37L,
|
|
0x7c7f1de4c85990afL,0x0cda6f07a2324ca7L,0x0894eafa4d80c28eL },
|
|
{ 0x24bd95890ae7e6d9L,0x050d526aaba494a3L,0x4b05455ee583fb5dL,
|
|
0x3b5fb27c6049bb23L,0xc7c9da6ecb5b411eL,0xc1f2528ebc38336dL } },
|
|
/* 38 << 14 */
|
|
{ { 0x8b177119d62ff4b1L,0xb0c02e2783150269L,0xdbeee1f8428f9e51L,
|
|
0x2a55661225ff00dbL,0xb4ebcf98cd0d526aL,0xc69f721fc0efa6abL },
|
|
{ 0x0ceeceb516e29d31L,0x0bf4510127d1c530L,0xad942f1f42a7383dL,
|
|
0x2cf389eb03b8fa98L,0x1aa647651ec6acf0L,0xf7ac647c202433b9L } },
|
|
/* 39 << 14 */
|
|
{ { 0x880bfb2caa7fcbf4L,0x18c2b739731cd693L,0xd093ada3ae39b46eL,
|
|
0xd48a288796c6fb7cL,0xed7c405daf96bbfcL,0x6b63b9ee256335e4L },
|
|
{ 0xfd4795ec7ee8e89cL,0x4f3fa1ccb07320d6L,0xe16c594206b0078dL,
|
|
0xb8c95b563a0b2914L,0x2b5b5ab42b337970L,0xcf612b4cb9f75ea9L } },
|
|
/* 40 << 14 */
|
|
{ { 0xbfe63081596eecd6L,0x20eb6fb0a3a194fbL,0x4497ec2b8751a73eL,
|
|
0xf90e9e4cf88ba0e5L,0xd5a9c5d55974eca2L,0x9fc120ade4f3e171L },
|
|
{ 0x9ae058a633330640L,0xbda3227855bc8aaaL,0x7851cdbc1c9688a9L,
|
|
0xf68d7d9e1d950edfL,0xc89c645074e06425L,0x62406f3b6116d386L } },
|
|
/* 41 << 14 */
|
|
{ { 0x1094390070e509fdL,0x0a8e3db09af61ad1L,0xa487a61538d7aa57L,
|
|
0xa9d56bc5ed020b3bL,0x7ed2294f638b35f8L,0x53d6870dc95fb42eL },
|
|
{ 0x85e828494c2207d7L,0xf88831baf0556be9L,0x64a547979fe416c3L,
|
|
0xd61b652e779bebaeL,0xd3f43e2f2c0ccce6L,0xd5119f341f680ab7L } },
|
|
/* 42 << 14 */
|
|
{ { 0x466f42a1191938bdL,0x95ec31c036f1dae5L,0xa7f350d2feaa8b55L,
|
|
0x66434577555c505cL,0x0c668e73f55d1ca4L,0xd6af5ba4a7bd7449L },
|
|
{ 0x581e14ac1a79d8c9L,0x9761d9763054e915L,0x928e7415d69220a6L,
|
|
0xc5bf4bb405bc4a22L,0xad033b7c45d52313L,0x4e67962c75d66dc7L } },
|
|
/* 43 << 14 */
|
|
{ { 0xc60e17b2e2300049L,0x731c2fa54107f308L,0x848f6db7cc2982b3L,
|
|
0xf251c21085275d38L,0xf5cac5b2128c8a96L,0x3c012933405b27f0L },
|
|
{ 0x9b0a61520b8b15b7L,0xb1c32dc691fa4548L,0xbe7b7654f366d677L,
|
|
0x7e1f33277147a660L,0x11e31a0eeae310bcL,0x3edef63c1b86b525L } },
|
|
/* 44 << 14 */
|
|
{ { 0x6f7e7259c6334c8cL,0xe34cba49b4f2333bL,0x157bf099211d08c5L,
|
|
0x9e39c5442988a4daL,0x796ed9f17a998311L,0x3f4da896d8d349e6L },
|
|
{ 0x8ab75656fab28acaL,0x3e215d5342d14b21L,0x50008fd7bec23301L,
|
|
0xd6ee4853446e2c56L,0x203ff1c880da14bcL,0x27a4bfbbc333ba74L } },
|
|
/* 45 << 14 */
|
|
{ { 0x745e69dfb3d54e52L,0x1ab2a03e7c405cbfL,0xda71141e0bc431b5L,
|
|
0xb3a47e71aafa7c19L,0x5329594fa88a4905L,0x489b5928973aba07L },
|
|
{ 0xbe31a4d37350ad6dL,0x177e5285478a42a4L,0x45a101bf848eba6aL,
|
|
0x4287dfd949936d31L,0xbc4c491dc82823c9L,0x87c816aaeb8b8055L } },
|
|
/* 46 << 14 */
|
|
{ { 0x66f5337cf309ced6L,0x897cbcb9eb5ed3cbL,0xeffb601762c35fd5L,
|
|
0xb4b702f081fd31f3L,0xd5203833f66f6120L,0x1d2d5ef318a84d91L },
|
|
{ 0x22f9fae70edb3857L,0x034197b3cef00765L,0x16d8c6b493643908L,
|
|
0x90ac59e16c51708bL,0xbed18da32edffd9dL,0xc90ac893e750df1eL } },
|
|
/* 47 << 14 */
|
|
{ { 0x4a0af827bdb07e48L,0x5588631e131f46ebL,0xda550ce1e503169dL,
|
|
0x0e16b540f2cf2f14L,0xea19a70dc79930abL,0x5654aa5fa8925651L },
|
|
{ 0x2f1a14906104f9c7L,0x98420d6c654cf319L,0xf967467f3ca96df3L,
|
|
0x6abe4e32dee1fc07L,0x913bdf2bbd07d17cL,0xf96f70eda8ef9068L } },
|
|
/* 48 << 14 */
|
|
{ { 0xa0096d10b7f8286aL,0x493e88563015be8dL,0xa221d57c17f70125L,
|
|
0x4f932f4fe425eb77L,0xf0fa00df78ddfe95L,0x68165f257866f01fL },
|
|
{ 0x01345af4b1693425L,0x3fc8d3a6bad5603fL,0x4269006f0bf46cf5L,
|
|
0x96e3b6b77e340ce9L,0x2a4bda69df7c68b7L,0x9649d8b91b6574c2L } },
|
|
/* 49 << 14 */
|
|
{ { 0x98f55e59112ef290L,0xa5516c3568909cdaL,0x40407393235165f1L,
|
|
0x6eeeae510991970cL,0xae79ce1faaa6d26fL,0x8bc719b441d43f67L },
|
|
{ 0x4a7af92a39cc89a3L,0xf6d14f9a85c8ab12L,0xb9bfca97eb8d4851L,
|
|
0x926b8155cd52b2f3L,0xdd17dbd48fa94f9fL,0xaf68726447cac5cbL } },
|
|
/* 50 << 14 */
|
|
{ { 0x39d7c1729517c2c0L,0x6f795181166e2f50L,0x9f6ecb5dc0ad8b54L,
|
|
0xb480afac8e75ce4bL,0xf51569203dd5ad07L,0x87c855e73799b80dL },
|
|
{ 0xea8c34d9538ebc9eL,0x67bebb6a957b303aL,0xc6511b7b4dfc6d7bL,
|
|
0x9a40cf5885b02ee1L,0xf4fffbbdecc59a6fL,0xe85a7c115cebfbcaL } },
|
|
/* 51 << 14 */
|
|
{ { 0xffa0118c4a33265cL,0x4c4051d583e0bb83L,0xcde22f8d7007d078L,
|
|
0xae9ebbc2932cba29L,0x297c2252f7a82223L,0x662814f41a09fbdaL },
|
|
{ 0x3bfd965640be805aL,0xe49901e592acce09L,0x4e201930bbb6bb43L,
|
|
0xfe94eb4dcc018aa2L,0x454d8c611dcf97a5L,0x11d8e3a230f1011dL } },
|
|
/* 52 << 14 */
|
|
{ { 0xe745ee2c36cc8b1bL,0xb40c94e6e328c813L,0x4144aecd8bd107b9L,
|
|
0xc35567890ea88fd2L,0x017460e30492a810L,0x0c63cd4410b8bea1L },
|
|
{ 0x9123e9a3c890f74cL,0x940fe6590cea499cL,0xbe306232c82e1bdeL,
|
|
0x40544f6bc041d7ecL,0x46de1f3b477a7dafL,0x336551f6951f1295L } },
|
|
/* 53 << 14 */
|
|
{ { 0x2a61217a09b3b9a1L,0x0736704635b71125L,0xfddbf1933df24d57L,
|
|
0x33ddabcb4592d748L,0x2fa9ff8a25309e3aL,0xdca2dd2892a0e76aL },
|
|
{ 0x706350255dfbd02cL,0xe01c2553b6306b8dL,0xb14132905e91ddecL,
|
|
0xf45221866f6de6fbL,0x2d48d001b440319aL,0x926e9b64fe67f843L } },
|
|
/* 54 << 14 */
|
|
{ { 0x5580401264e2c160L,0xe154925a9a6c256bL,0xce2df32922260b79L,
|
|
0x74824410c546d756L,0x2a1d0a5f79887083L,0xa2c040c5da3f7d48L },
|
|
{ 0x74058ecbc14f96b8L,0xe69c09d73415e476L,0xe5a93bb47a443fc0L,
|
|
0xe1bb24800c31d7b0L,0x4701d669f4ab0610L,0x0ad815841eeb23e9L } },
|
|
/* 55 << 14 */
|
|
{ { 0x823cd737d72b5925L,0xee09efb9fa38cb06L,0x6828dced4a21e81eL,
|
|
0xab67b37bf365e481L,0x3995edd2b5a7c630L,0x4c24ac8806930b7cL },
|
|
{ 0xfd7264d36dedce0eL,0xdcab1e333e76fe1aL,0x6b40889a89a94f97L,
|
|
0x7a1fd432b2a3b0e3L,0x121efaea3ffe933eL,0xa81f6c6f843c3553L } },
|
|
/* 56 << 14 */
|
|
{ { 0x26301455e5488aceL,0xdf39099881a20dc7L,0xac7d6049ee06c7f3L,
|
|
0x547e8df33f248fe7L,0x5fc4b74213743dceL,0xa97721bc4c398630L },
|
|
{ 0x6b7877cc258aea47L,0x1cedce562d5c28d6L,0x7e930e419428d66eL,
|
|
0x42c80757b97faf54L,0x091fe5ab3812e632L,0x2c29fd42e2e359bbL } },
|
|
/* 57 << 14 */
|
|
{ { 0x2d9e65a61d7b990aL,0x8a9ab4bee2a8a6a9L,0x8658c36985e3eea6L,
|
|
0xf352787df0de0b23L,0x872db1de1161aa92L,0xf2648c972190acbfL },
|
|
{ 0x9a34f1d09de72e41L,0x13860f846c086516L,0x2e9211b824127c21L,
|
|
0x4e1623bba3697c37L,0x41d71f1df579c733L,0x33f0ebf7ca9f68aeL } },
|
|
/* 58 << 14 */
|
|
{ { 0x9b51f4ca9f5a40c2L,0x38b59573682e2132L,0x5765e89dc556998cL,
|
|
0x102fe894698a4a8cL,0x0bbcae977c6964d6L,0x8548f2c6dd7bb12cL },
|
|
{ 0x32c11ed9e49848d9L,0x1ee1b525135aefc2L,0xade5d14e812a5e4bL,
|
|
0x0e122e7e15bb167bL,0x321594d4ec5c3594L,0xbcea8723a7c02afeL } },
|
|
/* 59 << 14 */
|
|
{ { 0xdbf91edcaf87c75aL,0x9710003266582706L,0xb10cb32b1133a7b3L,
|
|
0x70f5d71767e068daL,0x8d937e56b8e0c9a2L,0xd8a2652ee2a9afd7L },
|
|
{ 0x94d6cae9cc90c6ccL,0x3512f3abe94f68ffL,0x931ea6f09331ad40L,
|
|
0x71621013daa3d4f1L,0x591c40bfb668a992L,0x5494cc174c6868e5L } },
|
|
/* 60 << 14 */
|
|
{ { 0x7981826070ececc7L,0x8cc0b6e071cfc0e1L,0x998df6590276a6bcL,
|
|
0xffb5bec11a43be05L,0xb93b1543f2beb640L,0x337703d456f3719bL },
|
|
{ 0xce74c17cd40a7375L,0x6aef79cab1aece94L,0xc5bdfb388876d218L,
|
|
0xf71ce9cccea91445L,0x471cdbd1ed6e5f5dL,0xe0cc79cf10e56c08L } },
|
|
/* 61 << 14 */
|
|
{ { 0x2b17e181794ebe48L,0x6111c897f28cdd32L,0x4d59199062dfeee5L,
|
|
0x7b9d070241b14904L,0xa1ad534d5fea4804L,0xc08915d953b16c22L },
|
|
{ 0xa57c883e8ac9ddedL,0x589474dcda1d1bf0L,0x31cbf32ce9aa8e7dL,
|
|
0x2abe9b60f0930d84L,0x604731b0cbdd031aL,0xbc35b1e4e9e1b3c1L } },
|
|
/* 62 << 14 */
|
|
{ { 0x39300d55efeff954L,0xa9cf57f34fe9cffdL,0xe3315321b15aebbdL,
|
|
0x26354c57b840b080L,0x2c690488476abf35L,0xa7303fe6d480cf33L },
|
|
{ 0xa50865295706c3b1L,0x4c26034eed0b2342L,0xf08d67be9ae9c452L,
|
|
0xd4dbb9f5046c7d0dL,0x4435f1a3f9e5393bL,0xf47aae68cd4d5de8L } },
|
|
/* 63 << 14 */
|
|
{ { 0xce9e5ddc06d5f48bL,0x22c1cd3e0ef642baL,0x2ad48eb9e9b8a960L,
|
|
0x330074883ce26679L,0x495e62428d2de642L,0xcba5bf37e03b1a77L },
|
|
{ 0x9382c92de716624dL,0x410d212350a33e4fL,0xe55ee116e953e7edL,
|
|
0x27e9a0584b840616L,0x560a5e4939473bd8L,0xbc1e795b382f3a95L } },
|
|
/* 64 << 14 */
|
|
{ { 0x31bdb48372876ae8L,0xe3325d98961ed1bfL,0x18c042469b6fc64dL,
|
|
0x0dcc15fa15786b8cL,0x81acdb068e63da4aL,0xd3a4b643dada70fbL },
|
|
{ 0x46361afedea424ebL,0xdc2d2cae89b92970L,0xf389b61b615694e6L,
|
|
0x7036def1872951d2L,0x40fd3bdad93badc7L,0x45ab6321380a68d3L } },
|
|
/* 0 << 21 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 21 */
|
|
{ { 0xc5cf8997ce0b5b72L,0x350adde19d7154baL,0x8139681e307b254aL,
|
|
0xcc87fb5775cd94d7L,0x90e7027478684954L,0xc4fdf4c095ceb991L },
|
|
{ 0x91bbc0ab8762c84cL,0x5e09e226ce09e8adL,0x1cb83d704b93d45fL,
|
|
0xe2299024f541da1fL,0x3eef7ce14b7ffd10L,0x53ee63bbb3fc1b9aL } },
|
|
/* 2 << 21 */
|
|
{ { 0xe5004e8003682f59L,0xccdb9cb7f642ac0fL,0x405f50d1bd869f77L,
|
|
0xecffa54de7ebea2cL,0x3354dc22d87620baL,0x01bb2988b1c01ff4L },
|
|
{ 0xd9370076e16477fdL,0x45303d2a2e71ba4bL,0xc0de76273291e5c5L,
|
|
0x5cfebd87f0a7ca55L,0xde1162809e592a30L,0xdd26e577a78ebce4L } },
|
|
/* 3 << 21 */
|
|
{ { 0x1e9b23b9ff1735a8L,0xc3bf3d5b2b0e4b7bL,0xd4cc00fe59b7721cL,
|
|
0xd5c36f9c9e2f4cebL,0xdeca06bac90af70eL,0x42676f12416ee799L },
|
|
{ 0x0d7afe1b6f748c6fL,0x0b7a6de539c39d55L,0x11e43d6ee6eaed18L,
|
|
0x5baf8602496087e0L,0xf833634fb1a3a66eL,0x25098c8a79398677L } },
|
|
/* 4 << 21 */
|
|
{ { 0xe141e763d4720770L,0xb9739e70ddb3b450L,0x46e6cde496131446L,
|
|
0x0458a5d5cb6c2ef7L,0xb7747634532f9fd8L,0xf62d372116544457L },
|
|
{ 0xbfacb4ded3100854L,0x70788a31b39d3f62L,0x9b543220f22d92e4L,
|
|
0xaa4590f655723258L,0xc7b6730e01ddb8bcL,0xae252cf869e1e7bdL } },
|
|
/* 5 << 21 */
|
|
{ { 0xc618cf0ddd4b8d8dL,0x471cda8640dcfbfbL,0xba0dd7ac08882ce6L,
|
|
0x58e5d2f56cd336e7L,0xcdda8301af096540L,0xf6d268463cf31600L },
|
|
{ 0x6150cd982197efd5L,0x4440fbfa55fb0877L,0xca31871c90757f1dL,
|
|
0xc4a1faacbdd756c8L,0xc9d4ac1bcbb8421eL,0x3c0c2914b17c43beL } },
|
|
/* 6 << 21 */
|
|
{ { 0x46fdb65caa6fe9eaL,0xe0d48e5e05494cd9L,0x5adef5704afbf837L,
|
|
0xc96ba4b91c9e2cadL,0x1e8158f7054a158cL,0x47be73209e38b88dL },
|
|
{ 0x9b99971e6d2993ecL,0xac9b0bfadf980eccL,0x9da09642d96ca391L,
|
|
0xd67105369bf4305cL,0x40cc1adfa0dfafaeL,0xe27e32f8a209699bL } },
|
|
/* 7 << 21 */
|
|
{ { 0xeaaddeb836e87d82L,0xc12587a71ffd7210L,0xf93d2f5c731f6838L,
|
|
0xb96594e8f7097a65L,0x08d6717ab016e8d3L,0x9c378de81984d825L },
|
|
{ 0x627d41e7cb2a0c26L,0x1f447501c697ceb1L,0x8dc40831c760550bL,
|
|
0x70ad48707fac97b0L,0x5ac7f22e7021c170L,0xa6f730e4929d5931L } },
|
|
/* 8 << 21 */
|
|
{ { 0x7d27d71fd186cb09L,0x67cb7f4e3bc213c7L,0x418cafeb6075b2cfL,
|
|
0xc0d691e6d93a06f7L,0xc16a95259dd001b9L,0xa0583230026f17b9L },
|
|
{ 0x4c1041b07845900bL,0x2874079147a22aaeL,0x8d08efd62c1758e9L,
|
|
0x9cc6f207e6c3229aL,0xec69e902082d8924L,0x9cfa1deaf331dfe7L } },
|
|
/* 9 << 21 */
|
|
{ { 0x7b5ab2afbce81cd9L,0xd25fa34b12028b49L,0xf9d65e6b63a659beL,
|
|
0x6f88f1ddfffb943cL,0x38eb0d02b871cd5fL,0x732afedc558ad949L },
|
|
{ 0x4093ab05367d424eL,0xf73b23ad29de1be7L,0xce1c0093e7a50181L,
|
|
0x6d05cbbe1e412cb9L,0xd3c1148b773a394cL,0xe04b5fdd38e50316L } },
|
|
/* 10 << 21 */
|
|
{ { 0x1793535b8d0ce0f4L,0xe9b054b1ab73f7daL,0xd82a3ac1ee7bc6e2L,
|
|
0xb28ad846b847f39eL,0x40975fa2fc10c012L,0x8de998619aafe68eL },
|
|
{ 0xa73f442584878534L,0xbe3118cb7a36a0d7L,0x3763a49e8fa37fc9L,
|
|
0xf3f8ef82361f32b9L,0xea66f9978c1aebc4L,0x88600d648d9d024cL } },
|
|
/* 11 << 21 */
|
|
{ { 0x11f842ca150a3325L,0xbae115c3185a385fL,0xddf9643637561bb0L,
|
|
0xecea0cd9a4115fe4L,0x297720665893a694L,0x837e6880df408cfbL },
|
|
{ 0xfeb8f511e0a7fb68L,0xd21869dfa062b60fL,0xe2b60f46ca6a5e72L,
|
|
0x64bbec184931d188L,0xfb09c90fe3ef3378L,0x67cbeffacd767337L } },
|
|
/* 12 << 21 */
|
|
{ { 0xd35832381b289f6eL,0x10dac54a0aeb3bcaL,0x4df1c08d6692339aL,
|
|
0x2968edec20054647L,0x34072618d74235a4L,0x00b4a7ae71d6064aL },
|
|
{ 0x23a8900e25c23f8fL,0xda0cb7fad7d0f1b5L,0x266211c56c8ecdbbL,
|
|
0x0a4351b97bc27e4dL,0x98d54c97fc234258L,0x5ba534071e1a4dfaL } },
|
|
/* 13 << 21 */
|
|
{ { 0xf07cfcdd77f083bdL,0x89bcae29d46712c6L,0x2089c3ab0f09bb8bL,
|
|
0x3ede5a2a6b9a4028L,0x27ee18fe013066deL,0xc2bebbb416fcdda3L },
|
|
{ 0x6b3926af3a87cd68L,0xf52f0ef9f9a7b831L,0x4a39660a1ffc01b2L,
|
|
0xe98f718d91aa6719L,0x8b0626f111d48e8dL,0x4a6a2e5b2bd93db3L } },
|
|
/* 14 << 21 */
|
|
{ { 0xc3ddb6123ef24470L,0x98b66569bb3f99edL,0xccc537153a97a015L,
|
|
0x0d9a6b4d04937b8cL,0x854d081ad9a575f7L,0x347bf0c0127fbd90L },
|
|
{ 0x6baa47a5c30987f1L,0x164b390dbfd0b503L,0x6672d1afe6a1f565L,
|
|
0x9a50ee5828d5bb14L,0x2e23ab480d0226fcL,0x33eb052365cdbdbaL } },
|
|
/* 15 << 21 */
|
|
{ { 0xa32d1a27d904eb73L,0x6fcad8d0c43c978dL,0x8cf1e7a19c0842f5L,
|
|
0x2a6fa6d800328ae2L,0xa5905f67a1e3b06dL,0x458c8badaa8df96aL },
|
|
{ 0xee5b20c0b0d4b89bL,0x352ae0c4815c1af8L,0x546a7d7e6dd73b70L,
|
|
0xa99882225f753229L,0xa38eb5d7efde47e2L,0x8290aaed92635ab1L } },
|
|
/* 16 << 21 */
|
|
{ { 0x8ec4335fabe7c60eL,0x01f198c10a6a9fb5L,0x3ff96de001141ab6L,
|
|
0xb21acc2c2eca98a1L,0x6154849010fdf648L,0x2c01a99cd1403e8bL },
|
|
{ 0xf1a35f306fa509d7L,0xf7715fe3e3f08e9fL,0x89c26c077fc9a752L,
|
|
0x8d2535fe420d48a0L,0x80ec5ddd52fe2e73L,0x041b8df071704f39L } },
|
|
/* 17 << 21 */
|
|
{ { 0x96882074659a0a12L,0xdb0d63032a6bb752L,0x2a1fb2d740c2194dL,
|
|
0xeb6b45ba2c184444L,0x10ee44368c179d33L,0x906d0e509391917fL },
|
|
{ 0x11bead88ca3bcba2L,0x25914dae4253fb99L,0x0445b31013c25404L,
|
|
0x2a2eac6d515f53baL,0xa746a1d662bf0a11L,0xc7576a4c6573c4f1L } },
|
|
/* 18 << 21 */
|
|
{ { 0xec159ed060c5bee9L,0x80282ff007746414L,0x8d53f05f40a97a54L,
|
|
0xc92d8789f5d4eedeL,0x1edd798132344c09L,0x3bb9a444a92c7b36L },
|
|
{ 0xbf130f5cdd6c8903L,0xd270e7cf676fcab9L,0xac49744bdc5ae6f9L,
|
|
0xbd0ccfcb40e39281L,0x222efa16a981b3f7L,0x92bcd2d700aeeadfL } },
|
|
/* 19 << 21 */
|
|
{ { 0xecfdb91489c73e10L,0x83a5168becffe79cL,0x6a0d57c123e97ffbL,
|
|
0x774121ca4b130cc3L,0x8556fdc5486967a6L,0x1249448d5fe4a7f5L },
|
|
{ 0x8c2c14440e93c114L,0xcde258573bc68985L,0x697ba7b0952758a2L,
|
|
0x0d962b377aee19e3L,0xdb31fe8582c4c640L,0x6ecfaf36c89b4b85L } },
|
|
/* 20 << 21 */
|
|
{ { 0xf1e8c5a0e06b40eeL,0xa55909fe59836af3L,0x77a13be8a3a4ed95L,
|
|
0x47408650bbbcde0aL,0x95b455c2b4fba7b7L,0x4983f5ca4321117aL },
|
|
{ 0x37bab5d1e18d304fL,0x0edf3733f1d29206L,0xe23e4db4dab91670L,
|
|
0x602a5265923ab7c4L,0x53ee98c6eb920a03L,0x1b592b626f25489cL } },
|
|
/* 21 << 21 */
|
|
{ { 0x66c981d9d3543689L,0x20500cd7bb8f53bdL,0x807d43605179af77L,
|
|
0x7280a7b27c286404L,0x75a74e630976a65fL,0x2ba9ad9df11c3bdfL },
|
|
{ 0x23f38f950ec6c760L,0xcad599102b858cc1L,0x4d9adb7efec23c19L,
|
|
0xbabb6e45095e85c5L,0xfab66a97e5dac2e4L,0xcde4b15a08baf1f4L } },
|
|
/* 22 << 21 */
|
|
{ { 0x148aad3207089d6aL,0x3ab5b0790303c267L,0x7d13995bc3153026L,
|
|
0xeba27c192287f305L,0x5faa453367ae45bdL,0xbbb561db2f4e9488L },
|
|
{ 0x254d8977c8493163L,0x60d468fc5c544164L,0x0b6309a3a2758037L,
|
|
0x8480e16b1f9add24L,0xf1d99fd2902ec661L,0xd32df254cb6dd6f4L } },
|
|
/* 23 << 21 */
|
|
{ { 0x9a17f5c3610178b9L,0x75dded80bada5aadL,0x158249c23dbeb289L,
|
|
0x1d0671cac300cf49L,0xa1649bd0886902f2L,0x79b0d6ed7d13be62L },
|
|
{ 0x78253e7549e2327aL,0x5629cc509af110ecL,0x4373a20059f8765cL,
|
|
0x739f33289d9c5f3aL,0x3c7d5cfe9a5f997eL,0xf044d90d0559357eL } },
|
|
/* 24 << 21 */
|
|
{ { 0x20aa15d97ab838e6L,0x6cefdd5a0c827ed1L,0xe2f205caef579e8fL,
|
|
0xad27e38b325981bfL,0x087b8284c3438be8L,0x2095dfcf422360d9L },
|
|
{ 0x87cdf5ad76d096bfL,0xf1b97ce1e022adc3L,0xa71240c189104665L,
|
|
0xeb5a175c9c1578e8L,0xbd66910ad150ffa2L,0xac277af811459a28L } },
|
|
/* 25 << 21 */
|
|
{ { 0x7db4df62417fb54dL,0xf6c1e7f04dfb7c05L,0xfdcbd3777aa8ceb5L,
|
|
0x0364b3bd89c24333L,0x8a721718fdd3dcafL,0x9a6015dcec2848f1L },
|
|
{ 0xd6571930d35ad1a9L,0x154a929199369196L,0xf3be7e228e514732L,
|
|
0xfa3eef28b7fd3aacL,0x0bc3b2a69f60d298L,0xf6327920febfca58L } },
|
|
/* 26 << 21 */
|
|
{ { 0x3b9de1baf8dc6030L,0xacc4224a2107fd1eL,0xa7d32fe86dcef0d2L,
|
|
0x353d5e88dd83fb28L,0xd552c3ce50bfb0b2L,0x69bc0e686cc8ee7dL },
|
|
{ 0x965c0ca21d9c74d9L,0x5cd163a406ac3ecdL,0x57910a828e98b581L,
|
|
0x1d0fa7523d992afbL,0x862d3184e7d12701L,0xab6a288c6c7d161aL } },
|
|
/* 27 << 21 */
|
|
{ { 0x04caa9caf4f2b3e9L,0xcdb896141af43dd4L,0xb09444fd4e74ee8bL,
|
|
0x9428849fec05d35cL,0xe29bb0e94765c0e5L,0x138c45f176d25d2eL },
|
|
{ 0xbf041131a0184d83L,0xaf321573991ddc4cL,0x058760a8ef31df7dL,
|
|
0xe0b94b57f80dcf5fL,0x75572221850a4a6eL,0xc735580c104a4a1fL } },
|
|
/* 28 << 21 */
|
|
{ { 0x9ba102f1a6b735daL,0xe073232edfbe7d06L,0xa8ac24ba57266a16L,
|
|
0x07458ea42d5c4bb0L,0xfbdd0f0574868e1bL,0x73fa612a3921fe7aL },
|
|
{ 0x26f6714b0b32d8e2L,0x7a3cb2b48bceb95eL,0x756a68c6290f204aL,
|
|
0x148fbb787fdf2b7eL,0x639ece6c57fe0da0L,0x315aee1e9a92b7e7L } },
|
|
/* 29 << 21 */
|
|
{ { 0x22dc170769d10661L,0x8d89cd1c71fd40f7L,0xa22f11bfa2545040L,
|
|
0x1247d019d44c2446L,0x8d17daaba08235c7L,0x7e6863b9fae7874dL },
|
|
{ 0x6d57431c0490d338L,0xc1459e61809d1f9aL,0x4eb14dce95b64852L,
|
|
0x8d3a04e6a7b5a861L,0xfed631ee7bfa24a7L,0xf8f86f27af11723bL } },
|
|
/* 30 << 21 */
|
|
{ { 0xb43b14146e63c833L,0x497a5f98c1ec160aL,0x112223de83eb3709L,
|
|
0x293964a88d100b9bL,0x6db1d1931e3b2db3L,0x264bc83d71eced39L },
|
|
{ 0x8418eb43aa89c967L,0x51d41bff76f8620aL,0xa4017ee5cc416467L,
|
|
0x1cc527231e216e36L,0x76ba536ce8069a6fL,0xa239b54acb77b981L } },
|
|
/* 31 << 21 */
|
|
{ { 0xa05f2dbc37544476L,0xf18dbcd71b797f65L,0xc78131376d50cd5eL,
|
|
0x2b509a4d6dee11daL,0xfc0f0584beba1b6aL,0x3282624a9d53bd6bL },
|
|
{ 0xa0944e5c16b7187bL,0x468a79b8aa2f99e9L,0x32e4644b38bc4ed9L,
|
|
0x5bc375d7e7cf71feL,0xe18e3c0956617861L,0xbce9ccbce69255bfL } },
|
|
/* 32 << 21 */
|
|
{ { 0x498808edc65fafceL,0x3676a7cc4e806bc3L,0x796e25f176c6b964L,
|
|
0x1aced64bac474261L,0xa62470fc29a460c1L,0x77501dce5e751e48L },
|
|
{ 0xcc00053b6d9e3641L,0x2b5bc4ae9a3f5a0bL,0xddaccc2e3f9ca178L,
|
|
0xad33f34a0b80d1b0L,0x6a76df9364642225L,0xc145f36f778e761bL } },
|
|
/* 33 << 21 */
|
|
{ { 0x377fc5ac575e74f6L,0xfefeb2327736739fL,0x62ba076a9fc2d5c5L,
|
|
0x6f3c6084baf0269aL,0xce2917688fa7c145L,0xa60bb8905b3f2333L },
|
|
{ 0xa811055dd900095aL,0x92d95e7b385bd4f2L,0xba54f444d33c2a43L,
|
|
0xc1b131327d12754fL,0xdcdb54821556f5e3L,0x55377fc539ca4b94L } },
|
|
/* 34 << 21 */
|
|
{ { 0x455f65d1a0cbee78L,0x554eccb566225edbL,0x306400b47a4e014fL,
|
|
0xef3e02eb7b67025aL,0x7d4efbaa997a633aL,0xd43c6eb8672c90b2L },
|
|
{ 0x0ed2d88d7519da07L,0x864377854b9d51e8L,0xd5900a2e2e3ab57cL,
|
|
0xc02f046b69bb0a39L,0x06d825a6bff12faaL,0xa12e5b0d5d3ac267L } },
|
|
/* 35 << 21 */
|
|
{ { 0x1716be5ba10508b4L,0x8706acbe7e37fbebL,0x3881f54e44e3d127L,
|
|
0x54e20622a864d77dL,0x26a194616b83325eL,0x0d57be814c15a8f4L },
|
|
{ 0xb10c0cd07b53b476L,0x3d016ea097d39c64L,0x4d7df7c15315bdadL,
|
|
0x6fe5a1acf060cf4dL,0xd5e3d05396846b79L,0xebc878f79e3c8028L } },
|
|
/* 36 << 21 */
|
|
{ { 0x5b849ed8d0d193acL,0xe983abf773950501L,0x5ca162770854a569L,
|
|
0xb0b284d26904bdceL,0x9c769d269d4fadecL,0x98e5e9b912677284L },
|
|
{ 0xd9246836b557f2cfL,0xbd47433069d46374L,0xbce8b27b9b063a22L,
|
|
0x08da2eca37c5ba26L,0x9e742de8d4b26479L,0x643b752c102aa36cL } },
|
|
/* 37 << 21 */
|
|
{ { 0xb72fae566fad22d5L,0x1e921426cf2fd62bL,0x9f31293d4c225102L,
|
|
0x78d43a621975afbbL,0xce2787303cfee30eL,0xb88590d77a82613eL },
|
|
{ 0x42f86567560b932aL,0xc2d98915a7c9ed68L,0xe70e41fb349a9750L,
|
|
0x7e7fdd2c79f9582bL,0xf3d6ab07da737c0bL,0xba247c0b9f3cf823L } },
|
|
/* 38 << 21 */
|
|
{ { 0x4bebaf153dffdbd3L,0xc37d4a04fcc967a6L,0xeabab9aca0435a65L,
|
|
0xf23d1d58f9ae9c52L,0xce229a798cc8f7b6L,0x4a61e6ebf5e11e61L },
|
|
{ 0x770e1dc6b20f2d8bL,0x199d20e8cfb9e820L,0x9fd709c4c381a22bL,
|
|
0x6f53a358b1d52a98L,0x4b1a018c66f511faL,0xc7d2d49375d3a666L } },
|
|
/* 39 << 21 */
|
|
{ { 0x3b2db5e5550791d3L,0x034ed5665bbb686eL,0xf019f161e033e3eeL,
|
|
0x33198653acd2f0b5L,0x368d89e41ee8273cL,0xa7ac3b507f26daffL },
|
|
{ 0x73d8d7df006c0037L,0x98b5937de73cf271L,0xc3bc340be917247dL,
|
|
0x799ea890e45f37afL,0x27be0f5a25e8dd2fL,0xd70ec41c3bb16923L } },
|
|
/* 40 << 21 */
|
|
{ { 0xd30302352679072fL,0x73dfdc0f95dad4c8L,0x53649b575c4630f1L,
|
|
0x60197fc08d098d74L,0x9c295d54647f5cbcL,0xfa5f1bc6c0813efcL },
|
|
{ 0xf6e08007d2e49417L,0x4f7d4b3dab579569L,0x7af3e08e11d9b388L,
|
|
0x073ec38a5db61c65L,0x9b480cb89db4dc4dL,0x9be2ce7e372fa82aL } },
|
|
/* 41 << 21 */
|
|
{ { 0xd87c0b55ed1b6d83L,0x3b47443adfae29cdL,0x16c5b0e52147bfdeL,
|
|
0x98812fd0663cbdbcL,0xe3cea04955ffe911L,0xfc1e9d9cc5df31caL },
|
|
{ 0x7ffa90f9902c4ab1L,0x2cf973c3669a857fL,0x89243cfc94b109adL,
|
|
0x222d6fdb536ee544L,0xa48b1b15fd488c22L,0x7120e3f0f318ba27L } },
|
|
/* 42 << 21 */
|
|
{ { 0xfbb8a3cd47813054L,0xa2d7255d462ac3f3L,0x341bc10babdfa7adL,
|
|
0x01efa884ceb9ea50L,0x30fa0f903f5bd09cL,0x8aa309453abd108aL },
|
|
{ 0x0ab7fe23f9ecab6fL,0x0585f72a5ec032bcL,0x686a7d71cf9f4fcdL,
|
|
0x096bbf04f769be8dL,0xa309931250b64584L,0x67be53402e216060L } },
|
|
/* 43 << 21 */
|
|
{ { 0x4e14fa6eef252e90L,0x2ca968579b7db6f2L,0xf80772e3653f1662L,
|
|
0x4f89e666cd28bb05L,0x7fa800cc77eef62eL,0xa3f6ef5963b2f3e2L },
|
|
{ 0x438d564bc81e600aL,0x8978912de14c1434L,0x33732892ea695891L,
|
|
0xaf6aef0b1dc8caceL,0xcbf9580b7c509cb1L,0x2db9fbc11ed6fbdfL } },
|
|
/* 44 << 21 */
|
|
{ { 0x408805a1fa7052bdL,0xe4eb27f75f825c13L,0x0a0cc8fa37ee34a7L,
|
|
0x737b99a40c59156fL,0x78c2a5d8e1b55c30L,0x89d70b62bcbb2196L },
|
|
{ 0x07ad36911e862a0fL,0xaa1c9118c41cc693L,0x7e6f544c4e1f7359L,
|
|
0xa5f4f5891bf9474fL,0xa711efd9ef56df82L,0x0428edb7e3de91fcL } },
|
|
/* 45 << 21 */
|
|
{ { 0x67f403610905be0fL,0xffe68b80c12178bcL,0x41bef79ec6a673aeL,
|
|
0x347e8ba81bc77376L,0xd49956d60e589da2L,0xadd54508fed84dabL },
|
|
{ 0x18868a4a462749f4L,0x2048cd88ed323e71L,0x7b27932aa28d1f02L,
|
|
0x3cf6107412e4ddccL,0x0f6198631360ecc5L,0x40e5e08b1330d33bL } },
|
|
/* 46 << 21 */
|
|
{ { 0x79b68071e3ad573bL,0xcb070412723966f5L,0xf4610fd1964b453fL,
|
|
0xfdc9dbbc8bcee838L,0x3e191f3bb5ca4f20L,0x90d85084c02e0af0L },
|
|
{ 0x4e3f57a70ee64025L,0x63f339acdea07a5cL,0xf255b5045eb4081aL,
|
|
0xe42bd241b4cbb0bbL,0xafa58985ff68c5c3L,0xd36cf7175b55e6e5L } },
|
|
/* 47 << 21 */
|
|
{ { 0xf2b06f4b95d37e50L,0x7da1d2af3747c79eL,0x18a37dad6ad0092cL,
|
|
0x9f4a6f081a8f207bL,0xeb1fd3f2cf0fed15L,0xfb9911e4384eb46bL },
|
|
{ 0x5f07c680b87cb035L,0xc49935d189e1531aL,0x718f6bd09ea02056L,
|
|
0xadafb67b18a4ca31L,0x26cb0f368477f396L,0xec7775df62ec2172L } },
|
|
/* 48 << 21 */
|
|
{ { 0xdffb03aec10b43aeL,0x39b1266e9433a54bL,0x4c262521b19fe0dbL,
|
|
0x0ec1e54f3d5c7feeL,0x2856510b05e68e1eL,0x49382c1edc80b8a6L },
|
|
{ 0x80a509312471bdd5L,0xe8cde18581974aa9L,0xca6112ee28235c52L,
|
|
0xd28a0eb8301f9653L,0x22b11e26e11fcdf8L,0x97e6fc5de4d735f3L } },
|
|
/* 49 << 21 */
|
|
{ { 0x7fc264d35b253506L,0x1a11dd9cdfe2be8fL,0x2cbcf79c711185a3L,
|
|
0x2208200a46806ddcL,0xf2764b6524e75d8aL,0x71a71bcdfcb43c25L },
|
|
{ 0xddd0cd3586a895caL,0x5ec28b469e2caf5dL,0xeb749df9f6614957L,
|
|
0xdae1dd77eddd371fL,0x7ce493b556dde554L,0xc1627c06d6e5653cL } },
|
|
/* 50 << 21 */
|
|
{ { 0x7926553cdea7472aL,0xe1e9480d3ba7f351L,0x242a641b1b6a2fe5L,
|
|
0xf4af10091f790122L,0x5a2e2f95967810a0L,0xf1eaec6e2ed57598L },
|
|
{ 0x34a32da96b9f2421L,0xdc32daa8dd820372L,0x8b2539fc37a067ecL,
|
|
0x2a495112820969ffL,0xea7c1829a699c283L,0xb4a1083dc2c58cbbL } },
|
|
/* 51 << 21 */
|
|
{ { 0x1bcc30812e59d7a4L,0x557be0b2fac34690L,0x5b2868db673254faL,
|
|
0x62e150a49e1302c3L,0xe29e9b445772138eL,0xc76bf4fd7ccb31daL },
|
|
{ 0x8d687bbb34c905c9L,0xf4f207030786eeb2L,0xe56a494c38deb469L,
|
|
0x759e75e2cc6bbfa8L,0xb11903aaa59eb766L,0x3f6928c5c68b3bf8L } },
|
|
/* 52 << 21 */
|
|
{ { 0x27fa09ebcdded185L,0x763b655c36d090e3L,0xbc586674dd864c93L,
|
|
0xa1f84ff34c7074b8L,0xdf5261d17cf08435L,0xc57860f6fbdaff3fL },
|
|
{ 0xfa49af22252d7f08L,0x2367bf8c8db5f89fL,0xad6443ce6dade92dL,
|
|
0xdc5265138d1af3f1L,0x62a282ecc720ce46L,0x1769b74c9808b416L } },
|
|
/* 53 << 21 */
|
|
{ { 0x4ee11333ec598f02L,0x4613ba038c7eaad5L,0x48e0bfe61b1ccd1dL,
|
|
0x6e115b6b507b705aL,0xc4d38e4992874d89L,0x30460a066dc59fc4L },
|
|
{ 0x75de8dcba0f7ea87L,0xba96718125101367L,0x9d7b03314a742660L,
|
|
0xb4ca381d8c304133L,0xb87b896d65846055L,0x8dd96f0513d381dfL } },
|
|
/* 54 << 21 */
|
|
{ { 0x43716f0c3e25b7b3L,0x00caad210aeb5d75L,0xbfee232559a6cb66L,
|
|
0x06c1d812ad059aaaL,0x42d0af57c8bcc046L,0x37968ef70e409a85L },
|
|
{ 0xc5c3812ee3be328eL,0xaaa74bf166547ad7L,0xb292af92a15a0db1L,
|
|
0xc0645385e5d5cdbcL,0x2dcf4ca937ec2c28L,0x3f75d089f0cb1694L } },
|
|
/* 55 << 21 */
|
|
{ { 0x7e71fba26c0204d3L,0x6191ad249a40b4aeL,0xe2c7ab6bdda24cecL,
|
|
0x5a8fc77e95b26a2dL,0xa6d8b2e43f1c7e44L,0x42d485e4e0a0e08bL },
|
|
{ 0x8697386ed7e3b896L,0x5b960d76ee7e58caL,0xda950e9a3fce610cL,
|
|
0xb85c7842803c67dbL,0xed8a53535e62ff2aL,0xfe6b0e2c4d674e7fL } },
|
|
/* 56 << 21 */
|
|
{ { 0x46a2a08be26d822eL,0x63537bc689d6d6deL,0x28c556a2b3df9fbcL,
|
|
0x81d3161eb121d512L,0x4e27ce0b123bc86cL,0x1ebadb85bfb240d1L },
|
|
{ 0x86edb71a1156314dL,0xf8ac56fd113961bdL,0x2f6bc6d8067f586fL,
|
|
0xf558b8833fe8e532L,0xe9433e2321a7997fL,0xb86f039c87e53b9bL } },
|
|
/* 57 << 21 */
|
|
{ { 0xc022a16d78329681L,0xc3da7bf76b1226d5L,0x47ef18daa85c69e3L,
|
|
0x4614f0ee45cecdbaL,0x9126fc2640f19d1eL,0xcdecb2693f5ca09aL },
|
|
{ 0xb62a831257a020e3L,0x5f9a8ddc8330d472L,0x37e58ab3eb208a24L,
|
|
0xe64ed285ee4b8687L,0x752fa22a74a82625L,0xa67e24609b25fbafL } },
|
|
/* 58 << 21 */
|
|
{ { 0x89e3d770e6b94044L,0x50f50d1675a1a8c9L,0xe73c51d95344c139L,
|
|
0x97a8dd8411723e9bL,0xba0663c57de5dcf2L,0xf26eee6c3a6b588fL },
|
|
{ 0x6275b2a9211b989eL,0x32ab4b311608f16eL,0x9e47b2943fdde5b5L,
|
|
0x63c50a50614bae9eL,0xffe4ef05e31c05e7L,0x2fea9142b7db4ba7L } },
|
|
/* 59 << 21 */
|
|
{ { 0x27f286db0874c6f6L,0x26de6376e6ec0054L,0x56458a082ca84fc7L,
|
|
0x07bcd4011fccf1b2L,0xb8548e74bae6f486L,0x0ea5857a0de2964fL },
|
|
{ 0x8e8df866e50fd2a4L,0x3b07d1a8710fc74aL,0x3e4cc4f5a1fe92b9L,
|
|
0x7380d0836e52d244L,0x4d75e1c12796278bL,0x9eb279258d33f4d5L } },
|
|
/* 60 << 21 */
|
|
{ { 0xce7abd1ba225f084L,0x696e1eaff803ee75L,0x66f2789989415775L,
|
|
0x14df21a29eb4991eL,0x012a6413fe2a0769L,0x022cf1c8626f421cL },
|
|
{ 0xd4644d0460ab4299L,0xa43cc1732a8d453fL,0x7c4ab8c20ed14031L,
|
|
0xd5854b98e14605f7L,0xd9a98c51fa7ff2cdL,0x7dbe8cbc46baf2c0L } },
|
|
/* 61 << 21 */
|
|
{ { 0xf26574593c42ae9eL,0x7c3e5c13bbc289fcL,0xb815fe3fe096e7bfL,
|
|
0x3eb67095da54264eL,0xbf5ca7c4ff3f8128L,0x8fc4a3f865db4dd4L },
|
|
{ 0x3af47b17ee382cfdL,0x8854132fd95520f4L,0x3387b11d33c5588eL,
|
|
0x5d7eb66c0c662f93L,0xcad581933b18885eL,0x8d1c069a6f23c209L } },
|
|
/* 62 << 21 */
|
|
{ { 0xa9498fb5212ee678L,0xa8824b696ade4a39L,0x422c074e0a406cc2L,
|
|
0x7d38de650a2beef0L,0x482d16f81eed5bbfL,0x1c882006f18380a1L },
|
|
{ 0xf90f6c2bb98445e2L,0x36aa980b2c738d70L,0x4caff65b6785ad58L,
|
|
0x1c282becf95863f8L,0x59ad267c5350b79fL,0x53ea042721cedec9L } },
|
|
/* 63 << 21 */
|
|
{ { 0x5cc362909fa3481cL,0x1321acdd7292ac86L,0xcc30550378f4d6abL,
|
|
0xf7917237e7d9154eL,0x591e5ba81fb39377L,0x0a387e4f7c541c76L },
|
|
{ 0x99685212a38570cfL,0x5cce35c8624cd61bL,0x375c68133aed79d0L,
|
|
0xf72d4b068197e487L,0xcd672f7d129775c5L,0x944ef37f1cd768f6L } },
|
|
/* 64 << 21 */
|
|
{ { 0x9c66a32becc5f6daL,0xe4ff40431719ba2cL,0x8c6cfab721e716efL,
|
|
0x32c8fccb96ed74e6L,0x475890dd0b110c83L,0xdfada95f5cb4eefeL },
|
|
{ 0x9d7b89a693240fe1L,0x6afdb2d0210b776fL,0xc3f0b55bca7a7d52L,
|
|
0xa6e56a0655d04585L,0x818e221c4257acc5L,0x05207b63fcb8d39eL } },
|
|
/* 0 << 28 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 28 */
|
|
{ { 0x0a74da82d8ada6ccL,0xc6b98a3cbea55457L,0x896c26bb57c2f5acL,
|
|
0x981e2f72845d45e4L,0xca152b877e9a7d36L,0x49666d457b582e8fL },
|
|
{ 0xea3b9bda49fc20b9L,0x5bcbc84a7c71f153L,0xd346fc5d5748a654L,
|
|
0x7ac2f217622665eeL,0xbb5efe7fb6f16e27L,0xb1810a70644c9dc8L } },
|
|
/* 2 << 28 */
|
|
{ { 0x98d089819bc5917bL,0x9f90885d187fac5dL,0x651b18287cfc13dbL,
|
|
0x2d606e4c8655a658L,0xba64d3c563c91b71L,0x36c7d7d8b82a5090L },
|
|
{ 0x2d1dff02cab1d598L,0xa95788d7be78f90dL,0x1ac2ee6b0ea1fe01L,
|
|
0xc100b60cd5c1273cL,0x4496084ceae603e7L,0x7fcaaf5f77c2fdfbL } },
|
|
/* 3 << 28 */
|
|
{ { 0xa93fec0861b06e05L,0x0bebc26b7dfe6802L,0xc00b45a5cce5662fL,
|
|
0x2e8a0a7f83a9a4a9L,0x6e0cdebbc0bbeb63L,0xc56a20fe63ccd80fL },
|
|
{ 0xfc10fa08b51f1f89L,0x4848392020ad9243L,0xfda69cc66bf53af8L,
|
|
0x474b7440f10bb6c9L,0xcda9db3b1e7625e1L,0xe2f62c1e1dc7f3cbL } },
|
|
/* 4 << 28 */
|
|
{ { 0xe8e3225a6abdd842L,0x8c85f18f3b367b02L,0xf147a4219f42edb9L,
|
|
0x6d4bc00d0d411d4dL,0xa1a13a2770014bb4L,0xb896d97bfa10166fL },
|
|
{ 0xb2a1dfa70c302c6dL,0x0a24bd5d808a63a4L,0x8409a3a2f88c7359L,
|
|
0x071f3838347726a0L,0xd18a551c27507bb9L,0xe0c4cc34b359b167L } },
|
|
/* 5 << 28 */
|
|
{ { 0xeaaaf4602a44610fL,0x94d330b10392ac47L,0x989b9b673fe123f1L,
|
|
0xe2ca56ddd8fd0129L,0x77d6d0cd624982a4L,0x55d4b2c371e1fec7L },
|
|
{ 0x3e9a04a0360e013cL,0x1d227ea9c9cde585L,0xac2b08e24fed8f86L,
|
|
0xa1d1357ce199e8dbL,0x7cf06ec8e99cc964L,0xd9bc3a7fd85ec63bL } },
|
|
/* 6 << 28 */
|
|
{ { 0x7d111c67017c633cL,0xadd9e9bd7d128a9cL,0x4cd8730c6db857e9L,
|
|
0x3c9c03e9f4b46d12L,0xd42f0242a78472dcL,0x3fc0bcb2260841bbL },
|
|
{ 0x6332b11a8783f828L,0x65229d2af7be37ddL,0x402f28eee7e8944aL,
|
|
0x3d1bab505ab28372L,0x6944e82cad5e1ff3L,0x65a94c0de8c75729L } },
|
|
/* 7 << 28 */
|
|
{ { 0xa151dcbc2f7f3633L,0x4305312a98969226L,0x947afc00604d46e1L,
|
|
0xc3c9d57572f3e28cL,0xce4c1cbd14b1cd1dL,0x8fe9a81df80dea45L },
|
|
{ 0x50920f3a9685f603L,0x51d380f00b80d89eL,0x19978ba13f798e32L,
|
|
0x1294aaa6c5edde47L,0x280002c2be714a1eL,0xd998669ef212603cL } },
|
|
/* 8 << 28 */
|
|
{ { 0xa44f6ef880e9d9f3L,0xaa7621e91d14d618L,0xcb0e4ed80eaf6671L,
|
|
0x2bf485f8181514a2L,0x74670e180a2927eaL,0xe1b5461612c14645L },
|
|
{ 0x4068c0742a67ed61L,0xd10c7a57739063caL,0x391b651d698b2816L,
|
|
0xf310d1696da14fa8L,0xa089be6bd8a578b1L,0xa314b3a844389ad7L } },
|
|
/* 9 << 28 */
|
|
{ { 0x688ce85068fd73ecL,0x2cfb41040db1f500L,0x5d943b8d5b9bbc41L,
|
|
0x861867f5403f3973L,0xc331110a2c766363L,0xb28a6bc153aaceeeL },
|
|
{ 0x2ab6e7aaadbee7a4L,0x316ca45c2f2b9569L,0xcac646e561d2428aL,
|
|
0x6fd28dadc7cb6291L,0x2e28f68741e20ff4L,0x8cfe90eebd189d34L } },
|
|
/* 10 << 28 */
|
|
{ { 0x09b8ed53339da6adL,0xe40727af26f54b8eL,0xc4a105979990fdb2L,
|
|
0xb808656b5108236aL,0xb4411363aa4bd584L,0x19e90149288a0328L },
|
|
{ 0x5795d8a8fb0592f8L,0x313c68833213c929L,0x62eecb5b48f79d47L,
|
|
0x3afcfdbab29ca224L,0x0072847d40075b08L,0x078eef3dd1fe0c8fL } },
|
|
/* 11 << 28 */
|
|
{ { 0x719b51f20ca20aaeL,0x01ad630824b47b92L,0xd32460c2d3c807deL,
|
|
0x8497786b0a1785f5L,0x8bd521355d714ee5L,0xc267724ed00f741eL },
|
|
{ 0xe5578dca9c266820L,0x97ff60085b62d484L,0x84c70e92e3bd1869L,
|
|
0x412759e34dfa679fL,0x6bccc33fce497e18L,0xfb92405669056198L } },
|
|
/* 12 << 28 */
|
|
{ { 0x664ff05368ed0760L,0xc3cdc99138fae9feL,0x3fe057aaf1f30a86L,
|
|
0xbae990222d08c72aL,0x4f5faf3f6f09e13fL,0x44461a4413d26b29L },
|
|
{ 0xc2504c1bf95418edL,0x12766ea7db3ff26cL,0x2f956e9507a22399L,
|
|
0x2716e70f5a00cdd3L,0x80c020140e9fba99L,0xbe587ac30519875dL } },
|
|
/* 13 << 28 */
|
|
{ { 0x5e4bb6b83b23d2a1L,0x819a7c7705c9888cL,0x59e4c48ad0fec7f7L,
|
|
0x4b212b21d6bb71abL,0x370cb90bcbf213f2L,0xf1ea07e0817549b0L },
|
|
{ 0x20e3115351a37b92L,0x30f9e70158d444c0L,0x7ac3a37b0b791ab7L,
|
|
0xe456fd475265e4cfL,0x3e3f27ca29580ae8L,0x5d68a40daa2a1654L } },
|
|
/* 14 << 28 */
|
|
{ { 0x14203d8720cbb917L,0x284e0c9db2a7424eL,0x99eb2911cefe7139L,
|
|
0xa709c50f42925411L,0xa5a7543e5c79a13aL,0xe262025c6f45f023L },
|
|
{ 0x3966fd18828b9f40L,0xc660846913693115L,0xd7dfbcf644373027L,
|
|
0x8e73fe6bbade7645L,0x88267c7b1de0dbd8L,0x1231ac99ce4e8c9eL } },
|
|
/* 15 << 28 */
|
|
{ { 0xfd928bd90ba99806L,0x799ac97d1a864172L,0x5436a8cd129682b9L,
|
|
0x4bcacda54e96fecbL,0x453af995c5db1451L,0x8fd382e07073b98fL },
|
|
{ 0x17165b8a644a7bbdL,0xd17d2d80b6118620L,0x2a4bf1b2c8cd1bcfL,
|
|
0xdc7aad959ccc119aL,0x6d34084c3bcdbeadL,0xcbc5c5557e0663c8L } },
|
|
/* 16 << 28 */
|
|
{ { 0xba86aec170128295L,0x83a09b65c12f35ceL,0x8978ff0789df2f80L,
|
|
0x85750cfd97a773d5L,0x806bb730fc3f35f6L,0x04503422fed868c9L },
|
|
{ 0xdc0fcde086ffdbaeL,0x8f4297e11860f43bL,0xfefb7d028d3ad6cdL,
|
|
0x5c652b5997293550L,0x32e12942ed5cfbbaL,0x06192aaf98800d22L } },
|
|
/* 17 << 28 */
|
|
{ { 0x9bb8cf660002f389L,0x217219af51505913L,0xfea1388999ef8797L,
|
|
0xad1b2383235597c4L,0x85ffabb70a3e3536L,0xd8235d9da00c725aL },
|
|
{ 0xfa9b0f4ba704dac0L,0x99d76ddc2f57fb9aL,0x5ed3683b18428507L,
|
|
0x9e42bc54435307f2L,0x3167de67b4f36896L,0x8a0f99a0d539d713L } },
|
|
/* 18 << 28 */
|
|
{ { 0xf0b92b8a4642d9b2L,0xce97828a3f50c883L,0xa33d62936f0b1194L,
|
|
0x23417e0f3692f5b5L,0xc79b9491fb0b95bdL,0x5410e8c95e836b2aL },
|
|
{ 0x2b84078d29798fc7L,0xa8732e78d6628695L,0x39da93f898c766aaL,
|
|
0x0797832d305e464bL,0x246069ab163f9f4bL,0xb867dcef53fb6170L } },
|
|
/* 19 << 28 */
|
|
{ { 0x949c63730ced5c37L,0x6f8cd6e4fdb6464eL,0xbea902ae2e056dd4L,
|
|
0x43871371fa0d560cL,0x162128e9e9ec2208L,0x84deda5c25060c6aL },
|
|
{ 0xa8a8a27c14160ed1L,0xf24bf3dda33b53cdL,0xd12038a976a6d272L,
|
|
0xe64d6384ee8f2b15L,0xc404d580d3e91d69L,0x62cdb886a4888d17L } },
|
|
/* 20 << 28 */
|
|
{ { 0xccf0fb423c9eb0caL,0x8703c6694aa03b40L,0x44c735a74001af07L,
|
|
0x9616dd932e874ed1L,0x5c2e8520474ba621L,0xddf13cd3fa93d8b4L },
|
|
{ 0xd68c9b4575df1b67L,0x4cd242288f80d389L,0x0f1a16bcc09f47fcL,
|
|
0xc414dc6a9cd4842aL,0xbb0fa94f1f353c6dL,0x405124551950d073L } },
|
|
/* 21 << 28 */
|
|
{ { 0xbfe176f2dfb520a6L,0xf51917bced96d0abL,0x8131985078b11135L,
|
|
0x6397f1288f006a55L,0x9877f30e576b5132L,0xe0cd103bec781571L },
|
|
{ 0xb4bf74e5bcfd5046L,0x04333aa4be9cc561L,0xc6dd1dbc1e066ca1L,
|
|
0x03c926e1d3718e62L,0x13bf83d404309072L,0x79649ba0ba28ac51L } },
|
|
/* 22 << 28 */
|
|
{ { 0xcb1a73c55abfe8a1L,0xe9e2e220deae1d92L,0x2d953d00514befaeL,
|
|
0x74024df9b7940bcaL,0x9a2cad0cd13f4a3aL,0x8790b699360795fcL },
|
|
{ 0x63957f3b5e9982eaL,0x491bf3155b7d256eL,0x5708bd4dd23324e7L,
|
|
0x9f11ddd397c4c8c2L,0x1823762f5b7f5162L,0xc45a3976cbfc9dd2L } },
|
|
/* 23 << 28 */
|
|
{ { 0x806134cd30731f5cL,0x04522c23487c778cL,0x99b6e6a1651640a5L,
|
|
0xe2d20ed87e9898d1L,0xcad25762069e56d9L,0xd4184f6e29ddfc7bL },
|
|
{ 0x1017badcc1aeaa34L,0x7d3700e7f3c62e08L,0x203dcf8d5e42399bL,
|
|
0x05986c66b72795c7L,0x0b56ad9cc0925f02L,0x1f0e895bfe0e3bd3L } },
|
|
/* 24 << 28 */
|
|
{ { 0x935b9e244d2edd5fL,0xfeb46fb5efb287b8L,0xa51700a3f5018b92L,
|
|
0xc328beba23864e2aL,0x113b5c9a995f70c1L,0xc0b11c22da1b5d51L },
|
|
{ 0x9b99b907f4a360cbL,0xf4ee9995adf0b094L,0xf67c7cf2f94b3f0eL,
|
|
0x664a51a1dcaf10ccL,0xa3709ccce937a669L,0xea97bace4862f098L } },
|
|
/* 25 << 28 */
|
|
{ { 0x62c7dd9ed537ed6bL,0x8a82ae7ccc168feeL,0x96fcf8d19d00a4a9L,
|
|
0xfeef6ec205096874L,0xc828c68969f4485fL,0xdc4903a6322563f0L },
|
|
{ 0x5339cad7d3280a32L,0x42ae434909ff15cfL,0x94cdb7790bbb6af4L,
|
|
0x480f8a5515721529L,0xc2f9c4dc0ff28eb2L,0x9d2a405e1ff6e3d5L } },
|
|
/* 26 << 28 */
|
|
{ { 0xfeebe7d29309e729L,0xd322c38aa30a4eb9L,0x18cb0ce12f4f5c8eL,
|
|
0x08a073a04262105eL,0x6ca92585933f888aL,0xf4a080c903ca1489L },
|
|
{ 0x5e678c7949c8daf0L,0xcd6ef6ba5abfcf82L,0x61faba612a4fc564L,
|
|
0x7cacb3dcee0b306eL,0x9fcfafadb5aae2a9L,0x193e841c4b8fb04bL } },
|
|
/* 27 << 28 */
|
|
{ { 0x4db6f5f07ed99ce4L,0x1257bd9c2456059bL,0x546c764b43d3590eL,
|
|
0x6d5062adebba72d6L,0x6858f04e2e8d99fcL,0x46554047b4eeee5fL },
|
|
{ 0xff433f63535f2da3L,0xd76777542b76d2e8L,0xeb6be9c88e838a3fL,
|
|
0xb7a2d2c1145f8bf4L,0xf3ba128703bb278aL,0xd88cd51530c4a1a4L } },
|
|
/* 28 << 28 */
|
|
{ { 0x51758334c942a3f5L,0x7cc01e8832182ba6L,0x772af25774de4fe6L,
|
|
0xb1b3c448e9667bf8L,0x71cb27388079caf6L,0x48890c641d823a40L },
|
|
{ 0x47a5887b0e9edbdaL,0x916dfb0cbe089e5aL,0x3185090e1eb42ddfL,
|
|
0x3c7eaa13b7f3af26L,0x940ed8c79e9963b2L,0xd85e77db3426ac10L } },
|
|
/* 29 << 28 */
|
|
{ { 0xf21b47bfd7bbbfa1L,0xf757cb309ea0ea77L,0x6df7f53783b2a6dbL,
|
|
0xb0808cf99eb8ed81L,0xc526bb6b64edb3b6L,0x24f1612068f72d82L },
|
|
{ 0x3e2e6af8f01cee94L,0xd2e01f947847ca60L,0x079dac3539e68ac2L,
|
|
0xc30720b270cedeaaL,0x2f97f968fa6bf057L,0x2dba403babf6a743L } },
|
|
/* 30 << 28 */
|
|
{ { 0xed99932452c802f1L,0x99f6864c5cb78b2eL,0x8f8a0a709b9c3693L,
|
|
0x0b931016e2f598bbL,0x7edbb1b3a614fc15L,0xa0321b50e79f74c2L },
|
|
{ 0x834f3ee994bfa457L,0x5ffa9613006907b4L,0xa37e9b83d779b46cL,
|
|
0x7a21743cf33b791eL,0x6646b89dcc28a011L,0x9b975ef8e2ba76f8L } },
|
|
/* 31 << 28 */
|
|
{ { 0x166c7151ec72cbfcL,0x3d1f2450c9e519ceL,0xfdcc648e7efc0fa1L,
|
|
0x3f5f90cf6db6d516L,0x8a5dd3df145830f8L,0x4d9938da4e5858e6L },
|
|
{ 0xe598f9d4dede1584L,0x2de5a26cf5c8f4e4L,0x495b750f364e20f6L,
|
|
0x29291c445b718188L,0xe560d9ee3733ce27L,0x99b9d27d5b9d206cL } },
|
|
/* 32 << 28 */
|
|
{ { 0x162cdf342efffd95L,0x92111fdad59086e8L,0x4478d114454eb977L,
|
|
0x8ce403d8dea38a67L,0xd459633b7435728aL,0x3a7be4e3a63b0504L },
|
|
{ 0x0c74066b335dba3eL,0x4e8fb1d7c6ea6ee5L,0x3398b588a99690edL,
|
|
0x4949517c3ad77562L,0xf9824f09cbbb60eeL,0x9fdcafdf85660becL } },
|
|
/* 33 << 28 */
|
|
{ { 0x368bea127aa62889L,0x6096730506e1046fL,0xe69be05e564f219cL,
|
|
0x064b9d7c01eab75cL,0xf16ccc9e0152981dL,0x708827acb178a3deL },
|
|
{ 0x320f6a8a93248b89L,0x532acc568084908eL,0xe494cd1f6ab586d3L,
|
|
0x59c74cacabbdcde3L,0x3ccf84a62259abeeL,0x6657d1fad96bd141L } },
|
|
/* 34 << 28 */
|
|
{ { 0x5d3a8252aa0a9dcdL,0x540e037af97fe26aL,0x4cbb768ca3f68f56L,
|
|
0xf9608732652d7058L,0x5fae0f9f72cea8b9L,0x1a7edfd97d980da5L },
|
|
{ 0x9f00ee611791c34dL,0x6c95404c2bc25810L,0xabb1089e043a9faeL,
|
|
0xe36fe9e1a7881ae0L,0xf163dc460fc04e9dL,0xb6955f2f129c7940L } },
|
|
/* 35 << 28 */
|
|
{ { 0xa22ebfc7c23bcd94L,0xa653b119684fe9f2L,0xe469e28646b59d70L,
|
|
0x0720daf3dad96b47L,0x5066df7871288c07L,0x7648d7d82905b5a2L },
|
|
{ 0xc6ab9c5c0a30a65aL,0xa00539f34930712aL,0x6a64738c7e894bdeL,
|
|
0xd7f3a7459e8eafdfL,0x652a58ff8ce9f7b2L,0x7c9d02e4cb3782bdL } },
|
|
/* 36 << 28 */
|
|
{ { 0xf26bd8618875d9e8L,0x22e2380dbea9c273L,0x5f15183791995508L,
|
|
0xb97f40a6648aa1c6L,0x7478f5f83977d848L,0x21e876ae35b57de6L },
|
|
{ 0xf620b180a93fc7f6L,0xf49bd07e1b148996L,0xfb0857261c4f60e1L,
|
|
0x6a6653af7ad6b84dL,0x913a2d022e05b686L,0x94746629407dda9aL } },
|
|
/* 37 << 28 */
|
|
{ { 0xc662b0f68a97c714L,0x69fbf7d1b8fbbb02L,0xf3bb5a9c5cdff85dL,
|
|
0xfade6eb036ee44f3L,0x6eb4b8266d0905c8L,0x6ab3e4a4391a34d6L },
|
|
{ 0xf490046478e7bdb1L,0x8bcd4bf23272c400L,0xdf9a81b78d2c9573L,
|
|
0xb9a0ea166af43695L,0x3298a5d071fe768aL,0x53eeeb4333e87bd2L } },
|
|
/* 38 << 28 */
|
|
{ { 0x87cdbfe6bb531d08L,0x384bcd0357957992L,0xc654e2c942008cffL,
|
|
0xd12b50285002e06aL,0x41a34286a67db410L,0x31a109d99d6b2c01L },
|
|
{ 0x14d642da2ed35f38L,0xa06a846048ffd04fL,0x8291190cbdbeef68L,
|
|
0xc8106239e43bb0c9L,0x4d7aa992c4bea448L,0x107b86efba3dd9b5L } },
|
|
/* 39 << 28 */
|
|
{ { 0x3d870c3144fc1cd3L,0x34409eec0085e7b3L,0x67d5c1340d0395e6L,
|
|
0x9c30dedae3f36689L,0x988ac951d268cc91L,0xdb05825bd2c9dfdfL },
|
|
{ 0x30ccc3b75d349fd5L,0x63383c0f60c3a79bL,0x4f45c81732c71964L,
|
|
0x456679642fef028cL,0x82454c12cf4053f0L,0x7c1310fbed8077f0L } },
|
|
/* 40 << 28 */
|
|
{ { 0xb8465d16da684157L,0xdadde1abb238faaeL,0xe2cd45e7c6b9bea8L,
|
|
0x7251d4a15cf413d5L,0x615cea8baae1765bL,0x75aa831813f36885L },
|
|
{ 0x7d5b0bf7b8767cc1L,0xec38a8ff8022968cL,0x034805b62a07faebL,
|
|
0x916f9eb033b7321eL,0x34963633c0c577ceL,0x8ee07efdabb8d3ceL } },
|
|
/* 41 << 28 */
|
|
{ { 0x498606fc2d15a409L,0x2398e109d5fdcb60L,0x8ed8fcbc36540c3cL,
|
|
0x94404e2bc1db3193L,0xe62b808b28db1c38L,0x545b60871ad1d686L },
|
|
{ 0xe8bf6489740f4264L,0x7ee76fe71809505cL,0xaa95b8c86f45a011L,
|
|
0x9bd6111b55c715c3L,0xc5c736bc33165913L,0xf1e8cdf282f6c7a9L } },
|
|
/* 42 << 28 */
|
|
{ { 0xeb09e7fa949d05b5L,0x49394c1b8d014014L,0x644874d73eb7abd7L,
|
|
0x89c666e5679d2a01L,0x6ea98cbbd315bc8eL,0xd919142a37fa5a26L },
|
|
{ 0x042fbac56d0239b6L,0xbff2b086837c510fL,0x21e4d279d9883ed7L,
|
|
0x6416e0239713c2b2L,0x3742c6d14ea05144L,0xff591d8fd5b00fb2L } },
|
|
/* 43 << 28 */
|
|
{ { 0x0ae21b83c138ed42L,0xf1b0895a2ff30df8L,0x4d5d634d9559c6e1L,
|
|
0xfd02f3a3098e5c4aL,0x7bc6b63152bb211dL,0x498a68fffb69f0ecL },
|
|
{ 0xd6fd5f443e69b479L,0x5ea1877d8c740d2eL,0xfaaff5f0ca605f02L,
|
|
0xb3022f9839a03f5bL,0x3feb7c13aa253725L,0x119097a89dc33a73L } },
|
|
/* 44 << 28 */
|
|
{ { 0xa0bd6c0da8a29345L,0xc676b6c55d7f5ef9L,0x303b6d7c20ad7259L,
|
|
0x06542a19d8fe09a7L,0x5a06653ca959014aL,0xf45fd79a5bcfe0cbL },
|
|
{ 0x29058d984e583468L,0xf1bd25e60cd7afc0L,0x2a88246ef7dbe54cL,
|
|
0x680eaff835e0ef3dL,0x5942c97f726e59b9L,0x43e971398d5c0825L } },
|
|
/* 45 << 28 */
|
|
{ { 0x6656b318f7378bf8L,0xf9a838df182f1a29L,0x0d62dc5ede475756L,
|
|
0x97564544585bcab5L,0x3e99f44c857a13cfL,0x8c3a0a940cbdde00L },
|
|
{ 0xa7be375833dd2d24L,0x629040f1bbb1c7eeL,0x0bb2ced27f0eab7aL,
|
|
0xb86f1e1e9f474277L,0x60539a544a14ac4eL,0x9860f986aa90977fL } },
|
|
/* 46 << 28 */
|
|
{ { 0x143fdef1fe944aacL,0xfd6700fdd24f606cL,0x5dad2e41737404a9L,
|
|
0xb16c5d42953abdccL,0x132b5cd995be01c9L,0x2bf605d86fd01c6bL },
|
|
{ 0xed62526c8803881dL,0x3429579201788c26L,0x553f8e0f8d62ab25L,
|
|
0x3b2df9cf9850ff9bL,0xb320ec40acb513b3L,0x86d61c988875dfe7L } },
|
|
/* 47 << 28 */
|
|
{ { 0xe5fbda4daab3cc32L,0x556fcd2535d469a0L,0x414673d91c02fb7bL,
|
|
0xc14ee9fd8bfe6a4cL,0x8ba0959d1133d9f3L,0x086a7c94e94338ddL },
|
|
{ 0x92c2f484cdd5a1b9L,0x97bb21f6ea0e0f9eL,0x99756b285411da59L,
|
|
0x4b79c4663be739b3L,0x73502d3e706078fdL,0x6bb794100da7aea4L } },
|
|
/* 48 << 28 */
|
|
{ { 0x2daddb11a406d4d7L,0xb02b5da5a2a33d81L,0xb73ce82721a6aa89L,
|
|
0x10919587467506deL,0x0927724c428d8daaL,0x0ede991f7c17adfdL },
|
|
{ 0x8518dab1bf7ddb3dL,0x04b091c42a54e1b8L,0x5943c37f89e7a398L,
|
|
0x8e63f5e8e273f6f3L,0xc6d0352b83143d22L,0x30e43182ebd1628eL } },
|
|
/* 49 << 28 */
|
|
{ { 0x9bc5af5aedf58e50L,0x31a3beeeb0d51722L,0x5789fcf98cd467aaL,
|
|
0x85d974897793faafL,0xcf09224ecc18f367L,0x4f293783ec7957b4L },
|
|
{ 0xb044c854c0be350cL,0x027caaf72a63996cL,0x5341b3f3cb85de2fL,
|
|
0x0d261d80b106359aL,0xf63bfe7a8456af12L,0xa954c4400174c82cL } },
|
|
/* 50 << 28 */
|
|
{ { 0xaf752854b02aceb3L,0x000c5c4222c194b3L,0x7e953b78ebd2e61aL,
|
|
0x44dd61b4b9d68960L,0x282ef4216d454ed1L,0xffed862aa402ca61L },
|
|
{ 0x5fffddeed3e189e2L,0xf36379990daffe3dL,0x1b09a625857a8a00L,
|
|
0x3e64ff63c1ced62aL,0x9acc484d10b63647L,0x5a470aef3afc8675L } },
|
|
/* 51 << 28 */
|
|
{ { 0xe21acfec09ebdbaeL,0x512c66a729b064faL,0x15c08e1191835db7L,
|
|
0x78fff5d665203a4aL,0x99259d961c73615cL,0x85b444b9f36024bbL },
|
|
{ 0x4909772df16932deL,0xcc4a526899a3863bL,0xe54557bd2ebff8faL,
|
|
0x1a9b05b709bee4c1L,0x0d2ce396bdb2b785L,0xbd15bcec8ce7ef40L } },
|
|
/* 52 << 28 */
|
|
{ { 0x606658a99991167eL,0xb8773e1572c4b43dL,0x6cb364cde025abceL,
|
|
0xafa58e9b0c5a653eL,0xa7e35a54134a68bfL,0xcb831d42ba4d9db6L },
|
|
{ 0xae37348ede83ef97L,0x4ac64a6a62ddd553L,0x5feb5e0d715bb6b4L,
|
|
0xf876efae043424b2L,0x7b56a291ad91a9efL,0x817c7053356f3adeL } },
|
|
/* 53 << 28 */
|
|
{ { 0x0dbd99249e88115fL,0xecb57472bc568c61L,0xfa4f4a47c1058746L,
|
|
0xb19006014d92c079L,0xe693577091026a8cL,0xebde8e65eefe8740L },
|
|
{ 0xe8bc6b3480a93b35L,0xc1c8fc0635518beeL,0xf7f4b448a47cdd36L,
|
|
0xe4d040e0db4f3e42L,0x025fbdfb88345042L,0xfe6cc10f3fbe045dL } },
|
|
/* 54 << 28 */
|
|
{ { 0x63ba344a1c20cb4fL,0x55f11c207e8cccf6L,0xe66e1641b5b1046cL,
|
|
0x51cf6dbe758a460bL,0xe786a81e91bb5101L,0x6f4a976209cd4365L },
|
|
{ 0xe88b4d03fc565022L,0x46006d0ebfdf8ec6L,0x10a3e85781f4e635L,
|
|
0x28ea91360a4a2e82L,0xf890ea9e757b38dcL,0x89c6789261312e2aL } },
|
|
/* 55 << 28 */
|
|
{ { 0x8ce54e2a65d9fc54L,0x4776c1f13bfc0c09L,0x5d15fced99476b22L,
|
|
0x2c5399bc1142dc7bL,0x6faef9d96c6ad87bL,0x4f238e48ca5126cbL },
|
|
{ 0xbc7136d607849dc2L,0xc840ccb1e30377a8L,0x30e0f0373a371bafL,
|
|
0x5b8eef9bdfce4735L,0x1662184e514bb217L,0x010ebb8579e0918dL } },
|
|
/* 56 << 28 */
|
|
{ { 0x3d6e8d6d8dff7dffL,0x6b6c194ad5be4ad1L,0x57b93f2db6fcd08bL,
|
|
0x99f09948f3761f23L,0x4062f3d6ac8b018fL,0x4b58ac05a27af72cL },
|
|
{ 0x4abcc81504d0cdfdL,0xa50043e0bda4b02fL,0xe11297e527a9c083L,
|
|
0x2b2d8d529779c5b3L,0x3de3d330dfdecfedL,0xfe2487caae7fc522L } },
|
|
/* 57 << 28 */
|
|
{ { 0xc510bb0b7e7a66ceL,0x54a3e0111332f2c3L,0x6331badedc885f5cL,
|
|
0x1a73c8aedc47d8b2L,0xc657edbb95d4e933L,0x30994aa335dc3ccdL },
|
|
{ 0x832d586fafe5be42L,0x3392b07ad44de522L,0x1bcea9a62982450cL,
|
|
0x8237bf2b3709f75bL,0xfa4f2501ea9d03f0L,0xcf492df7bdacd276L } },
|
|
/* 58 << 28 */
|
|
{ { 0x2d0f7f28af4ecf83L,0xc2863ae4d48229efL,0xc989ff3d7001268dL,
|
|
0x7f07adb6ba225adeL,0x1564c1db450a15ddL,0x3bfea98c6524d417L },
|
|
{ 0xee3cd3ef2cc20833L,0x055c569dba767b1aL,0xef2eaf51351b1279L,
|
|
0x4e02b1d163b809d2L,0xf0e943d00a14c115L,0x2bb3bc3f32f55210L } },
|
|
/* 59 << 28 */
|
|
{ { 0x8f577dd79ed385ffL,0xdbcf0548a1fdcac6L,0x38555497c2352ff2L,
|
|
0x33e2ed85eb9edab2L,0xbe4bd6db9e649ecbL,0xea3668f72c6e7488L },
|
|
{ 0x841627b8f4b91b7bL,0x2d61a0f7d487c7a7L,0x1932b198142d1dc2L,
|
|
0x06dbb39a1a792783L,0x5be16e570bede1faL,0x4d3b197bdffceb55L } },
|
|
/* 60 << 28 */
|
|
{ { 0x1c2fc5088f7a83e5L,0xa7c56233b9970c92L,0x949c71738bafa66fL,
|
|
0x1e299b2d5bbb0490L,0xb9a79e7c18fcb9e8L,0xe6372ce69cb5cc50L },
|
|
{ 0x114fc628f465c6aaL,0xc55395208cb797f6L,0x7df94ed7a73ad211L,
|
|
0x41eb8e1f8e0cd008L,0xb028725a004cbb0dL,0x1340186d372c1656L } },
|
|
/* 61 << 28 */
|
|
{ { 0x5162886c203a829aL,0x60dbd8d464416392L,0x60589a51b5a10685L,
|
|
0xa79ca259113476a8L,0xbf4f71100d7b37dcL,0x1a1b3fdf78bbb029L },
|
|
{ 0x2954d3454799a0bdL,0x7459eac788c256efL,0x61ac72653800707cL,
|
|
0xd861f7764cc84f7dL,0x29f4e5bf84faae3aL,0x7975c9555aa1236cL } },
|
|
/* 62 << 28 */
|
|
{ { 0x65f28419238c3c84L,0xf07d83ed90f1ecd1L,0x10307e1bf6567704L,
|
|
0xa94dddb389d17845L,0xaa56f72788f39175L,0x01cf57e2a7aa55f7L },
|
|
{ 0x98f4340e77f21e8cL,0x8cd3e0a2adb036c0L,0x5c49ebf4af6b46ddL,
|
|
0x312a2c32455f6897L,0x52fb4f488b517f06L,0xb0f373d442beff4bL } },
|
|
/* 63 << 28 */
|
|
{ { 0xd9694bd9af44f9ceL,0xaf2cfbbc1ee29f43L,0xaf352b1c880f80ddL,
|
|
0x3fdabd2142297787L,0xf5a2acc21c7916b3L,0x6154b3f2cc0d85f0L },
|
|
{ 0xb9ff2bea0bc58e86L,0x359eb0750561c3d1L,0xbb5a318fb93be593L,
|
|
0x34af9320bff0b3b3L,0x3cbe89341d967c37L,0xd08e5f46a8e9a750L } },
|
|
/* 64 << 28 */
|
|
{ { 0x4074ee27978029bbL,0xa9394bdabae0d0c0L,0xaa01d53972cecb4bL,
|
|
0x4b0cf1279a7dd9c4L,0x3e3e3f165bc787cfL,0xdf48f7e1942de53fL },
|
|
{ 0x0cc69719567b9d0eL,0x631e33158d0d2750L,0x9fedc1e292314a09L,
|
|
0x7547d22614a1adcbL,0x405561a48662b86aL,0x149fa2b1f5480b7dL } },
|
|
/* 0 << 35 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 35 */
|
|
{ { 0x923d0b44bda4aaa7L,0xced14ce4fee29f7bL,0x1656be009cf5b87dL,
|
|
0x13a37d0d1d61103dL,0x1d705880fb652393L,0x870a31bbed712ed8L },
|
|
{ 0x15ad02e6ad7c21e3L,0xf004e447c36c2831L,0x56aa376cba2b3ffdL,
|
|
0xc3be2b2f9745443cL,0x47c8a870eb903660L,0x976c303e6c6c192dL } },
|
|
/* 2 << 35 */
|
|
{ { 0x148bd39cf4fb80d4L,0x469b208cfff04e65L,0xf397fbe2ce548415L,
|
|
0x441e5c2c87fdde9fL,0x6366b49ffee9c179L,0x38d02bd32938dc71L },
|
|
{ 0x26d450fac49c5444L,0x4569f95d2b23d3d7L,0x5f68bf4d298fd876L,
|
|
0xe86df047544768b6L,0x40b69a32f8491267L,0xcbf3adf9f917c71aL } },
|
|
/* 3 << 35 */
|
|
{ { 0x32498d4d8125489cL,0x965e8d07a5a46ae0L,0x6cea5e47e96a7e29L,
|
|
0xf78293a4668039ffL,0x62548a96f63edd32L,0xe8e6af95a83e8256L },
|
|
{ 0x76e60c3b0db6263bL,0xa1ee4b0621b3d668L,0xa17dbf8b9e49b0b5L,
|
|
0x4b29ba127eb366fdL,0x5e0ed781d29b565fL,0x8cb50d53199b36f9L } },
|
|
/* 4 << 35 */
|
|
{ { 0xa66c703529aa3150L,0xd038a5ab479e61fcL,0xdee33e96b5ab5410L,
|
|
0xd068929c7c57d123L,0x0839a208f1d6ad37L,0x8f523dab123f8178L },
|
|
{ 0xb3e5e524a67d3840L,0x88bda75e52eb59dfL,0x513a0ab7389f2dd3L,
|
|
0x3197a145890bba6fL,0x61add75b6f66bf09L,0x5c9dfc154eef1722L } },
|
|
/* 5 << 35 */
|
|
{ { 0x66dc285007769b1bL,0xe07fb7414d71fac4L,0x5ae688a6c2abbe60L,
|
|
0x08ae92fadcbfd296L,0xbc291256b43044d1L,0x0e1d71ed9fcdf213L },
|
|
{ 0xf0c5b28102485685L,0x5d3f9302e3f68f42L,0xbbbfac50ffe4f036L,
|
|
0xb5b5f26174fdba44L,0x4ebe1d070d746760L,0xbb0f7812c37f04b7L } },
|
|
/* 6 << 35 */
|
|
{ { 0x810b6ab36df1199dL,0xc229308bb4f293b7L,0x3cf838dd89897750L,
|
|
0x3e391e4e7a336c9aL,0x70148337176f89c0L,0x54b15bacbc4f1e22L },
|
|
{ 0x32b104f92c0f2885L,0x2c39cefa67034f2aL,0xb8310437bf178ac1L,
|
|
0x722299f5c99370d5L,0x0a493cf0332b93a8L,0x00e0ab41a420f719L } },
|
|
/* 7 << 35 */
|
|
{ { 0xf25925434cab24daL,0x52be9bbce7c3b9c5L,0xaab7a8b64660d1a0L,
|
|
0x09738b819a9600f4L,0x58f0c86637de9e3cL,0x0aea5cc15db31f4fL },
|
|
{ 0xe480406f499868beL,0x0d8fc7f0f6913a44L,0x7282364435f2e14eL,
|
|
0xb147b31045e37a93L,0xb1e7aa5bf15c1af7L,0xa8685068b03e7713L } },
|
|
/* 8 << 35 */
|
|
{ { 0x21feb7fc21c34c2bL,0xab6a553addb0140eL,0x03a6557624b04e6fL,
|
|
0x2531f186342cb0adL,0x088c4d54a24f6426L,0x9a0ee15c06a873eaL },
|
|
{ 0xdbe0253fd33bc748L,0xdad3339f5db8ac9eL,0xeaaf368173e65901L,
|
|
0x71f1fab2ccbfa504L,0xb7b845224b0e163eL,0xe0fca8373c779f3bL } },
|
|
/* 9 << 35 */
|
|
{ { 0x710988eb46baf373L,0x8cceb935b57d5018L,0x1864603fa45fdf17L,
|
|
0x3dcaae73ef48e6d0L,0xadd9420b590322c5L,0x947783e39b135f67L },
|
|
{ 0xfde763688bf5049fL,0xf00e4c182caa4023L,0x4d3b0f23d355b3d6L,
|
|
0x181fabcc20d5799dL,0x29499b40ab2ad0afL,0xf6e66328f9a938aaL } },
|
|
/* 10 << 35 */
|
|
{ { 0xcd7b3c42bcbe922dL,0x2fe02b3b95dd1a5cL,0xeb66bcbd24ef5c38L,
|
|
0x7edcc21ce579c309L,0x7b19d49116f6c900L,0x36019ecdb6317c2cL },
|
|
{ 0x554ba55391d9001cL,0xa5e30b9814f31e44L,0x3d1fe33bffda4032L,
|
|
0x5dfec4782306675cL,0xbe59305e000c91e7L,0x3c4e52a325a6b879L } },
|
|
/* 11 << 35 */
|
|
{ { 0x02fcc14ec5ea88acL,0xca29bb6d56d093b6L,0x876aeda90e6fe94dL,
|
|
0xfa11a142d7225a9dL,0xfea3ca053d03fed8L,0x435854c6c54d5962L },
|
|
{ 0xd770737454a6dfd5L,0xb8960017a3e55d02L,0xd4015a0c04d65c3eL,
|
|
0x397f93d1e98a1204L,0xb0efa2e55f3ed850L,0x18f244698a3ec67bL } },
|
|
/* 12 << 35 */
|
|
{ { 0xa35802f5d62cd9f9L,0x0ca9c15d4148436eL,0x261a991d472b9d21L,
|
|
0xd81a1ed6a2f8e875L,0x942f213a699b6d63L,0x041a12fc0ae57758L },
|
|
{ 0x61191c82bd70aabbL,0x3776eb8bee4c23b3L,0xabe23e8652511222L,
|
|
0x66dd967d30dabb91L,0x77650c597ed27424L,0x08ea2ebdab25a050L } },
|
|
/* 13 << 35 */
|
|
{ { 0xa410ba3ab6cb5a02L,0x6eb40d15d07c5c6bL,0x0de81e9107dcc811L,
|
|
0x996f46eb2631b7afL,0x5a350ba75b7a22f3L,0xf42b24e7634159afL },
|
|
{ 0x07bae0abc30952fdL,0x3488cda2d644e0b0L,0x23ae40d0e2111e12L,
|
|
0x650af54ec80cdb56L,0x0f33a30b7d4aa2a8L,0x4e8d3e98442a00e8L } },
|
|
/* 14 << 35 */
|
|
{ { 0xa624ab3759a8bc95L,0x4b7e3fa61c971228L,0xe8229c4273aa694bL,
|
|
0x0cc31029779288abL,0xf8eff30f57575e0eL,0xee5e01947d52803eL },
|
|
{ 0x32d87e558a78f632L,0x48a06031e454904eL,0xaa2cb8dd16c6e626L,
|
|
0xadd098ac2c140452L,0xd25f285d2d3031b1L,0xfb5fbbe175b59543L } },
|
|
/* 15 << 35 */
|
|
{ { 0x2297041fd7a21503L,0xfe7738c2657f03f0L,0x994a8deb168fa34aL,
|
|
0x0c772e02a53c4fdbL,0x67f835d150124cd3L,0x0e0d26356993cbbeL },
|
|
{ 0x9857ed845257f11dL,0xdc23a728ac556942L,0xf0e1bb29deb32a7fL,
|
|
0xb8c3c43fee0d70f4L,0xc294b0efc60ad214L,0xa4d438dc679067caL } },
|
|
/* 16 << 35 */
|
|
{ { 0x520b0bb905c755e4L,0xa2c2c59bf89f0048L,0x85c1c73a73c23975L,
|
|
0x6e4dec49783aabbaL,0x69f0c69bb0463155L,0x61a42b949c97b17bL },
|
|
{ 0x55af24a945d331a3L,0x4b0e63f8f5fe81fdL,0x4034283d708671c4L,
|
|
0x200ddab35fd9001aL,0xe45f28e4342eaf3bL,0x3e8375b41ba936c4L } },
|
|
/* 17 << 35 */
|
|
{ { 0xcde014bbc613b1faL,0x5ad97babcdf992c2L,0x9fe05b9fea13e2d8L,
|
|
0x93b553e290c4031fL,0xd62bc0818c727bebL,0x284fb61f888306caL },
|
|
{ 0xa63f8dcd1101abd6L,0xfe02dc120e962b27L,0xab169958115301e7L,
|
|
0x8822f954462209baL,0xb3ba3e721198428aL,0x9a73ed38d74c88f8L } },
|
|
/* 18 << 35 */
|
|
{ { 0x7db497e17da2f887L,0x0995648b683f3507L,0x50e3ff74f5935bd2L,
|
|
0xdec083e2708c88dcL,0xbcc3bc3125129bccL,0x7a3fd7a80a407b41L },
|
|
{ 0x46ab826c25e0ab93L,0x28e891ec54944cfcL,0x637be168f55c6cbfL,
|
|
0xfa34e9942a65216eL,0xd23e99afe3a43c84L,0x6d09d189e6fd958bL } },
|
|
/* 19 << 35 */
|
|
{ { 0x8aa6ca1381bbd283L,0x3a0633f4ee167a15L,0x7f297c8b9e3b18e6L,
|
|
0xbead8a50c71fea64L,0xa11b2fdd457aebbfL,0xd7fc286f85bc7bd2L },
|
|
{ 0x2922ae5bad1c9d9dL,0xa07741c2ef9ac174L,0x24dab2d457fa8f9fL,
|
|
0xd7078d946116a870L,0x4b45107834117a37L,0x19a4dd21c73c857dL } },
|
|
/* 20 << 35 */
|
|
{ { 0xa2f9b4e4bac5d14bL,0x9f904a3eb8699164L,0x63585978fec79b4fL,
|
|
0xbcc9b60ebff45cd8L,0x2e515592a5d63de5L,0xc47a048c3bcc637aL },
|
|
{ 0x0523810643aba777L,0xf6818e4c77e67aacL,0x9d5827d238f962b3L,
|
|
0x28a904c6a003988dL,0xc06bc833551f4575L,0x61f6bcc2221cffefL } },
|
|
/* 21 << 35 */
|
|
{ { 0xf7cfbbe5055a5623L,0x1f8af775e66d2a5bL,0x0cac440268831d8cL,
|
|
0xd25185890d0e6f2fL,0xf17838a3182f90f1L,0xefdf6f20737f163dL },
|
|
{ 0xc3198af0542242e9L,0xf77c3d28209efb0bL,0x1df6d0da8de7be08L,
|
|
0x22ef7367901a6590L,0xfa9b4af44b776d27L,0xdc49102c88ace4f6L } },
|
|
/* 22 << 35 */
|
|
{ { 0x60c7d148bafa9cc9L,0x0afc5fe2516b87fbL,0x02e20acff795ff60L,
|
|
0xd1ba069151f32975L,0x8547e7f757be2399L,0x4bdf6abfa0d1b33eL },
|
|
{ 0xc793832fa06077f9L,0xad55cccb2d874993L,0x5e217b27314387d8L,
|
|
0x744d7b06e7f2ec4cL,0x761aa86d24fa58b1L,0x41400d9657dd313dL } },
|
|
/* 23 << 35 */
|
|
{ { 0xd17f68da759d20f0L,0xc141ca6827b7eaa7L,0x3796db8bdaff5c66L,
|
|
0x067119dca1e5220bL,0x174f11777158ddbbL,0xa80365d8cf8bf75eL },
|
|
{ 0x0a79f74933567f05L,0x8c2826123c99bb4fL,0xe448c2bdcd6ae726L,
|
|
0x1ae05aac2ad4b0e0L,0xf90dddcb16442420L,0x37465a1ea75c28e3L } },
|
|
/* 24 << 35 */
|
|
{ { 0xf58e05c53178468fL,0xa17c8b868328a2efL,0x1bb22cb44ce0c2f8L,
|
|
0x1ab807b51aab9089L,0x2aafa8c91e76fafdL,0x58cdf95fb4801546L },
|
|
{ 0x2c1e4ef8d5d699f1L,0x1583a2aa4cd433bdL,0x571dcaec7f4f9b10L,
|
|
0xf62b696b27156c5eL,0x77d2443448820bb9L,0x94e4cfcc11dd3e55L } },
|
|
/* 25 << 35 */
|
|
{ { 0xc3fd1feac00e6c7fL,0xf4e42ddabd322507L,0x1ce3e0da023469ebL,
|
|
0xf81769d2d788b1c2L,0x505cec4c62353342L,0xd4049907ba759922L },
|
|
{ 0x9ff98f06618ee939L,0xfa63b3606bd55f31L,0x3fcce488cc4d2515L,
|
|
0xeb6e92e91d629e19L,0xcae4190bff892af7L,0x3e7b780dca80cb44L } },
|
|
/* 26 << 35 */
|
|
{ { 0xbc923fdfaf54b58bL,0x2aef31d88767acdeL,0xfbebb8f07f28a3d4L,
|
|
0xce5feafe694fe977L,0x606afb0ac9da1ee5L,0x559866a0b74f7c42L },
|
|
{ 0xd935191fdc85f22cL,0x5c3002d7c8ce3240L,0xecd278c198452214L,
|
|
0x665b3176821a3606L,0xce05a914baf26fb7L,0xa178860b60e4e8b8L } },
|
|
/* 27 << 35 */
|
|
{ { 0x135c82b55000cc19L,0x34537edf8b2c55b4L,0xfcb6aac2b37acc8cL,
|
|
0xa882e25e8ce8d7f5L,0x531756e98c7ff1eeL,0xdcdaced9ad6312b0L },
|
|
{ 0x309a469b7f3aef9dL,0xf306e32588d8772fL,0xe7e6f3abd4dc0d90L,
|
|
0x816b01ae49878940L,0x1cb084e84ba5e2c8L,0x395af25b005d08b3L } },
|
|
/* 28 << 35 */
|
|
{ { 0x3832cfd59093efcaL,0x3fda8380ed8b34d7L,0x874ec122e2bd4004L,
|
|
0x3761e9c44270b9ccL,0x6eb2fb1166e640d5L,0x2a45ad23e6dfd0fdL },
|
|
{ 0xdcb3272bf8dd082cL,0x7d84341f17486485L,0x0f46b1fda4ca2644L,
|
|
0x81a1ab1e82baf37dL,0xbb1d72713b322f65L,0x1571e326f4038252L } },
|
|
/* 29 << 35 */
|
|
{ { 0x4e00aa41d9acdec7L,0xb2b701bf9f80dff4L,0xc366ce97d5e71e0eL,
|
|
0x28c2b4e9ed09255bL,0xef54a1a535086ba6L,0xee2e43f2a1c8b39eL },
|
|
{ 0x346f22f5d9143a78L,0x71fc5c06f1053377L,0x1789f7644737b5bfL,
|
|
0xc9f83ee8b0df2648L,0xf91a29e9073ee793L,0x18eb801e3ab450a1L } },
|
|
/* 30 << 35 */
|
|
{ { 0x1c3df0914085f0b6L,0xc60c47f5cede211bL,0x7bdead8650b6e857L,
|
|
0xc68645be2cf9aad6L,0x8d970a94d01540f6L,0x9346f253782ec6a1L },
|
|
{ 0x3da31263c1b23981L,0x53076158dbabfb68L,0x22947b9f743dfba4L,
|
|
0x872e60061c56f47aL,0xe973d81c2b3b8417L,0xb98216184b1fed56L } },
|
|
/* 31 << 35 */
|
|
{ { 0x29fa699b8873de48L,0x64f9e1124932447fL,0x4fb0e009e4c20d43L,
|
|
0x748a0cdf78016262L,0x4891badb7bd23ea8L,0xf1300a437f56368cL },
|
|
{ 0x178efa9de8f1f8bbL,0xc31cdb4098a31dd6L,0xc2d5bfbad2c43f9cL,
|
|
0xf377e2cc8678d990L,0xd42d274808d19833L,0x2d72fd4de5ad5e63L } },
|
|
/* 32 << 35 */
|
|
{ { 0xb083ba6aec074aeaL,0x46fac5ef7f0b505bL,0x95367a21fc82dc03L,
|
|
0x227be26a9d3679d8L,0xc70f6d6c7e9724c0L,0xcd68c757f9ebec0fL },
|
|
{ 0x29dde03e8ff321b2L,0xf84ad7bb031939dcL,0xdaf590c90f602f4bL,
|
|
0x17c5288849722bc4L,0xa8df99f0089b22b6L,0xc21bc5d4e59b9b90L } },
|
|
/* 33 << 35 */
|
|
{ { 0x44e6089f006e422dL,0xb4a99bc45b029c6eL,0xd14bd00e6f289edcL,
|
|
0x8ebbedfa25c50773L,0x5bdad80851d3ade5L,0xe4e70c3094727960L },
|
|
{ 0x29b759e863ab2622L,0xe20ad36b134d5982L,0x27c8387f4070e06eL,
|
|
0x9fae222556593896L,0x299a0f0c3b199172L,0x476fe70977a39ca4L } },
|
|
/* 34 << 35 */
|
|
{ { 0xc91a3d2ef4d0d8a4L,0x450193a819e05a78L,0x0e59e0b89eec69eeL,
|
|
0x2ba20f00138fbf46L,0x5c9fea780e8ae694L,0x62c81c8cc6b73372L },
|
|
{ 0x2a1df446ff0997a2L,0x929364ab692bb930L,0x4c4a956436cb618cL,
|
|
0xc55020a0526be5dbL,0x151f18a02c64c026L,0x2ec5becd61724143L } },
|
|
/* 35 << 35 */
|
|
{ { 0x139c7d788713439bL,0x46f7bd4b1e19b1caL,0x74259a28b47977d7L,
|
|
0x89a912cb8ab1817aL,0x4428e45f06419142L,0x11b9c4836b34a2d5L },
|
|
{ 0xb613563a29487118L,0x81f4502ab6249a60L,0xe28685843d4ddecfL,
|
|
0x138c97297bd250dfL,0x733f2201aaac4593L,0xee6b85ad5d061887L } },
|
|
/* 36 << 35 */
|
|
{ { 0xbff288ed74006fd8L,0x388c5a34ded657eeL,0x47d400a2d61a2995L,
|
|
0x54c684af1eba1f65L,0xd1ba6975b1b4452bL,0xb23dda26f2f8283aL },
|
|
{ 0x6bff7acf86803147L,0x839571e5e8ea5923L,0xc89e1048dbc4ccc5L,
|
|
0x1fa0221120102232L,0xbf7b8f902d4e4406L,0x14c5de43576aba0eL } },
|
|
/* 37 << 35 */
|
|
{ { 0x6c55807bfd2f9b11L,0xb01d9f7239e338efL,0x94f6531135628879L,
|
|
0xae51cf0b0ec6f5b4L,0x387223cfd36b9719L,0xeeb02cc6f2fb192cL },
|
|
{ 0x867611ec43c9e89cL,0x5b15785f97930887L,0xb792b88b57ab078bL,
|
|
0x0c54de110bdc03cdL,0x5785811a30d0eee3L,0xb73bb98436b88b00L } },
|
|
/* 38 << 35 */
|
|
{ { 0x0d0ba3c06fba6f94L,0x7f7e0f5cf29713c2L,0xa8cce53ba6b94d6cL,
|
|
0xbea99382df40fd27L,0xb3ff1c56bcd4f8b2L,0x19124644418f108fL },
|
|
{ 0x6fc5260727c26f18L,0xbc5e23d682c7c8f9L,0x12aa5e8e099b8cb3L,
|
|
0x9d94d88614c579f9L,0x5c629d7a47395f32L,0x9cd280633efbbea0L } },
|
|
/* 39 << 35 */
|
|
{ { 0xf0bbf8e88edb7b56L,0x9a76ad71adeb43ccL,0xd99a92528643e982L,
|
|
0x6468ff05cf17f5b5L,0xe6589476d56b985eL,0xdca4273cbe446b3dL },
|
|
{ 0xd430e3a47b9dbac1L,0xe075c00f4cfe735dL,0x3ba43fef12395845L,
|
|
0x6895f0c3dcb49ce9L,0xd868006aa92843dbL,0x968a8ceec0d5bc9eL } },
|
|
/* 40 << 35 */
|
|
{ { 0xc0387b57f440fe92L,0xce8bad38e291c443L,0x022052e5f9e88be0L,
|
|
0x6f949fe261615c9cL,0xf4874e2d84725fc1L,0x06fb244b73a394ebL },
|
|
{ 0xb70553c678208bd8L,0xab1829c028704d28L,0x1453ee1a807b160bL,
|
|
0xa1da80c34649d33aL,0x072e02e056c32ee1L,0x79baa98f3f590646L } },
|
|
/* 41 << 35 */
|
|
{ { 0x1613a710b0fef3f2L,0x9ae438012edeec54L,0x07824d08579c3130L,
|
|
0xc2beaf806ba2b1fbL,0x7df3c459fc9e85e5L,0x8debf613dbd63acbL },
|
|
{ 0x2774ab78f04f3526L,0x36e7ff55a5285219L,0xf2adccaf4ab04c77L,
|
|
0x14add3d8aa43fbfeL,0x387e4965e3026ac4L,0x154801a1c77391ddL } },
|
|
/* 42 << 35 */
|
|
{ { 0x28687291933bc404L,0x6a13b0cc9ba35fa8L,0xd3d1746931c5d126L,
|
|
0x1c81ce5df9727cfbL,0x14f66be860b464eaL,0x0bbdefb8c10ea9f6L },
|
|
{ 0x5679a0e5e8d06c95L,0x380161d83dbfd6e3L,0x6cdd31f20523e6d1L,
|
|
0x2ff419e0c4b4c439L,0xc7439153e217782cL,0xb1b74383f6dc5d95L } },
|
|
/* 43 << 35 */
|
|
{ { 0xcf0d1d2d03746e38L,0x8476c982916e077eL,0x93de41516dfdc6d3L,
|
|
0x15010d26b78cf13fL,0xbab5a5de97cb08c0L,0x37f0673014a31939L },
|
|
{ 0x777c709f6819b0f4L,0xe3c2d2f7114a32e7L,0xf0227e19ec047092L,
|
|
0xe1416f34b817e1e1L,0x4d7db41419c6c3f6L,0xf12a13a9d01aecb1L } },
|
|
/* 44 << 35 */
|
|
{ { 0xa09e68e61f023abeL,0xbc432449aae2d6c8L,0x61e22f727cb683dfL,
|
|
0x0b5bbc0fd81a0e89L,0x18ea4e774581f128L,0x28df9961cd70a12aL },
|
|
{ 0xb0d3b19f8b8bc10bL,0x0805d1439844e7f8L,0xe3ed3d40675ab6a9L,
|
|
0x026d1200f75e2859L,0x1802457b8bb10969L,0xf94c62b3eadab8caL } },
|
|
/* 45 << 35 */
|
|
{ { 0x518e9c4220d03ce7L,0x6c44676187811010L,0x07ff38f99d9be611L,
|
|
0x5c2bac105cf0cfd2L,0x4e5cc677d5881c2dL,0x02dc395f08e39281L },
|
|
{ 0xc3ef99142044f4e9L,0x0203508c20c8c831L,0xd1276c030e0524c9L,
|
|
0x5525c0af5402f999L,0x5c9a43aa49c2371bL,0x6d7b6700d28cbb59L } },
|
|
/* 46 << 35 */
|
|
{ { 0xdec3ab0f7bae55e1L,0x6bae4baf56152625L,0x1d597c0c839b5d6aL,
|
|
0x243692a966b3b169L,0x37f2ca8eb01c6d34L,0x5baa355aae5c05baL },
|
|
{ 0xe0b84c28af384b13L,0x6a2c9386667cd513L,0xc361a75d78319608L,
|
|
0x0c317ac596ca528dL,0xe243aa8672f0a5e0L,0xedcf9f5fa1d1677eL } },
|
|
/* 47 << 35 */
|
|
{ { 0x88e5cf3f74a0a7d2L,0xa25a3883cac23d4fL,0x7be2fc2ba6eb3d72L,
|
|
0x188be28d391326cdL,0xeca6aa726f3db24fL,0x237cd6f70b9a11a1L },
|
|
{ 0xafeca5436fecffeaL,0xa32291510e6d18f3L,0x46699e2500dd8b76L,
|
|
0x5edb4b1a331eaa12L,0xecf6d8a472ce0658L,0xd91af8da6b80e9e2L } },
|
|
/* 48 << 35 */
|
|
{ { 0x7af5da7b63ec62d4L,0x74dc387261dbdee2L,0x7d08dbd360b519a4L,
|
|
0x4e785f79459ef257L,0xe3e7d5a485fa9e7fL,0xea60c815e9b5665fL },
|
|
{ 0x2e570d18c209caf9L,0x7bae108371818d1eL,0x5db42a0a398d749aL,
|
|
0x149740ff4f555604L,0x72e4f06bbcee0abdL,0x0ecc0cb581ad0830L } },
|
|
/* 49 << 35 */
|
|
{ { 0x43550eea0a34451dL,0x8b0b97e9c3aa33e3L,0xdd974528da22dbdeL,
|
|
0x0337c64dabff3ed2L,0xb50da9e9230cc211L,0x931f891c004d17d0L },
|
|
{ 0x8b7f9ccbff366019L,0x5483938033d76a4bL,0x52fceec1950ef740L,
|
|
0x5b19b50cd18125d1L,0xbbb661f55b9011c7L,0xfbf0ec747beda7fdL } },
|
|
/* 50 << 35 */
|
|
{ { 0xebca6bbec047276bL,0xcda078e05c3018c5L,0x4620dedda223af10L,
|
|
0x962f389ad02fd60cL,0x901fab93baab3894L,0x5ecbbd7506eab11eL },
|
|
{ 0x865dc95e62203b9cL,0x04a599844acf85edL,0x877e94647607236eL,
|
|
0x09592a5684609563L,0x6535176ace76d699L,0x44f2d997ce8812e9L } },
|
|
/* 51 << 35 */
|
|
{ { 0xa09c9ab62285b330L,0x6058d94a9b145627L,0x7b4b4141da3c3571L,
|
|
0xc9347a16033b665cL,0x95e9b4f01a33d052L,0x35520f3cd46c67b1L },
|
|
{ 0x24938cb136042a9aL,0x5eeaec9de73b7354L,0xed47914931f08616L,
|
|
0xb0187b2b713a2114L,0x03c49947e3b76d73L,0x79b5778a2e94fc7eL } },
|
|
/* 52 << 35 */
|
|
{ { 0x6bb19d2162de1ccfL,0x3810bdb3339162c2L,0xeb56c72b6aa09df6L,
|
|
0xac66c58d1d415050L,0x922cd7e74ad9cc85L,0x09e3585f91168090L },
|
|
{ 0xffc9a98d31b918a6L,0xc273e186c73c7513L,0xd506753f12a77342L,
|
|
0xe288a471e5edd613L,0x0f358d310cacf05eL,0xfbadfa2d9a63fcfcL } },
|
|
/* 53 << 35 */
|
|
{ { 0x020e282989cf155bL,0xa1fa6eaac7f481edL,0xba422e09c5c89724L,
|
|
0x43da4df7cad8186eL,0x1bea459cba3ca738L,0xe9f0afdd0c64bc9bL },
|
|
{ 0x4c3b3b8e3592686eL,0x7e6938a7b43ea3f7L,0x8e01a54e7ba7dad8L,
|
|
0x33ecd36ea9c68839L,0x1abd6e125e7e993bL,0x29947e126531feb6L } },
|
|
/* 54 << 35 */
|
|
{ { 0xb0fe9b7912a193a0L,0xfa19ad4be4bbd264L,0xd5bf0e5409918851L,
|
|
0xd07d8e5729cf45b0L,0x228e67cc7744259dL,0x786ea24843ed0fc4L },
|
|
{ 0x7f700231873cd08dL,0x394db4a70ef49109L,0x699047c06a8197f7L,
|
|
0xf5b168443021ff8fL,0x4c8bb55026621cabL,0x6f28b013065208f1L } },
|
|
/* 55 << 35 */
|
|
{ { 0x2fb3a7601f809545L,0x8006902ae93849c6L,0x37cc848c9bd9e1bcL,
|
|
0xf4cd31559d0f6340L,0x357772ac4baef442L,0x0f46d0f77d533f1bL },
|
|
{ 0x4121411fd9c12bd0L,0x304083dedb70e364L,0xff6b7a1ccecbeb3dL,
|
|
0xb444b5972aadc899L,0x29ec79bfdb8b3731L,0x864d8d917fbd8982L } },
|
|
/* 56 << 35 */
|
|
{ { 0xa79feacac241c5bfL,0xc86df4c017861e6dL,0xaecd1722a699282eL,
|
|
0xcce5e345a0464190L,0x0a79c23deca4f6d4L,0x64603ff16a6e7967L },
|
|
{ 0x02e24234aa7312c2L,0xa9e1fc7791a1b587L,0x1daef29f94526a4bL,
|
|
0xa7db710a62ead861L,0xb387fec78869446bL,0xee2171015db19f08L } },
|
|
/* 57 << 35 */
|
|
{ { 0x79a0feabe64fb245L,0x5799eea096a4e94cL,0x2592e7a333b063a6L,
|
|
0x2cac3c2ef1063574L,0xb9cea04a7f4755d4L,0xb8e40abaa0bf858dL },
|
|
{ 0xe1723d963ffa32a3L,0x6547b4402701eb1eL,0x16ec552a4da9b337L,
|
|
0x75f7f4a8fe0555eeL,0xf97e465014f1c2b2L,0x5495fce3d9ccf8a2L } },
|
|
/* 58 << 35 */
|
|
{ { 0xffd160fb62c1b457L,0x62efe01fc4d91f7fL,0xc54f75b5208dd413L,
|
|
0x089514d3e78124d0L,0x752a9ae8c2945054L,0x466636fbdbffa78bL },
|
|
{ 0x32936281a265949eL,0xd657c0f084b4d11fL,0x199d8641af455a47L,
|
|
0x1eb24cc7dbd9852aL,0xd2ce80f856bfbbafL,0x1b31b23ceb862890L } },
|
|
/* 59 << 35 */
|
|
{ { 0xc866d2a5fcd5aaf4L,0x4ac2b7f57e21250eL,0xa78cd3cbc50b4a92L,
|
|
0x2485c3435a5c541bL,0x555db4dc7ef371eeL,0xcd9d6d9c1304f782L },
|
|
{ 0xae86a22974b4d57aL,0x68c93bc8dd4cdd8fL,0x7b95411098b9fd49L,
|
|
0x0dd480b9399d8d4bL,0x0e27be29f2665c52L,0xce8a1ef9d920a5c8L } },
|
|
/* 60 << 35 */
|
|
{ { 0x10a6bd0cfc0395b9L,0xe30bf6d06a5e8107L,0xc8aa2483167930d4L,
|
|
0xee75885006e7e1c2L,0x4ee64cfcedcb7788L,0x9498e9bbf2f1d7ecL },
|
|
{ 0x084d2350ae0fcdb4L,0x4398ee677f4d25ccL,0xc1ddca395db85bfaL,
|
|
0xefd4819747961197L,0xbd16037f2265195cL,0x1c61a6fc56daae6dL } },
|
|
/* 61 << 35 */
|
|
{ { 0x640cf6b17f7c8c50L,0xdffddf2209d44051L,0x837275314e3c038eL,
|
|
0x3164d1875aa8d8a1L,0xb37590bcfceb1066L,0x5e4fab4200d489f6L },
|
|
{ 0xc1e5dca3f8105ea2L,0xfdd1b0751c7f8679L,0x571d7dd14f14ac54L,
|
|
0x84cc453155cfb741L,0x49d0b1be48823448L,0x8365f1f3f798b5d9L } },
|
|
/* 62 << 35 */
|
|
{ { 0x9f2409cb6a564a3cL,0x9266799ae5134e54L,0x39aa3697fac47921L,
|
|
0xdf3db1f32c0b4dbdL,0xfa37a085f096ec03L,0xb99cfe05afaa0f3fL },
|
|
{ 0xc9e00e43df458860L,0xbeb7e60ace2bb0b0L,0xdfe2be57cac8d7e0L,
|
|
0x6ec03d799162b2ffL,0xdfe3a6225d1122dcL,0x9f04dcc8b6014310L } },
|
|
/* 63 << 35 */
|
|
{ { 0x30471bf9b42ba5c0L,0x19073fd0c9d26763L,0x92817e8059c1017cL,
|
|
0x29248f743da195b3L,0x029d7e7be928767bL,0xf1a3a08a049a0080L },
|
|
{ 0x8ec4f3e6e20c1d68L,0xae815a11f3ad30feL,0xdd0a6083f76f43afL,
|
|
0x197d29fe49465bebL,0xf1a40ae996316f4bL,0xec47d65e59bafbc0L } },
|
|
/* 64 << 35 */
|
|
{ { 0x6f57752951c2bb65L,0x4a0c1c284b874bdbL,0x19a1842778b96c6dL,
|
|
0xa674f9922f593505L,0x5abeeec46b7209d6L,0x42d15d0147cf5fffL },
|
|
{ 0xe24509b7b49e3b4eL,0x81be939c639ee6e8L,0x7f7daf595761e8e3L,
|
|
0xed5cfcb8d420a288L,0x365b29eb7a0ff696L,0x7d14680599a1ac8fL } },
|
|
/* 0 << 42 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 42 */
|
|
{ { 0x9ee1ec3aadcdaa68L,0xd98c498fdcbb6548L,0x32b9737588102ac0L,
|
|
0xdd296cf9c08527f4L,0xb74f8145fae3dfbeL,0x84131eb96cd7cc4fL },
|
|
{ 0xa0f2fe7a927ff15bL,0x6b0ade4deee1a4b4L,0x6e7df2d40eeb90a7L,
|
|
0xe2f46e20be4de684L,0xcd28feba3fdd06bcL,0x8e4205aee6d6d9f6L } },
|
|
/* 2 << 42 */
|
|
{ { 0x35d47426f78d33efL,0x4af25db28440c42cL,0xbd6a15e22e91bf5eL,
|
|
0xe366a84cc08b6b1aL,0x759c122f55b97de8L,0xecec558f08a03f29L },
|
|
{ 0xdcc9fca2ea9d2060L,0xb3e49b8e9f361fe1L,0xdeae39029b59cd04L,
|
|
0xf532ede06f5e5bd4L,0x84fbeeb936099f4dL,0x73576b1f088d2052L } },
|
|
/* 3 << 42 */
|
|
{ { 0xee43828c6b512bc6L,0xf73dc9f550b91e60L,0x68f23f30f5dbde6bL,
|
|
0xaf2fe9e3ddd15e00L,0xfbf34dae86578d49L,0x689796556c130010L },
|
|
{ 0x137a5fc309942897L,0xff1f0bfe9959f06dL,0x2dd0a04abd7ee14bL,
|
|
0x59c46072e54e2161L,0xf470bdaeea7518adL,0xce556e4340c471cdL } },
|
|
/* 4 << 42 */
|
|
{ { 0x2ba8c79022b25f2eL,0xf4670a511af0f4a8L,0x6842f36a2fc2451eL,
|
|
0xfc5c9558bb91e1e3L,0x035d1dfcc3ead762L,0x3d0721cb031e5556L },
|
|
{ 0x3af0cc813af18a2eL,0x7888cee2bd11a363L,0x80c3de0a6ade1d12L,
|
|
0xe8c3a5bd93b2dcb5L,0xe3adbd7c90a2214dL,0xfe8646d51192948dL } },
|
|
/* 5 << 42 */
|
|
{ { 0x9214cd4bf1c7ed94L,0x4887c7c63738f386L,0xa72ba72bf623e542L,
|
|
0x3c52a464f67d6004L,0xcdb6171d09b9a4ffL,0xe5eb77d160aba627L },
|
|
{ 0x7aa9836f39d6afdcL,0xa3fa3a520e0a1e18L,0xe90bd925dee3a4c4L,
|
|
0x47e8eeafd9a94dcfL,0x34302a4921e16feaL,0xe32a62eb8ae23949L } },
|
|
/* 6 << 42 */
|
|
{ { 0xd1d70db31df1d1f2L,0x22ebc9bd9fec1f42L,0xde5ac585d11d3205L,
|
|
0x0e4584ab282d4d6eL,0xc87607928f78b85bL,0x48a85682af1fbb6dL },
|
|
{ 0x64d012ceae0947bfL,0xab792bbf25e22366L,0x250d40d4a3a030deL,
|
|
0xe9b49f0877e26b9cL,0xe7d30c828c0f2249L,0x2b77b40b97c676a2L } },
|
|
/* 7 << 42 */
|
|
{ { 0xa89144b89efc8fe2L,0x23625c36e13b79c9L,0x4fdea1d3a047ad35L,
|
|
0xd0b0ee0d4ae78e01L,0xc224b3f3eac4e606L,0x4360e8acfa41bd81L },
|
|
{ 0xb2c69238062437e7L,0x86ce8de0decd1245L,0x2ce4be3dfa9d07bdL,
|
|
0xfd09aa853d268d06L,0x4cd874264a162aafL,0x1b28f72e9d45e849L } },
|
|
/* 8 << 42 */
|
|
{ { 0x65026297ba958101L,0xbeb4adf98eef151dL,0x623763a460c8bbf7L,
|
|
0xfa8f5ad78b2a7120L,0xfd744bdf085497e7L,0xf9b6f97e2ba35618L },
|
|
{ 0x0cebfe9df8a15e86L,0x47a6d01329576088L,0x655817a3fcf19627L,
|
|
0x30ab44f7c2f11261L,0xbb001c9dddf2c850L,0xb45c7eff073260c3L } },
|
|
/* 9 << 42 */
|
|
{ { 0x609a02d031716f88L,0xdff6246c45421ce4L,0x544f3162142838d9L,
|
|
0x8842dcbe36b57d38L,0x2818919c57f561e2L,0x87f5acca318373aeL },
|
|
{ 0x42773fb72edf1501L,0xff92c38648e9d8a3L,0x21a81668ccd5a860L,
|
|
0xbac5cf837328cee1L,0x7441f749ddc53a05L,0x987d3a1cb5abe243L } },
|
|
/* 10 << 42 */
|
|
{ { 0x3b7c44f8fb90e50fL,0xeafeda047cc384fbL,0x9a33e377de65e34eL,
|
|
0x303f568095094a58L,0x4c0f2e932292809cL,0x920c9c12160b30f2L },
|
|
{ 0x31d14e1414b268d4L,0x9964173f1eadb1dcL,0x8e22b362eccb0f39L,
|
|
0x81dccdf83bf9ece1L,0x8e2fda43a40503b1L,0xdb647ac13e112199L } },
|
|
/* 11 << 42 */
|
|
{ { 0x9c23216f096c21adL,0xae259a6d41fa37f2L,0xefe0a8c9efe96f6aL,
|
|
0x5631701dd6a27744L,0xed8d0219b3017563L,0xbe2723bca0867a0cL },
|
|
{ 0xe02bcb56687b62cfL,0xf26c0f77b96f66a9L,0x43e46251fd16fa3bL,
|
|
0x206a180a44033302L,0xcfa96b556121888eL,0x50567a7789dabe7fL } },
|
|
/* 12 << 42 */
|
|
{ { 0xb08fb1175cf3e702L,0x7379b1978023df0aL,0x73aefc7b6f954966L,
|
|
0xc0fb886f76bd243cL,0x871eacc5ce09d5a8L,0x9f55b0a4e773f049L },
|
|
{ 0x92945c84415d725dL,0xcd57391f0112ad84L,0x4762bc1d0509d73fL,
|
|
0x15cf97f10f1af175L,0x1f855695328c160fL,0x32cb87263b439f0cL } },
|
|
/* 13 << 42 */
|
|
{ { 0xb27e344ae6361abdL,0xa53690eb474027a8L,0x500db02d683a8ef4L,
|
|
0x547ecd17819df66cL,0xc35cd4cc91360e21L,0x6ea003a16026dfedL },
|
|
{ 0x45e77cda22395207L,0x1e8e103f91264683L,0x130f2d2b3bd6328eL,
|
|
0x6ae25c819af8973dL,0x6b0f90a0d32d7134L,0x0280a95755c62195L } },
|
|
/* 14 << 42 */
|
|
{ { 0x23781958cd8bb5aeL,0xe3d30c5417dd827aL,0xf974e0076bedf762L,
|
|
0xd8154b6273264accL,0xf10fd9bb167b9396L,0x967c5acbe9652a0cL },
|
|
{ 0x46775025a28fa76cL,0x17ac7cb32ece9d3cL,0x5fd8968ce04a833eL,
|
|
0x96ed5b49fcd20a43L,0x1d209e85289f9c68L,0x4d7473518ce51950L } },
|
|
/* 15 << 42 */
|
|
{ { 0x6f5c8f3475214c1eL,0x3d5560bae192d11eL,0xd8a63ff0d7af2e6fL,
|
|
0x5fb858be9069fe09L,0x83956dcd8cc663f9L,0x52d30c3b838bce30L },
|
|
{ 0xf354f6d75569122aL,0xfcef54d1fa68f566L,0xc75b01e79020dfe9L,
|
|
0xaac66895774b952bL,0xb2a58a299468cebeL,0xa994a3b487c81a42L } },
|
|
/* 16 << 42 */
|
|
{ { 0xfa7d1236e2319f38L,0x9ba1a1c0a551d3feL,0x9ea27288beb1282bL,
|
|
0x1c069efa07fee8a9L,0x5749c7b55870fee9L,0xbedca76fafcec6faL },
|
|
{ 0xa3f8f1b14c63c5e2L,0xaa1bb15694758ac3L,0x753329a9b59dc06eL,
|
|
0xfa8e5f5b98a92c38L,0x6b6f46fd3c2b4662L,0x716f41a1ec04c6c6L } },
|
|
/* 17 << 42 */
|
|
{ { 0xa882aa6389201dffL,0x3441fde55bfcde3fL,0x220cca60cb543f54L,
|
|
0x2af1cb29d764d74bL,0x47ae56d0517617c6L,0x05b98dee0342bf55L },
|
|
{ 0x214f4b11b4e28cfaL,0xa6ebcdf5093691ffL,0xe49ca185f61d29acL,
|
|
0xd304ac40fd8c9018L,0x196161a0f889b7c7L,0x3b704d52dcfc6c91L } },
|
|
/* 18 << 42 */
|
|
{ { 0xb405aff88886500aL,0xd88008bebeeabe24L,0x9457cdf30bc931b2L,
|
|
0x8e5fd378f4c5aac1L,0xdec408107bc2bb98L,0xf86424c598b16f6eL },
|
|
{ 0xb6af27b634df75d8L,0x1bd3082125943a31L,0x51176cfcec993c24L,
|
|
0xcfc1433accbd192dL,0x324a5e1e2993be83L,0x34169fc1d06215adL } },
|
|
/* 19 << 42 */
|
|
{ { 0x41aa181ad260133aL,0x627dbe0346e236d2L,0x717fba9cfb8cc72bL,
|
|
0x6e21d03d69bbc9e7L,0xd903e845241abdecL,0xd17879fa3c20cb6eL },
|
|
{ 0xe6141bd463a360b8L,0xa784a651e86cdcb9L,0x80fe8dd11f9147fdL,
|
|
0x641241c6de155420L,0x1caef32ba71f3546L,0x28c3a51a79fdf82aL } },
|
|
/* 20 << 42 */
|
|
{ { 0xaa16c27a84a3d033L,0xc207a4990c11c9caL,0x7ae2d193aae87c9cL,
|
|
0x125ab459916d634eL,0x02ded714cfa65b4bL,0x6efe84944e212e22L },
|
|
{ 0x97c48a1888766168L,0x663ccc9dd9c85b9aL,0x6fe8b77b2652f501L,
|
|
0x1daa602d078efd38L,0x35885364dbcb8299L,0x25bd1826b8240626L } },
|
|
/* 21 << 42 */
|
|
{ { 0x6621d504af748cb6L,0x3940e5e08dacbf89L,0x9fdd8eeaf546daffL,
|
|
0x18fc70d4b42f9507L,0x09bc4af9a3fcc42cL,0x9199b08f4165304cL },
|
|
{ 0x039d45bed3d0e9eaL,0x0963ede2a6464c2bL,0x77f47a62b5215830L,
|
|
0x3a0ce54c3e540cdeL,0x34cf6031b2be8f77L,0xeb143e60201083efL } },
|
|
/* 22 << 42 */
|
|
{ { 0x21404da5442467a1L,0xe73047597f7023e0L,0x836439a8213ff492L,
|
|
0x105fe0e37ca0fc37L,0x73835ac85b303c34L,0xe29d830e0057ac8cL },
|
|
{ 0x457d083e3b5f41bdL,0x228b26c357341890L,0x8e8f194c4109bf9dL,
|
|
0xd032cf2b6e4a39e3L,0x012e9515d88f9292L,0xd1a4cd32e957e163L } },
|
|
/* 23 << 42 */
|
|
{ { 0xec56b72f4ab23680L,0x7cb58e727f22217eL,0x6e98647bd045d18dL,
|
|
0x2b7c9caa9a73b956L,0xc414eabef120122aL,0x45d9036bb6e1b134L },
|
|
{ 0xe963c88388abd93fL,0x257f3b619180cb9aL,0x915fee5cb6ca7abdL,
|
|
0x2166402cdb7b1bb1L,0x636f85f6541614e4L,0x81f91a1849d9e527L } },
|
|
/* 24 << 42 */
|
|
{ { 0x0430af7759b11c7aL,0xf71cc5b1d4f47acaL,0xe1a7905f12e9190fL,
|
|
0x1c689b7012db9e14L,0x6bdd3dc90abaeeacL,0x97f1c244504f0319L },
|
|
{ 0x874afd61a7a54b51L,0xd4604ecbe3d979b8L,0x0d33eee1ebf4aab1L,
|
|
0xa3631cac1aa49fe6L,0x0d8340fbf2217cfdL,0xf6373284423b7e77L } },
|
|
/* 25 << 42 */
|
|
{ { 0xc6cdb5ba6f7972d7L,0x7ac7d438907d281eL,0x9160a8f5c01044ddL,
|
|
0x3d74d7eac19ba8f9L,0xf7c7f93f112433e5L,0x2ab355a2012236d3L },
|
|
{ 0x1168ce913009447eL,0xbefde8dba26e3458L,0x6f9837db49ec8169L,
|
|
0xb4d1e35c86782931L,0x41440a76d711e5f4L,0x8fc7a5aeacb5cd89L } },
|
|
/* 26 << 42 */
|
|
{ { 0x73719fe8286e8aa5L,0xff8663419982a4a4L,0x684511702fb2db95L,
|
|
0x4f1c0eab01d80ea1L,0x2bc50da5530af14eL,0x00d1d5b506071a95L },
|
|
{ 0xdb618990a6b374b1L,0x06ad90084e79ebe5L,0x281d01a424a63b70L,
|
|
0x87dbd6d5348625fbL,0xdc90f0bef576b1a9L,0x1a9ef270987747a3L } },
|
|
/* 27 << 42 */
|
|
{ { 0x135e416ed651b9b0L,0xe55f7f104a5e7979L,0xe55df2550f0729d2L,
|
|
0x666f2744e33ada22L,0x4968bb982cbcb4a8L,0x7ad4e7811028dd81L },
|
|
{ 0x0e59f0dcd7ca8b60L,0xd71628cdd2a600b2L,0x7eaf6d308b0af99cL,
|
|
0x6224b6452900105cL,0xe0513f4388650f12L,0x2a63822a6f6c5234L } },
|
|
/* 28 << 42 */
|
|
{ { 0xf8c07373078a045eL,0x998b2d52a81724d2L,0x2b97faf1a6305a28L,
|
|
0x5bc61f67f3e0f93dL,0x7238583cd7aeb8c1L,0x851ecc4b39f5f24bL },
|
|
{ 0x1cc8b4689992c20cL,0x73168a863c8553dbL,0x1b9a5f95ba2641adL,
|
|
0x87a0c362ce9d565bL,0x07fb51b2e1eedc62L,0xdb300ac6a973903dL } },
|
|
/* 29 << 42 */
|
|
{ { 0x789ca390f33e8516L,0x6a7f594cdee7f1caL,0xb4b6b9ca988005a6L,
|
|
0x14f7b4806cad024bL,0x682a86285a576b68L,0xf188c74e40e1984dL },
|
|
{ 0x3584b5e6bf6f19c6L,0xa350b1d2b7467bf3L,0x3b3bb966aa3d1266L,
|
|
0xebbd2c782804d8a3L,0x91a272d36a9caf4eL,0x553ada4158fa7041L } },
|
|
/* 30 << 42 */
|
|
{ { 0xb564a0d9807e30a8L,0xaba07b1534a637ccL,0x010e76c5840d8e37L,
|
|
0xb6dcb9ac95f6765eL,0x2f5f8fe103b3ec08L,0x10c5a24fb48363efL },
|
|
{ 0x5ddacb2709c4dc1eL,0x8e2884b1e03bafc5L,0x84d56df3cfc2d599L,
|
|
0xc8e2da84ab78ec0dL,0xace4663f900084c6L,0x98d9a1df5d49f42eL } },
|
|
/* 31 << 42 */
|
|
{ { 0xb10ca6eea690d9c8L,0x0b8b39efd5e0d490L,0x2685d320e63807d4L,
|
|
0xca40d0ee83116ce2L,0xe1e1434fca51b48dL,0x178a91afeddde4a9L },
|
|
{ 0x64f59e3fd0dace59L,0x57b33c26278b1820L,0x2ca13b041550875aL,
|
|
0xb21f675a4e0db4aaL,0x2bbb3edb0216d3c8L,0x7f39955b96ec8017L } },
|
|
/* 32 << 42 */
|
|
{ { 0x78a53b5a9563e3bbL,0x19c75eb286af355cL,0x3520f427019a6f8eL,
|
|
0xde6fcad6dc3ad0baL,0xfec96e4f79745b7cL,0x5e566bbdb133f2dcL },
|
|
{ 0x50088a2b26561be7L,0x16275b4cc5fddfc7L,0xf21332ff23ae4b9dL,
|
|
0x8cbc659e85246712L,0x27fa9c8df50b515eL,0x25ecf745494ac8b7L } },
|
|
/* 33 << 42 */
|
|
{ { 0x7cb130e0837ab43fL,0x8a1f00127b9f6c17L,0xbf827f6d17fa5e12L,
|
|
0xc181b1264914a231L,0x8ce70fb6986288a8L,0x9832863fcd1c276eL },
|
|
{ 0x738e99819622ecd1L,0xdfc1b43cb73807abL,0x7254b4cf1b673290L,
|
|
0x2d689f38fb20f902L,0x86460de83c34960eL,0x8453896aed8f62e0L } },
|
|
/* 34 << 42 */
|
|
{ { 0x9f74efc606f4904cL,0xa280e4c26d3bc556L,0x974f9bdb75975ee2L,
|
|
0x1bc0e7fb6dacde9fL,0x2a110d4c49649375L,0x045432c09090d834L },
|
|
{ 0x84295a20195083cbL,0x92ea17cac7dcf71bL,0x3acced0be70be8c7L,
|
|
0x3703dfc007e28816L,0x37fbf2d1e869fb8eL,0x8c6b0bbef9c35ff8L } },
|
|
/* 35 << 42 */
|
|
{ { 0x04a991812f1d2778L,0x0d78573685b91ae0L,0x8c32d6046a5252a0L,
|
|
0x12b043131a0df85eL,0x40c4db631ee669b6L,0x0f499408f18f5f9cL },
|
|
{ 0x0dcdefabbfe9a187L,0xbd371c45ca650d7dL,0x33819eb00a36748bL,
|
|
0x82d1af1f29034844L,0x301f906d96257b2fL,0x862728ea9395c666L } },
|
|
/* 36 << 42 */
|
|
{ { 0x33a2194f40175152L,0x0f7ddc1dbb13f08bL,0x7c08860850b54274L,
|
|
0x7ebb2c11e41f0795L,0xf915683fbe20d37fL,0xcbcc14889daacec5L },
|
|
{ 0xfb02c20fea459050L,0xe964d76ad5815aa3L,0x0e009be9496bbf2dL,
|
|
0x8233690eb42d0f7fL,0x98ee83d49168eb0eL,0x34c3b6f3621fa292L } },
|
|
/* 37 << 42 */
|
|
{ { 0x29555d79b0221994L,0x1dd689dd4c9e8f29L,0xcb83ed2c853f5261L,
|
|
0x04b1475e0d9b0670L,0xa28b15e7df2ec34eL,0x094409b5e60a168eL },
|
|
{ 0xe4b9fd0e16ed42fdL,0x02f97e84a138f2f6L,0x91dc216ce13520dfL,
|
|
0x59564eda7a245e5dL,0x825278be8478befaL,0x69daadd20328c4d1L } },
|
|
/* 38 << 42 */
|
|
{ { 0x6ffade389995db43L,0x88974055790f4b92L,0x082e5add525d19e1L,
|
|
0x002c414897bd9931L,0x3f093b3b5461cff7L,0xafc95b0042b8d3f2L },
|
|
{ 0x0a8f7687a993155dL,0x1edfdf616c2bb58aL,0xb5be2d4fc44049e4L,
|
|
0x6fd505bb8dfdf4e7L,0x5386f02a41af5871L,0x8178817569121027L } },
|
|
/* 39 << 42 */
|
|
{ { 0x1deada722706171eL,0x1baf4c9aee773c6cL,0x458efac06977d673L,
|
|
0x1f2c2f38646e29b5L,0x36ece91a53323300L,0xab51a49bc4d598e8L },
|
|
{ 0x7802760ed8e41d8aL,0x2996f790587425a5L,0x227165b73ca21bedL,
|
|
0x0d9e5c5283536ec3L,0x6232f2e089701806L,0xc55e80a2894e2577L } },
|
|
/* 40 << 42 */
|
|
{ { 0x437b7224641e3bd1L,0x84e39f7980a58460L,0x68e5292709759523L,
|
|
0x0176a3ace77f5904L,0xde92fb15e151e242L,0x79965c9aeb1438d4L },
|
|
{ 0x318a810a596700b9L,0xa8a6ec57c2198cbeL,0xd7709aaabf030fd2L,
|
|
0xb432023472f5d326L,0xc9945214b03bce50L,0x0bc06d9bd4ecba09L } },
|
|
/* 41 << 42 */
|
|
{ { 0x30630eefaadf21b4L,0x94896f68042fb57aL,0xe678fc3eb312e7daL,
|
|
0x325cd2bc5c94c991L,0xd4eece20bea4e518L,0x9d9d65e925eab2abL },
|
|
{ 0x5439c348676454e8L,0x9eb68953be1e48ccL,0xbeea9da27b625a31L,
|
|
0xbd82c6ee48cc200eL,0xba9fc94444b9dc77L,0xb31bdebe1eb9283aL } },
|
|
/* 42 << 42 */
|
|
{ { 0x1ac1a09d07abf58bL,0x7372e532b5770f9dL,0xe1716687c12fe180L,
|
|
0xd91f4d36c715009eL,0x5d8885cfd6fe1cd3L,0xc0ab5a13aea65e52L },
|
|
{ 0xa5fe05a0838e5e05L,0x590cc325971fb33fL,0x3bd8234a4653bf57L,
|
|
0xb83300373708c1aaL,0x27453d3b0e84e8fdL,0x9dd3f05399cf918fL } },
|
|
/* 43 << 42 */
|
|
{ { 0xaf6f26c3a36468a3L,0xcab875f28d9fc8deL,0x0209b1ad52f4479dL,
|
|
0xc9941cb5459542cdL,0x91603260a0212b68L,0x98018317345673edL },
|
|
{ 0x2b02a35ef98b810fL,0x15953f78b714fb32L,0xf9f9c61eb71a4b4aL,
|
|
0x959b1473a8505b7aL,0x331d32cb4c6ec97cL,0xb1d2dd44e49f189aL } },
|
|
/* 44 << 42 */
|
|
{ { 0xdfb0508345c0a2acL,0xd13790035eacfb2fL,0xe9872d766a2e126cL,
|
|
0xd2a89cbd39a02d27L,0xf45baf72d754b7c2L,0x37985ef8c6c61bafL },
|
|
{ 0xbbcd3ef2da1c46b1L,0x5af5dda43a355d83L,0x9f7ce4281d67a984L,
|
|
0xf19526926fa33654L,0x2abccb55567b3b71L,0x1b3704f3300cf29fL } },
|
|
/* 45 << 42 */
|
|
{ { 0x9dcfaf21712af69cL,0x26de8fb05291cd70L,0xc778294742072171L,
|
|
0x889b9fbc8c617e24L,0x5971e60cc2926862L,0xdd8e70bddc022533L },
|
|
{ 0xc783e1e30a369db0L,0x37f562ab07b2bb92L,0x5043f3d40c060f44L,
|
|
0xa9650f47a3e17ac4L,0x3b8cd7ad18010ceaL,0xeed5de39969849e7L } },
|
|
/* 46 << 42 */
|
|
{ { 0xf93c3ccb6044ade6L,0xd14a13f8fd376746L,0x1fc20e6fd718a98eL,
|
|
0x9f63c6673e31573eL,0xe99b7693a8e0c66cL,0xdad4615c1e5b5f5dL },
|
|
{ 0xcbdb7200ac98f5a3L,0x31414469668ab045L,0x82e92df9bacf0ac7L,
|
|
0xa61f4e8371bfdf94L,0xce8cb699d1bc5deeL,0x42da8ac72f2f837cL } },
|
|
/* 47 << 42 */
|
|
{ { 0x0b6252fc32a4e8a0L,0xac1e457dd7170402L,0x76faaffeb121e40fL,
|
|
0xd2dc3cb84ddebd9aL,0x303e47cf362348a1L,0xe37e824a829d9806L },
|
|
{ 0x419cc2cc7c2ec135L,0x3eab37024cecfdceL,0xf0c9f19088403d18L,
|
|
0x73c8984daf61b6a3L,0xa2d44d9e00c232a1L,0x61fdf4883cf1cecdL } },
|
|
/* 48 << 42 */
|
|
{ { 0xa1972c2196fffb94L,0xbe04093099d7633bL,0xb116ff407e23d66eL,
|
|
0xcb12b2bb949a19f1L,0x75df10ee79e49e91L,0xa3bf90764890bcf4L },
|
|
{ 0xcbaa76a609a30252L,0x17c224a90ee5728eL,0xcbc56e5cf4f3f4cbL,
|
|
0x8a07110f4fe868a5L,0x23289f2125e110a2L,0x0289c12bd7693c45L } },
|
|
/* 49 << 42 */
|
|
{ { 0x4a9c6f8bea96a0f4L,0x78262a3499e3aaa3L,0x513a8e2028b2634bL,
|
|
0x5ba40287d85d74b0L,0x5702d11d440fcbbfL,0x1933c88a0df91fbdL },
|
|
{ 0x642247909a0aff2aL,0x85dc2ca13734398cL,0x1009884fd7aa787aL,
|
|
0xc666a62a0e73f4f5L,0x491bb941cce66210L,0xda8e896bcd173443L } },
|
|
/* 50 << 42 */
|
|
{ { 0xdc9b37a7c6e32022L,0x158cd4bb342a148aL,0xd62d371cf06287a0L,
|
|
0xba027eb6e9fe0a01L,0x8e7c6f5372017d09L,0x13c5d6ce9381d9c7L },
|
|
{ 0xbd0bc2d46e32f045L,0x52cf0f2554ab7f2aL,0x2e674e50085643f2L,
|
|
0x77bc15aef1662819L,0x57f9e3c4f2ebe66eL,0x839aaebadd284956L } },
|
|
/* 51 << 42 */
|
|
{ { 0x752bc171ed9d735cL,0x76d96d3419ad5c26L,0x9549ad3e25c1d83aL,
|
|
0x8f6fed53cd460d20L,0x04504f7c7b619b69L,0x68265559c566f393L },
|
|
{ 0x5e39e108804598edL,0xace859b01f4538edL,0x4b8503070c85e5daL,
|
|
0x9f087821abcd4ecaL,0x126d3850c8d0def4L,0x66971fe5263457b2L } },
|
|
/* 52 << 42 */
|
|
{ { 0xa82ac9983a4bc15bL,0x28697435c930e4f1L,0x191ebdb6b0c9cef3L,
|
|
0xff05f8e875748872L,0x5b86940237343b20L,0xa7bce94beedfe44fL },
|
|
{ 0xfc271e2778f4e1fdL,0x652c5a187734db66L,0x108f61c87efc9a9cL,
|
|
0x01db328970ed1dc1L,0x2bc509afd249f61cL,0x0d2e6b4cfeed393dL } },
|
|
/* 53 << 42 */
|
|
{ { 0x691199d77a477295L,0x1f0679a661746b75L,0xf3a51493c9f936d7L,
|
|
0x1fcb336a445af5f6L,0x9880cdebb94ce08fL,0x784fa04a22a6b57aL },
|
|
{ 0xc85fe18caa97c3bbL,0x27294a3baabe9b50L,0x9418a5b7b673c915L,
|
|
0x686cd97a15dceed5L,0x6d1c9dc70f22ae6aL,0xed88e02dc02212d3L } },
|
|
/* 54 << 42 */
|
|
{ { 0xa62c358dcf616234L,0x85402ffad40aae7cL,0x315ce9f151a7614aL,
|
|
0x6f7e796f5d0c7d7dL,0x73bf57faf3444d22L,0xb5e71e7a224b77c0L },
|
|
{ 0x94c40681541ee741L,0x40c97253d6837e1bL,0x1058fe7bb1f1c742L,
|
|
0x3206256f9b24d65cL,0x0abb12a78169ba8dL,0x01fcdb7beae85db9L } },
|
|
/* 55 << 42 */
|
|
{ { 0x868f294309fdbd8aL,0xd9c11e7ebdd6c274L,0x3be4d8e7fdcb4fb7L,
|
|
0xcd8c40ad17305d10L,0xf12c97642abde5eaL,0xc9e16d8256776e80L },
|
|
{ 0x279c0248df05235cL,0x4bdd8b136d8e4b89L,0xab8bbe8d7c47d2c5L,
|
|
0x12ba8b9e255c665cL,0xd585ce64d140a518L,0x55947e69eb4d353dL } },
|
|
/* 56 << 42 */
|
|
{ { 0x06ba6db1f184c91fL,0x3c0a348a45fd0382L,0x0d535b6e4434b527L,
|
|
0x7bbfa2c8692bae0bL,0x5c59a08ebe7fe51cL,0xbaa7d2be36e80cb8L },
|
|
{ 0x8a42d8d1bed3cae8L,0xd9e0bc0d15ff4962L,0xe51fce93644c75ffL,
|
|
0x40222561b9392d63L,0x8ab1d286023b4787L,0xfa85c220a1b3190dL } },
|
|
/* 57 << 42 */
|
|
{ { 0x294845c28ed1d81eL,0xc0402af2dbe7fdbaL,0xbb56d86d67abe6a1L,
|
|
0x2e61f65b2ed330e4L,0x2893eaebffdf0fd1L,0x06cff97a75fb77dcL },
|
|
{ 0x2911ebac1c90fe64L,0xd9c40d77e5ee3458L,0xf5b8b1d4b355f191L,
|
|
0x5be71a4ef365bc6bL,0xe2db432f5277b244L,0x3272a28327235b87L } },
|
|
/* 58 << 42 */
|
|
{ { 0xe5105755e6b16cbfL,0xba9fb47b536a49f0L,0x03ac0c10c75ad751L,
|
|
0x9090bc328a2d65a0L,0xcecc7202852b3d23L,0xd214f70128f67958L },
|
|
{ 0x379899b1f3695cabL,0x8f3d02e9bd3342c2L,0x9870a7f9e24e7bc1L,
|
|
0x7277e115f723893eL,0x6932ceef0f6f1936L,0xd0bf06dde171306dL } },
|
|
/* 59 << 42 */
|
|
{ { 0x815cabeb17832ce7L,0x65afc856a2a4864cL,0x9fe4ae1aa4939a4dL,
|
|
0x7005cbd90729a3c0L,0x887f0cca791e8ad6L,0x55cad97a85aca45aL },
|
|
{ 0x3e89d294493c7dcfL,0xf4ae5277ae8ed154L,0x507a3fd0a08fbcdbL,
|
|
0x4df3c552f86677fdL,0x6529f9ace3a82131L,0x09efe1fba53a7c67L } },
|
|
/* 60 << 42 */
|
|
{ { 0xbbcfa42d21fe8f67L,0x82983012de2be980L,0x88bb9704aa8e17a0L,
|
|
0x100ad5e784772203L,0x2867168965479d29L,0x0334f9c5c2d9d5d3L },
|
|
{ 0x49032c1a83a6cf83L,0xc257b0901dad479aL,0xf64177dea7e3636cL,
|
|
0xb2b5747874a315abL,0x210b11cda170ccbcL,0x80509b7480d80177L } },
|
|
/* 61 << 42 */
|
|
{ { 0xe98ad30696993a74L,0xa7dc8330f0484940L,0xc30319fdd61b83d0L,
|
|
0x76e2755809873771L,0x33f4f43ecaedda98L,0x68d5ffe3639c8d3eL },
|
|
{ 0xe3cf3b850059b2d9L,0x7f3ecb2f6a3d057eL,0xb569c24b9b8b7466L,
|
|
0xeed92f2ac38ccd58L,0xc16a4e8ce765a2f7L,0xa3a7b6552de9cb38L } },
|
|
/* 62 << 42 */
|
|
{ { 0x496de6fa0640df83L,0xa4e500a36c77c97dL,0x45609036947aed3cL,
|
|
0x0edb9422423fc5d8L,0xd0c01b2e68f70746L,0xae44ae0e6d77f3a3L },
|
|
{ 0x7cc7e90635adba9cL,0x107a3b46a8413303L,0x9e3eeab98916817eL,
|
|
0x1a99dab86fb74601L,0xb4e8466c1064b039L,0x249149146fcbadeeL } },
|
|
/* 63 << 42 */
|
|
{ { 0x89643fa624798452L,0x179b3bd76ee52833L,0x343096e54430c6b3L,
|
|
0x589dba3323461536L,0x59073225c3433575L,0x540f9ce317d80d42L },
|
|
{ 0xcd04b14d3aea6c82L,0x9be179b0efc9f455L,0x0ad6fb0791e57cbaL,
|
|
0x33894fa262706b10L,0x2cbc270886bf6926L,0x2cf067e64ea48c6bL } },
|
|
/* 64 << 42 */
|
|
{ { 0x298647532b0c535bL,0x90dd695370506296L,0x038cd6b4216ab9acL,
|
|
0x3df9b7b7be12d76aL,0x13f4d9785f347bdbL,0x222c5c9c13e94489L },
|
|
{ 0x5f8e796f2680dc64L,0x120e7cb758352417L,0x254b5d8ad10740b8L,
|
|
0xc38b8efb5337dee6L,0xf688c2e194f02247L,0x7b5c75f36c25bc4cL } },
|
|
/* 0 << 49 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 49 */
|
|
{ { 0x36c9dbbefda8520eL,0x573507ce6ae3ea98L,0x1ab38db696a8f9f1L,
|
|
0xe031d2356b01e6bcL,0x10466ae68afc4adaL,0x3b35df41ed9c44e4L },
|
|
{ 0x61272c12c7bd99e8L,0x6a4ae7b4805afd79L,0xf4c47a910ecc49ebL,
|
|
0xeb95dfeccbe84d5cL,0x43f3b71c8ee497d7L,0x2547af524c6fece4L } },
|
|
/* 2 << 49 */
|
|
{ { 0xe323ed0cced45039L,0x04ce0b67a90aa713L,0x9c092f06e8d68e4eL,
|
|
0xd8f5555ad0742e5dL,0xe2d175bf00d3df92L,0x8ca55f154f71aeabL },
|
|
{ 0xd1762d72642d391dL,0x0dfdd3c2aec466bdL,0x2caacb4c6281f2a7L,
|
|
0x635ba4703603e53aL,0x94a9811d49fecf29L,0x3a42cf09466bf361L } },
|
|
/* 3 << 49 */
|
|
{ { 0xe63fbb10b5356889L,0x5995a0a92e73aba2L,0x5cea30677afd4bf7L,
|
|
0x4494e39dfd37120dL,0x8c572c7249d718a7L,0xfe159c275fa305fbL },
|
|
{ 0x751c217fc276c40fL,0x44d0643c45e40857L,0x9a996e6efe7a6486L,
|
|
0x1a4f6d10f53b0e47L,0x651390ecd15fd593L,0xe0c1181d739ee9eeL } },
|
|
/* 4 << 49 */
|
|
{ { 0x0f05710b11bccf2fL,0x7113085a7aec1bc6L,0x137da67a46b8d0e2L,
|
|
0x454b89fc698b78ccL,0xf2a6e1de258a9393L,0x5f1804e716488e69L },
|
|
{ 0x7c6c550215b3bf35L,0x3b0e09a5b05c2ec1L,0x4b9de30e92f15247L,
|
|
0x09d4ca9327e70a0aL,0x9c8b16340d149363L,0x54a8287cce642137L } },
|
|
/* 5 << 49 */
|
|
{ { 0x3a05e7d5ca2af43fL,0x068953f975009801L,0xd6c8a76c06740141L,
|
|
0x7e1df1038a831fa9L,0xfe06e2bae39046f3L,0xda5264a0e1807c29L },
|
|
{ 0x1be4ffedff5d4808L,0x299d6537c52be83cL,0x1b38adba11834a9cL,
|
|
0x6074a60b1248fd42L,0xd9a0bd2e041b5430L,0xf222ba84a7b76b03L } },
|
|
/* 6 << 49 */
|
|
{ { 0x49ecd6f3346a764eL,0xe46847f14105e657L,0xce9cb2b57550f608L,
|
|
0x45f1a1f7f4cf062eL,0xcdb19a112c27d38aL,0x36d375b284e50b19L },
|
|
{ 0xf43691540dba6405L,0x4c9dc863040354dcL,0x7229e70ea24d09cfL,
|
|
0xe72aa86c7cf6831bL,0x487fb68425392838L,0xe88bed04430b9b47L } },
|
|
/* 7 << 49 */
|
|
{ { 0x9f77b8c5d1164788L,0x45bcd4c1d7b5c5dcL,0xed22ecf3d88c2357L,
|
|
0x330272ad07de1cf8L,0xd9749f7f4ca13a48L,0x4964ce5d1383ce08L },
|
|
{ 0xc033d516b0d0dbb3L,0x056ae73bf51943c3L,0x495cf7e057105e88L,
|
|
0x08ced52e56462560L,0xe9578aa713ca1a7dL,0xe9b045c5a9717f7eL } },
|
|
/* 8 << 49 */
|
|
{ { 0xf8a8499b666fa8a8L,0xd0f9401571bba84aL,0xb85e1b1d515e1328L,
|
|
0x88a2636ba941e788L,0xa045241d2b5dd8d8L,0x161be476332f0350L },
|
|
{ 0x96c4b205a18fac6bL,0x5cbe8d5e73fc5337L,0x6fc33fc6d00b6029L,
|
|
0x07a914ee89aa3b79L,0x35353eb7a4d4dd00L,0xc026bdc0673e8956L } },
|
|
/* 9 << 49 */
|
|
{ { 0x1e551f9bce0b6f8cL,0x1fe7ea4618495e1dL,0x3f6f28742dc0e878L,
|
|
0xb778c12844c43f20L,0xbddc28eb8a250230L,0xd8571a4aac6c3d17L },
|
|
{ 0xb9dcaec9730c8a1eL,0x512cee9993fbcf87L,0x0df3a1379bafe001L,
|
|
0x8530e501e2a2b9bbL,0x6d38ba8995ebf91fL,0x704b81a7792cef7aL } },
|
|
/* 10 << 49 */
|
|
{ { 0xccda372167103852L,0xf78d22470c54de53L,0xebd16036afa44aa5L,
|
|
0x7b88024864a24ab9L,0x86b38e961c2bc78eL,0xd0aa0d058d63b295L },
|
|
{ 0x24912955c62fcbf1L,0x77a68156b9ac435cL,0x432401c71b360b26L,
|
|
0x091f19f34c58ef8cL,0x3a4a61f483d46c9dL,0xad0e5c72e8d616cdL } },
|
|
/* 11 << 49 */
|
|
{ { 0x668d598ad1666826L,0x6ffed334fba0ba63L,0xe71e3359d7cddc30L,
|
|
0xa9c15c2d9fb9998eL,0x6966d350612230b9L,0xbca3ed23ae4fe0edL },
|
|
{ 0x537cac1b3caa3edfL,0x4f4a737ef33c180cL,0xf8d8f796f8807a7bL,
|
|
0x5c7cf072d1aab3e2L,0x7f0ccb9dfff736e4L,0x71bf0732ef11266aL } },
|
|
/* 12 << 49 */
|
|
{ { 0x33b029bccdaa6831L,0x2548552d4c1f9cedL,0x35f1a002dece1c8cL,
|
|
0xc6b87fd7acc23aa5L,0x0b8bb275bab029a4L,0xf07bc06730bfb42dL },
|
|
{ 0x1688ff5d1f69ce9dL,0xeedb7b5edb10585eL,0xb7a88cf0d432c197L,
|
|
0x20731bdd015a350aL,0x5fa1835463223f5cL,0xe392e1318024693fL } },
|
|
/* 13 << 49 */
|
|
{ { 0x61ada737c3449cb3L,0x071062504ca876ffL,0xcd98a39001d1403eL,
|
|
0x197c845096ded881L,0xd060160568cacebbL,0x7e1b37d1dc3ddff4L },
|
|
{ 0xfdc1bcb5d1725e92L,0x11cbe941bf0856d2L,0x63fd35d050199657L,
|
|
0x208a1047b9790d10L,0x52790ce61af4301dL,0x75e6d83beff28b69L } },
|
|
/* 14 << 49 */
|
|
{ { 0xdfaeea0a0154731eL,0x9e53419de15a0388L,0x2ad6a83c25a992c8L,
|
|
0xa2ba020fe125501aL,0x894ebaf8d4dd04dcL,0xd48cb95850765559L },
|
|
{ 0xf9b58d0980dec92bL,0x2a0e11659da299d7L,0x3c081853efe9cb11L,
|
|
0xb9f3b702a511c5e0L,0xa8f7a25f70486180L,0xc0358b25591b3e2fL } },
|
|
/* 15 << 49 */
|
|
{ { 0x00333fa6fa806947L,0x7e4dcfb3504b3e19L,0x8326b0acad4a5dfdL,
|
|
0x9ffc65eac7b12e49L,0xed3b7c0258d16eeeL,0x79fccfb434a4222eL },
|
|
{ 0x4a8070a0e556357fL,0x554fe2c9ec97769eL,0xcc405a57da691714L,
|
|
0x12927897856f590eL,0xd4805b93ba198dcbL,0x2649be2e4b18444bL } },
|
|
/* 16 << 49 */
|
|
{ { 0xf36e8398eaddf274L,0xe41553a16a5e4ddbL,0x36ab07464efc5b0cL,
|
|
0xb211e59ad316c434L,0x2515ec9f16ccf839L,0x6ecb746503dc6a07L },
|
|
{ 0x842b7275c65c1b07L,0xf7ceeec535750ab6L,0x967d711ccef5255dL,
|
|
0xcd3bfb075108cb92L,0xe50c0d8aec1b9740L,0x9e8d56611a9e6308L } },
|
|
/* 17 << 49 */
|
|
{ { 0xfcb12ba3aae18c46L,0xb55e959c6e21d463L,0xf720d19f4a4f6f21L,
|
|
0x1c2ff60ed4320c5fL,0x4ce5e1ac1a1b40b8L,0xfdebfb81ff6fb9a0L },
|
|
{ 0xd6c37d8a9c67c07eL,0x55167952012fc09fL,0x5dc722b52c306c4dL,
|
|
0x1efad8d2bc1f65e1L,0xa1478f3da52556ecL,0x54cbfb884a795dd5L } },
|
|
/* 18 << 49 */
|
|
{ { 0x84f8ea13ccb8a36aL,0x5f7aeeffa05709a2L,0x4942d04e60574f37L,
|
|
0x855b13e9e048b400L,0x747e4067a6b59c09L,0xc349fb05074d3990L },
|
|
{ 0x398e6afaec2c7e03L,0xce361865ec2d5a4cL,0xfc04bf8eb6f57d22L,
|
|
0xf0e0b84c759ce6c6L,0xb65141235ee7e528L,0x8ca144bdf5c0f9b9L } },
|
|
/* 19 << 49 */
|
|
{ { 0x5868449bc6e0124eL,0xdd65ffc1e68ad5eaL,0xe126665f4f577466L,
|
|
0x8ade5cee2defe8deL,0x7c1cf7f07beddf87L,0x0e0e066a362c5956L },
|
|
{ 0xac2aff4e15563b47L,0xa28ab875620d1299L,0x91f67b3fd8caa497L,
|
|
0x91bef53394fc08a3L,0x0fa27d9cd99918f5L,0x205b6c1f60b67bd9L } },
|
|
/* 20 << 49 */
|
|
{ { 0xc1370daef6a58536L,0x6f2e5b37c56b0ae9L,0x5511d68292f6b6a3L,
|
|
0x2e9e5034ae575249L,0x3e5a32f81d14bed7L,0xa346a86f75efd17aL },
|
|
{ 0x4f2510a60309fd7aL,0x689ecd74d0b1425eL,0x9e9bebe19f771e24L,
|
|
0x20188045adc5b48cL,0xe49811b6b845230bL,0x420855ec5a8687f8L } },
|
|
/* 21 << 49 */
|
|
{ { 0x705a9ab30aa1a423L,0xcb01466fb49830c4L,0x1db1768581a75897L,
|
|
0xcaacb855e341f157L,0x9b13cd497a0d3c38L,0x119b4d47e177fcb3L },
|
|
{ 0x0d8f7c2639788712L,0xbda0f3180642bd4aL,0xdd4bd88bd4616239L,
|
|
0x9a3ecf978df1b895L,0xd0d54caf4a6dc07fL,0xa7ed6bfb31810203L } },
|
|
/* 22 << 49 */
|
|
{ { 0xe650e49abae1b94dL,0xb6b162e6e3199794L,0xdc706859b4ec0480L,
|
|
0x28b618c24b1a06caL,0x0929a001403acdc2L,0x796dfd972da3aefdL },
|
|
{ 0x16389072ef4c1673L,0x600d8bd7fc94a4f5L,0xf003214de5f386a9L,
|
|
0xa7af0499e62cbb48L,0x750a3b00de82bad5L,0x6c615b838e7dc8eeL } },
|
|
/* 23 << 49 */
|
|
{ { 0xe1916cb4eae432e5L,0x81f3e48acc193889L,0x54d58685ba922a4fL,
|
|
0xeffcc528bf11b76bL,0x2f70d38f8171c971L,0x547ce8ccb3a5669aL },
|
|
{ 0x3acd91b878e6d0beL,0x372dbf2c689c2913L,0x9fceb5bbd0aae543L,
|
|
0xc601f9622830a977L,0xd55e74509f874dffL,0x77ff8ab4822878caL } },
|
|
/* 24 << 49 */
|
|
{ { 0x283eec26d71543a6L,0x98fa08bea7627841L,0x269a83b827ad302dL,
|
|
0x225f2f12bde3fdd0L,0x046fcf380130b3a6L,0xea733c1ac3ed9043L },
|
|
{ 0xf870f14d70aa08d1L,0x643d18b834391e0bL,0xf3e1d5f4847be772L,
|
|
0xa9498223d0ed73a0L,0x6933ccf014b3babbL,0xc2439ae437f08f70L } },
|
|
/* 25 << 49 */
|
|
{ { 0x503414d0f2cb5475L,0x51b9497cb24cbf9eL,0x57359dee2f4c7746L,
|
|
0xee7125c3f3118a94L,0x2f0db706e4ea33d6L,0x885e8c3eddff7f63L },
|
|
{ 0x752f594b628432f0L,0xcfadea7779852e2bL,0x4f733b8ba2ba4b7fL,
|
|
0x163c8c2e530f763eL,0xf95a7b57ff05a7e9L,0xd4768d242d7be01fL } },
|
|
/* 26 << 49 */
|
|
{ { 0xb643f4e0f88d049bL,0x5e0ac1fb12682fcfL,0xeaf7874d9f981c8fL,
|
|
0x9c2adfd2b1af779dL,0x9a7abeaddaa8c275L,0x09ad552124cacec4L },
|
|
{ 0x069cd5c40ead1646L,0x5186bf190a6157d1L,0xcc222a9396503506L,
|
|
0xfeaa7bdebd29686eL,0xb0d65b0da7257c8dL,0xc31c0a8898aa227fL } },
|
|
/* 27 << 49 */
|
|
{ { 0x5495f21c9fe88a48L,0x01f580ac590c1966L,0x1ad433ba39810166L,
|
|
0xecbc67003a5187f6L,0x38d36c3bd4216887L,0x49653585e27b615cL },
|
|
{ 0x2a70a1d9e773db7eL,0xe36d967a63c1c048L,0x51cba60d26d15862L,
|
|
0xb633839fd5a6b746L,0xa6a756a2ec1fc364L,0x37fef8d24cfccb6fL } },
|
|
/* 28 << 49 */
|
|
{ { 0xb4b7651f5be1d45bL,0x0425200a7f0cf680L,0x200d12b48960be95L,
|
|
0x02fdd1a14945b193L,0xedd70e3e27d046d8L,0xc1cc086a83f14e12L },
|
|
{ 0x1580e72b2629396eL,0xc87439dbf9ed73c1L,0x5debdf30a90c5128L,
|
|
0x0b6c020e9fbe14efL,0x168da56a0149a0b0L,0xc66a4dbd79c58ac6L } },
|
|
/* 29 << 49 */
|
|
{ { 0x6ecd9c41596b8890L,0xd25172fe210d9613L,0x1ce8abf872b97aa5L,
|
|
0x355899d610faa675L,0x003b69adf4ddf011L,0x6736cd40ec2d1af9L },
|
|
{ 0x8069a0ad4f85ac72L,0x5c31d68b5836cfd3L,0x8e9486eaa5ec1473L,
|
|
0x8e175c4a1468cebdL,0x58b3d2b1ffaf2f77L,0x4fd21681a17a3e00L } },
|
|
/* 30 << 49 */
|
|
{ { 0x800aec84330b8e2eL,0x1a2c033e335837bfL,0xf1a91551fe6f6dd9L,
|
|
0x326c42b21de7360aL,0x300e740b7b66f9d5L,0x53bcc70068ce95d4L },
|
|
{ 0xc9e225ac3d80f228L,0x64b2ad4e6977dfdbL,0xac863b0801f23221L,
|
|
0x0517a648df11e5f7L,0xbf7aedcb68d11050L,0x2607e33777b3029cL } },
|
|
/* 31 << 49 */
|
|
{ { 0xcb1955e44f4706b2L,0x0821d4663acaed1fL,0xbe822db07f8b43deL,
|
|
0x3d11573f9b1c83a1L,0x6c052118201eab83L,0x294c5060dfe340d7L },
|
|
{ 0x994a4bde0644005bL,0xf1519f3258fa0552L,0x9077bf5bd4d0d39bL,
|
|
0xebde1ff0e6204ea0L,0x58a68e09829130a7L,0xda64eb8596961bb6L } },
|
|
/* 32 << 49 */
|
|
{ { 0x1afa6aa6206add5dL,0x66cfbbae150ea4c9L,0x07fb920b5d36da4fL,
|
|
0x144d51f9291e774fL,0x26c2c134f40d87a8L,0xc8cf3524a932f1a0L },
|
|
{ 0x35bb2a425aeb0bdeL,0x5cfcc1dac4be960aL,0x5c40cabfaa1838edL,
|
|
0xea0c05ffe2855f1fL,0x931ebb02fd525934L,0x31a7b78f16246fd4L } },
|
|
/* 33 << 49 */
|
|
{ { 0xbe055fead42b36aeL,0x733a05ed819ddf8eL,0xa00fa0a15c9a6102L,
|
|
0x0ed363273c0af634L,0x5b5a62b4d5970a32L,0x9d7557dfca954cd8L },
|
|
{ 0x30314f0c6daf871bL,0xaa7c42a96267b2abL,0xc5d1f0d6132bc62dL,
|
|
0x77ac94df7ed26084L,0x0d256fdada34e1f6L,0xf0259d1caa4b4dd6L } },
|
|
/* 34 << 49 */
|
|
{ { 0xf576c69e86ccb00bL,0xc870c07f5781803eL,0x91d4c0c6b1869e56L,
|
|
0x9c2729397d940416L,0xdad33f73c4d0269bL,0xe2baf5b8838c9198L },
|
|
{ 0xd8bb9613218414e4L,0x5e9f7b67c980ca07L,0x1e2d4e63165079fbL,
|
|
0x6ae5b17f983b3fadL,0x1e66b8380c24e22dL,0x80cdaec2136e0be8L } },
|
|
/* 35 << 49 */
|
|
{ { 0x98cb12d93fc277f4L,0x81def3ee160b8743L,0xa1f07ebb11711fb6L,
|
|
0xba17dd15a95b3ba0L,0xb25f1c78bc158f33L,0x1bb83cf27841e8bcL },
|
|
{ 0x57ad928abf49233cL,0xc94fd746bdad3f2aL,0xf7c716ae4a4c6600L,
|
|
0xdd0e3117060a78b4L,0x85e8851a860764b0L,0x3342d974bce0d787L } },
|
|
/* 36 << 49 */
|
|
{ { 0x2bc4e37a719793feL,0x1543af2aa68ceea3L,0xc99cb391aabdea45L,
|
|
0xc890e546f0b8eea7L,0x8b75b91feb4173d7L,0x9d52d04bef46f637L },
|
|
{ 0x0929f25d878ff734L,0x7377235fb6c43342L,0x657835cf6eca900cL,
|
|
0x7b752665098bb5e2L,0x320d09b6b8a61442L,0xec4f8182cf5b8023L } },
|
|
/* 37 << 49 */
|
|
{ { 0xfc5f8feffc788160L,0x7d552625f73f48a3L,0x4eea435145c02498L,
|
|
0xb5f5de5bf8f8af26L,0x78f1c499067b1610L,0x6e0d1b14eac18a29L },
|
|
{ 0xf8be2f6c052af916L,0xd8cee5668876af81L,0x99a27ec31577bd90L,
|
|
0x3ac529d242919f4fL,0x1215428c7fc05dd4L,0x99ef01e450f67e87L } },
|
|
/* 38 << 49 */
|
|
{ { 0x145902629d671094L,0x7fef49c166ce858bL,0x2a7ea540c2f21eadL,
|
|
0x1226b04fc1d5a636L,0x4fb54e4e535efb9bL,0x6c51cdb91d72bed3L },
|
|
{ 0x94162e44938efaf6L,0x166013cfaf6f5697L,0xfa9495bddf95f9c6L,
|
|
0xc05441cb0d7f8406L,0x7e5c89763a233ca6L,0xbc75dc6493fe8e42L } },
|
|
/* 39 << 49 */
|
|
{ { 0xe1885cf128ed669eL,0x6e9f40dfb428b3cdL,0x412388a61626f8d0L,
|
|
0xb8201f047cbcd192L,0x642ecfad70ba644bL,0xd43be1cb43c76bb7L },
|
|
{ 0xafafffc388f4bd51L,0x8c40e2787052eea6L,0xc1a84e866a4c8776L,
|
|
0xf0201f292fe7075dL,0x132f80e4576af421L,0xe0831b7f4731dddbL } },
|
|
/* 40 << 49 */
|
|
{ { 0xecfabd2742dbb68aL,0xad43a2c43eb546d1L,0xcf4e64ccfe2691c9L,
|
|
0xe3889e258347566aL,0x48da354885b8c733L,0xcb7fe0679d9c9f57L },
|
|
{ 0x8c26a8d668223280L,0xc1e8ff623065705aL,0x181ca70a3f8db9f8L,
|
|
0x25aa6450e758213eL,0xa4898f9169b2653eL,0x5e5c9fb4ccd8303aL } },
|
|
/* 41 << 49 */
|
|
{ { 0x640b6946b03aa213L,0x6b99e84d00c068f7L,0xed4f1d2d99c5c461L,
|
|
0xcec88724b20eaffaL,0xdf2b79a95dbbc32cL,0x2f7397054f3a1c5bL },
|
|
{ 0x1594a54946eb52edL,0x55f11aad39c4c43eL,0x0fcdb331f46500f2L,
|
|
0x0d66be885ceb8dbfL,0x4d977349886dbbf1L,0x238f4617797d1b41L } },
|
|
/* 42 << 49 */
|
|
{ { 0xfc8c7320721034d4L,0x48b389db60264280L,0xac246988649cbd88L,
|
|
0xb7f52891a50bb658L,0xc0a812e50a7f279dL,0x6593175967fb2cffL },
|
|
{ 0xd31a77c6661ab439L,0xabadcea00ceb4aceL,0x201d98f6a3702dddL,
|
|
0xcec1e83e7c9463aeL,0xc64e44fbc55e6856L,0x421f3e3148aa0d81L } },
|
|
/* 43 << 49 */
|
|
{ { 0x4f0b251871a07c6dL,0xbfe652edaf3a2fbdL,0x5f68dc667bc2053fL,
|
|
0x445df84f6040a7cdL,0xbdda2132180dc0a9L,0xd8627401d6c7a92fL },
|
|
{ 0xba350cb190cd2c73L,0xaf4c1e5929886ab4L,0xee8fdff2d677399cL,
|
|
0x3ce35c6edaecf83fL,0x44df0a300f114062L,0x1b633b4647f29868L } },
|
|
/* 44 << 49 */
|
|
{ { 0x48483f6af58ae2c1L,0x70ba34635e1cce49L,0x5f7a1c6d33907532L,
|
|
0xa0fab701875a5f3fL,0xf2e8b0ff85d387e1L,0x0076aa68ff349689L },
|
|
{ 0x6e392b02747e2fffL,0x5e1ea320e788d577L,0xba705bd7713a0b03L,
|
|
0x04ef192f2dc2cbc5L,0xa5a14eed38aef8a2L,0xf9682bbe30a268faL } },
|
|
/* 45 << 49 */
|
|
{ { 0xc04f2cf540244a00L,0x00c90c3bb8dc0ad2L,0xac5b1060601d76f6L,
|
|
0xad97c5c1a7ff84ecL,0x7919a06dd2328101L,0x62d5b7a4ca8a69c5L },
|
|
{ 0x75607148de5a2cc9L,0x1afff7f79a75fd24L,0xe62efc8083a22367L,
|
|
0xad08258a10e05e36L,0x22666e06c0e4b549L,0x15f62c613f4c48c2L } },
|
|
/* 46 << 49 */
|
|
{ { 0x751affadc7b8da09L,0xc052109dbd8e45d5L,0x7d11aaad87c14560L,
|
|
0xa0410b2a6b690121L,0xcabad9853e10a103L,0x4d19bd3e785f1bfeL },
|
|
{ 0x8f32c6b84b6167a4L,0xb21d4ec297b4f546L,0x2e26df99c008f7c7L,
|
|
0x63825597eb347720L,0x6a05b375afe39fc8L,0x19790b92131201a3L } },
|
|
/* 47 << 49 */
|
|
{ { 0x149347ff7780729eL,0x076b4edc62e2dd48L,0xbf0de9d7cdcec866L,
|
|
0x9d75deab8fa1e18cL,0x10931716eecb1f4fL,0xa8765dd3a385eb7fL },
|
|
{ 0xfd26f39c4d70651cL,0xc501caf48834c723L,0x1d263a83a65e5093L,
|
|
0x57ee2fb96f709deaL,0xdae3dcc645091321L,0xba0665a906a60a48L } },
|
|
/* 48 << 49 */
|
|
{ { 0x517d13b1784d0621L,0x2db4ef27d77b84beL,0x6e2e26866d752aaaL,
|
|
0x95da9fa1cab02667L,0xbe8d91ad423163c3L,0x8f3d59dba69953c9L },
|
|
{ 0xf728b1d2d6e635aeL,0x5c4c177deeea663eL,0x97a900a82e75d9c2L,
|
|
0x136c6b1e3ad09defL,0x4bab14a6dd8a2be8L,0xa4ee903025cf1447L } },
|
|
/* 49 << 49 */
|
|
{ { 0x05f93697a5235c12L,0x434f91026943a0d0L,0x92696b701a4d3169L,
|
|
0x0a9da44b8c3b1ee5L,0x327f9f79d295521bL,0xf605cb83afd8aa40L },
|
|
{ 0xe3bd4ab5d365fb37L,0x6c6a470ce984ea2dL,0x7ad01e6b392af60dL,
|
|
0xbef2dffd5ff8ee6bL,0x4e56deb722efc2ebL,0x1b90570ae14ff270L } },
|
|
/* 50 << 49 */
|
|
{ { 0x70718d8e333cd9e2L,0x858c880c6b03a371L,0x5b7f69a5926a3dd4L,
|
|
0xedbed135572f420fL,0x740a21e6332aaa09L,0x665aff63fecf1e3dL },
|
|
{ 0xd884a3c1214490e9L,0xed70c29a63cdab1fL,0xc92dfa58786e274bL,
|
|
0xa5395591d7fd529dL,0xacdf81ac3b95b61fL,0x07f801df40cb45a0L } },
|
|
/* 51 << 49 */
|
|
{ { 0x4f863ad59230d44fL,0xd176d2764a099825L,0x4a6868745a43a7d8L,
|
|
0xbcab3548fff3e8dfL,0x15028cfccab2c7e6L,0xad077a8874a91fb2L },
|
|
{ 0x015700d39eee3e32L,0x524ef9c7386e489aL,0x3be1771b60285f8bL,
|
|
0xe4a5353cf9c33beeL,0x0aa0f2ab244ad683L,0x04e846f98a4c0ed6L } },
|
|
/* 52 << 49 */
|
|
{ { 0x326a204790f55f13L,0x194d24db53017b29L,0xa26db785cd4368c3L,
|
|
0xd58943e8238d7518L,0x8e06f8cc3527387eL,0xebc6dc9e071846d4L },
|
|
{ 0xbfc08dccc541e098L,0x3dcf0713e4fbc9a4L,0x44e9ba7869fedb43L,
|
|
0xd867cf784fa012a0L,0xc618b2b88733ddf2L,0x4149fd48a737fd5cL } },
|
|
/* 53 << 49 */
|
|
{ { 0x5c4c2183179b1928L,0xc54d315d0439876cL,0x07d22792f7495bceL,
|
|
0xd378185e3bc32c4aL,0x8539aab65b31c5c9L,0xc72b1ac640dffb35L },
|
|
{ 0x46bb918a2e8d6ae2L,0x102c49f9e8a1d7a1L,0x7c622793cd2764d3L,
|
|
0x5bbc6f023c7aafcaL,0xa41f383bcff71b4dL,0xc8a0e1a9aa99bf83L } },
|
|
/* 54 << 49 */
|
|
{ { 0x323aad4991d6b8f3L,0x91b678c0f3d9154eL,0xc141e2424ce74f67L,
|
|
0xb7c38aef65659ca0L,0x5b5f89b174a937e1L,0x739fad71abc55012L },
|
|
{ 0x315ed44ccee5f4fbL,0xb0731455360a61eaL,0x39235ff0ee93ce5aL,
|
|
0x6352556fd203baf9L,0x3c22dc6a0ea06b93L,0x195638cb591bbfa0L } },
|
|
/* 55 << 49 */
|
|
{ { 0x8bd5a15359ad0688L,0x827e82d8a7323070L,0x9ea55b3af70686e5L,
|
|
0x511c8c3f34c2d054L,0x9364d28aa14a3c61L,0xc4dff9c461374139L },
|
|
{ 0x947c3ec9a39c01c0L,0xead11d42108440bbL,0xcc6d893569677f79L,
|
|
0xb1d632710b9b4823L,0x2cec325e63b154e0L,0x45e97c3814a85b9cL } },
|
|
/* 56 << 49 */
|
|
{ { 0x11b59f3e92acd14cL,0x188c1bb1d7aea098L,0x5cadf0a19365958fL,
|
|
0x8fef04fcca0b1b0eL,0xbcb4d9fb0c274a5eL,0xe97eb41cba78427eL },
|
|
{ 0xc49f0bc55cf06378L,0x2681f12a281b669dL,0x200e9e583f796b81L,
|
|
0x5bbea92b17964262L,0x86b3c15756db0039L,0xe4477c5eead482baL } },
|
|
/* 57 << 49 */
|
|
{ { 0x1340e22c050fc1faL,0xd5cc5445bd062615L,0x03ad31601f494b03L,
|
|
0x612919142af1b95eL,0xdb31a06d53705ac5L,0xf590433ad07ae464L },
|
|
{ 0xed52363421bbbd72L,0x1f032ad2f1cc7842L,0x212b1d5536a7164aL,
|
|
0xc2cedab7dd973183L,0x29aeeee05e74ada3L,0x579984d8bb666836L } },
|
|
/* 58 << 49 */
|
|
{ { 0xbbe5db83e13d34d3L,0xbae5ae959a8a3344L,0x55d2f0ac797d6e35L,
|
|
0x75e78c017cd0abb0L,0xb757f72cbad96294L,0xe52493895d556f25L },
|
|
{ 0xc02293538e7675dbL,0xc363c5255c8beec5L,0x7ac23c0b7c87ee00L,
|
|
0x9c5f22b4a7de93f8L,0xc6f0ea64d9644b5fL,0x3fa718d4d161f87eL } },
|
|
/* 59 << 49 */
|
|
{ { 0xe8496c463f356cf8L,0x25b5b8742da1b81cL,0xa35ec06330efa9c9L,
|
|
0x7497d85ffdaeb348L,0x312ad677e83f49d7L,0xcb5c346cfe8aece3L },
|
|
{ 0x19d7332d61cd4ebcL,0xb03dece0d0967141L,0x47dcb81af5455addL,
|
|
0xbef0e70389ca68d4L,0xf7abbeb9c987400fL,0xbda81c65a1521da1L } },
|
|
/* 60 << 49 */
|
|
{ { 0x535f3e4b86882341L,0x5af1c6322e22600fL,0x0403b6e0584a13abL,
|
|
0xa64de86661f59ce9L,0xd22106f738501b92L,0x2932f808ab6ffd04L },
|
|
{ 0x8da4cc6e232967f2L,0x4b8fdd9ef3644670L,0xe8cb6ef31e0c51bcL,
|
|
0x20b7b734230c6897L,0x5009176453d9339aL,0x5f5c8c67ca637277L } },
|
|
/* 61 << 49 */
|
|
{ { 0x23e333d467232358L,0x3c2807bdea037380L,0x9439cc4626f1dc2fL,
|
|
0x8c87dde53ac29173L,0x601b7245766897a1L,0x9e0b1a4559350e3cL },
|
|
{ 0x0818b6cb301db407L,0xbdc4584676b6fbf3L,0xeeca553431bdd954L,
|
|
0x1dfabc033f9be3bfL,0xdf0415dc68851bd8L,0x33be32a67aa9dfa8L } },
|
|
/* 62 << 49 */
|
|
{ { 0x8c9017dd4b4e4b5eL,0x02f435dd7b892b2eL,0xe9af9efd292e0f2dL,
|
|
0xa32124c75c4d315dL,0x5c6fde76b31a390dL,0xf1fdcefaa6e46d3eL },
|
|
{ 0x5f39dbfe9e9e84b6L,0x574d647d19aab6b7L,0xd5a234cdad1a2987L,
|
|
0xeab841c7dab59c81L,0x5155898db3137b90L,0xc52e9ddd06db2fd0L } },
|
|
/* 63 << 49 */
|
|
{ { 0x8617f0d490660ff7L,0x00d73d108b35743eL,0x433e42d68a6ca67eL,
|
|
0x575ecb9beab5cff6L,0x4c64bcddf258960aL,0xb8ffb7f32c23405dL },
|
|
{ 0xa98c06691261b0c7L,0xf2701f4a6b9bf7c6L,0x3abe44c41c68efc3L,
|
|
0xdb5ac9cbf12c7a25L,0xf5b4616651120981L,0xf8058f7074d518f3L } },
|
|
/* 64 << 49 */
|
|
{ { 0xcd92906c6d6ae962L,0x628356159807d881L,0x0d6929781fdc1915L,
|
|
0x45d01a8c269d611eL,0xe7bd1e709665b00aL,0x086385349bcaa388L },
|
|
{ 0x8f189e882dd24299L,0x5f643392b82fb270L,0xca65bf16c633b111L,
|
|
0xc6adc9c9d6f1dac8L,0x0df2c293a3c3381dL,0xdd6ae97d8388cd12L } },
|
|
/* 0 << 56 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 56 */
|
|
{ { 0xffdbd0eb3863db02L,0x8b8256832f57e10fL,0xc11acead35e7a3a2L,
|
|
0x4998cf8c67833028L,0x8f3a346b844c7976L,0x0a9d872cdb9b1a1cL },
|
|
{ 0x8735dabcb98d445dL,0x93790d80305fa0a9L,0x7c0add49d267a01aL,
|
|
0x2b46c913ffa20d11L,0xf2acef26d8ab2d4aL,0x71b701b93d926080L } },
|
|
/* 2 << 56 */
|
|
{ { 0xe9d2a98a5133de8eL,0x37083b60b81b8b00L,0xf399325dceaf86aeL,
|
|
0x03b17c888f161525L,0xd8ac35c984211b9dL,0x220837849050ca48L },
|
|
{ 0xa818c44bc9fab832L,0x8882bccee5aea7daL,0x633aaf35f8715b04L,
|
|
0x5463e1b99d8829a9L,0xb18df52d84a820f1L,0x9d5ef891d096675dL } },
|
|
/* 3 << 56 */
|
|
{ { 0xd54e2c7cac60496dL,0xc06d5e5d04cd50a4L,0xcb4105e8e60f7f59L,
|
|
0x705db308427483adL,0xf73ba98bf2bff383L,0xa945611a0220e6e9L },
|
|
{ 0xc01c46b8d957e12bL,0x458897b7acb1f371L,0xf738dc0bfa3403e6L,
|
|
0x098bc687d2202896L,0xec0c217a5f882e5eL,0x8f25af77a1f4eb13L } },
|
|
/* 4 << 56 */
|
|
{ { 0x2615c78259ee4124L,0x4dc2824c76532b4bL,0x9c3b1d771c84a04bL,
|
|
0xb6fc203fcb9f9e34L,0xbed65464c64f7846L,0x04f520a2eb004248L },
|
|
{ 0x5c0177274a58fd22L,0x25958482c10d9472L,0xb78c6666aceb0e3aL,
|
|
0x18d3c188fc046f0aL,0x7f3e2f301baa9595L,0xa574f8cd8a2844e8L } },
|
|
/* 5 << 56 */
|
|
{ { 0xc899eba381c2d81fL,0xb27267d6f3f0a431L,0x607c8629da55568eL,
|
|
0x6b5472282b1dc1d9L,0x23232311c9c001ffL,0x207a2eb2488f8b85L },
|
|
{ 0x3867ac9adac37a28L,0xa36d14d32584a5f0L,0x7398c647a74488ffL,
|
|
0xf6ed920fbe087640L,0x72beddc76319a571L,0x55c2cd826a244aebL } },
|
|
/* 6 << 56 */
|
|
{ { 0xb7da79c625f8a53bL,0x6b950bdfd331ad8eL,0x3481b7b54aa36d18L,
|
|
0x6efeaf88ed0e3091L,0xeb017bddc993074cL,0x8431a6d6529dd654L },
|
|
{ 0xf5177231bd069585L,0x6d753b103ce85096L,0x194d82d34ca26741L,
|
|
0xeaeffe15adcd1650L,0x4dcec3d9af7758b7L,0xf5fdf6664cc2c819L } },
|
|
/* 7 << 56 */
|
|
{ { 0x94bdc7f4a9810744L,0x464195daf045d859L,0x27e2dab0d654cb57L,
|
|
0x1d4e1e537a491956L,0xa1ef570c31d5d099L,0x01cd21ee295f3de7L },
|
|
{ 0x8681b00db8249038L,0x17c31bce93781b71L,0x4324e90c6a1b5748L,
|
|
0x44f9324c1222e554L,0xe30ba10fffd53dd0L,0x2e5817a8b48eeef0L } },
|
|
/* 8 << 56 */
|
|
{ { 0xa349bb66c8fccaa9L,0x7888755f31a53ee7L,0xa6e1d891c18d3750L,
|
|
0x9985aa4dae8d2bfbL,0x8baec9ae31b33078L,0xee68295a98750e94L },
|
|
{ 0x0d834bf8d6ddf305L,0xab33dff39762126cL,0x0c22faaa0c51d098L,
|
|
0x32404042b887a10fL,0x31f6a614248bed32L,0x311f86301ce0d662L } },
|
|
/* 9 << 56 */
|
|
{ { 0x5c95cf080d844b0dL,0xe09a8352c98650c9L,0xc1b106c5d089058eL,
|
|
0x2b3cf101eb0c6107L,0x1993fdba3ce6ee18L,0x7234eb6425fc4d24L },
|
|
{ 0x8345acfe05f46dfeL,0x07fccf68a2d87d38L,0x14494cea85da7852L,
|
|
0x8737500acecdd9f1L,0x72b1490ca39068ffL,0xce28271acfa4469aL } },
|
|
/* 10 << 56 */
|
|
{ { 0xc872326f55c6c00aL,0x6a5f0fa3f912decaL,0xf4ef0ca5a7d1bdb1L,
|
|
0x1dee685b37dc6bebL,0xdad4cf52f1b09b88L,0xc7199f0277f1db84L },
|
|
{ 0x7099ef00a3f00491L,0xd8fbbbfa6d8804e3L,0x2a00b8e50ae1e360L,
|
|
0x8a8c9d03fe9be5dfL,0x06e0585b8b1faf6fL,0x19542ee7ae29c502L } },
|
|
/* 11 << 56 */
|
|
{ { 0x36cad867e2aa1c5eL,0x7ef21e51317f9078L,0x68efbb84c82e925fL,
|
|
0x973b36769fe751e0L,0x09c4e0c1177d36a7L,0x9c0b7e048a753c5eL },
|
|
{ 0x8414cdab15ccad5cL,0xeea2134ed50c1678L,0xd9c1dae8f6585d5fL,
|
|
0x82fd04ab4e5c3d96L,0x868cddf7da3812d3L,0x32a65aeafda07e68L } },
|
|
/* 12 << 56 */
|
|
{ { 0x73292e6a60720858L,0xe046a79953160855L,0xf74d56c9ed3b94c1L,
|
|
0x0e371167c67863e1L,0x19b3a9f43f6636cfL,0xe624798d898a25b0L },
|
|
{ 0x2ed1fc4dfde2cd6eL,0xd9a7ab519fd15ee5L,0xb6b8d551c487b1cdL,
|
|
0x9fec705ae8936c54L,0x4b779dde1a50e094L,0xfb5100c2c3a4ef5bL } },
|
|
/* 13 << 56 */
|
|
{ { 0xb35a7b102704c525L,0x8a77fa5b44276cbcL,0xb4a9cd235ff1a12cL,
|
|
0xc74a017c88a37997L,0x84e26eea9af37476L,0x8a6b8c0e7bbf737bL },
|
|
{ 0x90ab7c948f05bd3eL,0x31749075464f3a2cL,0x32f7873c1dcfbd25L,
|
|
0xc0af73d343bc2054L,0x556c4798171d825eL,0x2c84b5b6081542f8L } },
|
|
/* 14 << 56 */
|
|
{ { 0xa5907e5c59ab2507L,0x12b86e04cf7df60eL,0x0a14bed18af4bc50L,
|
|
0x462863b20c11bac5L,0x98dde284126958dcL,0x8877e7695625eb29L },
|
|
{ 0x869f7214f4fe19e5L,0x29867e51ec0f8c1aL,0xbf498bc078b85f03L,
|
|
0x9dda400e8973a94eL,0x8d8b998ae6e51b1aL,0xedb0957c557ac00eL } },
|
|
/* 15 << 56 */
|
|
{ { 0x84b6d5143b7d43f2L,0xcb84c823afb7a2b9L,0x892e8c4c56d2b161L,
|
|
0x52ea7426214fdc0aL,0x07f3d57679763557L,0x9f95fd585a828bb3L },
|
|
{ 0x2c7f03d550e14019L,0xab723de7d7eae7b3L,0x4c08189317f4ea6eL,
|
|
0x64cc5bc0ec367246L,0x73077b5ddf11c3b7L,0xfa34b540e08eb4bbL } },
|
|
/* 16 << 56 */
|
|
{ { 0xac6dbdf6edc9ce62L,0xa58f5b440f9c006eL,0x16694de3dc28e1b0L,
|
|
0x2d039cf2a6647711L,0xa13bbe6fc5b08b4bL,0xe44da93010ebd8ceL },
|
|
{ 0xcd47208719649a16L,0xe18f4e44683e5df1L,0xb3f66303929bfa28L,
|
|
0x7c378e43818249bfL,0x76068c80847f7cd9L,0xee3db6d1987eba16L } },
|
|
/* 17 << 56 */
|
|
{ { 0x254ed267050f46f1L,0x36786ff864daa83cL,0xb4a89efc802a3ae6L,
|
|
0xe0027b3486b77d59L,0xb7147905f48d0de6L,0x00733ca710cf7c60L },
|
|
{ 0x87efbe387b3ab776L,0x3db10898de9730f4L,0x61f21e1386b7a40dL,
|
|
0x5541873648455b6aL,0x0de378f9a88587deL,0x42dead7a766d18f1L } },
|
|
/* 18 << 56 */
|
|
{ { 0x42b8ef51e15ad876L,0x498886e5082e110aL,0x3144e8c964edbd73L,
|
|
0x4b08cf86f79e6724L,0x42d06d53ddfdb6a5L,0x4c9dce336d8b1f33L },
|
|
{ 0xbb8913ae4be29e97L,0xe944c922166fdcc4L,0x83913b963c494e9bL,
|
|
0x529d57ac633a0018L,0x632a7cfd242e7d9cL,0xf0e2434dd9b51d08L } },
|
|
/* 19 << 56 */
|
|
{ { 0x74768ab044ff52cdL,0xa590ac7eead09902L,0xdc408c53f52c0f5fL,
|
|
0x614a22d6f853efbfL,0x61f391c425126427L,0xb61adcfcbf462fbbL },
|
|
{ 0x7b753aaaaffdbe78L,0xce12b2247bea939dL,0xca21f73e95baf09bL,
|
|
0x2a82915e43ca9ebeL,0x67ba04f57936a38cL,0x1c1964f1616b0b87L } },
|
|
/* 20 << 56 */
|
|
{ { 0x4dc628c67cb2ec48L,0xc896f99c0cb1e9d2L,0x399ac2e85cc6134bL,
|
|
0x5ac36de184ba73d0L,0x66a334a3e1803832L,0x394af7ea59b770c1L },
|
|
{ 0x3df19e55b46f793eL,0x97aaec84bf770a95L,0xf52068b8f8c54408L,
|
|
0xb6f7649f49e05f0fL,0x54d8db0583360826L,0x24748fdf71af722fL } },
|
|
/* 21 << 56 */
|
|
{ { 0x68f4dd4956c29111L,0x391ac9910dac9352L,0xb0a8a54206dc9d58L,
|
|
0xb5058ed8fbe70330L,0x8b5e9d4076b593bfL,0x769fb99cd7f2b261L },
|
|
{ 0xcdcbb60ec67cce8aL,0xe01a5d5d75da36dfL,0x7e831d0ef7c6e5cbL,
|
|
0x0f6bf54bccdeef00L,0xed49ad3998ba4d8dL,0x8d512c83614d70c2L } },
|
|
/* 22 << 56 */
|
|
{ { 0xc1910b2545b4f6e5L,0x54c6ee8489fb712dL,0x80b6fd47f5747ba2L,
|
|
0x3d81e7efd6d4f856L,0x8b9e87418031f1bdL,0xc591d451f2327316L },
|
|
{ 0x4830d9971e0f1c1fL,0xeabe29bd86e92024L,0x2f2053a1b8c68d7eL,
|
|
0xff4eb9e879d00ad6L,0xa0c93249f4b4cd89L,0xe127d9d3cb9e0761L } },
|
|
/* 23 << 56 */
|
|
{ { 0xeb947df3492d73ebL,0x5474817b0d32c2ddL,0xeb01bef7a9440e93L,
|
|
0xf604581d8085d1f8L,0xf69daa189f69ec8aL,0xc79ac48e71748716L },
|
|
{ 0x5141c75ad4beef28L,0xf7dfaf89901c44a6L,0x7bcbe4812e81ed85L,
|
|
0x57ed0e6f0c5a4423L,0x7cf189651cec85a5L,0x8ddfe8a5beef12b0L } },
|
|
/* 24 << 56 */
|
|
{ { 0x60ee08b46bc0b979L,0xa31cfd961aba7f4eL,0x66c05a6358bedf51L,
|
|
0x2ae6ec3854df9266L,0xe7dbda332771b08aL,0x44455d312a09fb28L },
|
|
{ 0xaaba39171cec98a5L,0x9b2b12258cb543d0L,0xf47a9cd16af6495aL,
|
|
0xe207f3aac6cd8a16L,0xf98952878ae828b6L,0x37e2475725844053L } },
|
|
/* 25 << 56 */
|
|
{ { 0x7c8137d8f93723a2L,0x78fa2e03cf552846L,0x3becd2627d11977eL,
|
|
0xdbc8e9b34e9a700eL,0xb2c7798d20decdccL,0xecae57179523bb6dL },
|
|
{ 0xc0fec0677fa2f633L,0xe270b10702aab6a8L,0xda280b374dcc797bL,
|
|
0x50a163b86c42945dL,0x4a3fd6bd363e44ceL,0x0aa7e33d38bca4e6L } },
|
|
/* 26 << 56 */
|
|
{ { 0x19c7f098a693d0aaL,0xb79d84244bd22a29L,0x19d91d12a9b3c2ebL,
|
|
0x2ae96bfdde735665L,0x2f9c9a773d8a85bcL,0xa74bdd46cbab80f5L },
|
|
{ 0x25a2486cdd9f70f0L,0xada155c9754513d5L,0x8aecd7db4c3e9494L,
|
|
0x9c3951ad2cf6665eL,0xd35780d44a9ec29eL,0x064983964cfd7821L } },
|
|
/* 27 << 56 */
|
|
{ { 0x23407aac0834f890L,0xad7b7b5599bb065fL,0x3254aa7e4ba2b4ccL,
|
|
0x37f37fd1663f9213L,0x0c72c3111c5a51d4L,0x6e6df84b9989820bL },
|
|
{ 0x576a320e1ae2f321L,0xa5fc617c3c62888eL,0xc4f1be4df6c40362L,
|
|
0x01b21892dbfaa5b3L,0x6fc0442390b9a5e3L,0x22a70c8791495c30L } },
|
|
/* 28 << 56 */
|
|
{ { 0x365e1382183aee81L,0xe9f2245275d289c8L,0x543cb5c7b70962e2L,
|
|
0x853971711cea2e37L,0x8b31cf530adfc82cL,0xf9a458bf3b67c705L },
|
|
{ 0x13b1cb3334a9b3a8L,0xa4325b403732f6b5L,0x39e997ba04e9df8eL,
|
|
0x24c0d6ebf1d542f8L,0x9cb3f1abd82901bbL,0xbbaef37a4cb34763L } },
|
|
/* 29 << 56 */
|
|
{ { 0xc4881080b08dd648L,0x21869be8f1fe4e15L,0x63e158b112501ea3L,
|
|
0x48a909ce32408693L,0x77fd2cf062b24495L,0xf7d1e134db9322a5L },
|
|
{ 0x4c02c8bcbdb19eedL,0xe03cd00e8a20b335L,0xe04271c530632562L,
|
|
0x549e5dba603e1681L,0xf01b38f95503b61fL,0x244c81920b3fb785L } },
|
|
/* 30 << 56 */
|
|
{ { 0xb423030c4b0c7247L,0x242d409f149f8cbcL,0x6094885e9c1f518eL,
|
|
0x6d299dffe04d97ebL,0x152d05bb09903069L,0xf5656895fe235dddL },
|
|
{ 0x801e7f736b22ac0eL,0x73aa6df46ba6dc97L,0xba498bc0d66e5d8cL,
|
|
0x8054e17d36b8c78eL,0x241bd2e21137fdf1L,0x8e79a943b97dec15L } },
|
|
/* 31 << 56 */
|
|
{ { 0x94e617abeb64269eL,0x39aef936b410ae02L,0xdbb744c325fcc976L,
|
|
0x5072bfab38a5b366L,0x3998aefea3f5d715L,0x0bdbf555a74e281dL },
|
|
{ 0x50d2feece24dd239L,0x835925ef46324c5cL,0x53c4eece7a4dad08L,
|
|
0x340fef207c358d83L,0x9e2189da30f04396L,0x2bc748d727e322cfL } },
|
|
/* 32 << 56 */
|
|
{ { 0x1238e097ae658422L,0xb4631ddb568df55fL,0x451254e7f74c5c50L,
|
|
0x238b16d28805813bL,0x23987b28925e7a6eL,0x93b72e2d2a1a10bcL },
|
|
{ 0x944c784d05e44b7fL,0x7d70fd098c8e3120L,0x6bf1ab2aead45716L,
|
|
0xd5f8f0e631c04205L,0xac062526a10b8881L,0xa1a83cf0fe5505a8L } },
|
|
/* 33 << 56 */
|
|
{ { 0xe1e05ff89ea47326L,0x88219a1ffbfc7f61L,0x9cbd0b387dcd3008L,
|
|
0x751d03847671a68eL,0xd73ed70d28e0387fL,0xf66f9cfea9485256L },
|
|
{ 0xac68aae1ae153e0cL,0x92eb6542e81b1282L,0x9617d45464541adfL,
|
|
0x81b4d94a9d489e95L,0xafd5cd4620f31ba0L,0x35700392e5a38941L } },
|
|
/* 34 << 56 */
|
|
{ { 0x52296be3b71ea9c4L,0x82b05a43424cadf9L,0xb6d329e8842699e3L,
|
|
0x9dfb91bf9370f2c1L,0x0188b738994ecc71L,0xa9a7b03b5ce8b100L },
|
|
{ 0x99198b2a25c33035L,0x772795a7e21895d5L,0x37dafa4c42173e01L,
|
|
0xd37f03933ab27d91L,0xf3500a7d2afad1f3L,0xa433b5fd87eac06eL } },
|
|
/* 35 << 56 */
|
|
{ { 0xdc193cb5243a97bfL,0xe367f27ff5715184L,0xc4bb95c6fd9120c6L,
|
|
0xd2bd176bbc5f7ba2L,0xf2c0f86de966c1deL,0xc69ab26e811e70cfL },
|
|
{ 0x95756460e87c55f0L,0x6b62ab136a59c832L,0x6e971c6c128448a0L,
|
|
0xca72482e91ea44a3L,0x2602d4795dca0f8bL,0x8dadd3e25519433bL } },
|
|
/* 36 << 56 */
|
|
{ { 0xfe0553be23246f68L,0xccc1d774d8ad4128L,0xbec668d8cc155edaL,
|
|
0x7a80e9b44231506cL,0x579cb5f42aa1740aL,0x3a61b84fd8b35a2bL },
|
|
{ 0x0478c05ba3b519f8L,0xf518ac09acfe39aeL,0xabc15e9076c956e6L,
|
|
0xff35db67dd55d268L,0xbe066679bdbba89fL,0xf7385df12062b845L } },
|
|
/* 37 << 56 */
|
|
{ { 0x279d7ffdfc12078dL,0xeb14155eb8f302e9L,0x5f1b11e165b3c14dL,
|
|
0x08510b461bd36b3fL,0xa7f5b2ffc9d73b4fL,0xe5e831557aa09e40L },
|
|
{ 0xbed67135cc3d88d8L,0x7b2775f7017a43d2L,0x9ce22ff24c58cb64L,
|
|
0xab88d04849ede1eeL,0xcac13762da63daa8L,0x70662331b1dbfc4eL } },
|
|
/* 38 << 56 */
|
|
{ { 0xe4f7022200a8a9adL,0x8d1bbab7d42fffcbL,0xe024970e368ad5edL,
|
|
0x231ef631b4c0c9f8L,0xb47ca0386760b411L,0xe1f297ff179e6d44L },
|
|
{ 0x2e5ec77d3e071736L,0x90e20be915b29c93L,0x33961b6dbb7e7237L,
|
|
0xa854df5b42176851L,0x67d223e4a8f4bac8L,0x5464a46f0dee39fcL } },
|
|
/* 39 << 56 */
|
|
{ { 0x525a553b32230b65L,0x7bbde6b816bb6a4eL,0x2f5bc6d229f12292L,
|
|
0x5d86858045fbcff9L,0x6ce4fb249f932964L,0xd7cd175098e05ef6L },
|
|
{ 0x794b0248e1366d8eL,0xa37afa66332098a0L,0x2dcc1888d9aac70cL,
|
|
0xa01ba83ec15b9fb8L,0xd34ddf851df4b59cL,0x92289e954f829510L } },
|
|
/* 40 << 56 */
|
|
{ { 0xdec879d51c9d09f1L,0xdfa9e7d61b371576L,0x8c705c7937fb3410L,
|
|
0xd770153e1f2a02bfL,0x208fc8f18043ba69L,0x58aebe6e25aa3453L },
|
|
{ 0x191b69e512941f03L,0x27dbb050d7966e0eL,0xa5196bb7d16bc20bL,
|
|
0x5b6bae47f22b30b2L,0xbddcabda8ce7b419L,0x6e3cfd373b9f5a39L } },
|
|
/* 41 << 56 */
|
|
{ { 0x605d4b83330c07f8L,0x4dbe47646a0ed45fL,0x1e715823d7e4163dL,
|
|
0xe337a67dcea3306dL,0x55abf0684f18a604L,0xaaf69d5ea9f57370L },
|
|
{ 0xddd09e8129784840L,0x17fd42b9a4fff5e9L,0xe99859e55acee616L,
|
|
0x41d691203b927ed5L,0x35cc99675168f505L,0xfc311c24431d7d60L } },
|
|
/* 42 << 56 */
|
|
{ { 0x415f7f0da581c54dL,0x67c678244509f31fL,0x36fb92eb988f449dL,
|
|
0x22d41b1a94181fe4L,0xacc68410df896026L,0x4a10e46f9ccc4df6L },
|
|
{ 0xf805a1191969cf2dL,0x7230a26b32ad355cL,0x9d200562e9abd845L,
|
|
0x2db90c3b5cb55349L,0x80b59daa29bcc42cL,0x81272ebc53d32149L } },
|
|
/* 43 << 56 */
|
|
{ { 0x6aaf15f27756bcffL,0x5391bc009b645589L,0x46cc4480a6fc61a0L,
|
|
0x6fde9d53293d676dL,0xd6c35628d7618399L,0xdda13a0853daac23L },
|
|
{ 0xb6e6c20c0fe7995dL,0x32eb3468d8d41d55L,0x8927d508c19c5995L,
|
|
0x3907eeed3c229e66L,0x509af79f27972057L,0x8a7f44f750e2f170L } },
|
|
/* 44 << 56 */
|
|
{ { 0xb91ffd21c87b3fe1L,0x0fe8389b34fe2825L,0xe22d45d74bf4c8cdL,
|
|
0xb575ae4cd6d8308aL,0xa7fa552e82994ba8L,0xfb67a86fecb08870L },
|
|
{ 0xc3bebdf8e6dabcb1L,0xef18b357b5bcf114L,0xed518499a4b8eca5L,
|
|
0x0fec83c5df16ed99L,0x5d353a5856b5649eL,0xc858c1d1cec900e0L } },
|
|
/* 45 << 56 */
|
|
{ { 0x7a65d2660d85e627L,0x96170bb90bc010a3L,0xaa6e0055da030ad9L,
|
|
0xa75ab280ff4e4a8fL,0xec14e68c0be864a3L,0x05424b9cc17723b6L },
|
|
{ 0x9ed54bb218ca85d6L,0x035edc14b78b34bbL,0xc116914929617416L,
|
|
0x0a00e0086cb0d801L,0xba40f1207d4a638fL,0x54b1e8cc9d8bd0e9L } },
|
|
/* 46 << 56 */
|
|
{ { 0xbbab4ab54c88db57L,0x68dbee6f9ee9558aL,0x31b988e140da802fL,
|
|
0x9d117c37e90b2221L,0x443ae099025b66c7L,0x8568bd6f2538a654L },
|
|
{ 0xf806d8636720df01L,0xe390adf2b649ad8fL,0x7851f8e039d1c315L,
|
|
0x8185ae1a5e650f1bL,0x3dccfc4c9b562532L,0xae99ae835f427c40L } },
|
|
/* 47 << 56 */
|
|
{ { 0x99542ca7564c7ad5L,0x682eace49a96f25dL,0x2d01b2488d933a6cL,
|
|
0xf96916ddb8604277L,0xad3259d12e4d7419L,0x9085251fc26981e5L },
|
|
{ 0x848219363d2ec970L,0x723ea6a5392351c7L,0x3fae69a55e5448c8L,
|
|
0xf6eee650dfb03d49L,0xe2e1df1ef8c58715L,0xc603b61f1a369206L } },
|
|
/* 48 << 56 */
|
|
{ { 0xcbbd8576c42a2f52L,0x9acc6f709d2b06bbL,0xe5cb56202e6b72a4L,
|
|
0x5738ea0e7c024443L,0x8ed06170b55368f3L,0xe54c99bb1aeed44fL },
|
|
{ 0x3d90a6b2e2e0d8b2L,0x21718977cf7b2856L,0x089093dcc5612aecL,
|
|
0xc272ef6f99c1baccL,0x47db3b43dc43eaadL,0x730f30e40832d891L } },
|
|
/* 49 << 56 */
|
|
{ { 0x7f3a3e5f4447ed08L,0xa6302f7bf94d49d0L,0x94fd2ad33b2abc46L,
|
|
0x98ffc01fe4249c1dL,0x6f3a53bf8db4549fL,0xfbae12df25566cceL },
|
|
{ 0x63fc92d3c2e84d15L,0xc355b46c4f5abdebL,0xb50b43a05678d0cfL,
|
|
0xf4d4b0b15681d628L,0xc9f11d63fb3bac7dL,0x444b748cda461eb1L } },
|
|
/* 50 << 56 */
|
|
{ { 0xafe9adafc9845a07L,0x484a9eb9df6a1305L,0xec32f0bdb0f111dbL,
|
|
0x742b41cddc7b100cL,0x5a7ea89d23c5f849L,0x1ea8801fa298aa82L },
|
|
{ 0x183e1750cb001f26L,0x66ec5daa49da5bbbL,0x8071ff322d05ab57L,
|
|
0xaea9e694e1944e0eL,0xc993754437b85438L,0x2c2467b4faaf4f22L } },
|
|
/* 51 << 56 */
|
|
{ { 0x38f87acce602c278L,0x72c79590515854dfL,0x9d466a765e7e2f6dL,
|
|
0xe5f6704772081935L,0xb4b56288ad958812L,0x7f4d9e1395b08242L },
|
|
{ 0xb38d0ddb962f0f6bL,0x969d4327e5f76463L,0xf7c7c799f6ac01f8L,
|
|
0x494066673e6ff230L,0xa81fa10dc7e9c1b6L,0x2fcf26bf8093c2d3L } },
|
|
/* 52 << 56 */
|
|
{ { 0xcca6e9cfa754256bL,0xfdd79280347723f7L,0x8179d6f52d69c6bdL,
|
|
0x156a53fa94cc8567L,0xb819d70324655f28L,0xf86872e2ebfb198bL },
|
|
{ 0xb158e73939ccd668L,0x655db8248de67826L,0x54399a79c621cf3aL,
|
|
0xc55900d498a09c9dL,0x5423edbf20278b3aL,0x06a625b280ba89cbL } },
|
|
/* 53 << 56 */
|
|
{ { 0x0f152d69869c4f68L,0x0ed4205a9f0068fcL,0xda68af4f25d4490eL,
|
|
0x715fcc60745c00afL,0x70ab559aad63dff1L,0x7d0a7b6a9b8a37ebL },
|
|
{ 0x82ab7a068bca8498L,0x4f012fb4297d954aL,0x8b139e6ed5f6a4b7L,
|
|
0x597316e4b856ac26L,0xeb64b5894387367aL,0xcc92eeabbacb7e74L } },
|
|
/* 54 << 56 */
|
|
{ { 0xb53560e968fdcf87L,0x4ed638bd3cbd0887L,0x57f3f38f6080d1cdL,
|
|
0x50370e0c1e4e3ae8L,0x14c87fad184a1ecfL,0x3d06f78d0af7b2ceL },
|
|
{ 0xd9370e24fd595621L,0x1e462483c9fbb559L,0x1ee5d81ca0aa5c0aL,
|
|
0xdb2524557419564dL,0x782ba91b57585be7L,0xb2d14bcc5c431c72L } },
|
|
/* 55 << 56 */
|
|
{ { 0x9cb9de6fd62ebed6L,0xb7f23b1916c6d571L,0x69b4a8dfa8b307b5L,
|
|
0x78a7f74e19dc7e39L,0x423405152f47c94bL,0xf1c2a5bc31ff2d82L },
|
|
{ 0x98c1c3f7b145387eL,0xdd9d24d885e635ccL,0xeaaececa07397bc4L,
|
|
0x6bf6a8469b0cd4c6L,0x68052950680dbd05L,0x81a071b60ce07df9L } },
|
|
/* 56 << 56 */
|
|
{ { 0xf3fa8bec0c61d5a5L,0x98f772fc0dedaa77L,0x45a382161146d42bL,
|
|
0xebef5d4a58821ebdL,0x21498af30c1f0e6aL,0x3d8699144758014aL },
|
|
{ 0x6f2276ecb625c7e0L,0x68d6a144fb55d708L,0x0bc836e0ad56b494L,
|
|
0x72b6d8850f58ef70L,0x0e0be2887bd7c1d1L,0x70549a879c277d39L } },
|
|
/* 57 << 56 */
|
|
{ { 0x39a445d2dbb2bb75L,0xda2a211b1ac42cd1L,0x934bee9a8e4cf8f9L,
|
|
0x5d0dde6a24801bc1L,0xb2d4261d23da4ea7L,0x5fa9059a7187cde8L },
|
|
{ 0x49298bb651f05f9aL,0xff0c4a0422a7bee4L,0xf466232da6a29be3L,
|
|
0xff2e157a995c1904L,0x3a4ee4537b31bdffL,0xb4a736d7e41f6eeaL } },
|
|
/* 58 << 56 */
|
|
{ { 0xaed55c123fa96c0eL,0x8f90803f6e08adf2L,0x349e5807015b7cb4L,
|
|
0xdb3f05e314656b3cL,0x9289bbecde8b2d9aL,0x3cad12e0c7f28356L },
|
|
{ 0x7a68fa54959fe89aL,0x2e7135d0a77f956fL,0xa0285cbabbe35884L,
|
|
0xc547ffe7131ab269L,0x82a902bebe33b425L,0x5a793a790c71b02aL } },
|
|
/* 59 << 56 */
|
|
{ { 0x2bb2a929c645c6eeL,0xfc6cbd471e651728L,0x4ec3f630c07af98fL,
|
|
0x118231588e4a8ad5L,0x99a2b5de1303f68aL,0xcc280b182ec9b8f7L },
|
|
{ 0x3d7b406ad7298d55L,0x63941bceb9f83957L,0xfeeb132c463a64c6L,
|
|
0x243a2e2bf76a6c8bL,0xae72bf2fdad18d64L,0x774423431987a4caL } },
|
|
/* 60 << 56 */
|
|
{ { 0x06de549d78dc1526L,0xa27fc0c1f52c5766L,0xee5ff3d8e9485b1eL,
|
|
0x7af2fbc64bc530dbL,0xa266d6c810f9dc58L,0x866abeed8bfa4d74L },
|
|
{ 0x50356d7fcb7c7018L,0x4ae502e07c962af2L,0xb98b449cf011990cL,
|
|
0xfcc8446b59e8535fL,0x25964ab0088776ebL,0x3848aba2ab6cfe8eL } },
|
|
/* 61 << 56 */
|
|
{ { 0x9f2c62cbe14a2c5dL,0xcd182e386b113f03L,0x2275ad4f525a15aaL,
|
|
0xd5b7d1d9eb373133L,0xd3c47b9b07929822L,0x60b043cd8fa8e8e0L },
|
|
{ 0x603a3403d3958f57L,0xefa36ad67b79c263L,0xfe33dd9f3742ac39L,
|
|
0x30f40b3bb249f9bbL,0x9d2902d20a3b2e7fL,0x173f7d1a899684f0L } },
|
|
/* 62 << 56 */
|
|
{ { 0xdcbeff5bf33bdff0L,0x963ae65ee9684a3bL,0xe03586882bcd272bL,
|
|
0x756695068942f107L,0x14319d19262e422fL,0x5c0ef45a2265b294L },
|
|
{ 0xeb897bd8a9f64203L,0xa3b259d742b1640bL,0xdc34ee2dce66355cL,
|
|
0x2fab125eb4e13438L,0x1b93a820443420b7L,0x79c46f97b4ba8382L } },
|
|
/* 63 << 56 */
|
|
{ { 0xafd8cb2006e55b9cL,0xc88f38ea2530a11aL,0x628d10bfe4efe221L,
|
|
0x00df0da42a8d983fL,0xed45860508a2fce0L,0xcd7882b86a01efecL },
|
|
{ 0x93ebd86c7efcbf7bL,0x578f9fe7e3db504aL,0x3c584008aa5e83e8L,
|
|
0x5bf38b4ca8368754L,0xcb4a9cf905c05ca7L,0xf77ab684c634f28fL } },
|
|
/* 64 << 56 */
|
|
{ { 0xac92ee1537d83369L,0xc968c187fecec65cL,0x29a7ca876e7a3265L,
|
|
0x0f2b7e7a8456c9afL,0x7471824e9754326fL,0x498687bf364d2ec8L },
|
|
{ 0x86d8aacd3c6ee351L,0x01ee6823f6f41e85L,0x9805fc881d79f7ebL,
|
|
0x377ac3a40040547dL,0xd39215d461b4e90bL,0x2547416e4c5fd81bL } },
|
|
/* 0 << 63 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 63 */
|
|
{ { 0xa10292b907a6fbf8L,0x292c1a203fa6235bL,0x7a36f18f73ad7a1fL,
|
|
0x8b2c7b0c5897b11fL,0xf7b9a272cb664c61L,0xb6d366af8f81e22cL },
|
|
{ 0x3b99b2118e342bbaL,0x03ce158bb06ced2bL,0x3af1175d001db74bL,
|
|
0x526f08467159cb8aL,0x6a3c6e1febde4601L,0xfad5963b8c232eacL } },
|
|
/* 2 << 63 */
|
|
{ { 0xa54768dab1b43eefL,0x13e41f47e14fda22L,0x774df203faef6863L,
|
|
0xf795a034bd7471b3L,0xf0958718b47de2e9L,0xc92f7888e1160cffL },
|
|
{ 0x86ded97b0146c790L,0x015918f5480a4b7bL,0x05588920424e8459L,
|
|
0x37455914eecf8b2bL,0xe7d3df1fb968a6faL,0x07a0ffd6bad0719fL } },
|
|
/* 3 << 63 */
|
|
{ { 0xf13f55e619f6ebccL,0x63720df2a266b368L,0xdbcc937f3bf1a890L,
|
|
0xd3faff625f326fa4L,0x8b33bae9019730d0L,0x7879782af9961795L },
|
|
{ 0xec7e75bc93735e44L,0xfbbf6d225d5702d0L,0x26b6e1d53bc2ddc5L,
|
|
0x00345bf714941d10L,0xdd719676a745c77cL,0x2869b11881c523dbL } },
|
|
/* 4 << 63 */
|
|
{ { 0x2566021f98d23f6fL,0xfb883e1234ca97caL,0x34e047a5d9f51b69L,
|
|
0x0b50d91df8efa646L,0xc2bbcbb2971f584fL,0x4136f0e40907c91cL },
|
|
{ 0xa7ebeb0de735cc48L,0xa7d1bedce113c8faL,0xc04d9a073f5c962aL,
|
|
0x95c155e53ff74a2fL,0x923c65a53df0749dL,0x10d5f81227ae35d0L } },
|
|
/* 5 << 63 */
|
|
{ { 0xc08cf7a1a128747dL,0xeb34a1c02eca6776L,0xff6e7cdfb596491aL,
|
|
0x17024305eddd8bbcL,0xab92b54cf3c46414L,0x2a995b7759134eb8L },
|
|
{ 0x97525904e48cb259L,0xeac065ed1e1da01aL,0x16cab74a14c5bf38L,
|
|
0xcd3e2516c14eda8fL,0x3ff38094a8de7a9eL,0xb7340214359d653eL } },
|
|
/* 6 << 63 */
|
|
{ { 0x4d37c2663e7a369aL,0x092dc32c3ae62c55L,0x566da2e928ca9d67L,
|
|
0xa9771c1a79beb236L,0xaf6b97a976f801e7L,0x3afd62e771259358L },
|
|
{ 0xc23a5e32cd541e77L,0xae4c90a301660ff9L,0x3f3a233b1911ccf2L,
|
|
0x93e4664cfa3b3aceL,0x4bdc14832d4c5f5cL,0xfe03d3c36abf13c0L } },
|
|
/* 7 << 63 */
|
|
{ { 0x9649468631b26990L,0x55222e9fe3fd62f4L,0xc8eaba742ee74b8eL,
|
|
0xfa43617834d198efL,0x475b688e892748f5L,0xc6eb426541b9822dL },
|
|
{ 0x535695bebdae951fL,0x45e69033e909cce4L,0x40354e72b1829154L,
|
|
0x1005ee6d5c56c3cfL,0x61b36a754a3fec51L,0xae644f3872f2f56eL } },
|
|
/* 8 << 63 */
|
|
{ { 0xd5469c7becee6e87L,0x056180bc33a4c917L,0xf881ca21a16caa7aL,
|
|
0x221de182e6cc7f39L,0x10d61ab531378723L,0xfb763bd9520c9660L },
|
|
{ 0x145214cd0d6b1541L,0xd9f7ff2dd70223e7L,0x9fce59e30cb1fe69L,
|
|
0x2e6e77fa3e299fe7L,0x3a0cf652d5af78cfL,0x50cc42c53e852159L } },
|
|
/* 9 << 63 */
|
|
{ { 0xd2536452b8da85a2L,0x5c15dabe331197daL,0xf5a89366aecccec9L,
|
|
0x8f998baf2d8352fdL,0xb10e6c80f56159d2L,0xf61ceff379eb9affL },
|
|
{ 0x05bcb93d1c4283a2L,0x4e1abc521d8cd941L,0x898c9a49b46b343dL,
|
|
0xcf352f3c6e423ae6L,0xb1db207f6fd42c89L,0x08f36a1edab295b4L } },
|
|
/* 10 << 63 */
|
|
{ { 0xebbe18b7ed31fabaL,0x046e248dd74971d3L,0x3ddf5a2a0b24f97bL,
|
|
0xf9a400c262fc6124L,0x9ad9b0bc6b03b73aL,0x9fa97c56153c8fdeL },
|
|
{ 0x1b6477da00b73ea7L,0xec59f64a21b2f3f3L,0x4428712895306955L,
|
|
0x4b5db01db9e77579L,0x237edf0bde05e0d1L,0xac904b01855332f5L } },
|
|
/* 11 << 63 */
|
|
{ { 0x6a37fc505cf708c5L,0x8de4dd7c30497ceaL,0x6978648161b8bf39L,
|
|
0x3cb303375d7362eeL,0x0e24d09237ed25e6L,0xd474f3dc2f69ce20L },
|
|
{ 0xe15d98a0edb40541L,0x5e4a87c91466f464L,0xc3cefc9eb68923cbL,
|
|
0x66f10920f22c9de2L,0x3c18f9ea9a51b3f2L,0x706237bef40e6204L } },
|
|
/* 12 << 63 */
|
|
{ { 0x0791dfa1df764716L,0x31bf68768c66da07L,0x49f25b77ccedf4f3L,
|
|
0x05170ccd5d965c05L,0x37d9521bd49e6727L,0x1548251286a00176L },
|
|
{ 0xdab444936c00eb48L,0x102c6b95e00c5c5dL,0x43660c3e4c2506baL,
|
|
0xb2fb26165ec6f132L,0xccc4221a99ac7691L,0x05b29758a576deb5L } },
|
|
/* 13 << 63 */
|
|
{ { 0xee84fe05a5731e27L,0x3251ded005713149L,0xbfeeaf3c7c5e7260L,
|
|
0x3db0b6b2f048907aL,0x38728debb4a6b923L,0x853997d9d1142e10L },
|
|
{ 0xc636e3874b641cd1L,0x69b10f43c629f4f7L,0x6f10a95c7deddd0fL,
|
|
0x85b5a7a317f56374L,0x28cd59435c329333L,0xb37621f7d1e476a1L } },
|
|
/* 14 << 63 */
|
|
{ { 0x3a17f86d48341ba2L,0x558ef6e8ba6375bcL,0xa86ea3f0927935e2L,
|
|
0x2f43742ac04d4fb0L,0x32a30bce38769421L,0x5a6d6a62d8d3912fL },
|
|
{ 0x34154b19c20e3fd9L,0xe95d3843fc85f907L,0x26cfbe0f9f7a13c0L,
|
|
0x50d50b3a531736e5L,0x81849773b2cfa2c2L,0xc81523e63ba8ae5fL } },
|
|
/* 15 << 63 */
|
|
{ { 0xac9b0573c2f899caL,0xd9c4fc1ff747ef78L,0xbc205571c7714e62L,
|
|
0x726bbf311919f8c8L,0xfff68adaaedc0450L,0x9f4bc0b9f4001089L },
|
|
{ 0x5d10a660fc5dcfeeL,0x1ea644fbaa9f25adL,0x4f5cf102e5a144d4L,
|
|
0x4275b6021521f249L,0x9c62750522d8bcdeL,0x3ebbfc5bb7df57afL } },
|
|
/* 16 << 63 */
|
|
{ { 0x4a873076ad8c49b7L,0x891598ce7146575fL,0xc1d3042f427ea198L,
|
|
0xdc592111ed259219L,0x0abdbd16234850caL,0x26b9412643b6fe8dL },
|
|
{ 0xd3c79d1736a1cfe9L,0x576386219a2b3bafL,0xa736535d5a98bf65L,
|
|
0xacb3b7ddab2cdb2bL,0x37d3743adaaf89eeL,0xf19d9aba0b348532L } },
|
|
/* 17 << 63 */
|
|
{ { 0x013b49753e09dc4bL,0xe548f7bc2d034deaL,0x65ffcd710b861c72L,
|
|
0x80f4d7a2e07dac01L,0xd1889dcf56c1a8b1L,0x14ad62d4789b133bL },
|
|
{ 0x082e3c082e80532bL,0x0562a7d80b9d17e2L,0x4f8613095d57e2a7L,
|
|
0x79f21d7255f93514L,0x22c4f68c595c0f33L,0x91d9bd5ba22c0c33L } },
|
|
/* 18 << 63 */
|
|
{ { 0x30539655b29eff74L,0x7ba206ebe723167cL,0xe20c3ce488110a02L,
|
|
0x52b406b97c124481L,0x050111c68c74a728L,0x3d594a6bc57cd9feL },
|
|
{ 0xd4b2a271e5f952d9L,0x7e52d63b080da0c9L,0xa6463d65f53a6cffL,
|
|
0x9ebcffcfcc678e26L,0xa657f27b2f2b9424L,0x850bd2b871da5c9aL } },
|
|
/* 19 << 63 */
|
|
{ { 0x9f3c395b7d4e1a14L,0x2f99aa23bd7301efL,0x50eee34e3017f166L,
|
|
0x88c951ff4c9cbb4dL,0x90c0422ad8dda2f4L,0xe8361775d49cae19L },
|
|
{ 0x654db0d250da6138L,0xe4ada30ee03c34a3L,0xde0d3787832ccf4bL,
|
|
0xd1bf435641b94c86L,0x347531c37db87eb5L,0x6942e7e30fb51863L } },
|
|
/* 20 << 63 */
|
|
{ { 0xafad01a0d93c54b2L,0x659bff9695536c49L,0x7b91aac2b9734c15L,
|
|
0x55c7f08224e02f59L,0xebcb71e73a26e551L,0x5b7225f76c6343ebL },
|
|
{ 0x021c48fb17d5e775L,0x57536a42bd859c87L,0x24852cc0ae2b63e9L,
|
|
0x21515020c0ce0ef1L,0x2ac7336c8fed825eL,0x4bc87feea0152819L } },
|
|
/* 21 << 63 */
|
|
{ { 0x7f9813e94b82bbd5L,0xc01f14624e697d08L,0xf02d9eb293de010eL,
|
|
0x290c503c50db5ea8L,0x339341f033edb639L,0x962abf5f7cd7f6c1L },
|
|
{ 0xbb1041ae95fb9e8cL,0xb8c9f9d6dbd8525fL,0x8658a54f0f5244b2L,
|
|
0xe9326e455b84eea8L,0x9ebdfe4f54f11de8L,0x3c90b0cedc740440L } },
|
|
/* 22 << 63 */
|
|
{ { 0xde6973e22683ad60L,0x35fe4650eebceb58L,0xbcdbbabf7c719a33L,
|
|
0x8bce8111c076ca95L,0x8f7176deeb6bd711L,0xd04e9769d240a56fL },
|
|
{ 0xdef7d8fac8e218daL,0x04cff5976df28152L,0x2a1af6e24bd1cca2L,
|
|
0x9397014edcb911e2L,0xa251339038677b96L,0x0dc48a8fb61b462dL } },
|
|
/* 23 << 63 */
|
|
{ { 0x42eab6610197a8d2L,0xdc4a557ade082468L,0x4cf68d6090495f66L,
|
|
0x6dba8de79032929eL,0x304b38cc827b5d7bL,0x8e57275cf32f5063L },
|
|
{ 0x4b555a0337280c95L,0x49c1e532ef8ddd18L,0xa2d8eed45459adc1L,
|
|
0x2b353217bba3cf41L,0x11f3c90cefe8f005L,0xb3367fa0d55916c4L } },
|
|
/* 24 << 63 */
|
|
{ { 0xe7c396d64654712cL,0x1fa5ea507a26e994L,0xaa98768709012b83L,
|
|
0xf1ef9792e9b17e98L,0x2c22bcb06dc2db10L,0xae42ddf6ed4be80eL },
|
|
{ 0x672080f62e743405L,0xa15a7f975b7821d1L,0x0cd912f247adbf07L,
|
|
0x6919c0dcb6c4ae8fL,0x62b13edd14c6253cL,0x66f35919f8032287L } },
|
|
/* 25 << 63 */
|
|
{ { 0xc992f6fe05f3b31fL,0xcdcf59b56a3d4522L,0x69901b3815df24b8L,
|
|
0x4b9874029f6153b3L,0xeb09cbc1bca86176L,0xbe78cd7d446289c4L },
|
|
{ 0xd4aced42b933fd58L,0xe0dc6f306a326de3L,0x4bef32960542a5f8L,
|
|
0x3eb8d14106f537c3L,0xbb45a994b6f0d0a9L,0x340c025d3f4a01b8L } },
|
|
/* 26 << 63 */
|
|
{ { 0xdfcb3255fa371ffbL,0x3fb4a22c92bb6b01L,0xd96efc1605396353L,
|
|
0x2ce2228ce5d2bc25L,0x59483843212c7eecL,0xdca7173882996047L },
|
|
{ 0x44dad56d8de87b1dL,0x622f88910b6222d5L,0x1abbc501d5d3a9ccL,
|
|
0xdbed73a5ebe52e80L,0xa7f785b1c98c56efL,0xa32471d3d343aeacL } },
|
|
/* 27 << 63 */
|
|
{ { 0x65d39f8ae510cee9L,0xcc60cd118dc5e825L,0x3b6ac6627ed7198aL,
|
|
0x5d7fc001f33edc87L,0x0218ffc453e978eaL,0xecb762e57bdfcf16L },
|
|
{ 0x8e7122047966b202L,0x1c502404e6b99602L,0x0acb73f1131cc36dL,
|
|
0x81d1132ed4369a1eL,0xbca89fe8377271a4L,0x1353a883262a2e18L } },
|
|
/* 28 << 63 */
|
|
{ { 0x2713b58c9d628e1dL,0x3729960afaa8ba1eL,0xc3438130ab53bc93L,
|
|
0xcef9eda5e9c165e7L,0x9bacd1c3fd02650bL,0xbb300334540ece72L },
|
|
{ 0x21f5a5d3d9c4f0edL,0x1ba32e4ff7c19269L,0x8f073beb2cf320fbL,
|
|
0xb49766c45599646fL,0x68180d6649e4f200L,0x8203d8aeeaeddb36L } },
|
|
/* 29 << 63 */
|
|
{ { 0x7b19780fdbbbf57eL,0xc094d6d9c2207635L,0x241898ac6bb652d6L,
|
|
0xb61b25724923ce29L,0x26ecd97508000048L,0xd08c54e5f5f96b8fL },
|
|
{ 0x19019968c1604cc5L,0xa9940e9edc3f31b9L,0xbad2d245c3614a9aL,
|
|
0x7d3cdb2d411e63b3L,0x88d842c3223638ffL,0xbc5427d0cfba2b48L } },
|
|
/* 30 << 63 */
|
|
{ { 0xe6d78b7f60085b20L,0x0aa1d62bf318d226L,0xaaa4391df6461e64L,
|
|
0xb15ee4a7213c949bL,0x183f043be4bd3dbbL,0xa1a87996ca49f456L },
|
|
{ 0x6030ed2ef6ed22bbL,0xa2002784fab7f7a2L,0xfc40914dd850cdbaL,
|
|
0xe63edc4c7df80ba3L,0x8fa35ab57b27ddfbL,0x3bdaec795096ea04L } },
|
|
/* 31 << 63 */
|
|
{ { 0xf33cc5ee452881ddL,0x89c144a38966d47fL,0xbfa8395149156a93L,
|
|
0x0069bff358707b05L,0x2caf814cca12a0b5L,0x1ea71ce71794450aL },
|
|
{ 0x08fd2b1c63d22a26L,0xdb08594eb3876737L,0xf459049a57b3669bL,
|
|
0xf64ecaeefee0d4ccL,0x9da2177c63f233a4L,0x042fcca84e54f053L } },
|
|
/* 32 << 63 */
|
|
{ { 0xa68295da2caf088bL,0x23d6439a5c8709feL,0x8deba0cffe0c3df0L,
|
|
0x5b4d037b3cd00a1aL,0xe9edc429aa0f9088L,0x6f5827e35847def7L },
|
|
{ 0x9739d03d306ad966L,0x7c6b18afaed51d04L,0xdc3d34ff1759060aL,
|
|
0x029e9aa9a7e94dbbL,0x2a3cdfa0f7e8b7f3L,0x42f87bf0bbd8f6f4L } },
|
|
/* 33 << 63 */
|
|
{ { 0xe36941004ef8cf5dL,0xcb4dbddf4d8bb768L,0x0610858e828c717eL,
|
|
0xb4cf22cb2bf53239L,0x938e49f16a3e7a71L,0x1dbbb837e73c7a10L },
|
|
{ 0x26ea3108db1b58d0L,0x1ca340abad2929faL,0x1d4601938ecb1f6aL,
|
|
0x060543510424fd93L,0xdbfc403f0303dc50L,0x142ad48dfc0f4007L } },
|
|
/* 34 << 63 */
|
|
{ { 0x8a8258eee6a52970L,0xf2d13a33a3882954L,0xd312768c38d48e32L,
|
|
0x78a70e03e9369eb8L,0x02ba8d2b69228d48L,0x7f957a33b3bfeb28L },
|
|
{ 0xafb22cd20ab2d0bfL,0x335304ccf8cd44d9L,0x0587a6f256009a3dL,
|
|
0xc0bc7278023b2530L,0xe85f2ec5f37c6727L,0x045f156003f5a081L } },
|
|
/* 35 << 63 */
|
|
{ { 0x6d71a45274ec55c2L,0x0d064bdfed33da75L,0x1aa4d77ab503afc6L,
|
|
0xec08340c5cb136e7L,0xf096fed6ed11d9faL,0xf232d1b82f81e148L },
|
|
{ 0x71cc9b78ae9b3374L,0xd80ce28668bcc1baL,0xe8f4bd170274926cL,
|
|
0xa7ac120f100da329L,0x9f071c6352a482f2L,0x76d85a8e842d6ef1L } },
|
|
/* 36 << 63 */
|
|
{ { 0x516f138bed210253L,0x5ec2fa324433461aL,0x0dbe2c66cdaf1280L,
|
|
0x086b91e59fbf3318L,0xfb0223ee399a1ca6L,0xd6f86d9b0db5b20fL },
|
|
{ 0xec02bca25752d618L,0x952fafcaaf69f3f1L,0xf304cb7533c4d294L,
|
|
0x78085727dac65608L,0x22f302ef840a4466L,0x33fb889dc371c31fL } },
|
|
/* 37 << 63 */
|
|
{ { 0x4aa2f1c36abdcdf4L,0x80963f8251da8d8cL,0x5647a356ac008cf0L,
|
|
0x40a78c45fc10452fL,0x2a3b9da1ca2d6a31L,0xa4d177760f0db94fL },
|
|
{ 0xcfd600d9939941acL,0x256e44c142c3fd25L,0x85bccd42ab3f9d41L,
|
|
0x83e93e44d018298cL,0x569f54d474a5fb37L,0xad2c613af2ffcf8dL } },
|
|
/* 38 << 63 */
|
|
{ { 0xc63e6f7c22d515abL,0x3fabfef42ad30174L,0xf13a0126b1c65411L,
|
|
0xe269e956dce87183L,0x44136834a83e0249L,0x554e731831958850L },
|
|
{ 0xd287755696569aeeL,0x5af275e9274bf4dfL,0x7056f958197dbfdfL,
|
|
0x699f5a672169811cL,0xd9a857d92c1c7c3aL,0x62cf7431843bdac1L } },
|
|
/* 39 << 63 */
|
|
{ { 0x974fcf5529d0c948L,0x104d7df0693c5379L,0x4f851c397dadfb28L,
|
|
0xcd5bc87c233c02c8L,0xf7fa16e82c8c1c04L,0xed42de484dc18a19L },
|
|
{ 0x213db3a5b4366736L,0xf6eb5c9517da3d1dL,0x4d04ef1213b304ecL,
|
|
0xba7bd9afaf74e164L,0x956a5f7bab319f50L,0xe733891ce2a4932dL } },
|
|
/* 40 << 63 */
|
|
{ { 0xaa4711f54f890542L,0x862421d9eba822c4L,0x2f667179848280fcL,
|
|
0x4de16d87c201ed75L,0xd20e1399c5e61b5dL,0x3f7114b49ed67ec7L },
|
|
{ 0x561fd4979b5a88f9L,0xb202eb86d84db2c1L,0x67d8fb90c8637d3dL,
|
|
0x3d1d78a1032b1853L,0xe07bf775ef1af9acL,0x691e1deea57d6adaL } },
|
|
/* 41 << 63 */
|
|
{ { 0xe236e42b2a6045fcL,0x4a6b7be7613f1c5eL,0x14136ccbf57b1aefL,
|
|
0xc3a8a6b9c7b34813L,0x63b0998c5f5cee69L,0x311bfe2c3481a229L },
|
|
{ 0x4dd2325ff0aba408L,0x1b8a3f739a2fdff6L,0x4845cde0dbafe0d2L,
|
|
0xd092bb22cd37b02dL,0x35436f9d600fe0efL,0x63c580cb065f379eL } },
|
|
/* 42 << 63 */
|
|
{ { 0x38f98360f48948b5L,0x1a1d67a97ae3ad67L,0x79966318ab91b44aL,
|
|
0xb69a75b8dfea0b1eL,0xbb18e5fa05d4d71dL,0x80a14dfe03b1280aL },
|
|
{ 0xe549c8f14c17cf7fL,0x91da31098969b5c4L,0x1e3e8f08ccfc1732L,
|
|
0xf1cfb3ad0c85444eL,0x6854b52a628bebbeL,0x8a5e2d85075f04d3L } },
|
|
/* 43 << 63 */
|
|
{ { 0xd428f75c5aaa1da4L,0xf192162dd224691bL,0xc30f5ccfd3a50718L,
|
|
0x82e2b585e9e0f738L,0xc7fb4dc15cf3fd23L,0x8a52eb37e4e2b37dL },
|
|
{ 0xd5bb892bf1702cd4L,0x64b8ccd056b92a51L,0x98ab053f8988e2e6L,
|
|
0xd56b34022f104643L,0xf09017be073886d7L,0x0283e9eebf6eaea0L } },
|
|
/* 44 << 63 */
|
|
{ { 0x834701da3801c65dL,0x5bb35c48955aa27dL,0x0ef0f375db7ad387L,
|
|
0xd25e337f06cd1d53L,0x757a1f9d90cd91deL,0x1604f153d61bbd60L },
|
|
{ 0x6a01e8cf8bb95dc4L,0x34b7be6275bbdb13L,0x0a96b3a121e9b029L,
|
|
0x25615c3b2946df44L,0x5eda7d1919d04842L,0x08317975fba84668L } },
|
|
/* 45 << 63 */
|
|
{ { 0x4a4dd7bf2bb5fba0L,0x0ebc07f3c84c2304L,0x054f2e448daa5099L,
|
|
0xbf8949da3ec362f1L,0x2e4a677c1d7d73f5L,0x405e3ad24dc70fbeL },
|
|
{ 0x2958e956c7e46fb3L,0x34e0d7f1b2522e5dL,0xc44b95e25e371e3dL,
|
|
0x62e348a4d91baea4L,0x8d9e89e24c09e110L,0x8cb886f6b1c1e356L } },
|
|
/* 46 << 63 */
|
|
{ { 0x66b16f6033e8683dL,0x3435ab2560b41c5eL,0xd5b89f51d452e049L,
|
|
0x4b5253a73aac0092L,0x01cae436f9d2e2c2L,0x789de14637e8ce97L },
|
|
{ 0x8f50541701a1c2e8L,0x8c77dbdd798a8404L,0x5a264906b6e91e68L,
|
|
0x36761ccc3c6aafe2L,0x5809baa37e50f9e7L,0x0b50904e28fac969L } },
|
|
/* 47 << 63 */
|
|
{ { 0xb6360372308785eeL,0x0c9913a68cf10e55L,0xe82b0f470e67c99aL,
|
|
0x0bf2d24825399082L,0x7aa3edfca86fe16eL,0xf534ec4e731a4956L },
|
|
{ 0xb71d5d4eff26e993L,0x320eb7ac7bd58ef3L,0xe5e4c5f30cafd658L,
|
|
0xeb6b8e0a21a06cedL,0x037d0faf6f76acb1L,0x39c76a6ed6f13f81L } },
|
|
/* 48 << 63 */
|
|
{ { 0x12474bd8a55a3a4dL,0xe326aaf19e471af4L,0xf201a9308caadaa6L,
|
|
0x546821f835304341L,0x7fe452c3088353e1L,0x8f1ff628fc82566aL },
|
|
{ 0x49526f46d99f8967L,0xb19c80c0a4009690L,0xeccf97591cbc0716L,
|
|
0x2e13ae2caf4cbc8bL,0x12b0df13f32e29adL,0xa2005d6e0b1565f0L } },
|
|
/* 49 << 63 */
|
|
{ { 0x9260321bde788968L,0x4aaf1752886ccc74L,0xf94ae636c06b1d9bL,
|
|
0xf0c858854954ae43L,0xaaa735866c42a104L,0xcab59d914e782db7L },
|
|
{ 0xfd12f9ee01ff3a1fL,0x35eb6104b546d3c5L,0x97d839e075ca1425L,
|
|
0xa77712f452428003L,0xf5dda4e8bd9f30e2L,0x0c3ab97091d6f540L } },
|
|
/* 50 << 63 */
|
|
{ { 0x58734b3ca68716ccL,0xacdcfdd2acfb5719L,0x97074bac7084cf23L,
|
|
0xf8d4f285d0c81b66L,0x5ea926e2ef541e44L,0x65a8e25da2c04e0fL },
|
|
{ 0x67e2380f06258485L,0xdc00f2ed9691a57dL,0xd37b23fd6b80274eL,
|
|
0x57f1604f2fe10aecL,0xcc21a4aeffb33ceaL,0xf33a344bf75eaa02L } },
|
|
/* 51 << 63 */
|
|
{ { 0x24ca6fc56969f55cL,0x6fe18be29a7a9753L,0x5e9a7ed36af8da90L,
|
|
0xf6c261b7ed493388L,0xbe9ac24beef2b77fL,0x0357ab559f244e49L },
|
|
{ 0x5f7953375f1b5b9bL,0x27dfdecaa9bc503dL,0x0b2091b55c0e3ee9L,
|
|
0x1f4f7866d68cb87fL,0x336c2c127a442a9cL,0x88267fd1d3f2ab78L } },
|
|
/* 52 << 63 */
|
|
{ { 0xdb891eedd06014e0L,0x69685d6103e9970aL,0x3a612db402838113L,
|
|
0xc1cd7b3adcdef0b0L,0x612b299da41d6c1eL,0x982161ed0ed386a0L },
|
|
{ 0xb36bbe2f3ea1bf1eL,0x0d8c3752ceb2a5ecL,0xc02cd7f6ec03bdddL,
|
|
0xa87977c152631d9eL,0x7b546cc37e398d7eL,0x5b1218a804845671L } },
|
|
/* 53 << 63 */
|
|
{ { 0x52cd86c68a62f0a0L,0xc437c2af4d29c896L,0x722a337a45aebfe3L,
|
|
0x03b13844d8a9de8bL,0x41a005bb8510aae9L,0xf42399ffc63af92cL },
|
|
{ 0x004d29cfcd93390eL,0x472de98741dcfa34L,0x2c71ae744e7cdcc4L,
|
|
0x11a5c2f8409816ccL,0x320ca246a96cef60L,0x72de4287f3d57621L } },
|
|
/* 54 << 63 */
|
|
{ { 0xe3e7a3eb3771a0aeL,0x781156e9b6dd5304L,0xbaee3a8323e31e6aL,
|
|
0x66d1569a08985bf0L,0x56161e202d75cba3L,0xf9c23c102a944de4L },
|
|
{ 0x27ac8f454e129ea5L,0x8b991ba788050aaaL,0x600c96ffa5d052f6L,
|
|
0x0fbe944df244984bL,0x3801026fa204c36aL,0xc4bfa1994d55a584L } },
|
|
/* 55 << 63 */
|
|
{ { 0x11b200c6a32f5c81L,0xc4ab4cf43eabe341L,0xa21468f06f339f5aL,
|
|
0xf20c2c5a729438aeL,0x3e68031e3a067c3dL,0x3962a92f062c8371L },
|
|
{ 0x389b22835b000f3dL,0x98f3b679250b8666L,0xe283c2b4eea91464L,
|
|
0xd35b14de1e1f4c08L,0x9ae72567d79d8683L,0x2c37b162a3b2a840L } },
|
|
/* 56 << 63 */
|
|
{ { 0xfa3e43e56cb173d1L,0x2502258d4591b5a5L,0xae8c4b558ca9682aL,
|
|
0x8cb1ffb4ec81a288L,0xd11ae888bfc84fd1L,0xa3b083a0d774577cL },
|
|
{ 0x119b41c11da9afc5L,0x44bc77622934e22bL,0xa04694f37c639d6cL,
|
|
0xd5e1ce5732c5b8eaL,0xd507c39b9749e8b6L,0x16cc0b5755255b63L } },
|
|
/* 57 << 63 */
|
|
{ { 0x66fe7a39c4955e7aL,0x25b0b3e5bb11a1baL,0xb82c2cdefc573bf3L,
|
|
0xed33c0e8281a3927L,0xd068c8901ad799d4L,0x052801ec9cbc73edL },
|
|
{ 0x614e4aba0faf5c5dL,0x50d7b0a89f66d391L,0x7bdfbf5fc18e88a8L,
|
|
0x1fc93e1f4380d2a2L,0x8241dd5f27d952d0L,0x44944d9c3a3f79d5L } },
|
|
/* 58 << 63 */
|
|
{ { 0x808e2693c0edcf36L,0x4725b5aa87c254c0L,0xd1e464644d317973L,
|
|
0x3e59efc2393049d2L,0xa4c9f340d3e0d17dL,0x69b40727abdf3022L },
|
|
{ 0xa1d85395317058c8L,0x2cec2a040cfa7c13L,0xe3c16f7634236cd1L,
|
|
0x566b403a3e52fe3eL,0xfd6065bdd6923cb6L,0xe769a89a5019f94eL } },
|
|
/* 59 << 63 */
|
|
{ { 0x9b1f6e9042a1cce9L,0xc6c870270511f865L,0xc924caa72a3c29f6L,
|
|
0xcb674fb068e604f8L,0xe997b0b8330c2dedL,0xf5b315a04ddab219L },
|
|
{ 0x6fa1dde6575d3ac3L,0x32ad27f735e65e56L,0xfe723ec2e81b1ce4L,
|
|
0x149983f8985d7286L,0xa1d350a0492ecc9aL,0x12a51f8c36a0707aL } },
|
|
/* 60 << 63 */
|
|
{ { 0x71e5df78614f6f37L,0x5cf0e08da0b80beeL,0x1f8dae171e32051fL,
|
|
0x54ae365d83bc233bL,0x97ea005b1b84aaa6L,0xf4766d9264c75139L },
|
|
{ 0x9b93bbf241215701L,0xb18f042d8cf8a865L,0x5dfb96dd0867556fL,
|
|
0xe9fafbb8597fd6a1L,0x729b2f50fe48bbc6L,0x2cf85f6b7f37ff9bL } },
|
|
/* 61 << 63 */
|
|
{ { 0x3e7c871024d197f2L,0xb635595bafe9c29cL,0x302f4fff194e084cL,
|
|
0xd497ce7c18edf332L,0x4081c7aa062672a4L,0xe886a5b28afa97daL },
|
|
{ 0xa7e922b5786e1bfeL,0xabd9a18bbd7ffb7aL,0x1f4f5b9356341b58L,
|
|
0x1726484344969ab1L,0xc4a0b557e668a479L,0x5ad1c062bf4f3343L } },
|
|
/* 62 << 63 */
|
|
{ { 0x4ff86eb693d2b958L,0x4513fe1b784f628bL,0x45f4712573b5bb80L,
|
|
0x25aa3d36c987bb15L,0x12b1e65bb48163f0L,0x9d0cb4aa9801592bL },
|
|
{ 0x02c0c2aa3718bc98L,0x79b03df99c306353L,0x097d8d8daee5144cL,
|
|
0xebed60774621d7abL,0xa8edf06e4b52e72cL,0x40c86f181dbca7d2L } },
|
|
/* 63 << 63 */
|
|
{ { 0x65c7144a5e84482aL,0xba6f92644d4f7553L,0xf4dfe807d9c2524eL,
|
|
0x1333dd7c054403b1L,0x44557e880156451fL,0x5dbda4d80824c813L },
|
|
{ 0x59e204959857fec6L,0x42f4068f1b1eeb99L,0x067c3aa21d59bde9L,
|
|
0xa9c4c3eeef27419aL,0x99fc994b2ec87652L,0x4f1607581578a996L } },
|
|
/* 64 << 63 */
|
|
{ { 0xcd8c2ec9378ef62bL,0x7f4a3c5491a7c4b9L,0xe12386d4db83e1abL,
|
|
0x9a792032bb549bb5L,0xaf81cba62807c0f1L,0xd4ad7d87abf2008eL },
|
|
{ 0x9d7a72307e9ad6cdL,0xb30636b08b517b2aL,0x47c324daec900516L,
|
|
0x408cd0d37193eb30L,0x8f0bcce2d315c655L,0x540ad4e0869d6c22L } },
|
|
/* 0 << 70 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 70 */
|
|
{ { 0x4b5e753ddae0ff8bL,0xe55c83e4da3d97b5L,0x4034d75f42fa905bL,
|
|
0x89b85edac33e462bL,0x31f413c3058de3bbL,0x66c01c806ba75391L },
|
|
{ 0x3f500202373e28deL,0x5090b33b4b9be739L,0x7297aa10efa2adddL,
|
|
0x3e8ccdbe1a6566aaL,0x4dfda07fd7b4f214L,0xa659bd1e7cb1cae7L } },
|
|
/* 2 << 70 */
|
|
{ { 0x31796c2387d11691L,0x02991ea2a9de506cL,0x4ff0cb716cb0c301L,
|
|
0xdd0cdbd7d1702ca9L,0x470a26c8e1a02a90L,0xb705b7bad7054625L },
|
|
{ 0xfadc2e86d4a1a268L,0x0fd9764668e9f923L,0x042b5ebb2951a8feL,
|
|
0xe4af9d0364197a76L,0xdd2c6bb3249c1b5dL,0x60af89bdf01932b1L } },
|
|
/* 3 << 70 */
|
|
{ { 0x4374145d41afcd64L,0x98b72d6049d21198L,0xc0ff394bdfde8a41L,
|
|
0xed1112e5ee1ff7a5L,0x87a920e8cb5036fcL,0x437123f62deb225eL },
|
|
{ 0x37e527afb9ad8c58L,0x3e3c9998abfaef38L,0xb656bcc550b2b4e2L,
|
|
0xfacc8a193bf5699dL,0x98cec74fe616307aL,0x34af333dd3ef8babL } },
|
|
/* 4 << 70 */
|
|
{ { 0x9ded9b0d744ec273L,0x5bdfe5472e79e4d5L,0x94f3aaf539393728L,
|
|
0x22136862a438413eL,0x449286da373c7de3L,0xa709d85d29aa1540L },
|
|
{ 0x1bd13e410284a4f6L,0x37b54d69f0799c8bL,0xd43b558f6bcd0cb2L,
|
|
0xf5757c0e9e610369L,0x15c80b23c16e0651L,0xacb2cf64001820aaL } },
|
|
/* 5 << 70 */
|
|
{ { 0x0629e4ddeec37f48L,0x3f7556a2da7de716L,0xcacd8f27661662bcL,
|
|
0x65d8bc2ceaf01690L,0x83ac66477c39c893L,0x353f60dbf59440e1L },
|
|
{ 0x2597b0d6852c575aL,0x410885f73a40c2b3L,0x953ab3472fcc2488L,
|
|
0x9f753e5eef4cc6d8L,0xfc32bb4d97f69e63L,0x461c1b0c87e8c264L } },
|
|
/* 6 << 70 */
|
|
{ { 0x2bea7e75ac4b62f5L,0xcf255dcdc6297871L,0xdd88db8781b25c72L,
|
|
0x77ad90b3b617dc04L,0x65ee13820ed4a7d6L,0x4c08df9cd9644c8fL },
|
|
{ 0x072d3784525a023fL,0x1aef69cefce399fbL,0xb07fd78ed7f29044L,
|
|
0xa3754e1443043fa7L,0x97bdae92ff9fe4d9L,0xad63ba6a700fe6b8L } },
|
|
/* 7 << 70 */
|
|
{ { 0xa571929ba1ca17dbL,0xce7a12f545e146b8L,0x39df1446d9eb426dL,
|
|
0x1e48b3f8dc27f268L,0xa2d7dfa1ff548455L,0x750068b86ef1cc82L },
|
|
{ 0x4d699306667fce62L,0x98540b9d131c5412L,0xf8a62cd347c580b0L,
|
|
0x2b55460f73795005L,0x3206c0257b8db337L,0x2280934bd0dda5a2L } },
|
|
/* 8 << 70 */
|
|
{ { 0x10a8aabd2352478cL,0x599d9dfa1364c40fL,0xa009df1a076945a2L,
|
|
0xf869152c03861f02L,0xc405226e9f866a3cL,0x93bd737d8b41ecbbL },
|
|
{ 0xb5c9ed1033901eedL,0x90e4ce8f99312b80L,0x1a9ef22e57589279L,
|
|
0x83ef607d7fe2d6aaL,0xf2da84543473dbfaL,0x14f36d3a57879066L } },
|
|
/* 9 << 70 */
|
|
{ { 0x2c780f220ea3ce34L,0x240a211e4b8aac72L,0x7a266e5dc2625a99L,
|
|
0x1cb15d3e3b30c878L,0x8cd8ccab0e1b21d3L,0x53c64279adc1a6b3L },
|
|
{ 0xe60d15b960bf708dL,0x6e431c1b0cb5ad4bL,0xec874c3e82033111L,
|
|
0x88054a1d9141eae5L,0x98438a5addf53a28L,0x168f0b0ffa12c657L } },
|
|
/* 10 << 70 */
|
|
{ { 0xd621ce26629d7a57L,0xbf571de7cc1f8af1L,0x2c5cfaf9304adaa3L,
|
|
0x950addbd3f283b49L,0x622dc27cee6d1cd1L,0x26d920041f0863fbL },
|
|
{ 0xe243b2a2a41ec585L,0x0dbd9adf2bea6235L,0xcb083c4d6f0820f5L,
|
|
0x809ecbafd5493931L,0x9647067414b7ffa8L,0x2cdfe22e53fc2224L } },
|
|
/* 11 << 70 */
|
|
{ { 0xc8b1333c7cd74a06L,0x7d5ac4dc271006bfL,0xe9377d9fc14e0e56L,
|
|
0xaa8651db7a92ab1fL,0x77cee8145fc11fb5L,0x1e7c5ca027870b14L },
|
|
{ 0xdeef4b3f6f959698L,0x7c59f26e5daa9bdaL,0x4d0d5aecfd312368L,
|
|
0x5247a6f3b738de68L,0x1c4e8ba990c04807L,0x0554b41bcce126caL } },
|
|
/* 12 << 70 */
|
|
{ { 0x3df98ea9a81cc26aL,0x982ed56883b2c6f3L,0xc9cbd1b5ea6d6976L,
|
|
0x3f9f23197e25ffbcL,0xbca8e0567da6280eL,0x7abd316635cda713L },
|
|
{ 0x46ef321d740ae011L,0xb17f6c75db214a33L,0x37b73b4b51de4044L,
|
|
0x5bccf3ccccd9ba8dL,0xa2ca080dd0f7045bL,0x79caf90668cf4dccL } },
|
|
/* 13 << 70 */
|
|
{ { 0xcc3605a9a7b07d22L,0x4370eb18b4ebe4e7L,0xbe393039248867c1L,
|
|
0xc8e4851ecb1a75ffL,0x215f3fbe39cb6da4L,0x6f2102eee41f9a34L },
|
|
{ 0x61d484abdfae7c27L,0xf5143bd26f1260fcL,0xa70b6c067514bcccL,
|
|
0xe71ca833d23506f5L,0xe2f50ba8eae03a8eL,0x2ac3b50883c33359L } },
|
|
/* 14 << 70 */
|
|
{ { 0xe94b930f3655cabdL,0x6ef6aac4a342443cL,0x2feb8005bae255daL,
|
|
0x4625a15cac6e2095L,0x75c6311d0ec76c1eL,0x896a07409b81c6f2L },
|
|
{ 0xbad3e2f9073378bbL,0x2984a10629266ec0L,0xa68a5351a788010aL,
|
|
0x321aa113017cd052L,0xecfb61752f34db5cL,0xfe080cedca2b51dfL } },
|
|
/* 15 << 70 */
|
|
{ { 0xba29690803360c88L,0x3fb087c036311812L,0xec5fb10ad9ff6a48L,
|
|
0x52f7077f207dd8e1L,0x8e65cfb844c02fbcL,0x4f4fcde2fbf4bfd5L },
|
|
{ 0xd1ff54156cc74320L,0xf989d544f68b036aL,0xafedc2db973bd9beL,
|
|
0x7bdc35694785e26aL,0x0df36796751ae9baL,0xfebde691ccdabd95L } },
|
|
/* 16 << 70 */
|
|
{ { 0x3499b44bc77488ccL,0xde000e01aa8f3c10L,0x30140406c1f517d7L,
|
|
0xd4b3c8eb82a174e8L,0xc8835b13af2c9b3aL,0x2cd7626e443716f4L },
|
|
{ 0x336c4f4b9c22de71L,0x9dd2b277f2529f60L,0x6ffba2dc828c34d3L,
|
|
0x257a345c34d0d1f7L,0xbc1eff056ca4fbceL,0x05b335620768349fL } },
|
|
/* 17 << 70 */
|
|
{ { 0xb142febb692e076aL,0x10cfaa6b9a654721L,0x5b7ba30c8d4917c1L,
|
|
0x44be3089dfe4056bL,0xb7530ae6ae6307f4L,0x47c519c45b5f381fL },
|
|
{ 0xa80648d8c3078009L,0xfde72e30dcb021b4L,0x8a89a51bdc2659e8L,
|
|
0xb9e0efa6306adefcL,0xc671c060c754a7bfL,0x703c698e18f14248L } },
|
|
/* 18 << 70 */
|
|
{ { 0x25c86ad43c47783aL,0xb1f94a9650f85a4dL,0xb9472e3ac023a02fL,
|
|
0x91033d1b26f0fcdfL,0x95d775c1ab7b4ee3L,0xbe17daffdf3a5cb7L },
|
|
{ 0xaeaecd2ce78395f6L,0x0e3abb0953b5da8cL,0x5f729f858ee774afL,
|
|
0x1acccfb3aeca7a6eL,0xd066fccb37e4af11L,0x24c832ab84fc3259L } },
|
|
/* 19 << 70 */
|
|
{ { 0xca547b680ca4864eL,0xea40fe17c7d49f27L,0xb5e68bab87227475L,
|
|
0x6ba2bfaf8ce485f7L,0x4d2747acb72684f4L,0x5fabffc670aa6087L },
|
|
{ 0x2d4ded5679c67c9dL,0xaf3b4eedc8a4f22fL,0xbef6128ebfa6ca86L,
|
|
0x7ce412bbd4381632L,0x518e6ecfe670d99fL,0xaba6518dfa5f426bL } },
|
|
/* 20 << 70 */
|
|
{ { 0x5ebdc79cd41b2401L,0xf0cd8598c498e0f1L,0x93f6efe79c8b7f7dL,
|
|
0xb2f1e40ac469aa57L,0x882f0e943433c455L,0x0add72adaea0712aL },
|
|
{ 0xb13578c399af96d0L,0x43c28dc621177663L,0x83aca2d854e09133L,
|
|
0xae03943cc6ad8532L,0xce0a61917104f75cL,0x7dec8786f9838c37L } },
|
|
/* 21 << 70 */
|
|
{ { 0xb0b41b8ec5abaef9L,0x43f59aee8ff5d1f2L,0xe58f78c9234d3d34L,
|
|
0x0e1948d029a7f49eL,0x722f8e54c6cd8941L,0x75a4ebcfbaf24424L },
|
|
{ 0xec8954982d7dc6d9L,0x8df2feee5261e4e2L,0xdf2820b825dfb96eL,
|
|
0x4b89c4dcff651949L,0x27c871a527bacbe1L,0xfdc70cf7329a52bcL } },
|
|
/* 22 << 70 */
|
|
{ { 0x37d58766fdb3f3fbL,0x49d9a762ad64fa66L,0xf80423918cfdbbc2L,
|
|
0x22e60ca36400f7eeL,0xfab8ea7568210629L,0x91267753963e5b6fL },
|
|
{ 0x5988d7f56b8e7ec9L,0xe43e762a5899e718L,0x842dbdcc40ae8b99L,
|
|
0xa7ced3f19869739fL,0x1ccc1e8a6d54b9f5L,0xaa3a91adbd32e710L } },
|
|
/* 23 << 70 */
|
|
{ { 0x306d662c6d4c255fL,0xf32aa48101fa367cL,0x29a71e02f16b3197L,
|
|
0x653f7d88513a6079L,0xde93d6e74541b4adL,0x4d284acd8c54d3b1L },
|
|
{ 0xfc9d462be106ed07L,0x6e3818d07e355468L,0x2ad523859400c515L,
|
|
0x287af41d5ecd3b52L,0x1162162351e1fb02L,0xd696d01f17bd4584L } },
|
|
/* 24 << 70 */
|
|
{ { 0x9db114e3715aa8daL,0x596c2dc25c2fee22L,0x04df016bd2f3080eL,
|
|
0x0cb3f7cfb9b72037L,0xadb877c7814fe2abL,0xb2d5ec5c37761ec1L },
|
|
{ 0xb5d6068e55d45831L,0x5fab1dffb7c52c04L,0x39b4aa5457d36d41L,
|
|
0xec1de467423cc8cbL,0x280e02dafda6566dL,0xc70c3c383ca55f55L } },
|
|
/* 25 << 70 */
|
|
{ { 0x27a866e7c6b03391L,0x980b0a42bfa32fc0L,0xd27856910c105df7L,
|
|
0xf3def8c77103a2b3L,0x6c4ff04bdffea913L,0x57b1003e121140ddL },
|
|
{ 0xf47bb2826d0e3170L,0xa44d6ab1e6abdfedL,0x67114b8a2a4b69d1L,
|
|
0x7605714d52d7c65cL,0x3734795ef60b81deL,0x277f9816ebf91959L } },
|
|
/* 26 << 70 */
|
|
{ { 0xe57c2ed902b3b70bL,0xcec67da99dbc076aL,0xcaf66725b0644881L,
|
|
0xdea4f6608a3a3f96L,0x5215f097609df5ceL,0x6d828267010193e3L },
|
|
{ 0x5971ff31a156565bL,0x44f7e4037b64e465L,0x2145ea9ab5486d75L,
|
|
0x47b04066758e7ec5L,0xc181833a9c93cbe9L,0xcac07a9fe8443292L } },
|
|
/* 27 << 70 */
|
|
{ { 0xead7cd3d041326e8L,0x721785f26092e605L,0x760864024ba91a6fL,
|
|
0xb7b9b9fa335e8522L,0x6ba9c85387bb3ea9L,0x9c9f1f6f89b2ae0fL },
|
|
{ 0x952bb995aae2014dL,0xf8e74d80c538cfa1L,0xb21ca840b55b7e72L,
|
|
0x22565ec4ad982191L,0xf9547aa1f569c537L,0x8d3cb14648596bcaL } },
|
|
/* 28 << 70 */
|
|
{ { 0x340d77c2f3b6cbc6L,0xe09ae22c80f4f690L,0x3e915b028b74d32cL,
|
|
0xae7101ca3cc1117eL,0x3c36152b526c5939L,0xdad8aedbd3ec0caaL },
|
|
{ 0x34de058e351bde13L,0x2fa75fd4582726d1L,0x27c030efc214ac0eL,
|
|
0x2a216d1cc7100acbL,0x3b730043309097b7L,0x162ada747afd8aafL } },
|
|
/* 29 << 70 */
|
|
{ { 0x43893d328c216eacL,0x475a3466349d7334L,0xf9f259866114fbc4L,
|
|
0x96a22d2f0410b54eL,0xc60b69a53f3d951aL,0x152416e7fb400ddeL },
|
|
{ 0x3904dd2e8f682dbfL,0x5459272368383eeaL,0x0092554ee8c998faL,
|
|
0xc80f28512c602ce9L,0xab2f8533b197386fL,0x8c302dbc91094b32L } },
|
|
/* 30 << 70 */
|
|
{ { 0x853d994eea2026d9L,0x18734b04a1b927d7L,0xd4815747ce88d009L,
|
|
0x0265742f01b856bfL,0x05fd8b1e205d4e15L,0x0f4c8be0f1da4808L },
|
|
{ 0x2652b76c456d62abL,0x0d3d1a29cbb8d818L,0xf350487453048509L,
|
|
0xe393ef54e89ae4a5L,0x19ed8f0cc4b1306cL,0xfd72388da1aabd6dL } },
|
|
/* 31 << 70 */
|
|
{ { 0x8a7e1494289e6aa7L,0xc69223e65c955385L,0x2bcbad5c087b8c7aL,
|
|
0xc08008a531fed020L,0x9d38f5b2dc117c3bL,0xd84158bee4ad6b36L },
|
|
{ 0x2c2583eb92fe5b21L,0xebc847bf557ce949L,0x4c1b54ff4fc0fd57L,
|
|
0xe437eba325ff2f8cL,0x79a4c3cb383caa3dL,0x38a34856e08356edL } },
|
|
/* 32 << 70 */
|
|
{ { 0x5d7afe9a10fa53ceL,0xe2415b501ff49021L,0xe39a067dc6523492L,
|
|
0x3458527527557f5dL,0x756b8d86930e9f9dL,0x88df6219040d52d8L },
|
|
{ 0x606eb60b5362b045L,0xd179818c9e383cbeL,0xa6215748e068d293L,
|
|
0x73fbdca22fce158dL,0x9cfee07dcb183c8fL,0xc0bf2beba5e03c98L } },
|
|
/* 33 << 70 */
|
|
{ { 0x36702d091bf9acc2L,0x1efceaebc9c9dddfL,0x31f9f5599b9afc1aL,
|
|
0x359d4ff33e61a0e4L,0x33b3a707f3772327L,0xd990af318ac1c7ceL },
|
|
{ 0x5ee060b7e736ad45L,0x83dbe8b2f653ac2aL,0x30a1e38b407f054bL,
|
|
0x0ec6c70bd9326ac9L,0xeb37ad09d7358ab4L,0xaf36143030551ef3L } },
|
|
/* 34 << 70 */
|
|
{ { 0x7b05d8e56edd5c74L,0x268edfac5443acbdL,0x73e0d693ce1ee52cL,
|
|
0x67c67914120a1270L,0x54a897cb6f1c5007L,0xe817914a8d540dbaL },
|
|
{ 0x85c1fa1958fc091bL,0x4f4989f4cf2698feL,0xbb2d5091168c08b4L,
|
|
0xa6143388768cdd46L,0x69ec7a265e62ddc5L,0xc08749ae2654f4b2L } },
|
|
/* 35 << 70 */
|
|
{ { 0x0a9882b37409bdbeL,0xfad3899cf8b6543eL,0x01c183f9f7e9893fL,
|
|
0xe6438cf708ac9a25L,0xec22dc81aa0f2794L,0x3b641c02aa277a09L },
|
|
{ 0x686b1fbd0975c891L,0x4f7e1b680070ce2bL,0xdc343dd7487e3f1dL,
|
|
0x8825d9c230f35abaL,0xda5a77a413b91384L,0xf09d958459e405faL } },
|
|
/* 36 << 70 */
|
|
{ { 0x76b242b31cf2ab8eL,0xceb190e697edb12bL,0xd39b41b7089fc439L,
|
|
0x6ee54e750892be51L,0x128fbcfcde414849L,0x4462539007fce5faL },
|
|
{ 0x9d12e04513709b9bL,0xc2c49737d95b22a3L,0x0bcd670be4b34d6cL,
|
|
0x78d7b8cd768d7c8aL,0x7cf9382e16a0f402L,0x9b84311d17238fa2L } },
|
|
/* 37 << 70 */
|
|
{ { 0x6b7faaf8c19b849bL,0x24aa5d54a5bec317L,0x991aeb14e7c06172L,
|
|
0x52dc7da883e65aebL,0xda8998497696dd56L,0x3844a54e94cea131L },
|
|
{ 0xc9fb72ac55f69169L,0xe2f7bfc821893ab6L,0x44220c2edc4057f9L,
|
|
0x9f4f0c3812d5fedeL,0x5725b2b05c913be6L,0xfa08c56c02d8668fL } },
|
|
/* 38 << 70 */
|
|
{ { 0x9aff9f0c009b3e1dL,0xed7936d97a3c8c8fL,0x0bc8e46fdefbd340L,
|
|
0x7b508ef231540ba4L,0x9bcd9108005388f2L,0xa25cfa07c089f35dL },
|
|
{ 0x9ec7cf81733bccfcL,0xf8a1993a249006d6L,0x1e68981a96d81923L,
|
|
0x27b6199adce834d6L,0x2ddccfcfacffb035L,0xf62d7a534fe0126cL } },
|
|
/* 39 << 70 */
|
|
{ { 0xc800c1d5af76895bL,0xc86db45c43f2a94eL,0xf77322fbdbb144cbL,
|
|
0xb2607dc8f7da8df6L,0xaf666055b6cc1047L,0xf1db6416375619d4L },
|
|
{ 0xf6103c8c4b0fbd9eL,0xea8e979fb4f5b85aL,0xb0307d41fd16f61eL,
|
|
0x26bf96c58cadf61eL,0xb56c53a3bd348a61L,0xd1a5aa4f8a01388dL } },
|
|
/* 40 << 70 */
|
|
{ { 0xa29d231edda802baL,0xde8d0d510ec3c1e2L,0x0ee56eae117033bdL,
|
|
0x4dc9491998bf860cL,0xa08919cd775cd56fL,0x609a30dc1332bfc2L },
|
|
{ 0x2c337f181a41db0dL,0x27fb0072c974824bL,0x34292c1bfaf28976L,
|
|
0x242fcd73ef8c4fccL,0x553723b27473c603L,0xb2191ee9a06a0bc1L } },
|
|
/* 41 << 70 */
|
|
{ { 0xd10b7b7c10bf3427L,0x16f9ebc505321572L,0x057692f6db5fde44L,
|
|
0xf45d4d268f047704L,0xe3f8784e25584db0L,0x753764cb9f548980L },
|
|
{ 0x4239bd4858f5360dL,0x9dc993da98296063L,0x0fbb0c419ffd05b9L,
|
|
0xa6a87d50610c3493L,0x99f5669df10f18abL,0x5a03f02ba4224a18L } },
|
|
/* 42 << 70 */
|
|
{ { 0x3c6839e5bf733207L,0xc2f380899c6d106bL,0x43155630e39a7559L,
|
|
0x28d6cb546f2b8d34L,0x19738cdf09183c75L,0xa71ec595dcee5a08L },
|
|
{ 0x8e9c1cc3c70db659L,0x1333d7b38beff6a6L,0xb263d91e036a5aa8L,
|
|
0x72728714ee4f858bL,0xd65fcffbb885ceecL,0x08193f585aaaac96L } },
|
|
/* 43 << 70 */
|
|
{ { 0x264006e1b53b4c8dL,0xd3748c0bdea2f9ceL,0x019408d34e580011L,
|
|
0x381bcc70b1342807L,0xb904a17191eb1a0aL,0x13ddf3af6151a1cdL },
|
|
{ 0x13827129bc228909L,0x3378b4834cdbebd9L,0x25806f7ed56635c1L,
|
|
0xd1a3fb1c54327e55L,0xb2b8895c69d94817L,0x0779752d7150c16cL } },
|
|
/* 44 << 70 */
|
|
{ { 0x228437506ce71a1fL,0x39c6fd9abf0956a5L,0xd34a4be8c8d29ce5L,
|
|
0x41dc15356fbf8fb0L,0xdce277034c950de0L,0x1ad7192f90c75c28L },
|
|
{ 0x5b3df71e27766767L,0xba85ec629ca80b5fL,0xfadae6e5095938d8L,
|
|
0x5ce3ffc24d286159L,0x60f771fdc7b977e5L,0x7a764991b38c0c70L } },
|
|
/* 45 << 70 */
|
|
{ { 0x3e4440b7469f6406L,0xdba02dea247657bcL,0xa551a570a46227e5L,
|
|
0x278bd5a06e58b15cL,0xbbc5f8edc53eb694L,0x50e6bf5b855a2c7cL },
|
|
{ 0xa80af271d231f3b9L,0x6c22008bc139b010L,0x04e9a337ba1e27e1L,
|
|
0xcfb75909677a28ccL,0x95c59b55f967af35L,0x70d24fe88d3c6ddbL } },
|
|
/* 46 << 70 */
|
|
{ { 0x0117cabbaedcb5a3L,0xb70a95d52e7bc67aL,0xdc2e07d1ad7e7cffL,
|
|
0xf507941825b9a6b4L,0xf953a962bc8b2f61L,0x390a630d181fda94L },
|
|
{ 0xc833598d1fbdd233L,0x0213e633ac4763dfL,0xe822febbcabd2713L,
|
|
0x522864e71d2a409eL,0x49d778a81f904f3aL,0x0dd980e15912be0aL } },
|
|
/* 47 << 70 */
|
|
{ { 0x97f993f46621ff1cL,0x3bdcc1ea7d30ef87L,0x931c624585386384L,
|
|
0xd17a7b6a8cb593e3L,0x1b25176da0912f55L,0x323cf7ac2faa4d72L },
|
|
{ 0xababa6c58683a7f8L,0xa99ebbda4a71606cL,0xb5375f6b0cd8fd0cL,
|
|
0xce43e2e08ae372b7L,0x957af3cb9e69c105L,0x167c4fca772d0c74L } },
|
|
/* 48 << 70 */
|
|
{ { 0x0934812574503f05L,0xcd6a64b217bf8ab4L,0x791e72fa1fd4057dL,
|
|
0x033abed8f0697964L,0x1085ac930d58690cL,0x8acd49d69c8874cfL },
|
|
{ 0x929e4c39ff1a5286L,0x9704e80ff28395abL,0xfa69fce54c3d9f8dL,
|
|
0xdeb56555fc83a6c4L,0xd375fa037dc04c5eL,0xab2f12f156a58cdcL } },
|
|
/* 49 << 70 */
|
|
{ { 0x381d144f8119fa7dL,0xda3aa4a73c6cf64eL,0x3db4cf0a74cc1520L,
|
|
0xe8148941c1cf3514L,0xbc6c7398a22977daL,0x75e26d4982bbdc63L },
|
|
{ 0x17a626a4c9594c3cL,0x766fc21a60d71273L,0x547331241c7653a3L,
|
|
0xdbe3a9f1502617a8L,0xe41acd19a33d622dL,0x4d24cbd5e15d69d6L } },
|
|
/* 50 << 70 */
|
|
{ { 0xdde0a062dbbb9d08L,0xb5676d14153211e7L,0x747247f6f97b1468L,
|
|
0x93a6de79b2ada501L,0xf9d4e652518ce913L,0xefb0de76702b82fcL },
|
|
{ 0x2c54ffd9d68961fbL,0xa6a2d1a384f04f81L,0x88167488d74b91adL,
|
|
0xf20bba56a7d73a78L,0x9af1df5ae1afc672L,0xd79ded4543c26afeL } },
|
|
/* 51 << 70 */
|
|
{ { 0x24011535a223c19bL,0x38b55f0a19c719f3L,0x369f86b4d343ce98L,
|
|
0x6516fca318288db7L,0xad32d4699e4aa0a4L,0xb6c80dd50480429cL },
|
|
{ 0x890d73f3b659b787L,0x2d1f888be15362aeL,0xd26a84bf7a9d8c3bL,
|
|
0xd79b764460bc6435L,0xecd0272f07b0abadL,0x3ab2390382d7c63cL } },
|
|
/* 52 << 70 */
|
|
{ { 0x3ec1874496d87afbL,0xb02425b5aeea74b1L,0x47cfacea954bb89eL,
|
|
0xd8d6ff40cd26918aL,0xf2dbcbb19fd4dea6L,0xc481a4fe370fea30L },
|
|
{ 0x60df9f99a334a5a1L,0xeacebd61e6fbc823L,0x21932e6ba0140a5cL,
|
|
0x6504deb051206cceL,0xaa4b43a350560eecL,0xaf965e7b6535123bL } },
|
|
/* 53 << 70 */
|
|
{ { 0x25ce17e7be01690fL,0x82bd07fc216f7549L,0x26f98cddac6e021cL,
|
|
0x815367ff3403972eL,0x01b1cf87cd89d71dL,0xe777db14ae24f544L },
|
|
{ 0x8081a692f628a076L,0x663adf4498b98423L,0x4a31e0bfbfb25b73L,
|
|
0x5b42f193427be5b2L,0x24b1369118ae7408L,0xf13654a6e9998e84L } },
|
|
/* 54 << 70 */
|
|
{ { 0xf8ec0a9e1b64a70aL,0xa1042bbb45fc54dcL,0x3ac4a936b7cbec0bL,
|
|
0x0c2db54708eb7d93L,0x3f16e7c961ae36d2L,0xde25381b4611083aL },
|
|
{ 0xc1680ae3cf5edeb7L,0x7c86d74ce2b3398eL,0xa3ec4cde9945710dL,
|
|
0x303d28ce864e3b4fL,0xd5b9730012956ac7L,0x9ad973be3c0763b2L } },
|
|
/* 55 << 70 */
|
|
{ { 0x526c03ba1979515aL,0xe6492299cde06e58L,0x2215e3fb93ec91d0L,
|
|
0xa086161bf783b7caL,0x89e39ff44ef0015eL,0x42c6ccc595e90587L },
|
|
{ 0x7577d689a81ec775L,0x272e4578daf4d896L,0x6d43c717cf01d7aaL,
|
|
0x583814cffd5253d6L,0xee692f0666f7a3b9L,0x54048fe4e99bc633L } },
|
|
/* 56 << 70 */
|
|
{ { 0x2afba531c0b9171aL,0x687dbe4cf2d75c55L,0x7c1c73f7fa17ba3dL,
|
|
0x7886dd45063787eaL,0x14f59a18abd0a109L,0x1819df3c873bb66cL },
|
|
{ 0x76c969dfe01183f5L,0x486a120b1a78b6bcL,0xdfd702fac5686aa4L,
|
|
0x2f74157bf3457569L,0x66c8c73e01964800L,0x0a2f6114def25ca0L } },
|
|
/* 57 << 70 */
|
|
{ { 0x841838a8227220dfL,0x39eb77e2cd45ff3bL,0x7140aa47f5a060cdL,
|
|
0x9fae5937b55bc3a6L,0x243390ea09b711c4L,0x69db2ace867a3eedL },
|
|
{ 0x14ee853a152860b0L,0xe3389c4edae0dae9L,0x4fa55ed1248a496aL,
|
|
0xda6803e00ef304bbL,0xd19f48bcd04c2823L,0xe76b8d82a61773d1L } },
|
|
/* 58 << 70 */
|
|
{ { 0x2e3a6332f7ae9a8aL,0x89f1576f78a12a00L,0x9597b2b245ab254dL,
|
|
0x2017d6306309a625L,0x0385c02719adbe9fL,0x26c84f2014606336L },
|
|
{ 0x3808a31a3584dd47L,0x0fd2bd1b4e1da791L,0x70c2827fb894be27L,
|
|
0xac97e84547d1faecL,0xa63c56fe9b01c835L,0x19c3b18067ca7507L } },
|
|
/* 59 << 70 */
|
|
{ { 0x975dbe423a07930bL,0xf03fc9da8f7975f3L,0x94209a2522662e65L,
|
|
0xf5b20e6b9619dcdbL,0xa95e2188ed5ee020L,0x2301e35abe7fb828L },
|
|
{ 0x4216b05b9caa0bceL,0x0534eef625cdec7bL,0x81f5c5f8613aa24bL,
|
|
0x8705662951451a5fL,0xffafb623df15645dL,0xe19276fe79c497c5L } },
|
|
/* 60 << 70 */
|
|
{ { 0x461bb6e1d118ef5cL,0x277e378d1f4bf653L,0x3b4138849ccaab1cL,
|
|
0xa5979a3ecea9c61fL,0xdc2a23c09dbfe67dL,0x5f7e32f5335cb2d7L },
|
|
{ 0xeefe71a87accbd69L,0x65d961341df58e12L,0x17bafa56538145d8L,
|
|
0x2a723472695df807L,0x132b5320394ec082L,0x96219e617d0ed426L } },
|
|
/* 61 << 70 */
|
|
{ { 0xf08ee7071ec12e08L,0xb9a51fc40c4917aaL,0x1aa9b778aa085b77L,
|
|
0x3b3e40d72e62193aL,0x3700217fdc211bb4L,0xed03eaf4fbea2fdcL },
|
|
{ 0x82e00364c55111e0L,0x3be15019e3cbc07cL,0xf142d230055b597bL,
|
|
0xf68837b1a063deb9L,0xf1368df622e72e40L,0xfc712c67ab522f37L } },
|
|
/* 62 << 70 */
|
|
{ { 0x02ca4c0dc3c8ee2fL,0x1962366a0d75f552L,0x6354ab90a43c43e7L,
|
|
0x9f46429f7668d14eL,0x70ffaa6d0ca59472L,0x231fdb485a95ad7eL },
|
|
{ 0x82ae5f0acb2ebd5dL,0x2dc8417ce51b1d3bL,0x5052133a2fb456dfL,
|
|
0xad3b4cf2bad61a16L,0x59f283a48d76344dL,0x5f15465772b18fdcL } },
|
|
/* 63 << 70 */
|
|
{ { 0xe0ef0c3cc73a7131L,0x8a4e0cdd43ea81fdL,0xceb5fcb8d6d6ce6eL,
|
|
0x941179893535781dL,0x20f5e952b37d4531L,0x5e77f33364c25699L },
|
|
{ 0xb6645e8fa6d3ff57L,0x6dac30cb5b9bfdc0L,0xb29648e73ebb655aL,
|
|
0xe1bf3f4005ebc1d1L,0x1b12288514025fdcL,0xe15fab026c5adaabL } },
|
|
/* 64 << 70 */
|
|
{ { 0x86230934f14a99d9L,0x1cf9c66e97c1c092L,0x01e186ba6f595ed3L,
|
|
0xd3291c3de2284a58L,0x03dee2311b9e5e25L,0xf2e9b4ad15cc9f53L },
|
|
{ 0x4fba15679770c29dL,0xbf7d673650c4ae2fL,0x86901eb92532d015L,
|
|
0x4396fd784e7455deL,0x2fbcea8fbcf811c9L,0x3981ad15ae952b37L } },
|
|
/* 0 << 77 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 77 */
|
|
{ { 0x6bd2c54d4cb89afaL,0xe78c8bfa36527751L,0x27f52654e3eee747L,
|
|
0x56f205839598d907L,0x5f91c2d027cb3712L,0xc501819fa3e33c5bL },
|
|
{ 0x248490aa4eded738L,0xde7ac94427789065L,0x20138b3d74f7d38bL,
|
|
0xae791f602fb60214L,0x6b4fb300bd033d4eL,0xc69c25d9bdfd1f17L } },
|
|
/* 2 << 77 */
|
|
{ { 0x0c3d2056be21a890L,0x1c1ffbfb8fcfba99L,0x1b68a98b1fbf56caL,
|
|
0x56fd85ff396e31cdL,0xd2ca58444382c03bL,0xc442030a7d3ef917L },
|
|
{ 0x4129a731426afafaL,0xacff17ff5eaae9c6L,0x9e854180653f3b23L,
|
|
0xe65a1a149ee066bdL,0x3420084e362ea5feL,0x6fe58801c7911e2eL } },
|
|
/* 3 << 77 */
|
|
{ { 0x43f0ae676c4be6a0L,0xabc6a17a504bffebL,0xd5be6c25dbb4492eL,
|
|
0x7efc9ee884bff97fL,0x54fbd9d7062da2e2L,0x1befeb61c6d2ac32L },
|
|
{ 0x14cf6dc0cbafef5bL,0x8e640e4771d12192L,0xd0566543d9a16800L,
|
|
0x9cc2ade9beb1e28dL,0xcbfeb45038e65833L,0x3852eaacd0f5acb2L } },
|
|
/* 4 << 77 */
|
|
{ { 0x5e930d65c4650b85L,0xbe96b2ae6350da54L,0xcfac4f7efa08bd49L,
|
|
0x277e8456a6e10f64L,0x41be3067407ac162L,0xcfd1d03252a9b68bL },
|
|
{ 0x8d8d216a9c337e0bL,0xace044dc4e1b9cf5L,0xad9a4102c60d54c3L,
|
|
0xb09420f028815187L,0x881179c60b3b8e59L,0x872685ed5b09aba1L } },
|
|
/* 5 << 77 */
|
|
{ { 0x26d43085ee64924eL,0x5eb54d1c4bd6a77fL,0x69a69ccfd1ca022fL,
|
|
0xaad92723a3342720L,0x51e27b54421d836cL,0x15e83917fc72a1adL },
|
|
{ 0x183e75d14ddea73eL,0x73fe3b9fbafcecfeL,0x0197e0925daefd64L,
|
|
0x2fa89f60f85b8249L,0x95411aafd23cd465L,0xb7dbe7485d9a459eL } },
|
|
/* 6 << 77 */
|
|
{ { 0xab146c207dfc66eeL,0xa7250dcebb6869efL,0xaeba44439d7ad5f8L,
|
|
0x919f877ec48059f0L,0x780ecd232c6b5c11L,0x586daa8e38625f8dL },
|
|
{ 0x46a46c789911c031L,0xf56f74fc65303d34L,0x825bb06d4f384eabL,
|
|
0xd147719ad6aa2bc2L,0x745fd7460750e1acL,0x2ef411494b3ec757L } },
|
|
/* 7 << 77 */
|
|
{ { 0xdb24cd1af10ea702L,0xf393de57461f8ebdL,0xf56f414e5cfaefecL,
|
|
0x758c8d854690230cL,0x6740c974433d2594L,0x69d92a620aa6bb20L },
|
|
{ 0x17be342e9b0bb191L,0xc1cd309fdbf5c97bL,0x089134df8998140aL,
|
|
0x33809a7e82afcb85L,0x409d2a481db47b21L,0x1d54e86ccdb1bccfL } },
|
|
/* 8 << 77 */
|
|
{ { 0x22313dee5852b59bL,0x6f56c8e8b6a0b37fL,0x43d6eeaea76ec380L,
|
|
0xa16551360275ad36L,0xe5c1b65adf095bdaL,0xbd1ffa8d367c44b0L },
|
|
{ 0xe2b419c26b48af2bL,0x57bbbd973da194c8L,0xb5fbe51fa2baff05L,
|
|
0xa0594d706269b5d0L,0x0b07b70523e8d667L,0xae1976b563e016e7L } },
|
|
/* 9 << 77 */
|
|
{ { 0x47de66da62a200a6L,0x67b0ce0d65186fb7L,0x8e8f0248238d23a2L,
|
|
0x5a44a886c1114a6eL,0x36383e5be8ec166bL,0xd36077d8ca7d2e43L },
|
|
{ 0x332f98267c45e8c6L,0xcec2ba1355d968faL,0xdca664a84a56f7abL,
|
|
0x954652467b03621aL,0x471f66259b6e55d4L,0x401a6a5efb0714e4L } },
|
|
/* 10 << 77 */
|
|
{ { 0x2fee0c6d6046896eL,0xde64c4e0466a90efL,0xb0c9755a55395f3aL,
|
|
0xdfe2dfd6ae3879d6L,0x979853c2d656c53dL,0x58bb6121757f381fL },
|
|
{ 0xdfae5707980db8b8L,0x6d4c7cd7d7752f7fL,0xdfb77382c5dacfccL,
|
|
0xd0fca93104177fbbL,0x9ef6d3e4b67891ffL,0xb599dfcb26024609L } },
|
|
/* 11 << 77 */
|
|
{ { 0x79bf86761cc06935L,0x6bbc2d3fd44fe6bdL,0x092678c486f9f728L,
|
|
0x05631aaf54c3fe18L,0x217adbbe95eec92fL,0xdcdbfdfb955bcba3L },
|
|
{ 0xf938779c01bafb04L,0x67f599e73ab755e0L,0x793b591fb00c1315L,
|
|
0x7ea2dbae3f2d0909L,0x05436dce46614955L,0x02b988888060d145L } },
|
|
/* 12 << 77 */
|
|
{ { 0x795df21ba1ebf7c0L,0xa98f2466681b5da4L,0xea18a2ab413b507dL,
|
|
0x9243326688324aa8L,0x2b91dcc2f74d83edL,0x95054b471f411a13L },
|
|
{ 0x50869778e3c621f2L,0xb950f3a9427faf54L,0x8949bf7dae29f080L,
|
|
0x7c16cd020ef3a3c8L,0x7883c719b122cd0aL,0xa2cad71fc03bd749L } },
|
|
/* 13 << 77 */
|
|
{ { 0x60c794125b3ad53bL,0x91c62ac783981a98L,0xa6f30f473dcd7196L,
|
|
0x55417e7598b4c589L,0x2ce067cb345b89bbL,0x4787f0db71936e38L },
|
|
{ 0x208cb360331d7de3L,0x4b0347aa15022254L,0xc66e58865e8af235L,
|
|
0xdefed4c591a68080L,0x0b8dbd336eeb47a1L,0xb6d44d36f732c8d2L } },
|
|
/* 14 << 77 */
|
|
{ { 0xce0b1700d3aa7741L,0x13cc58a90df0cefcL,0xa96149c7da3a1816L,
|
|
0xd387d361561277fbL,0x2294f77cf2c363c6L,0xc8d19d51355a8a93L },
|
|
{ 0x926dd80092affccbL,0x70c59253686afd1eL,0xe4826f2370c4d8b5L,
|
|
0x948d43dba2226c34L,0x6ffed99e2a097aaeL,0x80e7a99a2ce18037L } },
|
|
/* 15 << 77 */
|
|
{ { 0x070c3f39b7f01551L,0x21b249434512844eL,0x46e33e16e2e2a68cL,
|
|
0xd79daf0ca549dcb0L,0x634fa53966a7b9bfL,0xe856d0a8702990f4L },
|
|
{ 0x246e5858e466abdbL,0x3f3ad441edfc851eL,0x9ab3db2c2e397554L,
|
|
0x6c5b1a39b5cabd32L,0x695649b2427c5cefL,0x6179fa0f82ab4f68L } },
|
|
/* 16 << 77 */
|
|
{ { 0x022aa09d236b71dcL,0xb1ce6a0ea65a7640L,0x317344c5b38b417aL,
|
|
0x29a74cdb436451ecL,0xd898eb6ca8b1c876L,0xf0134f99b74eeffdL },
|
|
{ 0x0d9eab64225d71f7L,0x9679b453ceb3cc2dL,0x37c894ce14dbff2fL,
|
|
0x3704d34927065280L,0x9ee435d8ba29a0cdL,0x675bea1409c11c4fL } },
|
|
/* 17 << 77 */
|
|
{ { 0xa8454e2b63263ee1L,0xf4c8a384cc42ffc3L,0xb260754916bf086cL,
|
|
0x610d299cfa46a481L,0x21777897ce41a4d1L,0xdfc04bb321573cdeL },
|
|
{ 0xac7d9433ced06177L,0xfdce0356a281b9ceL,0x22abd67970d48fc7L,
|
|
0x1e4ebf7750514178L,0x7f0869ef21a255c8L,0x80ae565c29bf477cL } },
|
|
/* 18 << 77 */
|
|
{ { 0x607cfaa1a38a18a2L,0xb29ae9c760bd3f91L,0x4991432d76a4c22dL,
|
|
0x4fe8dcd380e75452L,0x7aeea8150925ed79L,0xa0cc6823b7abca08L },
|
|
{ 0x647b164fb0a555dbL,0x60545cd3d6076f3bL,0x7e801133807a2045L,
|
|
0x74b2200743ac7e22L,0xdfb58fd1716d3e5dL,0x369ad09947772c45L } },
|
|
/* 19 << 77 */
|
|
{ { 0xb6c5dc0635ba2007L,0x6543c6307921115fL,0xa7e5a662eb6c493cL,
|
|
0x728159f54a0b8d6dL,0x8cb07ef1b943fa72L,0x4a2c5cc923c46a98L },
|
|
{ 0xea078b478c26221eL,0x68ef5015ce2be601L,0x3048b5de5239f8d2L,
|
|
0x00a98cd419bbe0e5L,0x0a34161caa94a375L,0x879a9a7aac8a411aL } },
|
|
/* 20 << 77 */
|
|
{ { 0x2d968968e3f6217fL,0x60b781ad1fb91fc9L,0x44ce23514a84e6ecL,
|
|
0xe8f5627d00a3d089L,0x45211a094a980480L,0x11029b7263274860L },
|
|
{ 0x44601cfcae0477aaL,0xa05a67df269ca043L,0x9dc3938fb758fbd0L,
|
|
0x43d5d89abaa35f8cL,0xa38dfa1f2ab3436aL,0xa29653bc529b7061L } },
|
|
/* 21 << 77 */
|
|
{ { 0x6ab2e32b982cd162L,0xdd690ed7794d6da0L,0x8fee0b461862f33eL,
|
|
0xbf9aeee210d244fdL,0xe485aac27dbb57d7L,0x7f7ee4bc0ff23849L },
|
|
{ 0xfb3c6255171ba49eL,0x089b9986133e45deL,0xb6c033106d04b924L,
|
|
0x216af9223ea88efcL,0xe646a49b5fd52347L,0xbb495d2ee404b86bL } },
|
|
/* 22 << 77 */
|
|
{ { 0xe24934ba07fd5fcfL,0x4840e1a6a1027598L,0x4c2294d245eead89L,
|
|
0x7717bb604fda652dL,0xe809c21878370655L,0x417853499151e578L },
|
|
{ 0x8bfe121cede554c7L,0x96037a33952c153cL,0x80458ed86a5b30f0L,
|
|
0xba331cf9ca28472aL,0x31b5f463e6c177aaL,0x68c5dc9183ec14fcL } },
|
|
/* 23 << 77 */
|
|
{ { 0x8b78d2bff13dc6a5L,0xacd7e0902285c2a2L,0x6aa7866cb47e9427L,
|
|
0x7c2483474d9fa3f2L,0x2e668396f0661aafL,0xf491cd6d08cacae4L },
|
|
{ 0x772a131158f9a617L,0xf372dcd6b2011823L,0x790a5ae54e6bd2a9L,
|
|
0x035ff238fee0c8c9L,0xcbbe828cb0b8c53dL,0x9edba1a40af83ca1L } },
|
|
/* 24 << 77 */
|
|
{ { 0x2fde4893fbecaaaeL,0x444346de30332229L,0x157b8a5b09456ed5L,
|
|
0x73606a7925797c6cL,0xa9d0f47c33c14c06L,0x7bc8962cfaf971caL },
|
|
{ 0x6e763c5165909dfdL,0x1bbbe41b14a9bf42L,0xd95b7ecbc49e9efcL,
|
|
0x0c317927b38f2b59L,0x97912b53b3c397dbL,0xcb3879aa45c7abc7L } },
|
|
/* 25 << 77 */
|
|
{ { 0x62ecc0cc429bdc1fL,0x6a8000add447c01bL,0xc2dd42354f23e5d2L,
|
|
0xe6c1790a01b4a0dcL,0x2497e53c24393079L,0x0a113afeb2a00faaL },
|
|
{ 0x96c1bd5011151480L,0xded805425aad86dbL,0x639f24cb76720e92L,
|
|
0xf17703b7d825eb92L,0x10f8924e82d2657eL,0x6edc843c627c5236L } },
|
|
/* 26 << 77 */
|
|
{ { 0x472226adf80911c2L,0xfb50c3a5e087a3d8L,0xb194551441848a6fL,
|
|
0x61f4fbba9f17504bL,0x8c59b2c48e33924bL,0xa7641127ac7a8608L },
|
|
{ 0x79feb7fc164a2330L,0x9e0fd67253a44e7aL,0x9c5c973081953c30L,
|
|
0x25d6932c3f6342f8L,0x29e8b7664b574a69L,0x02f90a46a5de3639L } },
|
|
/* 27 << 77 */
|
|
{ { 0xe2d1e2a3465ab77bL,0x2ca0f6a3cf45823cL,0xa1b12306dbdce9d8L,
|
|
0x820470e7b4b39ca0L,0xe48956c76e847681L,0xc8ed8fc8fbf6970dL },
|
|
{ 0x52cb109419ba40aaL,0x08136d091efbaaa2L,0x99dd1ad27d71e1c4L,
|
|
0x10001f97a3a59a3bL,0x79d229e460e4cad9L,0x6d443d8756732312L } },
|
|
/* 28 << 77 */
|
|
{ { 0x8d6b28b4d7cfe9f0L,0x6ee5407a4dce4904L,0x7acee5e7ba0b67f6L,
|
|
0xd4cf6bd2abf447aeL,0xc085e8e2e7330268L,0x23edbd5a145689d8L },
|
|
{ 0xd2ae9bd21d7b0e7bL,0x3196410ec4fe6ecbL,0x964bef26ec2cd59dL,
|
|
0x09c6d07dd5e0bf03L,0x379f131ea65b646bL,0x0439c37964849830L } },
|
|
/* 29 << 77 */
|
|
{ { 0x8afc9a5eae562537L,0xde81bbaab2d4172aL,0xa272c6d53db07247L,
|
|
0x08b903ffd86ec6f8L,0x3373041f835aa84aL,0x02e8ecfdc8f18f48L },
|
|
{ 0xed6b2784ccc11e64L,0x03e45e15842a8292L,0xfcfcc54b653b86efL,
|
|
0x9678fe7ed9ea2f91L,0xee5bf4584efceafdL,0x188e49d59fcc4be9L } },
|
|
/* 30 << 77 */
|
|
{ { 0xeb0098cf67a224f8L,0x14e486c90991108dL,0x0dad68314b397687L,
|
|
0xf2a4f6cb9d089000L,0x3fcc8803509f7376L,0xdbdf06dddb5d6f8fL },
|
|
{ 0x2cbf342806ef3e46L,0x4a4bd5eee432ca41L,0xdcb8bdb70e2d391dL,
|
|
0x941b9a4ec1710ac3L,0x25cea4333d62c34aL,0x9136e5cd881a70b7L } },
|
|
/* 31 << 77 */
|
|
{ { 0x9bfdb9b310c3ed1eL,0xc9a225ec0cd146c3L,0x1fec4316573c4414L,
|
|
0xe11a408f2fa8323cL,0x198c760ac3e988bcL,0x3f8a5a1caf0fda3cL },
|
|
{ 0x91e89f11f6e78264L,0x3cee0165264eebfdL,0xf9412b049898eaa0L,
|
|
0x3c67991a382e46e3L,0x8d833d7a80acd219L,0x746a696c9d233f20L } },
|
|
/* 32 << 77 */
|
|
{ { 0x8b3269a2714a10e8L,0x64cef040a4a2727eL,0xbc5ac714e428865cL,
|
|
0x531dd17ffdaba094L,0x86d2405718d657f2L,0xe807b0d92f99dbbfL },
|
|
{ 0xc428a80f6848ef88L,0xb3ef0709d0b73ce5L,0xa752691922a5d255L,
|
|
0xbfe6392318a18586L,0x28a0c772fcf633b3L,0xad22b4ec3f3c5298L } },
|
|
/* 33 << 77 */
|
|
{ { 0x8b6a2f1ae6c40f85L,0xf0f44c54f44cf3f0L,0xda635b687b25d4b6L,
|
|
0xee59c00f8cdc9d5dL,0x36509f58cc4876afL,0xe37564484e2c550cL },
|
|
{ 0x20f965b565974809L,0x26481694e3fe3a63L,0x6778b20becd272eeL,
|
|
0x9b6bbf39c9072853L,0x4f61f192b0436bdeL,0x98bf7dafd0221263L } },
|
|
/* 34 << 77 */
|
|
{ { 0xa06a4b56e0442513L,0x6537e117dd513547L,0x89e38ccd2a654224L,
|
|
0x2fe734bd005ee292L,0x54d6933498cfece0L,0x85de5c9d85a79bf2L },
|
|
{ 0x21e072bdcd3da6a9L,0x7a5d707b8c16b8a1L,0x43654d0142d04cd4L,
|
|
0x07d589b94a88c151L,0x5bfe9ea2df726b52L,0x877c46ffcf728e4eL } },
|
|
/* 35 << 77 */
|
|
{ { 0xe338f606fa009c33L,0xce596aafa351fe32L,0x8ae0e06123968387L,
|
|
0xcdaaaa9465c98e2dL,0xec6b8a818acb9355L,0xc2c67e7facbee162L },
|
|
{ 0x7068df85517df4beL,0xc34a6ecb7c5c076aL,0xf4193aab6250f0baL,
|
|
0xe0cd2f3fa6c9ea47L,0x23a57ccc6488135aL,0x044d73e6c12b842eL } },
|
|
/* 36 << 77 */
|
|
{ { 0x9d8a78808078c8bdL,0x6ea07982076d44f1L,0xc58fc94eeb3bfda0L,
|
|
0x0b9e72200dd11b13L,0x8bd58e3aa74a005dL,0x7a30aeda115b7d33L },
|
|
{ 0xeb0037e6ef2491ffL,0x0fa2d1a7fb39ecbcL,0xb75aac645ac598f7L,
|
|
0x2c3c103341f61b42L,0x5a330bf01f7eb885L,0x1c96124d33d5e27bL } },
|
|
/* 37 << 77 */
|
|
{ { 0x3f157ea1b28d1640L,0xa41c98f2c96806ecL,0xef261c3bb099566bL,
|
|
0x11d88be30aa23f1eL,0x9a721a2c47ed1540L,0x214cb5b0e4431563L },
|
|
{ 0x36a95c20250f6b19L,0x6b44f01d30eb0249L,0x141777dc5c67e2beL,
|
|
0x6926b32ebbe7bb63L,0xb72fd3bf756cbae7L,0x226661a279dfb835L } },
|
|
/* 38 << 77 */
|
|
{ { 0xc25a44e3300b8f91L,0x08aa9d5691ad1a78L,0x130c561ffdd2a064L,
|
|
0x36f0b4608c05f94eL,0x748166e158a351b3L,0xe408976147d40ed6L },
|
|
{ 0xa0ba5e5d1b2e3400L,0x94aea3b6687f6492L,0xf4975167ea262235L,
|
|
0x8014e81143e800d6L,0x635a3c516e5df6dcL,0x71207caf2eb20366L } },
|
|
/* 39 << 77 */
|
|
{ { 0xc00364013638e940L,0x24baf83bbb70e3cfL,0xc08a99b865dca079L,
|
|
0xc070152e0d40622bL,0x44880b191697468aL,0xcf95519bfebc1644L },
|
|
{ 0x7bdc41d7911a74efL,0xb88180314ad83219L,0x53c523185ad49f95L,
|
|
0x4e59a29f6d112b66L,0xb2707b9c7515de9eL,0x8322492c150c9bdbL } },
|
|
/* 40 << 77 */
|
|
{ { 0xcd81bdcf24359b81L,0x6fd326e2db4c321cL,0x4cb0228bf8ebe39cL,
|
|
0x496a9dceb2cdd852L,0x0f115a1ad0e9b3afL,0xaa08bf36d8eeef8aL },
|
|
{ 0x5232a51506e5e739L,0x21fae9d58407a551L,0x289d18b08994b4e8L,
|
|
0xb4e346a809097a52L,0xc641510f324621d0L,0xc567fd4a95a41ab8L } },
|
|
/* 41 << 77 */
|
|
{ { 0x966f961d46ff607bL,0x7e52ad9bb29278c3L,0x5b9b84b9bc6835b8L,
|
|
0x00e4a35ad834701fL,0x53aa139866b8f484L,0xc397f087de063112L },
|
|
{ 0xb811a9a24e81b980L,0x8d9c38ef8d680c4eL,0x0a7e66ef1c8db33aL,
|
|
0x1c7e636bf4e17483L,0x25c0a690ae9acf11L,0x5b0a435985966d63L } },
|
|
/* 42 << 77 */
|
|
{ { 0x3d4a4ee0a3bb186fL,0x84de7765082c283bL,0x499bf10a8fc8baddL,
|
|
0x85191faa2db59e7bL,0xc5964c20ccc587a2L,0xfa59313b9cf52cfeL },
|
|
{ 0xe614ce878da8cf4eL,0x7d8aa381d60e91b6L,0x054dfc4a0d5c0a8dL,
|
|
0xbcd89aef28a15c79L,0x2af1121efecbc916L,0x6aa49bcb44f30755L } },
|
|
/* 43 << 77 */
|
|
{ { 0x7953c7ec7b7dc4cdL,0xb709542edbdd99baL,0x7a2afc3eb30b5c70L,
|
|
0x7669020fcd0cc804L,0xb57c1d949fade8f7L,0x5ae7d78cb2eef81bL },
|
|
{ 0xdd5457edca354c1bL,0xa531d85c8f5ac058L,0x5fdca829009e0aabL,
|
|
0x8df732f6f2bced0fL,0x3ee658627faf57d5L,0xf7a265735c2f3bc2L } },
|
|
/* 44 << 77 */
|
|
{ { 0xe1ce7f3725a64849L,0x760847744da790f0L,0x4638f287cf5f319fL,
|
|
0xe36f3c5308c3786fL,0x07042ce1985513cbL,0xfb955cbf73d9cf3aL },
|
|
{ 0x3e68a2cacde0774bL,0x321f49b76dc2c816L,0x9bfed81fd76c4d3bL,
|
|
0x985b34fefd49fa62L,0x2a3de945ebb8fa9fL,0xcaa616f0405da5afL } },
|
|
/* 45 << 77 */
|
|
{ { 0xf3fa1924bc6d86f1L,0xbcf9d3cbb41dde67L,0xf96431168057ef19L,
|
|
0x09315fc52177ef64L,0x1ae99958fcf594a7L,0x7c4baeefaa4dd788L },
|
|
{ 0xff1ed168a2bb1bf3L,0x9c697d19b4a651c5L,0x5fe29bcc0df8c999L,
|
|
0x16446aa446c45428L,0x3a51398061700e83L,0xf34133593f034bc9L } },
|
|
/* 46 << 77 */
|
|
{ { 0x9cc126b8cbf28cbfL,0xf3f8aa7c1e6d63ffL,0x533e48d2b7f80225L,
|
|
0x8fea0d204749d781L,0xd8ea614b326f8185L,0x9cf3e07753c541abL },
|
|
{ 0x09040b60d95c9367L,0xc1b19940f5eabd9dL,0x80b0793cd8f8bd1eL,
|
|
0x95fafd6fadff120cL,0x071b1841ce155f8bL,0xa85dfc8cd29d9d9aL } },
|
|
/* 47 << 77 */
|
|
{ { 0xf38e0fdea761048aL,0xd9d5a22c88a93773L,0xbd58470841a99bddL,
|
|
0xa31ef1edebb412e0L,0xd5c4fd5a0274ea16L,0xaaf215f380c1f0f8L },
|
|
{ 0xe842a4537d3dfd08L,0xb5c877ae5a904548L,0x3dadd2eb9c6ddbebL,
|
|
0x7f97c541e84e54d9L,0x6183b6ce1b8d8829L,0x2a20c212f50534a5L } },
|
|
/* 48 << 77 */
|
|
{ { 0xc8c9b0ae7176dd90L,0xa95604542917d487L,0xb03b7946e62c508eL,
|
|
0x60425926e9fe2321L,0x73b10bba80c1d136L,0xc30a847d9d218c9cL },
|
|
{ 0x6ed0c8ef2073859fL,0xa176eabf432dd97fL,0x3078096ab9e96167L,
|
|
0xb28f0e6cc473e377L,0xb44e4995683a3bc8L,0x483512eed3523796L } },
|
|
/* 49 << 77 */
|
|
{ { 0x7ff5827f22adab31L,0xa7e859ad43ee005aL,0xfc2387f402c9629eL,
|
|
0x6f39e84add12b107L,0xd1378037c097d3daL,0xc677b554d70d107fL },
|
|
{ 0xec15469fe4943084L,0x1f0b13b19d412b76L,0x3b3b49b48a265a31L,
|
|
0x45f28cc7dbe97ff2L,0x33f0e31f4efa0f0aL,0x6b22b99e37a5591bL } },
|
|
/* 50 << 77 */
|
|
{ { 0x0a751d3eae0538e1L,0xd51b039af14135e9L,0x92eae0f6e8bdf562L,
|
|
0xf253bd5c66557b17L,0xc1ff9054ef26b81bL,0x9d586d39eafd711eL },
|
|
{ 0xd2b05d3d4f431502L,0x847d727f5823cfe5L,0x2c4e236a8e99840dL,
|
|
0xa407e2d87c5981c6L,0x989dd28c69ca34b5L,0x2e8ec6b09fe586e7L } },
|
|
/* 51 << 77 */
|
|
{ { 0x43161b5c40bda312L,0x8fd476b8a10fbb2fL,0x84cbf7579e5d9a4bL,
|
|
0x19bb5926a9a31956L,0x66ed993aea9db48aL,0xd7897780ffb0361eL },
|
|
{ 0xb031e035adfa3661L,0x1be83caf2296b4d8L,0x8802c98b0024cc48L,
|
|
0x73adb0c0bac1aa5eL,0x17df92e1bef75b41L,0xd753e99903d800bbL } },
|
|
/* 52 << 77 */
|
|
{ { 0x24940b868733c1c1L,0xf5dd77ce2ac072e1L,0xc248ad6bf7bdb8d2L,
|
|
0x423e0cc9d9a8b926L,0x4318d600e6da05dcL,0x3e557e08ca27dfc9L },
|
|
{ 0x8dc551cdc5dc822bL,0x160da94cbc8fb392L,0x4ffebd2aa6d4d363L,
|
|
0x8190c17db1ce15a6L,0x1abcd1361e9dc500L,0xae3a477c9ee52a47L } },
|
|
/* 53 << 77 */
|
|
{ { 0x67ab01575ed80bdfL,0xc77067b69aeb4a86L,0xe6e26abdf7880a93L,
|
|
0x782248db1e43049cL,0xa902c41016d78616L,0xc6fa899fbf309f15L },
|
|
{ 0x81e1532d672d951bL,0x84280ba386556a0dL,0x83190bfb55199078L,
|
|
0xbc11e8c25a1c4691L,0x8ac60c7f21152509L,0x4211923ec775dcd0L } },
|
|
/* 54 << 77 */
|
|
{ { 0xa63b33f6746418acL,0x62085e0eb7359443L,0x3b43ea7b5fb598dbL,
|
|
0xf4a0f4442b365528L,0x7f4d2ff3eb55a5ddL,0x012cd591f189eadeL },
|
|
{ 0x3fbdad99f58c8f84L,0x71dc1b0093bf34dfL,0xfb63f09ce062a588L,
|
|
0xd5f0f0ad6f24b66fL,0x940e23c91813cd9dL,0xeff8580b55f241dcL } },
|
|
/* 55 << 77 */
|
|
{ { 0xb30719d8b7fb5f3aL,0x8f74305b43275030L,0x2fdb613bf23628bbL,
|
|
0x75d9868ad945ccdcL,0xbfae46f4f0b73348L,0x48ad8bafe26679b3L },
|
|
{ 0x3aeb4743d0b389bdL,0xd2463ca37916297eL,0x3a6f37c820f52fd1L,
|
|
0x7bfade4495ffa348L,0x1e3f6282a25cb79cL,0xac3320d5229bd2a3L } },
|
|
/* 56 << 77 */
|
|
{ { 0x261578c7d57c8de9L,0xb9bc491f3836c5c8L,0x993266b414c8038fL,
|
|
0xbacad755faa7cc39L,0x418c4defd69b7e27L,0x53fdc5cdae751533L },
|
|
{ 0x6f3bd329c3eea63aL,0xa7a22091e53dd29eL,0xb7164f73dc4c54ecL,
|
|
0xca66290d44d3d74eL,0xf77c62424c9ea511L,0x34337f551f714c49L } },
|
|
/* 57 << 77 */
|
|
{ { 0xd1f879197700d61cL,0x21728fe49a89dc22L,0xdd3a475be6d93642L,
|
|
0x3f8554d6e095363fL,0x4b8b712463e1bb11L,0x75db57e6c6da541dL },
|
|
{ 0xfdeb9e46ac8342fdL,0x8ab4875114905993L,0x48150a06b2efd023L,
|
|
0x9f5f513df415bff5L,0x39b1234eee9d7915L,0x735570a7dda66da5L } },
|
|
/* 58 << 77 */
|
|
{ { 0x3a79a1756e3d4ec1L,0xde0ee6c79936b689L,0x37a7d9ec7fb84ee0L,
|
|
0xe82810d38fe1f44fL,0xbe433c7253049e9eL,0xe72ef4f5fb49e274L },
|
|
{ 0x525b72094b4ad28dL,0x37bfb857164f5f0cL,0x60327e31ac68d566L,
|
|
0xdb027619bb71f137L,0x8abc8026abb6e829L,0x99702ff15e838117L } },
|
|
/* 59 << 77 */
|
|
{ { 0x974be1d30696f1a5L,0xf884616dd3832430L,0x6997c37ce9dce1acL,
|
|
0xf4bad00e2e5cfbc4L,0x7727adf8e327a9a4L,0x15315bf16aeeb305L },
|
|
{ 0xe697c0af09fbffceL,0xe4291f7589f86a5fL,0x765f1904487b12f9L,
|
|
0x752c58a5b7f8ca88L,0x9f9563d473716bf7L,0x48803cdbfd032783L } },
|
|
/* 60 << 77 */
|
|
{ { 0xa0d935ce9050c5cdL,0xc1e062d03e9b902aL,0x212d0e5dc3054c00L,
|
|
0xdc9c3f2de70ad96bL,0xa2182ffbc2742144L,0x4680d472a716993fL },
|
|
{ 0x9852bb00677f3756L,0x2bb3d78435e6213fL,0xadfdbfe07377fdc7L,
|
|
0x41db795d708afddfL,0x6848cef57727ed86L,0xb24e416aa6c1dd1aL } },
|
|
/* 61 << 77 */
|
|
{ { 0x36d76f2f2edc95c2L,0xbdf2a67810b0670fL,0x49fc8c43b63877a1L,
|
|
0x23182ed3a87c8615L,0x94c21da96c011a44L,0x3bc0b86860d3c162L },
|
|
{ 0xca6a158244815192L,0x4bd1ce04fd97b78bL,0x1d0074cddc750023L,
|
|
0x40cf8233cdfb0c7cL,0xe4e28aa8bbbfbf3dL,0x72656155b6eec7d2L } },
|
|
/* 62 << 77 */
|
|
{ { 0x5b1be65b912b364dL,0xe6369ca1e0335426L,0x249740d58420e7daL,
|
|
0xff13a26f1ac1acf4L,0x0ecee744b9634fb2L,0xbaa77d57d664ceb1L },
|
|
{ 0xadfa7625914f3f7eL,0x17c75e99bbcffe16L,0xcf557911d64aedb0L,
|
|
0x8a4b7b49c3644ba0L,0x115240401eb7bb97L,0xb823c21a70fc7b5eL } },
|
|
/* 63 << 77 */
|
|
{ { 0x45db2c038727c0fcL,0xf5aeeb7bbae2c896L,0xfad1cc32eed15b82L,
|
|
0x65d4440a8609b00eL,0x35698d956b4dbd25L,0x861615bd0f6cda68L },
|
|
{ 0x578efdaa8aec1e99L,0x87ddae76fcf67480L,0x5ff5a1304669ccb0L,
|
|
0x5fd2f31a0b98ee60L,0xccad491a3cc4c003L,0x6dcf25bbccbc46e0L } },
|
|
/* 64 << 77 */
|
|
{ { 0x93a62e7cfa43699cL,0xdad738901bc422d9L,0x265e3cbb10cc9544L,
|
|
0x28cceb062f37154cL,0x6b79b0713bf2e08bL,0x88e025df3ab39091L },
|
|
{ 0x50a8d04d126522bdL,0xeabbc1b7b779bacfL,0x3db4336ac21cc62eL,
|
|
0x4747f0a36fc00450L,0x067cbf1c544b2d95L,0x2480b7d8fd2be7a7L } },
|
|
/* 0 << 84 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 84 */
|
|
{ { 0x0233e423d52eb122L,0xc28483521154b0c9L,0x2ca09cef6349e35bL,
|
|
0x3b70afc3ded2ec54L,0xc813474d52dded3dL,0x2d3f21bf12f00ee0L },
|
|
{ 0xa0908f7692f215c6L,0xb97d60e94e9c0440L,0x84ad10c134b6a8e0L,
|
|
0x6f37fd956e7c163eL,0x7caae8c8d057e0c3L,0x534f52c2553721a2L } },
|
|
/* 2 << 84 */
|
|
{ { 0xa354c1de72a041b2L,0xe83df25929d1330aL,0x676610999d532bbdL,
|
|
0xb7c2f4cf52011751L,0x6945d34ff659e35eL,0x6217d20ba1303b7bL },
|
|
{ 0xa200ddba25751badL,0xa74a729001d3566dL,0x3018445faa82b46fL,
|
|
0xc3e6a3acfccedc1bL,0xe86ae8703353e29fL,0x1c8085bbfd7e8547L } },
|
|
/* 3 << 84 */
|
|
{ { 0x728c8e145d1a678fL,0xf944da572ac89a2dL,0x3016c2da4796df72L,
|
|
0xf6d79e4e00a55efcL,0x4fced269526b1cb8L,0x4a93e47791f165a9L },
|
|
{ 0x528b8572f84f90d3L,0x3b30376e5e725561L,0x4f903520e07bb990L,
|
|
0x07ddb97f4ea8ae6bL,0x29c01e70b3b735bbL,0x825c7f6e5000dd4aL } },
|
|
/* 4 << 84 */
|
|
{ { 0x306b63e3b4dcea78L,0x4b10209213636935L,0x36bb68898bdeddeaL,
|
|
0x9331655d67a329acL,0x14c7fe26ba92ccceL,0x4e7d6929be0519b4L },
|
|
{ 0x0dc39dbd164d50e2L,0xd4c430a0b1679cc5L,0xc7f78818fa8682baL,
|
|
0x43396eadb60aad97L,0x751784d7ff2c64ccL,0xd37928be866af43eL } },
|
|
/* 5 << 84 */
|
|
{ { 0x3742b61e0475f547L,0x48b2a2c2477722acL,0xf52c6787abce3401L,
|
|
0x4749711ea4cb41b4L,0x7ce0dfb03fca817eL,0x1c1e3bf996e85048L },
|
|
{ 0xcd65250e40faa8e9L,0xa8edce7017d9b93aL,0x73523cb2b4dd5619L,
|
|
0x15ba773abb5379f5L,0xcc5e62d6c0a847baL,0x7efe5c7c04d852deL } },
|
|
/* 6 << 84 */
|
|
{ { 0xf0a69e685a91c9aaL,0x0304d20105c13197L,0x773a3ab7cd14af1dL,
|
|
0xc0b88edd558d555dL,0xeb12d197d2e63dd6L,0x4a8e849fbcd9cdb3L },
|
|
{ 0x06432985965eaa14L,0x453d93861a5a6f43L,0xbd28f6164171b9bcL,
|
|
0x37781639bbfcf90aL,0x1f93898f3a36084dL,0x1fefd8b7dd00ca75L } },
|
|
/* 7 << 84 */
|
|
{ { 0x3b8d8e495e456124L,0x967ed511967c17b7L,0x1d72430c2aad8c67L,
|
|
0xe8c5d506b82c1673L,0x989978868a0fb41dL,0xa9d478f70f81234fL },
|
|
{ 0xa0c941cf44cc0614L,0xc033c99024ad30f5L,0xaa7de296101f89aeL,
|
|
0x4cadd8e3ca6a3227L,0x3b4db51f2764ec0cL,0xcbfe70fc09256db4L } },
|
|
/* 8 << 84 */
|
|
{ { 0xb9207dbc2b2f1bccL,0x6afd6871a3e83ef7L,0x49924e5534ba150bL,
|
|
0x2935ebf1dfec9972L,0x34bf5e94b76f870dL,0x22d0f32b4c20385cL },
|
|
{ 0xc78ac1728ccc8e72L,0x7b45b8220ccecb0aL,0x76c67ee4cfb4b8baL,
|
|
0xecfaefb2cd8724b6L,0xe9bc3d67340bc1efL,0xed40b2b9ca5541b5L } },
|
|
/* 9 << 84 */
|
|
{ { 0x5d1bd16518f8e17dL,0x754986b7405f822bL,0x420b1b24d8753fafL,
|
|
0xab038e0608ff680cL,0x33621a0fa3649f49L,0xe24b84db78918eb6L },
|
|
{ 0x0e669672c8bf4168L,0xcb7fab33171eab20L,0xa097d2cc4808be42L,
|
|
0x4f4e395f5842b80bL,0xddcb1e51a579145cL,0xa635d0cdf330ae0cL } },
|
|
/* 10 << 84 */
|
|
{ { 0x9b8a3eb3069e6432L,0x43aaa7fc721397f7L,0x46e23c6ca7e83a71L,
|
|
0x71b261d593fa3c25L,0x4a47a1050f523a72L,0x31919e898dcad752L },
|
|
{ 0x4c8b06e70c5dd2adL,0x677ec5f38bdc55e7L,0x4372d55dcb1b5828L,
|
|
0x7bf054c1f04dd321L,0x4e8c1a992e44584eL,0x6807803751d35d78L } },
|
|
/* 11 << 84 */
|
|
{ { 0xa6d78a3d754377feL,0xcc17c26ac72ae5e6L,0x2f0ab93b1c05fc24L,
|
|
0x1645c369d64c9d40L,0x7c37b12c563e7e9bL,0xb70d292d58b477cbL },
|
|
{ 0xc283aca993a2d5a6L,0x759e9118354c183fL,0x8a031f6fdd8f4125L,
|
|
0xfa8b17ad56edbe3aL,0x6e0f96eb63c651ffL,0x40361942b5085541L } },
|
|
/* 12 << 84 */
|
|
{ { 0x25ae349981d311b3L,0x8640f52a3b16037bL,0xac0839941d947065L,
|
|
0x3723c75ee2e693d2L,0x65040a51b66f429eL,0x7f582b0b035a3a53L },
|
|
{ 0x20eca9e10a166da6L,0x45b37e202c4cc565L,0xeab882957a8a96e3L,
|
|
0x99e771dab60a1a1bL,0x2cdd778c23b03965L,0x8d4d7a7291052478L } },
|
|
/* 13 << 84 */
|
|
{ { 0xb57b345e4ff33506L,0xc1a3092a31d23fc3L,0xc16b501e905e1f58L,
|
|
0xa36a3b1f29067b85L,0x7cfabd23c214dd5aL,0xbd5f7ab726ad949eL },
|
|
{ 0x8f64595987363816L,0x49c1a3e679d12d59L,0xcc8f3e2c32d771abL,
|
|
0x008d900e6bde16d1L,0x60428a0f60165966L,0xd4f8d9eda7383ab9L } },
|
|
/* 14 << 84 */
|
|
{ { 0xa52d3c2d7e8f73b5L,0x86d8063351842657L,0x58f01253b3949ebaL,
|
|
0x97689f15e79367d0L,0x918bf9a30d820328L,0x2d4bc99441c959dfL },
|
|
{ 0x37392f6e8c16ee54L,0x9f726d58e6f0849bL,0x497de1e4b8208f08L,
|
|
0x60c51233d51a29b3L,0x0f61fb03c9e1d465L,0x09494bd0fbe2613cL } },
|
|
/* 15 << 84 */
|
|
{ { 0x100ef5d0a2bd7bd4L,0x89efecf5f45e2a66L,0x63bc210b653786bbL,
|
|
0xc7748dba0a0e47c4L,0xaf8122ae110d1ba0L,0x6695bfbf797c78bfL },
|
|
{ 0x9b0e6fb1d7dbff69L,0x106799703f53040eL,0x22d9ed52fcaf4ed1L,
|
|
0x1e27bafdcc1b2d4cL,0x839f9c019f1c88e6L,0x1112fe541321ad66L } },
|
|
/* 16 << 84 */
|
|
{ { 0x4f293478154d0f99L,0x1b82320dd07a24b3L,0x1bf7c94f64d55f6fL,
|
|
0x4489b57d725c5125L,0x3aa4d43ab1b6a091L,0x054842bdcf7a60faL },
|
|
{ 0xaa918a4d2aeb4cb6L,0xcbdaff99ac7d317bL,0xed0e00a16812a03cL,
|
|
0xb09acf270b0a1e4bL,0xc73a41f7ac28386bL,0x43134dbdf4cd1321L } },
|
|
/* 17 << 84 */
|
|
{ { 0xe5f746af6e001a20L,0xdc975b02d6a9925fL,0x6d13e266e57f9100L,
|
|
0xe013661396a9c4c9L,0xb483162850a66d45L,0xe3b0f96d4ee8439aL },
|
|
{ 0xf2a2c08d3e074501L,0x987b2b6b2be498e4L,0x605aad24a15b815aL,
|
|
0x5bf2186f8529ad68L,0x1413b3d7885ad25dL,0x3de23959807efaabL } },
|
|
/* 18 << 84 */
|
|
{ { 0x08336ffed8c33924L,0x15b56cbf5140b253L,0x38dcd310306caedbL,
|
|
0x04ecd49647944afdL,0x1280d23f68a48f95L,0xf414220434363c6eL },
|
|
{ 0xd0a397eacaa8717fL,0xb51a1669c3994b80L,0xa02eed916c56808bL,
|
|
0xc3ab55c583545c3cL,0x8b835820fd26114aL,0xe0cfa4a6ffff324cL } },
|
|
/* 19 << 84 */
|
|
{ { 0x4db4bfb788b45f19L,0x130252bbe0d5fd16L,0xe44c97b22808bff6L,
|
|
0x885e4555b03405caL,0x3b7ce036be9af81eL,0xebe17cf58c552276L },
|
|
{ 0x6eb946c977f4158fL,0x36c23a9c74a5e642L,0x466ff55f2e70a453L,
|
|
0x327fd5fd28ea7af7L,0xc96bfbec6e658256L,0xaf194fe8c0a3b932L } },
|
|
/* 20 << 84 */
|
|
{ { 0xcf63d27951c0d95eL,0x3b170a0bac86a014L,0xc21eaaa9881095e1L,
|
|
0xed2fda116069a3ebL,0x536264b9bd2f1c5aL,0x819e1cffde312c2cL },
|
|
{ 0x6c30f983dfd6ce38L,0x2f32cc4c980b439eL,0x9fab10b63b9c03b2L,
|
|
0xdfebe34e011ab74aL,0x587360e3b80963f6L,0x3db1f6108692e352L } },
|
|
/* 21 << 84 */
|
|
{ { 0xf262f2379765908aL,0x76f8d0017d03cdcbL,0xdbcadfb22f35de21L,
|
|
0x88d5bf592a73815aL,0xc4f4e3b02b1bab82L,0xf5cce885b9635dcbL },
|
|
{ 0x110a785875a416dbL,0xfe7e6c360adb01feL,0xa02642c01374d779L,
|
|
0x9010758753bb5898L,0x0c764ed2a363fcf2L,0x24a2a5541700e551L } },
|
|
/* 22 << 84 */
|
|
{ { 0x63a094c5fe3d070bL,0xf769b91988515eb1L,0xafe86e1450d1131dL,
|
|
0x6bf277886774d3d4L,0x7231d699ffd805d0L,0x05132e5b6304116eL },
|
|
{ 0x3d5e255be34ce5bcL,0xfd9c3bd0c95e3089L,0x22a24023b83cbac9L,
|
|
0xfb6d2b6fb0b3b98aL,0x74af1115f7e36fcdL,0xcfe15eaff9da3bf0L } },
|
|
/* 23 << 84 */
|
|
{ { 0xb242ffd61da39f60L,0xd0ed946320cac1b3L,0x9ebd5e46e25f809fL,
|
|
0xc7df7e5a07f5aa4eL,0x5eea38d791a5f85dL,0x6240f01d6080442fL },
|
|
{ 0x72ec0a5e251d866fL,0xd3e4acbebf2c0037L,0x0d4f47c90fd962d7L,
|
|
0xece7c047b8de2dfbL,0x841050b96df17f0fL,0x567c3df7e933a4d5L } },
|
|
/* 24 << 84 */
|
|
{ { 0x266d2c1cbb2fcdaeL,0xb538d4a252be93f2L,0x774c88ba73bd0094L,
|
|
0x65283a9b81a7e042L,0xe1438bbfd0381625L,0x450e1f644d0db206L },
|
|
{ 0xb38ae9ef4e60fc4aL,0x14ce87e112719817L,0x831d41ec570303f0L,
|
|
0x7172917028850444L,0x2077ea32ccd609f5L,0x091d1166cd273fdcL } },
|
|
/* 25 << 84 */
|
|
{ { 0xaf5916f49412edcbL,0x9ccc0dc08f01b2d9L,0xbed1fdd42dd737c8L,
|
|
0x29d26cab95a21501L,0xff38bf18c70f1364L,0x0bdb055876879b06L },
|
|
{ 0x706031e2a14164d8L,0xe229fce1fc39648bL,0x5ebc640878e97c8bL,
|
|
0x26039bda822de18fL,0xab992da4b9f090d7L,0xf409432d53eb438eL } },
|
|
/* 26 << 84 */
|
|
{ { 0xdf216dd84b2ca517L,0xb3eec4b9c6b74c4dL,0xf564e6c81c14e77bL,
|
|
0xcde25f1c2c2c9395L,0x7e31f7a5049fcc83L,0x6913707b9284c753L },
|
|
{ 0xb92a6f2458e6eb5fL,0x85b0cab595148292L,0xeaad036d7449be92L,
|
|
0x2f6a2888eb94a702L,0xd7d8773d47d59fb0L,0x612d257303c0bf25L } },
|
|
/* 27 << 84 */
|
|
{ { 0x805ece910ea742f6L,0x54486a6ffb5dba94L,0xaceb0eebbae52f76L,
|
|
0x2200fd85e98794f0L,0x44bd993ef305af19L,0x28f256738eb8baceL },
|
|
{ 0x5d3fabbadc5f9c18L,0x4338f79c1b003ed1L,0xaf4b0566bc20c65aL,
|
|
0xded9407c3045d1bbL,0xe8713d7506391eb2L,0x557d62c971307365L } },
|
|
/* 28 << 84 */
|
|
{ { 0xb872a10584d2c3bbL,0x44bca57139196026L,0x857327d84e352e5dL,
|
|
0xa6c6004ad925f99fL,0x48aaf266bab79eadL,0x213ad923adab2a3fL },
|
|
{ 0x3be29b6df371cc48L,0xe732b9062385c9f4L,0x562e0be123f0a84eL,
|
|
0xbb6b017228c4b0dbL,0x71a93ae5f4c6d8beL,0x76b8bb16551f1fe9L } },
|
|
/* 29 << 84 */
|
|
{ { 0xd028d9b5242002c2L,0xea105054823783caL,0x01cf8a491d45c34fL,
|
|
0x1035835e42457869L,0x0a95049661cc1e05L,0x9dce5bd3b439afc2L },
|
|
{ 0x8552f02003b18e4fL,0x4973e3bde6144805L,0x29fb98d8d8514c4eL,
|
|
0x0ce0e8d83ca27b39L,0x7aaf3f5284bbc6caL,0x0572bf40d78c7c5bL } },
|
|
/* 30 << 84 */
|
|
{ { 0xbbfaaa94c39926a8L,0xb9a59fdb60a138aaL,0x217a1aa2947e30e9L,
|
|
0xcac988c9c52c9fffL,0x5676473a3bae3c39L,0x7d84b353857f04c9L },
|
|
{ 0xdeded30cdd324e24L,0xf07c678a9c242899L,0x956d05538cb64f3bL,
|
|
0x9d34e2f5502cb2b0L,0x99e1054a51dd03b3L,0x86b8bfa54d60a593L } },
|
|
/* 31 << 84 */
|
|
{ { 0x3dcd2df9c8870c4eL,0x7cfdd05f1699cd0fL,0x19e9ccf027e79e0fL,
|
|
0x56e997027b85d75eL,0x407b5b74ccadcf9cL,0xc961a336297dda7aL },
|
|
{ 0x350c34d56d12d17bL,0xe37de9a93bc6afe9L,0xd2c7339e0d641d3fL,
|
|
0x2700f39cf7dfa063L,0x2916f9ad8ddef077L,0xffec6230547cdbebL } },
|
|
/* 32 << 84 */
|
|
{ { 0x10a53b90754d15e9L,0x6cde9a0c5f4c7218L,0x740d513fabef2b96L,
|
|
0xff6cc47cd3f802fdL,0x1be6825beb0627afL,0xdb21ede55886c2dcL },
|
|
{ 0xb6cfb2c6f5daaed7L,0x68b61aa8fae29a9cL,0x7a1e16f53a5a485bL,
|
|
0x16b60b92e7b2223eL,0x332f33d836a13a9bL,0x4567c313876cd1a2L } },
|
|
/* 33 << 84 */
|
|
{ { 0x7663402de62014a2L,0xbffe1e7fc4efd224L,0x2080eb02c38f766dL,
|
|
0x6c95529ba9641db9L,0x24dc13a5c68de8e5L,0xca219b3fbbc3016bL },
|
|
{ 0xb83450e310b634e0L,0x8cd26d775b097a34L,0xb912c34564c9884fL,
|
|
0x3d1f28be5bd75f1eL,0xdcba2b479466ea59L,0x4077e017ca9948e3L } },
|
|
/* 34 << 84 */
|
|
{ { 0xb4b2c65df91c7972L,0xabe915496b689013L,0x4eb7afa8d506333bL,
|
|
0xc2f2ac1d648e7c0aL,0xc6bc96b1213cc243L,0x0b827c2189e44025L },
|
|
{ 0x2e866601cadee87dL,0x8ee85356b4719ce3L,0xefda7427b4fc0081L,
|
|
0x0d5c33c4c802c92dL,0x4c8635ab58515f01L,0x9d7ed87edd0ab04fL } },
|
|
/* 35 << 84 */
|
|
{ { 0x9a660794cda4cadfL,0x70784fff2484a3b3L,0x8ed664ad2de7de13L,
|
|
0xbaff5937030d906eL,0x884407034ab43a4fL,0x86dfdd53ee09795bL },
|
|
{ 0xcffa6852fb0e889cL,0xd94373e1e8c9fb95L,0xecc0ea249b0e3ac1L,
|
|
0xe88eda6eaa89e492L,0xbb049803da19207cL,0xfbb0c3874bbb5be6L } },
|
|
/* 36 << 84 */
|
|
{ { 0x3e2bdd9b5a5f6b4dL,0x30cf4762ab005a55L,0x8736f5188bacd78cL,
|
|
0x8a5a647b09dc21fdL,0xfba40c38ca06c1fcL,0x63d53fb64a4e1524L },
|
|
{ 0xe77d07a19a2bd706L,0x54144ea7bbe30e86L,0x8eb606220bd955a4L,
|
|
0xf689cc80b3c26cafL,0xc70fe95c9fefcbbfL,0x67f9e8e2495b5bdeL } },
|
|
/* 37 << 84 */
|
|
{ { 0x04361e6b2e4d2cf9L,0xdbd3cc13ade11ba7L,0x93dc1d1df47d8ae0L,
|
|
0x7d46bba6fbb2d65dL,0x797ea0df92e97abdL,0x09eb3975a712e8cdL },
|
|
{ 0x9ab3a54e0380cf8fL,0xcd1a9574c96710b1L,0x6abcd1a1dc13dbfaL,
|
|
0x1be0db71c2ee67f9L,0xee8ec8d0c2ac89a5L,0xbc363f407da201f5L } },
|
|
/* 38 << 84 */
|
|
{ { 0xc86c049bbbef377cL,0x43df6f3703de56a7L,0x01eced2b558e516fL,
|
|
0x18fca0bdb43c1cc0L,0xd8c6f7ff62121c68L,0xb2f1f1ac36f90713L },
|
|
{ 0x5f876328ea1bbd95L,0x9f22dd535ac4ce8cL,0x7e052acc7df88002L,
|
|
0xedf21fb7068d46a4L,0x349130a21d7d0220L,0xcccc79beaaa68eebL } },
|
|
/* 39 << 84 */
|
|
{ { 0x9c955b5eb4100632L,0x8d6dd2d3ccd99a0eL,0x700f827c265dd397L,
|
|
0x5540bc0cfc85a2c1L,0x6d4b8e7adfb81661L,0xfbfe1ebe1d5c1485L },
|
|
{ 0x322c2883c9dc1b6cL,0xc7c897cdfd7e0f34L,0xe70b0586030e41aeL,
|
|
0x4263e06e26a728b7L,0x0ee2b93392387542L,0xae708ccaf6220511L } },
|
|
/* 40 << 84 */
|
|
{ { 0x05ff8b9cbc15ae37L,0x94dc2e85d06d62edL,0xea1d1c8b4b02607dL,
|
|
0x1fc202a224da757cL,0xbd5180bb35440e69L,0x0263dd51698ee7a5L },
|
|
{ 0xbe93f27654013d74L,0xa7c041c464e81695L,0xbb170ac13ba5336fL,
|
|
0x1aadf302af84dfa1L,0xeda58747c960788fL,0xb456070e5eefc35eL } },
|
|
/* 41 << 84 */
|
|
{ { 0xa905d421800ed69aL,0xdb8a643813622898L,0xd003affbdaab0769L,
|
|
0x467bc051f0aed9d3L,0xed1e6951b11085d3L,0x7a1d1152d3f54fc5L },
|
|
{ 0x8cb243b6dc8dd008L,0xf9c690d1f409210dL,0x9a3195399461aee0L,
|
|
0xf580724dbc2e4de0L,0x52f648e4e759556fL,0x235a79f2697885d6L } },
|
|
/* 42 << 84 */
|
|
{ { 0xb293d3fe8220ceb2L,0xace20e7e049a33a9L,0xa584ad52af4198d6L,
|
|
0x49c5cde64aa0a5c6L,0xc4f7877ecee2e664L,0xe1557968bb98ed87L },
|
|
{ 0x69b0cd713066000dL,0x1af188cbc7399f29L,0x5b88b85c306188a3L,
|
|
0xcffa28eb4097182dL,0xdb01149ec80d0aa9L,0x9f8e6d59402bc397L } },
|
|
/* 43 << 84 */
|
|
{ { 0xa646077bd5b97d37L,0x618df84461cfbd95L,0x3a9fe2f447c62894L,
|
|
0x7f2760eb4e0f1612L,0x50c08fdb36e5acf1L,0xac799584675d2aabL },
|
|
{ 0x3eba6f54917dd606L,0xf585fa5075119ed9L,0xb047abfca32016bcL,
|
|
0x61c03e51aca118f0L,0xef9fcc526dc13766L,0xd849eca5e8a3fb72L } },
|
|
/* 44 << 84 */
|
|
{ { 0x11ac1ff4147faf46L,0x5dd8913882b818f4L,0xe439f66fb15fe5a2L,
|
|
0xadf913a5fe8fb45aL,0x3dc708404a6bbdb0L,0xe8e1204da4af4ac5L },
|
|
{ 0x4be549318ba70502L,0x945d9a765883b39bL,0x99cb1c721a76198bL,
|
|
0x96fbed479a7949e2L,0x30ee96ebf0299bc4L,0xb7dc5e76d3dd160cL } },
|
|
/* 45 << 84 */
|
|
{ { 0x85eca39b0c88d5feL,0x96000863af9e0158L,0xbb13f99c4509590eL,
|
|
0x50033c18034e2499L,0x1e9346f87b86cb33L,0x917d88b4aca548e0L },
|
|
{ 0x0c422c2e9e2a7e15L,0x6751c95c5e37fb06L,0x631361b8c40d21b7L,
|
|
0xe231858ec9958deeL,0xae86abc54d9936e3L,0x60c78d1137bf9213L } },
|
|
/* 46 << 84 */
|
|
{ { 0xa0bcb7c6283190a9L,0x36c884ffc53fe76eL,0x071d4acab23f0865L,
|
|
0xd44e3c20e14a82f5L,0x704dadd8968d28bbL,0xb40d2b948e88ad61L },
|
|
{ 0x4a29142ff3de62f8L,0xdd071910bd7292a8L,0x5b12c32d5b3571c9L,
|
|
0xe9886262943c6aecL,0xc49b7506cb1e0a33L,0x87f6c2d3de95886cL } },
|
|
/* 47 << 84 */
|
|
{ { 0x44ba232e010f465cL,0xb82486c69ac91d38L,0xcd1a6bf75de743f5L,
|
|
0xe050232838acbc4bL,0x8de9c29631fb87b5L,0x9c8029250450c4efL },
|
|
{ 0x19ee1607635e64a6L,0xeff5478c69ed7f8eL,0x311201a027001c21L,
|
|
0xfc0382a78beb55ecL,0x494b623ce9dea7f8L,0x926a3f756767f769L } },
|
|
/* 48 << 84 */
|
|
{ { 0x802f495cee46f99bL,0x0f3ad0ee43b91cbbL,0xeaf3b294e9b3f0f6L,
|
|
0x82cc760033cbdcd1L,0x1a5642278e83fce5L,0xcf1b2edaffa0e4ccL },
|
|
{ 0x7d93e9769b1f5706L,0xe4eb843cf873d68eL,0xcb53dd79eafe5f35L,
|
|
0xcbbed8f0fcaafabbL,0x570472705f053efeL,0x2c71a95f1ebfeb7aL } },
|
|
/* 49 << 84 */
|
|
{ { 0x02d4717ddd7a5499L,0x3bc8bdcb9966236bL,0x13f08015fd27be15L,
|
|
0xe05236f6baaff392L,0xf73bab3f7b4cc522L,0x8ad26d4552ccc027L },
|
|
{ 0x79f8e79e9e9ccd7fL,0x8011b92aab2f22d9L,0x6aef576e729662e5L,
|
|
0x7d5194d05e568f55L,0x2947d63a1a40860bL,0xe9890f1440305b54L } },
|
|
/* 50 << 84 */
|
|
{ { 0x8085614c0fa9602eL,0x9ee1b9b26651c4ffL,0x65dd9c94ec048f1bL,
|
|
0x10b4a62f6d6c0fd7L,0x61469fb7d391dcd2L,0xdf751399edc3d431L },
|
|
{ 0xe3901315c913acbbL,0x31581d7a90976644L,0xf20809634aee5cecL,
|
|
0xaa716eafe5408c5dL,0x9e356989b9a60ad7L,0x2d6e7733a6a3c977L } },
|
|
/* 51 << 84 */
|
|
{ { 0xd6d99f54f19b8464L,0x3322a0b8a0be5c3bL,0x6cff730557e98725L,
|
|
0x786709c7953a357dL,0x3864d278a1013652L,0xf7471f111738f6e6L },
|
|
{ 0x0377a923984c465aL,0x4a24b9e14ba970e2L,0xe53dd9f21c01d248L,
|
|
0xf422b754fbffc0d5L,0xae25dc0ec6a956b0L,0x3c3fef96ce806445L } },
|
|
/* 52 << 84 */
|
|
{ { 0x6a69d207b5906d71L,0xf3c757ed8964e1b1L,0xdae255af5f98821fL,
|
|
0x6c801ed4db1af96aL,0xd12430343d109b86L,0x4b2aa65fa091f98dL },
|
|
{ 0xd9bb4c2132dcb5f9L,0xe5a5979bf190a1e0L,0x0861e5de40117a91L,
|
|
0x8753c9adc39120e4L,0xfdcb09f4aeb4a18fL,0xdbda38746bd1fd08L } },
|
|
/* 53 << 84 */
|
|
{ { 0x1bd8e8c0304f7045L,0x8ffcf24eedbd2dd0L,0x13c9441de6ae4dadL,
|
|
0x5efb70aab418c02dL,0x9d0fede1b8cf6949L,0x613545cf41f5aec0L },
|
|
{ 0x4e3342244b98bddeL,0x7d0c11110fd8aaf9L,0x30c2bedcdfb8643cL,
|
|
0x875d386aa83e493fL,0x85b32632d6cd0825L,0x9f1ef3a01445507dL } },
|
|
/* 54 << 84 */
|
|
{ { 0x2b70440e54f6b8d9L,0x355e692430eddda5L,0x354e7cfbc9199910L,
|
|
0x7e8933bfdc7de946L,0xc5692fa981b9eaabL,0x2eb58fff98cf5f21L },
|
|
{ 0xd0d8f9bb96b19d59L,0x779aad414d1a6285L,0x0cee1a9b5eb87c49L,
|
|
0x676e36ff786c4c81L,0x6618c8f112d34964L,0x2061186dd03e9562L } },
|
|
/* 55 << 84 */
|
|
{ { 0xa5ae40977da39b54L,0x98e4d1d9f1d40635L,0x40d97af126154fc6L,
|
|
0xf18041d4e9ae28c3L,0xdca9487555978c61L,0x4aaddec43638b9b6L },
|
|
{ 0x1e615a2eab925f91L,0x5cfbbe9ded8a50faL,0x0f26d3ffb2034aa1L,
|
|
0xb2f9cee2c4813646L,0x2195af47957b6709L,0xa55dac537e7fc45fL } },
|
|
/* 56 << 84 */
|
|
{ { 0xe44a8ed7630816b2L,0x5fb9b643cca34310L,0x07826148a3b5d2e2L,
|
|
0x0f890db16e65c2efL,0xe9feebe288283844L,0x8e56c6760368a9f4L },
|
|
{ 0x8f0cc9c93e4ce874L,0x646ede9b09f1beffL,0xe92d6bda014e3d19L,
|
|
0x27e620c5520c921fL,0xfd9b2ae1eed78555L,0x68684615816a603eL } },
|
|
/* 57 << 84 */
|
|
{ { 0xcf54e9e89ded00c7L,0x8dff0130abbf7765L,0xf12773fb10c5f8d0L,
|
|
0x7435ac767382e4eaL,0x93092b16f61d443fL,0xc1554fa846eb45cdL },
|
|
{ 0x0896852c30957ca5L,0xc0d91e3effe60944L,0xce8aee57a1b7c75eL,
|
|
0x4d24f07007cd1a9eL,0x3d8e381094456b11L,0xed6fba6b9dbc9d0dL } },
|
|
/* 58 << 84 */
|
|
{ { 0x1b1de3ed8b5b8f82L,0xf542399d64252363L,0x23f34cccd206f26fL,
|
|
0x54c48d9fbd941d6fL,0x3859eb56202e757bL,0xedcb4729ae0eaf7aL },
|
|
{ 0xf08753c512360fceL,0xf37ece765f697cd4L,0x073cae01c98a7c8bL,
|
|
0x6e298559df664bdaL,0xe8cefd27194b103cL,0x56301e2a811f6a71L } },
|
|
/* 59 << 84 */
|
|
{ { 0x8103c6053d3fe586L,0x472885b3999bb4caL,0x3759d2d492a2834aL,
|
|
0xaa4eb3acd46cca1bL,0xcb99aaba633e579dL,0xf9369b033d6dc569L },
|
|
{ 0x55fdb1fe8398c067L,0xd7aab8b47e6826ceL,0x7f5497bd8b525561L,
|
|
0x2e0e1e9c2cd0e3beL,0x3142a6e2c47caf5aL,0xe78cb1840f4b802fL } },
|
|
/* 60 << 84 */
|
|
{ { 0x0a1577baf455f6bcL,0xaeeea79094df32b3L,0x1af3ba0f6bbb15ceL,
|
|
0xaab92a74e8522659L,0x84087a8f7efa0a4fL,0x83c6991b84596065L },
|
|
{ 0x11f7829d29fbb626L,0x32b04b2f86031974L,0xf3a5b8722c1291deL,
|
|
0x2ffcc97e8bd2be43L,0x575400d10a206f7cL,0xbb4583de0befbce6L } },
|
|
/* 61 << 84 */
|
|
{ { 0xd448eafaab983fd7L,0x2622336c7a18a7e0L,0x36632e221c274b3cL,
|
|
0xe64e8f89bf086fcfL,0x1dced08fef72ebd9L,0x61249c25ea295d31L },
|
|
{ 0x7433743d3755632aL,0x9d766243ff32ed08L,0xc36e816a977b1d9aL,
|
|
0x1069fc0820ccec81L,0xbd4af7bef65a0cd8L,0xd04127fc92e31836L } },
|
|
/* 62 << 84 */
|
|
{ { 0x39560937ea57ca46L,0xe1f2b7198229d346L,0x462b28d4dd02dcbfL,
|
|
0x510fce98a333d609L,0x795fbd38fefa05beL,0xd6e34c231bcb029dL },
|
|
{ 0xf33291fc838f7ec3L,0x2a01a1f5f16e7247L,0xf9737722c0bcb3cdL,
|
|
0xc53ef57ecc8a6c77L,0x219372afc750f1a7L,0x3e6a97c3d14e60bcL } },
|
|
/* 63 << 84 */
|
|
{ { 0x87278f062db3d752L,0x64c65f5cd106b7a8L,0x04ccc14d41ee7aebL,
|
|
0x72d1189e71952b60L,0x2e88f851080e9ea8L,0x625a6d32913e8df4L },
|
|
{ 0xd943de73900ee95dL,0x6c12b3b3ecb8b3a0L,0x6209daf2c9b141e8L,
|
|
0x81c02f71412da959L,0x222d17b747278f65L,0xaa338805789138e1L } },
|
|
/* 64 << 84 */
|
|
{ { 0xa896d28e4aea3fa2L,0xc6137a456db06ee9L,0x1bbafe8c06fb15ccL,
|
|
0x2daab2961cdffdadL,0x984defc8e1119b3aL,0x9cd44c3cde2a25a3L },
|
|
{ 0xa7f54ece54ed6d73L,0xd283017f50907054L,0x69130efc6a3b9442L,
|
|
0x5d17f1276785163bL,0xc019911b172b1d0aL,0xa19c745f7e3e093cL } },
|
|
/* 0 << 91 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 91 */
|
|
{ { 0xe185bdc2ab83d932L,0x0a75845dd7c4e754L,0x1f6f3397c3fe5695L,
|
|
0x6c9f3a5f61f6a04fL,0x3c0f9d4bb390a92bL,0x9e3336b74793b454L },
|
|
{ 0x91ad0c341472f06bL,0x4110047a892cbdd7L,0xfa24d90565d53c83L,
|
|
0xd63e58334176007dL,0x741089fd2cd1623cL,0x6b3d92022685d345L } },
|
|
/* 2 << 91 */
|
|
{ { 0x1d510157c9cb7f6dL,0x532a077346ab7372L,0x2ea07e2fc6dde9e2L,
|
|
0xceed9ad937d5bb1fL,0x3121994b98cc6e28L,0x67d2fbb567ad8fc4L },
|
|
{ 0x34707fb3dc9f195dL,0x6a601f481fd5a013L,0xfe939b8d81ef6cb5L,
|
|
0x5c51e8ab1223a9a1L,0x8f6d7993db74cf37L,0x0b81c5b7972808e1L } },
|
|
/* 3 << 91 */
|
|
{ { 0xcb4e85123bf921afL,0x28fc6332532e81d3L,0x682d8637f69f907dL,
|
|
0xbd9fa8f45f759a16L,0x091ea9fa51f03716L,0xd685a14132c630e9L },
|
|
{ 0x7600c9ac3d249cf4L,0x687e2022002cd2b5L,0x7ec205ab55334058L,
|
|
0x9d0d86b13ecf1368L,0xb3fc17a7fc7baf6dL,0x57939961361c91cdL } },
|
|
/* 4 << 91 */
|
|
{ { 0x0db33228010c0754L,0x10635ffa8eca7c59L,0x6efd85380e8a38faL,
|
|
0xc1812ea5769360d8L,0x505723dc76f27ef5L,0xd0358e02f35af2e8L },
|
|
{ 0x9f7bb7fed99419eeL,0x87c66e83430a0e2dL,0x01187549773eaf7fL,
|
|
0x05bbbba489d51bdaL,0x52cabb06640ccde6L,0x0d5cb557e7ff387dL } },
|
|
/* 5 << 91 */
|
|
{ { 0x709d61ca10e06f1aL,0xaa1e9fc578eba75cL,0xf85d062f914b2cfcL,
|
|
0xe73b3baf9089d85cL,0x4ac05feac4a284b9L,0x92c78a433acb7268L },
|
|
{ 0x7b5586f8ee45bb4dL,0xc39a0d0e6ac0a9e7L,0xe4bbe3d54d6f9ab8L,
|
|
0x1489463f1fd46a08L,0x3ba3182529dba364L,0x94f000d68138511bL } },
|
|
/* 6 << 91 */
|
|
{ { 0x70187dfbc39c1cefL,0xa785216e0c50c71eL,0x30188b816a6c0d60L,
|
|
0xeaeda67d6a27e97bL,0x4a5192826ba389aaL,0xb96c7c7ea2bf1273L },
|
|
{ 0x8ff10657267fe714L,0xdff4a271996d91b7L,0xe34ba3e11dc7aed4L,
|
|
0xc457048b38853d61L,0xe89825db1ccbf658L,0x68c7b4556b255eddL } },
|
|
/* 7 << 91 */
|
|
{ { 0xdc14cb2a74871e18L,0x017b1340fcb8974aL,0xea5cb0546e93c20fL,
|
|
0xa7c078ada9e2ad1fL,0xa37207d4beb26838L,0xcd8b3b25de7ee8eeL },
|
|
{ 0xdca6606a2801a7ffL,0xad2fedcf0f8af3faL,0xf27d30b49b530c05L,
|
|
0x071fc1c36b2a4613L,0x363aaa99b72cea9fL,0x7a33ed8f3d350374L } },
|
|
/* 8 << 91 */
|
|
{ { 0xc377b373bb20fabfL,0x68d3aa52f986b847L,0xd9c2f2adf39b6894L,
|
|
0x1bbff106bd6da22eL,0x3f7e5b8e7e09678eL,0xad6a87897ed3ee78L },
|
|
{ 0x689e6b31af9807b9L,0xeca87778bd1f6ef2L,0x17d3277edda78c54L,
|
|
0xe686caccefb65cb7L,0x758aa1ab19a30f0cL,0xb40df97fb11f071eL } },
|
|
/* 9 << 91 */
|
|
{ { 0x43b379f71a54cd32L,0xd61fe6c948817fa8L,0x6d7b0acc49ab7a6cL,
|
|
0xee23b4a0eb6bb45fL,0x340da1f1a2bda931L,0xfdff68411750ea8dL },
|
|
{ 0x890346b8a96c7df8L,0x551993aed4fafc31L,0x2830b98890de711fL,
|
|
0x4d23863cfb5b5286L,0x327161a0d636d67cL,0xf99dded9733e1725L } },
|
|
/* 10 << 91 */
|
|
{ { 0x0bef2d2517da64c9L,0xb94dfc85470bbc15L,0x2c2417cedd4af7aeL,
|
|
0x52b5b3bbc8e88ca4L,0xc00328c44f20d154L,0x024290f730af5d4bL },
|
|
{ 0xe8bacbebeefc7350L,0x89eed6ebb72abd15L,0xb67d1da61d9e7030L,
|
|
0x2ddefcbc0e70a331L,0x7d09bc6d61e32577L,0xc2073cc95b52e979L } },
|
|
/* 11 << 91 */
|
|
{ { 0x585939298b806bfaL,0x608ddfbfbce6a08aL,0x674545a08eb27b54L,
|
|
0x4b57a947c8fba762L,0xcf960113cbd8c683L,0x7b5a479a4fef1937L },
|
|
{ 0xe26eb960450e97f1L,0xf04b36b9d8605a37L,0xb208c832ee5af2b3L,
|
|
0x3578d3a71fa337e3L,0x22547fca93509939L,0xd93dcb50e848508aL } },
|
|
/* 12 << 91 */
|
|
{ { 0xd40f36e6276f2576L,0xd37455c46405cfe4L,0xe34094d7cc51dbaeL,
|
|
0x20f93f0f0edf8bf9L,0x534b75aa23b5e165L,0x438e4dd1dc1b73a8L },
|
|
{ 0x9dd48c413bddb435L,0xc49867a0996b4932L,0x4212f8a2a9ffa0daL,
|
|
0x8d5236c4d94ed9bdL,0x81bec489f169cb19L,0x71cc1d7e6104edfcL } },
|
|
/* 13 << 91 */
|
|
{ { 0x31a94a7f22771941L,0xa277284b39867dc3L,0xc66bd88b1a52f0f1L,
|
|
0xd2e2707b1aa21ee8L,0x78e4f280248d61e2L,0x33df48c7596a31f9L },
|
|
{ 0xb9bf2baab1bb1e89L,0xe1bbcdb4038f10e2L,0x81f674a877b89305L,
|
|
0x8b2ec6ee16f08a86L,0xa07239c29db97ceaL,0x9f4ae6647ef8ecbcL } },
|
|
/* 14 << 91 */
|
|
{ { 0x9cb21b57012eaba3L,0xcfce54821347a83aL,0xe3f3a67100d7b34bL,
|
|
0xd4bcb3d1a6c1b0c3L,0x6ebd26fb9f3c3e31L,0xd01746532dc79be8L },
|
|
{ 0xe7cf9a0ad4156cfdL,0x2757cb0416face21L,0x8b0e320e69e1f08bL,
|
|
0x2a8caf9b946f83d7L,0x6daff0ba98a399adL,0xb4dfea0938ed6086L } },
|
|
/* 15 << 91 */
|
|
{ { 0x90ed8b41e2bcf8ceL,0xa464972be8dcc1a6L,0x5a3d0b80ba496081L,
|
|
0xb636435569f85ac8L,0x0a2765b1a25bdd8aL,0x87a6c18f0d1516bcL },
|
|
{ 0x9344081ae3b01522L,0xcef8e12e608f0145L,0x6f3566a52155e7deL,
|
|
0xcfc1be9c4d033a3eL,0xfc836eeaab97bf98L,0xbdf53718ba7dd059L } },
|
|
/* 16 << 91 */
|
|
{ { 0x16f3708b953b9223L,0x0d3780f8770e7cf3L,0x97a615b227bb71a8L,
|
|
0xa8b9a864162f8b55L,0x80ee8362d91e3fb9L,0xb2009a09f83a4ff6L },
|
|
{ 0x07a7873ac1696281L,0x17ff00c223095ddcL,0x427f683d860d60baL,
|
|
0xea9959271f87d32aL,0xb2ac69faa050319dL,0x30c362b9d2d0b9ceL } },
|
|
/* 17 << 91 */
|
|
{ { 0xe05c6a88783508b6L,0xa5569c8ee1779a78L,0xa1e0ca30cc1e84ceL,
|
|
0x12ecb540337cca76L,0xafb5e2fb344d729fL,0x558db4e132c8f80bL },
|
|
{ 0x5aa3c39523128383L,0x9f04757cee1ee2fbL,0x41132bd215356deaL,
|
|
0x4e9af313ae07ca78L,0xdfc14c0100c6b589L,0x54fdb4f3dc16a1f1L } },
|
|
/* 18 << 91 */
|
|
{ { 0x71e663c234938279L,0x9a8f5ccdb05630f4L,0xd91ead12aad70096L,
|
|
0x2b19b27e9e46cf72L,0x93348c7038e3932dL,0xeab6c03a5c7617b4L },
|
|
{ 0x57c13a97538eab27L,0x2624d17b2f5872f7L,0x77b63d9104b00f8eL,
|
|
0x2e0582473c89db0fL,0x5d367277937d0d8aL,0x28c19068df60c252L } },
|
|
/* 19 << 91 */
|
|
{ { 0x9867bc3d38cd6020L,0x5f341d8c5986f76cL,0x108a3c0d0dab2e32L,
|
|
0xd127a7f989ab3654L,0x9d5018f468505cecL,0x51204da0a8fc94a4L },
|
|
{ 0x1751f30cf6da9840L,0xafe6a8d955ed1f74L,0x270a5d1180165ac5L,
|
|
0x739f63e05de1e17bL,0xaa95f30735d2b566L,0xf20dd093650236a9L } },
|
|
/* 20 << 91 */
|
|
{ { 0xd648dd79ee45d4b1L,0x0ceeaa64c2bc2f0aL,0x695f3a3f491a2862L,
|
|
0x4c07e2e0ce497e3dL,0x5c53879969c766c2L,0x3f856a2e4c4a7c14L },
|
|
{ 0xbf8a6d81038032a9L,0xbeaadd7f45b7c960L,0x78b22e85d50b9d26L,
|
|
0xac1c56fa7eaefe26L,0x21fbce54fc69f13dL,0x37be1b47512a3708L } },
|
|
/* 21 << 91 */
|
|
{ { 0x12845d55689429afL,0x7e20f0f9082c8ac8L,0xe1615340249773b6L,
|
|
0xf66c39638d0f35afL,0x4a20ce6d67d27093L,0x1d462f08e55802caL },
|
|
{ 0x66f209849ff4dd67L,0x6b86f8d8271c57b3L,0x8701a5cde766b85bL,
|
|
0x50737ac2eea5fbfaL,0xb46ebb42a702f3d6L,0xf853091d999258bcL } },
|
|
/* 22 << 91 */
|
|
{ { 0x0ce992198c9e7869L,0x653006be525c4adaL,0x783620e4330c402dL,
|
|
0x185a6ac833b728b5L,0xa297c4a99d390886L,0x547d1db5db4b8123L },
|
|
{ 0xccf12f071acdb039L,0xe89c5866078ddc28L,0x3460cbb1e52c383fL,
|
|
0x7a4d1beaad25b82cL,0x21e243fdb429be1bL,0x5aa85c25bdc0d798L } },
|
|
/* 23 << 91 */
|
|
{ { 0x76cf73b9c0db9d16L,0x45e57cdc1970ace6L,0x3c6f5314c54a109aL,
|
|
0xe32306f7da47cbfbL,0xb3787bdf93e76516L,0x68aa80084c6d4e22L },
|
|
{ 0xd9246ddcb3d37be7L,0x6de2bb4d7000f1abL,0xda02568b67e4751dL,
|
|
0x3ed7a5615c7f88f4L,0x5f05c828ca5116caL,0x139cc5772a2ebb9aL } },
|
|
/* 24 << 91 */
|
|
{ { 0xc983afb64cb8d897L,0x7f05e954b14cc152L,0x587fe71e0f4d02f5L,
|
|
0xaaa43167531b0cd8L,0xf69452727a26def9L,0x7ecf1e563bab50e2L },
|
|
{ 0x04b6f5c94c6f20abL,0xbc6cec2b893b497bL,0x79e89567c9dc548aL,
|
|
0xa39a0a567a40b749L,0xf1531e2644bd4efaL,0x14cdd759057c7c70L } },
|
|
/* 25 << 91 */
|
|
{ { 0x30c49847d6d51bbbL,0x70b744feecdc6aeaL,0x38cdf36fe8671744L,
|
|
0x5834286b8cf6461fL,0xf3414f7b2c09d632L,0x58425e4d5debb923L },
|
|
{ 0x8bd79117a6b96c6bL,0xecf9802680f56fa8L,0x5ae917d7e6dcbbf8L,
|
|
0xf2d80fb169240a4bL,0x005ac47596e3aa3aL,0xe5196a3463536aa9L } },
|
|
/* 26 << 91 */
|
|
{ { 0x5fb02929811d42bdL,0xd7d1b956289929b4L,0xfd3546947e531627L,
|
|
0xa37c9b1e58c2b2e2L,0xf30ed0f902bf499bL,0x3fe80d240eb6df36L },
|
|
{ 0xf96270e57b148672L,0x47362483647f48d8L,0xc279ece6c29bc59cL,
|
|
0xc05c1d9ffdd7e628L,0xef8fc92e17568a7eL,0xd65fe5a9ec0e7f00L } },
|
|
/* 27 << 91 */
|
|
{ { 0x0ad31de68c93f010L,0x151b1405945ec54cL,0x325d132c3db6997cL,
|
|
0xbed9cb3a335531e7L,0xa83932c34a578610L,0xd905abbf6f721147L },
|
|
{ 0x6dd45af086d1d919L,0x2b2ee3090195e91bL,0x3dc30d5edb70d257L,
|
|
0xfb04b014481bde1aL,0xc2ac3ec82de2debeL,0xc9f161e090db691eL } },
|
|
/* 28 << 91 */
|
|
{ { 0x8041f112afefdee1L,0x8cab3c86b891f668L,0x1f18774e2b61e754L,
|
|
0xf0d81b2459df567cL,0x2cc25da41c95e1ecL,0x315b1b1ac735d39eL },
|
|
{ 0xd0a9b9fb010734cfL,0xeefc0398c79386daL,0x49ce859b11fb1917L,
|
|
0x3d66fd6baf167239L,0x2522b0ef1fea6175L,0x1a27657d3ec4a52dL } },
|
|
/* 29 << 91 */
|
|
{ { 0x89ec003abb2ca05dL,0x2290b5f403195ec6L,0x9989bd925f6b95b5L,
|
|
0x1d6e6b2fad409cd9L,0x41f9b9ce3bfe7364L,0xb240f89570ec096cL },
|
|
{ 0xf8725a58b8d5a5d6L,0x3bfec6f1c581930dL,0xc93e290356235c98L,
|
|
0x82af4269c7cdcb5cL,0xeb13fa40eea6fe91L,0x9247050097c80acdL } },
|
|
/* 30 << 91 */
|
|
{ { 0x48dc23534ded5b58L,0x1b69590756e707caL,0xbbcb73927ec7794fL,
|
|
0x3714dfa6e50dbcc8L,0x4f8083c8f27ec5d7L,0x6358d2273bc8c3e4L },
|
|
{ 0xe0c2a0e7656cf184L,0x3996e0a24244d801L,0xa46767b54e543c01L,
|
|
0xbf55776d965f1e2fL,0xeb66845e6bc872eeL,0x6a73fef1b441895cL } },
|
|
/* 31 << 91 */
|
|
{ { 0x21602e432b26bbf2L,0x6092d570d1bfd7e2L,0x2b48d74a30b38d1fL,
|
|
0x4aab113c67c53791L,0xa6acbd3df57be611L,0x53b6509ebd3aae7eL },
|
|
{ 0x047e5ab4d8751f49L,0x978ed11b0cf25652L,0x763553d2153619c7L,
|
|
0xc7e85e93d824d943L,0xb82cc9781048a7ebL,0x7beb9166e39cc777L } },
|
|
/* 32 << 91 */
|
|
{ { 0x24480c57f26feef9L,0xc31a26943a0e1240L,0x735002c3273e2bc7L,
|
|
0x8c42e9c53ef1ed4cL,0x028babf67f4948e8L,0x6a502f438a978632L },
|
|
{ 0xf5f13a46b74536feL,0x1d218babd8a9f0ebL,0x30f36bcc37232768L,
|
|
0xc5317b31576e8c18L,0xef1d57a69bbcb766L,0x917c4930b3e3d4dcL } },
|
|
/* 33 << 91 */
|
|
{ { 0xf6625ac0b9a038e8L,0x954056eb2a921e56L,0x7135295aeac07bc6L,
|
|
0xedde9c39f1ba0ea8L,0x628324026b592655L,0x4603177aefb8aa66L },
|
|
{ 0x63e5ea16406a6c28L,0x5897fdee1c758382L,0x515e49fd415533c9L,
|
|
0x0a0dd627d6701b21L,0xd7c06db1c93a312eL,0x4fe95e3da33d8df7L } },
|
|
/* 34 << 91 */
|
|
{ { 0xf113d92c3336edc5L,0x0a201f3e8ce47278L,0x57492feb5c52562fL,
|
|
0x18b73800f29da837L,0x2262089f649a1ee8L,0x076b07657c99bf48L },
|
|
{ 0xa95050bc09bfad20L,0x5aeaa9088c7e713cL,0x264283ed3cda06ccL,
|
|
0x5d574b116079b43dL,0x0071495cced10a84L,0x97441fb0570d3063L } },
|
|
/* 35 << 91 */
|
|
{ { 0x340831072b228335L,0x84ea0aba50fbd43dL,0xafde6098b3ec91e4L,
|
|
0x4fd293ca1091ad93L,0xee085e23552a785bL,0x437d799ed7057200L },
|
|
{ 0x41f735628a611ff4L,0x707a7cb5d2ef6254L,0xa9a8f00092a30686L,
|
|
0x901cc8e60cea8d1dL,0x1fbc9ca6d6da2ddcL,0x61bcee2176489604L } },
|
|
/* 36 << 91 */
|
|
{ { 0x5f6ef134781a7f53L,0xbac4cf47b10a9d16L,0x48148ba110e69f4eL,
|
|
0x40594360a9c615f0L,0x3141817ddfb3fc58L,0xb9579a9263c38d83L },
|
|
{ 0x0544b1bb6373b9aeL,0x718a5fb7007c8185L,0x48d4a4f77cfa392aL,
|
|
0x9c16cb825d44ba38L,0xc83d2df42a8fa83fL,0x835aacccc08fef0cL } },
|
|
/* 37 << 91 */
|
|
{ { 0x09ce1818af09fefdL,0xd1d2f95f5dd9d687L,0x94ed08b5495c4eaaL,
|
|
0xd1afff464a0b95d2L,0xd51ba2b455347a75L,0x413126295e3866edL },
|
|
{ 0xeef2d7e3cdd37660L,0x50e6fbdfec2fe50dL,0x9d071e18a664e2eeL,
|
|
0xe70e1d9ed6a8f467L,0x576d0cc4e13afc19L,0x67ced86da0efc220L } },
|
|
/* 38 << 91 */
|
|
{ { 0xa26968cb26a963daL,0x461d1ab5cecbd96bL,0x8eaa1834b3e38516L,
|
|
0x1e92730f05d2cd2bL,0x91112026b07cbf92L,0x26eb815062374314L },
|
|
{ 0xa904f1d08ab1b9d1L,0x52006594692b1905L,0xc9cc90ca6ba4717dL,
|
|
0x4bd7300aaad1c74fL,0x67ba07a4c21c5832L,0xdebfd810fa56a1a8L } },
|
|
/* 39 << 91 */
|
|
{ { 0x3bc5aaf484539b6bL,0x6ca9ac0c0d1249aeL,0xb59da22db4ee30c8L,
|
|
0x6e62553e57149c9cL,0x46db0089786333cdL,0xe1e2ae523e4c12ceL },
|
|
{ 0xf828d2b537b3fd82L,0x31844a9d03af654cL,0x85dd8daaea5a4677L,
|
|
0x0db99b8f3432e82fL,0x99383b874866e1b6L,0x52310054e325b0c2L } },
|
|
/* 40 << 91 */
|
|
{ { 0x737cd387044854f9L,0x488b2fd667eb29c2L,0xe71d9bb7258c5a80L,
|
|
0x21afb486ac71048eL,0x0252b540d4d39296L,0xe3e52cb87839d8fdL },
|
|
{ 0x5cb1100667ea0afbL,0x207637d1de82b12bL,0x77920933e93bcfcdL,
|
|
0x65197f5df32f636dL,0x82179527b6c41411L,0x7696a479f410c989L } },
|
|
/* 41 << 91 */
|
|
{ { 0x78307cd80e8d576cL,0x10d3b950fd9d6044L,0x2c2f9e2bf4b20445L,
|
|
0x961343c72c5c7ea7L,0x931c52a0af640e61L,0x45557391470d420bL },
|
|
{ 0x4096a997317f4d26L,0x15210801cceb9be5L,0x228102195ff0759dL,
|
|
0xc388a2d21d265932L,0xceb79d01e86dd99bL,0x23e8fc7b3311dcb3L } },
|
|
/* 42 << 91 */
|
|
{ { 0x1a7d0e091d7743eeL,0x18720797d53e4a8dL,0x78465f1ea04dbaa1L,
|
|
0xd4f064da9ce65723L,0xc0e7c035b496e8d4L,0x25657d2e6bb2f9ebL },
|
|
{ 0x45576ab49f4b6cb5L,0x83983c70ba33d6dfL,0xf699e84d1eca62a4L,
|
|
0x35528636a13f5c31L,0x6a1b56b01f6b1739L,0x7906eccc6ea87942L } },
|
|
/* 43 << 91 */
|
|
{ { 0x4e584a4fec1204a5L,0xd96b00e845a5b311L,0xea11fb03030badccL,
|
|
0x9b2141b2a825a89aL,0x18bbc30bf8b2450dL,0x87bd93916513b2cdL },
|
|
{ 0xb3dbde552f0b304dL,0x762f3dd7c3c4817bL,0xe51e1733edd3fdd8L,
|
|
0xddad4c515d8219a2L,0xf5a8c0b8796b6877L,0x34563a8989bf65c8L } },
|
|
/* 44 << 91 */
|
|
{ { 0x93e2e3a2881c106eL,0xa227cc49fe82afd8L,0x6fee74a4748e81f3L,
|
|
0xb212e8eaa5dd966cL,0x68d270efdc7d8883L,0xef2f3966fe757e9eL },
|
|
{ 0x0340098b7466881eL,0x7ab98a0575884bbfL,0x24783467a472f62fL,
|
|
0xc73cb49f988637d9L,0x2b5e9d27dfb710c9L,0x503f9a2f788fcb18L } },
|
|
/* 45 << 91 */
|
|
{ { 0xcba6f4631a52b729L,0x8874582cc8be34cfL,0x98a08e246a9a1eaaL,
|
|
0x77094319d5693f71L,0x575a0938a8504e5cL,0x3f59910c226f888eL },
|
|
{ 0x5c3587990aeeb1f1L,0x7c32821d3613bbc5L,0x66f288e7cc17db95L,
|
|
0x6f3221998724ac94L,0x4e3fa38981db3751L,0xa6e798c8420403baL } },
|
|
/* 46 << 91 */
|
|
{ { 0x56672f2e2cbea2e8L,0xd1a02df9128bd636L,0xff6a3bc6d47a0025L,
|
|
0x24124f30d38d0b42L,0x89ac3b8dda63df29L,0xf26d72994d0b6458L },
|
|
{ 0xfff0445f7d6880bcL,0xface90f52be76351L,0xbf10c6b8ebffb74fL,
|
|
0x0e53c533a1fba003L,0x037baf09112f4980L,0xb8ae6312be960954L } },
|
|
/* 47 << 91 */
|
|
{ { 0x8397b60917270d4aL,0xb4d0c38700e4caeaL,0x69c52bb3f4c58f86L,
|
|
0x06e0e01157b1fd41L,0xc5dc2f25627873a2L,0x9af848ca0ae53974L },
|
|
{ 0xb5c957c06ad18335L,0x93b564154ef09e7bL,0xb5ba282450e2c5ccL,
|
|
0x63f003a567d7b68bL,0x0bcb0dc820bcbca3L,0x8803b1ffe3d4296aL } },
|
|
/* 48 << 91 */
|
|
{ { 0xff41d51faae4bfd4L,0xcf50b14117c44facL,0x078b808e657a1ea4L,
|
|
0xc5aac1a893c00c55L,0xcb99cfd0cc4d1c0fL,0x1d1048933fa123a6L },
|
|
{ 0x49646059023ca92fL,0x5833e326f3982134L,0x2e0d4bc9c5781cddL,
|
|
0x5f7f84ed8d5e75f5L,0xb6655f1fe1e8a383L,0xcc18514c296e4943L } },
|
|
/* 49 << 91 */
|
|
{ { 0x5d3e5f8d8a407ff0L,0x9c713c8c7b42b11cL,0x7433a9921e387806L,
|
|
0x5272b92a98cb43acL,0x6261dfc1b1018149L,0x229d2ba5d3b4adf4L },
|
|
{ 0x1f52e72989f0905fL,0x965e062925d4c79cL,0x42edaeeb33e6c016L,
|
|
0x5ec492e8af1709adL,0xaad39616c5763619L,0x85a659098c666860L } },
|
|
/* 50 << 91 */
|
|
{ { 0xec8fe7dc86009df6L,0x42dd3c37871b20a6L,0xe4388c920db643e4L,
|
|
0xcc5dfdd481e06dbdL,0x3f1a3c6458ca7500L,0x987d7caa22c04e9dL },
|
|
{ 0xd0c91072bc5717e2L,0x3f605fd2e77e5509L,0xa1cc1404c0c3e95eL,
|
|
0x4afaa9fdc6d0edd0L,0x2f3aba4e0d7d882dL,0x3f1f0349796c5ac0L } },
|
|
/* 51 << 91 */
|
|
{ { 0x5dac93982eeb82e8L,0x2fe5ffb57536ce1eL,0x2bb120ac6926cfceL,
|
|
0xe54ff20f2236dbf0L,0xaaf0d31edf8c5a87L,0x5262fb9fc8f5df7aL },
|
|
{ 0x0f833760467092bcL,0x50fa223d0a8dc0afL,0xd6a4847d35406966L,
|
|
0xd17d6ce003b7f56bL,0x8067d8e2ee2d64bdL,0xe33e51bb9fa4fe9bL } },
|
|
/* 52 << 91 */
|
|
{ { 0x52aa210770248e4eL,0x30cf7e773b6bf709L,0x36961c7b788e1836L,
|
|
0xbe49de5f7595af2bL,0x86b49b619cbcba78L,0x1947db3790cf1117L },
|
|
{ 0x7d3f599de14b4287L,0x14546993f0ca62ebL,0x0f6c8872d0abde7aL,
|
|
0x1531ceeaafe2260fL,0x36449624ae5ecf96L,0x6cfa12a5840bdc19L } },
|
|
/* 53 << 91 */
|
|
{ { 0xb092ad68c1d612b5L,0x9f6052507af5c37dL,0xf48aa7c6c702b673L,
|
|
0x380144215cd29c3bL,0x7b09e407121867ecL,0xf71443d391e59047L },
|
|
{ 0xea51e1a6b6d16a51L,0x041fa7650f33e2ccL,0x3a6d50c73750dce3L,
|
|
0xeebf5c2e97cb7a7dL,0x2530de228f39e771L,0x9af217c18f37f863L } },
|
|
/* 54 << 91 */
|
|
{ { 0x38793fd0c683085cL,0x49cc5934dc436d16L,0x94c708e4175e770eL,
|
|
0x41bfb65d059c2682L,0xf6b83eb75f004ddeL,0xe1881929f6864410L },
|
|
{ 0xfaa77fe0b438f937L,0x97a856069997e90dL,0x78366a9108de889aL,
|
|
0x6c28ef64553229cdL,0xfce82c2fe9381854L,0xae98117146f70bb1L } },
|
|
/* 55 << 91 */
|
|
{ { 0x3f77410e9aacedd8L,0x0e34bd7d453813e4L,0xc5818436825d6b0dL,
|
|
0x0e30f037b4d0ac73L,0x70f6bc9b69b559c5L,0x68d3d71eaed15484L },
|
|
{ 0xd0254e5414fbae1eL,0x6ddaad42ae0d3df6L,0xefb91a545a6e98d0L,
|
|
0xde3fcefc854ee5fdL,0xb2f0f3a1dfa2a8a0L,0xb656f97ad00ded3aL } },
|
|
/* 56 << 91 */
|
|
{ { 0x01acfa7e0a90e37fL,0xf47e5946366d0ba0L,0x8e37db7b54c11845L,
|
|
0x5742d8bd50a62064L,0x27dc9a33ed6d096cL,0x2246d73016deb724L },
|
|
{ 0x203c08da2c8f1a85L,0x210cda3a56fea379L,0xea6b1bbf2bf9ed67L,
|
|
0xe5a1e5552395cc4bL,0x458a7e19de2d6b2fL,0xa7199a86734942a3L } },
|
|
/* 57 << 91 */
|
|
{ { 0x53684c23d44cad85L,0xd23613f8940779a5L,0xf485c7a3940bd34cL,
|
|
0x64c66a1f3f673b5eL,0xec29c76f1d6dd63cL,0xe10f56272f191435L },
|
|
{ 0xc054f9a7325d5759L,0xe6740d3f974edaf5L,0x2723ac6103f3b640L,
|
|
0x0a2315a4576e0bbeL,0xf8156e1e4a3ec903L,0xa307bc249bbc8c52L } },
|
|
/* 58 << 91 */
|
|
{ { 0x78579ca212a1687aL,0x208b7494268a02a2L,0x61708a002c1c5243L,
|
|
0xca366915a760461eL,0x0e9038fe3ca1e167L,0x2cfd6fe3a58e2c57L },
|
|
{ 0x97c16e34fe79a49cL,0x1575244ef08e4037L,0xc1407fa08e2283edL,
|
|
0x38ae77621b057919L,0xcec574a5e68a366dL,0xafdfdce03eff00d4L } },
|
|
/* 59 << 91 */
|
|
{ { 0xdad0dca9162d80c6L,0x554141f8b888ea0fL,0x1e471b24d4036218L,
|
|
0xafca22cfb36102d0L,0x437c51bff280dfa8L,0xc2c8bc8b50c9c30cL },
|
|
{ 0xe7bacc372a9fdf6dL,0xd01dc65cf0472f2dL,0xaca59cf983d7be3eL,
|
|
0xf7c935425d9ec484L,0xc22046c6015a08a1L,0xa71b3c64cecdf816L } },
|
|
/* 60 << 91 */
|
|
{ { 0x4b7d0b277abe7856L,0xe566f4567acdb39cL,0x70c6cdf20047ae7dL,
|
|
0xd27f831233ed0392L,0x498f0ad0358a429dL,0xed97c4668e6ee95dL },
|
|
{ 0x3d11cd69f3018515L,0xedd460344c1b367bL,0xd75660e3b3ac8ec6L,
|
|
0xc80dfc0fa541e6e1L,0x80026f005c091a6eL,0x62b86784c426f2bbL } },
|
|
/* 61 << 91 */
|
|
{ { 0x417408e529ee8eb4L,0xe92f18c2917f9951L,0x1f471f0eb38b6210L,
|
|
0x53cb14264df240f3L,0xeaf7fc0067c29b25L,0xbbf46fd3d99cb613L },
|
|
{ 0x05cd552eb465b50dL,0x136b8e675e136733L,0xd7d50f61ccf61776L,
|
|
0x90187ec5a32b01f4L,0x21548ec523ba232aL,0x6c8266c0748e558aL } },
|
|
/* 62 << 91 */
|
|
{ { 0x762f413d7650470dL,0x9b4af5d018c9ad5dL,0x85fe90460ea625a0L,
|
|
0x4af4511b2200cadbL,0x4c16980defec2921L,0x42ae5d5d60dbe1a0L },
|
|
{ 0x0785260bbb2ceb1bL,0xd181ea3242f1fb7bL,0xc34f02b13a47672bL,
|
|
0xb0bc79f770e58634L,0x6e7967098a8509aaL,0x05870e6f3c3e6d44L } },
|
|
/* 63 << 91 */
|
|
{ { 0x46d4fef752f7c595L,0x5f35083a8a07819cL,0xbba477ca591233ddL,
|
|
0x4e66309358e307deL,0x65c3e2b9ef827537L,0xcf7b7adb09ee9adaL },
|
|
{ 0x00a82d4b5f5e1434L,0xd6aecb8032e50afcL,0xffdce7ce6b034271L,
|
|
0xa95d96ae036d5058L,0x61582ae24cb7d60bL,0x6a10577474139c1bL } },
|
|
/* 64 << 91 */
|
|
{ { 0x53ebbaaeb475d8f3L,0x3d6ea31cff76bedaL,0x3c15f25d340986b4L,
|
|
0xc5925d2e3365312aL,0xc35d3ee251641f96L,0x11eb2f75984128e4L },
|
|
{ 0xb41a21a83d04bc99L,0xf2d286006436c3d0L,0x4ffcf4c0faf5663cL,
|
|
0x889d285a0a62c9dcL,0x0908665acb2d60c5L,0xe2f19c590a131be5L } },
|
|
/* 0 << 98 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 98 */
|
|
{ { 0xc0de60f5091354ffL,0xd7cc38bba1bd1975L,0xf4122aa8e734e2dfL,
|
|
0x08f40f63ef773db6L,0x0a7e9484ce2d71c5L,0xcc79173378a3f825L },
|
|
{ 0x0cac7a5bb47beec9L,0x1cbea0e4a3f7b5b6L,0xecf19a90d3e18145L,
|
|
0x0d1b062a0aadf689L,0x42299f1ff3f0acf7L,0x63a645395ac252b9L } },
|
|
/* 2 << 98 */
|
|
{ { 0x44bfd1665c1d4586L,0x46434e198d1d86d6L,0xe50fcf81c3936683L,
|
|
0xc9b4eb068b08680fL,0xf90882c52832aab0L,0x42823cefecbf5ddaL },
|
|
{ 0xfd4d51c744ae08f0L,0xb54a08f1bbd21c1cL,0xb72953dbfb187c34L,
|
|
0x166f7f26f8ed037fL,0xd2b1077a097bad45L,0x47794cdc790dd808L } },
|
|
/* 3 << 98 */
|
|
{ { 0xfadb2ac4bac8b691L,0xf0c5a0361579c4d1L,0xa192474f79019224L,
|
|
0x8c7a64574117a323L,0xe58122dd84d970a9L,0xc475893c0bf77208L },
|
|
{ 0x9518412f1bd45c95L,0x75bd0a72283f7a3bL,0xa9e871605fb7e6f1L,
|
|
0x14d3c944df67acedL,0xbceea947d0348c22L,0x5331c192d021aba4L } },
|
|
/* 4 << 98 */
|
|
{ { 0xa05c751cd1d1b007L,0x016c213b0213e478L,0x9c56e26cf4c98feeL,
|
|
0x6084f8b9e7b3a7c7L,0xa0b042f6decc1646L,0x4a6f3c1afbf3a0bcL },
|
|
{ 0x94524c2c51c9f909L,0xf3b3ad403a6d3748L,0x18792d6e7ce1f9f5L,
|
|
0x8ebc2fd7fc0c34faL,0x032a9f41780a1693L,0x34f9801e56a60019L } },
|
|
/* 5 << 98 */
|
|
{ { 0x35df68ae1a504405L,0xe41d69508fc755b9L,0x420dc1cda6297243L,
|
|
0x3011646b913fb68fL,0xc4b630465e141a27L,0x943b3b3bbd91fe5fL },
|
|
{ 0x3ca17d6b50c31708L,0xce88b5e74ffa8c71L,0x8b60038f4dacd2bcL,
|
|
0xdf654d723c13cf9bL,0xb5353e281d871b40L,0xc2d27919226663d3L } },
|
|
/* 6 << 98 */
|
|
{ { 0xa028d2fa9b87715fL,0x7cdd9b4a453625bdL,0xc8afb1890be3dacfL,
|
|
0x40289a3a274c4e2eL,0x7f5f9f7677c6bbadL,0x577c0935bdfeaccaL },
|
|
{ 0x5f838f0404281989L,0x8650a974ebfa410dL,0x414fab6dcd56dea6L,
|
|
0x6995cae292eed440L,0x3b474d27ab146e15L,0xe24262b2e9938f84L } },
|
|
/* 7 << 98 */
|
|
{ { 0x649e18fba34fb18bL,0xa4883af898cc69d3L,0xff46285f3fd56e37L,
|
|
0x2e28ccc4557c0c04L,0x8388dee821a9b46bL,0x0fd4fb807ba3a6deL },
|
|
{ 0x1d8e9da7c62bb315L,0xfa7bd70d06e44230L,0x2840122063320438L,
|
|
0xeefabd47d06c0654L,0xf4387b08d4c8c10fL,0x8f2694624ff2142cL } },
|
|
/* 8 << 98 */
|
|
{ { 0xa4b957d262c36887L,0xaf15a485fc24cff8L,0x11575e80a271d9e0L,
|
|
0x0fff68d44b9367e5L,0xf55ba6732279779fL,0x9d72cca6d4d68f68L },
|
|
{ 0x01474ab1590ffe4cL,0xd20f44e1074d634bL,0x63903a8336111d25L,
|
|
0x37342a5fab531cefL,0xd3c93fe7702ed867L,0x05d143696279f7e1L } },
|
|
/* 9 << 98 */
|
|
{ { 0xcddf64873e942b27L,0x9e29835a2bc21472L,0x924c2bfb2d2195e3L,
|
|
0xdf4a3cd38eca6d9bL,0x7fe6acd1c5be60c3L,0xa3abee9cfc38025fL },
|
|
{ 0x014f0d992f449934L,0x8d72657a78860127L,0x92514cb948d84cfcL,
|
|
0x8bd4ac503aadd70cL,0x3c96ee00136620d7L,0xa0caeeb54efc5e57L } },
|
|
/* 10 << 98 */
|
|
{ { 0x7a65cdf5bd200ed6L,0x72dc1b5f0e4b1c68L,0x9c09576a6ddf540bL,
|
|
0x358dcd122b169da2L,0x6466f0e81639b734L,0xa1429a6ef14c6eb6L },
|
|
{ 0x4b3d781943221168L,0xfe3d2fdaf3b74fceL,0xb22bcec2ae26014bL,
|
|
0xa8900e7ace7e789cL,0x9db9af67220bce88L,0x1f86d2e4fb8ee34dL } },
|
|
/* 11 << 98 */
|
|
{ { 0x6f8e1c0bf8c65293L,0x66f44ea04d7a5dfbL,0x2c3cacac741fdc1fL,
|
|
0x72e58aae239f5f16L,0x50dbaf192f72d8c8L,0x24ee526628c97b95L },
|
|
{ 0xdb5f7827ab3ecb17L,0x2c567337669b05c5L,0x78c97eb8ff76ccdcL,
|
|
0x1de1b4a3f8d2c990L,0x5b183974e6138df5L,0x61b74177aa1a1019L } },
|
|
/* 12 << 98 */
|
|
{ { 0xb398290cf0db3751L,0x01170580ba42c976L,0x3e71aa2956560b89L,
|
|
0x80817aac50e6647bL,0x35c833ada0be42daL,0xfa3c6148f1baba4eL },
|
|
{ 0xc57be645cd8f6253L,0x77cee46bc657ad0dL,0x830077310defd908L,
|
|
0x92fe9bce899cba56L,0x48450ec4bceffb5aL,0xe615148df2f5f4bfL } },
|
|
/* 13 << 98 */
|
|
{ { 0xcc14267f6be1860dL,0x3de7f48b4ffedea1L,0x8252694e5b776b87L,
|
|
0x478c877890dd427fL,0x913e19a675a21357L,0x882f2d5ac078bd79L },
|
|
{ 0xf442752184c565dcL,0xd772147e3ac3ed26L,0xf21abc752fa216b6L,
|
|
0xab1804ad305ff0dfL,0x10d89a07920c977bL,0x0a2240dc4fda6075L } },
|
|
/* 14 << 98 */
|
|
{ { 0x7068e6b98653bfadL,0x16b0da9b8f4397e8L,0x77b953b4946bb9c6L,
|
|
0x08366ad749b036f5L,0xd219117b26a3913dL,0xbe3607949a5460d2L },
|
|
{ 0x1a4acf6dfadd462eL,0x1f7de879c32f3550L,0x11117132669c9b2eL,
|
|
0x1deea7d1c87ca216L,0xa88c90c748a058d2L,0x0d8e6afff403ef36L } },
|
|
/* 15 << 98 */
|
|
{ { 0x21f6c96c1ad77f33L,0xb5da9d34992e7807L,0x17fc994ba7192adfL,
|
|
0x59f204fcbcc3f8b2L,0x3f4a970f10bd22f5L,0x42936bfcbaa1188dL },
|
|
{ 0x6239fea5eb985837L,0x5fde15e0b33d1158L,0xe0bbe9b800cf90b2L,
|
|
0xf2c6d8b16b2b68a8L,0x58c331cd0f3a2341L,0xe951c48910dab1a4L } },
|
|
/* 16 << 98 */
|
|
{ { 0xdccf68bccbaf4685L,0xb333e464270a2bccL,0xe43ae199254dd3e3L,
|
|
0xe8526e26ddce5c84L,0x52bad815ea0b4258L,0x67c12c1b094574c4L },
|
|
{ 0xa5362fcb861545b7L,0x3e904c35c2b2eb62L,0x0f9312b5eeffc2cdL,
|
|
0x5475657b14de4e5bL,0x746e67d4f0233fa5L,0xb5157d7f35471ec2L } },
|
|
/* 17 << 98 */
|
|
{ { 0xcbaf92265315e83aL,0xcc6e9a972f15ff37L,0xcac446dde8c87fb1L,
|
|
0x5fa37a5c672d7f92L,0xe66efc07b1380425L,0x2d8ed2e32c8e59ebL },
|
|
{ 0x8e3ab80461743725L,0xe59a87f825493349L,0xf6995fe16062fe7eL,
|
|
0x5d7f8a646e8de27cL,0x4a5ecbbbebe084f2L,0x99fc5ea93f863156L } },
|
|
/* 18 << 98 */
|
|
{ { 0x1ddede1b495fdc2eL,0x3dfcf56b039d6339L,0x54c423806a56c492L,
|
|
0xe6bfd184def6446fL,0xfaa2fa123ac841beL,0x503e319a4f9330a4L },
|
|
{ 0xd9305d4654ad427eL,0x68d23497d95dfcc8L,0x2d935aad1e9602f5L,
|
|
0xd7e74bf2e33174a9L,0xc8e4a0b17225e2b5L,0x5db7187cbcda5221L } },
|
|
/* 19 << 98 */
|
|
{ { 0x9a0e0908b0ec0b27L,0x28894b2edd759131L,0x0107bb592b9d6f02L,
|
|
0x318921deeea022f7L,0xa1a00f5882c73390L,0x877833129551b381L },
|
|
{ 0xff866039a3a9dd22L,0xa59235ffdf0fc09eL,0x530c2fe61ca647f4L,
|
|
0x77b1ea2860f9428bL,0xeef2a9e6bba4bbabL,0xdbdbe037204f5ea3L } },
|
|
/* 20 << 98 */
|
|
{ { 0xf55edabb90b86166L,0x27f7d784075430a2L,0xf53e822b9bf17161L,
|
|
0x4a5b3b93afe808dcL,0x590bbbded7272f55L,0x233d63faeaea79a1L },
|
|
{ 0xd7042beafe1eba07L,0xd2b9aea010750d7eL,0xd8d1e69031078aa5L,
|
|
0x9e837f187e37bc8bL,0x9558ff4f85008975L,0x93edb837421fe867L } },
|
|
/* 21 << 98 */
|
|
{ { 0xf87a92375b2e5fa6L,0x88571e4452a3a605L,0xf85e9a330c8f5f55L,
|
|
0xf99886c599dc2c97L,0x5866329d065261daL,0x9011f13912dd434cL },
|
|
{ 0x0cc67d535284c555L,0xf8f715274a4032caL,0x4b002683a9524bcaL,
|
|
0x3c3c12910f63a7baL,0xd19e173e9124eb8cL,0x3431c51c54b7d85aL } },
|
|
/* 22 << 98 */
|
|
{ { 0x7103ab4ae11cc85bL,0x2064ca41789cf87eL,0x592850ead5f13a08L,
|
|
0x56b9ff066212e096L,0xa106455d6efa7445L,0x3e62aac92343c5efL },
|
|
{ 0x7edbf70dcb8ddf7dL,0x27f00a4a5f2687e4L,0x7d4ce32e44a08d11L,
|
|
0xe97f0910890a57f1L,0x792597fb912cb027L,0x1fa7a1d2ad3492dfL } },
|
|
/* 23 << 98 */
|
|
{ { 0xbf4e161c3cfad317L,0xda4e6bffa1998bc8L,0x6534ef622e890b99L,
|
|
0xd10a3b24d272cc42L,0x3f81b0e5f1194dabL,0x8919caefec549c5cL },
|
|
{ 0x847ef47f68f5633dL,0x01cd59975468f4afL,0xc38bce29b6727408L,
|
|
0x56a1cd1ea4c84268L,0x31a493f406b81088L,0x4461ce8531b37e73L } },
|
|
/* 24 << 98 */
|
|
{ { 0x3503d9371f23a0d8L,0x64c598a8c321dde0L,0x67f101ef5b52e0f0L,
|
|
0xb6b5b4c2f955b5faL,0xb5f03d53880e0569L,0x121c3ac1c99393efL },
|
|
{ 0x90755bd657330666L,0x70ae5793d4d71d3dL,0x326ffd519e9ce792L,
|
|
0x1b772d7396ccfa14L,0x652710f4874a22deL,0x72768469db210342L } },
|
|
/* 25 << 98 */
|
|
{ { 0xb2d85722b3413d7fL,0x4e41362092e55ea5L,0xad1a20c7ff7b3409L,
|
|
0x743b31c0c6f98cbeL,0x1b5b0b5adab3810aL,0x628d9b212cea0428L },
|
|
{ 0xa3e24294b0335ba0L,0xa9c0e139487530a7L,0x54199640072e70eeL,
|
|
0x0977586e64c0d563L,0x393878451c5cce35L,0x57acd85631ce1eeeL } },
|
|
/* 26 << 98 */
|
|
{ { 0x63081bcf9b8d9f3aL,0xb09fe52b6f94e3e9L,0xc232e5d1e39c092bL,
|
|
0xd61ddcccf5f072e4L,0xcdb3b4189a26a93cL,0x0c010c048de6f5c9L },
|
|
{ 0xad2473a5d238e823L,0x4120ab3632029ca0L,0xd6632edb639bb8ddL,
|
|
0x3383f077a8b32fe4L,0x8afcbce5eacfbe80L,0xe28236212d2fff74L } },
|
|
/* 27 << 98 */
|
|
{ { 0xccf2a24a0eb3829bL,0xdd8fe4421eae0751L,0xb685b073c9598d91L,
|
|
0x025214ce8b308785L,0x11c3fb11d6433acdL,0xe40cf39c81794024L },
|
|
{ 0xa167651b1c0b1f54L,0x350cf3eb0bbde983L,0x69c93dd0b2a88c48L,
|
|
0xf13afc37bee80b26L,0x0be7d05d776345e2L,0x1ccbc8ba7645b02bL } },
|
|
/* 28 << 98 */
|
|
{ { 0xaa6489df83d55b5aL,0xea092e4986bf27f7L,0x4d8943a95fa2efecL,
|
|
0xc9baae53720e1a8cL,0xc055444b95a4f8a3L,0x93bd01e8a7c1206bL },
|
|
{ 0xd97765b6714a27dfL,0xd622d954193f1b16L,0x115cc35af1503b15L,
|
|
0x1dd5359fa9fa21f8L,0x197c32996dfed1f1L,0xdee8b7c9f77f2679L } },
|
|
/* 29 << 98 */
|
|
{ { 0x2aa349975442c668L,0x4c5137130cd74444L,0x4f87be0f449300ecL,
|
|
0x13e07b552bae04fdL,0x6aa575d11f75acf6L,0x4502e9e9852848a9L },
|
|
{ 0x3c246d38889666fcL,0xb6c0292b7c100867L,0x618f234aa2a280e0L,
|
|
0xf983c834669afe62L,0xc51a15105d900a1fL,0x7d7ce31bc952f419L } },
|
|
/* 30 << 98 */
|
|
{ { 0xe3dbb7483c3388dfL,0xc26a7d042c32f139L,0xc1b48180ed938dcdL,
|
|
0x785b964d42e4c01cL,0x507cd16aa1f75e28L,0xfaabff8d1f323caaL },
|
|
{ 0xc6bc47ceadd5b649L,0x997dc0ee3c0aed28L,0xcef0c89bf3666cfeL,
|
|
0xd8d7dfb426482ea7L,0x5f00e432d2348484L,0x09549b5a1dc66aa6L } },
|
|
/* 31 << 98 */
|
|
{ { 0x702e450ef8464b1eL,0x52d20765a061c4c6L,0xe1c930b26519bfc6L,
|
|
0xa9c0c8c6d17ea02dL,0x52bfc60ddac62461L,0xc325568f7c5f9a55L },
|
|
{ 0xe7413df9eb44b9d7L,0x461682265837e0d1L,0xfcb9628c15aa0c89L,
|
|
0x83d6d0eebb57c6a3L,0x17bb82a56829c9fbL,0x342fe91c496861e0L } },
|
|
/* 32 << 98 */
|
|
{ { 0x58d6998e171c1439L,0xfd4a98f401feedecL,0x420b2a0165739fceL,
|
|
0x5c5db30822f7a073L,0x016c547805042f00L,0x5fc73ce2a12413d9L },
|
|
{ 0x8ceb2d70e932aa17L,0xb4d66b670537afafL,0x2638d012339c146bL,
|
|
0x02fbb7b628ac0555L,0x7fcb0c8162d46e63L,0xeaa9ff4f066d088eL } },
|
|
/* 33 << 98 */
|
|
{ { 0x45f53090b8b22c29L,0x155b8f8111e70d5aL,0x5ec118b25d3a7d83L,
|
|
0xfe4c7eb39c4ddd1aL,0x8cdfb753f226d869L,0x20bb870779fc646bL },
|
|
{ 0x3c8c1d7a25d1308cL,0x5a976ae47116f347L,0x6af949a60faf9690L,
|
|
0x7e6718fc07f3472fL,0x16ec7b45267b17cbL,0x80744641cebe1bd7L } },
|
|
/* 34 << 98 */
|
|
{ { 0x45eded7ab2a5c8e3L,0x4308485969a0681bL,0x89b7510d90910e8bL,
|
|
0x1c622d04d2066d92L,0xdc3b434bcd2f0d7cL,0x98bcb83b476ea5a3L },
|
|
{ 0x9195431d3dbf2be5L,0xfec7efd969275ac5L,0x6a4364f556a7da4dL,
|
|
0xaf701bc579c177ccL,0xb77ef33e9ffc2a47L,0x2bc59331cc23c4e4L } },
|
|
/* 35 << 98 */
|
|
{ { 0xedf4a85b9d43c51fL,0xc0afbcb6b59a7244L,0x3ede2f25626e0ca8L,
|
|
0x45836582270f674dL,0x83c47048bf06d267L,0xbb1e994f3c68314eL },
|
|
{ 0x50d79cb4f2fe6c8fL,0x1a1d8aecdf7600f5L,0x216f5d2bef4e4857L,
|
|
0x41361a90bdffb9e9L,0x8040f5c173d2f9caL,0xe6665f0dd1e9be4dL } },
|
|
/* 36 << 98 */
|
|
{ { 0x5405179f394fd855L,0xc9d6e24449fdfb33L,0x70ebcab4bd903393L,
|
|
0x0d3a3899a2c56780L,0x012c7256683d1a0aL,0xc688fc8880a48f3bL },
|
|
{ 0x180957546f7df527L,0x9e339b4b71315d16L,0x90560c28a956bb12L,
|
|
0x2becea60d42eee8dL,0x82aeb9a750632653L,0xed34353edfa5cd6aL } },
|
|
/* 37 << 98 */
|
|
{ { 0xb112fd7b36386e2dL,0x358e974a6a634bd7L,0x509814737faf640aL,
|
|
0x1036bdacef39b3aeL,0x410c6448db5aceb0L,0x914671305bbebe92L },
|
|
{ 0x83fabd54e9e009e4L,0xb2da8eea9994d16cL,0x9d73da6356997acdL,
|
|
0xea9158b97ec1b844L,0x8e6a6e3129714795L,0x23e98f57131243f9L } },
|
|
/* 38 << 98 */
|
|
{ { 0x7105f727552664dcL,0x97cbfb6c5c589c8cL,0x1a7b110a70fc59b3L,
|
|
0x46c39f2cc754c69dL,0xcda0e2c067b1f17cL,0x35fe45fab7ede210L },
|
|
{ 0x6b3ecb7d82e78b40L,0xa90eed4fdbc07241L,0xa73797895aacd533L,
|
|
0x28120ba5f4fa89a2L,0x9c1fc09ee3055006L,0x71e665efc51653a4L } },
|
|
/* 39 << 98 */
|
|
{ { 0xcf782247d28b5059L,0x15bef4cb1b89eb06L,0xbc182ed6bcb4afeaL,
|
|
0xcf5b6dfde0e32b77L,0xeb61aff9d9446052L,0x5846f171c4bfc0abL },
|
|
{ 0x61d5ae1c6fc68422L,0xa282c56846e870afL,0xdb4859d16bca8fbdL,
|
|
0xd4cd416e97caf135L,0x11217fa9c3debd59L,0x27702da6370758ddL } },
|
|
/* 40 << 98 */
|
|
{ { 0x8273db992d189057L,0x4d1b05fce1b5f8ccL,0x5fec7c830a7c32d1L,
|
|
0x28ddaf28ea9b4d45L,0xb6bb62aca2fc58beL,0xfc65b7aa4a41852dL },
|
|
{ 0x6e7651941c9e6045L,0x3acabf28fc116257L,0xc9d5e8054b5a4ba8L,
|
|
0x9a072259cbdcf1ebL,0xc67cf643439fc8fcL,0x917ef6f8b4333aa8L } },
|
|
/* 41 << 98 */
|
|
{ { 0xee6123cca6411227L,0x91372d080ee882bcL,0x2c30a840a638a4faL,
|
|
0x1867421321e83d4fL,0xc6afa4cfc3fb9925L,0x19aec276e4fdc73fL },
|
|
{ 0x1ffec4510cf4e610L,0xac57292ede22d429L,0x62844d78e6cacbc1L,
|
|
0x0eafcc554d2e497cL,0x39f1acc8e780f600L,0xfcf8d914fcff8c6aL } },
|
|
/* 42 << 98 */
|
|
{ { 0x0734ab43ff2152d0L,0xe52c5dee930fea54L,0x9cac7efe940bddbfL,
|
|
0x30d2610ddbd43391L,0x4beeb865921c124dL,0xa19fe6a4fca219fcL },
|
|
{ 0x588395628755cc47L,0xa7f301241324f2d1L,0x4fe38ee3b1ec5aacL,
|
|
0x3583542eb16413ceL,0xfa92e2191733b7eeL,0xc0f30ba32b2001a4L } },
|
|
/* 43 << 98 */
|
|
{ { 0x706b02c3febc7968L,0x6e45dc90c96a6b64L,0x34e5f890f95aa4c7L,
|
|
0x8ae64d487683b855L,0x0fbb9c4a62e03ebaL,0xb32a965ce2cab115L },
|
|
{ 0x4a7084a8b33102b4L,0xe7fd9db3ebd1bd6aL,0x2fcb233cc7f32b61L,
|
|
0x365896d5f2549734L,0xa3f18bfd25c7a1c4L,0x382950ef212b8daeL } },
|
|
/* 44 << 98 */
|
|
{ { 0x82154d2c91aecce4L,0x312c60705041887fL,0xecf589f3fb9fbd71L,
|
|
0x67660a7db524bde4L,0xe99b029d724acf23L,0xdf06e4af6d1cd891L },
|
|
{ 0x07806cb580ee304dL,0x0c70bb9f7443a8f8L,0x01ec341408b0830aL,
|
|
0xfd7b63c35a81510bL,0xe90a0a39453b5f93L,0xab700f8f9bc71725L } },
|
|
/* 45 << 98 */
|
|
{ { 0xee2b773e4ed17990L,0x499e83623faab7feL,0xa3925e2f71abb9efL,
|
|
0xfee50406ce3b4a69L,0x71a15070bc10f803L,0x5b01e4a2c7bab10aL },
|
|
{ 0x806c590d99e51e36L,0x34adbaf6a7f88d5aL,0xd4a93ce9f6b30ac3L,
|
|
0x39d2cf40dc33fdfbL,0x13e676f1d5e4e7ddL,0xbaa72ab9199690fbL } },
|
|
/* 46 << 98 */
|
|
{ { 0x85017690e51b47daL,0x25919b58a2b476ceL,0x6f692de103ec5d55L,
|
|
0xd6cf8ee5d022dcebL,0xaf3225238ba7076eL,0x917b373728c902d5L },
|
|
{ 0xac75fddc3fdf8590L,0xe83d9bbb64fc304cL,0x13550de2971f659aL,
|
|
0x70bee07ee12b7bebL,0x9989d2fa0a855646L,0x8b6043aca576b3a1L } },
|
|
/* 47 << 98 */
|
|
{ { 0x1bfd4f92fadf9017L,0x1e4509aa737bc67cL,0x88278c3699af1ffaL,
|
|
0xbc47536f4678e22bL,0x69914cdb1b07c823L,0x56fc28ab97277358L },
|
|
{ 0x092d28efe752d2f7L,0x6a8286a691da62c5L,0x86b702778033c632L,
|
|
0x57ef284e7672f41fL,0x9101ed302e54007bL,0x53e94cfed25d8d19L } },
|
|
/* 48 << 98 */
|
|
{ { 0x311ebba2fc37efedL,0x8a6a42d660cfd6bcL,0xb4051b3af2a4871eL,
|
|
0x66ce77b8c2f0ebf0L,0x84abc9480ad28477L,0xc82e5c6263d9d11aL },
|
|
{ 0x99ffc70c007dcf93L,0x5e974edfd964c822L,0x0fee3572513085e3L,
|
|
0xbe67a88046ce8444L,0x136ceeb806d17129L,0x0da512ae662d86fdL } },
|
|
/* 49 << 98 */
|
|
{ { 0xeae827d989e687ddL,0xb025f0723bdbdd9dL,0xfbddcecec3a575aaL,
|
|
0x3fab33c1f80d12cbL,0xd0232142b32f0381L,0xf00e74bd3b6c3132L },
|
|
{ 0xb7c1311e0e44deffL,0xf3d790ae29b04d6bL,0x3d3744b846f72957L,
|
|
0xc0890fb6ab2f13e6L,0xa669a34324461f0cL,0x35c9677ddd72fcb7L } },
|
|
/* 50 << 98 */
|
|
{ { 0xc257ed518060a28fL,0x3a9d7e1cc72fafebL,0xa304a5e8332f435aL,
|
|
0x96969bc234ccf343L,0x2aae4d8e7702ba84L,0x37f15631f203a7eaL },
|
|
{ 0xc0000f24c9666405L,0xa98eb834a537fb89L,0x8c0564cf7e36dd1aL,
|
|
0xb5ca507b4e89615cL,0x9bfa209a9d80ef92L,0xe2ec1879a83f02e8L } },
|
|
/* 51 << 98 */
|
|
{ { 0x73b4573c11dfdea9L,0xe5f208ee5c8cc81fL,0x5c240d3c769adf12L,
|
|
0xbd3f8f33550c53acL,0x98171d16bb4f43acL,0xaf19d5fe84db9e13L },
|
|
{ 0xc589be0d2e53345eL,0x3184b540f114f6f3L,0xa35ed77e4946090fL,
|
|
0x427b860afd3108fcL,0x7d0848c3867df76bL,0x353539e2a32ec485L } },
|
|
/* 52 << 98 */
|
|
{ { 0x9401aec2b9f00793L,0x064ec4f4b997f0bfL,0xdc0cc1fd849240c8L,
|
|
0x39a75f37b6e92d72L,0xaa43ca5d0224a4abL,0x9c4d632554614c47L },
|
|
{ 0x1767366fc6709da3L,0xa6b482d123479232L,0x54dc6ddc84d63e85L,
|
|
0x0accb5adc99d3b9eL,0x211716bbe8aa3abfL,0xd0fe25ad69ec6406L } },
|
|
/* 53 << 98 */
|
|
{ { 0xee174af2df740edcL,0x1bd8382c09233f0aL,0x34a7450e7d343006L,
|
|
0x92259ddd3d463e61L,0xcd0bfe6fedbc3af2L,0x39627c4cfc8770f4L },
|
|
{ 0x7b7c688ddbabdf2bL,0xf459f0e64bef3558L,0xfa0e87becc88f7c8L,
|
|
0x67beabac5fcc80feL,0xbdae52bfadeba16fL,0x4751724c5af5c9bbL } },
|
|
/* 54 << 98 */
|
|
{ { 0x5627e0d016332364L,0x33839376fc57f01bL,0xe7fc2c489528e434L,
|
|
0xa0ee39acb52b3757L,0xe49e383ee42e4832L,0xabfefdbb31359afbL },
|
|
{ 0x5dedb6f3b99ee196L,0x38abe58bc16aac17L,0xa300a1333ec06a07L,
|
|
0x00e68eadc90d4659L,0x60412e8a8000a773L,0x6099b6a6a5830c94L } },
|
|
/* 55 << 98 */
|
|
{ { 0x85364bd10d340c80L,0x14b89462be64bc9fL,0x16429134b542faa0L,
|
|
0x0d4cf3ce73683e2bL,0xf9a3e443cb73ab7bL,0xa4c2d0afbb156b0dL },
|
|
{ 0x826123921bc77675L,0xaf2aad4a5f26c238L,0x6f6f5d9aef4656bdL,
|
|
0x0e20425f90901f3eL,0x0e30bfef9943a673L,0x6cefc62847415a28L } },
|
|
/* 56 << 98 */
|
|
{ { 0xe7acaa8457e0105dL,0x3c06d3bd3851fd57L,0x23cf3c612a9c631bL,
|
|
0x13888aaa33863bf8L,0xf2396355717783eeL,0xf21e1a4836b300e1L },
|
|
{ 0xa734cb3b9d27b4cbL,0x0a7effed796e34b6L,0xfc5864773615cc7aL,
|
|
0x1f98ed7788844a21L,0xd6e289407ad4c7bdL,0xa00d64ebe9331c7eL } },
|
|
/* 57 << 98 */
|
|
{ { 0xcc6ce7dee1c1e159L,0x77982e4f03df6b56L,0xbd8307d1b82b5ebfL,
|
|
0x43e25358ed881b82L,0xddba4f418e0eb034L,0xbe326c36f919800cL },
|
|
{ 0x97d03da7af52dfaeL,0x153bb17af4bf81c5L,0x29bbb9bed7ff322cL,
|
|
0x7a7bd8c7232cca47L,0x7474c199c2830f03L,0x9f464a06f0065fc4L } },
|
|
/* 58 << 98 */
|
|
{ { 0xca505cb553b876bfL,0x6fc27f553662cb5fL,0x891cbef432cb1636L,
|
|
0x339743f16e27e2d9L,0xde76538f21dc4837L,0x9cea05020efe241cL },
|
|
{ 0x97b8deb65888d9acL,0x4d3c28cba4b6cc56L,0x88ca828f840910b3L,
|
|
0x2e5727cfbfde6793L,0x05a4138302bbae6cL,0x2e72fd653fa8e23bL } },
|
|
/* 59 << 98 */
|
|
{ { 0x5b88c5ae6d17fe02L,0xc9b14810d6dbe104L,0x170b8659873be863L,
|
|
0xdc5946a6ae9111b4L,0x4cfa5f022819a4cdL,0x7653d06ae213bb7dL },
|
|
{ 0x324c41baabd7ee74L,0x4219968cdd1608f1L,0xa5e104704adc1561L,
|
|
0x964a53ea5e16d818L,0x00ebd1d4980f4bd2L,0x23cbb80d3518144dL } },
|
|
/* 60 << 98 */
|
|
{ { 0x0d5c1769df85c705L,0x7086c93da409dcd1L,0x9710839d0e8d75d8L,
|
|
0x17b7db75ebdd4177L,0xaf69eb58f649a809L,0x6ef19ea28a84e220L },
|
|
{ 0x36eb5c6665c278b2L,0xd2a1512881ea9d65L,0x4fcba840769300adL,
|
|
0xc2052ccdc8e536e5L,0x9caee014ac263b8fL,0x56f7ed7af9239663L } },
|
|
/* 61 << 98 */
|
|
{ { 0xe6ece4b5dae76820L,0xd428354e95feec03L,0x43517722f8871f7bL,
|
|
0x313fde11e84d0b7cL,0x7f02824b1cae0a45L,0xf9f560c1d6646bc4L },
|
|
{ 0x124d88bc903a0608L,0x950e8320370c7ff2L,0x29e6da714090a72dL,
|
|
0xbc5a108c54547d89L,0x809330cd3e484deaL,0x1b04a8088bb00f0cL } },
|
|
/* 62 << 98 */
|
|
{ { 0x2425c59c03e0a528L,0x49de96f425c2be3aL,0x30b52686fff4b610L,
|
|
0x2ce573b0f2e5f7b1L,0x4ec05f07b606f0e6L,0xf2040886366ecbf4L },
|
|
{ 0xc7fd993460d404d3L,0x8a064992fc12227dL,0x9c6d64ec215492b1L,
|
|
0x2793bd0903463ec1L,0x49523ebab7376e80L,0xb138dfbd35b14fd6L } },
|
|
/* 63 << 98 */
|
|
{ { 0x5ed097b0df7363adL,0x21319edba5696d91L,0x17c46519c5d5313dL,
|
|
0x341d46576c6cccedL,0x60d80713692bc704L,0x9477b6e907fb8e13L },
|
|
{ 0x2965720b532e0c6dL,0x2767b4ee87831d79L,0x3e2e67abd4b5ef14L,
|
|
0x45ee89b5d2598521L,0xfc8f1e3ee6441648L,0x75c4db57567ed090L } },
|
|
/* 64 << 98 */
|
|
{ { 0x17e3d0b8713b8541L,0xf372b048c6b5e839L,0xf8ef0261d0bb1848L,
|
|
0x9b804ceec71a3bbeL,0x00b7d171542a88aeL,0xf2b8ed10e9097b9eL },
|
|
{ 0xdbad9f122c0a009aL,0x245fc1e9205fb1bfL,0xa8a4834fb83debf5L,
|
|
0xc3ee226d637e449bL,0xe3070d93cab82664L,0x24b8094db37320e8L } },
|
|
/* 0 << 105 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 105 */
|
|
{ { 0xb506b7b925059699L,0x349fd83f01ab02e5L,0x64b729ad3789281eL,
|
|
0x69ae8f81f9af4561L,0x007befe156f91860L,0xb578c566edc250fbL },
|
|
{ 0x1c16d75a67ae4801L,0x04c35a7ea1d3f592L,0x5dc97da936881f89L,
|
|
0xaddb603103a5b1eaL,0x7eb515b13e153a0fL,0xdc3a92192b4a1ee2L } },
|
|
/* 2 << 105 */
|
|
{ { 0xe7365f9e512cc92aL,0x9efdcf8b5172a654L,0xbfb389ac8e611fc3L,
|
|
0xce778fd5699c227dL,0xdc1f47b63ff2ef17L,0x2ae0f68302672ed4L },
|
|
{ 0x51c63806a8e879cbL,0xd3dfecf03909f526L,0x375b3d13e00e12a2L,
|
|
0x91f9f750bf8df325L,0xf1ea0e421df5f21aL,0xaed73e7f32c60584L } },
|
|
/* 3 << 105 */
|
|
{ { 0x03b07fb5e0728e6dL,0x9e0469201012234eL,0x272e644935637644L,
|
|
0x2b6ad1c2a55bcadfL,0x86c527765c71c6afL,0xa25bd60bc1678806L },
|
|
{ 0x0cae829476bb32f8L,0x389ce4e633e03cb2L,0x504df8337513dfb6L,
|
|
0x4260ee8e1b351ddaL,0xa473c5d9dbaf7cd0L,0x22cb7cb471e390fdL } },
|
|
/* 4 << 105 */
|
|
{ { 0x1d9aa9fa26caebd8L,0x6b64686926b7a673L,0x7ebed6a17f167b47L,
|
|
0x324c13f85bd9153dL,0xe9ea5b734c682ba6L,0x2961da7d7e3ff6e2L },
|
|
{ 0x1ed2b05001a83dadL,0xb232951dc4a2f60aL,0xafcea5d3d68b8ec6L,
|
|
0x21dc058d1c6ce0d2L,0x0043de75e719410cL,0x4edd792ce15cf534L } },
|
|
/* 5 << 105 */
|
|
{ { 0x0f45245f3babe09eL,0x0959326fa9f2fac5L,0x7629e7fb5cc136e5L,
|
|
0x208bd5a6e48b7eb0L,0x637891d6b75a85cbL,0xf0ad9d8d9f27b57eL },
|
|
{ 0x437b6944e0454b05L,0x022c51d702ed3592L,0x0f79e2bd0dc0a769L,
|
|
0x54ace1fdd9b81f9bL,0x38611d66f95ea8dcL,0x52443ca8f0e6147bL } },
|
|
/* 6 << 105 */
|
|
{ { 0x857d68558bc272d0L,0x4583eeeeb5be2485L,0xb83586dafe0152ecL,
|
|
0x8b0eb223e830294aL,0x757582b6a5b0e880L,0x5140c0169cca7fffL },
|
|
{ 0x07a00782e9228f12L,0xb96e2b5dd4973080L,0x3cceb9a6e88efbe6L,
|
|
0x9955b63073fcdd25L,0x04f26ab02805d470L,0x90b38299424da086L } },
|
|
/* 7 << 105 */
|
|
{ { 0x73f1ae48f4f6c5b4L,0xee5af13d4a477f01L,0x274614a2ddb93d52L,
|
|
0x90b0c563c320aaf5L,0xee2303c8ef990b0bL,0x00d028e73061f140L },
|
|
{ 0xff705011cb3d8eafL,0xae1d990862594f4cL,0x22a27cecdafea438L,
|
|
0xa78e12d5c5962ea9L,0x5bbe9d878e65f9cfL,0xa222580cf47cefa6L } },
|
|
/* 8 << 105 */
|
|
{ { 0xf7aaa732959abb9eL,0x1222ad0a2ebf80b9L,0xa1a417372e0c286eL,
|
|
0x3b6685025da3472dL,0xbc0d116b7576f2a2L,0xfdbcad95a36a27d4L },
|
|
{ 0xcdb3f4749d54f7eeL,0xe2e0f5f98a5643a3L,0xc70d11b969d4f171L,
|
|
0xdf96d1366cca4ef7L,0x570693db2fc6afdfL,0x5059e67b567504daL } },
|
|
/* 9 << 105 */
|
|
{ { 0x2c8107d47fe632a2L,0xfc46c745ede7bff8L,0x2d3b12864650025bL,
|
|
0x815ef3cbe74cd65fL,0x5431b01ba256f01cL,0xe832ff1139915cfaL },
|
|
{ 0x2c106de607d7af84L,0x67303b786d4753e7L,0x5f886ffa6d75c8deL,
|
|
0x932a6c20967131cfL,0x5bc94a9170aebbb0L,0xa85b3044fd56e06dL } },
|
|
/* 10 << 105 */
|
|
{ { 0xc904558ae7eba799L,0x46b6031bb2fa7331L,0x6620e2b50653675cL,
|
|
0xd1373a357d2218f7L,0x0f4b3ca3af55a5e7L,0x50774160714e70c2L },
|
|
{ 0xacc63d1469188455L,0x89a795fe043b8b30L,0xac2fd66ce1e4b9cfL,
|
|
0xac7927021bf67f26L,0xb9513f0d1143d437L,0x02198050811f2931L } },
|
|
/* 11 << 105 */
|
|
{ { 0x6d4acdba7b480776L,0x8b518cd466dffeb5L,0x8826c99451918859L,
|
|
0xd2b6a7a038fad835L,0xd315417a6929a870L,0x05d85252c5a769e1L },
|
|
{ 0x2fa06335ec0d091eL,0xb0cc337287768c88L,0xacbda5ba58a2eb9dL,
|
|
0x2a404fc976b7b057L,0x073abb71838c6135L,0xbdf89b135cfc4f3cL } },
|
|
/* 12 << 105 */
|
|
{ { 0xd00eb9c53508675fL,0x92ec76a4a117dc95L,0xf58d6f85334ca15cL,
|
|
0xeeb522169cee0544L,0x3eb9847ff21457c2L,0x547908bc5524c60dL },
|
|
{ 0xb5b49d225198709bL,0x718abce6324abc67L,0xdab8ff2f4abd54baL,
|
|
0x98be59e67184d444L,0x45b74b54babeb4b0L,0xd8d8bb30ff71a5acL } },
|
|
/* 13 << 105 */
|
|
{ { 0x8aedf7e28ec13e6fL,0x8b952620d950792dL,0x36e9dac204918f59L,
|
|
0x5e49a5a2d3dd47edL,0xb17455bee863c2bdL,0x8caac6a9326a0d66L },
|
|
{ 0xb6c3f5e427bb72e1L,0x17566c9dee5fe09bL,0xfd6bbcc25e3db64dL,
|
|
0xd437d07a3189319cL,0xad00dfc4cd3166a5L,0xab75927b0bd63003L } },
|
|
/* 14 << 105 */
|
|
{ { 0xa7672a39afc43be8L,0xefc49015c72f97aaL,0x81c63c050e48f2edL,
|
|
0x62f39f32833a22ccL,0xf7a3480172c0c0c4L,0x4711cd41a4158538L },
|
|
{ 0xa3c99a4d1d15f2f3L,0x4b82c1c17bee1b47L,0xc7d60b489d199f10L,
|
|
0xd1d1f03d5f16fa95L,0x96c780c932fbeaf2L,0x0662e250376ff106L } },
|
|
/* 15 << 105 */
|
|
{ { 0x728e334678571c8fL,0xd0a886b56cb339d3L,0xf4ea33380a5671baL,
|
|
0x43823401a64850a4L,0xa7729cd533117b9dL,0x4dd457602b78cffbL },
|
|
{ 0xbe0571115a67d812L,0x7ec6cf925105a3fcL,0x5dbcb4bc0ccafeecL,
|
|
0xa7587f15803092f8L,0x67ee61d5a884efadL,0xd4ced554ca47d9caL } },
|
|
/* 16 << 105 */
|
|
{ { 0x02c6b6083b03dcbcL,0x2b20149e3b9d868aL,0xaf5ab01d4f57eb0cL,
|
|
0x59935b94d750e515L,0x32721b408f89ad68L,0x673bd755a7e3ceffL },
|
|
{ 0xbd462fd8ef3b3393L,0x991422640e59a120L,0x4162da619263fa61L,
|
|
0x2ed1f2deb6488eb3L,0xb0bd37a8725680c4L,0x17218bf029ec27b0L } },
|
|
/* 17 << 105 */
|
|
{ { 0x444071ff84ff1ebcL,0x4b4171e87f789cbdL,0x4a832cca2db4e8daL,
|
|
0xe229ffb6dc209c05L,0x9efbfd7eb5f0b3f4L,0x65e07fe774fbbe6bL },
|
|
{ 0x2892c8ac627b9d41L,0x01a20eb94297e7a9L,0x2f54e88646f29860L,
|
|
0xc425accc188798ecL,0x6137251c85c80580L,0x6cc0f9c4f386581eL } },
|
|
/* 18 << 105 */
|
|
{ { 0xf677bdd11cb61a7bL,0xfca1faf8932d6113L,0x1d5bbf97a531bbe2L,
|
|
0x3d5e4860c849fc47L,0x388943cd95fe4da2L,0xffb7d5e073add43fL },
|
|
{ 0xc3166ae828fcc058L,0x89dc7faae0d6f6e4L,0xe6daf1a6f527ca01L,
|
|
0x500a703a56ef1d8dL,0x3573d0a3fc914df4L,0xd780e745ef8dc2a4L } },
|
|
/* 19 << 105 */
|
|
{ { 0x90a8f3380500afbcL,0x8c303270838ccf6fL,0x82cbdc98458254c6L,
|
|
0xc2f24d03b367ddbcL,0x5d3daa0d6c882354L,0x824d313d376599d0L },
|
|
{ 0x6e5075df7b9dd1b6L,0x6871a3d4d69c9828L,0x8b3762f59cffa148L,
|
|
0xf2184f67eef8c656L,0x437630c296a1537eL,0x92a0667c4cbf8249L } },
|
|
/* 20 << 105 */
|
|
{ { 0x6e929912ef619478L,0xe7ddaf255ffc5939L,0xb71133cf96dbbca5L,
|
|
0xee8bd53f17da5104L,0x7601ce6adc49be68L,0xa1ca3b3cc63f2a87L },
|
|
{ 0xebf388c2a0de1668L,0xa0f6c38dd0ec6bd7L,0xc8e0875ddac451ddL,
|
|
0x179fbbe5a5afce85L,0x0727095673bfb06bL,0x992afcd047622925L } },
|
|
/* 21 << 105 */
|
|
{ { 0xe3b0122624f262c3L,0xaa7a0925dae30b22L,0x36104c95a96a18f9L,
|
|
0xdc6090f5539b6740L,0xd70270ba11040a88L,0x53997b57ea3342feL },
|
|
{ 0xaaf1d47d63393e4fL,0x9db8aa3fe8a99625L,0xed571a32c3926e1cL,
|
|
0xd6e898526e565346L,0xb3984bbd873b2589L,0xaeb7bf3f3f5f68e1L } },
|
|
/* 22 << 105 */
|
|
{ { 0x75a4a19a79ded4a8L,0x1368e269f688177dL,0xa24d67118581e23aL,
|
|
0xae63d5a6746b3830L,0x0c68d3e314017304L,0x521a5e7de4d45dc9L },
|
|
{ 0x69d9adfaf77ca616L,0x1f8d37f4bfda67f3L,0xa2833ba1027e771dL,
|
|
0xae49b00367141a63L,0x04e6f282ed6f1968L,0x65d7d88f060f9157L } },
|
|
/* 23 << 105 */
|
|
{ { 0x5dc3137b512e4026L,0x43e189595d6ac980L,0xdb7dfef39eac06a4L,
|
|
0xa8f3e2aea09b0650L,0x80a8594c575e047aL,0x9eba41bcf0c58bf3L },
|
|
{ 0xdc04cc7679812341L,0x716050eaeed1be66L,0xe559782099b77be8L,
|
|
0xe543aef055183ad5L,0xbbddfb814c08a959L,0x6e54d86eb5368e8bL } },
|
|
/* 24 << 105 */
|
|
{ { 0x170f8a74e7aba263L,0x6b4e1d7b986b151aL,0x5f65bd224b08921aL,
|
|
0x1017ae3de6caca3aL,0x613f36b626cb9d5bL,0x8a1e2f2ded19d99bL },
|
|
{ 0x52c915a5c3c519c2L,0x3c9a33305902fa08L,0x2cd7f7c206a51a12L,
|
|
0xfed60db66e0197ceL,0x4e5b2bb7d971b04cL,0xebebeebf2f45ab13L } },
|
|
/* 25 << 105 */
|
|
{ { 0x43b10a0673220e06L,0xdf93af67777cf022L,0x830195efbeea9ed4L,
|
|
0x0a36b71812353c9bL,0x520e2e8d1ec8c488L,0xdc985ffaadac5e16L },
|
|
{ 0x0ebac566f3f58ed7L,0xc7747562a2cd13a2L,0x6a5b4cbce3901864L,
|
|
0x66634acaa374b634L,0x45e000877f4680dcL,0xb783d01f9fdbe92aL } },
|
|
/* 26 << 105 */
|
|
{ { 0xcf6d51be36e1c05bL,0xf59b6665e1da0ad8L,0xaa8bfb9d727a701bL,
|
|
0xb1680942e26e268bL,0x09d41407e518661bL,0x8b0dfbfb3757a993L },
|
|
{ 0x34ecb09f6cb33380L,0xfcd77efede342bf6L,0x9f8fa6c6e476c5eaL,
|
|
0xde30410fb6257416L,0x416ea101bbd47b91L,0x86ebd19e4aeede80L } },
|
|
/* 27 << 105 */
|
|
{ { 0xfe7562e00818226bL,0x922d8fe662b46275L,0x6216698b491adc2eL,
|
|
0x5bdf7a59f6a38f2eL,0xc0640bf937710dfcL,0x06ad30a9df687f48L },
|
|
{ 0xc561dc7d3eb66e6dL,0x7444ac83d08616c3L,0xebfcccee84984618L,
|
|
0x35a03bafbb15eb51L,0x7c907f9fc17a5de2L,0x2e48ddb5814634dfL } },
|
|
/* 28 << 105 */
|
|
{ { 0xe466d7a7ea51a37aL,0x5203e990cdf97186L,0xf700953096c84ba0L,
|
|
0x4e32fbe65f89d1adL,0xe530349aa9be221eL,0x0f7f9c2e50b31508L },
|
|
{ 0xa6796f5c3af5a574L,0xe220f6daa2a2df89L,0x99ec4811d8b65510L,
|
|
0x4dfdac69ed373b27L,0x663f46b1bb55114cL,0x44236350d167e032L } },
|
|
/* 29 << 105 */
|
|
{ { 0x1382e90ba65f6a57L,0x3557ab88e5c903e1L,0xcc0cc77f032067beL,
|
|
0xdd8da09f67797328L,0xeb2979d45114c09bL,0xaaca95bcc4eb598eL },
|
|
{ 0x651a7ce5a2b776fbL,0xc20fe9315312ffc1L,0x842957357dcf479fL,
|
|
0x022ba6e2ee5cc0a7L,0x6d27e37185b0ba5cL,0xe6f212bdbcd5f2c1L } },
|
|
/* 30 << 105 */
|
|
{ { 0xb0c2ce87a9088f95L,0x47ec07e0acb11d2fL,0xfe84fba0d30ad231L,
|
|
0xaa98e35f18a08eb1L,0x36adc3f2f6a27510L,0x622d202751fac4fcL },
|
|
{ 0x4be765cabb9b6ffcL,0x934193571cbfcbeaL,0x83542d9cbef14402L,
|
|
0xf27504954612b4b4L,0x91aff597bb988ba6L,0x229031e51d61f6f9L } },
|
|
/* 31 << 105 */
|
|
{ { 0x6b04a446ea29e65cL,0x9b6247a696c48a99L,0x95aa162f60c83930L,
|
|
0xe387f544e30821eaL,0xbe1cdab306c51b7eL,0x40175d151fc7b8f8L },
|
|
{ 0x89df5ff36384d331L,0x02eb9aa4fe1aaf5eL,0xf24155f789675704L,
|
|
0xbd2e8cdd87f72f4cL,0x2856b3c46de30f01L,0x2356f0a3ecf8af25L } },
|
|
/* 32 << 105 */
|
|
{ { 0xfb09e7564bd044efL,0xdbc9fcdfbb964fb3L,0x451c5b01cdb1f4f5L,
|
|
0xb02f9068f1dd1cf0L,0xd4765e7c0c687e41L,0x89b64981d1967bd3L },
|
|
{ 0x06a0e4ecf0439d65L,0x564c387da5abbcecL,0xc1e9d01ac651d806L,
|
|
0x5e6ebd830618a96cL,0x9ce1aacec54ad8ceL,0xe5248a089953f90fL } },
|
|
/* 33 << 105 */
|
|
{ { 0xd65f3b909b6ab239L,0xbc259a6d9ea8bf80L,0xc10d5c235944f964L,
|
|
0xbd6b3f6f61eeac6fL,0xc4ef2d8383e92858L,0xb80d5ab0a3736bfeL },
|
|
{ 0x27bebd1176695c40L,0x4de92348ea4f5720L,0xd70d93e6070b892aL,
|
|
0xfce03d0be626d5abL,0x2525e8ea81014bedL,0x6fa3df16a70e2799L } },
|
|
/* 34 << 105 */
|
|
{ { 0x42b8350a7bbc41caL,0xd7861ad49af59bc9L,0x2453d07c5644d328L,
|
|
0x2b92643ad7c8ec43L,0x7c14d3c7cd5f1fd2L,0xcee050463d373c7fL },
|
|
{ 0x17ff60bd0ab2b35bL,0x473925e0dbb7f655L,0xdbaa015aff3ee023L,
|
|
0xbc1ff6d6087ecfbfL,0xc44e1c8c5fc66ca2L,0xc60a193850d6b257L } },
|
|
/* 35 << 105 */
|
|
{ { 0x5ff44f3ed8f0983cL,0x9de50da0bb82cc15L,0x504f82ec94757c44L,
|
|
0x72a4fc9dc8a07028L,0xd4d6e4cec3d5e64cL,0xc6148fe780008568L },
|
|
{ 0x71ba3fc525ef66d6L,0x969cc8694f6589f6L,0x5016c8c2d934ab25L,
|
|
0xa78382f6959e8881L,0x28bcb8bea20eee18L,0x055ba80b37edd7c8L } },
|
|
/* 36 << 105 */
|
|
{ { 0xbe389fef9c98ca3cL,0xdc3ab23b910370e5L,0x866cb37d5e8eb20dL,
|
|
0x2f951ca9c1e32fc8L,0x54ef6ab15fe24e6cL,0x6038b5efcfcb8cfbL },
|
|
{ 0x362e076b6eec196dL,0x47bb3aefd398b505L,0x9f3128eb343711ccL,
|
|
0x8dda2fa8d28e3269L,0x908c52c7eda48846L,0x65fb3a05d53b0917L } },
|
|
/* 37 << 105 */
|
|
{ { 0xeae35c02ed711239L,0x16ab943fa97db2d7L,0x9770bb578f3b0599L,
|
|
0xa88ffb95956d04f3L,0x3b937af5f4dcf6ffL,0x311ef2cc0bc41f56L },
|
|
{ 0x00e9214a2860ea2aL,0x2a64b18a7bd12d8fL,0x20a5b9da6a2b9dbcL,
|
|
0x5c16a412fe1b8edaL,0x6fc306af7b9db98bL,0x964c35de25dc9363L } },
|
|
/* 38 << 105 */
|
|
{ { 0x81f4739e6df16589L,0x2ea2fff11f8b8ac4L,0x3baff03d33e02c36L,
|
|
0x7f07526874d77660L,0xa442d7fa758eed7dL,0x584cbe9866625864L },
|
|
{ 0xeed35d579d167ff6L,0x56627c2e3c7bf84fL,0x908df5aedd011153L,
|
|
0x2694e54d242fc055L,0x25beed9a2f2d60c3L,0x29d3f22fe2ee5293L } },
|
|
/* 39 << 105 */
|
|
{ { 0x14940dbc178f9859L,0x6e6e35b7329ec4a2L,0xd1f198096707db4aL,
|
|
0x6eb310b79fe4233aL,0x8f92556eb41e1d8cL,0x2ab28e231d7ce522L },
|
|
{ 0xc5d0f5dfdd5c4d68L,0x3f5146d825101083L,0x3a04aa53de9ee4cfL,
|
|
0xcf36f1e3d9357f64L,0x05a1896444889f68L,0x1096c87aa96a4137L } },
|
|
/* 40 << 105 */
|
|
{ { 0xfa4b6697a8352657L,0xf5696452cad6ec30L,0x10aaba60986c84ffL,
|
|
0x49bdfff4dae014e1L,0xe2a810bd0abc0e46L,0x1dc5b81462d1dd5fL },
|
|
{ 0x15d2f2c723bb4561L,0x5ac7b6421818e30cL,0x40c6b6f94c545f5bL,
|
|
0x5875b6b2f99241e8L,0xfa3e88a9d6708293L,0x1c936920ad6d9344L } },
|
|
/* 41 << 105 */
|
|
{ { 0x6516f6210e18ec42L,0xb967eb43df8c26bdL,0x624ee27e69addc2aL,
|
|
0x34019d6339063252L,0xb317fdd3dcd99d7aL,0xc3d566825d314caaL },
|
|
{ 0x04992df3367506b8L,0x13e4ab2e547262b7L,0x35f130352e287d3eL,
|
|
0x92e0a276211304d9L,0x94e7129417133d22L,0xb35302275fd71a28L } },
|
|
/* 42 << 105 */
|
|
{ { 0xe1d9273c9ae60111L,0xe86aeac3d01243ecL,0xc7257b27fa5989f5L,
|
|
0x57737dc89807d3ccL,0xe1ef78526937551aL,0x74ab9edb15dd2d58L },
|
|
{ 0xbc47b23cc59962fbL,0x376ff30fd3bba76dL,0xaf0035872788ab98L,
|
|
0x1e475c68619b472cL,0xd79984c89c6a9835L,0x5ceafba510219a94L } },
|
|
/* 43 << 105 */
|
|
{ { 0xc25ae81155d238d9L,0xf2a21fce4ba4456fL,0x4ebe44d0bd1a440cL,
|
|
0xe821687f83d958beL,0xb4ce63423ba09f9dL,0xf271435d139048bcL },
|
|
{ 0x2a3db37c99c6412eL,0x50cba09ccb36dbd0L,0x9e5231aef6e65cf8L,
|
|
0x48e9105d90118a6bL,0x2d58d372368144cbL,0x48702d59928575baL } },
|
|
/* 44 << 105 */
|
|
{ { 0xc71ce040d1c9204cL,0x8ad09d7373f7686eL,0xbcc6d88dc6fcf31dL,
|
|
0x22a0b71aaf428ad3L,0x7767944847721255L,0x2b720c7e316b808fL },
|
|
{ 0x3128a7cc5ed45b8bL,0x9744c6c0f79fa1c7L,0x738e94efd22728d7L,
|
|
0x8a652496fff8f874L,0x0e4a5ade566c9751L,0xfcde62db64e3199bL } },
|
|
/* 45 << 105 */
|
|
{ { 0xb068ec91aa63f5fcL,0x547e7e471a29ddfbL,0xe3e5de42b17b8e5dL,
|
|
0xb5c84f27264d1361L,0xa68d10a426432715L,0x4f31e81c23e48e1dL },
|
|
{ 0xe32bea6116dbe185L,0xfaeab7256d1d34feL,0x0ee437cef3a8ca7bL,
|
|
0x2b8657a2f458446bL,0x8779a3d4c52e3dcaL,0x243d7d0e71654165L } },
|
|
/* 46 << 105 */
|
|
{ { 0xc4a346b2de23afe2L,0xf8e00f790fac7ba4L,0x22393604ab76b7d8L,
|
|
0x109233d7a06efba8L,0x5bf89334c7bf56a4L,0x27ed4a28135d4cabL },
|
|
{ 0x07851ad2e32ca02fL,0x41b7ffa630c97f29L,0x383b3716e4457ccdL,
|
|
0x6ce8645b0b43a50fL,0x73c82018fc5b907bL,0x79a1467381bbcf0dL } },
|
|
/* 47 << 105 */
|
|
{ { 0xcf5331d35e092e41L,0x7e0b9fdeb43e3c15L,0x842a971182841f82L,
|
|
0x2d837c810cb9d1ecL,0x6aff6d6873095ddeL,0x2a7f6f40c9478ef3L },
|
|
{ 0xb6e8ac80a9976e39L,0x3853fa5474e40024L,0x664b159a6d87c1d9L,
|
|
0xaaedf4b4b20b5d11L,0x8a1ac277c5819de1L,0xf10276dc6450b97eL } },
|
|
/* 48 << 105 */
|
|
{ { 0xa8d7901c7c16c09bL,0x628ff3be42e1948bL,0xb905d7c504e4bce1L,
|
|
0xdfbf9c4e5ab0696fL,0x0f4e6e2ab6db9cd5L,0x4857e570482e40feL },
|
|
{ 0x5ccd9b421c3beed4L,0x171b085fae51a947L,0xcebe0dbe59065754L,
|
|
0x4d052d3a461c1620L,0x396bac422fe541a7L,0x8e714cdb70bf32d8L } },
|
|
/* 49 << 105 */
|
|
{ { 0xed82f15e6ca1cdcbL,0xc5ae5cde51b9a9cbL,0x3b2f78cec70c475eL,
|
|
0x0f22d10b4243c675L,0x1db96885facac4c6L,0x2fb7884817df2f2cL },
|
|
{ 0x25fb9f4e990f3104L,0x1416733ecefa14f7L,0x3a33828384a5dc24L,
|
|
0x6d75d3d02564288cL,0xf7bea8b69b93e62aL,0xa5ea8695349f1740L } },
|
|
/* 50 << 105 */
|
|
{ { 0x38feea7115e711b8L,0x129aea564accd3eaL,0xc53e54c412b23539L,
|
|
0xb15bf11a2b280c59L,0x5ea76f5782d44df5L,0xea79f833d4ac1af8L },
|
|
{ 0xe547deba08330c6dL,0xbaa89422663ef402L,0x17263762d215a5f5L,
|
|
0xb9509a19c02b5f9eL,0x9bb99fcb025caaccL,0x43f4494b25f24089L } },
|
|
/* 51 << 105 */
|
|
{ { 0xe55e592c98563c70L,0x4e62ace5d013c82aL,0xb6025ac16fcf7380L,
|
|
0xac4a8157cfdff8b9L,0x1fa181344497acf6L,0xdcdf05c0ef09d3e9L },
|
|
{ 0x7a65490d83d8e716L,0x2aee0b35e98c46feL,0xe62381dc7d6d4035L,
|
|
0xc7162b78203975c0L,0x1079d8b6aad2c021L,0xe3e1cb4370c98838L } },
|
|
/* 52 << 105 */
|
|
{ { 0x3ca01799f04dd97aL,0xd6d1d41d3f9e03f3L,0xac2713eda55fa375L,
|
|
0x2bd440556a89a5e5L,0x8582d98458f5c269L,0x7f9b3527fb31fc27L },
|
|
{ 0x23f91951d810580dL,0x99303919360a3debL,0xfaf10326b5e1eea8L,
|
|
0xf96feb4838ba5ac8L,0x1508b1002a639622L,0x0766a1019dc93c78L } },
|
|
/* 53 << 105 */
|
|
{ { 0x0c79d40679a0290cL,0xc09bca0c57eb7a00L,0xf7274ffc163c1dcdL,
|
|
0xd64ec461bb2c83c4L,0xff3b83efe9ee350bL,0xa490157d01882c72L },
|
|
{ 0x626e1f3d3312310bL,0xd2097e03cdd5d62cL,0x705c3fcadbf659c5L,
|
|
0x2dc1d7cc810fa413L,0x6313192ad67d58a8L,0x6e1e5bc3597f63a6L } },
|
|
/* 54 << 105 */
|
|
{ { 0x6100535ea0d42639L,0xb126e939d921369dL,0x2d4c826e4999e42cL,
|
|
0x159063c6f62f77e7L,0x063c42914e632555L,0x8d3ee387b35d8220L },
|
|
{ 0xbd951cff9b2bac3eL,0xd9b943f1bc248755L,0xeee7017ad3a6074cL,
|
|
0xbcb9e0e6b0872a21L,0x26d80e0949dff656L,0x2ad7d4e335fbf620L } },
|
|
/* 55 << 105 */
|
|
{ { 0x6ce5840df7f9503fL,0xb96f82996abf4f6bL,0xf71f33853ab55fcdL,
|
|
0xe347e891e83a8109L,0x12c5dcdeeb48f0faL,0xb0f02553cd7183a9L },
|
|
{ 0xa7d74862c414f01fL,0xbea40c5cae369360L,0xbe9785e5022d5192L,
|
|
0x1a3224a50d318251L,0x4d7200093fcbceebL,0x1fd71167c2976f6dL } },
|
|
/* 56 << 105 */
|
|
{ { 0x03c88a8566d2ee47L,0xee8e5c34455ee428L,0xd90a3d393870d90eL,
|
|
0x2fd78d14f2fdb976L,0x9472a6066a312a30L,0xea68e2283484af2fL },
|
|
{ 0x7cf25951ac9e5cf2L,0x024f07ee37a28e95L,0x5d479379e563a2bdL,
|
|
0xe87b50a4b46e93d8L,0x9128fc11f137285cL,0xe46efdf77c67d7e6L } },
|
|
/* 57 << 105 */
|
|
{ { 0x4050036c7cb0b9a1L,0x8560750c1161d7fdL,0x4d293a521b247ba9L,
|
|
0x4b25e54c8f1b9d31L,0x91c89139c5baa0aaL,0xa2f75f9f2202b7e2L },
|
|
{ 0x6c0915dd4d2d1388L,0x575d90f703717fd7L,0xd90c059b03e0626dL,
|
|
0x7004305ba4239e8cL,0x39fb4e2e989775e6L,0x20c31fc8d8a239c6L } },
|
|
/* 58 << 105 */
|
|
{ { 0x4de318054ab51b84L,0x4a68443c6aa00707L,0x2c3637f05b317f3bL,
|
|
0xb8ea6f87c0fc14a7L,0xcd0cb4fca2cc6af8L,0x6b5fc899317083fbL },
|
|
{ 0x1b8f160956e6dfa1L,0x698299ed92b77d20L,0xdb84ab7f14fc3fc1L,
|
|
0x944666a35d5fe625L,0xe9a3448d7e064ab0L,0x53f62fa01abe1440L } },
|
|
/* 59 << 105 */
|
|
{ { 0x04bc8a2bc8c676b8L,0x502a73144a577562L,0x494d01f11ff01f9dL,
|
|
0xfe648df164d98f70L,0x80bed0d849719dd3L,0xb77a8f09c231e190L },
|
|
{ 0xc8aa8daecc011818L,0xf313be4f5918814eL,0xf28fcb74488b5bfeL,
|
|
0x71e23b19b3345c98L,0x1cfb7c0596eba9beL,0xa88e73b941c61971L } },
|
|
/* 60 << 105 */
|
|
{ { 0xdc7050459cfd4295L,0x1cc9648eedeea59eL,0x88f4af1c0e9ca92dL,
|
|
0x45d0b53f69689317L,0xa122a6dd41c04186L,0x9df54c3a277fba1aL },
|
|
{ 0x1efc55a5017eb9ccL,0xb253f7b661d1ecd4L,0xd03f8ec6acfb7854L,
|
|
0xf641e5f49f338dbaL,0x6b6a680a3a3addbcL,0xe80babb5b5cd058eL } },
|
|
/* 61 << 105 */
|
|
{ { 0xb48da67307873319L,0x53309cdf3bf5db9bL,0x1bc510e64ee9dd11L,
|
|
0xbb8e529a7388950aL,0xc9c0ce3c7f6e6175L,0xd75753f88a290784L },
|
|
{ 0xfebdd94ba80acc08L,0x942cdfebdc846b30L,0xbb64799f6ca7099fL,
|
|
0x40f03362d1326fa8L,0x95b2d9db97b62e9eL,0x5ad9ce165301d9aaL } },
|
|
/* 62 << 105 */
|
|
{ { 0xaa5fead9dfc59ef1L,0xc1348e98b2cc1e9aL,0x83dd617e77bda968L,
|
|
0x0fdcc0837c8997dfL,0x9206ae234cc62b01L,0x88aec92f417678dfL },
|
|
{ 0x9d399af791fb8920L,0x399eebd13e8a22a0L,0x32f3bba735bebdf3L,
|
|
0x354c1c5004c2f32aL,0xc2d6b5514052c926L,0x16a1f71f656a7eebL } },
|
|
/* 63 << 105 */
|
|
{ { 0xd7a755bc14a8c57bL,0xa97b901341ebec55L,0x88b88459143a1a9bL,
|
|
0x7aa178cc7e19e3e0L,0xb8359634635dfb65L,0x63fd26c7c169e28aL },
|
|
{ 0x89d9090d953272f5L,0x63e571196383845aL,0x0e26c0cf886a1f1fL,
|
|
0xda56332db7057a29L,0x6b5d303f7a459c6fL,0x3c351b771bb704c3L } },
|
|
/* 64 << 105 */
|
|
{ { 0xda2b0725bb296c27L,0x1f22ffa4d341171bL,0xc721e35a5b132756L,
|
|
0xe5695e84fadb6907L,0xbc5a3bf4c283f546L,0x9182cb3edde128aeL },
|
|
{ 0x179c7fa66592e05eL,0x1e604790f38e8586L,0xaf7e83bea16bad55L,
|
|
0x6f41231e9137ecd8L,0xac87543d8f30d1abL,0x630a9d87b1ee0ee8L } },
|
|
/* 0 << 112 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 112 */
|
|
{ { 0x359cbfa05e4f1914L,0x6992cd48d922176aL,0x2fd5e90f630cbcb5L,
|
|
0x2b0f61306ddbf238L,0x5070970a3af753e6L,0x433d009441727016L },
|
|
{ 0x2eb15b3b9dca97e2L,0x3a7379cd00d96875L,0x0d4374aee930a75cL,
|
|
0x3cd36046849e7727L,0x9ac3117e336a19ffL,0x2d1373c9433ddc04L } },
|
|
/* 2 << 112 */
|
|
{ { 0x985dcb43e4362d67L,0xecb860c2a939bea4L,0x40597f3055fbf1d5L,
|
|
0xb6d166bf43fcd98aL,0x5932570915ec99caL,0xe05ae3b9c5bdd370L },
|
|
{ 0xc18f78270c7b943bL,0x84bde9c64dd572ccL,0x5d50a89df478e56bL,
|
|
0x242c2f4864d29053L,0xcda12c6161cf7e0eL,0xf8b6890eac8d1d40L } },
|
|
/* 3 << 112 */
|
|
{ { 0x7a9a9dd7b6b11af8L,0xac4c50dd16a42f8fL,0x1550267b6726c324L,
|
|
0x12cfb2fd7f841afbL,0xa41b19052f046430L,0x8f5f5373b7d786cbL },
|
|
{ 0x7b61b39c729e09fbL,0x07a5415f2626da4cL,0x65d6efb84a348905L,
|
|
0xf377862cf2e864b9L,0x3c94000dab96cdb2L,0x2176321a8efef0f6L } },
|
|
/* 4 << 112 */
|
|
{ { 0x8c558000c1c1bc68L,0x9e48a67a83fd6ca6L,0xacf0d75ceb7a35cbL,
|
|
0x0fbdce4cf0a93110L,0x82b2d13a9cc50c85L,0x696fd259cef70d6fL },
|
|
{ 0x1cc9be2e457b88c2L,0x0d58b34b1f04c0bcL,0x52bd479f195a532bL,
|
|
0x769fe6ca1ab3605cL,0xba6a63e48a24c1e0L,0x86dea46299da5d7aL } },
|
|
/* 5 << 112 */
|
|
{ { 0xdf2a6cecd24790f3L,0x37bfbba7b87ca06dL,0x7c8a7e4c0de8a6aaL,
|
|
0x5c806b94be7b8f5dL,0xccca1c714fda3e7eL,0x3c1cbaf9cff788e5L },
|
|
{ 0x17a081a9565d0464L,0xc4eb995713ed1b82L,0x0d7c90549e4cfac7L,
|
|
0x6fb74c629d53a200L,0x65b9ed6d5f977a8bL,0xe2279cec0ba2e7c4L } },
|
|
/* 6 << 112 */
|
|
{ { 0x8435e2962d4412dcL,0xa36cbfef972350d8L,0xe2fe6e6fece5cb15L,
|
|
0x6f249b095336f7ffL,0x5801feb9908ee267L,0x7649a837fc8f217bL },
|
|
{ 0xfc1adc3ea0ebc808L,0x1ef06bec94f08075L,0x4afb5404cc1d9b72L,
|
|
0x75cabd61a1f2c5a4L,0x2bd797e1cd08f195L,0x4f1b5cdecbea0f49L } },
|
|
/* 7 << 112 */
|
|
{ { 0xe9759aa9e7aa87e2L,0x2d54a5fbe5909f55L,0xe49a59aa2c80bb61L,
|
|
0xdb89e21230c9b328L,0xf42b9adb004ebffcL,0x4471b983479678e4L },
|
|
{ 0x0dde5b0e97709e2dL,0x2f35c653a12bdb85L,0x9f8d7a5cd8c8285cL,
|
|
0xd7cde5971d156206L,0xdbe765d7a8e126bcL,0x2e645b6de3f4e60bL } },
|
|
/* 8 << 112 */
|
|
{ { 0x509abccb65682820L,0xfbfa1d094ff86137L,0x1ae371bd640bc2f6L,
|
|
0xa155c2978f546c68L,0x8858cadcc08b8cbfL,0xafac5b0a1d96948bL },
|
|
{ 0x919cb22682e25016L,0xd147df4ab064ffc3L,0x25dd0f1ab4abe560L,
|
|
0xc6bbe6369cb75bd1L,0xbb367cf947a778e4L,0x5714aa4dbde524b3L } },
|
|
/* 9 << 112 */
|
|
{ { 0xce3c8218e61b1439L,0x8be5a9cb67f79d28L,0xb1bd1386d5164b35L,
|
|
0x0bc24d96b9adbac7L,0xbcee4f0ec7482414L,0xac15b5b66ca5d49dL },
|
|
{ 0x79caa999f20f9a50L,0x89bfd652a911308cL,0x972fe26d15245a7dL,
|
|
0xd44d0f6e1d0d2939L,0x6749beaedd439057L,0x02627a6ad4b6f416L } },
|
|
/* 10 << 112 */
|
|
{ { 0x7e882e8cb437b791L,0x9afde25afbe334cfL,0x60184381da52f9fbL,
|
|
0x935d33a1001df73cL,0x38f303df080682e5L,0xd9cf2c1f4e9a29b2L },
|
|
{ 0x889d265e00d9208eL,0xfc1cc2221fd8e817L,0xdd14f1a2ec71428aL,
|
|
0xe81cc4f9d9e973aaL,0x26a154963696468cL,0x0620fe6409d546acL } },
|
|
/* 11 << 112 */
|
|
{ { 0x06ed3e64166be92fL,0xe1da6e27c51ea53eL,0x784f2514acb2b245L,
|
|
0xc544e50f8e24077fL,0xad449938c5c01787L,0x5d9ef8d527d41dd7L },
|
|
{ 0x37114064e15d4a96L,0x7f0c92aa1dd45321L,0xc1f11d56b9c72ee5L,
|
|
0x91f3b3f7a78e6d3aL,0x0cf440b0c9488cf7L,0x14d3defd93df403aL } },
|
|
/* 12 << 112 */
|
|
{ { 0x3fa4ea0225aa1d44L,0x22c68e17f74a6a3aL,0x351bcb80f489e72dL,
|
|
0xdabdf118be0268edL,0xa3bf9e1984d2cd16L,0x318506a2d67393a4L },
|
|
{ 0xb0c6b2d8615ed517L,0x42ac507c3dcba0f9L,0x60570dfb51235e30L,
|
|
0xc677628dedb033e4L,0x0290c22766e61f76L,0x1d8450d09888943fL } },
|
|
/* 13 << 112 */
|
|
{ { 0x1b8f5ed7155a3daeL,0xc9d2433aa46ed72bL,0xe99c7fe38ca361fbL,
|
|
0x606b08c19626fe7bL,0xe6447257c0ea792aL,0x5839e2c62e1156f3L },
|
|
{ 0xb73135dd5eab6d41L,0x200f2e488ef63584L,0x4c73885ddda1c49eL,
|
|
0x8d606a75b5428ee9L,0x2a73cc7aa62699dcL,0x484a58941c6c8de5L } },
|
|
/* 14 << 112 */
|
|
{ { 0x2365b4150decae0cL,0x9c8567ece8583741L,0x35d6cfae6d8842a7L,
|
|
0x4e6c98e6dd0db8e4L,0x584524e767b34d02L,0x786ea52f554c6117L },
|
|
{ 0x8952ce169320725fL,0x8eb7f91854c4c8f2L,0xdd34f77afc799251L,
|
|
0x76b8c3173e05d37fL,0x664cbddcebb4d365L,0x31ba98b90dfa1a98L } },
|
|
/* 15 << 112 */
|
|
{ { 0xf113a7bd651c186fL,0x417bd7373737a50aL,0xddb40d201b858249L,
|
|
0x62a60745345f5b45L,0xf0a03f5c2d4e221eL,0xcafde67cc64621a2L },
|
|
{ 0xbbbfaebcbc3c06c3L,0xadaf9a16b8383dc0L,0xcd21aa308f343ea2L,
|
|
0x64cefec0d890128dL,0x2ed9b8f763b44054L,0xc0a49e2917c0ffcfL } },
|
|
/* 16 << 112 */
|
|
{ { 0xc6307399166915dfL,0xb35545bc5da8a26eL,0x8e0126aae3a99321L,
|
|
0x0fbfdf76da9308d1L,0x2163ed6b6168e505L,0x71f3d0087500d8bdL },
|
|
{ 0xf57159605ac13f65L,0xc1cd9a6755172d5bL,0x6b225f7e53d84c65L,
|
|
0x9c031269025029daL,0x54c1edfa17d89aedL,0x5b0238786b435150L } },
|
|
/* 17 << 112 */
|
|
{ { 0x96d69db1146abf28L,0xc924454924d221dbL,0x7881951c137bdfe1L,
|
|
0xde2d490dda51f789L,0x6033c2c34b0a1e0aL,0xbe214d8c08dac13eL },
|
|
{ 0x3d5abfa9a5a1d055L,0x3433060f6fe02a62L,0x88608c7ba37f2833L,
|
|
0xfd2da6f0e74dd6c1L,0x27c22c17fe000000L,0x04a1f15bcfbde005L } },
|
|
/* 18 << 112 */
|
|
{ { 0x01204485f340b522L,0x588a9e1c9367a099L,0xb3d1a4b466005913L,
|
|
0x522ac504d55cc36fL,0xa6c80e511b72eabaL,0x15025a7acaaa89b5L },
|
|
{ 0xc9166912bec1a986L,0xe78e9642f19044cfL,0x230d51ab4756908aL,
|
|
0x6795942aac04cb90L,0xcd2cc9eca2a92818L,0xfccead967cf52961L } },
|
|
/* 19 << 112 */
|
|
{ { 0x32fa291d52ccf481L,0xbb137ef901ac0eafL,0x13ce2183011746abL,
|
|
0x7e64248677bfea0aL,0x67cbba0e5e7e5032L,0xc900998a1f2b69fbL },
|
|
{ 0x62ddd91aab3256afL,0x1f0f216911d7996fL,0xab2f2d540e4dd4feL,
|
|
0x05b577a92ec64ec3L,0x8071e88708ef233aL,0x9be1f8d60e649a5cL } },
|
|
/* 20 << 112 */
|
|
{ { 0x5f78334137732664L,0x625b85dc840b6f8eL,0x7dcb3d256cdf0959L,
|
|
0x87a5ae19d4ce1845L,0x43bf0721b0dc016aL,0x6569ad52f6a5f6f3L },
|
|
{ 0xa2697f15560ab87aL,0x4c6fd1a0060dcd57L,0x652a7732c3167f56L,
|
|
0xe355fef05294a5e0L,0xf7b3177dcc59c562L,0x511c96dddccf4b1fL } },
|
|
/* 21 << 112 */
|
|
{ { 0xec768f587622c0b9L,0x7c9eb5490416afe7L,0x3c3d87f55795433eL,
|
|
0x74eff3cba4611446L,0xb2c79249dc7037d3L,0x70062ebd8bb1fc42L },
|
|
{ 0xbd0d3532a4ad91c8L,0x42411c139f5ee0c3L,0x11c4ee91132470cbL,
|
|
0x496438979fb2a135L,0x4c1df7e0ce2ec891L,0x689cda57e16f7413L } },
|
|
/* 22 << 112 */
|
|
{ { 0x3b42838a2a0030a1L,0x3f37587ae05ba56eL,0x6382a86f44c16650L,
|
|
0x6c1bc67da6f9f136L,0x7d152d907ada0f41L,0x9115319d5c40c0f5L },
|
|
{ 0x1143028632f58e3aL,0x5dcf7ec7eda5c5a2L,0xf04404a9f334a0b2L,
|
|
0x75e0b4a84ec2cbd5L,0x86e89728d079dbf0L,0x796700799a99c605L } },
|
|
/* 23 << 112 */
|
|
{ { 0x98456a79b1d2a3fdL,0x4e8ba91e6dd789e9L,0x8e0bfa33a435226eL,
|
|
0x42bea2f48cfea5ccL,0x5ca5fb0321b14602L,0x73faac5826877b13L },
|
|
{ 0x0ddb6ea203905ebbL,0x67bc35f1698cd7abL,0x24da47d85d9af735L,
|
|
0x1a2a7c1dd786000eL,0xb35fb29e23ccaceaL,0x1c063466bf1f51a7L } },
|
|
/* 24 << 112 */
|
|
{ { 0x1e7ae1601e94d949L,0x177dc53ee78e6221L,0x8af29d8f7aeb9882L,
|
|
0x2d9a60fd9e3f3906L,0x6979fcd6df962156L,0xdd2fe5887e1e54b8L },
|
|
{ 0x9cccf31076643453L,0x94ece1a84e0643d0L,0x745449cbc111d8cfL,
|
|
0x872afa4ae6cfbd97L,0x5c27b7ca10dfb34eL,0x505e62bc533480feL } },
|
|
/* 25 << 112 */
|
|
{ { 0x6dd2007363141676L,0xdb099810c5c4c657L,0x2bbbcbaf8c369f32L,
|
|
0x339e3ded08794178L,0xcc362a32315c4cd7L,0x5d288ff37dbce794L },
|
|
{ 0xafd05d104d0cb6c6L,0x3a6dcee9d386c7dfL,0xa207dc17e311ee74L,
|
|
0xc5794286abdc751cL,0xf45136e5d889b985L,0xb25e84638d8f32a3L } },
|
|
/* 26 << 112 */
|
|
{ { 0x8711ebfd1dc32f77L,0xfc0e851f3933d758L,0x90b679fd64a859f3L,
|
|
0x0914a975ef37a81eL,0xcef80495d675c502L,0x862d3b65be18c403L },
|
|
{ 0x0d53f957305b4aa2L,0xe404f2570e5bcb47L,0x833a8644854b6b63L,
|
|
0x5709f53b99f8d3d9L,0xc400dc1f13893effL,0x75ca01714c65086eL } },
|
|
/* 27 << 112 */
|
|
{ { 0xdaaf8e76eeceb904L,0xbce9ca54b9e31f92L,0x4442d0c88d06a58fL,
|
|
0x5966e1e5eda0ee34L,0x043125f058edc555L,0x44d0311749cf0931L },
|
|
{ 0x292aea12a99ae5c2L,0x1e9be1702a2bade4L,0x003ec2826b21b444L,
|
|
0xc158f3cffc41d601L,0x25a839f4c4b3f4c7L,0x4a36bec399e64264L } },
|
|
/* 28 << 112 */
|
|
{ { 0x829bbe7e04e6bda7L,0xc52b64ded3e667dbL,0x98aa40ecaa2fc128L,
|
|
0x2c6997d011fbef94L,0x70ca76aa97c8167eL,0x558f8ce7b1083886L },
|
|
{ 0x5c621e35d250f064L,0x757710f8f535b2c7L,0x5d118d8faa69ee95L,
|
|
0x02ffe667b27cd9deL,0x65711ac7d13e51fcL,0xdbbf16278cb1a1c7L } },
|
|
/* 29 << 112 */
|
|
{ { 0x3c2fcbceeab0bb77L,0x569d6c7e4e1b17adL,0x22e06899b0518730L,
|
|
0xf8466d9d19f809e9L,0x372e254288359d10L,0x8074483532d5bb82L },
|
|
{ 0xc88727d566060945L,0x08e9246572a0d38fL,0x84ca145c9f84a861L,
|
|
0x8363463c1c004212L,0x9debab72bd3ad87eL,0xce68c150a988e65dL } },
|
|
/* 30 << 112 */
|
|
{ { 0x1c172e5ea71dbae0L,0xf7794eb19b80bf40L,0x3007c5705d7d2829L,
|
|
0xa8d44d6fcc97cf00L,0x093a9784f6abea6bL,0x2ac4a67564cca46fL },
|
|
{ 0x14fcc56350d8fc8bL,0x53133983a11ccd07L,0x7cf09bf68e6b8f26L,
|
|
0x49f864d57b06e3adL,0xd526a765c373fc6dL,0x7af297c6151305d5L } },
|
|
/* 31 << 112 */
|
|
{ { 0x18f941bfcf7c1eb5L,0xda10720a130163b7L,0x3c4894f46bd9bb34L,
|
|
0x7575087bc8ca64f1L,0x68c424852c8f3798L,0x986214eecf0e5839L },
|
|
{ 0x3723b713df2b0b90L,0xd81560d5d229bf8aL,0x0204ae5ff993078eL,
|
|
0x55206d9186a14833L,0x8c7d09181557fc96L,0xe2cd5dcdddba9705L } },
|
|
/* 32 << 112 */
|
|
{ { 0x009ef80aae238fa1L,0xb41d9b24486af6b5L,0xab4455ed685add95L,
|
|
0x18f323f672c7dac8L,0xe7009790e372f168L,0x4d5bcba6067bea99L },
|
|
{ 0xf15bdbcc51a2a9a9L,0xde7e4f742fac9169L,0x2fd62c304bdbec36L,
|
|
0x8b3ea93d1b3ac6c7L,0xce1c8e5c9c293889L,0x19664dda11564f8bL } },
|
|
/* 33 << 112 */
|
|
{ { 0x207a738245406afaL,0x7c1c398d1675bc91L,0x2ae99d8ba1bb7a43L,
|
|
0x63f134e8c5e176e5L,0x4a624a1c48364268L,0x471974f1de65c5deL },
|
|
{ 0x44932063ea90b0cfL,0x13ba5019d8fd7e30L,0x6281f71348510422L,
|
|
0xdaba3f14bc1a523aL,0x333e5eff924cc5cdL,0x861ab150e9113d1dL } },
|
|
/* 34 << 112 */
|
|
{ { 0x332d308dd9b9461cL,0x3e9b4a95b7014261L,0xc557f608c2beeb5cL,
|
|
0x9ee927187c8531d6L,0x55ff3dfcc0002ff0L,0xed96119eccd9b325L },
|
|
{ 0xd779ba03fb92416bL,0x63b75d351416be79L,0x793cb1fbfc9ad27fL,
|
|
0xcc762a5b87f1bc59L,0x6e7a23389bbb07d8L,0x99b6e278aa7bfa44L } },
|
|
/* 35 << 112 */
|
|
{ { 0xeb142de02bcce03eL,0xcac04711577565e2L,0xa949c7350ab07328L,
|
|
0x8f15874cd7d347ebL,0xade8c67a696dc9f3L,0x039e6b7c66a7bcadL },
|
|
{ 0x1260bd4acb8cb9d2L,0xdbf05496d4801bcfL,0x6b37a4d30ffb845eL,
|
|
0xc3968fe150b50889L,0x261e82f4525c6a7dL,0x539f634912aad50bL } },
|
|
/* 36 << 112 */
|
|
{ { 0xcb1a9d2ceae4d774L,0xfdec2ca998a0775cL,0xa538acbd0eab9e25L,
|
|
0x6901ebfd04dd34b0L,0x998ab679ed4c6409L,0x69b1d7ee0235b865L },
|
|
{ 0x4f2e6e5723ac3be6L,0x2b2072aed4a00479L,0x5c12fcdc2ce2f059L,
|
|
0xfc688c45ac329db8L,0x16d377a51f539427L,0xebe4e2cfa08ed9aeL } },
|
|
/* 37 << 112 */
|
|
{ { 0xb394214715d60238L,0x60d8909bbe9d4febL,0x013827b78654e16cL,
|
|
0x465b3078824fc55aL,0x361e6523e3fcd6c0L,0x2ef44d80ef88b307L },
|
|
{ 0xdca7809fbeb2db77L,0xe649d591da97468aL,0xad6079b77c28ff0aL,
|
|
0x6a21ce1ac4897775L,0xde876f7b5a592fd5L,0xced421a585a1dd36L } },
|
|
/* 38 << 112 */
|
|
{ { 0x9793bdf6a045a442L,0xdb3c60472713ed37L,0x9929d32261344a0bL,
|
|
0xfb48c2dc831af45cL,0x730226df53a8a077L,0x3a5baf8a18876559L },
|
|
{ 0x99736e7d8e11f9edL,0x3e7663dd0c09dddfL,0x368a29ed89b8a23dL,
|
|
0x5443d7f5d3a68663L,0x0b84b464c6302455L,0x235c6eb5cf088847L } },
|
|
/* 39 << 112 */
|
|
{ { 0x13307013b8de0a3aL,0xfb10e919f592fd9eL,0xd09e5b2571401ec7L,
|
|
0x6e8091c11d94cf0aL,0xb7d79fc74193b129L,0xb842a3695f2c05e5L },
|
|
{ 0xcf6fc6cbccdc7614L,0x77d6408180102a3aL,0xde4b9304f30c3488L,
|
|
0x4fd9f8d89bd08e48L,0x58ac01245963b063L,0x1f11335c747fac66L } },
|
|
/* 40 << 112 */
|
|
{ { 0x5f266f13175418b2L,0x6bd7a86903a626f9L,0xc7b532304a6f11caL,
|
|
0xa216b056bfc8ccedL,0xa274d5d8b288cb7cL,0x6fc4a35d924897adL },
|
|
{ 0x1ea532eb81fc6940L,0x2fcd817e2acbbc45L,0x45eee93f67814fa3L,
|
|
0x3b3da48c1229e035L,0xd049a976efd8e3d7L,0x8087dff7bf81f314L } },
|
|
/* 41 << 112 */
|
|
{ { 0x9ccd802fbddea807L,0x08a64e86d93b97f6L,0x422c0f5602f04e3cL,
|
|
0x25aecab133900990L,0xcdb2c5c15d4b4d2fL,0x849a6b1f5f43e42eL },
|
|
{ 0x4689b815446e7361L,0x49abaf6ca681fba0L,0x304d84b18289a564L,
|
|
0xa6529d430b779df3L,0xca926da67b51b195L,0x3640dde5c829ae84L } },
|
|
/* 42 << 112 */
|
|
{ { 0x747235495424e1d0L,0x3861ae65c85af64fL,0xc56ff12baab902c2L,
|
|
0x9aeb9e154fbf264eL,0x14e3c13942ca40d2L,0x6c26da41c1ba0250L },
|
|
{ 0x97a6031df51a0967L,0x88fea7710e623393L,0xcafae4c778574eefL,
|
|
0x2c4c281198119f28L,0xd190fc749276d971L,0x843f4baf9273f01cL } },
|
|
/* 43 << 112 */
|
|
{ { 0x1b2d643de50ad79dL,0x1ceaee7ed3075486L,0x13a003f3ec287aabL,
|
|
0x09a4a825e8c7aeddL,0x93babe5ad1d4c05cL,0x8115bfec95ab084cL },
|
|
{ 0x629e8e0a289ebb8aL,0x923167a9bd992f77L,0x440edf75ae16ce72L,
|
|
0xa67dd37b0a0019d4L,0x174b341978b0df8dL,0x010746a5ad6e4c60L } },
|
|
/* 44 << 112 */
|
|
{ { 0xed05e4bf8342da4aL,0x36d881f3b565f0f2L,0x3fbd04e1411e627fL,
|
|
0x40ac13cb0411889aL,0x9f6006cab5b25fd6L,0x0e79d377e31404ccL },
|
|
{ 0x9fd6474a5af3ea01L,0x89d7ddcb2a27d905L,0x2c1beebada12e71dL,
|
|
0x3ecb11e1833eb7deL,0xa348b2f6600eb1faL,0xc227192183f2657fL } },
|
|
/* 45 << 112 */
|
|
{ { 0x2cfaf519e32ba792L,0xa99113d7f929b512L,0xd347f7d18f554e19L,
|
|
0x18f0374f098a2ad8L,0x073855acc174e0b9L,0xf155c6c009324c23L },
|
|
{ 0x3388c39605d1e427L,0x144356a9d39221d1L,0xe3d4ffed492a84adL,
|
|
0x519c65e6d1e53c29L,0x334f470a2813c717L,0x69aa0a1de0a400e7L } },
|
|
/* 46 << 112 */
|
|
{ { 0xd8689c9c39e70b62L,0x2b87157e6cd86fe6L,0x53d55de887c0f35dL,
|
|
0xb2d7141de09aa44bL,0x3499553084fe7c21L,0x4550096c16b19be0L },
|
|
{ 0xb0a8ce05b856dac0L,0x570223450e211887L,0x8d4a7431aca17401L,
|
|
0x96bf439857400a0eL,0x1e849d365ffd5f34L,0x7e70f6253a6d23acL } },
|
|
/* 47 << 112 */
|
|
{ { 0x511ad0024b4ecd64L,0xd2287a28f37bf796L,0x801d2c2dcbc1f22dL,
|
|
0xf0d3a6944df568c8L,0xa7fec550af6836b0L,0xa27dd6e887a426c7L },
|
|
{ 0x2f730e5b59c6b695L,0x9df438ee93ee2b36L,0xc4def9eaf2cfc4c6L,
|
|
0x82ddcca0a209814bL,0xb2e1de4f6dc916d3L,0xc6798e7453f81a55L } },
|
|
/* 48 << 112 */
|
|
{ { 0x77faac22bd366155L,0x13cc4038282f11b5L,0x31ad1dd45fbd35abL,
|
|
0x7e0de9da45d6d40eL,0xa16c5f1939749ef6L,0x761cd6cf85691cf2L },
|
|
{ 0x156536ad4d59b802L,0xee98dc4187c4b11dL,0x165a1eacd35088fcL,
|
|
0xce8a733538fb995cL,0x34d0d3313293b3a5L,0xfcf548ca8b570e79L } },
|
|
/* 49 << 112 */
|
|
{ { 0x4c4bddca99e8cb05L,0x2b900ed017c5be91L,0x0ba0201b40adbfc1L,
|
|
0xb5098cf8534595ecL,0x356e23ff80f56f69L,0x8b3fa12e748555a0L },
|
|
{ 0x9063437677b8ebdbL,0xe3eb33fdf040b6a8L,0xcc5b699539b611ceL,
|
|
0x20171523c693be7eL,0x5c4364d760849cf0L,0x30f3376372c4d303L } },
|
|
/* 50 << 112 */
|
|
{ { 0x0757295022a8c8e0L,0x6e05715866ca81ecL,0x7e8e36890f804bc9L,
|
|
0xcba813a191b99207L,0x3f11f7abe50ab65fL,0xaefe5479b6d05954L },
|
|
{ 0x48dd59a1eff5cf18L,0xa623b738bda11ecdL,0x586e755818870f08L,
|
|
0xb2c471a50e38ba1aL,0x5b21c42c69ce8032L,0xaf040e6c7943d78eL } },
|
|
/* 51 << 112 */
|
|
{ { 0x6364714c4852f979L,0x7ed7aa310700cd35L,0x9021e46d9376733cL,
|
|
0xf2b65ed3b6de8d03L,0x0e3d00c16652346cL,0x6630fcb75d27e2d0L },
|
|
{ 0x69cc20ded79a1c20L,0xa6d77163be3745e6L,0xab36946379aacf14L,
|
|
0x8bdffbf1b935a1daL,0xda8eb343b63096f6L,0xf61988f13c966345L } },
|
|
/* 52 << 112 */
|
|
{ { 0x06f684ffd31f390eL,0xa1467be560ec98a8L,0x7cbdd03eaa80fddeL,
|
|
0x0ae4d114e204ded1L,0xb8ebeb29a004c3e2L,0xd93cd70726009581L },
|
|
{ 0x3ff2ee49f1b9d3ccL,0x0e69e5ac753526ccL,0x8cb2243e8b13f47bL,
|
|
0xe2c5ae8d7fbfc5aeL,0x8e9af723394a45d8L,0x0b1114dbd92ab8d0L } },
|
|
/* 53 << 112 */
|
|
{ { 0x937d9d2a73f9ff5bL,0x07c8c147de0fd740L,0x3880ead73639b680L,
|
|
0x879d6f836558cc89L,0xf32e14b975bc8c84L,0x278ea5e4bcf6f8cdL },
|
|
{ 0xd9f25ea94baca6cbL,0x676e4bdd44d0ceb2L,0x98042ac190868974L,
|
|
0xdf227f370711b658L,0xcd6d29b46ef0e4f8L,0xd04f5bf88f817e92L } },
|
|
/* 54 << 112 */
|
|
{ { 0xc7d62be78354f4ffL,0xd6fd9d590ac4d9b6L,0x13fbed772b50ab82L,
|
|
0xc4c5be374362b766L,0x5d67bfdd6c59d059L,0x10c93cceac02f34cL },
|
|
{ 0x3bec1f3b72e35ca4L,0xb1cfade159f4820bL,0x679edbcf80fae051L,
|
|
0x6762f5ba6671737cL,0x28b425db3fe77970L,0x4bd6d2ebe778aaaeL } },
|
|
/* 55 << 112 */
|
|
{ { 0xdcbe0018aecd5ae8L,0x7f178b7aedb2a7b0L,0xedb5c805b427179cL,
|
|
0x25fb6a084ba080fbL,0xeb6365165f1b263dL,0x814c520092acb04aL },
|
|
{ 0x936f97a988d94b88L,0x6d54f1768b45e4b7L,0x6321e3bdb0cc515cL,
|
|
0x9118d0318eb5be13L,0x5be9188a8c574e96L,0xcdad43f3f281f19dL } },
|
|
/* 56 << 112 */
|
|
{ { 0x7be5946ea85af34aL,0x420593c9da6fb0e0L,0x40b83c00987f9246L,
|
|
0xac35f4e9a15d192bL,0x1979bd33776a678cL,0x0a7d973e8f6068d3L },
|
|
{ 0x71d322e87e6298feL,0xbb23a29936af9b65L,0x14e2b9706644c50cL,
|
|
0x5f7f207373570bd3L,0x40215c569055538bL,0x91372e64365500c9L } },
|
|
/* 57 << 112 */
|
|
{ { 0x2763961a303ef488L,0xc357c32fbf865ec3L,0x32ca1a943663e409L,
|
|
0x9d9040217de506a9L,0x1f56e144249028bcL,0xd76402e61c5c7cecL },
|
|
{ 0x98dcac65b0dd9d4fL,0x887f6e97532facf6L,0xc0d5d2a123c2cfbeL,
|
|
0x0566bd59d18d8b1aL,0x67404eb1297a071eL,0x10f24d9b26529285L } },
|
|
/* 58 << 112 */
|
|
{ { 0x34808f5ca479ef4eL,0x60effdea9ff10abfL,0x471a077cdae34e0eL,
|
|
0xf34df9562f9d1408L,0x4f8bbffbe46961b7L,0x6a80b0276336a6f4L },
|
|
{ 0x28e57309ca92e5dbL,0x27fbb139ce31cb10L,0xcea87ae28d24334bL,
|
|
0x3781f438de6db765L,0x3328fc09edaf054bL,0xa8acdbcfa94396f8L } },
|
|
/* 59 << 112 */
|
|
{ { 0xa05b72aa83a79820L,0x3210863ccdeeaedcL,0x192d5fdcb76fdabbL,
|
|
0x25ec4568f10c17a7L,0xbd51e31fca556920L,0x8ab534f26a7e40f7L },
|
|
{ 0x2ecb28c041145d5bL,0x4e95843df9038557L,0x65605d17d783699cL,
|
|
0xf728cb1178bddf7aL,0x2d823ae8bee2a60cL,0x02030edb8eb48325L } },
|
|
/* 60 << 112 */
|
|
{ { 0xfe517758aa04facfL,0xa5216df44c421615L,0x4d87767d4f133b52L,
|
|
0xdae81b7699757264L,0x53c1a0e3e3ad4323L,0x2c565bbd53b401bcL },
|
|
{ 0x94d2354fcd54a0e1L,0xf43d0f053f1a02a7L,0x52e7ee4af660b949L,
|
|
0x563ec009bc208df4L,0x58c0b975bf21c4b1L,0x29a8e5adeb029e52L } },
|
|
/* 61 << 112 */
|
|
{ { 0x4c07b3e4283bdd75L,0xcd94d2a385dd6177L,0xc1ab8a5cab097530L,
|
|
0x90301468a5fd9ff7L,0x2a3e5b4064d0932dL,0x77e3b67e435e1c0fL },
|
|
{ 0x3b5d261c14f7bb4dL,0x1d67a760bab7bfc9L,0x507aad46d799621bL,
|
|
0xf44567b5f4f3c3b9L,0xfaa97a3eae2bb6b2L,0x7d373b163594e2c9L } },
|
|
/* 62 << 112 */
|
|
{ { 0x29ef2da9a15e6ea0L,0xf411e20dcd168689L,0x34944975049a4b24L,
|
|
0x0effc2dfe035cd24L,0x5d77178b0a954cf7L,0x3504bc357ab2d8c0L },
|
|
{ 0xc3405000ec32219cL,0x00442630421a5a3cL,0x0548505c7f49819aL,
|
|
0x6bdb281fc805d0e8L,0x03cb57ac97484e09L,0xcf0926da58a14cc1L } },
|
|
/* 63 << 112 */
|
|
{ { 0x0715055cc85610a7L,0xd2642935fa6ca505L,0x87ef95128c361749L,
|
|
0x89cd669a8c8156d2L,0x5cdcd266ed60d7ceL,0x99ccc96df59fb53fL },
|
|
{ 0x82400f4655df7f73L,0x2b6aa1d9af34f742L,0xa6cbca79c398aa8eL,
|
|
0x7697bdea02b7325eL,0x1cb036b94fde4a79L,0xfe11ff96307fb964L } },
|
|
/* 64 << 112 */
|
|
{ { 0x6a3a23279af0a75cL,0xf832a8159f1f250dL,0x17030c3322a82d3fL,
|
|
0x24bf18ea14cbc835L,0x319dc4cab2da2727L,0x481df3606d020d4aL },
|
|
{ 0xaeebdd8a7fc22ba5L,0xbd0515c6a91e28abL,0xfc8a2978595f361dL,
|
|
0xe60dd96c1ae8fa3cL,0x19c2109aa5341575L,0xfd6e92bb06a0ee48L } },
|
|
/* 0 << 119 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 119 */
|
|
{ { 0x2e32f896cde5e785L,0xcd55ae7ab9db8f31L,0x278db1ad8f832885L,
|
|
0x271d9078adcbd933L,0x2208fae34a64f863L,0x974046e039c89365L },
|
|
{ 0xcb46f272b3cd0cd3L,0x31f34e1a74e59edcL,0x3421d316edd50418L,
|
|
0xb1d8a064cabe36edL,0xdb13e560362efcdaL,0x567c2b6cc71eb3eeL } },
|
|
/* 2 << 119 */
|
|
{ { 0x2af8ed8170d4d7bcL,0xabc3e15fb632435cL,0x4c0e726f78219356L,
|
|
0x8c1962a1b87254c4L,0x30796a71c9e7691aL,0xd453ef19a75a12eeL },
|
|
{ 0x535f42c213ae4964L,0x86831c3c0da9586aL,0xb7f1ef35e39a7a58L,
|
|
0xa2789ae2d459b91aL,0xeadbca7f02fd429dL,0x94f215d465290f57L } },
|
|
/* 3 << 119 */
|
|
{ { 0x94c3938b4c9324feL,0x0dea07003fe78a0eL,0x57ab9daa019e7dc6L,
|
|
0xb0d7b14a9925b79fL,0x3c9a638b937a5daaL,0x3b14fd0de62943adL },
|
|
{ 0xbaafb635ed3ae4b5L,0x3060a090b2bcfaa2L,0x389d9e7f7aa8f217L,
|
|
0xd7f987c6e9310a65L,0xec0927f993b69c0aL,0x9335e9102381a247L } },
|
|
/* 4 << 119 */
|
|
{ { 0xc08550024b950889L,0xee99dbfe8ce24da0L,0xdda71d964318e860L,
|
|
0x01d3d39604fe9b85L,0xda4bc065e25e7e20L,0xd3a50b87e076c81cL },
|
|
{ 0x5b9f821931e5f494L,0x6a140527a6a1b821L,0xf52683e4d8dd159bL,
|
|
0xca9c888720b18043L,0x73c040fa08a0d8f5L,0x92e482e8179525c4L } },
|
|
/* 5 << 119 */
|
|
{ { 0x8b9f650f3e776590L,0x41ba807f47703a5dL,0x8cc1a550fe907078L,
|
|
0xd70cb76c8f00b84bL,0xcaee21566f3e6780L,0xfd6a51f595c2d03eL },
|
|
{ 0x2c897c5556ffa08fL,0x08589a6563d13d54L,0x6a1eed4287bbacf7L,
|
|
0x66aed4f5ee709d78L,0x67c925bf1178ecabL,0x6870f4c8a29cf747L } },
|
|
/* 6 << 119 */
|
|
{ { 0x37ed2be51cfb79acL,0x801946f3e7af84c3L,0xb061ad8ae77c2f00L,
|
|
0xe87e1a9a44de16a8L,0xdf4f57c87ee490ffL,0x4e793b49005993edL },
|
|
{ 0xe1036387bccb593fL,0xf174941195e09b80L,0x59cb20d15ab42f91L,
|
|
0xa738a18dac0ff033L,0xda501a2e2ac1e7f4L,0x1b67eda084d8a6e0L } },
|
|
/* 7 << 119 */
|
|
{ { 0xe3a67b2d5e12e708L,0x3a4772e2ce48f234L,0x78f9dbc334794271L,
|
|
0x9880053a3e6a61e7L,0x031c30b87c0f6e59L,0x8113df6cf7b972f8L },
|
|
{ 0x3625bdce18ee148cL,0x72c2b8efdb885158L,0x4c73c80c9a7f0df3L,
|
|
0xbc2dd8a507b92470L,0x5a33e4dfdb005677L,0xc699cf5ea5ca9dd3L } },
|
|
/* 8 << 119 */
|
|
{ { 0x3a828904a4d2313eL,0xbf4946b192e66888L,0xc574898ae5fa19d2L,
|
|
0x0b13dbb65e1c5fa4L,0xf11343ba7c390fc2L,0x35b1418fd7d32187L },
|
|
{ 0xc92cb1bb83e7fe7bL,0x0b969455d78365c4L,0xda69dfe5672f2af7L,
|
|
0x9c62d7b430932441L,0x165672ad94af02d6L,0xd2cc734dcde81c22L } },
|
|
/* 9 << 119 */
|
|
{ { 0x6353420218d07dd6L,0xc7c0c8f128a3cb4eL,0xa41d4c55d7929131L,
|
|
0xf1aaab3445d21f63L,0xd69a59545ec3e9feL,0x209732c1b8ddea2fL },
|
|
{ 0x368b9c59e1936916L,0xb011c662ab1f8585L,0xcce30a25474e57b4L,
|
|
0xb79c76df7049c61dL,0x984739950ccf165bL,0x7c6f4ab40ce897baL } },
|
|
/* 10 << 119 */
|
|
{ { 0x1d27efce1080e90bL,0xa28152463fd01dc6L,0x99a3fb83caa26d18L,
|
|
0xd27e6133b82babbeL,0x61030dfdd783dd60L,0x295a291373c78cb8L },
|
|
{ 0x8707a2cf68be6a92L,0xc9c2fb98eeb3474aL,0x7c3fd412a2b176b8L,
|
|
0xd5b52e2fc7202101L,0x24a63030f0a6d536L,0x05842de304648ec0L } },
|
|
/* 11 << 119 */
|
|
{ { 0x907d88035a8432bdL,0x89232a5a2638fe30L,0xa120eecbe2089014L,
|
|
0x3a5208cb5a2c9e97L,0xe163d29a3449eb4eL,0x3df984530eaba88fL },
|
|
{ 0x55d3b9afa1547443L,0x316aae18f2a60ceeL,0x64d0fd30d6e11a5aL,
|
|
0x65de345808ef6002L,0xcede56fab4a3d1deL,0xa5bfa8d9a4bc1588L } },
|
|
/* 12 << 119 */
|
|
{ { 0xd45e350133f4d416L,0xbb40233a4bf9131eL,0x1532a088e302483aL,
|
|
0x3475e8b82c2485c0L,0x08f9ea56969cdbe6L,0x31928645253cd738L },
|
|
{ 0x1cf323a4ac9836beL,0xdf647ccf02b6e4deL,0x9a31e84fc06f3d09L,
|
|
0xd326b86e39efe6d9L,0x77e3e1df14ac4decL,0xf2d5917af3e0c582L } },
|
|
/* 13 << 119 */
|
|
{ { 0xf88238f1376216b2L,0x8c7522db7d15f653L,0x50aa7a74a21f74d8L,
|
|
0xf7a964c8bc9e1a0cL,0x33ea64251387ca6bL,0xda84fe74e7be16a6L },
|
|
{ 0xdf0462d727867aaaL,0xeb7f0ab8ae6be1b3L,0x21abe5a5d9bdec8bL,
|
|
0xdbb99199ac4bed1bL,0xf65c19d935d13c0dL,0xf966e22e4df74056L } },
|
|
/* 14 << 119 */
|
|
{ { 0x67477cdc30577ac9L,0x51dd9775244f92a8L,0x31fd60b9917eec66L,
|
|
0xacd95bd4d66c5c1dL,0x2e0551f3bf9508baL,0x121168e1688cb243L },
|
|
{ 0x8c0397404540d230L,0xc4ed3cf6009ecdf9L,0x191825e144db62afL,
|
|
0x3ee8acabc4a030daL,0x8ab154a894081504L,0x1fe09e4b486c9cd0L } },
|
|
/* 15 << 119 */
|
|
{ { 0x7b4e65ebae4219adL,0x2e424c441184a0d3L,0x10eeb898d32e179bL,
|
|
0xadf05e2d8afa9a6dL,0xecd6c18bbeccd5f1L,0xe592115c39ac53e8L },
|
|
{ 0x9ccf231ac8c7b9b6L,0x1848b4fe678774bcL,0x2050856386782b91L,
|
|
0xb7caf7cc74dc6018L,0xe80805485cf9273aL,0x9609897b246b4851L } },
|
|
/* 16 << 119 */
|
|
{ { 0xe92b56c002cf37fdL,0xa75bbcb0f71b34deL,0x7754d0ef50f5c482L,
|
|
0x850a9ef611fa89feL,0x97d74b1bba4ea7d8L,0xfc757c25aab7ba2eL },
|
|
{ 0x06f30ab0f2a67fddL,0xb10aba1412e72af8L,0x47580bca7a2e053dL,
|
|
0x85795598dcf0e14cL,0xc3596781d6f55310L,0x8ab251b74c9b7e18L } },
|
|
/* 17 << 119 */
|
|
{ { 0xdc56cff85279e5cfL,0xa33a6765fdbdf1adL,0xc122c0eee5077a4bL,
|
|
0x44c3b190a98ab643L,0x334a6868b991d197L,0x598bbf185d6a0488L },
|
|
{ 0xd028bfdc5a0e6f96L,0xfd1a37f5e11c57b6L,0xe1240a3003f82183L,
|
|
0x6afae98c390d8536L,0x554a42dcc244b181L,0xa3d422d75f4cb4b6L } },
|
|
/* 18 << 119 */
|
|
{ { 0x512f82f9d113450bL,0x5878c9012dbc9197L,0xdb87412be13f355bL,
|
|
0x0a0a4a9b935b8a5eL,0x818587bdf25a5351L,0xe807931031e3d9c7L },
|
|
{ 0x8b1d47c7611bc1b1L,0x51722b5872a823f2L,0x6f97ee8a53b36b3eL,
|
|
0x6e085aac946dd453L,0x2ec5057de65e6533L,0xf82d9d714bb18801L } },
|
|
/* 19 << 119 */
|
|
{ { 0xf113abe17d48bfe7L,0x51d77fa5213facecL,0x27bb373f21269089L,
|
|
0x31e9850e7b188989L,0xd20a15f41d50a1c6L,0xb4887ed9d9746367L },
|
|
{ 0x8920a7e2325f19c5L,0x691352358ad74492L,0x713d1471d19a76a2L,
|
|
0x952cb9e5873ab310L,0x5b359d1ffa8eb8cfL,0x55aab5ad8b9c9e7cL } },
|
|
/* 20 << 119 */
|
|
{ { 0x4ab138504dbb8798L,0x0e7980d772d04cd2L,0x1755c5660b3271c6L,
|
|
0x8414efb09d9d1468L,0x61a586301795ce66L,0xb6a8b393232924a1L },
|
|
{ 0xa992f0ceae031bd6L,0x6747fb5f2915acc1L,0x03daa26693e9c0d2L,
|
|
0xc18fa3645400d554L,0xaf04ff8d9497e895L,0x86c3cfc250b6b339L } },
|
|
/* 21 << 119 */
|
|
{ { 0xdf26f6605b26122cL,0xeb6c188c4d6b80ccL,0xae2efe59ccec172bL,
|
|
0x5cdcd958f3f7d693L,0xa2ac2594c5f993f0L,0xb96ad8cf3f7cb591L },
|
|
{ 0x7e2f88f8446abbabL,0x3d1a5eb6f6051f2bL,0x7d882e82ad6f49daL,
|
|
0xe32918e3c4e7bbffL,0x442a32789be81150L,0xa1d34da1bd14557eL } },
|
|
/* 22 << 119 */
|
|
{ { 0xad81fa938ba5aa8eL,0x723e628e8f7aa69eL,0x0ba7c2deef35937cL,
|
|
0x83a43ec56decfb40L,0xf520f849e60c4f2dL,0x8260e8ae457e3b5eL },
|
|
{ 0x7ce874f0bf1d9ed7L,0x5fde35537f1a5466L,0x5a63777c0c162dbbL,
|
|
0x0fd04f8cdad87289L,0xca2d9e0e640761d5L,0x4615cff838501adbL } },
|
|
/* 23 << 119 */
|
|
{ { 0x60c7e16cdf66a95cL,0x25b1078d5d0bd644L,0x77f8d872bd933e31L,
|
|
0x5c4c382de2e1536cL,0x5b3b37c09295ee0dL,0xf94698d4ecce42b6L },
|
|
{ 0x947ef80c4db8f2c7L,0x34661f7dc70dd82fL,0x17b288a7f2311006L,
|
|
0x1f1171a66815e1caL,0x0f71f66ce80d6235L,0x858c665a87fa5a59L } },
|
|
/* 24 << 119 */
|
|
{ { 0x376b2a7f04e1e6e3L,0xea0dcb70a31774b4L,0xfc7fe4cc5cbdec2eL,
|
|
0x8568499df03f459eL,0xe9fd8fb28b78900eL,0xd33c6e30e431bf97L },
|
|
{ 0xd904b8f5c896e766L,0xa8f577cf82748cefL,0x93dd921b87e044b3L,
|
|
0x23d79837f76eebe9L,0x5e0a7493e569feebL,0xd0797549414dddb6L } },
|
|
/* 25 << 119 */
|
|
{ { 0x9bf04f567781556aL,0x30be1e8953ebf7c6L,0x6f4899cf713fe432L,
|
|
0x4f641fb7c9ef741fL,0x03560819002cc010L,0xfa51f8f7b4bbd339L },
|
|
{ 0xe09c5ef77f1dea5cL,0x39cb20d97255fec5L,0x407746862ea38859L,
|
|
0x68ca598ecd7a29f3L,0xb8025dd67a9db4d9L,0x4feaeeaed9dfe491L } },
|
|
/* 26 << 119 */
|
|
{ { 0x9422789b110b4a25L,0x5c26779f70ad8cc1L,0x4ee6a748ec4f1e14L,
|
|
0xfb584a0d5c7ab5e0L,0xed1dcb0bfb21ee66L,0xdbed1f0011c6863cL },
|
|
{ 0xd2969269b1b1d187L,0xf7d0c3f2afe964e6L,0xe05ee93f12bb865eL,
|
|
0x1afb7beeed79118eL,0x220af1380f0fe453L,0x1463aa1a52782ab9L } },
|
|
/* 27 << 119 */
|
|
{ { 0x8cf42aa26b99ca6aL,0x696850242f091dbaL,0x9d887e6ad7d3270aL,
|
|
0x627754fd5c9b735eL,0x3b8735a811d95df6L,0x74debd8b52443251L },
|
|
{ 0x1f8dd5b66181583eL,0xbd0ca92c8b570a9cL,0xc373a61a71ae3274L,
|
|
0xf4b2c88d1c4c16cdL,0xd3e6ec3baf33efabL,0x8c54d2721bf6f0d0L } },
|
|
/* 28 << 119 */
|
|
{ { 0xfd9e3542bfe5b1a7L,0xb42d2a4175938ceaL,0x74688a153befb760L,
|
|
0x8daeeaa22e33dbe7L,0xc9c1ea083e677801L,0x68ecf4e434effe1eL },
|
|
{ 0x927700ccd294c321L,0x9e2e723de940afc5L,0xbcfac07a7cf6cd43L,
|
|
0xa009ef94d1006bc3L,0xa02016b0373d13e3L,0x4e097adbabae5822L } },
|
|
/* 29 << 119 */
|
|
{ { 0x7535175d48752720L,0xf51086ee850bdf07L,0xce322c33cb4c3f4dL,
|
|
0xd863f7edb28965fbL,0xfe46a4e9885e4afaL,0x58b5c871136d7ddaL },
|
|
{ 0x126eddaf6ed07824L,0x084ce962844fcbb8L,0x9ac0787157dfb4c5L,
|
|
0x97451fcc4d6b5910L,0x9f14b1ce0843c9c6L,0xf737f6c0a0e18596L } },
|
|
/* 30 << 119 */
|
|
{ { 0x7c139d56d7dbe5f9L,0xfc16e6110b83685bL,0xfa723c029018463cL,
|
|
0xc472458c840bf5d7L,0x4d8093590af07591L,0x418d88303308dfd9L },
|
|
{ 0x9b381e040c365ae3L,0x3780bf33f8190fd1L,0x45397418dd03e854L,
|
|
0xa95d030f4e51e491L,0x87c8c686e3286ceaL,0x01c773bf900b5f83L } },
|
|
/* 31 << 119 */
|
|
{ { 0x0028dcae855a0b90L,0x74c1e36026f0d718L,0x34f80e3ca059f144L,
|
|
0x85b5d8e3f2bfe1b4L,0xe124601f453de099L,0x8b164ad6221b3efdL },
|
|
{ 0x636f45ebbe004ab0L,0xa23093e99f231a8aL,0x48e05e8e2287b992L,
|
|
0xefec5e5b4477cb8bL,0x45a65afa8ba0231bL,0x92d38bd88b1af6baL } },
|
|
/* 32 << 119 */
|
|
{ { 0x8db8b78cc898b8bcL,0x686896da502940cdL,0x67e50f022dde2e3cL,
|
|
0x2e2461f38cbf406cL,0x32182781e1f7ff60L,0x26934b05e30e2688L },
|
|
{ 0x95adc204fc4494f6L,0x4c7f30c5161b7499L,0xd5caf060b7341737L,
|
|
0xed93187fd128d46cL,0x3f2819cb20fc1e04L,0x48c4086f2b7f70a1L } },
|
|
/* 33 << 119 */
|
|
{ { 0x45693c00a92ca9faL,0x046b218d63bd525dL,0x40f1d6cc6b1d6a68L,
|
|
0xfc5807c5c54dc1f0L,0x2875d4d98b5690f6L,0x7a753543d0f72a83L },
|
|
{ 0x01f2c35ae28b5309L,0x38fb5f121bcef323L,0xd6ea6896256a9bffL,
|
|
0x4380fb2c44d65badL,0xb587d641c3556fb6L,0x74c5ec1905167f32L } },
|
|
/* 34 << 119 */
|
|
{ { 0xdabe347578673b02L,0x4f0f25cef6e7395eL,0x3117abb9d181ad45L,
|
|
0x4b559f88aa13de0bL,0xfd8efe78ea7c9745L,0x080600475dd21682L },
|
|
{ 0xc0f5de4bd4c86ffcL,0x4bb14b1ef21ab6a2L,0xacb53a6cf50c1d12L,
|
|
0x46aac4505cc9162eL,0x049c51e02de240b6L,0xbb2dc016e383c3b0L } },
|
|
/* 35 << 119 */
|
|
{ { 0xa1e3cb2255b7f121L,0xc9183b13dd01db7dL,0xfe26aa801469dae6L,
|
|
0x7318df7fd9ecfe2bL,0xade0a24d56dd4acfL,0x6e521c2222d1ba14L },
|
|
{ 0xa039800a40afa1deL,0x9c7da49d5c6af72aL,0xf7ae921cd3fcc7c6L,
|
|
0x76af2407dcab63e2L,0xdc1618dbb6dd49ceL,0xebc65c4d362cc88bL } },
|
|
/* 36 << 119 */
|
|
{ { 0xd847939132202bd3L,0x1dacde87d6631ac1L,0x99d2e71f905a94f4L,
|
|
0xd3c21f5a7e67dd7fL,0x3605c28e3c43cf23L,0xb6cd5ac74d3b3070L },
|
|
{ 0x8bf748ba246298d7L,0x9e939fbd0f053664L,0x3bb3e7b8cc303783L,
|
|
0x359bd3e56189c417L,0x299d0ce1f609ae34L,0xd7221cc7b9ca801dL } },
|
|
/* 37 << 119 */
|
|
{ { 0xb7c823506b73c5a6L,0x7fea0d95fefee640L,0x6d5dd775f68b6be6L,
|
|
0x4a5576147cbfa333L,0x6cad79c2fcd9b17dL,0x49aec3d405c4dd35L },
|
|
{ 0x3b1f3754c3792470L,0x351ef2ccbe00cffcL,0x44a248916a71f45eL,
|
|
0x1e7a6013b8640d08L,0xf0f476154efcd556L,0xc82171444fe15dd3L } },
|
|
/* 38 << 119 */
|
|
{ { 0xa3c56ad28e438c92L,0x7c43f98fb2ceaf1aL,0x397c44f7e2150778L,
|
|
0x48d17ab771a24131L,0xcc5138631e2acda9L,0x2c76a55ef0c9bac9L },
|
|
{ 0x4d74cdce7ea4bb7bL,0x834bd5bfb1b3c2baL,0x46e2911eccc310a4L,
|
|
0xd3de84aa0fc1bf13L,0x27f2892f80a03ad3L,0x85b476203bd2f08bL } },
|
|
/* 39 << 119 */
|
|
{ { 0x85f9b301218642acL,0xb3f3b36f8728ef66L,0x4a833bea2ebb8181L,
|
|
0x7d3bca9d8541a662L,0xd3be6d0ac5a0ecffL,0xaf52a2a9528da950L },
|
|
{ 0x4b431910131f72caL,0xe2708d36933d5550L,0x195340a469abf146L,
|
|
0x84ca66e4e4e2e131L,0xd9402ca7e16c39bfL,0x5beedce343ca6041L } },
|
|
/* 40 << 119 */
|
|
{ { 0x87c5915395523a22L,0x56686f525ac5146eL,0x9ec69ec718ccf766L,
|
|
0x13f36d4ff6e21a4aL,0xa0841e94098691f4L,0xbd9d52d2bd91dd2eL },
|
|
{ 0xa8765981b3fa43eaL,0xb0cd17cd600b9761L,0x02dd9d71b5abe842L,
|
|
0x63df33a63689a53bL,0xab4b85bb9d9baad7L,0xce2d31c1eb74e549L } },
|
|
/* 41 << 119 */
|
|
{ { 0x8d69a654f2472426L,0x91a4b6a3ff7aeff0L,0x51dd8e76fdcc7cb4L,
|
|
0x5f7d42a273731cd7L,0xc127401aa99c9d9aL,0x8ede9330c92561d7L },
|
|
{ 0x86057a56784c3cf2L,0x8afcf32cb5a7755eL,0xa0a5b561c71cd3d9L,
|
|
0x0a5d805e36d3f5a4L,0x25a39acd7432a384L,0xd574a6b7b226e9ecL } },
|
|
/* 42 << 119 */
|
|
{ { 0xab1cb818567af533L,0x273b4537bac2705aL,0x133066c422c84ab6L,
|
|
0xc3590de64830bfc1L,0xea2978695e4742d0L,0xf6d8c6944f3164c0L },
|
|
{ 0x09e85f3dc1249588L,0x6c2bb05d4ec64df7L,0xd267115e8b78000fL,
|
|
0x07c5d7aec7e4a316L,0xcb1187ba4619e5bdL,0x57b1d4efa43f7eeeL } },
|
|
/* 43 << 119 */
|
|
{ { 0x886e3f30b29f5916L,0xa419d2c6625f29a0L,0xb4f89fc49bf07dc4L,
|
|
0x86c137a1a165ed88L,0x6fa241a9e5d6280dL,0x08be9b0cd11576f2L },
|
|
{ 0x5735aeb7e376b03dL,0xf4639e6d182ce9b9L,0xb6948499cc688f57L,
|
|
0xfde146636552009eL,0x3eeeae350a2e8553L,0x50447f1b659dfe2eL } },
|
|
/* 44 << 119 */
|
|
{ { 0xefccd67ed15c33c0L,0x33393846146d5e96L,0x015e97da9ca7354eL,
|
|
0x729b69bac143e795L,0xd4440ecfd4c5d0e2L,0x78c042bb697a80e7L },
|
|
{ 0x9361ad1d08602f75L,0xaa354166af489794L,0xe60e5a274966d3cdL,
|
|
0x8346995e2394f9f3L,0x2de33256590f6a15L,0xb14427bb43298ac1L } },
|
|
/* 45 << 119 */
|
|
{ { 0x38fee83a74680d2cL,0xd8019e5c0e700c8dL,0xcfaf5614475da1b8L,
|
|
0x11893fc58f0159e3L,0x4c101127553813c2L,0xd273055208f82a6aL },
|
|
{ 0x8728834c74a3ce9aL,0x66b939a891906488L,0x42ac7c07b88d36bcL,
|
|
0x663d7411d989bb72L,0x650e5d6eb284c066L,0x052b7f6710d8f124L } },
|
|
/* 46 << 119 */
|
|
{ { 0x3618891fc8176a96L,0x62c4b084e5808b97L,0xde5585464dd95d6eL,
|
|
0x27a8133e730b2ea4L,0xe07ceec36af318a0L,0x0acc1286ce24fd2cL },
|
|
{ 0x8a48fe4add4d307cL,0x71a9ba9c18cde0daL,0x655e2b66d5d79747L,
|
|
0x409fe856a79aedc7L,0xc5a9f244d287e5cfL,0xcce103844e82ec39L } },
|
|
/* 47 << 119 */
|
|
{ { 0x2a8cb0a56ad833c5L,0xe8fab8b844962dd6L,0x31166fd63ee1dfefL,
|
|
0x3aba85a1e1230449L,0xf9f8da66bd1f502eL,0xe4a72d82e3c17ccaL },
|
|
{ 0xfa3d661d6070d587L,0x51d10b73c33ed08aL,0x3b0f515cb29f2d0bL,
|
|
0xd82a11d7e1986e91L,0xcf24f81a2201f05bL,0xa94ec1e0d25f8417L } },
|
|
/* 48 << 119 */
|
|
{ { 0xc7807daa081ed51dL,0xb7dfabf0e5d2d963L,0x3f78ae2e80d386d0L,
|
|
0xd66275254bbfd04bL,0x238c8eb76d074f92L,0xfe51ec8a5bc5f9b5L },
|
|
{ 0x6ba47430cc03177bL,0xe72efda6400b29e0L,0xb905701becbffe88L,
|
|
0x5c61bdb47cf89933L,0xf1eb3084c914aa6aL,0xa3ead71e8245998bL } },
|
|
/* 49 << 119 */
|
|
{ { 0xc58ee3013c7eb5a9L,0x02c177220a1172baL,0x8620118394c7c5b3L,
|
|
0x66292bc4e1668debL,0xf51b48f4caf39937L,0x9cca60f43eaea578L },
|
|
{ 0xf8e8004a5c2adccaL,0xce7ceeb1ebf49ac7L,0x36346357371d1c54L,
|
|
0x8799e408d99ff07dL,0x3226181d8c3b2cbfL,0x3b4ff42ba437c2c6L } },
|
|
/* 50 << 119 */
|
|
{ { 0x00675ba7f25d364cL,0x7a7f162968d36bdfL,0x35ec468aa9e23f29L,
|
|
0xf797ac502d926e6cL,0x639ba4534b4f4376L,0xd71b430f51ff9519L },
|
|
{ 0xb8c439ec2cf5635cL,0x0ce4c8d181980393L,0x4c5362a964123b15L,
|
|
0x6e0421e0ffdcf096L,0x624a855f10d1f914L,0x7d8f3ab7614dcd29L } },
|
|
/* 51 << 119 */
|
|
{ { 0x235ba8b565868390L,0x853c9346ea936e81L,0x967ff132700bb25aL,
|
|
0xb26d9778561a136cL,0x8b775c4fe3f7e41dL,0xae8f6b2ebd390b2cL },
|
|
{ 0x80959adc4fc7224dL,0xd9c913c12eaccf8cL,0xa9a278c79e96f769L,
|
|
0xbc6be3038f26856dL,0xb039caf295d04cdeL,0x42ba0510a91bf5dcL } },
|
|
/* 52 << 119 */
|
|
{ { 0x77870665cfbe0653L,0xab84c4b3523d814dL,0x72839d8897cd2bc0L,
|
|
0xb966e521d25b1476L,0x4255d18451fd86a0L,0xadaf9b76dd54be7aL },
|
|
{ 0xada6ff627f285e0bL,0xb76e26f46d42400bL,0x1d9fe676958bee25L,
|
|
0xfcd7be9edb59965cL,0x897a90834bcf6e75L,0x64b26f02aabd21e8L } },
|
|
/* 53 << 119 */
|
|
{ { 0xee46626beb1a8ce6L,0x2de20371b672fc49L,0xa0fb11b8bd2d9256L,
|
|
0x5b49f70ac2a8dcd4L,0x98935fc9e5dc0ee3L,0xaddbae423bc00993L },
|
|
{ 0xbd0bd9e19207f0e9L,0xe86c5365b393bcdcL,0x32184c832d0a9282L,
|
|
0x8fe996d1df34532eL,0x3b33f151c6f45172L,0xd9def9a7b84545e4L } },
|
|
/* 54 << 119 */
|
|
{ { 0xd9219adab3493ce0L,0x971b243a52f09ae5L,0xc16c9bf8e24e3674L,
|
|
0x026d408dce68c7cdL,0xf9b33dd9358209e3L,0x02d0595df3b2a206L },
|
|
{ 0xbf99427160d15640L,0x6da7a04e15b5466aL,0x03aa4ed81cadb50dL,
|
|
0x1548f029129a4253L,0x41741f7eb842865aL,0x859fe0a4a3f88c98L } },
|
|
/* 55 << 119 */
|
|
{ { 0x66bb66f5f56b17ccL,0xdce0bf2cba8958f8L,0xd814318f9ff85781L,
|
|
0x41dce823edd1ad96L,0x71bb754bb59c6580L,0x9c5efb70de594c3bL },
|
|
{ 0xf7b4ce5eb0053788L,0x9c26b0342770b6deL,0xe6967b1c8d131e8fL,
|
|
0xfda0efdccf21bf28L,0x2366d47e09cbeeacL,0x62e9ee556629680eL } },
|
|
/* 56 << 119 */
|
|
{ { 0xdaff980ff8e06359L,0xb4e0c9e2ead8a883L,0xe3e262023da6e94fL,
|
|
0x37410ed03303c9d6L,0xc044d77b91fb5d82L,0x3559d9ac9ea34d26L },
|
|
{ 0xf51a120be21beda5L,0xdd2eef8a3f7befa4L,0x46a26ccd8c79fca1L,
|
|
0x3fb21a682a046572L,0x3624a47adad7c7c9L,0xb9b77ffd4b4174f5L } },
|
|
/* 57 << 119 */
|
|
{ { 0xae19a097c9f8c462L,0x477be49917a9d8a9L,0x4a0c41c9d2154c45L,
|
|
0x39313aba1b0d985bL,0x3a70f65cc051b643L,0x0725dabf2d0be160L },
|
|
{ 0x29eefc94a69867d4L,0x6acc4cd49d02bce2L,0x0606ab725d4dca50L,
|
|
0xcce81133bfecdcbaL,0x604df3def23b2239L,0xa644b430d20a7529L } },
|
|
/* 58 << 119 */
|
|
{ { 0x80de085a05fd7553L,0x4a4ab91eb897566bL,0x33bcd4752f1c173fL,
|
|
0x4e238896c100c013L,0x1c88500dd614b34bL,0x0401c5f6c3ba9e23L },
|
|
{ 0x8e8003c4d0af0de5L,0x19b1dfb59d0dcbb9L,0x4a3640a9ebef7ab6L,
|
|
0xedafd65b959b15f6L,0x8092ef7f7fb95821L,0xab8dd52ece2e45d1L } },
|
|
/* 59 << 119 */
|
|
{ { 0x43f9a415259ac609L,0xcd6c7aaa0ff5722cL,0xb4689e75b29973caL,
|
|
0x78a43571b690c0acL,0x90dc4ac0a6d3ba1fL,0x38af00a2b773932aL },
|
|
{ 0xc13aebdda5e2c9edL,0xfab3a128cf3fed2dL,0xb3b7d29d32eb8ccfL,
|
|
0x9ae1430b6986db5cL,0x35d18edf5365c21eL,0x88f8356e038471ccL } },
|
|
/* 60 << 119 */
|
|
{ { 0x45587a7c0794dad2L,0x660833899e9c1cdcL,0x60e7ae4ad242a6b9L,
|
|
0xb5f96b521009df3cL,0xc2d405092e30445aL,0xfa53ba4ec250a29eL },
|
|
{ 0xf6a247855d98c6ceL,0xf873653c207dd110L,0x2aebc3c6c634cbd0L,
|
|
0x84b8016ce5cdbafeL,0xbda81fcace00b206L,0x837dc69484b55f2cL } },
|
|
/* 61 << 119 */
|
|
{ { 0x61bdc5cab308f1f0L,0x7763c97d8898d3c2L,0xc02324e60434de23L,
|
|
0x7f5c565e4ba696e9L,0x06f27a3e66914b66L,0x64a975ee05052cf5L },
|
|
{ 0x98b2f703bb38b14eL,0xbacbd113371e495cL,0xe54451acdd14cc9dL,
|
|
0x8575cfdf87d141b3L,0xbd183a03d0996091L,0x947555579360264cL } },
|
|
/* 62 << 119 */
|
|
{ { 0xd1f2d6b8b9cfe6bfL,0x6358810b00073f6fL,0x5fce5993d712106eL,
|
|
0x5ee6b2711c024c91L,0xd0248ff5453db663L,0xd6d81cb2adb835e8L },
|
|
{ 0x8696cfecfdfcb4c7L,0x696b7fcb53bc9045L,0xab4d3807dda56981L,
|
|
0x2f9980521e4b943bL,0x8aa76adb166b7f18L,0x6393430152a2d7edL } },
|
|
/* 63 << 119 */
|
|
{ { 0xc89db4eb4595ca55L,0x48921c735f1a73a2L,0xfc513c904afe7cbaL,
|
|
0x6d3f988bff8322eeL,0x17d0d4f0e59b7cdcL,0x292f4757f4bb5588L },
|
|
{ 0x3037e11151c14623L,0x3e113343dce98277L,0x0be229341e20dc8fL,
|
|
0x0ebd1fbfcd6ff82aL,0x304bd69ed01fa90fL,0x402a457577f1862fL } },
|
|
/* 64 << 119 */
|
|
{ { 0xd74d09c10ece13aeL,0x5e59d9e057a6bd95L,0xdb1ccfdce132b940L,
|
|
0xa0e5309c843d3c66L,0x1fbd03a5f9cb3ef4L,0xcdc9ef0a00ea5177L },
|
|
{ 0x1ebf5a15cb784a6bL,0xa67382af8a0d109aL,0x3256c37aa0d34d15L,
|
|
0xee40efa50fca43afL,0xc299bbd4b9841bdeL,0x6df68f603bef4a0bL } },
|
|
/* 0 << 126 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 126 */
|
|
{ { 0xe01295fdd9d7c50aL,0xaf31b4ea67f8ef0dL,0x2ec9689f9eaf8eb7L,
|
|
0x327b96c5c622acc5L,0xae918f81b2757f2aL,0x74927d684fd6606eL },
|
|
{ 0x09bb7fce18574215L,0xfea383bce8e68b72L,0xdf2a6f125fb47511L,
|
|
0xbe88faa18e399520L,0x0166d57e3fb1c3a2L,0x5907ef2fe525f81fL } },
|
|
/* 2 << 126 */
|
|
{ { 0xdefe3a7b8a37f660L,0x7898db8c858f5765L,0x7366c26a73d1f9b4L,
|
|
0x35d5d718237ae8b7L,0x3efb20feb4478259L,0xccd0fed7aa545ee3L },
|
|
{ 0x750edd05ed22d152L,0x4f8020f9ee20d4c6L,0x16e60f370a9e29dcL,
|
|
0x9cf0a136bfbec7f6L,0xb430a34b2e47e143L,0x2e2560bbc6cdd1a9L } },
|
|
/* 3 << 126 */
|
|
{ { 0x799352dae4161a65L,0xe5cf7ad856253ce6L,0xf606bf796de32775L,
|
|
0xddc0f3a357fce8dbL,0x1075fc2316cf4a47L,0x078f0e04b27c5ad8L },
|
|
{ 0x9fc477953f7100aaL,0x3ac489254673ffa2L,0xb8263f42f9cd8348L,
|
|
0x5bdfde3068cc92d5L,0x2250927b1ac37f9cL,0x26ec8328b33da359L } },
|
|
/* 4 << 126 */
|
|
{ { 0xf186d6bcc88d568aL,0x872bc4c7528535ddL,0xc9e7432edfe64dc3L,
|
|
0xd9fc4832d795ea57L,0xf4ffdb81c845af2bL,0x66d7e7882b670517L },
|
|
{ 0xa7c1be04d7b7a1c6L,0xbed88479d5b2a249L,0x62ff8aba03f2ef6dL,
|
|
0x60ecaac420dc701dL,0x9f4b559f4ff10119L,0x0582c9313cd54fd0L } },
|
|
/* 5 << 126 */
|
|
{ { 0xea9da8f012bbaeb6L,0x3fba06b18c9f8360L,0xc11bd7abb28c0ac3L,
|
|
0x1e05af2faa8a01bdL,0xae1e99c5f000b1c3L,0x93ee806453d79930L },
|
|
{ 0x5728089e4c4f5513L,0x755351f3b1f70b76L,0x187ac651675f77efL,
|
|
0x5cf7bfb553067d84L,0x629290838174b5c0L,0x720e20798d5be74dL } },
|
|
/* 6 << 126 */
|
|
{ { 0xab8cc09ff5eb9ad1L,0x97a4de76132edbfeL,0xa2e11c548baf6347L,
|
|
0xcee54229683cfcf6L,0xe1e993b8dcfc6555L,0x333bf16abe9df066L },
|
|
{ 0x5207e093060d62dfL,0xfa32324d69b0f5faL,0xef16fbcfd3243d2dL,
|
|
0x540a2e59f04f8e45L,0xb5e70f9c48317bbaL,0x00dbe9b25b35baa1L } },
|
|
/* 7 << 126 */
|
|
{ { 0x0eaed675ebb512eeL,0x347e0756058efbd5L,0xadf792ca296d3d47L,
|
|
0x57f00c0a4654d012L,0xa1e08a04bccc5803L,0x610677f05b2f11d1L },
|
|
{ 0x0d9393d7b81acfd2L,0xb258e1570587c219L,0x372a1857b4ceba47L,
|
|
0xe1ce8bb53ecc1c5dL,0x7efdf301922cecd0L,0xcab8cb170d8aa653L } },
|
|
/* 8 << 126 */
|
|
{ { 0x31954a5679d05497L,0xc12520b6fe76d4d8L,0x8c433ec5e37ef1d2L,
|
|
0xcd0f203575bc3b66L,0x3723f145249cd98bL,0x1356e0d2ea3b42a3L },
|
|
{ 0xf607fee0f174c7b5L,0x318afc5e0127be39L,0xd47b5d74cea5417fL,
|
|
0x6891940a10fca22bL,0x5cea41332b635e8bL,0x93db2ed6b5934fefL } },
|
|
/* 9 << 126 */
|
|
{ { 0xf87cfaaac8972b7dL,0x2b8f9874e090800fL,0xdb88cd4f52efde36L,
|
|
0x7b977f6e80776de8L,0xd047fc8ffb4b19c4L,0x33f3e43578b8135fL },
|
|
{ 0xb4cdb352da33eff8L,0x217f9e2deb89d325L,0x1bb5a004c99feec5L,
|
|
0x98ce5a7fdb45c845L,0x458904681d87e964L,0xb9253873d151ad80L } },
|
|
/* 10 << 126 */
|
|
{ { 0x5d7c767de39edca9L,0xe4a700e7a7f8de0cL,0x5816e1f93c9eec33L,
|
|
0xa975c933d32fe465L,0x979beff968466a5eL,0xe308c135cc067721L },
|
|
{ 0xe0e733b41839b88dL,0xda3e3e6c298dc2ebL,0x414c3f0e8fb70e3eL,
|
|
0x5ebaefa7ed7ca91cL,0x5c283310ae3b0f3eL,0x20353d5df3b1d44eL } },
|
|
/* 11 << 126 */
|
|
{ { 0xd50767a9790325feL,0xe2ceddb9358c50eeL,0x60be64bdbbf03ae5L,
|
|
0xe70c7e90f053328fL,0x6ba6af9e51543f0aL,0x470941f3b413e069L },
|
|
{ 0x0b569fd4ddf63d13L,0xf94b22634a2125d6L,0xaa45ab62a5c1acedL,
|
|
0x2b797175defa5a30L,0x3eb30067ead1d440L,0xcadb54e90b691af2L } },
|
|
/* 12 << 126 */
|
|
{ { 0x365a4a431630b133L,0x9ecef631068d7863L,0xa330c8b4b7205a6fL,
|
|
0x4858eab357df815cL,0x6e522afaf1a92674L,0xa7cff3d9f41365d7L },
|
|
{ 0x00dd34615a0e4626L,0xa695feff48f9d094L,0xf427103f7c082301L,
|
|
0x14a2a1876b092b71L,0x210f632130037a33L,0x21cca09639340e14L } },
|
|
/* 13 << 126 */
|
|
{ { 0x58355ba0f60ad6c1L,0xc63fbcff56022afaL,0xa6a770d54e7ef19fL,
|
|
0xf42b2024a09e9378L,0x153aa3200330f774L,0x268aaee55dc02c97L },
|
|
{ 0xa7e13b42828f7ab7L,0xc0ccce09c303bfcaL,0x23169daae3ccb6ddL,
|
|
0xf7f763fd786774e9L,0xb15a5ef150021488L,0x52f408fd5f3ea885L } },
|
|
/* 14 << 126 */
|
|
{ { 0x53e84021177346c2L,0x4ee451dde20af475L,0xd7642453c14f393eL,
|
|
0x7eaa215331662516L,0x1217a1b4c1d486c9L,0x7d32427569860f20L },
|
|
{ 0x3813c95f14c2837eL,0xb8f0713d4e0c056aL,0x398c218cf6dec37bL,
|
|
0x5bfa2eefa4ad1eedL,0x53cb0fd29f97a05dL,0x59fa132f6a9f492bL } },
|
|
/* 15 << 126 */
|
|
{ { 0x6d5dff381fc2c16aL,0x5dec7ae2b1fe149eL,0xa9eed62c85088ceaL,
|
|
0x5878fdf7996174baL,0x2cf65bb935517a73L,0x80844bcacff96d13L },
|
|
{ 0x0f55c8bfed53f49dL,0x35815fb0fbd8cec6L,0x23e7d5c53b6fa7d9L,
|
|
0x3ee04c0146ce1733L,0x180e25553f5c4a27L,0x61263ea7280e6363L } },
|
|
/* 16 << 126 */
|
|
{ { 0xb1f4fead41b959b5L,0x6edb53a9e71890c0L,0x48b47efe2e28aa2aL,
|
|
0x70dad2e9b3151d67L,0x87a8178b436a3460L,0x0f86f9f5801f7af7L },
|
|
{ 0xfab462e3a982fc14L,0xe29126bacb03e978L,0xb4696b3fe6681282L,
|
|
0x3bd9910a6a3fdc1dL,0x4409128449e37dacL,0x3b4bfabccf605fb3L } },
|
|
/* 17 << 126 */
|
|
{ { 0x605fae7ece9d1372L,0xb2623a79f9b7e06eL,0xfab9b2742d37357eL,
|
|
0xffdf9246461417f3L,0xc04b15d7bdd0e922L,0x767bcee54b2dbc0eL },
|
|
{ 0x74c4ea4ed45efc88L,0x32d3d85491a534a8L,0x88967078554b2691L,
|
|
0xe8256015e336a410L,0x166469624b9f978bL,0xb433f06ca104f01fL } },
|
|
/* 18 << 126 */
|
|
{ { 0x8906d815457e1e82L,0x96abb1aa4c8a2c68L,0x2e63f37927ab2fb1L,
|
|
0xe092e15f5446dfaaL,0xa3a3f0926615c65cL,0x8b31116747c3f259L },
|
|
{ 0xfe2038782e5c658cL,0x38903cf526215773L,0x0039fca7237f1bd4L,
|
|
0x75dbcc016058ff17L,0x67ee6226a65aeb9eL,0x96999fa75cedcba5L } },
|
|
/* 19 << 126 */
|
|
{ { 0x04c6fd475ac4d191L,0x0067e474c825a897L,0x4a37c931404810c5L,
|
|
0x072d30e5c4a56380L,0xbaf3428dc897ba23L,0x9899935b53724382L },
|
|
{ 0xda5cc13ff4d41a62L,0x063047a0c6271baaL,0x49790bdc5cf48302L,
|
|
0xd8c34e5384c5a9abL,0x6cf28e83db5bc36aL,0x430dbb1497da9d42L } },
|
|
/* 20 << 126 */
|
|
{ { 0x59470e49c37acc2eL,0xc9e0f73611b85596L,0x47613c1e0fb30eccL,
|
|
0x1fbeffa3b62892f1L,0xddfeef49f8eefa16L,0x6f82acd9daeff719L },
|
|
{ 0xff1872cdacb41007L,0x06fe556c82d64c6dL,0x52a63a387695218aL,
|
|
0xa0d413a720802b88L,0x233f1f3118f4a473L,0x22ef7d6fc9d7da4aL } },
|
|
/* 21 << 126 */
|
|
{ { 0xeba1db6910dad9abL,0xddb62dacde3a5a42L,0x209c472cfdf5ad86L,
|
|
0x14a7ee4b37214540L,0xcaf70ce08339c9dfL,0xa95744554eb9189bL },
|
|
{ 0x90d7f241e9b39189L,0xf5edfd09af7f3eddL,0xc9a3444deb7ed52aL,
|
|
0x30d9e2f80085d9d1L,0xeb412daa4dc24fefL,0x55c0000b27786649L } },
|
|
/* 22 << 126 */
|
|
{ { 0xa9f34fa9518118e5L,0x430db0a51a22e790L,0x64b443a5d5a16ca1L,
|
|
0xaa3b64f4d8adbe45L,0xb49435fae0f0873aL,0xb8d67ce4a635d1e3L },
|
|
{ 0xad843f8a8a612b29L,0xa416ec7fd84a210aL,0x8b4dc6930984b23fL,
|
|
0x29a1b71b24640dcfL,0x8f2d7507911892adL,0x0ce384105bd4d518L } },
|
|
/* 23 << 126 */
|
|
{ { 0x1e1bef926c42e1bcL,0x91259dd60e04d449L,0xc029961e8875d346L,
|
|
0xfde51012a9e38f43L,0xdeaa1dc18892643aL,0x67e3b913217e08d8L },
|
|
{ 0x889a28c269b92b7eL,0x004c0f87b7446c21L,0xea812f67a2f98e77L,
|
|
0x42fc7bbe22c40b8cL,0x5e7f5f5a8722e381L,0xf8f209d932099e41L } },
|
|
/* 24 << 126 */
|
|
{ { 0x867379134a2965f5L,0x34724dcde67b3546L,0x2efe185ee92c712dL,
|
|
0x8b908f86c201e327L,0x3ab5528894f6b078L,0xb9b2b784ce0a5bf3L },
|
|
{ 0x5eab37ac879f6a41L,0x74271f672f2360f3L,0xf3a3edff304f1cf9L,
|
|
0x8992ecd8f6fd3e90L,0xff24d7c69f16e5edL,0x0844ab25def9a5c4L } },
|
|
/* 25 << 126 */
|
|
{ { 0x35cbf2191e14f235L,0x9ef33f3c4cdc1b46L,0xfd5cedd0299f7f13L,
|
|
0xf57b9bbf99379e17L,0xae25d3e3cd3d59a8L,0x72f9fc84f58cb31eL },
|
|
{ 0x87950fd84c94b63bL,0x15b52b4f7a4560a8L,0x382d36ec943e44baL,
|
|
0x567ce2e9337b0f11L,0x8136e9ce2fa44901L,0x7e43a7289b15eeaeL } },
|
|
/* 26 << 126 */
|
|
{ { 0xd1c8ed8814fb95f4L,0xc302e0aa29602659L,0x67abcce005cd67baL,
|
|
0x7a234cc022f8ae25L,0x7074face39f44e4fL,0x84a08afc7a9d3fb2L },
|
|
{ 0xfd149c88f56c1f32L,0x5b12cc15219e494aL,0x242fc50c9ea3c0e3L,
|
|
0x196cdba555b23034L,0xfd8cfa5e87b75206L,0x915e706488d55f47L } },
|
|
/* 27 << 126 */
|
|
{ { 0xb59480ba876145beL,0xd8f8fbbe8e1075ddL,0x0ba10292b5d9baf0L,
|
|
0x3a4b7f65e39a8754L,0x1b3a044c0f3c6520L,0x6b8b3397b1dff4f8L },
|
|
{ 0x40cef2285c182eb3L,0xbef82aec1b1cb92fL,0x5c4d2bfc2a97c5dfL,
|
|
0x41d2a046536ad077L,0x94ef34a8c497505dL,0x14e9aef48e0b35ffL } },
|
|
/* 28 << 126 */
|
|
{ { 0x2edaaaaaacaf1f3fL,0x9e3af72c80ebcc10L,0x3542fc42bcb1618fL,
|
|
0x6c04ec246709d851L,0x5fe9768ea9af4ce0L,0xe739d50eeb6ebe2eL },
|
|
{ 0x7b7da4ac876586e0L,0xb0869f1d64f5f956L,0x7f691c51fd563c80L,
|
|
0xea990d6926c775e1L,0x2cd96f1321b58889L,0xbc8074720f1aac2cL } },
|
|
/* 29 << 126 */
|
|
{ { 0x8e1fa5f8eb3283cdL,0x0107a3ba20e69342L,0xf99a511cb045b8dfL,
|
|
0x172d0c8933b51876L,0xb11efc2b9636d0f9L,0x16b2197c41570483L },
|
|
{ 0x49df27edacfdfd1aL,0xd9d2cedc366b9b28L,0x0289a75cab028c0fL,
|
|
0x522f567a4879464fL,0x3313728225f64030L,0xfa28cb1558d6753fL } },
|
|
/* 30 << 126 */
|
|
{ { 0xe5252210c6cd33f0L,0x6ba7f51f3f085202L,0xd2a87fb38f52e312L,
|
|
0xa5e082cff25f35efL,0x786a93c2b9df2f20L,0x68c7e1299a19bf27L },
|
|
{ 0x13a971ab8d710915L,0x3ca4f8c6939443c6L,0x8554699c70522446L,
|
|
0xdf42b7768e14e6bcL,0xc7969fa5f7f3dadeL,0x135b6b77350ded88L } },
|
|
/* 31 << 126 */
|
|
{ { 0x39e54aa472546076L,0xc0003f7f13e312beL,0x71106a4ffea91274L,
|
|
0x3868f957819851cfL,0x713b96e75c85bbc6L,0xfda8c2df610403a8L },
|
|
{ 0x0ea806c3a008cf78L,0x0ef9708353c0d1bdL,0x536950211e592838L,
|
|
0xea3773d5e9023982L,0x6eee3c0d4195754cL,0x95df7b568c4bead3L } },
|
|
/* 32 << 126 */
|
|
{ { 0x57edf71edf9a9f18L,0xbf834240627a0b79L,0xb37aba1aa6934160L,
|
|
0xd45b3d2c5e639a54L,0x62c6b9ad70bce957L,0x16bc35a75d7e87f3L },
|
|
{ 0xb021698266b4a982L,0xb56050dd0e51c9bcL,0x15aa692b478e4b91L,
|
|
0xdd67cf29be3fe25aL,0xf1ef75b006bdd4a8L,0xf71a285b41df627aL } },
|
|
/* 33 << 126 */
|
|
{ { 0xba6be58993032120L,0xea6dd691db99740eL,0xad8679463154648dL,
|
|
0xd1a36f4c28c0668cL,0x09a28c234dd76e88L,0x93fef0c7dc665bb7L },
|
|
{ 0xa78dfeb4860a0016L,0x06d2f868e21a9e02L,0x333a25a38486ade7L,
|
|
0x12aa13130e398a80L,0x04a44a5848d5b3e3L,0xe59293d47a7ec12eL } },
|
|
/* 34 << 126 */
|
|
{ { 0x6cdfb5faea2c1632L,0x6799cfcd7865f931L,0x4e1e5d25bf420a7cL,
|
|
0x7d4597db05d22ddaL,0x7548db12fceda1e1L,0xb4523ccdcb473578L },
|
|
{ 0x3d8dbad0ff889f03L,0xc591bb1118a9a222L,0xfac2b914a2cfcc57L,
|
|
0xbb67601abec9d9bfL,0x18dff42ceb55218dL,0xb36ef9ba7d2b6320L } },
|
|
/* 35 << 126 */
|
|
{ { 0x5b007ad1f3edf67dL,0xfaee9cada25fcfafL,0x18fc784a4d62e5c2L,
|
|
0x98deda878acb5f8eL,0xe9cfd10a6f888d8fL,0xbb0d729b053db2efL },
|
|
{ 0x7b09fa4f2aecece4L,0x3f72187cd4c44cc3L,0xf646aba05b8175a5L,
|
|
0xf213caeba5686ca7L,0xf5ce777badc5d40dL,0x15ff85d660eb9357L } },
|
|
/* 36 << 126 */
|
|
{ { 0xcdd18aee24e6df19L,0xa08ab968bbb3303eL,0xd5eb039cbab4f1a3L,
|
|
0x040d03a8fa7a48d1L,0x767c0ed23d66628bL,0x0c6bd388b1a6809aL },
|
|
{ 0x793aff3f029eeb91L,0x6db32d13bca798a8L,0x6aef5c1cc3816cf7L,
|
|
0xcfb25ea45fd2cd2aL,0x0715a7899f8e3312L,0x4a9ad4782a6b1a6bL } },
|
|
/* 37 << 126 */
|
|
{ { 0xa9f360a5d134c919L,0x10dba223dcfd0715L,0x7444b191dc9b4394L,
|
|
0x9a16a971e2f288e0L,0x0d05c511f6a49999L,0xca34eae26b65e956L },
|
|
{ 0x692febc418a83b76L,0xf3468c7b0b5f3511L,0xd8d3ce48b8e1ed80L,
|
|
0xbe8c5c302a6de231L,0x9c0468b74e680d8bL,0x773ebb63f57b88d3L } },
|
|
/* 38 << 126 */
|
|
{ { 0x9c2c33a5b726729dL,0xa86ab4ea5db2af56L,0xe987c5e3b0a36ffeL,
|
|
0xa6dba84da5fe8bdaL,0xe1fefa4b8ff617a5L,0x561cdb88a91ad714L },
|
|
{ 0xeb58f7fce145ddc0L,0x7b0e560a29c5ad50L,0xf8d6626593da0e76L,
|
|
0x7769b479db39fb92L,0x9149f1e3a3c49033L,0xb706057f3ac49c35L } },
|
|
/* 39 << 126 */
|
|
{ { 0xa678ba3fa527d157L,0x922aab268856a8b2L,0x936d3e85690b4771L,
|
|
0xed78dccee114e472L,0x9694ccb1d315fbc1L,0x8b1cf4482822d968L },
|
|
{ 0x336e670c4aca5441L,0xece24fb58f0e2824L,0x28d1578d05b758adL,
|
|
0x0a1be96a40c3f019L,0xed1586e30b659cd6L,0xdef180009f860dd6L } },
|
|
/* 40 << 126 */
|
|
{ { 0xc2885af90fe0f372L,0x2c756bef5fa6b808L,0x52b7f7b6068926bfL,
|
|
0xc9399c1ddb143b68L,0x0e77c689e4c61211L,0x7d01e37f15ad7fa0L },
|
|
{ 0x712fc61f188b2a01L,0x103685ec55a4100eL,0x721f9c02e5fdce96L,
|
|
0x61c8a0c5e784397bL,0x34d478351c686ed2L,0xc697c89cd155bbe9L } },
|
|
/* 41 << 126 */
|
|
{ { 0xc26dbc34f06a2cffL,0x4f10297631a80712L,0x758e33eda7c54effL,
|
|
0x44b5e4ff3682d103L,0xef05034722a05e6cL,0x9170365c48ff372fL },
|
|
{ 0xee49b61d66a15a71L,0xb5fd487995c2045dL,0x5940487160ad67caL,
|
|
0xdcd2d5f586388c40L,0x0b41a8e54cbd1f71L,0x8152c17040236ae0L } },
|
|
/* 42 << 126 */
|
|
{ { 0xf05b99d0995e9809L,0x036248a70295fceaL,0x7b70cf8f558e6ec4L,
|
|
0xe882639c7c48ce34L,0x4cc86feaf4f47d38L,0x976799cf6d81aef1L },
|
|
{ 0xdb202bfe8043cb43L,0x4c761cc5cef4f017L,0xe124bbc161f0c89eL,
|
|
0x77d1cbf55b5a3d20L,0x26e549fcff346940L,0xc6040a4c2325466bL } },
|
|
/* 43 << 126 */
|
|
{ { 0x1ed4d238e940e32aL,0x29d99c20139efcd6L,0x4cb7ef50c172b412L,
|
|
0x8a9c438931957225L,0x5d8872af60be4612L,0x7bffbb1be7e79e0eL },
|
|
{ 0x75bd89c1fc7d4e66L,0x723f9ae86bcc0379L,0x88f673b599c1b827L,
|
|
0x8d45d139ecf5148fL,0xf12e605ff97ad1e0L,0x567dec052f09c370L } },
|
|
/* 44 << 126 */
|
|
{ { 0xfb33b987b0be5055L,0x9864f903bcce94dbL,0x99b8da36aea9d09bL,
|
|
0x19e326113b622d3dL,0x6abde501dc38f903L,0xb1fe3f1867cb2161L },
|
|
{ 0xb053ec831e08cd7cL,0xba503b563298d32fL,0x220e98c8c2a79e86L,
|
|
0x66ac99511e1cba68L,0xf9520e1e644ab527L,0x3f222b9b4eb8abf3L } },
|
|
/* 45 << 126 */
|
|
{ { 0xae0cf2ff705cfc45L,0xf9d5dfb65a0449b1L,0xd0300b2cd4697fe0L,
|
|
0x4ac80d7e4dc665b0L,0x84fbd38d72c1677cL,0xea8306f08e683a0cL },
|
|
{ 0xe2381e65a469e337L,0x36b565d0b3ec173fL,0xc67689c700f3007aL,
|
|
0x9f0108992abcc81fL,0x867a5f8dbb9bf584L,0xef789cdd5a436b38L } },
|
|
/* 46 << 126 */
|
|
{ { 0xf8cdc9ecee11fa1bL,0xa78c73ed4c90edb9L,0xf6703453bbbddb82L,
|
|
0xd268b4e23020e294L,0x214cdd54958eb8cdL,0x2acbd31d4d7214e5L },
|
|
{ 0xf7c60c89cc733351L,0xb8c5cc642fa201fdL,0xaae1ca7f4c2acb10L,
|
|
0xf7e33be56d7f598fL,0x982c012fd920c3c8L,0xaa98a69b86751ef1L } },
|
|
/* 47 << 126 */
|
|
{ { 0xf5f548eb915ed5cdL,0x657ca09ce30f448bL,0x8750c4a44a30850dL,
|
|
0x1b329c4108edb075L,0x8c261df8ccbcdaeeL,0xa81720bbedd44638L },
|
|
{ 0x602fc21f0b91ee05L,0x6241265db7e8bc28L,0x1daefe5b106ac444L,
|
|
0x93fe5bd42c9deae2L,0xedc229e17f1ba35cL,0xd99244977e0da1f9L } },
|
|
/* 48 << 126 */
|
|
{ { 0x3176a43ab7a3ce87L,0x9fa09e975f130e73L,0x971cc37b9368e156L,
|
|
0x2cabf535b8981792L,0xaec2862e4d0f0bc0L,0xa1a48c183ce8c100L },
|
|
{ 0x288f4e694af2eae9L,0x778845f21f9339bdL,0x1ef5fdfd17dfaa6aL,
|
|
0xc784117e3483a6fcL,0xe8c82f05f3c5c19eL,0xf39b3c1d1da87ab6L } },
|
|
/* 49 << 126 */
|
|
{ { 0xa2539d4cc4ac73e9L,0x0308f91891488ba1L,0xa3e72f4459fae934L,
|
|
0xb6bbcc37f8c9c402L,0x345a2debc6edee3eL,0x0352f023b0df87b5L },
|
|
{ 0x67c9e7b8818c4f8dL,0x3a8714cc70f44977L,0x37b96e1295066bfaL,
|
|
0x617d9737c95d7f70L,0x60bb06ef759a360aL,0x97689b3f34f59fe1L } },
|
|
/* 50 << 126 */
|
|
{ { 0x17d0667fb2dd1febL,0xbfb92fe48862b2ccL,0xcfa0c8e9d5438a69L,
|
|
0x7bdbd4b1d9cf9ef5L,0x7616acddf373c87eL,0x0603d2b0cf8fd5b6L },
|
|
{ 0x6a80f25d46e31aacL,0xea8c0ad0fd424755L,0x9e2e5a5b3ffd5a2fL,
|
|
0x8882d271f3b143caL,0xe6fc9ad7904e1740L,0x98d1620af428ad20L } },
|
|
/* 51 << 126 */
|
|
{ { 0xc8c991a63292054aL,0xc90b11618ce93455L,0xdfa32238e200d1c6L,
|
|
0xa9c578d5303004b3L,0x9dd2c3881609e5f8L,0x068ec35d24b69108L },
|
|
{ 0x47e8183b2d1a3b7fL,0x6200d70efe3db580L,0x76012f3fafc089b0L,
|
|
0xba06dbf4bddea8a2L,0xd83b4af5da01a49bL,0xa3d4334ce16e87e6L } },
|
|
/* 52 << 126 */
|
|
{ { 0xb2fff4035b43e58fL,0xe80bd5740727be41L,0x048a59cbf9b52541L,
|
|
0xb79084e7f38d0b47L,0x763b0c95938935d7L,0x7cfc6180336b8735L },
|
|
{ 0x118d2a6f929b0200L,0x7e5789775a31948cL,0x9085999326009509L,
|
|
0x330533a33ad633c6L,0x28bdb910733f4c3eL,0x82c88f148fdca27cL } },
|
|
/* 53 << 126 */
|
|
{ { 0x1c346bb04ef444e7L,0x40a50060e6c22e57L,0x5eb02aa6c7a773b4L,
|
|
0xd748a0a0d23b190eL,0xb6ff7f02cfedb7dfL,0x3f8fb35b30f8bb4aL },
|
|
{ 0x245b1c232dc31174L,0xa1e156579af25f59L,0x1ad1a2315e2393daL,
|
|
0x9430ed2dfd7c7073L,0xc4161d4f580fbc0fL,0xa2bebd3fa0f1dadcL } },
|
|
/* 54 << 126 */
|
|
{ { 0xace743b6baff35ebL,0x84ac3ce8ac6f38f8L,0x81d41297106b44f5L,
|
|
0x33f6bbbbaed20aa3L,0xae4dd66ceb420ee5L,0x87553aac994f0777L },
|
|
{ 0x26275ebff1e3647dL,0x3b574c4fd9eeb474L,0x58fe2a16929721c5L,
|
|
0x748480df932030d0L,0x3a30032641bb5f68L,0x0797fad92c06d1adL } },
|
|
/* 55 << 126 */
|
|
{ { 0x65356242c7caa811L,0x780fe23f4506bbd7L,0xa741a51042407c02L,
|
|
0xb8ccd27f5ef9eac3L,0x137f4a573ecf5766L,0xd495be0d15936fdbL },
|
|
{ 0x5a419656109c93f3L,0xd2f7b65dcb12affdL,0x2305a070ff830421L,
|
|
0x6d00f1e9684d5a6fL,0x3de9d1de91aa391fL,0x0b5148c10acb6de9L } },
|
|
/* 56 << 126 */
|
|
{ { 0x209fa6e68ca7ec95L,0x17808b0c107a1047L,0x99bbeb5edfd270cbL,
|
|
0xe3d57c1dc25e2d6eL,0xb90b0c107ba1237aL,0xa7e1b8dc4a0d6856L },
|
|
{ 0x97d5b46136a9a07eL,0x931251e9125ea29cL,0x4177fd10fc8868a8L,
|
|
0x1d3538b7b7cdcdf4L,0x889008c8ed3ff9dfL,0x30573ad2229b9413L } },
|
|
/* 57 << 126 */
|
|
{ { 0x11596662924d413fL,0xe797d0a70e5d7bf1L,0xaa05dcd28452ee62L,
|
|
0x6e10e77f5d5ddf1cL,0x46b72cda5fbd184aL,0x3adc1edb5b25c0c6L },
|
|
{ 0x640de5b05c732e3aL,0xa7d4f0f5c6739747L,0xbc11978d1426527cL,
|
|
0x979276eccbee0053L,0xc44347a7304e8811L,0x016c01e11f5ececdL } },
|
|
/* 58 << 126 */
|
|
{ { 0x78b2f1a15ee57666L,0x28060d1576a2c09eL,0xaf0cb38df632a5deL,
|
|
0x93ce93eea284cd43L,0xe3670d0af35dc1f5L,0x3b8deea527971072L },
|
|
{ 0x3b88b1158eea4303L,0x43ff3b22aabde038L,0x8d69e180c813d623L,
|
|
0x218f5b853aa7a08eL,0x6ee1544adf74f239L,0x0d7abf20fb8772f7L } },
|
|
/* 59 << 126 */
|
|
{ { 0x1d881d4eb7716840L,0xdf83a03b86bdef07L,0xd534c4e4dc7ee69bL,
|
|
0x1169f1cc6e264c79L,0x85c812d1b7690d17L,0xcc3164adec5f2ed1L },
|
|
{ 0xb91a14180674e87eL,0x5dfaa279969188fbL,0x434acad5e242b969L,
|
|
0xa51b5c63751c4e51L,0xaa9089b7874f9aa2L,0x8758f9e51b8397e5L } },
|
|
/* 60 << 126 */
|
|
{ { 0x422ad88e57fd35feL,0xd4564b96b99a11cbL,0x78939992238baebbL,
|
|
0xe66ddcaf4b30a709L,0x00873d5f7812ea50L,0x7317f9dc6784aabcL },
|
|
{ 0xf94afbdbe0608ba4L,0xfff893618896d745L,0xa3348af5cad62808L,
|
|
0x13ed4507f349f51bL,0xa73d4bec1186324eL,0xf0b48189a20022d2L } },
|
|
/* 61 << 126 */
|
|
{ { 0x87d117858b8efa4cL,0x724439d6e9c2ee6aL,0x33ab2a03606fa0c8L,
|
|
0x6ede5b55f9779d87L,0x858b7dd0759445cdL,0x33683c817a5ef23aL },
|
|
{ 0x0f093175221c3443L,0xedcf2aaf889195a5L,0x9f189ebc814abec7L,
|
|
0x6a64999c40235b9eL,0xf98dc212984438ebL,0x97e2d102ba86e7caL } },
|
|
/* 62 << 126 */
|
|
{ { 0x337b9cbce3db0718L,0x1f2f55833d1796feL,0xa522b76f68c2a69dL,
|
|
0x4c1da7cf5375cb22L,0x690a2e7f50bb0d7fL,0xa734d4756689b6eaL },
|
|
{ 0x918592d5867ca0a3L,0x64d1c147c4d15e28L,0x4d8c3e22656f8219L,
|
|
0x5e028bb2170f59c3L,0x41e8b84449875858L,0x1d928cc90c599178L } },
|
|
/* 63 << 126 */
|
|
{ { 0x736dee2cf44db09cL,0xfb5035c07257b4e5L,0x3e3a7bf6bf0b702aL,
|
|
0x4910a0165f257c0fL,0xd80b891d98437b4eL,0xf9e55d55076d8587L },
|
|
{ 0x4e4ed7a79b4fcf4cL,0xaaf417f5581acfe3L,0xb1ae2a7ca3b3f920L,
|
|
0xa666bb6263ee4781L,0x2fba297e63684f04L,0xd6e662658d83bd6bL } },
|
|
/* 64 << 126 */
|
|
{ { 0xa58a27c58a541be6L,0xaf66949954fd7683L,0x2431826600079a25L,
|
|
0x113f6fcf2606caf5L,0xf6ff2be316cb28c8L,0x8f7fc60e3c17caa6L },
|
|
{ 0x8ea577e07d35e26cL,0xc3e744c0f0628903L,0x4b28eff4592a57eeL,
|
|
0x76e1f87c5e3f67b2L,0x40d7a676fb008902L,0x68a9dc764b6e6b7eL } },
|
|
/* 0 << 133 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 133 */
|
|
{ { 0x76e2751a12575913L,0x2c6059914a5f8c4aL,0x58322dfb71fba662L,
|
|
0x228aec085e0886afL,0x8d83b6276aee544cL,0x338f5fb6e29f9639L },
|
|
{ 0x1ba4cfe0bf5e19faL,0x2eea84c5b9e4f8f6L,0x7e0eed58cee95d92L,
|
|
0x2d29282abe535540L,0x866638b607a9a1f4L,0x915999776ab8dc82L } },
|
|
/* 2 << 133 */
|
|
{ { 0xa16c79cfaf4d260bL,0xfe853f6cfab3c3c8L,0xb8bd6aa0c2f47e68L,
|
|
0x277d590f2c9b4914L,0xb6d1c810097242a8L,0xcf2f3d8e45f75512L },
|
|
{ 0x2176162b74a20c3bL,0xeee8bcb82b2bcddaL,0xfcf8c0d1a503aee7L,
|
|
0x5d1f94a57af4dd78L,0x8f0bc1a62ab43be4L,0xd22dbf16ba9e071bL } },
|
|
/* 3 << 133 */
|
|
{ { 0xbf87f30e3790b47cL,0xd3d3f1e25ab52ae8L,0xd5fd32bd50ec0ba3L,
|
|
0x7de8fe0ae60d1e72L,0x52d77fe0e14ff2d3L,0x9b6937db55ca47e4L },
|
|
{ 0x39e3d19f53e94fa3L,0x8d962a4fbd7827e4L,0x3bd70c7afe92c6cfL,
|
|
0xa3fbc06869a82904L,0xe263f00ed96d1d9eL,0xe6c9781f75c0c24bL } },
|
|
/* 4 << 133 */
|
|
{ { 0x705bfe37b4e814b3L,0x22f0de61702013c6L,0x811e77a9bc456797L,
|
|
0x4f52c4e617081a2fL,0x87405d819fe1640eL,0x53fa82b7707711d7L },
|
|
{ 0xdc6fff830ee4aea6L,0x8413e22ffd60373dL,0x0ecb66bea9cf3eadL,
|
|
0x7418372e87139b8bL,0x6aaccf295e42b4d7L,0xb6dc592531fc932eL } },
|
|
/* 5 << 133 */
|
|
{ { 0xf1c8d00de460fe00L,0x5692bfee528da7c6L,0x9e4dd700ac8620dfL,
|
|
0xcc43e73d9d6fe740L,0xc94060d3e76dcba2L,0xfcdf8ba6d398914fL },
|
|
{ 0x540942e7502f8587L,0x5def85040de058fbL,0x63e0c7855292b0c8L,
|
|
0xe90405282e558983L,0xe25727a16baf4a31L,0xb9bf28f0acf64d7cL } },
|
|
/* 6 << 133 */
|
|
{ { 0xc7c8364f09d26382L,0xe16988737bf32d9fL,0x97bac2feb726391cL,
|
|
0x521426364a7c0b57L,0xe3e596482cdec222L,0x4ee7238cf44e0a98L },
|
|
{ 0xa6d05a21f61cfea8L,0xa1059fb7efe6a26fL,0x482a65b342416fa4L,
|
|
0xdc5727e1c71e7a94L,0xe6b0fb6ec4767f1eL,0x3d0d626d6510599eL } },
|
|
/* 7 << 133 */
|
|
{ { 0x59f5df1b2a8f9f78L,0x6bb161d992257e60L,0x2cf060beb7b2eb14L,
|
|
0x98e72799aec169b0L,0xdde683927045fdb9L,0xee5e0aaf461b27e8L },
|
|
{ 0x80250c744c0ee047L,0xdd3881f597f0677bL,0x0ea56921a4459b6cL,
|
|
0xf7793cee26df8d7dL,0x33bfa09be42d1913L,0x9f0636f74ccf5139L } },
|
|
/* 8 << 133 */
|
|
{ { 0xfa3b4c8eb88ee8f9L,0x1f288e60b521ab57L,0x06aa39562e8c4d8cL,
|
|
0x4981c3e5cf89935bL,0xbdbd0c4745fa071eL,0xa78f831c496073beL },
|
|
{ 0x09a72986a4e5c001L,0xac527731709cb728L,0x9a64b5b3988f2781L,
|
|
0x6ac9440d73b1719dL,0x58ad54c7e3d2e807L,0x1c1574488f06742bL } },
|
|
/* 9 << 133 */
|
|
{ { 0x3220a099a5e437e6L,0x11a1b1734dc5bdaeL,0x1ad9e736b64c9b8bL,
|
|
0x82b6a3d4ce40acadL,0x54e1eef8915aaa8aL,0xff19be481f3a1f54L },
|
|
{ 0xadc4c5250b64a2b6L,0x6637bc8e12caf63dL,0x970d08b01206a661L,
|
|
0x97c9b9bde57cf6c2L,0x228ee4712b89b7b7L,0xfeed19ca837cb79fL } },
|
|
/* 10 << 133 */
|
|
{ { 0xcd36c981a816f4d4L,0xc99316c27712a72bL,0xd32cb20339e671aeL,
|
|
0x79ff1889f67f6215L,0xf9fe7448cd08e91eL,0xdc9b277776f3e605L },
|
|
{ 0x8af30c2e7c1609a6L,0xed3224a3e54cdd0bL,0xe73f56ded1dea6acL,
|
|
0xb836eb783e37a390L,0x9f0dcdb2c78a0510L,0xc37e67a39e6109f0L } },
|
|
/* 11 << 133 */
|
|
{ { 0xab419eb852e0d552L,0x86c76ef8ae3d06ebL,0x219662b4f7c6342fL,
|
|
0x2820299e548f6717L,0xc4d0d47a8a2aeebaL,0x4c98069895536593L },
|
|
{ 0x3644e55ff42cd505L,0xe109b64ae47e0b0bL,0x91f520a6c89788aeL,
|
|
0x35f6dc577699087aL,0x3484f5b6b77deb8dL,0xc22a63a47f3c09e6L } },
|
|
/* 12 << 133 */
|
|
{ { 0x6b5b7b2a75c953b2L,0x927ed77ca7f1cd5bL,0x2e8c53994cba0e5eL,
|
|
0x03aeb14a3f4a941bL,0xedbad9a0a1385c8aL,0x925a49c167fd2258L },
|
|
{ 0xe7e368ee3365ffedL,0xcc4aad2dd106eb87L,0x4ce908daa980b53bL,
|
|
0xd3f4954016929ac8L,0x613c804dd5c05c32L,0xa42290ccd7973344L } },
|
|
/* 13 << 133 */
|
|
{ { 0xe7437974c464c24fL,0x70c04156d36bdfecL,0xd94c80fcb2d5d96fL,
|
|
0x4a1fcf19d2cfea9cL,0x443478592f6df796L,0x0c908d0159743bd2L },
|
|
{ 0x78949087d165a62bL,0x6c3f9021632f4e1cL,0x3917b925a94bb004L,
|
|
0xe153ef092b3f87e3L,0x6aee1027ea706338L,0x953ab2959733bd02L } },
|
|
/* 14 << 133 */
|
|
{ { 0xad49cad49855d008L,0x23442cf94b273d85L,0x3a3c8752e3dd8f65L,
|
|
0x0ca5d24bedf84ed0L,0x3d0580938b4f8f96L,0x1cea59acf9b9ae03L },
|
|
{ 0xf17cbbe23a06567eL,0x49cf5294f090338fL,0xcf8cbe0da93562c1L,
|
|
0x66683f21b986b71cL,0x3c96750cc87c9e10L,0x38e62db63dcf2f32L } },
|
|
/* 15 << 133 */
|
|
{ { 0x807a519047f99946L,0x49e03dcf01615a37L,0xe813287c99590bf6L,
|
|
0xc9caf30ddb62835cL,0x0733c49d4df78781L,0x4fde30fd4815d3adL },
|
|
{ 0x2809b853f9a2610dL,0xf2b139b9dc050142L,0x52a40a413c23a4edL,
|
|
0x9333086b0a104df2L,0x04a90c11e2a65950L,0x4c6a15c4dc24341aL } },
|
|
/* 16 << 133 */
|
|
{ { 0x33952177a98cf218L,0x841d9e1f579ee53aL,0x1084d61e0a285bd5L,
|
|
0x3935a84e71171b1cL,0x8ac2433cf29b29f9L,0x5dd868b56dd1e9bdL },
|
|
{ 0x88da04788d102390L,0x1140735a657400d1L,0xa792a25f9d5b19e1L,
|
|
0x9ee015cb6a27fa79L,0xea3bf8b57ba16a8eL,0xc5f0cc26c15fde67L } },
|
|
/* 17 << 133 */
|
|
{ { 0x033708d2e02e9feaL,0x2b588d1e222f437dL,0x998442d6c6b47013L,
|
|
0x4033d62fb8ac1fc6L,0x9b8fd348877c726cL,0x1a2125fa5bea5a49L },
|
|
{ 0x04a2c1d680b8afd9L,0x3d52c9d2a40195c1L,0x56b204e6655c0b30L,
|
|
0x55ee14ef520b3464L,0x23fc52e6b5bdd96bL,0x445cfd7a56f4b269L } },
|
|
/* 18 << 133 */
|
|
{ { 0xc8985c2c5fee6426L,0x8be749496bb7bb8dL,0x12967576659363b4L,
|
|
0xd1b6ded9b969b221L,0x586f28929819fc04L,0xec6b03e5addd6307L },
|
|
{ 0x3f0e96cad4da6627L,0xc866c95c14860d00L,0xb038867c9725f9a8L,
|
|
0x60cd3afa1caf2547L,0x6f2cc04411dddfafL,0x49551f249d0af0faL } },
|
|
/* 19 << 133 */
|
|
{ { 0x04a68337177e2e7cL,0xe20b21c0adb79464L,0x9b30d3437e42ae4dL,
|
|
0xac7a01d7f86c5767L,0x3ea34e385381db5cL,0x3005a0c39235f5bcL },
|
|
{ 0x853eb43167b4a5c5L,0x92f26a35584e4b8aL,0xa3d25e5879bb470fL,
|
|
0x7963d90a5eacbb13L,0x08ca7969212e3aefL,0xb5ec6582df92bfffL } },
|
|
/* 20 << 133 */
|
|
{ { 0x2e152d95ee2c3290L,0x8437df2e4a9ceda4L,0x4151754e3c7ebfd1L,
|
|
0x556c59a888f80aeaL,0x8d099c5d8de44dbcL,0x9ecce7fc77abeeccL },
|
|
{ 0x5e0a0f383aa311cfL,0x99ff1eecb8f2bff5L,0x5ae0b483b5dcf488L,
|
|
0x11212c4591483a02L,0x99fe0738312134a1L,0x3b855db0a72745efL } },
|
|
/* 21 << 133 */
|
|
{ { 0xb70bf73230261470L,0x8c9b7c4bc74a180fL,0x4c648aef88a9d9acL,
|
|
0x3d9f7540a10f98bfL,0x8ec2a3a3120d55f5L,0x1707c1b0baa5a600L },
|
|
{ 0xacba8da9103f2f0bL,0x96926dc0c7194236L,0x00358df7584499dcL,
|
|
0x74c27d0e538c0a15L,0xc675d079de960a77L,0x575b042e89f41f6bL } },
|
|
/* 22 << 133 */
|
|
{ { 0xd17d99529703d919L,0xb25ecc411477faebL,0xa5c66a58a9aea2fcL,
|
|
0x83754d683accb00cL,0x6a9ae76a25901044L,0xe437981b2565e035L },
|
|
{ 0x441ec0d96f45fa01L,0x35e40d126a697636L,0xba2fbab59bb3c2fcL,
|
|
0xc038be03e94b245fL,0x366b4bcc0c1672eeL,0xa14a2c10f1ce6d55L } },
|
|
/* 23 << 133 */
|
|
{ { 0xef32d94febe1dfe2L,0xdbf53d4271494ea6L,0x72dc5fad24cf0c2dL,
|
|
0xa9247adc66dbc21bL,0xe31ff66ab130da59L,0x8cb97c09e86ab63aL },
|
|
{ 0x204020e2f59ebb80L,0x56f6d8b7cfd0f965L,0x7522a692b1518dadL,
|
|
0x8e7c999f5f231e2eL,0x2eff5904b4406177L,0x8440cee87bfe2363L } },
|
|
/* 24 << 133 */
|
|
{ { 0x37f50e43892c8eecL,0xf06a2f047d85a7e2L,0x3916af85e1d11150L,
|
|
0xf56e852f6785ae1cL,0xbf8c72adae6ada8cL,0x1fcd53e3e13285b2L },
|
|
{ 0x5327920cbd56d348L,0x82a394fb445658a8L,0xa71328573caf3792L,
|
|
0xb15ab34b550ffe1cL,0x818980666a5d4e4fL,0x0bda153b2f854f9dL } },
|
|
/* 25 << 133 */
|
|
{ { 0xf664f44407aa3d00L,0xcf8901664704e2d6L,0x1802f662f8c2fc8dL,
|
|
0xd52496b8a47f0da6L,0x37f71d8c75001c8eL,0x7ad8e8c29cad3ba7L },
|
|
{ 0x666afc25825515f7L,0x3a871c76a729e498L,0x5dc21f1108479e3eL,
|
|
0x78ff145966c4331eL,0x8d01e2352dd3deb2L,0xc68445e9dbc91fc3L } },
|
|
/* 26 << 133 */
|
|
{ { 0x8f2d9aae98ea13f6L,0x3e75ba40ab97bfb0L,0x14dd24e635e1fe35L,
|
|
0x14abb0735f88d9b9L,0x74b2c6a801d4fcd6L,0x4905dfe7744a09bbL },
|
|
{ 0x349348c077cd538aL,0xdec247f5f7b6d035L,0x737e248dc455d417L,
|
|
0x608a5529b6fe5d92L,0xce0ba0bccd7dca64L,0x022bcb18c21175c6L } },
|
|
/* 27 << 133 */
|
|
{ { 0x79fe5372881b120aL,0x4878428aae98aeeaL,0x5c6a7f7d09511acbL,
|
|
0xb7be08de3b046481L,0xfb91990b8b35f13bL,0xab734f604ebdd374L },
|
|
{ 0x3d4955f1197690e1L,0xfc82767c7b376dc4L,0x7cf3db85b8c659c7L,
|
|
0x4cfb6f4b03202723L,0x8b79311746141d27L,0x94c6ee67867292c4L } },
|
|
/* 28 << 133 */
|
|
{ { 0x77a31009722730feL,0x93707ac4d5cdd297L,0xa290be39d3811e8cL,
|
|
0x831a9b9592a5cdb7L,0xc74cda84e7342270L,0x964661903f48affcL },
|
|
{ 0xb0496cca5520b0f0L,0xc8742cd9bae930ffL,0x3a30737aeaea703aL,
|
|
0x0a8e6fb7fb758854L,0x9ab9523e6796f4d1L,0x36e6c05dfdf7140fL } },
|
|
/* 29 << 133 */
|
|
{ { 0x4c8ec1a3ccedff1fL,0x8fc58987ca74bd5fL,0x70a6b71cf768abcdL,
|
|
0xb9971cf5ed60a02dL,0xbb2aedc8af2f9a41L,0x4ebf90c76032c98aL },
|
|
{ 0x8e69b4c4d3752262L,0x350f201474ba8e8aL,0x7a164f6724d0052dL,
|
|
0x5aeb80db61d7eee0L,0x626a6c9da63583bdL,0x6246637fc3f2196dL } },
|
|
/* 30 << 133 */
|
|
{ { 0x2077dfa1817d444bL,0xdda9c7fcdf855b15L,0x577603be04b31d38L,
|
|
0xc6beacae7a140cabL,0x8cd9dc019ecbed91L,0x6ea8591295ae114eL },
|
|
{ 0x6fb29a33fd47f1b5L,0x6203bca6223cb96aL,0x2459d85a7c1a3580L,
|
|
0xbab5922d6410a3c0L,0x543be274cc7750f8L,0x1a653e1c42baea3aL } },
|
|
/* 31 << 133 */
|
|
{ { 0x616abd271dbeeea7L,0x0684c14fe2189d8aL,0x0d2bf3687354d862L,
|
|
0x8b0cfc06a8bdcb0bL,0x187147b49661e548L,0x07509bc358edde6dL },
|
|
{ 0x7b2a33bca78c2782L,0x5f41b8379ec5fa24L,0xa6df5de574539201L,
|
|
0x3510f650093f8f7eL,0xe4d1c06ed14aaa71L,0x4d1b1ca2b0470581L } },
|
|
/* 32 << 133 */
|
|
{ { 0x3b62315064ef6a95L,0x97645381aaa5b792L,0x4bc2c31c56471100L,
|
|
0x4a0e73bb1bae8d2aL,0xbfc0770a8df1f76aL,0x5089916fa7bb16caL },
|
|
{ 0x2afe5b1cf31fe82eL,0x0b06831df0119977L,0x97caa333a1af2a82L,
|
|
0x93cb92c5dafed6cdL,0x09553e7e92c3b2e3L,0x3d9c4b7d61af2956L } },
|
|
/* 33 << 133 */
|
|
{ { 0xe56c89b06910185fL,0x1cd06d19ac47667cL,0xb35e6ae5fe41a4ffL,
|
|
0xdc2fbaf959e8be08L,0xa9e6df08f8cec40bL,0xcab91f8ffe63ad2cL },
|
|
{ 0x1e3bd193ca2cc678L,0xe1830cae06bb40f2L,0x3b8b33d6d69985abL,
|
|
0xb6b7e8433895d8a8L,0xec3882909fbf6b31L,0x012bec2ac37d64cfL } },
|
|
/* 34 << 133 */
|
|
{ { 0xff2e88fd33941b4bL,0xa2d9730a8d85cccaL,0xa23f8cfa16f7d7a1L,
|
|
0x82013193d39a250eL,0x3b119882ca0fd8a8L,0xcff642ac1a438706L },
|
|
{ 0xe4a3a95f65e5688cL,0xb2a6c836c31243d2L,0x1b7ec5d2194d1f42L,
|
|
0x51ab34f814e4f7a2L,0xa3e3f135d3583ca0L,0xbca6ecbade9b91f2L } },
|
|
/* 35 << 133 */
|
|
{ { 0xc85820c3002f07caL,0x090365320e00dca7L,0x0f3b3166f4e4d8c2L,
|
|
0xe694eb4479460f00L,0x50d0ed14c15e04ecL,0x8c9998abcc86e3bcL },
|
|
{ 0xb82581624aefa561L,0x6351aca610050c0eL,0x4e60399acc8d2342L,
|
|
0x96da3af7f633dc88L,0x1af763ec09202348L,0x76b0e49d3f0d5f76L } },
|
|
/* 36 << 133 */
|
|
{ { 0xd83f574a08f84746L,0x48fc9715ca07f5f8L,0xb3d5d0d2dcc51638L,
|
|
0xc2a5e3356153bdcdL,0x8242cd9a8aa4ef74L,0xe71ba25b0bdaa0d0L },
|
|
{ 0x4342d4bba4ff172dL,0x81db10dffc1341a2L,0xdd93dd877dacb140L,
|
|
0x6f8a4e81d12d347fL,0x0d4e7e461bc369beL,0x3ce10a771fafd0c5L } },
|
|
/* 37 << 133 */
|
|
{ { 0x2fdaa3bb8cb896a3L,0x2fb82dfd913bb303L,0x5d814a50ba9ca09aL,
|
|
0xc3de6aa426112215L,0xd0d5c98b25a0c9fdL,0x54004b3e0eaae4a8L },
|
|
{ 0x410e2cc209358663L,0xf7e3d08a501c4ef5L,0x3d86434dd334aa19L,
|
|
0xf70ea577772fc0cdL,0xa0eded5aa607c4f2L,0xba0bf1bc36222b2dL } },
|
|
/* 38 << 133 */
|
|
{ { 0x8d901e759632c4d6L,0x0ed9a7ebbbd94698L,0xfd2169dbbf7bcbc1L,
|
|
0x2b4d168d5b302c66L,0xd42f9dd73e65f24dL,0x73e0c22c0eed0022L },
|
|
{ 0xf9091588f5d2dcfbL,0x81c7c01eb8715b78L,0x2be06165dde6a9d6L,
|
|
0x64b5902dcacd6ca2L,0xdcd510d70159d3bcL,0x5b71995b42b5e30aL } },
|
|
/* 39 << 133 */
|
|
{ { 0xa9c474eae7a211edL,0xc7bcdd20d8170f76L,0xd9aa8d9734a15487L,
|
|
0x26235292933c16b6L,0x289d47d5d8238fc0L,0x39f10fb3ae27ca16L },
|
|
{ 0x822e187f1c016ae1L,0x8e93b15f2be46859L,0xe2ba61a60b0a055bL,
|
|
0xd8f33ddecb8de893L,0x016652d6379657efL,0xf4eb08f9e7d9eab8L } },
|
|
/* 40 << 133 */
|
|
{ { 0x5559dd31e67145b6L,0xf2d905b45b2427e7L,0x0d840fabcaf57d0cL,
|
|
0x9625866578742ab6L,0xc85482ad409c1c8eL,0xdca2a058adaa6167L },
|
|
{ 0xec26ad9a0c8885fdL,0x1b93b8a22a600cb2L,0x340aa7fc2539986bL,
|
|
0xd7674876a23dee41L,0xa948a9292e1a9837L,0x9ae67d2a71438da9L } },
|
|
/* 41 << 133 */
|
|
{ { 0xe753114a8d6a98f5L,0xb2d7d1e1f6ad93e4L,0xfbcfe0cf1935714dL,
|
|
0x9dc2d293e859e729L,0x674c170889a703f2L,0x87744b0252063099L },
|
|
{ 0xa1721de04b25966bL,0x059292573a285fcaL,0x5b02ca39e8ce75e0L,
|
|
0xbfdf0fb939e57da4L,0x554378cd6388a964L,0xc53fc5c8f853d7faL } },
|
|
/* 42 << 133 */
|
|
{ { 0xcd3b60e352f51554L,0x6292fafab44ad7eeL,0x670561c79513741fL,
|
|
0x95defdf3b9ba16a7L,0x6c0beac1adae36cdL,0xef05c24a3e8aabd6L },
|
|
{ 0x74208a02b23efc25L,0x71930e02c22172d1L,0xbdb1f1c6f5ccbffbL,
|
|
0x358b483c504d9cb3L,0x48b5887a9a48a4baL,0x289256b4e48f09e7L } },
|
|
/* 43 << 133 */
|
|
{ { 0x671bf1eebc2f256aL,0x530faa653984ca7eL,0x0a6d18955c05da6eL,
|
|
0x219de918118fe96cL,0x289b9645bb7eded4L,0xe905c4729588f006L },
|
|
{ 0x56d0cd9ac9d61133L,0x8879550079a4f743L,0xd05e910199c2aff3L,
|
|
0x7e91f7c985e52c8bL,0x7fd02f83b5c5d473L,0x4b43b6453c59330aL } },
|
|
/* 44 << 133 */
|
|
{ { 0xeac6f447d56bdf1fL,0xb22e8425c2b502ffL,0xe1cc9d3dfca5a501L,
|
|
0x8192bc29b64baf39L,0xeb2c901a52ce849eL,0x7f5f38b11dd506f1L },
|
|
{ 0xfb3684b10f0a1d68L,0x16c4aacde9240ff8L,0xffa682435a4d8995L,
|
|
0x27264ab554e4c95dL,0x9aa40cdc4f34ffaaL,0xcb8a30a35fd818eeL } },
|
|
/* 45 << 133 */
|
|
{ { 0x912f0a7dfa88792fL,0x2ad9249f5090716eL,0x4b828a6fb96e6e31L,
|
|
0xe805f0588d7f2095L,0x72e95cb956e00978L,0xc95354667651815fL },
|
|
{ 0xc877181a08df5b53L,0xae055dd8779c3302L,0x3f9e6dd90b4e68d2L,
|
|
0xdeb15f1308fbb2f8L,0x5f129c1cc5802a96L,0x7482e4af3cc51022L } },
|
|
/* 46 << 133 */
|
|
{ { 0x98904777ab695f56L,0x6dc472c18989e518L,0x6749d25c82031d40L,
|
|
0x5c465922c36202f1L,0xb3b5b9aff31fe542L,0x855263bdf98bc09dL },
|
|
{ 0x40ee01747eb4789fL,0xd64ae0d4de4e92bcL,0xbaea76a38995e69fL,
|
|
0x3f22b2e3d972751eL,0x5a197daa2461f1b4L,0xbd15682a5097b93eL } },
|
|
/* 47 << 133 */
|
|
{ { 0x7f251143534f8547L,0x213baf14222a161aL,0xae993737ad1e6005L,
|
|
0xdc70867ff8b1cc7eL,0x41e880f3bb22e11bL,0xe36f54cbd2d6bc45L },
|
|
{ 0xa42e819d4d65ae97L,0xdc57be4de8592604L,0x8a89777fabe73b50L,
|
|
0x435fedec72e26f5bL,0xe8d3cd8251ec79f0L,0x9574d6ea67f407b0L } },
|
|
/* 48 << 133 */
|
|
{ { 0x39038863f7f35053L,0x421a17f3328787d2L,0x38aa682ef3d8310fL,
|
|
0xb52d41e8f4123153L,0x4fbef3dd7026310bL,0x0c6bd7adf6ff5692L },
|
|
{ 0x3831c6b2a9be5d0cL,0xb5c9ae85e8d328b8L,0x76d26abc6516bba4L,
|
|
0xc237f9a5446d35a8L,0xb2b16c0ff012a8d0L,0xddf2b7fe0ee0315bL } },
|
|
/* 49 << 133 */
|
|
{ { 0xf401366a7dd4243fL,0x7db92881f434ba76L,0x5b5bacd737ffc502L,
|
|
0xa53fe0e802cb994eL,0xf6db539ffb00cb96L,0x0bb288b379878966L },
|
|
{ 0x275c108c0c3d4b7fL,0xe57222d267236ba2L,0xc754d31890683aa1L,
|
|
0x883a41ef2345460fL,0x8e6b7ce8b572fd14L,0x7649c29237d21925L } },
|
|
/* 50 << 133 */
|
|
{ { 0x46302515c4af281fL,0xe2a9633c3513ea87L,0x1175276fb3e96864L,
|
|
0xda377e32f4ed1228L,0xacf223a1fa6be904L,0xf442c41abc01057bL },
|
|
{ 0x83d766c38a69db33L,0x933dd0974cef397cL,0x094b21b575fe43cdL,
|
|
0xf16ee57ab3141dd5L,0x4a8d0d6cb981d196L,0x6bd246c3730075deL } },
|
|
/* 51 << 133 */
|
|
{ { 0xd9ae9faa91eab3f7L,0x8520bebba2bcdfc1L,0xc681d5a0ee94353aL,
|
|
0x980871dd316ee7acL,0x7d70b82bcb401c4eL,0x150706c1bc6885efL },
|
|
{ 0x11709bbed3d8663aL,0xad69df943ace1806L,0xf889daef1a36f12cL,
|
|
0x6ba376b2560bb749L,0x5342cd7a0d95f8b9L,0x5d14201273b4554aL } },
|
|
/* 52 << 133 */
|
|
{ { 0xbb85b640056ad6c2L,0x7c51ef96ac074372L,0x1c7ce31cf10b43fcL,
|
|
0x08e4101b26f4d3a4L,0xd18511c43968459fL,0x00e20c3fd6d07839L },
|
|
{ 0xd5bcd598e4fcdc11L,0x99e9a4d0c877f6a2L,0x9c5dd9d0bd491646L,
|
|
0x83918f609bfd7a1aL,0x4bc130cd7e2b95a3L,0x668825fbfbc31c83L } },
|
|
/* 53 << 133 */
|
|
{ { 0x7e8947bd5568b75cL,0x43419ecbdab8f822L,0xeb52a83a7b8fa996L,
|
|
0xbc674ff32d1a32c6L,0xdc086f84ce405eeaL,0xebe3e087f8918ddfL },
|
|
{ 0x476099ecdb152bc4L,0x0cb491c52d3718c3L,0xa7c49cd69da8517fL,
|
|
0xc736fcf51ab8fbadL,0xa00b403ba24fe115L,0x01f6e5bfd976f549L } },
|
|
/* 54 << 133 */
|
|
{ { 0xef8e12edf15ad86eL,0x216be9828c20441dL,0x10ccd4f85c45e821L,
|
|
0x8a12f6037c9745e9L,0x56212b09da6f1b2fL,0x5a81d69338115f05L },
|
|
{ 0x5aead3330a4405a8L,0x7024a76c03221eddL,0x9c101d0250e6a610L,
|
|
0x6bcb22ffc1b6d54aL,0xf96cef62cf787e89L,0x9c9bde7b79341d83L } },
|
|
/* 55 << 133 */
|
|
{ { 0xe9c61fa744058dc9L,0x59efcc8f1581d690L,0x1ea73467513aba4bL,
|
|
0xf0fda8a69d03d72aL,0xcc1f3f22c6f30a01L,0xb632daa3ddf8dea8L },
|
|
{ 0x58563188fe8e2f89L,0xf053b9f67b45cf5eL,0x1ab51b07f9bda4b1L,
|
|
0x37850e9789dc0050L,0x1bf5e41e8f6a1daaL,0x4abb4f82d94c0fd8L } },
|
|
/* 56 << 133 */
|
|
{ { 0x817d77b106a9ad54L,0x3a999d7d89a25ecaL,0xd3ac4107da68b768L,
|
|
0x6904bcddbebc4c4dL,0xb0d2103ca53d39e9L,0xdba86bd230a5e950L },
|
|
{ 0xb09256804f52208eL,0x37c3156a28495b2cL,0x2389ab34c15855aeL,
|
|
0xc14dfd963017194fL,0x420e07191146b838L,0x1a9f909b8fb4b6fcL } },
|
|
/* 57 << 133 */
|
|
{ { 0x73af3d1fa24985f4L,0x4fa27db444a1f9a8L,0x6deb02455cfbfa45L,
|
|
0x4803e0342813c996L,0x24715fe80e4116ddL,0xa2e8258d38d8e902L },
|
|
{ 0x3321e112dd7d8ebfL,0xab8d5b2b272ee6a4L,0x2994fac34eb10fd9L,
|
|
0xe007d0a4a9c611ccL,0x29db5aa974d194e3L,0x9e76e3ddcf7409b9L } },
|
|
/* 58 << 133 */
|
|
{ { 0xf12a3eeab577f6b9L,0xe666e002b6db2206L,0x95aa0d03375229b4L,
|
|
0xebd05140ef0772beL,0x9d5b5e9e48580b17L,0x960906b3a77ceceeL },
|
|
{ 0xca869663e50422f8L,0x150e844199d481b2L,0xadd97d7c3418b00dL,
|
|
0x9908a23e68244f02L,0x5357ea61d3eac131L,0x0af5423d9778902dL } },
|
|
/* 59 << 133 */
|
|
{ { 0x11aa3582d8e62251L,0x108ec170aa1560a5L,0x8423663e2b5b6ea9L,
|
|
0x3f4ad292d8718329L,0xf8e3e7bd04f8daadL,0xed310c3a11b81211L },
|
|
{ 0x718db302edac9282L,0x7866f1c1e434544bL,0x1052133c568b195aL,
|
|
0x8ca61965c0e37cbbL,0xdd28fbd32cfac1c2L,0xf4062b33dce29660L } },
|
|
/* 60 << 133 */
|
|
{ { 0x2926ef17dd63404dL,0x0e89c4d41399cc68L,0x6507fedef7ec20b8L,
|
|
0x1ac084ff88c751d6L,0x31bc08bedefe29e6L,0xd42199714f0692c5L },
|
|
{ 0x4d6ee74236069bc0L,0x3868ef6aff80f3d7L,0x6df02d7c5a9c6f4bL,
|
|
0x2c3096bb101abf69L,0x0c2b01ec8eaacaebL,0x65914c20eb2e687aL } },
|
|
/* 61 << 133 */
|
|
{ { 0x78d5ab7b34a8173eL,0xa34b72ac9230c3b2L,0x379453e13538b39dL,
|
|
0x1764c4420f3789b0L,0x5b4bbe77a3f2ba4eL,0x3bd35b796f86338dL },
|
|
{ 0xf2fcdf04f02fa7e3L,0x6b4522f420d23feaL,0x966fb8fa01be16a5L,
|
|
0xf2a56e96e0d705feL,0x494aa4553872e429L,0x68432d9181921587L } },
|
|
/* 62 << 133 */
|
|
{ { 0x0ae47d1e3dba277aL,0x54607ac99832d90cL,0xd4cec32eecbcdeacL,
|
|
0xe54b3033b9ccdfa9L,0x5b3a8a56fb920449L,0x831ec8f955eefd3aL },
|
|
{ 0x59ba32a3a02dca96L,0xb421e4b01decf837L,0x52e70a88a88636d2L,
|
|
0x3b75ed073086667eL,0x7a4a46b3b877cd6bL,0x3825c80b59c99207L } },
|
|
/* 63 << 133 */
|
|
{ { 0x3bc3f0e069bdc53fL,0x7e0bd730d9d7def4L,0x71a577e6844ede6bL,
|
|
0x06d47f4981705712L,0x83bdb1a6ef108ea6L,0x853a3ce0c8a8ff41L },
|
|
{ 0xa6f114b8f408ec44L,0xe0ce4267e2d72d33L,0x405f6ddda2a0b613L,
|
|
0x22ce3daa8d253ad3L,0x2fd738094aa1de25L,0x28a2001b27363597L } },
|
|
/* 64 << 133 */
|
|
{ { 0x13722ab079ed523aL,0x33b29bec249d5624L,0xd3d0f467f76fdaf7L,
|
|
0x7ce072f912ddfd9aL,0xce918a5747bdefd3L,0x14d38ab4750e5315L },
|
|
{ 0x08bbb20e3346f647L,0x428b917f05b26894L,0xc8fb5c21ca865ba6L,
|
|
0xee6e41e02e6e8e6fL,0xd00ae6214c608b60L,0x659756396ff685cdL } },
|
|
/* 0 << 140 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 140 */
|
|
{ { 0xbbccce39a368eff6L,0xd8caabdf8ceb5c43L,0x9eae35a5d2252fdaL,
|
|
0xa8f4f20954e7dd49L,0xa56d72a6295100fdL,0x20fc1fe856767727L },
|
|
{ 0xbf60b2480bbaa5abL,0xa4f3ce5a313911f2L,0xc2a67ad4b93dab9cL,
|
|
0x18cd0ed022d71f39L,0x04380c425f304db2L,0x26420cbb6729c821L } },
|
|
/* 2 << 140 */
|
|
{ { 0xca07923c0eb008c8L,0xab79402d9985912eL,0x41e379e83cb02510L,
|
|
0xfabac005beb383efL,0x24d12d9a1076dd0dL,0x95afd46fb208f127L },
|
|
{ 0x9cc38a60b1031e46L,0x93e21e977009f6bcL,0x6f6360d98ac219efL,
|
|
0x1edaab3faf284c80L,0x9c3b5281019e366aL,0x6475c579bc9e9726L } },
|
|
/* 3 << 140 */
|
|
{ { 0x26bd07d6bdfbcae8L,0x10b5173fdf01a80aL,0xd831c5466798b96cL,
|
|
0x1d6b41081d3f3859L,0x501d38ec991b9ec7L,0x26319283d78431a9L },
|
|
{ 0x8b85baf7118b343cL,0x4696cddd58def7d0L,0xefc7c1107acdcf58L,
|
|
0xd9af415c848d5842L,0x6b5a06bc0ac7fdacL,0x7d623e0da344319bL } },
|
|
/* 4 << 140 */
|
|
{ { 0x8410d8298d85a25aL,0x48ee01354af81a14L,0xae460d0d18c25348L,
|
|
0x5d0279a07eb035a3L,0x87e7c1289a114414L,0x17c08a8ec0744f79L },
|
|
{ 0xb7b2b4f1025cdbe3L,0x9a74f15d82d1af60L,0x124a7395b51ee685L,
|
|
0xf2937c4bf6122422L,0xb4ec133207f1a7ffL,0xad801112f886032eL } },
|
|
/* 5 << 140 */
|
|
{ { 0x4c0d78060c9d3547L,0x993f048dcf2aed47L,0x5217c453e4b57e22L,
|
|
0xb4669e35f4172b28L,0x509a3cd049f999f8L,0xd19f863287c69d41L },
|
|
{ 0xe14d01e84c8fded0L,0x342880fdeafd9e1cL,0x0e17bff270dc2bf0L,
|
|
0x46560b7bc0186400L,0xe28c7b9c49a4dd34L,0x182119160f325d06L } },
|
|
/* 6 << 140 */
|
|
{ { 0xdd4eb3d07bb5346eL,0x9a46ad01382e7db7L,0x1200285ddc1973c7L,
|
|
0xfd342beaa0046b98L,0xd19173491219a7fcL,0x5383d319b7caffe5L },
|
|
{ 0xea5a0c4e2e0fa118L,0x1cc2de3ca5457b28L,0x5b2a16dc6046eeeaL,
|
|
0x1755e1fecc8e64b1L,0x51e4946e9e7faddaL,0xf805422ffcbf4ec2L } },
|
|
/* 7 << 140 */
|
|
{ { 0x46d70888d7e02e18L,0x7c806954d9f11fd9L,0xe4948fca4fbea271L,
|
|
0x7d6c7765bd80a9dfL,0x1b470ea6f3871c71L,0xd62de2448330a570L },
|
|
{ 0xdaecddc1c659c3a7L,0x8621e513077f7afcL,0x56c7cd84caeeef13L,
|
|
0xc60c910fc685a356L,0xe68bc5c59dd93ddcL,0xd904e89ffeb64895L } },
|
|
/* 8 << 140 */
|
|
{ { 0xf877e8c6bd08ffafL,0x24718fefaf23012fL,0x19ff269f2b004cfeL,
|
|
0x8adc5d7795450f8bL,0x688ce8bce2a7d458L,0x74d7445b97bd7fdcL },
|
|
{ 0x1b9f4ad641e6abadL,0x6652ed05f00e4bf5L,0xabee1f7e71d83d86L,
|
|
0xe693c76d25ffc219L,0x1c9a84afc873f553L,0x84d2718766d77a55L } },
|
|
/* 9 << 140 */
|
|
{ { 0x75d874fb8ba7917aL,0x18fa7f53fd043bd4L,0x212a0ad71fc3979eL,
|
|
0x5703a7d95d6eac0eL,0x222f7188017dead5L,0x1ec687b70f6c1817L },
|
|
{ 0x23412fc3238bacb6L,0xb85d70e954ced154L,0xd4e06722bda674d0L,
|
|
0x3ea5f17836f5a0c2L,0x7e7d79cff5c6d2caL,0x1fff94643dbb3c73L } },
|
|
/* 10 << 140 */
|
|
{ { 0xe566dc057e5f7121L,0xccac74e22ed07bc3L,0xaabfdfcdc70401b4L,
|
|
0xac9fc4496254e0dbL,0x358d885f11c7de05L,0xb8e6a4a9d60772b4L },
|
|
{ 0x884272a5cfe917ceL,0xdfbe98689a3d347aL,0x06b90848c9d1baccL,
|
|
0xc4ccedb6db8c6288L,0x892878b979e5683eL,0x1b521829243273e3L } },
|
|
/* 11 << 140 */
|
|
{ { 0x916e19d0f163e4a8L,0x1e6740e71489df17L,0x1eaf9723339f3a47L,
|
|
0x22f0ed1a124b8dadL,0x39c9166c49c3dd04L,0x628e7fd4ce1e9accL },
|
|
{ 0x124ddf2740031676L,0x002569391eddb9beL,0xd39e25e7d360b0daL,
|
|
0x6e3015a84aa6c4c9L,0xc6a2f643623eda09L,0xbeff2d1250aa99fbL } },
|
|
/* 12 << 140 */
|
|
{ { 0x099369c4bf0c6fbeL,0x976f78b2fe7d5727L,0x32feb503d18267a9L,
|
|
0x162c41501a7dd0feL,0x3141e37726b8e969L,0x50497a643b53a94aL },
|
|
{ 0x96159f41607b4cfcL,0x1999b7042f111babL,0x3254987c760f2eaeL,
|
|
0x5308075b841014faL,0xc634127e4e7adad8L,0x32a70a6059ffbfe6L } },
|
|
/* 13 << 140 */
|
|
{ { 0x1feef7ce93ee8089L,0xc6b180bc252dd7bdL,0xa16fb20b1788f051L,
|
|
0xd86fd392e046ed39L,0xda0a36119378ce1dL,0x121ef3e7a5f7a61dL },
|
|
{ 0x94d2206192d13caeL,0x5076046a77c72e08L,0xf18bc2337d2308b9L,
|
|
0x004db3c517f977b1L,0xd05ae3990471c11dL,0x86a2a55785cd1726L } },
|
|
/* 14 << 140 */
|
|
{ { 0x7279c369a1f857e6L,0x029d30ef27fb373aL,0xe82cbc806827358bL,
|
|
0x2bfe09aaa18f57abL,0x63bf3145e5503492L,0x7ea15beafb28ee43L },
|
|
{ 0x8e6d428f5eec91b8L,0x215e03e9611b1799L,0xb995737161d476deL,
|
|
0x2320c764e76726a5L,0xc5de88178e5e26f5L,0x24aae0699161e0b7L } },
|
|
/* 15 << 140 */
|
|
{ { 0xb8d9b28672107804L,0xb5a7c4133303b79bL,0x927eef785fa37dedL,
|
|
0xa1c5cf1ead67dabaL,0xaa5e3fb27360e7c7L,0x8354e61a0a0c0993L },
|
|
{ 0x2ec73af97f5458ccL,0xde4cb48848474325L,0x2dd134c77209bc69L,
|
|
0xb70c5567451a2abeL,0x2cd1b2008e293018L,0x15f8da7ad33c0d72L } },
|
|
/* 16 << 140 */
|
|
{ { 0x5584cbb3893b9a2dL,0x820c660b00850c5dL,0x4126d8267df2d43dL,
|
|
0xdd5bbbf00109e801L,0x85b92ee338172f1cL,0x609d4f93f31430d9L },
|
|
{ 0x1e059a07eadaf9d6L,0x70e6536c0f125fb0L,0xd6220751560f20e7L,
|
|
0xa59489ae7aaf3a9aL,0x7b70e2f664bae14eL,0x0dd0370176d08249L } },
|
|
/* 17 << 140 */
|
|
{ { 0x5dc386d0a8790657L,0xa4fdf676bc4d88bbL,0x1b21f38f48bc6c49L,
|
|
0xcdcc7faa543a7003L,0xea97e7aa8c9cf72cL,0xa6b883f450d938a8L },
|
|
{ 0x51936f3aa3a10f27L,0x0170785fdecc76bfL,0x7539ece1908c578aL,
|
|
0x5d9c8a8e0f3e8c25L,0x8681b43b9e4717a7L,0x94f42507a9d83e39L } },
|
|
/* 18 << 140 */
|
|
{ { 0xaeac64c96f089b59L,0xecfdc92b65f9d762L,0xddde5024f750daffL,
|
|
0x82c01c1c0f707e73L,0xc70aa9d4ee20adb5L,0x27f6799dbeb0e60fL },
|
|
{ 0x918ad262520aa514L,0x2bb1362f8d13eae0L,0x21b60b46a9d1d43bL,
|
|
0xf449e2d4767ab86eL,0xf42b09948a5a496eL,0x3b26006b853f2a3bL } },
|
|
/* 19 << 140 */
|
|
{ { 0xbbe11ca8a55adde7L,0x39e6f5cf3bc0896bL,0x1447314e1d2d8d94L,
|
|
0x45b481255b012f8aL,0x41ad23fa08ad5283L,0x837243e241d13774L },
|
|
{ 0x1fc0bd9dbadcaa46L,0x8df164ed26e84caeL,0x8ff70ec041017176L,
|
|
0x23ad4bce5c848ba7L,0x89246fde97a19cbbL,0xa5ef987b78397991L } },
|
|
/* 20 << 140 */
|
|
{ { 0x364d5dfda6140b89L,0x30e4a48efdc9105dL,0x13f6276018a47151L,
|
|
0x18ad84cfa17a2853L,0x5f315c93988cb37bL,0x90f9cb701af64ce3L },
|
|
{ 0x020c67db029b6ffdL,0x8989ccc62ce3528dL,0x9bb4f9844d00ee63L,
|
|
0x0b052413a70b4ca9L,0x7dee36dcc96b4a07L,0x226db70ea7888508L } },
|
|
/* 21 << 140 */
|
|
{ { 0x111af1b74757964dL,0x1d25d351ddbbf258L,0x4161e7767d2b06d6L,
|
|
0x6efd26911cac0c5bL,0x633b95db211bfaebL,0x9bedfa5ae2bdf701L },
|
|
{ 0xadac2b0b73e099c8L,0x436f0023bfb16bffL,0xb91b100230f55854L,
|
|
0xaf6a2097f4c6c8b7L,0x3ff65ced3ad7b3d9L,0x6fa2626f330e56dfL } },
|
|
/* 22 << 140 */
|
|
{ { 0xcd9b76b6a92f4e61L,0xa464f5225a00d902L,0xb64774e68a583f92L,
|
|
0xc7dc2030bee842a8L,0x594743ea5d2f27ddL,0x4c0ed28ef3c54609L },
|
|
{ 0xd763346d4b1dfb93L,0x8ea291dde1bed2eeL,0xf26d4adbd6d34ae1L,
|
|
0x74b8d24e54ea3529L,0xe20490e150062077L,0xf67b7a9092d6c19cL } },
|
|
/* 23 << 140 */
|
|
{ { 0x3d28bf2dffccfd07L,0x0514f6ffd989603bL,0xb95196295514787aL,
|
|
0xa1848121c3db4e9cL,0x47fe2e392a3d4595L,0x506f5d8211b73ed4L },
|
|
{ 0xa2257ae7a600d8bbL,0xd659dbd10f9f122cL,0xdb0fdc6764df160fL,
|
|
0xff3793397cb19690L,0xdf4366b898e72ec1L,0x97e72becdf437eb8L } },
|
|
/* 24 << 140 */
|
|
{ { 0x67bf4c98e11df408L,0x8e105c66d299b156L,0xfde3922e901b63c7L,
|
|
0x7fd57218c184ac91L,0x6dd2ea5cebcdc105L,0x1c4956c0aef7653fL },
|
|
{ 0xd6fac6429c1c11a1L,0xeda44f663d230d5dL,0xecca2241e6902ccbL,
|
|
0x85962a1f2700870fL,0xc5ca32c97864a291L,0xe55e974af6c8d3d9L } },
|
|
/* 25 << 140 */
|
|
{ { 0x81dcea271c81e5d9L,0x7e1b6cda6717fc49L,0xaa36b3b511eae80dL,
|
|
0x1306687c3cd7cbb3L,0xed670235c4e89064L,0x9d3b000958a94760L },
|
|
{ 0x5a64e158e6a6333cL,0x1a8b4a3649453203L,0xf1cad7241f77cc21L,
|
|
0x693ebb4b70518ef7L,0xfb47bd810f39c91aL,0xcfe63da2fa4bc64bL } },
|
|
/* 26 << 140 */
|
|
{ { 0x0af51a2025f7b355L,0x35fc45d58d8081bfL,0x0cf3036d0ab30d16L,
|
|
0x2bd47f919109cf76L,0x8be09360ec7f12beL,0x99fc291be8dcdca9L },
|
|
{ 0x385b89868135b12fL,0x272ac288f4ec52dcL,0xe7ca370cce09b043L,
|
|
0x94655816251f4c4eL,0x5c1dea972d40a755L,0xe8977234a4b10406L } },
|
|
/* 27 << 140 */
|
|
{ { 0x82c1c684eaa66108L,0xe32262184cfe79fcL,0x3f28b72b849c720eL,
|
|
0x137fb3558fee1ca8L,0x4d18a9cde4f90c4eL,0xc0344227cc3e46faL },
|
|
{ 0x4fd5c08e79cda392L,0x65db20db8adc87b5L,0x86f95d5b916c1b84L,
|
|
0x7eda387117bb2b7cL,0x18ccf7e7669a533bL,0x5e92421cecad0e06L } },
|
|
/* 28 << 140 */
|
|
{ { 0x240fde37b21b2632L,0x6b878ae68ca0f16fL,0x072d9ded0bc32ebeL,
|
|
0x8c2552bc29840743L,0xb58327b003b34f8aL,0xa51598ea71dabbfdL },
|
|
{ 0x337361f7d4f461c6L,0xae88972dda1de4b2L,0x9ec86d7ade7e8c2eL,
|
|
0x607de383f23f19e0L,0x0cb144c27d234103L,0x00878a228f0c3411L } },
|
|
/* 29 << 140 */
|
|
{ { 0x26063e124174b08bL,0xe621d9be70de8e4dL,0xaea0fd0f5ecdf350L,
|
|
0x0d9f69e49c20e5c9L,0xd3dadeb90bbe2918L,0xd7b9b5db58aa2f71L },
|
|
{ 0x7a971dd73364caf8L,0x702616a3c25d4be4L,0xa30f0fa1a9e30071L,
|
|
0x98ab24385573bc69L,0xcbc63cdf6fec2e22L,0x965f90edcc901b9bL } },
|
|
/* 30 << 140 */
|
|
{ { 0x265f7236e22b29caL,0xe36c3c3daa62691aL,0x73410e6ed2e1bad1L,
|
|
0xa182a579a5743cecL,0x2ca67274c22b0453L,0xc698fe35546e52e6L },
|
|
{ 0x60b3a519890e9155L,0x24312c3c2b91dbc3L,0xa6d45050282911d9L,
|
|
0x3781933efd249e1eL,0x2e0cbb93e26d023aL,0xfb479267bf27687aL } },
|
|
/* 31 << 140 */
|
|
{ { 0xd53b592d71e15bb3L,0x1f03c0e98820e0d0L,0xce93947d3cccb726L,
|
|
0x2790fee01d547590L,0x4401d847c59cdd7aL,0x72d69120a926dd9dL },
|
|
{ 0x38b8f21d4229f289L,0x9f412e407fe978afL,0xae07901bcdb59af1L,
|
|
0x1e6be5ebd1d4715eL,0x3715bd8b18c96befL,0x4b71f6e6e11b3798L } },
|
|
/* 32 << 140 */
|
|
{ { 0xaff4782231cb94c9L,0xf1b5a0b7803c1af4L,0xbeb85f8d2ef696a9L,
|
|
0x8ce5baab4fa94fcaL,0x0a32f96200d41a43L,0x0f69ad5774f6e772L },
|
|
{ 0xbe0221af6ccb5157L,0xcb83969a2a4f91ffL,0x78ff85d6a7e49f39L,
|
|
0x63006589cb5d3c63L,0xe8e4383596eb65f5L,0x79f59da9ff8adbdfL } },
|
|
/* 33 << 140 */
|
|
{ { 0x3cc0df125df9b6ecL,0x3c18f44e286d6ef1L,0x55a3939e517d0f7dL,
|
|
0x42626a32607e97bbL,0x6168e7b2e26ad78aL,0xdcf8e74b9145583aL },
|
|
{ 0xa7c541a52db84a71L,0x680532c7119210a6L,0x3252035d0a3315e5L,
|
|
0x06dc2d5befe7c8b6L,0x940175894e720570L,0xb16e635f2f6a3ec6L } },
|
|
/* 34 << 140 */
|
|
{ { 0x0bd0ed3803e13ce1L,0x44a148bb5868069cL,0x2a79ab57aa5095e6L,
|
|
0x943416faffffcf22L,0x98434e8756a1365cL,0x2493315d196dc354L },
|
|
{ 0x1f89d911b79a3a1eL,0x937140a841dfdd23L,0x05ad36e43b220b8bL,
|
|
0xff5e810333594e3aL,0x3119775f893edb80L,0x1fad811627eee584L } },
|
|
/* 35 << 140 */
|
|
{ { 0x55c4377e204f30b9L,0x63550549a1ebd2bdL,0xdd86ee0c5e44f5f1L,
|
|
0x8b9d1d9b5d84d999L,0x9ea95a58dda7a075L,0xa465b4a50977e81fL },
|
|
{ 0xcb491e5558421fadL,0x4617f31c280709d6L,0x5e2751c382e0195dL,
|
|
0x698155856f8eefd1L,0x6702166cd16dc160L,0xfc14545c84c85b2fL } },
|
|
/* 36 << 140 */
|
|
{ { 0x27c961f6e8fc35abL,0x1e0c26923a596fe7L,0xc75c7cb804351be8L,
|
|
0xfb92bfeb1c425d80L,0xb01d1c909f0bde61L,0x273d1f0c512f7817L },
|
|
{ 0x4375000df0d71796L,0xc1655874cf53d529L,0xe157b358abddc21cL,
|
|
0xb0f91e3e40cedc30L,0x48e26c7272260452L,0x9794a6bf0713f667L } },
|
|
/* 37 << 140 */
|
|
{ { 0x78befaede72c6f0dL,0xc80584210bb2a3ceL,0xcee67a5d52748e21L,
|
|
0x08d4a9e8de8ed124L,0xc0393271b5fb9514L,0x39b1df6b20942000L },
|
|
{ 0x831fd8cfc3d961afL,0x1bb097e3e752daceL,0x279b3924cf2c8143L,
|
|
0xa9f8a939b8f5cad9L,0x2b566813bfb8009cL,0xab37ee1df58f0927L } },
|
|
/* 38 << 140 */
|
|
{ { 0xc17f21f5134d8bd8L,0xc75fc638a90a9a1aL,0x032a6f382a22527bL,
|
|
0x3c77a72bd20fefb2L,0x559d8a52196e2921L,0x760a3a2c9afcb6caL },
|
|
{ 0xa3bf5802f162d871L,0xb6b367a5c594d2adL,0x4d440c523daa48dbL,
|
|
0xb2a8acafd5b2c18aL,0x50d85d6adc349ddaL,0x3c2e67718a707475L } },
|
|
/* 39 << 140 */
|
|
{ { 0x8254a39d5e1656cdL,0xff457dcaa595e153L,0xf0ddc1936bf62398L,
|
|
0x45e1f91a558f9337L,0x8a424d9d91480b33L,0x019f0a412bf61189L },
|
|
{ 0x66badaa6d49e7b98L,0xb0674512dad636faL,0xc767eceff4c49695L,
|
|
0xbe16e6b5ddc80ea0L,0x2bd0bb87febd1ba6L,0x69c9f485fe60eb32L } },
|
|
/* 40 << 140 */
|
|
{ { 0x08cf7d82bff4b684L,0x6abbf429ac4a9329L,0x2454c15ab0c8e0ffL,
|
|
0x4782035a70bdb03dL,0x89ff6a41448199cdL,0x07969c9ffd0bf1e5L },
|
|
{ 0x19d1cc6a83406dc9L,0x4054cab9b4980267L,0xf0f5594e1887d258L,
|
|
0x039249e4e09dd987L,0x2b0cd4f9857ddb1eL,0x54ceb29fd8418075L } },
|
|
/* 41 << 140 */
|
|
{ { 0x562693d30843729fL,0xd703202122648488L,0xd7c40e82ec6d0799L,
|
|
0x8eacb2496eb6fb6bL,0xddf7074885a5ec47L,0xd70524bf891d5de5L },
|
|
{ 0x4d17c237c4d01055L,0x4793c6e4b4203cc0L,0xf247d0df1d1bf37aL,
|
|
0x406994fa93b007feL,0x4062c29902940092L,0xedc0d949f558c1e8L } },
|
|
/* 42 << 140 */
|
|
{ { 0x9fb3630606ab1fc5L,0x2726c1acc0de4e26L,0x8b2fb5130ec7b070L,
|
|
0xf3581a6907bacd4aL,0x97db622c164bf5a5L,0x8103517962327e3eL },
|
|
{ 0xad3637b0b1d635c2L,0xb894adf949832ec3L,0x0ab5381725685b12L,
|
|
0x73ceb46069720ce8L,0xdbd1b68ef5e445dfL,0x57659059c8961eb8L } },
|
|
/* 43 << 140 */
|
|
{ { 0xbd1272a5f73a7cfcL,0x30d3c078de0828e1L,0x5dc0244e1a8f36a1L,
|
|
0x87c80cdf585ec2acL,0x46c88d277944584cL,0x588d14d8b2dbe1a9L },
|
|
{ 0xb42327a7afe7d55aL,0x58add8f98775409eL,0xa45db2fd10590c68L,
|
|
0xb98e10bca972b84dL,0xbf5c0ee0a737aeb6L,0x26424f3def199fa1L } },
|
|
/* 44 << 140 */
|
|
{ { 0xb7bb774603c4cd27L,0x5bfe638ad9723678L,0x47d8b4c24a04d064L,
|
|
0xdba309383faa45d7L,0xb0fb4308b39dd043L,0x5eeaa33f23ebfa1dL },
|
|
{ 0xaa5a0ce0ba100837L,0xae025cf6d7667d17L,0x610baf5df480cf99L,
|
|
0x8ba0039ead025771L,0x0ff4f75174785f24L,0x910736ef8b7c30b7L } },
|
|
/* 45 << 140 */
|
|
{ { 0x0496b77ac04b7e7fL,0x6f7ea5bbdf8163a1L,0x87a8e8f18f415876L,
|
|
0x6e5b6f2e3ee22085L,0x5ae860ca6f529471L,0xc54c8667eb624447L },
|
|
{ 0xdd06be3de1c7766aL,0x8a8e48ecd2189d23L,0xa4076d3564245444L,
|
|
0xc4973a5deb651a4bL,0x3b3e2fd52c4f2747L,0xe9a16a24abde2ecbL } },
|
|
/* 46 << 140 */
|
|
{ { 0xb7f146b890973714L,0x2277873f288ed67fL,0xe6da9d9ee5182317L,
|
|
0xa446f9d3562475b3L,0xc5291f9756755d91L,0xe762c5f3c104c2b6L },
|
|
{ 0x542f90b3dde83d53L,0x758aaddddace5f42L,0x1c8b9775e673f002L,
|
|
0x8899c11f74ec42bdL,0xfd9e300a2dbc0dedL,0x6de1c8e4d281f6adL } },
|
|
/* 47 << 140 */
|
|
{ { 0x5ddafb1b2a2f98cbL,0x8dc2bdc429ec504fL,0x27c51b3cc9f43826L,
|
|
0xcfd609fccacf5becL,0x642ff85c30dd9f71L,0xcab498e5b6b00ffdL },
|
|
{ 0x9c7ef286652ca743L,0xda291ae0ab95d7aeL,0xe6f4d2badfbff466L,
|
|
0x34afffef9835d482L,0x41a2cfc050db295cL,0x51a08859e6ee400eL } },
|
|
/* 48 << 140 */
|
|
{ { 0xf6fd26cc487925bdL,0xd9b751eef5ef44e9L,0x694a788be372817eL,
|
|
0x85f3dc1ae8c90c31L,0x8c90c6bf15aa0ce5L,0xb52a5d83f01bb223L },
|
|
{ 0xbdae01dddf9c3315L,0x941fa6b663ddfc56L,0x50ddff4ec2548f24L,
|
|
0x54a49868d12802a7L,0xcd922fb6404d9240L,0x88d7f41f957f6d1aL } },
|
|
/* 49 << 140 */
|
|
{ { 0xbfd0a17e4c4c87cdL,0xc6c76ebb10b614bfL,0x721d8b4fd1c594a9L,
|
|
0x1ff70b2daff65d09L,0x2698f57ce50ad026L,0xf4ac3f5627a92e38L },
|
|
{ 0x1114d3392c143ba0L,0x7fafa6b97f8e9b0bL,0x506f11edd82a2500L,
|
|
0x4df1087fe0ad9ca2L,0x85509ad9fdfecaa2L,0x733c4f8293bd022dL } },
|
|
/* 50 << 140 */
|
|
{ { 0x3b9de3494233d6cdL,0x9a360917a8f55d63L,0xbe79cdfd90662136L,
|
|
0xbb3d8fd7cbf3f02aL,0x5d0d4eb81d61e485L,0x85b485215484cd65L },
|
|
{ 0x77580c810fc5cbb1L,0x4b36441bd8e70ff2L,0x50ccdec1b2107a8bL,
|
|
0x6b7f97c945a45893L,0xb818859b9572a173L,0x864dc632d94bd9beL } },
|
|
/* 51 << 140 */
|
|
{ { 0x13bb6b113fee0074L,0x4c02520ed1059617L,0x5beb793ccf71f07aL,
|
|
0x15a8d28d46d4c54bL,0x9889a8948b89fab6L,0xd00fdcb492623b75L },
|
|
{ 0x1c7963572939a84cL,0x4b85d94d6221a244L,0xcc66b5bad1fd506dL,
|
|
0x866271042a06ca91L,0x4295fc6a49bb18c1L,0x05a81eea341d93e4L } },
|
|
/* 52 << 140 */
|
|
{ { 0x895dbf20df8111ccL,0xec8297be2906fb2aL,0x4ddd6f22b94c3f53L,
|
|
0xec55cc738ecbd552L,0x549d3145ef343a0bL,0x9b19220c3b4858d8L },
|
|
{ 0xd5bbf954bd0c2f11L,0x9cacae0cce8c221fL,0x87e6cbc1f6a3dbc5L,
|
|
0x7ce5c9b6e37ebcb2L,0x654339ef50eb3c8fL,0xeac7f343f3674f55L } },
|
|
/* 53 << 140 */
|
|
{ { 0x723969a3dd8d5580L,0x4f6dd5c4a30edd79L,0x5b29f3f5a4d7ed53L,
|
|
0xe17a12bd11869af9L,0x63d01e02dc4c4c1cL,0xb43b904466a691e9L },
|
|
{ 0xab58d45ad1bbbcbeL,0x1e9b166322e8a57bL,0x88b6d3bb6684cdd9L,
|
|
0xb944dee1ddaf3976L,0x70a4a121c347c41fL,0x7e93fa26fd1c217fL } },
|
|
/* 54 << 140 */
|
|
{ { 0x5df68a1b584da350L,0xf378c367d72cd093L,0x5908ac0033dc31a6L,
|
|
0x89bb976b7ca65b9cL,0xefdadfe237dcf670L,0xce22b5ba0011f3e7L },
|
|
{ 0x94d2c115b7d27bc7L,0x2e6763498761afbfL,0x3c0477829eb8185fL,
|
|
0x634c8c5531f7635fL,0xf8fb5494d4d0fc53L,0x5a905615530ee2c3L } },
|
|
/* 55 << 140 */
|
|
{ { 0xd28e59a0940c9809L,0xc208ae4f01b9f39fL,0xae1cb420b3630002L,
|
|
0x739950501289d72bL,0xec24392805fcbd8eL,0x5b592df51f843891L },
|
|
{ 0x0d7602303f59f374L,0x32b6e643cae9f3ecL,0x94a25696e3dcc436L,
|
|
0x657ae6aa8a059dadL,0x0df91017edd1505eL,0xfb1ae06f7b518d81L } },
|
|
/* 56 << 140 */
|
|
{ { 0xf5bd119ad84c8a53L,0x36c5410f26928a6dL,0xf340f2bc0eb42b83L,
|
|
0x8d93a66cffeffe84L,0xff59141d64310b9eL,0x2d509d7aaf69e00fL },
|
|
{ 0xf0f034ae1390628dL,0xf9089c720c38b563L,0x7462988e4e8df0daL,
|
|
0xe6041dcaa7985905L,0x86295326d3b7274cL,0x5c8bf249075aa31aL } },
|
|
/* 57 << 140 */
|
|
{ { 0xb08d098b9e423b93L,0x8ae94622029d192bL,0x05335f68fd67f1c4L,
|
|
0xf3cb831f6e8c1e57L,0xf84a7a54a50a776bL,0x99930a48dc49c28bL },
|
|
{ 0xdac2ef8f1b833418L,0x87a4ca7829fda2f2L,0xf47f23079c0e9e7bL,
|
|
0xebc1c2de46aeb3c7L,0x544f76836408bfc4L,0xa01b094b86c6cd44L } },
|
|
/* 58 << 140 */
|
|
{ { 0x8e81bd1c06841f10L,0x3fc24a346c045063L,0xbb2be2dc85bc7ebfL,
|
|
0x32523efbc341fe12L,0x1ac9f6b116508a41L,0xb6b7fa1df6ac4426L },
|
|
{ 0x2614c995fb685157L,0xe452b94dace46bbcL,0xccda1adabc453b4aL,
|
|
0x32d32574fb4fac48L,0x7e43920c9d7d90fdL,0x9d6e959417a08456L } },
|
|
/* 59 << 140 */
|
|
{ { 0x2c90f95bdb1f005dL,0x801089a2e16444a3L,0x2f2944ed7a724ad8L,
|
|
0x0dfdd065de135e95L,0x510ab3eaafed3817L,0xdba075380855fbb5L },
|
|
{ 0x905f78bda10dde49L,0x63786348956a4057L,0x3d420ff0441530aeL,
|
|
0x7a9968bfd1488ff0L,0x97479bfbca4dce2eL,0xf371985356f76255L } },
|
|
/* 60 << 140 */
|
|
{ { 0x8102fa85bbda55a7L,0x6cbafe0de96c5eb3L,0x517720eb26aa52c7L,
|
|
0x0ee110a98c030e47L,0x5a058569d4afe2c1L,0x29965b44262bbc0dL },
|
|
{ 0xda017ec04996daf5L,0x1781e7b84dfb810cL,0xdbe148350c8a5cf6L,
|
|
0xd151055dd92ff62eL,0x5e4f48ba2932a708L,0x77e163d95f28bb43L } },
|
|
/* 61 << 140 */
|
|
{ { 0xf6c5998c48bc9bc9L,0xb25ae99e2db132d7L,0x17f29131fb934e7dL,
|
|
0x31b96a79d7fb5430L,0x3fad00391971cabaL,0x7f809e56cf3d5e33L },
|
|
{ 0x1a4f705a9ede6055L,0x3cab6c6149c2d054L,0xb616adc47945b589L,
|
|
0x842b8652f342ee03L,0xa22fc6a67bc36a4eL,0xffdfee262c89a4fbL } },
|
|
/* 62 << 140 */
|
|
{ { 0xac6b2727dab13b10L,0x8b4fa7807351ac35L,0x48243c245692808aL,
|
|
0x724897f01fbc5d24L,0xb635fe5e2c69bd93L,0xab26453338d5d5b2L },
|
|
{ 0x368b2c07bc578c97L,0x94e02c9226fecf25L,0x768de4d41f473908L,
|
|
0x58feaadee445d405L,0x1f1380d6e42a2218L,0x2904b4542154dd5eL } },
|
|
/* 63 << 140 */
|
|
{ { 0x4e28b938ca2ec0f3L,0xd4af48d795b1c113L,0x33ffb9c222f2275aL,
|
|
0x2a734af97b57b2e0L,0x1555ba38d08a45d3L,0xd0cae6c57a05837cL },
|
|
{ 0xed04c869c4e78884L,0xa7ba74726f3d56d3L,0xdb7b831ef6d68485L,
|
|
0x225798677e7d0a4dL,0xd2d702a94c3eef8cL,0xdaba503869a83e29L } },
|
|
/* 64 << 140 */
|
|
{ { 0x082ea61d10eeed24L,0x7c9d5ade143fd59dL,0x7d33df962e54f5cfL,
|
|
0x340b0d36e39dc6abL,0xd97a8b848d179b13L,0x88184bb0288d388cL },
|
|
{ 0x2237e507e116ae6dL,0x3e97b063211b2cf0L,0x645f8bcb42be7459L,
|
|
0xce2b0f54de2176b6L,0xaf570a09d1e2f09cL,0x110adf5657fdc001L } },
|
|
/* 0 << 147 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 147 */
|
|
{ { 0x158bfe27bcb6db29L,0x967212410054d963L,0xf07b153b8e71aca1L,
|
|
0x5e67698171b11643L,0x77b7dd7dd04e2f90L,0x07814aa6f0dcf109L },
|
|
{ 0xd3bab2a4fe1d0b1eL,0x50abba31be69e691L,0x54fe99afc6f53cd9L,
|
|
0x071f2a4f628039e4L,0xf1f44181b183aa16L,0xdf0138e05010f6f9L } },
|
|
/* 2 << 147 */
|
|
{ { 0xb1e365019c77ca60L,0xfe084a2301018e14L,0xbf451d2ca4bfdcecL,
|
|
0xd210892fb29cdcfeL,0x5b12bcd894514871L,0xd03ca18c1809b1e3L },
|
|
{ 0x09b243115858e4eaL,0x37b30d50e57524b4L,0xcef0a16b5de334b5L,
|
|
0xfe0bd1e20b116076L,0x54e4b48289ae2bf4L,0xfbcc5e1a68c8a937L } },
|
|
/* 3 << 147 */
|
|
{ { 0xa5023e1364be0f56L,0x6a7310e00046f45cL,0xe0af09aeec8700d3L,
|
|
0xdea5fb7ceb2d38f0L,0xc038eae6859852e6L,0xd515fb4c8c34f04cL },
|
|
{ 0x546b778e1488c207L,0x8cf4f1146258d8baL,0x474e60d85182c96cL,
|
|
0xcd0387303dbde757L,0x387232f876ab01ffL,0x277614f628231392L } },
|
|
/* 4 << 147 */
|
|
{ { 0x309b1eb33ef5a413L,0xa7607981a81f43fbL,0x87c2b81ebf8a894cL,
|
|
0x27a40bce0d293293L,0x7f4c315be4bf3714L,0x03fdc14e01236895L },
|
|
{ 0x319c88f8dff053feL,0x146bb448ea3fa121L,0xfcc2a05df0dd1380L,
|
|
0xc8d55b024acba9faL,0x871358de5927313eL,0xfd1d81d317ce294aL } },
|
|
/* 5 << 147 */
|
|
{ { 0xa135970c7361138aL,0xd67eddb5b7d50260L,0x313c6e9bc4d5311bL,
|
|
0x4f503bf28423e5b4L,0x17dc4b6f44f3fe83L,0x15b7bdb9ccf1bbcdL },
|
|
{ 0x0ce4d64ea11b9896L,0x050b0edebbb6b0eaL,0x85531293bf5db990L,
|
|
0x9db3b964520d095eL,0xb45ec235bd2d4e88L,0xf88a9e6215ee5ba1L } },
|
|
/* 6 << 147 */
|
|
{ { 0x10777189c1a21254L,0x7d8d3966ca593a6cL,0x261ab515120380e6L,
|
|
0x453c858fe13577d1L,0xb1f6bb58f3862db1L,0xf8ff48b8b9529e1cL },
|
|
{ 0x03f63a417b60b400L,0xdc248d96bba66b3bL,0x8423048b756e5af2L,
|
|
0x4d978ed31c984befL,0xa06242995ba00f3eL,0x0bed7b454f4d19e7L } },
|
|
/* 7 << 147 */
|
|
{ { 0x9ef52e3d6524f389L,0xc5b157c5f6ac19eeL,0xdca7a72ab5d42f7aL,
|
|
0x2d2e8d72fa0051dbL,0x3a6ff9243f4a4f60L,0x0ae997af340e7977L },
|
|
{ 0x33dd395e269db4e9L,0xf95c3683616b9dc3L,0xb86a066122d516a7L,
|
|
0xd50c582cad913df8L,0xac8b8efef550afbfL,0xf34fcab01d88728cL } },
|
|
/* 8 << 147 */
|
|
{ { 0xd3797831ff63ae69L,0xa753de02ce4c7eafL,0x2ff7a6a611a4e339L,
|
|
0x904f86f05328043aL,0xe29d31c012e9f7ddL,0x8825a639c0a51904L },
|
|
{ 0x070c2696ebfc2cc7L,0xc03ce643c5f7a943L,0x5b970d0c12c8a1f5L,
|
|
0x572aaaa1ab352a83L,0x63df45a90c5eb0c7L,0x95c951e1d4977599L } },
|
|
/* 9 << 147 */
|
|
{ { 0xf5aefd5572ba3741L,0x7ab81965f5fe816dL,0x597d15d546752cefL,
|
|
0xaa79a0822a3c142bL,0x038ddfdd3af5dfe9L,0x9f4dc166755c9e07L },
|
|
{ 0xf34224dfb9165297L,0x96e7ff6e4e3fd907L,0x5d7f3c821727beb6L,
|
|
0x7098493dd6af73ceL,0x6b9358fbe00dfa4dL,0xefb2634a96e74870L } },
|
|
/* 10 << 147 */
|
|
{ { 0xe35daffe2e4c6299L,0x1f9e33935915cd16L,0x93f05a40f009a48aL,
|
|
0xa4a801fd308a81c6L,0x75e5dc467e885426L,0xf0bc7d5d4629ff05L },
|
|
{ 0x356b879bdbd812c2L,0xdb5eb60001629849L,0x11c9856eec2dd55aL,
|
|
0x20f0443880f0c804L,0xc0b5e3e21801b217L,0x7ceba67d6ea097b8L } },
|
|
/* 11 << 147 */
|
|
{ { 0x7a1bc5d85d08d3f0L,0x9ecce2a8385ef3a8L,0xae93d42b3c1b2927L,
|
|
0x81a3a60719ce9447L,0x8d6b2d3d0eda597cL,0x5baabad60eea6dc5L },
|
|
{ 0x2cb372642741608aL,0x3b1148d6f0202a01L,0x6e85272f52931f5dL,
|
|
0x49bf47596a2e601aL,0x5ec0418443279ddcL,0x7d052cac6ec080ddL } },
|
|
/* 12 << 147 */
|
|
{ { 0x01c2df8d3bb02d0eL,0x874e43afe26f388dL,0xe198341c8360fa6aL,
|
|
0xe67f8092c52bb2d6L,0xf944dc63a02efba5L,0x9a9c02d92c12332aL },
|
|
{ 0x39684f6ca8cb6bd5L,0xbcc1828e26bc9535L,0xb7fb8eb646594725L,
|
|
0xbb4f5f05793c32ddL,0x3ef3c33845f94b55L,0x228e0e7d09eac277L } },
|
|
/* 13 << 147 */
|
|
{ { 0x80d9bd388aeae732L,0x2be676dccbeb6443L,0xef4d056bded9ad31L,
|
|
0xc4fea44f349e5d0eL,0xb66c35d28d95db86L,0x210c3d4aae9f5d3aL },
|
|
{ 0x5c0c5b9c1582982bL,0x50a529be93aed9a4L,0x88f769a384c77818L,
|
|
0xc0970b4269776a3eL,0xbf3e5ee022a1cad4L,0x705c0b29b80187eeL } },
|
|
/* 14 << 147 */
|
|
{ { 0xefd26dca727cacdeL,0x6290fedb5fcdb147L,0x9f108a89e1830a96L,
|
|
0x7e8e36813e039a02L,0x1747b3e9256fbb3bL,0x5aa0ebffabb3b2f1L },
|
|
{ 0xcac5818c9fbb9b49L,0x037d66114a94b74eL,0x4081fd4d7a548536L,
|
|
0xfe2d8e79aa364507L,0xe86ce00ea81a5f81L,0x77b95e9477a9bdb4L } },
|
|
/* 15 << 147 */
|
|
{ { 0x3eadfde5bf06a49eL,0xca88828b33787c62L,0xde6f765022070f63L,
|
|
0xcb4e54dc438f649aL,0x24957c77169727d0L,0xa2e7781cdd2a92a3L },
|
|
{ 0x17a1d7ddc38885f4L,0xb75716717605c408L,0xfdbbcffc8a2323f5L,
|
|
0x11666bd2c955456cL,0xf8b94fa2517f27f5L,0xe101927fee002499L } },
|
|
/* 16 << 147 */
|
|
{ { 0x2c5b0e42bca07a42L,0xbe57f3597a0dffa1L,0xace485959aa90727L,
|
|
0x32be886af658699bL,0xce75d6c6da3b18e6L,0x9d563e4f69caf667L },
|
|
{ 0xc17c66cf065eb772L,0xfbe123814df9f6efL,0xceb80041623db4efL,
|
|
0xe75615b2c74762e1L,0xade8a5438671c52fL,0xb713c401cacaf2ecL } },
|
|
/* 17 << 147 */
|
|
{ { 0xc740669ab01b20dcL,0xd873f3f1abecc3f3L,0x0d8290402db73d1cL,
|
|
0x147aaafb99198d33L,0xca66e755d4e7d7e4L,0x8747298cb2cb752bL },
|
|
{ 0xd9d58d29c43762aaL,0xa3801a4a15e45d57L,0xa747fa3f454eaf2aL,
|
|
0x26c79cdd0c067c77L,0xf15404cea24fe6b4L,0xe2add5ec77fec1c9L } },
|
|
/* 18 << 147 */
|
|
{ { 0xc45064dbd71a7744L,0x1900bb8f04a6f3cbL,0xd592585a76c2dd6cL,
|
|
0xabbbd6d862b95d26L,0xb0db482b1d2e180aL,0xf459430184c9dea5L },
|
|
{ 0xd30b162a6e5ec460L,0x90838e57e4b35476L,0xab4b7c80f9356687L,
|
|
0x72c2c009719f347aL,0xd5d01fcf920d187dL,0x47426f1e0afe06abL } },
|
|
/* 19 << 147 */
|
|
{ { 0xe6473aeaafb2f584L,0xd5395475c44ab7a2L,0xcba2c240bc27e864L,
|
|
0x201735cc742c1c9bL,0x8cb4886951263febL,0xb52706ba4fd2cd5bL },
|
|
{ 0x028445755a2dec94L,0x978e79d6a4be7b6dL,0x5a68d8103c4742f8L,
|
|
0x9c917f48b301ad64L,0xa6a7d5bd684a6ea6L,0x251d61327c978749L } },
|
|
/* 20 << 147 */
|
|
{ { 0xdc7e39ee0ae2a7caL,0xcdd3c235e6b7dee9L,0xf9624c299368c8a3L,
|
|
0x2086bc904b21951fL,0xf7990a1f57e0e6a3L,0xf170dd75e686da8cL },
|
|
{ 0x4a82719a06da9714L,0x3a78e35e24274685L,0x1c3965e1c67712f8L,
|
|
0xc6c26eb62f164e3aL,0x1129a467381fb91fL,0x896022108443ffddL } },
|
|
/* 21 << 147 */
|
|
{ { 0x25e561bd808c4ff9L,0x08c9f2758c0cf1c7L,0x9af6165b59599115L,
|
|
0x59f06a4bb4b415f7L,0x3a9d8ca5236e2650L,0xc8fa3bc61b48ebdfL },
|
|
{ 0x5e1896193404846eL,0x6d1d803b378a5a46L,0x672fe2bab812d5dfL,
|
|
0x3ec27a7f04c6ddc1L,0x9c5ff08c0cee3357L,0x9f465babae8d37d3L } },
|
|
/* 22 << 147 */
|
|
{ { 0x0057f60756a0b6bbL,0x46a6e9949c1e24daL,0x1c283f859baaf618L,
|
|
0xd75e731be878a354L,0xf9db13388bf2ca71L,0x0f14adeea9022f59L },
|
|
{ 0x309f04aa6c14666fL,0xe6cec2aa552d2da7L,0x9f27eaba218d8659L,
|
|
0x9b3165d3c268561eL,0xc7e3afcb90ae19efL,0xb840170bcb329e68L } },
|
|
/* 23 << 147 */
|
|
{ { 0xf6b9a32fab95aa95L,0x1a1e06c387e1c3c5L,0xcfb7ecc5317f1c2bL,
|
|
0x12953ce7999d2bcdL,0xcaf5f0229e3c5a01L,0x0c9db571305ac94cL },
|
|
{ 0xa423d26cafbc860aL,0x82fbbd3dfe98409dL,0x455aa9926652ac17L,
|
|
0x6916e7d6f9428029L,0xdcfbd65099822714L,0x5de152a13f3c72d2L } },
|
|
/* 24 << 147 */
|
|
{ { 0xe6d039ef467eb167L,0xa7e0959d74696cf9L,0xf3a19b9d7078d8a0L,
|
|
0x5d4ec99c07cdc6f6L,0x4842d0f98386eed8L,0x48f5ab80545fc0d5L },
|
|
{ 0x8906fc626d39c2f7L,0x1c050d691bf5366aL,0xac506c579f54d0d6L,
|
|
0x9a356a6ef9e4b94cL,0x62632c5108a75e61L,0xfc1b9fa5c6951dc2L } },
|
|
/* 25 << 147 */
|
|
{ { 0x84ba4069d034ec62L,0xd55b42f6f169349eL,0x78dce88d17de2b22L,
|
|
0xdadae679204ec730L,0xfad5ec6b5357f5e5L,0x330bba18ccc0d0afL },
|
|
{ 0x8419755c4a566c71L,0x29c56c5fbfe57083L,0xe42a7c52598cad77L,
|
|
0x9d81623f5fcf1dc0L,0x978eb12864615869L,0xc837262a9c2a6f35L } },
|
|
/* 26 << 147 */
|
|
{ { 0x917747f99ee0628bL,0x5d711303566cf048L,0x206d53f15b77f58dL,
|
|
0xe104bc12667a86ddL,0x158f8d253505380fL,0xf5b32ad4616e821eL },
|
|
{ 0xdb67191a3cdfe797L,0x61b58589147e1756L,0xb7927e12625d0efcL,
|
|
0x48d999d008bca937L,0x335c6f5b7b02689bL,0x4f0994a9d8149b7eL } },
|
|
/* 27 << 147 */
|
|
{ { 0xe7ba0870df6ae3beL,0x661373f0166cd7d9L,0x369d361d8627f3fcL,
|
|
0xca06d544cf6ceb36L,0xc819e0ea34b5d425L,0x80c1ab716ffd2827L },
|
|
{ 0x3fb8c0b520b4161cL,0x3647e67b3734b87eL,0x9c3a14b203e6c9cbL,
|
|
0x320ed1c1c3620486L,0x6d77d46b5286a22fL,0xbd6036c1bc74a266L } },
|
|
/* 28 << 147 */
|
|
{ { 0x125951a52e6d5433L,0x7d672aee6a6013d4L,0x6ed23f2560831997L,
|
|
0xb0e219ae438c75c3L,0x6851dd4bace91d00L,0x84704f7d30f19991L },
|
|
{ 0xd744cb32d0107170L,0x15f51a63b0cb6796L,0xe14712cf5a5807d8L,
|
|
0xff89f0c5dbfd612cL,0x0c314718bd021483L,0xf9ccd3b11b4b76d5L } },
|
|
/* 29 << 147 */
|
|
{ { 0x36121d0909b6398fL,0xd9ad591369069016L,0xd3a08c8469cdcfebL,
|
|
0xd92ae9b2b03e1e4cL,0x1620c549e9b6284bL,0x5860431227ab9432L },
|
|
{ 0x4e1d3134aa314da8L,0x89207aad70910cbcL,0xacee236badff9190L,
|
|
0xe6390f7cf6eb6df2L,0x0dfc5a5cffa91d75L,0x3474104aa0e7f48dL } },
|
|
/* 30 << 147 */
|
|
{ { 0x00b75b851871749cL,0x063b748ea00faa20L,0xa516e09f90257503L,
|
|
0x9ffc43981c800098L,0x49f011f871b00fa1L,0x6fc80517443268bfL },
|
|
{ 0x2802e2bf24a24acaL,0x96fdc71edde88ab9L,0xe3eff1f997e661a4L,
|
|
0xae5c34e13cb321f8L,0xf863263e301c8ba0L,0x3c3eeb7b093e186cL } },
|
|
/* 31 << 147 */
|
|
{ { 0xc0f51229e7aa3325L,0x3abde561fa93ec80L,0xd7e5317f4e6df2b2L,
|
|
0x4eefcc76bc832652L,0x9dce52905d054a1dL,0xee2939da2a6f52e2L },
|
|
{ 0x8faa1d3e092b5422L,0x77f55f7f9ca6338cL,0x6dadad8f6546d37aL,
|
|
0x0ef4922ef3bf7cb1L,0xfcf41c23200ccc57L,0x591e208362aa0372L } },
|
|
/* 32 << 147 */
|
|
{ { 0xa933aaf7a4886619L,0x9ec1915f4af13c7fL,0x25a9dff8854de496L,
|
|
0xa8b31d9b247bec15L,0x468a25c84661e58dL,0x8989c046786a0707L },
|
|
{ 0x282db8cabb66922eL,0x73bf240d45ca29ffL,0xa2c40faaeaeda06eL,
|
|
0x69632929add94b47L,0xc72354f6b0069076L,0x8d197fbf7878e92cL } },
|
|
/* 33 << 147 */
|
|
{ { 0x7bd8195662267b63L,0x9352be73894a4ed8L,0x62568211d0bfdfdbL,
|
|
0x7974999285698b05L,0x897ccd584412ea21L,0xe4cc4ddcb2f25225L },
|
|
{ 0x808539bdb4a1d924L,0x619fee34bdebf750L,0x47ed5b3473aea42aL,
|
|
0x91e07a9b94ba376aL,0x218f6885edb27e08L,0x4feb09e6c4214344L } },
|
|
/* 34 << 147 */
|
|
{ { 0x24bf9fbbf3e4bc93L,0x8973b72471151bfcL,0x8e33b753a85eb707L,
|
|
0x13eba76e50adc461L,0xe445e8e144dd9d2fL,0x8729ec22b1592a0fL },
|
|
{ 0x9a13bf315ec24808L,0xe6ae840c2e95cabbL,0x634f3416e28cdf4aL,
|
|
0x34d3349b9278cd7bL,0xd74990c542b912b5L,0xaf94b104b2430c71L } },
|
|
/* 35 << 147 */
|
|
{ { 0x6d26cd01580b15a5L,0x5af25c06dcd849aaL,0x05b00800ffef39f8L,
|
|
0x8cc59e06f9e0208bL,0x920f69540bc19bf9L,0xc06c4df97faa5ddeL },
|
|
{ 0x9a26a3f4770351d4L,0xda015bd3443f40d9L,0x1afd829c740f1942L,
|
|
0xb108a8a6566e6158L,0x118e50a9a35e5d37L,0x94cac90eab72a3b3L } },
|
|
/* 36 << 147 */
|
|
{ { 0x01f7968e60cb465cL,0x4efeffb796e0af3aL,0x6f9016e7066ad6aaL,
|
|
0xa8ae30e88743aa97L,0x7b77d3e0b7d55766L,0xe1773661c6b3fadeL },
|
|
{ 0xa52fa7bc88f5270bL,0x4de08cb39f7f811cL,0x6021536f9bc34254L,
|
|
0x47bd18cf4068e3d2L,0xc91bc312ce16889dL,0x468659ea929b71f5L } },
|
|
/* 37 << 147 */
|
|
{ { 0xa5a2a3b3225b532aL,0x5ed77864167f7874L,0x2b5d475037ae42d7L,
|
|
0x9bd62f14433b243fL,0xe8dca1b2eea90992L,0x1ce44e53ef5e0624L },
|
|
{ 0xd92c7bf61d3d7173L,0x83c1e65424c19a94L,0x59dce036eafe8941L,
|
|
0x23478c50d81014b0L,0xb89214bbe65a18e9L,0xf9fd325ea05d9fb6L } },
|
|
/* 38 << 147 */
|
|
{ { 0x2c4bbee73965ed81L,0x58b6a8766c1a47beL,0x7c8d94f71a67dfabL,
|
|
0x865c9e42ac6ae9e4L,0xa63a0e42a3114c18L,0x7432c6c92bcf8169L },
|
|
{ 0x1927723c7532bd7aL,0x20b75c7201e5781eL,0x1963e16919d57f9cL,
|
|
0x05427a3cb10e3798L,0x31bbc661cebc82a9L,0xdd88383ac3862997L } },
|
|
/* 39 << 147 */
|
|
{ { 0xa0ef513d4adce457L,0x942aea7df9f906d8L,0xe52a2bb5fe22c5a3L,
|
|
0xfd9fff1f8dec9ca1L,0x19b0e7a27913f99aL,0x58c45dd205660e97L },
|
|
{ 0x6722c47ff06d3c2dL,0xe4927a002a4d127fL,0xdc647c1ef40f46a1L,
|
|
0x538c8cda7ab7a21bL,0x90227d6cc8015ae8L,0xe62f52dc2d4ec8a5L } },
|
|
/* 40 << 147 */
|
|
{ { 0x69a9ebd8a83bbb88L,0xcbab0b5a29f98875L,0x325e487e4e7611f0L,
|
|
0x90aa24b1d955cc3bL,0x840e70a13c264d53L,0x15bcf88bad7f4f81L },
|
|
{ 0xe47552cc2cf0df0aL,0xcb99973379205ea9L,0x25dc58bd10d5ca45L,
|
|
0x0947d7151228b978L,0x9a0204da4f2c7c4aL,0x4377ea4a4690052cL } },
|
|
/* 41 << 147 */
|
|
{ { 0x35da16d16bc7d7afL,0x098c4b0271de4ac2L,0xdaa2407c3655dd94L,
|
|
0x5136884c90380d70L,0x3f47052e762f61abL,0xf715107a8dcd6ddfL },
|
|
{ 0x862a4a6e5d76615aL,0x2b546e1b2128a6f9L,0x5297a3cf40490672L,
|
|
0xef2cbdf1b9c765a6L,0x52e71cb4426562baL,0x34d0e3237a84f9b1L } },
|
|
/* 42 << 147 */
|
|
{ { 0x6cd4098d74e7c67bL,0x3bf4193123d2b418L,0x598710ad682135ccL,
|
|
0x26ccbfe0172d648cL,0x0c4918c5d84dc9afL,0x346e8b6385065417L },
|
|
{ 0xcbc7f2efd353219fL,0x93637eea3c4e4863L,0xb18fc69c2dbbd39bL,
|
|
0x20614dd45a4b5b0cL,0xcdac0383547adce3L,0xedcdd64842ac8be3L } },
|
|
/* 43 << 147 */
|
|
{ { 0x76ac6c94b4559439L,0x09090af620319667L,0xef433d73a742e3beL,
|
|
0xb7ec99eb7cbd7090L,0xcde2579dcb782be1L,0x2a2fb807e75552fcL },
|
|
{ 0x083f9e982f1eee15L,0xe20f65c167779c98L,0x73c044ff5f23e998L,
|
|
0x5fce594269488208L,0x3e4ca86ccace7ba3L,0x5e3f43b8f32c1acaL } },
|
|
/* 44 << 147 */
|
|
{ { 0x3ab171a237b42b60L,0x6501afcc4f20e50dL,0x4f9e22413e3a4298L,
|
|
0x3c5834d9be3b3d3cL,0x9607b8cb9be25af0L,0xcc5f6b6f81c723a5L },
|
|
{ 0x11b9b5d199227bacL,0x2bc5dd9f322cc499L,0x0c3884a0cdbc3a55L,
|
|
0x018a8ebefd4f004aL,0xa858ee7ce08741d9L,0xb5bbfa2b5d69b3ffL } },
|
|
/* 45 << 147 */
|
|
{ { 0x57069b4a1b0611b3L,0x24b5421c89da55d7L,0x6433c29dcf9b2fb2L,
|
|
0xda9382c67869a1cdL,0x67fbb7a343514903L,0xb3429e35e8b224f8L },
|
|
{ 0x4058ef1e7ac51191L,0x56283b0cfd4e6114L,0x4eff0caca16fadd1L,
|
|
0xe6088db7b6ee634eL,0x94e68bd0ca7bd1b7L,0x0e98796b965ff86eL } },
|
|
/* 46 << 147 */
|
|
{ { 0xf3176014bbd74a95L,0x5dfe36b51bc6c763L,0x4c463aa27d3d0366L,
|
|
0xcbd7106cff3b113bL,0x2d660f5a0b6edee3L,0x92d79c864db04c30L },
|
|
{ 0xfd1067cfd2236e55L,0x1ae21f2d90925a83L,0x8419072ca952c451L,
|
|
0x2f268b473d946980L,0x04831991b709ab5aL,0x0d622a70bf72efd6L } },
|
|
/* 47 << 147 */
|
|
{ { 0xec468aecf0440b85L,0xaae6041369cea78eL,0x5a88145d12a30f40L,
|
|
0x438c6e3f37a52bfcL,0x41bf603894749b6eL,0x3d38b86267edc2d1L },
|
|
{ 0xe379125a020a32abL,0x68a6b13a198c3944L,0xed1fb3258be252d2L,
|
|
0x76dc8df6e15c37cfL,0x5a6592cb6453b542L,0x372b1998b3347c65L } },
|
|
/* 48 << 147 */
|
|
{ { 0x015c325eb8e79179L,0xf4fc61335b57dce6L,0x27a51e5d78d6858fL,
|
|
0x13babcab4dd5f180L,0xfaa19cb1847e499eL,0xe2688ae608aaea61L },
|
|
{ 0xe20d7edce86100d5L,0xa9b0d46bed2fedacL,0x5e99cc0c1d357dedL,
|
|
0x4c1263ab723cac89L,0xad5f3e6ff15e22f4L,0xf25f3950d77dae65L } },
|
|
/* 49 << 147 */
|
|
{ { 0xf3814fdba1c6fb06L,0xbfde395d8d71559aL,0x6e4b2b1c07e00f72L,
|
|
0xac0d1aef1e12b111L,0xa4041ea0387dc52cL,0x8004ef4893c80d7dL },
|
|
{ 0xb311b5c29a770d6eL,0xd4a340bbaf41a540L,0xe96d1dbd9a5391ccL,
|
|
0xcd4b19fb45ebf6ffL,0x142556a5dcb6dbe8L,0xf68968ff092f898aL } },
|
|
/* 50 << 147 */
|
|
{ { 0x540a2e35c854356eL,0x6d0eab45f5002153L,0xb8f542bd9a6c488cL,
|
|
0xd572d282c6201f12L,0x260bc62781a3eedaL,0x508621af06eaa5beL },
|
|
{ 0x754eeb205eadc8d5L,0xfe33248f42d4b0dbL,0xf44a1c7ac5529222L,
|
|
0x9079ccb574396eeeL,0x6c4bc87db9cbdc41L,0x1ee8982431ee3f18L } },
|
|
/* 51 << 147 */
|
|
{ { 0xb64fc90ed811f25aL,0x310214a2c82c8f68L,0xee559209b5052420L,
|
|
0x6055c5b45c1bf95eL,0x414f7c8dedce3bc7L,0xd3438b8a66d3cfb4L },
|
|
{ 0x687b9f70d3935eeeL,0x553b15ddd3e179f1L,0xccc9961e21ff232bL,
|
|
0x3729ac207d322041L,0xf1537630094907c9L,0x3e87f4f903153dccL } },
|
|
/* 52 << 147 */
|
|
{ { 0x2c21e48c7dae4b17L,0xe842930a07ca1575L,0x3a3d6d361cc47ab4L,
|
|
0x749dba405fcd07bcL,0x55a538a6f306a498L,0xe85c60be633d42bcL },
|
|
{ 0x777595f2dafa94a7L,0x1c690529a0400ef6L,0x41485f886bfa23bbL,
|
|
0xdead14a1256d9204L,0x74f1a820bbda2f9fL,0xc86554f65fe54284L } },
|
|
/* 53 << 147 */
|
|
{ { 0x03ee764b978ad2dbL,0xec253b0f01c9282dL,0x028e7873fb26c425L,
|
|
0x3e1da0436504ba10L,0x68369881531961f1L,0x0365ea56ee435146L },
|
|
{ 0xf5505ae80c00a6b4L,0xc1ac097403f34fe3L,0x7327b391b5922f68L,
|
|
0xe561cedd1845ef9bL,0xaa82258c6a44b29dL,0x23e39cedc4d56159L } },
|
|
/* 54 << 147 */
|
|
{ { 0xf5a07dedd14a3ce3L,0xeda454ec9c47615fL,0x01d6b1562775730fL,
|
|
0x3ec02f95fe4d93f4L,0x335806e4dcbd0ceaL,0x3f498d1b51a19d96L },
|
|
{ 0x9949c853374b7210L,0xb255d34b25980320L,0x3b681db4307b513eL,
|
|
0x4137053add10a78aL,0xd9c0f2728dcaae0cL,0xcbeb6b7216031955L } },
|
|
/* 55 << 147 */
|
|
{ { 0xd1b13e72c709af4cL,0xb4b99796c12f27fcL,0x9e56569a05e2c06eL,
|
|
0xd8c880631212ba12L,0x8da1a6704e7f8fe4L,0x3bbb314f875bb39eL },
|
|
{ 0xc56ef7088fbc8a3fL,0x39b3cef2300d21bbL,0x5e755398458e347eL,
|
|
0x9f7b84b16c1b2162L,0x278ffd26b08d0c52L,0x7c8a442a9ec7febfL } },
|
|
/* 56 << 147 */
|
|
{ { 0x3c0e2b9737e8e6b2L,0xa2037913575da8b7L,0xeedf0a75b925cbb2L,
|
|
0x4f28ec1bc561b405L,0x368fb2742901931cL,0x52b54eee2f26221fL },
|
|
{ 0x381845b6247812a9L,0xf9bcc9619115a0dfL,0xef127dfecb84d25bL,
|
|
0x4256afe5fa10e0a7L,0x0c08a532353a15ebL,0xbbd15b176a91e61eL } },
|
|
/* 57 << 147 */
|
|
{ { 0x3c573b2655574ae4L,0xd3f12e8f2c0be823L,0x5954b69fde9ce60eL,
|
|
0xc433991bcedfd1eaL,0x35696716718e950bL,0xce4318664e9cc107L },
|
|
{ 0xee16b6347359991cL,0x8f05851b1818a113L,0x257a228c3b494b59L,
|
|
0x4239f98e156f91f6L,0x2382157c72efdcc4L,0xc82b652cff7b7ac1L } },
|
|
/* 58 << 147 */
|
|
{ { 0x072eee036b7a9a38L,0x42a680cbaef9b327L,0x67311eb8b56fb35eL,
|
|
0xf320acf3c7de3776L,0x09c89cc3ed15e895L,0x368501713232345cL },
|
|
{ 0x5a5fe1104822f90eL,0x64f7ef18c6077b89L,0xbbc5748c8bdfb971L,
|
|
0xdf5488334b6209deL,0x02268bf676e7f595L,0x1c7971b447779e75L } },
|
|
/* 59 << 147 */
|
|
{ { 0x90d308b495c9497fL,0x277535b782c903f6L,0x443cd37fc5d7b4c3L,
|
|
0x48ebf0acfcaff8a7L,0x8ee8c79e579f25f6L,0xb825ccd8360ffd90L },
|
|
{ 0x6327be1599fe4be2L,0xc94c68cf59ec2909L,0x0dbf8d4456660ce7L,
|
|
0xbb31989b5d510edaL,0x43c8c365c4a2e601L,0x100de78314dcf793L } },
|
|
/* 60 << 147 */
|
|
{ { 0x635ee0f3d33ac52aL,0x609c328dd1970e1aL,0xf28ddf0a09426902L,
|
|
0x2a94d4decbbcbbe8L,0x15890cf4ab7ecf5cL,0xb14a405df2dd4135L },
|
|
{ 0x64659a4fa6d01554L,0x1d1b2c43cc966f9bL,0xb02ee871df0e48b3L,
|
|
0x0bd13e47f4dc3ebaL,0xb4763547bb4fc529L,0x868650044068ab72L } },
|
|
/* 61 << 147 */
|
|
{ { 0xe3d60dfac22bda56L,0x021411ba6be2f502L,0xc1dd4d55b35e750fL,
|
|
0x708b62cd4d5e1648L,0x234a80c6347b8b8dL,0x53b6fa80f3ba912dL },
|
|
{ 0x4041b8007b92c92bL,0x636c12524b6dbceaL,0x4ea250d08a1aa141L,
|
|
0x9ffa7e35a2ae7be0L,0x765c809cd2844e61L,0x5bcabd922d56de12L } },
|
|
/* 62 << 147 */
|
|
{ { 0x48d594e522205fbdL,0x79c78f1c0862eb11L,0x02a3becdf7798099L,
|
|
0xbfe574a8b1ef2ae5L,0x1bfb7779c4781f34L,0x7211dfcf044da23cL },
|
|
{ 0xe4c3fd7dc3686ef9L,0x14c6e5b5e74210f7L,0xc40a0a0275ab746fL,
|
|
0xd2033594621f6369L,0x6bdbbe3d66241d44L,0x014b089ee47f00e9L } },
|
|
/* 63 << 147 */
|
|
{ { 0x93e3a89108e65849L,0xf90a376ba1a712fcL,0x6555d6dff1a48fcdL,
|
|
0x984ec5c86a763e90L,0x7a7fe565e55d6b14L,0x12550fe809b2e8b7L },
|
|
{ 0x21736c048e41210eL,0x72ae44d448ce08f6L,0x02755a2871fecc50L,
|
|
0x379da24beb485ee5L,0x394cb7ba66d7b659L,0x49fc9d60ab638c33L } },
|
|
/* 64 << 147 */
|
|
{ { 0x854b05846150771aL,0x35fdd9b4d9ca9868L,0xec8293894c32fc71L,
|
|
0x882fad4c9ec8f90dL,0x2d39990dc6c7b9c0L,0x7fbc201bd71a25e5L },
|
|
{ 0x6b852e655166da7dL,0xc6bde23a3d8c6e36L,0x370011545857f048L,
|
|
0x746621fc1ccb9bc8L,0x97e44e63612bb853L,0xabc3b450758da4edL } },
|
|
/* 0 << 154 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 154 */
|
|
{ { 0xd25f650804926a41L,0x7236b475514045daL,0x0b36031108b9b08bL,
|
|
0x16477aff3fe92e91L,0x6e5f6cb103189ddcL,0x81ff008ec698a38fL },
|
|
{ 0x02a09218c93adb23L,0x71fcecd3445d8faeL,0x55a15eac8fd6b76cL,
|
|
0x1e37ec3611ef96b4L,0xd1b3b3fc30e433b5L,0x4951873351d174c3L } },
|
|
/* 2 << 154 */
|
|
{ { 0x7914213db8c9f82eL,0x7a3e4e38fc038e90L,0x6edae5a126a34238L,
|
|
0xe566bf50701ce8c7L,0x3562e87555656e02L,0x48325ebfb4e8efbfL },
|
|
{ 0x5f10a50466505ec3L,0xd8b9834b8da78aecL,0x49d1fc25cc2f2e40L,
|
|
0xe973bb1caf5718c1L,0x9b8825dad2d6b890L,0x7de7885ee2f00f12L } },
|
|
/* 3 << 154 */
|
|
{ { 0xfb0fa0e6494fe64fL,0x4ea468b59a907f37L,0x9bb6d672cbabb7ccL,
|
|
0x523c7c6ea5be2b38L,0x4065adbb361c2e41L,0xffa1299925c13172L },
|
|
{ 0x0eb29793f80d5e2dL,0x862fe1ae8e4efeffL,0xd485483e948895c4L,
|
|
0x513977300d80d5bfL,0xb4731ffc348782f2L,0x42543c76e1a7f6aaL } },
|
|
/* 4 << 154 */
|
|
{ { 0xe37211be7ef79898L,0xa810387721344d16L,0xfdcd7e26a1b9f8b4L,
|
|
0x5641e45d7d7f72d5L,0x5377c1bec449c920L,0xd3edcb0cefc7b2a1L },
|
|
{ 0xc657a9ffe14b42fcL,0xc8f858c800831b07L,0x6bfcd1bcd020eaa8L,
|
|
0x17534b0a3f6860c7L,0x8ce5722284c7c806L,0xa1d40eaf2bd7456bL } },
|
|
/* 5 << 154 */
|
|
{ { 0x28b88cbb1a7093caL,0x09275152080a85ebL,0x0bee7d979c1dcc32L,
|
|
0x43698f5f5ed033a5L,0x4f142867b0f0acc1L,0x6e6202ecf62960deL },
|
|
{ 0xe95a607ff005b671L,0xfeee8ea060cae478L,0x456bb6e90e8ec6e5L,
|
|
0xc1c0319a9d088a59L,0x29c6898bbe3d2379L,0xd7049b2af8a8628fL } },
|
|
/* 6 << 154 */
|
|
{ { 0xe0c93007c9aa57eeL,0xebb2d47b8895a604L,0xb8aebc49c4fd6ffeL,
|
|
0x2c06e1e573f300b6L,0xa019070d81628b8bL,0x2db1690bbaf8c1eaL },
|
|
{ 0xb3fce6c8cc94ccd2L,0xf301463885bcdf4fL,0xb1e62616e2f82c32L,
|
|
0x85581e2468295a54L,0x0f2e2ff5bf51f8faL,0x940716f1155c1f6fL } },
|
|
/* 7 << 154 */
|
|
{ { 0x15b2dd270c6bd5f1L,0x07b5bd91eb086d0eL,0xe701742e97c5f5caL,
|
|
0x3ce5f3f6eea06ea6L,0x51a81a6aa9cee784L,0x2bd404c1c7182fa7L },
|
|
{ 0x27deca74d5b8bde4L,0x2c1931c595385e4aL,0x04fcb34e3a79d65fL,
|
|
0xdf3357edad1babceL,0x8bc628ffa31af476L,0x42ce1d91e5cc9e78L } },
|
|
/* 8 << 154 */
|
|
{ { 0xaed02b6b4e623856L,0x7a6d2bef3e1d74cbL,0x82226ec4654e7c30L,
|
|
0x008ac003e7034bfdL,0xe343c5407fd6b555L,0xca1b29071b429d44L },
|
|
{ 0xe0702a339c3ceea2L,0x48079aa9732694c3L,0x7e6d72f6d4652401L,
|
|
0xd92655ed35f60043L,0xa0dbaac6273e8cc4L,0x0bb8f0f93c3ffb40L } },
|
|
/* 9 << 154 */
|
|
{ { 0xc3134781a91940b2L,0x37579fc9e9b90620L,0xa506227a08acd6f1L,
|
|
0x603ecce0270da73cL,0x8a53b67d7fdd70cfL,0xe29b7df299640bd6L },
|
|
{ 0x7bb4fa877569105dL,0x6ee80ae8567bb5e9L,0xf394bd02baccabefL,
|
|
0xe854b3a6309c944fL,0x1271a131f06246e9L,0xbc1c205531580147L } },
|
|
/* 10 << 154 */
|
|
{ { 0xb41b87b6c95cd23bL,0xb99714ba55e371a4L,0xb138ee8f6f571cebL,
|
|
0x09c42be480146ec7L,0x275ee21eee9aa125L,0x0cef4d6f3a878b59L },
|
|
{ 0xd436eb1ca801068dL,0xe2c5448c762b8a80L,0x243beee1f3640ecaL,
|
|
0xf979458b32bbba7aL,0x6bc26cfea63407d3L,0xd3b6e132392dd1d3L } },
|
|
/* 11 << 154 */
|
|
{ { 0x123ae65005d0072fL,0x9f101624f0656bbeL,0x762bd4f4344e283fL,
|
|
0xd1f70d5161b6863bL,0xcd99382592ef9a38L,0x53aaa0c3ac2bf9bbL },
|
|
{ 0x13904fb521ef9a43L,0x0470a8ba2beb8f44L,0xf3733943fcfe9ecdL,
|
|
0x10b8881a79d776dcL,0x89b94c67b82b7139L,0x7af5147aeb962922L } },
|
|
/* 12 << 154 */
|
|
{ { 0xbc06ecab3de4ba2eL,0xf51ca0639e491bcdL,0xa6fc6fa0453c94beL,
|
|
0x5460f943ed1a6731L,0xeb11656a4ec3f1fbL,0x2fcb2cabff1e7d4eL },
|
|
{ 0x595264678fea2286L,0x838117a34e0bee38L,0x7bdf588824fd2ce5L,
|
|
0x13df0c839f2c2925L,0x1bf621e6dee97f30L,0xb43b2558ebea6641L } },
|
|
/* 13 << 154 */
|
|
{ { 0xf49a97d80a33b97cL,0x4e68d71512ab9bcaL,0xc0d361c04bdb65a3L,
|
|
0x5fba9fb86cfb0cafL,0x222e12ca2a716589L,0xaea01502731f5099L },
|
|
{ 0xf322ddf7e97b37f1L,0x050e82a5e55c844dL,0x01ef972ba11d664bL,
|
|
0xab30502882c737b6L,0x43aa811185e39769L,0x766a9350937c1456L } },
|
|
/* 14 << 154 */
|
|
{ { 0x246c86608e729329L,0x39fcc41dd693dac8L,0x48a65b54c062a6c0L,
|
|
0x368a57706a5a3101L,0xd143600f47ed1988L,0x48466d92a764ce3dL },
|
|
{ 0xb05006135a22cb6bL,0xf1d77247edea070cL,0xb1ddd151617f2464L,
|
|
0x7905069828b83fd9L,0x021abb26d70bf93eL,0x590b3c42ab5a5e1eL } },
|
|
/* 15 << 154 */
|
|
{ { 0xe86c737b728b8438L,0x21f45a22acf1dd66L,0x6f29f2d7abd4de3cL,
|
|
0xa223154576d4435eL,0xad902927f5fcafadL,0x272cceeb04f30557L },
|
|
{ 0xc2e4e0017ebbb2d6L,0x73954580bb873ec3L,0xadf5ec7ac7fa9088L,
|
|
0xc036da0464006dd7L,0x9c3545b5e8274f69L,0x6e153c2552325f50L } },
|
|
/* 16 << 154 */
|
|
{ { 0x5906a35c1cfb991fL,0xb62a4f80740a7744L,0x65c8ac9136f84763L,
|
|
0xf73b3debbe0f1dd3L,0x40358868a2d26c21L,0xd907e90a76792ae7L },
|
|
{ 0x3ecea167668c3d5fL,0x731068f26754b49cL,0x6db891090e006243L,
|
|
0xd29106e6dd94681bL,0xb40b8694a85a3de2L,0xc80c7bf1936b86ccL } },
|
|
/* 17 << 154 */
|
|
{ { 0xd735de6b91f7c76aL,0xd89aa1d4b054837aL,0x47c1a397271e94c4L,
|
|
0x8d91f3f9dcb7c071L,0x4cf9be2db4cc209dL,0x4fb6842ec08190d4L },
|
|
{ 0x926423a1d7b2aaedL,0x5bbfc08957a1cb44L,0x44438c56021defb3L,
|
|
0x8b9a2b1ba09863cfL,0xc9d5c170e37e339fL,0xa8994d5dabb18c7aL } },
|
|
/* 18 << 154 */
|
|
{ { 0x003d45d011913575L,0x866cb2dd87e1186bL,0x692f630146b69a22L,
|
|
0xd296a55c8174c1d1L,0x77ef6fbe9f17af00L,0x6b588be93aa922e1L },
|
|
{ 0x99ecb44f033e6dd7L,0x32edea2c1d22b7cdL,0x3122b027ba7006f3L,
|
|
0x8950054bbb6ebc5cL,0x4f6d606182dab805L,0xc12055181bae5f1bL } },
|
|
/* 19 << 154 */
|
|
{ { 0xeca71515ad7edd2dL,0x3f9c330e9bf56567L,0xd0b62d6749104bb1L,
|
|
0xde92596410cc8d89L,0xc7a083f4287fc898L,0x8ba176e712d15d2bL },
|
|
{ 0x2cee62f7b4c8c4c1L,0xc15966c2ef79aeb2L,0x9b449522427c11a6L,
|
|
0xcc850028eb49b2fcL,0x0966a06d3a22720dL,0xfd511944a1e78c8dL } },
|
|
/* 20 << 154 */
|
|
{ { 0x28d33e79e08c180fL,0x768c7794f6aec9ceL,0x5a749f3bce683c5bL,
|
|
0x717629d98371fe75L,0x5e828fc057712c1dL,0xb46c6ed17e4c61aaL },
|
|
{ 0x5d927bad5bccf95cL,0x55d6fc80d72f68ecL,0x560a99a398591dc2L,
|
|
0xc885fe8a4836664cL,0xd18acd4226d79298L,0x05e4cd17185df1d7L } },
|
|
/* 21 << 154 */
|
|
{ { 0x9c1e5db3ab34fbbeL,0x0d4b1e742f7eaa94L,0x106b0b5c86de1289L,
|
|
0xd2c6c1aab691a830L,0x2e55cff9b9717593L,0x4522b37d075e5e95L },
|
|
{ 0xc6ee67ea3abfeb96L,0x35844bbd890b04eaL,0x0246545a55d6f65bL,
|
|
0xc66bad2b13594e25L,0xaff4c6b35d6aa7d1L,0xebb7d2b5a3f42a84L } },
|
|
/* 22 << 154 */
|
|
{ { 0xebc60e21fcc83355L,0xc94dbc02d9119b77L,0xceb05a312f18ae9aL,
|
|
0xa8462962b8f69016L,0x58dde5a48f67b5f4L,0xb8bdf9c9af3c234dL },
|
|
{ 0xe95c069f80e85df8L,0x9d525e1bab3aa0e5L,0x73c8a92f76276d8bL,
|
|
0x7feb4abd163530efL,0x8ca949b35ef5ad73L,0xe129431e2e3d057bL } },
|
|
/* 23 << 154 */
|
|
{ { 0xa263d726c129d188L,0x89da948e9d526adbL,0xc7319a5a6b8a9149L,
|
|
0xd85d382d8816f421L,0xfad69eb1844032eaL,0xf668901a4233122fL },
|
|
{ 0x246cc0de210ddea0L,0x26d8ccb70bc07dbaL,0xfc1b558470e6708cL,
|
|
0x853802b775fa0b44L,0x215ccb88bb75a5b2L,0xff50f0cf24e60054L } },
|
|
/* 24 << 154 */
|
|
{ { 0x9d8a925b60dec308L,0xb72e3efa6b3ea363L,0x4f53ca6ddfb534b8L,
|
|
0x4e64874c6dd78a32L,0x336e5b46c2a146d5L,0x07c76d6398395201L },
|
|
{ 0xa4c095228fe3e815L,0x887e659d3221cc26L,0x0ff92f64c36286ecL,
|
|
0x57b1b903c3ebb08cL,0xc6bdc9b665f00c30L,0x826242269a46d36eL } },
|
|
/* 25 << 154 */
|
|
{ { 0xe054597768bbf4f6L,0x17bb77edb6e2cc19L,0x0cc551d89ae950f7L,
|
|
0x3490778d761763a4L,0x1c36044a32647ceeL,0xa6e083223f9d2938L },
|
|
{ 0xea392a153a656a51L,0x4d51161ba083cb54L,0x15c01e792c690757L,
|
|
0xc7bf5d7c5cc62636L,0x1b00cddab2ccd76aL,0x68f49fa995313f8cL } },
|
|
/* 26 << 154 */
|
|
{ { 0xc782c16c1a0b619aL,0x8643d42bbe316086L,0x49d2966bc0daa421L,
|
|
0x080b1cafb7b487e0L,0x1d33bb53144de273L,0x8bafce2d6faf7ed9L },
|
|
{ 0xdafbe3cf408d4636L,0xf10527df7ee8835bL,0xe1123f3ee2e75522L,
|
|
0xb388c64bebe27d60L,0x2cb38dc1e3f1f55eL,0x57ff8e43e34524d8L } },
|
|
/* 27 << 154 */
|
|
{ { 0x557dc1cbea28398bL,0x34d5709a208996b9L,0x94470993e97a3306L,
|
|
0x0343320772b117f3L,0x66c4e442f056525fL,0x27753c526d11dd35L },
|
|
{ 0xf0aa7658b26a70d7L,0x95608b19543cd7ebL,0x618b2e17bac19156L,
|
|
0xe7e42948cae64ba1L,0x2016a9d59657ec93L,0xa38f67e03d7ea46cL } },
|
|
/* 28 << 154 */
|
|
{ { 0xd67dc92b85653dc8L,0x8e0970af0bc93ab9L,0xb6f09baa8b87c0afL,
|
|
0x5a8a903052760ef4L,0x2e2ae7561047bf85L,0xd049078f85bd4e74L },
|
|
{ 0xced11ff83729f708L,0xdd21cbebd91068a6L,0x83d488ff24b3e911L,
|
|
0x6e166fda1afd2196L,0x66a912114f0d2128L,0xd11078ed05c9f39cL } },
|
|
/* 29 << 154 */
|
|
{ { 0x69aef6f919c64bddL,0xe7d4f909598ab592L,0x48952e280e55124fL,
|
|
0x637693f6290b558bL,0x3afb2e7b421e60e9L,0x00d1dbac79aac8a9L },
|
|
{ 0x45156c5cc08563d5L,0x8cc201be4519c881L,0x2e36c0d7bd616581L,
|
|
0x595fe0164ee16dffL,0xeebec40ae4889c65L,0x23b6dfd7d35b94e7L } },
|
|
/* 30 << 154 */
|
|
{ { 0xd87003d3bdbdf0cfL,0xe9750b5b56c298f1L,0xc256c3a2b73ad05dL,
|
|
0xe0779a192ee94279L,0x31d8b3c6279626a3L,0x469056bb90163bc8L },
|
|
{ 0xe6aeabc623755853L,0x9fffdfe2896a6f4cL,0x15c1ce78a36cf41bL,
|
|
0xd4c8c025eee41941L,0xf7a917ee7653be9dL,0xfa3cba9659d52222L } },
|
|
/* 31 << 154 */
|
|
{ { 0xa02f08586d8c610fL,0x9819c563ad4af3cfL,0x085d4439b95d17eaL,
|
|
0x9df256ea616f532aL,0x5e9c5419cebd249cL,0xdd5ffbf451062a22L },
|
|
{ 0xb8910ea5c8b33577L,0x5e8b7ff7ff8e63d7L,0x5e4f3926b24e230dL,
|
|
0x163eb51eacd851d7L,0x9bda95f2ea2aef8eL,0x3d6887755aefa290L } },
|
|
/* 32 << 154 */
|
|
{ { 0x913f92075f8ab132L,0xd5b6792c5c14080fL,0xefab4e2c787c3594L,
|
|
0xa55d465fe7b7b7ddL,0x921aaad834e28e6aL,0xc4f3a35e12d6a7bcL },
|
|
{ 0x109803c46115a5aeL,0xc023098ce709f9a1L,0x1a8c8bdb99c5bb66L,
|
|
0x1cd1c2b6bc7c2da7L,0x50189c975f927eefL,0x493823d1229f9410L } },
|
|
/* 33 << 154 */
|
|
{ { 0x34ec4dc840dedfb0L,0x1109ddb93aa89063L,0x93d9db278c218bb9L,
|
|
0x07131b6e0b6007ddL,0xf90570ddcc4690f0L,0xa6a9a634afa26a59L },
|
|
{ 0xbd0c25194292e2b7L,0x92b99706a6d44b7eL,0x89481adf4942c03bL,
|
|
0xff5e56b98a0c30d5L,0xdfd8939591c80fafL,0xed9d140840663594L } },
|
|
/* 34 << 154 */
|
|
{ { 0xcc22db55c41e42fcL,0xc90ec77e4c9f2411L,0x419b9f46e4c02557L,
|
|
0x156ed30ccee45c60L,0xf2c1340a72e4a938L,0x4a9cda8a204775a8L },
|
|
{ 0x900fd58713952b75L,0xa82ec2b812461145L,0x9f1875d41db68028L,
|
|
0xaaa6af31308475acL,0xa11f379442d4b884L,0x1f1fcbe3d087882aL } },
|
|
/* 35 << 154 */
|
|
{ { 0xa32d5a80a292fbecL,0xe0b10099d7091eabL,0xcb99bf7b4bfe6956L,
|
|
0xfd806d4c61955461L,0x7124b1bf931066fdL,0x29fad019649ccbf7L },
|
|
{ 0xd1fe7911049609e7L,0xb568e167592f93c1L,0xabe7d10398ba066cL,
|
|
0x0cd22c9668d7ac2cL,0x0ccd0c21427522d3L,0x97ba199ba503b4a4L } },
|
|
/* 36 << 154 */
|
|
{ { 0xa0f2da0c78a2cbf7L,0xd1611acbd163d80dL,0x1af6ee1bf2cd3795L,
|
|
0xc4993e08307d6105L,0x84c3b8f8560b5f12L,0x4f52c56347869733L },
|
|
{ 0x8fd9e3f728d28bc6L,0xdbf34576e5d44bd9L,0xf7e3a6da10d14cb5L,
|
|
0xb93870990fe051ffL,0xf6363a48f15d43d5L,0x4bc358fcf434d1acL } },
|
|
/* 37 << 154 */
|
|
{ { 0x35bac9471eae6dacL,0x4244697e39d6fe97L,0x16ec7f64fe017230L,
|
|
0x393856d10493823cL,0x0782fbb55b7cbbfeL,0x4c399e3f5820f9f9L },
|
|
{ 0x86311cd9c08fe816L,0x057d4cbbc3ac958bL,0x63f09d484bdb0531L,
|
|
0xab0b582b0b89ea02L,0x19c52243beb30331L,0xafa64f25ca87ff6dL } },
|
|
/* 38 << 154 */
|
|
{ { 0x0d28a67859b1f4aaL,0x79b04589c52d40f4L,0x443b7fa5219303d9L,
|
|
0x5be78d9663972eceL,0x0ccb969e7d984869L,0x7d8738077f81916fL },
|
|
{ 0x3502b3e426d9f292L,0xda1de7a82c90b612L,0x5605f5dc434f27c0L,
|
|
0xa50d3328df89c616L,0x5a80cf84e7082731L,0x2c89e4b6f7ce953aL } },
|
|
/* 39 << 154 */
|
|
{ { 0x7a46cd0d01fdf1e6L,0x86868e74e8690fbeL,0xf038771d8a8fc3b2L,
|
|
0x30135b3084303d90L,0xa7ecb9ded562d20bL,0x7a6d1f37884cd233L },
|
|
{ 0xa30ca0bb07dfad3bL,0x1690d6018e09fa7fL,0xe582449f6c744551L,
|
|
0x0b0030a21b935d17L,0x6b46681272bdb78cL,0xe40d4e5f56d4f328L } },
|
|
/* 40 << 154 */
|
|
{ { 0xa29978fc62a8b8b4L,0x4cc216310fa130a9L,0xe4b51c6bf15e04c8L,
|
|
0x453cf4d23f815420L,0x1257c751c6282b9dL,0xcd15b03c8af1af36L },
|
|
{ 0xe3596240514ef6e8L,0x72a6691708ab83d9L,0xca0a62d710e44b2dL,
|
|
0xcde068128a9b8a8dL,0xd492b261ba470875L,0x5c7ea67cc6d7aeb8L } },
|
|
/* 41 << 154 */
|
|
{ { 0x6acd945fc0995487L,0x06d5b2e47abac4fbL,0x42cddd75aaf3d12bL,
|
|
0xca7d2363de1b9632L,0xbb1a1990dfbbb30fL,0xb0beb43139fd7bd4L },
|
|
{ 0x9ceb36884fa796e7L,0xb4d2bc4ba3266ab8L,0x79bda9d6e02df012L,
|
|
0x414636bbf6faf7c4L,0x0a6603b9d1ab23f9L,0x2bc60c848db14f7bL } },
|
|
/* 42 << 154 */
|
|
{ { 0x1b36ef27007ff90fL,0x394fe8095111399dL,0xaf4f246cb758e748L,
|
|
0x794e4b151a7139a2L,0x40869a49eb527db3L,0xf2e15106f46d1b34L },
|
|
{ 0x46619f0352ac96e6L,0x40f556de49caf0c4L,0xa36b11d693072befL,
|
|
0x871919b4ab2dad50L,0xf44b8084792dcefdL,0xe051823dbc31b021L } },
|
|
/* 43 << 154 */
|
|
{ { 0x56293d8dcfd7432bL,0xdedf8dfd1d5f72c4L,0x743f4a71ae604fb4L,
|
|
0xfb35ab43730caf7fL,0xcaacce6b20fc2167L,0x21ec3a0daa8ac71aL },
|
|
{ 0x4fdf5890c21ac9baL,0xbdc41ecfd6149328L,0xb1ac4d519b381c55L,
|
|
0xc4cc08fd63f10a98L,0x2b9f0d3a4913a671L,0x9ce9949cbc36a952L } },
|
|
/* 44 << 154 */
|
|
{ { 0x5049a7d3f758b1b2L,0x60beb74f14ab97b8L,0xdfc47828a9ff8ad3L,
|
|
0x303a0cde8bb99766L,0x53f4b45a43b9a7a6L,0xe467aec8ca6e8c43L },
|
|
{ 0xb8e7db7b3f573855L,0x5fee5a5481e760f1L,0xe928b23385b0fed4L,
|
|
0x72f02728ebae0b7cL,0xe32abf70bb5897d3L,0x103e8b859c572995L } },
|
|
/* 45 << 154 */
|
|
{ { 0xf321278c2dc1a02cL,0x06ca03865dd09f91L,0x3c28640b7bac9e7aL,
|
|
0xe3a7f9b527b1a011L,0x9137ad0407ccedd3L,0x3a2976a8cb6b447aL },
|
|
{ 0xab1c39248225c1ecL,0x30703f108f9022a8L,0x212f0f1bb0b2a64bL,
|
|
0x76ad924b3e73862fL,0x47253a5c84842ac8L,0x33a03a17755af95eL } },
|
|
/* 46 << 154 */
|
|
{ { 0x97c371fc5a274b61L,0xc7362cdbb14c680bL,0xa8cdd929efbd49afL,
|
|
0xdfb2d5f075325f06L,0xf62d10e2b905531bL,0xbdfbfd8462ed0c3aL },
|
|
{ 0x252061599d07d2daL,0x1376775152491224L,0x165637057413313cL,
|
|
0x642a7911a2b88eb1L,0x42d9dc6806ffe363L,0xe81d3403017bcc9fL } },
|
|
/* 47 << 154 */
|
|
{ { 0xa68ce9db93d57f06L,0x4d1fa86a31dba07dL,0xf11603178c4822abL,
|
|
0xc2243680633c26f5L,0x6b4e91cd10f1da80L,0x4358155734827d78L },
|
|
{ 0xbf54e87400c19817L,0xf52b94c4f2bad957L,0xcc85de8144e71756L,
|
|
0x4f7d8ca365b7a8c2L,0xff76efa579d7c36eL,0x50a444025952932aL } },
|
|
/* 48 << 154 */
|
|
{ { 0x87c0ef84172784bdL,0x023128267a5f2d07L,0xeae5c0cec9901fa3L,
|
|
0x6ea74133a11144e5L,0x740c3d2ed8e89beeL,0x88e06131f9bb1801L },
|
|
{ 0x47f253754356fd51L,0x8e2ca6ce38e45ea1L,0xf0afe990c2ef8066L,
|
|
0x91b7263d8ea03d0fL,0x37b01664880ca591L,0x61306f09790c8ed7L } },
|
|
/* 49 << 154 */
|
|
{ { 0x084c4f92b24a5736L,0xf3d01da90a3c3859L,0xd37c47ed7468b812L,
|
|
0xeb539a939567c798L,0xd852f502acfdc072L,0xd8e5454996245975L },
|
|
{ 0x42ec3948db5e323dL,0xdbebd1c7002d3fadL,0x9cc5db55d7c62d0aL,
|
|
0x22af02388afa4c07L,0xbdcb68fc6979eb74L,0x33763dd544dc11baL } },
|
|
/* 50 << 154 */
|
|
{ { 0x4734465f87c2e496L,0xbafe4fb4eb7d82c4L,0x940b168521837f17L,
|
|
0x790d7041345a66c3L,0xe9973cfd65ea596cL,0x45fc95df058b3350L },
|
|
{ 0xc63bf91405d08638L,0x36e6af6476465a92L,0x7fe09193f1eb3701L,
|
|
0x364f64f06468e2aaL,0x83108431f7129cc9L,0x3ac117205606bf94L } },
|
|
/* 51 << 154 */
|
|
{ { 0xe6a85c7d34dcecd9L,0xc14437fe338cdc1aL,0xa5eeb471b3a9233eL,
|
|
0xf230947c71349a62L,0xe704a95686308ebbL,0x0ef4d4da4a362a8dL },
|
|
{ 0xae9be4394b634c67L,0xf736c07c569f0039L,0x7356f3010f5f07d9L,
|
|
0xc86c4000823c9cecL,0xc43b3489951ab5faL,0xa7a3b3a6b46bb659L } },
|
|
/* 52 << 154 */
|
|
{ { 0xb1d6cb737337af87L,0x09a59a6908638c3cL,0x4ecc3fd25d94c727L,
|
|
0xa7b57269e274ba87L,0x909cd824a61a0590L,0xcbe63cfe3c11751dL },
|
|
{ 0x9574de8347c46efaL,0xee334cda539b7e03L,0x245bc6a2e3ef3599L,
|
|
0x13a570fee88d0da7L,0x88ede26d90ef4a21L,0xa0c5953b01fccebcL } },
|
|
/* 53 << 154 */
|
|
{ { 0x855ff0f7657121c2L,0x18754814f94c7402L,0x720f1e3c32ce8340L,
|
|
0x7ecd080ee8e49d3dL,0x2838e642f0bee412L,0x69cad618209f8e60L },
|
|
{ 0x5730f2dba983a4cbL,0x74957697f43896a1L,0x68de04373dc55d4aL,
|
|
0xa2fbb915628698bbL,0xc8279c975cace19dL,0x7df557465fd52bc0L } },
|
|
/* 54 << 154 */
|
|
{ { 0x1cb1c2f378c3f521L,0xa425f99b63116c7dL,0xc86b48c36f7c0e71L,
|
|
0x9e92e82dc76a73ddL,0x8c0414657e7d6df8L,0x99e7884d38c02d8eL },
|
|
{ 0x6c53c0cfb78a7e50L,0xcbcb5114481d60ebL,0x1eed68ed035b4441L,
|
|
0xdc95269f755f18efL,0x3ad7f32a3fe51f12L,0x981782d017296245L } },
|
|
/* 55 << 154 */
|
|
{ { 0x7743ef2655fcd15eL,0xa73944a4d07f3cc0L,0x3161d6a32438cf14L,
|
|
0xad193a9b14e8938aL,0xe1de190e872dac01L,0xb165da2fc4795b10L },
|
|
{ 0x1eb89d519e155bfeL,0xc8b97d94c9c552d5L,0xea7d3edb108c4c82L,
|
|
0xafb60b29c10acbb5L,0x331b316b82c7b642L,0xa53c4b3d719fa342L } },
|
|
/* 56 << 154 */
|
|
{ { 0xc8dc34f36b3bcbdfL,0x952d337b24d72806L,0x28b8ec817e56e8c8L,
|
|
0x98e78abdbe861aebL,0x521773ddcf3bd040L,0x582ffcb2b7ca45d2L },
|
|
{ 0x70962c0a04202ac8L,0x31b6ac909f29381fL,0x3b4cd403355715a7L,
|
|
0xffbbd1a7399a071cL,0xac669b08e50f02d7L,0x0f568c89b2cf0565L } },
|
|
/* 57 << 154 */
|
|
{ { 0x2d2afc2daae7e637L,0x840e47c782a818efL,0xfe26a67c879f2451L,
|
|
0xd41d289810f54247L,0x36040f4877119f14L,0x741859a983f240ccL },
|
|
{ 0x15f9607a8fa720c8L,0x8eb70f6df7b8e32dL,0x755394229b98d670L,
|
|
0x80a4a127750c4e62L,0xbe88d03195ca3a50L,0xfadeb53dc6411eb6L } },
|
|
/* 58 << 154 */
|
|
{ { 0x19f29da06b824028L,0xa5cfd12b7bd354a7L,0x1cb5d74caeb59b3aL,
|
|
0xec9a8ccc47211999L,0xd7f2a1c17852f167L,0x134629209a1859cdL },
|
|
{ 0xdd65f7ac9e3a339fL,0xccaa968075437831L,0x25772f9b7f502bb0L,
|
|
0xa64cd12f6fa0aa66L,0xd2f46ac62af2c3d4L,0x58433d963f262a2fL } },
|
|
/* 59 << 154 */
|
|
{ { 0x747757c6715ba7e6L,0xc01b73c1f9cbefd2L,0xf1d96de501bbc017L,
|
|
0xad554e91a1087f55L,0xd9b74be65a6cc716L,0xad2f2c0320317019L },
|
|
{ 0x42ef19c207893532L,0x7f3624c40858fdc1L,0xc104bde7078936c6L,
|
|
0x99af706682b5f95eL,0xa40e02625a13a9a0L,0x6c0251c40a318574L } },
|
|
/* 60 << 154 */
|
|
{ { 0xedb3abb1fe36eed2L,0xbb2cc1e6a038298aL,0xfa0ac06fe5adc3beL,
|
|
0x7cbcef3eae73ebe1L,0x41596590cd676b87L,0x6cc8c0ae214391d7L },
|
|
{ 0x826e2e16fcb3f244L,0x1ed7837e1be22058L,0x83052d0d1a9912b3L,
|
|
0xa2cb410c8ac3dbf5L,0x279d555a7faa6bc7L,0x870e7132f52b439cL } },
|
|
/* 61 << 154 */
|
|
{ { 0x5957428e385308d3L,0x49ba20b3bfdae187L,0x4e1281c3adb44defL,
|
|
0xebe93dc4e75c6cf9L,0x81d1d1cff675fc6eL,0xbe01bcecfe0e371cL },
|
|
{ 0x713f294d336bc7caL,0x1beb1508e26a1903L,0xbb5feab4b6819961L,
|
|
0x28bede2741bfc7efL,0xb0a5108bb3365719L,0x81a8c9255ccd21a3L } },
|
|
/* 62 << 154 */
|
|
{ { 0x4f3d90af2bea6870L,0xfebb0de2ca26ca46L,0x109d96e5d58bd9d2L,
|
|
0x4b42928cd9882c8aL,0x5238cb7a8c73adcaL,0x9d79d72a4adfc913L },
|
|
{ 0xba58929d1f0bf201L,0x0b7790a505f52baeL,0x361949aae45fda0bL,
|
|
0x21b2d006af3f732cL,0x1ed05dc33aa84bf8L,0x2322b7f72405980cL } },
|
|
/* 63 << 154 */
|
|
{ { 0x4a38b5b2c7151e42L,0x1d5dd94894550168L,0xf2adeb5b7b3d1d93L,
|
|
0xe15c42fa36661a89L,0x7d55a3f27a3aee90L,0xbe1b5c39d9d350a4L },
|
|
{ 0x9c4d6fa2610f16b8L,0x7b96051da60fb18eL,0x539762fa496c018bL,
|
|
0x048ffa39168a8f22L,0x33486ccada1c0a58L,0xe216d6be9fd687a1L } },
|
|
/* 64 << 154 */
|
|
{ { 0x11a8fde5f0ce2df4L,0xbc70ca3efa8d26dfL,0x6818c275c74dfe82L,
|
|
0x2b0294ac38373a50L,0x584c4061e8e5f88fL,0x1c05c1ca7342383aL },
|
|
{ 0x263895b3911430ecL,0xef9b0032a5171453L,0x144359da84da7f0cL,
|
|
0x76e3095a924a09f2L,0x612986e3d69ad835L,0x70e03ada392122afL } },
|
|
/* 0 << 161 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 161 */
|
|
{ { 0x3ee0a31c6754f492L,0x02636c6b96769ff5L,0x90a64f4ff0fbfa96L,
|
|
0x513f054efafea65aL,0x796ba7479cf4b9f9L,0x3198c068932a9590L },
|
|
{ 0x93af8a65549ee095L,0xb8b6f72ca212760fL,0x23bc71e9c1a46c8fL,
|
|
0x000643af4c9bca72L,0xb6d967c7848cea30L,0xe06b6b4e73312ec2L } },
|
|
/* 2 << 161 */
|
|
{ { 0x52ec99561d85a725L,0x0f9be000f3208012L,0xe881337c6dcc7816L,
|
|
0xe4e7b6d9791f7cf1L,0xfaa717aa59885a42L,0xb1bbb5c7f9c01e41L },
|
|
{ 0xcf208d58a0361880L,0x24426e4020afa350L,0x7261871b264ce04aL,
|
|
0x66be4a86cd42026aL,0xc5397b77829f99feL,0xffe4a6bc24578e2bL } },
|
|
/* 3 << 161 */
|
|
{ { 0x0733667af822d5f9L,0xd7f81b9e18339700L,0x7ca29b27a7bc265fL,
|
|
0x9fefa698eb4f0c7aL,0x7b6f351301f27630L,0x72f0f152fcfb1133L },
|
|
{ 0x9928d9d05c81eb14L,0xa16ac36bed8ff6cbL,0x7fbd1acbe041bef3L,
|
|
0x7d25159af8d99854L,0x2ec3a7d8db5a0dc5L,0xd86fc4cc87e3e933L } },
|
|
/* 4 << 161 */
|
|
{ { 0xba8418f34c20e15fL,0x7eed2494fb54404eL,0x4e6438d7bce1e82dL,
|
|
0x9e489b3eb397915bL,0xa9baea9ffb4cf659L,0x8bc5b2ba42ef4affL },
|
|
{ 0xae3fb5337e62a188L,0xcd648493496e8e35L,0x89728e28defe047bL,
|
|
0x63a8c679d24e60feL,0xadacbf92470f710cL,0xd470aeb95e198d3cL } },
|
|
/* 5 << 161 */
|
|
{ { 0x8e3807dd7a3e874aL,0xc4edb45b89ac3a99L,0x9ba9cdaf4bfd77d2L,
|
|
0x31d33f59b540fffcL,0x404c87790c60028bL,0x7f89da7189688c81L },
|
|
{ 0xdd3390e5504b862bL,0xdf1e721be937efe3L,0x5833d0df63e6036fL,
|
|
0x7712527a385fbab4L,0x6347236bd210c0d4L,0x12d7733c8d238e2dL } },
|
|
/* 6 << 161 */
|
|
{ { 0x0ecb0723302e943fL,0xd180ca1e4a443e78L,0x39e7891123dd2c9eL,
|
|
0xfa2a440401fe50bbL,0x4678e7ed154d39d1L,0x64ddaee1af513e01L },
|
|
{ 0x6d4c615a634904daL,0x937c6326ba5c900cL,0x70658f5feb6c8582L,
|
|
0x2a04fd51f3d65166L,0xcefe7472b676eb47L,0xd3565a71f597d887L } },
|
|
/* 7 << 161 */
|
|
{ { 0x299520f4e5dcba80L,0x522ad4b52b758045L,0x54eabe27193b36d4L,
|
|
0xda4d3bff45e9e442L,0x44cb9252637311f3L,0x4cd620a971338ebfL },
|
|
{ 0xec908157cc9524fbL,0x2731a11ba8c955d7L,0x72a5e0545cb94009L,
|
|
0x7eee8f3b9126cfe8L,0xc71e29203dd5d5ceL,0xe886f91a22069494L } },
|
|
/* 8 << 161 */
|
|
{ { 0x294d29550db962c0L,0xd6994ef46d523ab0L,0xfa1a7f9158f95037L,
|
|
0xb137981164420c94L,0x2b686e1e093caea8L,0xdef10944f9e1c340L },
|
|
{ 0xcd1beecf611d9bf5L,0x34696c50a1b5267bL,0xcecbc7192dfc2b16L,
|
|
0x2cdb955dcee7e854L,0x9fefc321f2635cc8L,0x276d2e4f2936f7d3L } },
|
|
/* 9 << 161 */
|
|
{ { 0xa9de8b87d38e86b2L,0xe0c2f232780d2fb9L,0x742d7fe9449e78b1L,
|
|
0xc6946b7ef29efe3bL,0xbd59bcf985de7456L,0xb070ebfadb492e64L },
|
|
{ 0x5cda7ac8a0ff7c15L,0x6e0c0062c4f435c9L,0x4d8e5395974d4be8L,
|
|
0xa0a0c5984e6d1681L,0x5debadbea14cbda0L,0xe176a772ae30b167L } },
|
|
/* 10 << 161 */
|
|
{ { 0x25df81bce7b19019L,0x3058081aa6f45519L,0xccafbccabb3de1d7L,
|
|
0x2b794710c515b1b0L,0x74b81bf87168d9ddL,0x92d5e462ec00571eL },
|
|
{ 0x865e29efdc670943L,0x2350537c7f6299c0L,0x9fdf787ea947c6f8L,
|
|
0x9601cb21cabe0f8bL,0x2899d5f49313b000L,0x4873bc9f66a9e8e2L } },
|
|
/* 11 << 161 */
|
|
{ { 0x2829add72f163a26L,0xf96dd91156909488L,0xc16d185f769ccb59L,
|
|
0x13c4b566e9c6da4fL,0xfd68110bc423ac34L,0x64911819cfaa9fb6L },
|
|
{ 0xad7c7d2b12dd07e5L,0xbf7eea90abc19a50L,0x1db70ed108d6c57aL,
|
|
0x01da2b41446deeabL,0x163a5a5fa4f6a367L,0xca9f4bcca10c8a53L } },
|
|
/* 12 << 161 */
|
|
{ { 0x2132c32e68206a00L,0x20bc1bb483bab6d9L,0x99fa3be2bc4ef156L,
|
|
0xe515cd05ebbd6c33L,0x9c06d7670d2c8ebcL,0x2fa7f3b68a79c884L },
|
|
{ 0xa4dad16a9137df25L,0xc4da20f833598c21L,0x32f5d9e3867cb117L,
|
|
0x8f00fb54da7cf533L,0x428cf9e3870ef3b4L,0xa8b6c754521b8428L } },
|
|
/* 13 << 161 */
|
|
{ { 0xe9b297be7be5e610L,0xd09f63c304b49303L,0x9110a9b381ebb814L,
|
|
0xc32af8986bf19586L,0x5c4939571da2280fL,0x89e85cb41becc5f5L },
|
|
{ 0x1068cb528f1a396eL,0x49dde483440a6144L,0x51280400b5d6aaf0L,
|
|
0x0e8ac4a53e8ea21aL,0x32f4a91d92582420L,0x5eb09649bc35e408L } },
|
|
/* 14 << 161 */
|
|
{ { 0xea3a2f0c32f235f8L,0x8281bfe5bf4a8256L,0xf44e1319577b9e1fL,
|
|
0x31732d1bab2d9ac7L,0x6e7682eff375c5cdL,0x7069fbaf0913ed09L },
|
|
{ 0x693257dcf690cb94L,0x576a85b2dfa6e07bL,0x72e00515447fe4e4L,
|
|
0x00af617509a2cd8bL,0x05a61365902ae75fL,0x8310b16db5ecb690L } },
|
|
/* 15 << 161 */
|
|
{ { 0x4d22c79cb00fd8f5L,0x432b09844c9ed8b2L,0x43da93b2a85b3f0aL,
|
|
0x0522df2ac4163655L,0x2ea7210b77214019L,0x8280099b7051a9a3L },
|
|
{ 0xcd0a829bb11b9e80L,0x9bda76c7246ee656L,0x1ece801bad70a0faL,
|
|
0x4f8162f096721d79L,0x341faae58e7c3b0aL,0x6914420b12e57cf4L } },
|
|
/* 16 << 161 */
|
|
{ { 0x4962c02167141724L,0x5f81eabeabe7762fL,0x78549a79dd189c3fL,
|
|
0x47675cdd6ce517a7L,0x5102294e32d6bb97L,0xb19500c66ed1a029L },
|
|
{ 0x3efb54e8b16a206cL,0x7dbdcc250dc135b8L,0x955bc2948967fb04L,
|
|
0x373615c9be04e909L,0xf1fcf820111efad6L,0x8530f97d6fd2e97aL } },
|
|
/* 17 << 161 */
|
|
{ { 0xdfff3aceb3b513d3L,0x569f9d42fdaed4c5L,0x8615a9cf71cdec34L,
|
|
0x2e700c34ceeedc56L,0x9047d770a48d0682L,0x3fc845780ee5893fL },
|
|
{ 0xaaaf3d90ab5b432bL,0xc846365184cb412cL,0xd215030d928ec9bdL,
|
|
0x237a710045b97accL,0x0f533045ff791353L,0x093a0d21a1899bf6L } },
|
|
/* 18 << 161 */
|
|
{ { 0x5da20568b4bcee44L,0x878025840f5bd27dL,0xc76b965c1c06dbccL,
|
|
0x89ea2cceb1492616L,0xaefc8746b460c4bdL,0x679e6edb994d1756L },
|
|
{ 0x4ff93a4a271f3218L,0xae496faf3b970a74L,0x062df3a7ba6c44f2L,
|
|
0x1ede93021990ede1L,0xa797899af9a1e2adL,0x9b1bcf6d82599120L } },
|
|
/* 19 << 161 */
|
|
{ { 0x63a38a51bd04f6ffL,0x2ddc958bffafb91aL,0x198895cdb19b2b08L,
|
|
0x1bb494246f65b797L,0xf75df140f157b79eL,0xa188dc873d599990L },
|
|
{ 0x8b926eecaeac83c2L,0x55fe56f03b82900fL,0x10eb6dd33b11d061L,
|
|
0x8b44c14c3aec5877L,0x294b83e8b486e651L,0x469e552f79524b3fL } },
|
|
/* 20 << 161 */
|
|
{ { 0x69386f451a746ed1L,0x4319649bcc14bac3L,0x006292b3b647cefcL,
|
|
0xc771b7cda20e2a37L,0x838714d2396bf329L,0xf263e66759c0823dL },
|
|
{ 0x7ee258f0725e3ecbL,0x37638f9934218254L,0x4d57db246fc6d0f6L,
|
|
0x8c85ad7322c2dd47L,0x2300a9129c59cf13L,0x63971b0bee08c1bcL } },
|
|
/* 21 << 161 */
|
|
{ { 0x180032d98c2e7698L,0x07d4d364a851f2faL,0x0070bbdeb50b5986L,
|
|
0xba05ee28274eee7dL,0x28843675b0f482e5L,0xdcc9c09ff82b2229L },
|
|
{ 0xae0273e7f061df73L,0xa3856b6644e3a740L,0x4b13b141527b80ceL,
|
|
0xfd83b7f0e1b7dabdL,0xa3b5a2f1536c04c3L,0xfd09c77bb29e2bf3L } },
|
|
/* 22 << 161 */
|
|
{ { 0x05fe64c5436e7c2dL,0x5b9f0b83ebb1ee26L,0x13dcbfed2977d6f5L,
|
|
0xbd16c6b7db552375L,0xaaeacc2342da342dL,0xe427d2ee0cfec89dL },
|
|
{ 0x3097ac7b038b280cL,0xa2b79d623aab3c43L,0x9771fff4a40f585aL,
|
|
0xf50974e0b15aa16cL,0x114e51137a847284L,0x574ba8efb4fbe083L } },
|
|
/* 23 << 161 */
|
|
{ { 0x3c8dfa3b05e37e4aL,0xeaf691b47408352aL,0x2e1ce9863c9a8610L,
|
|
0x8d024a814acfb35fL,0x3766aa2184ba6baaL,0xc336f82eb91f5a27L },
|
|
{ 0xe2d46985412ab7b4L,0x397f0411ded6de53L,0x067241c3544768fdL,
|
|
0x9206d3839b71e023L,0x8571fe1e3f51c3c9L,0x0abdb52e3ba345abL } },
|
|
/* 24 << 161 */
|
|
{ { 0x85e1e4abd5281f9bL,0xc7e517ddc653b0c8L,0xc0b84da1a717e034L,
|
|
0xf1a63b280f1bf3dfL,0x47b74201aba6fd41L,0x9cf3da633518fcabL },
|
|
{ 0xe12511fb23bb6e77L,0x13b2cb4438679d79L,0x20e0fb10db5665c0L,
|
|
0xb5448a33b99f4d5aL,0xcb1847ad46b7dbceL,0x41f156b8fdcadb87L } },
|
|
/* 25 << 161 */
|
|
{ { 0xd09b746793c8b2a8L,0x36c760204357f251L,0xa965d1771ac04cf1L,
|
|
0xca49d59427740f18L,0xbba973ed76c53b33L,0x7f8c2d264c17d867L },
|
|
{ 0x389afbbb00966b80L,0x92f2097a55988387L,0x316a85393a47c746L,
|
|
0x259ae094ac3a3a30L,0x337f1d3f0d61ee3cL,0x02d5a60ca9d928ebL } },
|
|
/* 26 << 161 */
|
|
{ { 0xd9f370e42af77d78L,0xf9cb8d588bfa692fL,0xdc8a4c24fc9203d5L,
|
|
0x499b6fda3b8138f4L,0x051a61f19118d3b8L,0x89207fa2cb251fb6L },
|
|
{ 0x32247676bbb0e12dL,0xaa1c59822900bce2L,0xe7beff9c7df4f6c1L,
|
|
0x595fd551757c1449L,0x2fe91299650e8961L,0x2db30033f480bf30L } },
|
|
/* 27 << 161 */
|
|
{ { 0xe796c05d110c4d7fL,0x12f87395d4af6817L,0x849cd9e6b5512cb8L,
|
|
0x23b8d0a4adb71290L,0x28cc808bee64339fL,0x3072d46fcc27fd1cL },
|
|
{ 0x8d9183af47f675d2L,0x9959aa9102c84561L,0xdff7591708216e03L,
|
|
0x868c237abd01b2f0L,0x4c00c229a53e639fL,0x2c0667fb07d69862L } },
|
|
/* 28 << 161 */
|
|
{ { 0xb4d2324f9470e571L,0x3af515979ca353e5L,0x479a3a796ae5778bL,
|
|
0x387958a7fb1d9c91L,0x4e606558cf91edc6L,0x428384ca495a3b00L },
|
|
{ 0xa49f67da10f7146fL,0xbda553e08e25f80fL,0x21b034c4cb919bc6L,
|
|
0x1fb454bfa7930462L,0x1fb2ac9b255d7fd8L,0x491cceff8b197e6aL } },
|
|
/* 29 << 161 */
|
|
{ { 0x0a0e0cd91f5a179fL,0x699d872713841e78L,0xfa93f774fc47f9cfL,
|
|
0x8fd0019c02933131L,0x128efed95aa46834L,0xe20226fdf080cb8dL },
|
|
{ 0xf7b05fc3000445dcL,0xcc818da1f52f5ddbL,0x0fa803d07299267aL,
|
|
0x99cf0ab4f9f172a0L,0xb5dd3c36b08d03a3L,0xfafa550ea1c2f73dL } },
|
|
/* 30 << 161 */
|
|
{ { 0xdda52c89d2da4e36L,0x0348948d5c333386L,0xe3a5be8b37917590L,
|
|
0x42488ae238e4aaacL,0xa6ecb5be7a44eb6aL,0x3bfd640ea9b27b56L },
|
|
{ 0x23b8d107bd05946aL,0x01018c45bb8034bdL,0x1ffc958cd2e058fbL,
|
|
0xeadc93953fd43516L,0x0659b83ea0491dbcL,0xc36115008cdee521L } },
|
|
/* 31 << 161 */
|
|
{ { 0xc0f3761c034b0a6eL,0x2c4ce5481fb66b85L,0x7a5d3143410698abL,
|
|
0x4bc07a795d59e8c5L,0x176a10eb4d19ba85L,0xa8a68c5526dae045L },
|
|
{ 0x7eed57fb21625985L,0x33ef04ae16c62e63L,0x78d0acd4562454bcL,
|
|
0x5878d7f2a44a1608L,0xa51a423a0cf11971L,0x1934e3f2f21fd6ecL } },
|
|
/* 32 << 161 */
|
|
{ { 0x3f2b5bd4b4805410L,0x201ca7a9f96c5ee7L,0x532ef2db94256fe1L,
|
|
0xacbfc459318ddb03L,0x2375f9fd5f24c8e1L,0xd27c479b370783dbL },
|
|
{ 0x1bd461e856541ae6L,0x78f054a77f7ea49aL,0xc9f8777d8845f315L,
|
|
0x81aed29697fc92c7L,0x9f2f8d7949929540L,0x7531e78bff5ebfe0L } },
|
|
/* 33 << 161 */
|
|
{ { 0xd4710d5a16ba6a11L,0xb172d8a0e056d27aL,0x01879d2b8301e5c0L,
|
|
0x100c3e706f6a3396L,0x4a33d4a4e4e1cab1L,0x48016f0f08017d74L },
|
|
{ 0xbde9e0f18cec4fb8L,0xd8604899eb15c26dL,0x17ac5d884a21f615L,
|
|
0xb8f1e7060cb0cddfL,0x0ead85644a0d51c2L,0x7bff69bdfd6bafa5L } },
|
|
/* 34 << 161 */
|
|
{ { 0x028acd1cb6b73820L,0xc931f4bc815047a8L,0x22c6159f1ede2c60L,
|
|
0x571dd40c99a4820fL,0xbaf08be0b450f472L,0x6475536aeb5bb639L },
|
|
{ 0x033568e4d984d0c7L,0x2ab7dd4885e910d4L,0xb0d76698d0c632ebL,
|
|
0x954d00f3e3c34a46L,0x53e8772de651bc5eL,0x4910b07b6e3564f6L } },
|
|
/* 35 << 161 */
|
|
{ { 0xe1550b37e758fcf6L,0xfea2446f763120abL,0x5db50b38124f80e6L,
|
|
0x5cc28a7830c3301aL,0xa935846fd950d5b9L,0xae3e87f2ce43ebe3L },
|
|
{ 0xf033b25b7d0776a5L,0x941d186e882c5916L,0x0430c4503d6d4f7dL,
|
|
0x4e0641c0726f30ccL,0xdfcdbd1626c66c27L,0x43c4590ceb00e495L } },
|
|
/* 36 << 161 */
|
|
{ { 0xd8cbdd8b70435ca2L,0xede7fb3675af3a63L,0x6c1fa971090b36bcL,
|
|
0xdd2292eb85455ed2L,0xf9c3889c7fbe5041L,0x2ec87c15506d605fL },
|
|
{ 0x2691b0a28b099c25L,0x27961c8b89944e21L,0x8e9e18a5147f5304L,
|
|
0x6a82e35baf7dce25L,0x6745339c32a4bbc4L,0xe0bf0e0ee026676aL } },
|
|
/* 37 << 161 */
|
|
{ { 0x3c6fd1ab352a43fbL,0xe57e7f8cbd68dbffL,0xa4a5b74e9ea30f41L,
|
|
0xacea695d2d5a3a34L,0x183be19adc8fe4d3L,0x22fce6281b9f9d1cL },
|
|
{ 0x8b1ae75da5d35bc9L,0x213face52c673f82L,0xa879851d6568d549L,
|
|
0x327c59937f8d8112L,0x56b982e2a7869b71L,0xc77afa6110bb8086L } },
|
|
/* 38 << 161 */
|
|
{ { 0x1dcd57541ccadbe8L,0xd2d8c36512b37773L,0xc1a7a5b7d50e8680L,
|
|
0xab1a00b3e19d155eL,0x58f4bcce7a9776b8L,0x1c02df3320d9d7aaL },
|
|
{ 0x24f00d31db8cea6fL,0x2680b029d4aa0785L,0xf3db2889c48587f5L,
|
|
0x1811dd2521a7fabaL,0x5836964bbf820746L,0x3b118bab97aca83eL } },
|
|
/* 39 << 161 */
|
|
{ { 0x14babe6321d76845L,0xf7b4c662c60f5934L,0xbf212c4434de5b23L,
|
|
0x57c478a35bdf0a35L,0xddecc21535dc8714L,0x1609b7401571e91aL },
|
|
{ 0x41998697ba45b40aL,0x6ef382d468cf383aL,0x77a24c1488c0ec9cL,
|
|
0x0a5e245297b377a4L,0x2b9d72bf18f9804bL,0xa4c21326f51ddaacL } },
|
|
/* 40 << 161 */
|
|
{ { 0x397049f4c785c7baL,0xa87db27da1decf9dL,0xce6d5ec1e7862c0cL,
|
|
0x17a98db834350bf1L,0x6ceccd8030ec8d74L,0x4790cc07bcab4aa8L },
|
|
{ 0x4378b1feb4f771a8L,0x3c54588b404dfcbbL,0xbddf0faa8d60f86dL,
|
|
0x987583da3573271aL,0xb0afe4ec4b8f8032L,0xb5c44605b69d03f6L } },
|
|
/* 41 << 161 */
|
|
{ { 0x7f69e8bfed7d4230L,0xfe54dca7d8ee8cbeL,0x6ec2b75f71b72d99L,
|
|
0x97e2b30f8dd8338fL,0x9916dcdbbc75bf05L,0x22f4291aad5c114cL },
|
|
{ 0xb6af2e86f9ba5c98L,0xdd7d738dfd6fc5d8L,0xce7af7d544649034L,
|
|
0x2979be5cd163b098L,0x5acd51858db8d84cL,0x82b0e4a5ca64d1c0L } },
|
|
/* 42 << 161 */
|
|
{ { 0xf27f5f4f480ef46dL,0x2f49f44fcba811f7L,0xef40508d43961b6cL,
|
|
0x0f6778e8df9fb37fL,0x97aff7e8446864b5L,0x29aeb86d4d264e1eL },
|
|
{ 0x48baa1984901daacL,0x91ade9db02b483cdL,0x00952a61cdb6abc4L,
|
|
0xa1a51250de7f22c9L,0xe6adfaacc19ec8d5L,0xa7d2f066fc39838dL } },
|
|
/* 43 << 161 */
|
|
{ { 0xfbe20a8e270bcf2fL,0x9882e7a0c35c60f9L,0x74d8e63f560e716aL,
|
|
0xdc689649bae281e2L,0xd454571036d9b680L,0x0a0f1c681740ca0bL },
|
|
{ 0x228dd692dadf3782L,0x6ab0bede632d6e56L,0xae2f5535e1b7add3L,
|
|
0x2ce1c6fece308fa6L,0x7a11b255db881355L,0x903007107bee5bb7L } },
|
|
/* 44 << 161 */
|
|
{ { 0xdd55c21a9f1a57d6L,0xc9e1dcf9f6043ee3L,0x0385e3f36747e2baL,
|
|
0x6511555a932e55b5L,0x7f4053b3700e73f6L,0x23adf65d992916a2L },
|
|
{ 0x4664bf231bfc40a3L,0x8400e8f27974d63fL,0xb70f104dcff08198L,
|
|
0x4c44382f4d1710afL,0x5593a751374ec807L,0x6af17e84462c6112L } },
|
|
/* 45 << 161 */
|
|
{ { 0xc1ad3eb7b8f1f38dL,0x74bb37c88d462e67L,0xd127b6e6246b0388L,
|
|
0x3054aaf0824defffL,0x4e981d2e487809aeL,0xba76b7b805ead528L },
|
|
{ 0x0a167834a7a32c6dL,0x3451ee930268c370L,0xab4da0971b625d09L,
|
|
0xdb94f9aa304e60b4L,0xf3bea685ab50c663L,0x8d929a0142d4c11eL } },
|
|
/* 46 << 161 */
|
|
{ { 0xfce03e6eaa911497L,0x32cba5cf546ab5ecL,0x631123d0b1a71e10L,
|
|
0x49f3a80906bcdeafL,0x783373bcfc538ca5L,0x3590890ee4b47edaL },
|
|
{ 0xb5c84fff39ab2df0L,0xf681be9ac737b24fL,0xf37bbc68b2b0052cL,
|
|
0xd9f03cf6fde04d93L,0x23171bc2e43803e3L,0xeda51460040de801L } },
|
|
/* 47 << 161 */
|
|
{ { 0x0e09a74d0bccf0d7L,0xfb429a675b58037aL,0x1f2660d2200b89ccL,
|
|
0x489b332e04efc617L,0xb53d4f65f38ceeb4L,0xeaaf759546c4aa4aL },
|
|
{ 0xc6cff1fa714b9f97L,0x6a647072ec0dd5b7L,0xcbf59eb1637384bcL,
|
|
0x043003cd2240993cL,0x134cab640497f9afL,0xcdb44a4ca9fcc655L } },
|
|
/* 48 << 161 */
|
|
{ { 0xbd9a66d6543b3e41L,0x2948c0a62ae73774L,0xa75151dfef38e9b3L,
|
|
0xa3348ae5754fb3fbL,0x1218fa8f13069b72L,0x532bb0510835dfafL },
|
|
{ 0x2121a98edf2be3c6L,0x85980de69e5199bcL,0x1b23a4be1a1eb6eeL,
|
|
0xb5c48b92adeb3ae5L,0xeebd305dedea2b45L,0x20543f04c37198eaL } },
|
|
/* 49 << 161 */
|
|
{ { 0x9eb2d599fa727a5dL,0x27cce415105643ccL,0x2face9e8c06035deL,
|
|
0x967f70e4c5d916cfL,0x477224ece7cdc451L,0x70a3de4ea9a34198L },
|
|
{ 0x84ebd23a62628f21L,0x517cbb6097f55e75L,0xa4dc8d8ccbfaa795L,
|
|
0x821d53c1a9c17b12L,0x04e94aea5124d5a4L,0xc72432c083efbc58L } },
|
|
/* 50 << 161 */
|
|
{ { 0xb7a2090999f73a42L,0x019bf3a630db0901L,0xcf0c2a7281cfde4fL,
|
|
0xf656a2117b0b04f8L,0x88cedc1896043e90L,0x4482c3786ae4c551L },
|
|
{ 0x169f25d3dc70c774L,0x0f8cc86cb552fbe4L,0x17d0556b88d2f3eeL,
|
|
0xf5af9d6ff864ba64L,0xcd509d82f93dbf7fL,0xf00c76f51b98df35L } },
|
|
/* 51 << 161 */
|
|
{ { 0x19fbeb37856e35a3L,0x1788055c88f36390L,0x9da657f165361c9fL,
|
|
0xc9f327b7e35a36b1L,0xdc388bcb04b9174fL,0xa79bf7d3349a87c8L },
|
|
{ 0x865958b202289b24L,0x4096845ecebc4686L,0x1127085b42ce096dL,
|
|
0x56f31d12735241bfL,0xe2239ab543b89a15L,0x477cc5b3a6a1f0f2L } },
|
|
/* 52 << 161 */
|
|
{ { 0xc44c81525d54607fL,0xe742a6f35c9ab491L,0x50df96d9be8c2ed5L,
|
|
0x3aa8c9b4e7f5cc4fL,0x577d534c3f12e8b5L,0x03f9573da33a57b1L },
|
|
{ 0x9172e1aec5c0c895L,0x64fa9822a2e19442L,0x17db2388178a10d5L,
|
|
0xe75a6bdc2755ed55L,0x6a6d9dc3f9188333L,0xdd93a3b83eda0c41L } },
|
|
/* 53 << 161 */
|
|
{ { 0x353d1f4bad0d960fL,0x6fbf4355846e07dcL,0x2156ae3c3a1bb429L,
|
|
0xfa95a260442e6e21L,0x659a856ac2b31d7dL,0x9b56cd6563ecb2d0L },
|
|
{ 0xac9ec96823a787b7L,0x4102d82e320742deL,0x470ee0ea50a422a2L,
|
|
0xd3ca8414af386491L,0x28d8994b1a0d8192L,0xe601e4e2b3f117dfL } },
|
|
/* 54 << 161 */
|
|
{ { 0x906c071c4e9ab844L,0xeb1a5806f085a058L,0x2f14c3ac176e2f59L,
|
|
0xfc1a3020bd19f909L,0x5e67d789ac060e45L,0x75dd23a7b707084eL },
|
|
{ 0xb9dec51a07e89974L,0x50c9cd0b38f97f3dL,0x368b0f53e14cd6fcL,
|
|
0xea4c7f8b81ab93b2L,0x774ca31d1b7aeb66L,0x94c14607288f51a9L } },
|
|
/* 55 << 161 */
|
|
{ { 0x18c41b62fe32b90aL,0x2e11c7e6be96e1aaL,0x72832e8c428b9d81L,
|
|
0x93f63cc0058ca451L,0x603f18af7cc827f1L,0x31c8b8fee038eb26L },
|
|
{ 0x21158b24411cb335L,0x48dbbed70d9e953dL,0x445e244e4d62615cL,
|
|
0x2f5309ac28ef4922L,0x12ee44c60d4dc305L,0x7dc0363f56f7677aL } },
|
|
/* 56 << 161 */
|
|
{ { 0xf73471b5ef349ec5L,0x014dae75565aa6c7L,0x57cb497dae082cefL,
|
|
0xdfcbf2b5c3e563bcL,0x22149c0fd1125f95L,0x529f419b425bc019L },
|
|
{ 0x049476deaee2094cL,0x3490c0490cbbb583L,0x56c5c62d1256424fL,
|
|
0x0a118ee541bc66faL,0x0d8e9ff8296ada14L,0x34356e8b0134f8c5L } },
|
|
/* 57 << 161 */
|
|
{ { 0x5e41ebd6eb28f97cL,0xe054a055d6a393f8L,0xc0a19e38db6555e3L,
|
|
0x1b40c80fbabf4f9bL,0xfca17ae2780d5107L,0x89ae096f379701feL },
|
|
{ 0xd79be295b53ebb0cL,0x3112d3a5942b2247L,0x6c1f44d30de10f30L,
|
|
0x2a17fffb0041f800L,0x13082de044552d55L,0x319aa9c0cd11c85aL } },
|
|
/* 58 << 161 */
|
|
{ { 0x63ea1a6ae760373bL,0x00f2addd11742d8cL,0x46b17c9cafdd38eaL,
|
|
0xf4121c5a4c7e78d7L,0xbeb70ef90048e4f0L,0x0b60c2b6bf7f7348L },
|
|
{ 0x4bbadf7632969689L,0xcb6a8a20e12708e4L,0xc43ad55b5638eb7aL,
|
|
0x4a72b02b3d27bf7aL,0xecc95d92e5a54c30L,0xae52514bacc45d53L } },
|
|
/* 59 << 161 */
|
|
{ { 0xbf5a2b5132d1f651L,0x6a2a74116e438838L,0xfa6353dd6c067d61L,
|
|
0xf6918622b96ba12fL,0xf0fa254d45f595f3L,0xa0f0cb4b92f680a0L },
|
|
{ 0xf13ba734463e3f27L,0x7e3d4eb1a32d7f9aL,0x348baaf26f6502dfL,
|
|
0x8021a9977b830e5eL,0x503f38ca55caf601L,0x27dde9e8f4bb74b6L } },
|
|
/* 60 << 161 */
|
|
{ { 0xfd5a49310eb63b3cL,0xdb9f1a1510175713L,0x044d42c23e11c321L,
|
|
0x5561f2e9b7961e8fL,0x70b3f7557ec7c597L,0x5dd9671235aed561L },
|
|
{ 0xc6cdc78ee1bcc2b1L,0xebcf6f87f1117aa5L,0xef470e0ae3669f78L,
|
|
0x87b13e0fd38e0fe8L,0x01bff01439c755c7L,0xa66f2521c37529f8L } },
|
|
/* 61 << 161 */
|
|
{ { 0xac56a8b223f78e49L,0x908c4be58708f0b5L,0xa63aa4191536f6b0L,
|
|
0x8c08578fe5a95771L,0x5d2d1d6b9c2ae8daL,0xf3e4ef12f1527cc4L },
|
|
{ 0x46c1ac13920a90bcL,0xc0bc661d28ba758fL,0x9114e016585ef450L,
|
|
0x8ab6a1f6e899a032L,0x57d4089606b658baL,0x2ef87621eb83235fL } },
|
|
/* 62 << 161 */
|
|
{ { 0x033a4d4c4ebdc925L,0xff239a3efe1b346cL,0xd7ab2fb388d03949L,
|
|
0x56ce2e41bd6e8e4dL,0x3826aff0e55da68dL,0xc9c7ba7451267f98L },
|
|
{ 0x5264a48ae6710c7cL,0x3635f1d4e7605975L,0x53a1849a94be903cL,
|
|
0xe4fc3617128d5859L,0x7686804d7e4dd785L,0x6f04942d2dbcfe4fL } },
|
|
/* 63 << 161 */
|
|
{ { 0xe80b7f5562927d6eL,0x92b98c350c0cc89fL,0x9522896d15117facL,
|
|
0x7a224db5fdd3ffcdL,0x9502ecd8fbfc8908L,0x4e1dc71ac593105eL },
|
|
{ 0x052aade62f0536dfL,0x0c7cc371f324268aL,0xe7c62f2ccd843bb4L,
|
|
0x77d48fa36df2c231L,0xb2c29803cb8f68c4L,0xad7ccf519bb9fddeL } },
|
|
/* 64 << 161 */
|
|
{ { 0xd0960bd80fab968cL,0x6899e4faae028db0L,0x975ccc77a9850916L,
|
|
0xb41bd531e5f81554L,0xbdf8ab57c8cff2c8L,0xea306a01f5822be3L },
|
|
{ 0x1f0ac0e7befbdbbeL,0x72f4b0e960519f87L,0x22bd8b82e3cc86abL,
|
|
0xc43bde8d2b2beaeeL,0x8168781e412617ffL,0xc5610627b7ee7096L } },
|
|
/* 0 << 168 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 168 */
|
|
{ { 0x0869457a01a8eb44L,0x522239857a7bedd7L,0x2c04b0c600057505L,
|
|
0x468be6e80b09adebL,0x2f3bf32b6f81474fL,0xf54f949da712ccceL },
|
|
{ 0x292cee424cdd8f2aL,0x3d9fdf6b9c221be1L,0xe54da66156f47b2aL,
|
|
0x2ca76835840b5d1bL,0xb52adb6a8a6e8cf6L,0x8b416a6bdade153eL } },
|
|
/* 2 << 168 */
|
|
{ { 0x65f7d2c18565afc9L,0x764c897170fa7b82L,0xe268634c986436f2L,
|
|
0x6334d8d133356165L,0xf17164269ec7957dL,0xae834331b8093983L },
|
|
{ 0xedb1fe5cd2dfcce7L,0x6195b86368463e5cL,0x746e5f4da691b665L,
|
|
0x61171291e1e2727eL,0xbb4aa8f16f27b029L,0x1037657d7f42c197L } },
|
|
/* 3 << 168 */
|
|
{ { 0x2af8bdfa970f96adL,0x19d09a6dd0c86e6dL,0xd57fd5ced7046d2eL,
|
|
0x5ea025f7d545fd33L,0xe2ccb6f43161ffd7L,0x3ca5286209406242L },
|
|
{ 0xf3536d60b5c90905L,0xd086e3b9d5b290f6L,0xfd15b06a5cc55444L,
|
|
0x61b0febf9a9e2a66L,0xdc3c0576653dfd02L,0x357774230a8ab51fL } },
|
|
/* 4 << 168 */
|
|
{ { 0xfe19901b0d5b855aL,0x5facb9552f745022L,0x92fd012556c4ce5cL,
|
|
0x23172d65938c89abL,0xa71f8a33aaa587b1L,0x511a3745b55c9c50L },
|
|
{ 0xec005f6a7185086eL,0x6dfc2761f894c6abL,0x98a4d67f9e26361fL,
|
|
0x7f0a2b2321389c25L,0xd158820795ffbceeL,0x4d6b29ab9f36a888L } },
|
|
/* 5 << 168 */
|
|
{ { 0x5ffec1d78c04bc6eL,0x35f052d16ca0dde2L,0xfbe3844c649c850bL,
|
|
0x450263e610fa337dL,0x44f7c8f40280773dL,0x27de5d3ce896966cL },
|
|
{ 0x2587f47598d0378dL,0xbd49c97f4e4f6e49L,0x9e902f667071543aL,
|
|
0x03398aae06577b74L,0x030926d6910bee13L,0x5576575bffa92cecL } },
|
|
/* 6 << 168 */
|
|
{ { 0xe4ee33460562cd7eL,0xd1d385a3f01ba45eL,0xd817ca667ce11848L,
|
|
0xda222cddcb69c7eaL,0x74ac74709d680afeL,0x3770357cd9596ca8L },
|
|
{ 0xdff57da7f7759bd6L,0x090426be20d5c726L,0x71c0ba28b7fbc1b0L,
|
|
0x60faab1c13d4ed0fL,0x6fbe3567ea3a2ef2L,0x0dd3835c4e577dffL } },
|
|
/* 7 << 168 */
|
|
{ { 0x9b758b512ce27e38L,0xe4148475a39855e3L,0x4669b3c39ee88a77L,
|
|
0x3f36a671105e1ec0L,0xd0f30e5d9e88ea13L,0x6346df15baecbaadL },
|
|
{ 0xec65be65cf4c6510L,0x843efca194e1989fL,0xf7195d29942ce52bL,
|
|
0x12201877d3ce28d4L,0x9c962aa1a97fc904L,0xc4fedb3465c5a55eL } },
|
|
/* 8 << 168 */
|
|
{ { 0xeccb421ed0a701a5L,0xad4cb9a5b60cd286L,0xd344da9e05a53972L,
|
|
0x3a8035e07bc99feaL,0xe0214485c0f77bf5L,0x50ada30ee54df78aL },
|
|
{ 0xdef45af64ec2d576L,0xa05d61845f9a8678L,0xa9b17db1c337e017L,
|
|
0x026a4f66b84671d5L,0x606142343b7d696dL,0x71ed9aaf81cfd22aL } },
|
|
/* 9 << 168 */
|
|
{ { 0x62805305695a3f30L,0x6ce27626e28e8fe0L,0x507386af6a54f410L,
|
|
0xf8c5f738cd5c7effL,0x3ab2db9e347e85d7L,0xf5b635b0b2161b68L },
|
|
{ 0x99009791be2e80caL,0x6dff3030c13910ddL,0x2beeca057ee8700aL,
|
|
0x12616fb11ac7e09dL,0x38c9ef9f9037c2e4L,0x39181fbf9c140344L } },
|
|
/* 10 << 168 */
|
|
{ { 0xcdd6aee47aa54433L,0xf5ecb432b80336f5L,0x690bb949a1380829L,
|
|
0x219d659ca9c9d720L,0x74abf2dd7e5a3260L,0x405ee136025c55d1L },
|
|
{ 0xc5c592cb1cc878a8L,0x119a38be88b31ecfL,0x4fb00f82e94e39e7L,
|
|
0x66bf72e59412c068L,0x9337c8f30821142aL,0x477216340c24ab67L } },
|
|
/* 11 << 168 */
|
|
{ { 0xa6c7953457fe953eL,0xd70d3d2f3c76ae58L,0xe1e047b52c531c84L,
|
|
0xc71f3a9973735602L,0xd70bdb0f7ba0628eL,0x280fdd4e0e3e3c0cL },
|
|
{ 0xb5a3f5823e414e26L,0x55b2eda8f44dee7eL,0x8e1d024b2f5dd828L,
|
|
0x21f054eb3b1bfdf9L,0x3d3ae74cc554e1cfL,0xa0a5863ffc42ec16L } },
|
|
/* 12 << 168 */
|
|
{ { 0x1b76a3c5439ada39L,0x818829cf89236ae5L,0x2277cb7a750f8129L,
|
|
0x44aa462a4d46502bL,0x7a12e1e164f06dc8L,0xb9a3300dba5630cfL },
|
|
{ 0xd2cc8d9c55b05f4bL,0x6d0b0b88a700be7aL,0xa7be99699617500cL,
|
|
0x2b5b8deac03f8a50L,0x712f703e785b3dfdL,0x96a5a60accf93950L } },
|
|
/* 13 << 168 */
|
|
{ { 0x9838155fbf9f72c6L,0x3ab3cb602c10e57dL,0x7ac228ef14bcd75eL,
|
|
0x2c167e15027923fcL,0x678869d1267471c7L,0xeba35e857ec3582cL },
|
|
{ 0x22d290a9a3478eb3L,0x542092ca1309aa14L,0x8bb5c69be2e5d3acL,
|
|
0xf83c5a0a81652736L,0x9cc576227280cd6dL,0x6653436f3b0f49a1L } },
|
|
/* 14 << 168 */
|
|
{ { 0x7ad1f1bab497d900L,0x9d0512236c9dd5d7L,0x0ed27e5bffed3df8L,
|
|
0x659028a775d2fa72L,0x69bd68154581f377L,0x142c2088e2faf671L },
|
|
{ 0xf9c1b8a499b000ffL,0xf31d01b18f408d3aL,0xa7aa142f42b9d35bL,
|
|
0xeb8aa74ba0495da2L,0x824cc32a59a1da45L,0x3f1fbe0ff5173374L } },
|
|
/* 15 << 168 */
|
|
{ { 0xec9071a634238c30L,0x6dd6c38b88a0f423L,0x3adace72992e7977L,
|
|
0xc90b941b1ae5166eL,0x052aa3e9e3e43a68L,0xe9b1976da733a950L },
|
|
{ 0x0e1ca28e5ff6c9dbL,0xd1bd4350387409a2L,0x5943cc7089155117L,
|
|
0x8e85794f5feae20cL,0x0d118fd669768ccbL,0xc647179d53120895L } },
|
|
/* 16 << 168 */
|
|
{ { 0xfeb984b3ee828fbaL,0x8273f830e2bd188cL,0x177ef97e3ca0a99fL,
|
|
0x76d4796dacc000acL,0xbad0fa6eb140f51aL,0xb275656706ebc810L },
|
|
{ 0xf89eb78fa18cb32fL,0xcfc37eaea65285b0L,0xe2b29cfbb25e9d1bL,
|
|
0x9388ea8fb4e7aef3L,0xee606c12e267e845L,0x6b103c549f5806d7L } },
|
|
/* 17 << 168 */
|
|
{ { 0xb9a40e78e31fd643L,0x648cc34a97950a34L,0x85c5ca405900be55L,
|
|
0x2e519cf12abb843bL,0x6f9d0a7f27436edcL,0x2f569c9d6694f363L },
|
|
{ 0xf6d1b325f6f1bd24L,0x01103c0d4044b353L,0x2d3ce56f3138b549L,
|
|
0x5379bcf71c28bc5bL,0x6768220d08ac00d1L,0x973f92ff0152746cL } },
|
|
/* 18 << 168 */
|
|
{ { 0x5e992944b37b0486L,0x0a334b92001fa124L,0x6653cded9c9ab466L,
|
|
0xd512612fabac4da9L,0x636bf431c502b860L,0xfca1c0c2c3d20db2L },
|
|
{ 0x7073f293f85c40c3L,0xfaabc77acfba9eddL,0x58842eb97f9b570dL,
|
|
0xe8cd4f53702aec24L,0x8975f4e6e08113a1L,0xcc0d7f17767bedd6L } },
|
|
/* 19 << 168 */
|
|
{ { 0x5163bb51ae315a65L,0xf82ec4cdbe405348L,0xffd381a46b1801a4L,
|
|
0x33f9b8ad2f6ba570L,0xd88c58a58ecc0000L,0xc0b9a639cfdad25eL },
|
|
{ 0xc78cb70fe3bd808aL,0xf54b86e573ce5eadL,0x111208ed5610a761L,
|
|
0xba3579b0e3c8e27aL,0xbadd918c63b85bb7L,0x9e10da0b71bcd972L } },
|
|
/* 20 << 168 */
|
|
{ { 0xf418e3f63766f2aeL,0x4a3ad3c8053ef1c1L,0xd01e5b5b560db262L,
|
|
0xa583edc7c02bf4c3L,0x7c9f706052f318d3L,0x0852556f1f5e1ffeL },
|
|
{ 0xe1c70aa7feb0e63cL,0x59f0a3f989a8c058L,0x4aa4cf021ffc0adeL,
|
|
0xbb880e4138a78632L,0x35b0f7596f28f096L,0xf9c4fe17d5757d7dL } },
|
|
/* 21 << 168 */
|
|
{ { 0x160303ded896adf7L,0x19a46b6c6beb8930L,0x33dfd962f010f74bL,
|
|
0x03b699cc00e5610fL,0x17487b7595078dfeL,0x63bc614253f3479cL },
|
|
{ 0x43f3d994858d5b8bL,0x383349349483c0ffL,0x47c917a67977142bL,
|
|
0xdc50fb80df7eead4L,0x4e3a1d3fb5b82be1L,0x091af8796d7317b7L } },
|
|
/* 22 << 168 */
|
|
{ { 0x783e5066af151a9aL,0xec0a9c175466df17L,0xdecd12310174b0adL,
|
|
0x654af66a3b2aaa45L,0x849d64e5b1fcdd11L,0x7e8e2ae6d05af56cL },
|
|
{ 0x12e887b7318a6184L,0x42d1445554ed59d8L,0x2eafeb48ee54ddc5L,
|
|
0xd1f9e6b980c94a8eL,0x5ea691e3263696c0L,0x7f42f3796e03eed3L } },
|
|
/* 23 << 168 */
|
|
{ { 0xeeb8accfd69b82b9L,0xb4c4988ae0b61d73L,0xb78becf19df9b59eL,
|
|
0x13274f6236440c93L,0x33d287f5697d5a77L,0x391fe6129af4053eL },
|
|
{ 0x986c42b21c16e858L,0x23f5d1dffe04125aL,0x2f57ccb3af9541ffL,
|
|
0xe5b4eec70f1a8bafL,0xaad23ce7646c1b6fL,0x69495ee5a6ff96abL } },
|
|
/* 24 << 168 */
|
|
{ { 0x78b8879cfd6376ebL,0x22a76461c01e1edbL,0x6a44be39369cf0c4L,
|
|
0x6653670d5ae54539L,0x257bd7516fb43ad0L,0xb3ac371512baffddL },
|
|
{ 0x48659d617548eabbL,0xd8f931f80cd468cbL,0x98f0241549e3b531L,
|
|
0x90b0d71670df011fL,0x26d73c54ab98f066L,0x06591ec988475d5eL } },
|
|
/* 25 << 168 */
|
|
{ { 0x6fa72e3518f18e71L,0x6c04fe2d8123ff14L,0xc48cb53a197481a9L,
|
|
0xf059db349860e48cL,0x35e8341ace46ca7dL,0x880f4ea4b0400f7dL },
|
|
{ 0xb4c5ea9acc9cc40aL,0x6522c768e2555fa3L,0x95207f39ea2c32e6L,
|
|
0x7b6fc09fa8be60e1L,0x772b829f29902652L,0xb7936b90af6a48dcL } },
|
|
/* 26 << 168 */
|
|
{ { 0x409e3b1109758457L,0x59dd0a8c1dea73d9L,0x528906a58fb18a01L,
|
|
0x6fa55967a17ffb33L,0x9523cc3d50edbcb2L,0x35600b3e44d43541L },
|
|
{ 0xc3a7d22c8f87dbc0L,0x5514c967c1b225abL,0x78e5701988304a74L,
|
|
0xe9b417ba35f3b54dL,0xb72a243c48eea230L,0x4e173eaf291ee52dL } },
|
|
/* 27 << 168 */
|
|
{ { 0x79b854ca2127c795L,0xd9457d8f86657844L,0xf8c9e6ef186668e8L,
|
|
0x84c8855df913c2f6L,0xf207d36ad641cc12L,0x7be9b5736105ce0aL },
|
|
{ 0xe72cce1974ec078dL,0xc4f47413d09950c3L,0x640bf6eb3974554eL,
|
|
0xf880dcfb844497baL,0x3744626999bbcfacL,0xcf1712f4316f4d64L } },
|
|
/* 28 << 168 */
|
|
{ { 0x627f6328412b84c3L,0xd427e977a04545d2L,0x5b0145bc104f25c2L,
|
|
0xa6931c4f2ac7ad62L,0x407611431f8d42f5L,0xfda5a76be7f8a0b3L },
|
|
{ 0x4f1ca5cffe0946b9L,0x6def7b9fbeb2d427L,0x984bd4bbc9a0d136L,
|
|
0xb9a778235b3af1c1L,0x04ee66ae38ac2087L,0x63374ed926d9dbb9L } },
|
|
/* 29 << 168 */
|
|
{ { 0x68088e9c3983deb9L,0x2c95ecaa2ed99988L,0x371af002917f200dL,
|
|
0xff33aa5dbb4ff0dcL,0x1dd5fcf2e47bbd6eL,0x1624b973e75f73ecL },
|
|
{ 0xf6ce0e9db9722af3L,0x8bde5b8818226fcbL,0x243753fc5b5da478L,
|
|
0x3b53e0e3bdf88daeL,0x59f8c86f325cedb2L,0xabd4076d70fb9681L } },
|
|
/* 30 << 168 */
|
|
{ { 0x1996761db8759af1L,0xfb85cdd8e4a705f5L,0x2ea7aa0b35111725L,
|
|
0x23245d4157a17f4bL,0xcbdb650e0d00eb9dL,0xb40823d9e23a4a3cL },
|
|
{ 0x041bfb67229163f8L,0x020ad3c16d47b83dL,0x3bc8975d344c8ebfL,
|
|
0x287efd06d91ff408L,0x1ca5d75a2059106bL,0x4ff27af3b90c5d66L } },
|
|
/* 31 << 168 */
|
|
{ { 0x416b7c61ded914e8L,0x1aeee7d007ad4237L,0x59d5852476c2b7a4L,
|
|
0x427a102c98665f29L,0x8504aa8d2a1aefe4L,0xef2dbeadc183a736L },
|
|
{ 0x5cb5f222f533358cL,0xf2ebb47d36b0d678L,0x1de4a0e7f2c2cf99L,
|
|
0x62613994ea95a161L,0x68a86f4012d66ed4L,0xeb12fe75b2af52f3L } },
|
|
/* 32 << 168 */
|
|
{ { 0xcf947c0644ba39e6L,0xf5d5216cedfe78d7L,0xd00115c05f1835c9L,
|
|
0xdf084152d8c79d90L,0xc0c3a6846db5f791L,0x40514451749b18cdL },
|
|
{ 0xd314b7d5734df3f1L,0xbccdd3f07f541415L,0x97ed5af06855a942L,
|
|
0xea84ae9ee9d02ab9L,0xb87e90343238a5d0L,0xd12d25c3650a0eabL } },
|
|
/* 33 << 168 */
|
|
{ { 0xc3747c584f9d2c34L,0x493a0adc95429c92L,0xf9b5916238a679ebL,
|
|
0x04d500a16bac07f7L,0x8938f4f96a809676L,0x44ecbbf0c5b25a4dL },
|
|
{ 0x3b68705504768400L,0x6a432e14b4db3907L,0xff82fb56ad375d2bL,
|
|
0x87f59f97944210c2L,0x2b680b2051445242L,0x1e0986466cd75962L } },
|
|
/* 34 << 168 */
|
|
{ { 0xdd2eea82672e5a4cL,0xb05ef9ebccc68d94L,0x626ce368a3fa4215L,
|
|
0x6e376f67fe46bd46L,0xaed7a0bc33c4f169L,0x4a92c6093af5c4fdL },
|
|
{ 0x6615245fa690fb49L,0x571d2d870d64f04dL,0x6a45df34641ce79bL,
|
|
0x045ddbd02655d316L,0x2b6c574db4fbc42aL,0x41545fbc5b2dbbb8L } },
|
|
/* 35 << 168 */
|
|
{ { 0x484996b97d8f1eb7L,0xf72f3a8110bd1585L,0x418e00e7b67eb27fL,
|
|
0x354e56c97877c18fL,0x7f11f5040a8b37f9L,0x66591146ff58764dL },
|
|
{ 0x816ac849ed0bfc38L,0x85eaa6350a50a99eL,0x7fa62d9c5bf4995aL,
|
|
0x77840d5003413385L,0xe4f023bde83f9fa1L,0x2c5f8e1d9cfa7578L } },
|
|
/* 36 << 168 */
|
|
{ { 0x1473b55b86a515a9L,0xa9e3230a3b337c64L,0x7e8bf9049db668f1L,
|
|
0x1db2c25ef27f9fc9L,0x0c1086072d9e467eL,0x4505579aa3f00d52L },
|
|
{ 0xe2ad661b240400a7L,0x8022294c11af4874L,0x29e9037078bba8e8L,
|
|
0xbf0fbf08f6baca04L,0x2e46d2b74101fab0L,0x66065490c61089e6L } },
|
|
/* 37 << 168 */
|
|
{ { 0x18b01aa935dde51dL,0xa7496997a7d044b8L,0xcd9c467f44c23d2dL,
|
|
0x96211b86659e4a5bL,0xa2a9000f3e17b717L,0x7af9c312dd90459aL },
|
|
{ 0xf0d6c24394547203L,0xa76a23dbd77cc691L,0xe1b7fce10ef364deL,
|
|
0xe08c1d0bb689c810L,0xb75bfacb0a43ca02L,0x1b7afea5408ac99aL } },
|
|
/* 38 << 168 */
|
|
{ { 0x3b1abdb85a4a8a23L,0x8f52060c4d68bcf2L,0x7408306a00ab3146L,
|
|
0x652ae3064b86b775L,0x276a14a0b0695b00L,0xcf8af11f1b771254L },
|
|
{ 0x3fafcc63b91118b3L,0x6c49000a73bacebcL,0x53852d084e3f3d6eL,
|
|
0x78977e91fdfccca1L,0xe843cbca6ae9ea5eL,0xa99831896bb8271bL } },
|
|
/* 39 << 168 */
|
|
{ { 0xf77b0a7387534a6cL,0xfff419f2f5b0c6dfL,0xde3c3b33357205eeL,
|
|
0x867eb3a23c8ec9d6L,0xd28bed3263a99b18L,0xf5fc17e4c1573146L },
|
|
{ 0x30cf41e5821641feL,0x84b1970e225ab57fL,0x6bf707325a1e8ba0L,
|
|
0x7bfb3bbce3cf38d6L,0x9f362787a661e876L,0x6d9137c86c0a16fdL } },
|
|
/* 40 << 168 */
|
|
{ { 0x2131ce5b09f8a1cbL,0x7b373ed28ab129e2L,0x463cc8d677c1292aL,
|
|
0xa9b7cf6594ffe9c5L,0x129125ceb99bfc4fL,0x819b42849820d323L },
|
|
{ 0x3f70976376541a41L,0xfd679ae5e32c7a7bL,0xc39a208df65b6b3cL,
|
|
0x1c22ebc050002745L,0x268f19dde2bcd202L,0xfeac809c9c3d4266L } },
|
|
/* 41 << 168 */
|
|
{ { 0xc5ad8903af14f8a1L,0xdfcd207c3993c99cL,0xf65f8260c7c1fd57L,
|
|
0xa1573b3d41be66fdL,0xeeeb9ea476690f79L,0x6a6338437129849dL },
|
|
{ 0x22eeb38623a7bfcfL,0x258fc0743393e894L,0x008efb477ce9602aL,
|
|
0x4bf127b699c7b279L,0x150da482fa1bfd7fL,0x7b84744d293754dbL } },
|
|
/* 42 << 168 */
|
|
{ { 0x3af9919db2183277L,0x7f5990fb4f6182ccL,0x17603db034f716d2L,
|
|
0x6b79f6538f135ad5L,0xad9189e68092d128L,0xa5f3ab8efc6628c1L },
|
|
{ 0xa36b978e84b6d30fL,0xf2a7e1c64c001f26L,0x2acbdfd676e79beeL,
|
|
0x71b5faec86f6d6c6L,0x23d9b7c849b0e5d7L,0x36ea518212fd4cccL } },
|
|
/* 43 << 168 */
|
|
{ { 0x14a4af0f59df1cf9L,0x37f8641dfd7cd2b4L,0xfb6aa5d0244434b2L,
|
|
0xb85f8c8b5d5bbd63L,0x833e76baedb92f97L,0xbcd9d7b50d7a2dc2L },
|
|
{ 0xb233f07ff0e0f06cL,0x453f10c4fcc06efcL,0xa4e8f306128a167dL,
|
|
0xbd6df4690d0c09cbL,0x2b5db66b7168ecc6L,0x7ec02c77f29bcecfL } },
|
|
/* 44 << 168 */
|
|
{ { 0x0746783787dcdbdbL,0x4cce33be320493d8L,0x9ab08cbe713c7746L,
|
|
0xd6f0c1de9c6dc5cbL,0x194005382ac03761L,0x3fc11f38d0547be5L },
|
|
{ 0x66b378ce819fe3fdL,0x6a590acc3700fe7eL,0x4c976a728924b396L,
|
|
0xa5006d8d70b9b250L,0x2fdce1b212b85f9cL,0x5858f7ce495f8f1cL } },
|
|
/* 45 << 168 */
|
|
{ { 0x3f2b5e295de2948eL,0x84554eaae1a4a962L,0xb4e55f1293db9addL,
|
|
0x9260e3eb61b22484L,0x22a898997b1a6d10L,0x571bcd3af58d1ce3L },
|
|
{ 0xd62db0edecc88a76L,0x88352f634af2cf53L,0x8d279316b61c73adL,
|
|
0x7f898e09ec74d6abL,0x39b2b0c05412a81bL,0x623a5ea30644b6a4L } },
|
|
/* 46 << 168 */
|
|
{ { 0xe876b53bdb0f6565L,0xd0dc323c4650204bL,0x0e4af31b0201643fL,
|
|
0x486173207e8a0e6cL,0xe09183d457643a1cL,0x3c55bcb5ae8359b1L },
|
|
{ 0xa06078cb7b467835L,0x4d3a35d901b6bb3cL,0xd4f1d8233963fd31L,
|
|
0x9c1b06093d4cce05L,0x55e368d5da550340L,0x50c3feee12c4b7b3L } },
|
|
/* 47 << 168 */
|
|
{ { 0x6de0fcdaf0f97e84L,0x1f225d818dfbc0ebL,0xe27a42efcd2c51d9L,
|
|
0xeff56879c0cb033cL,0xe700cb87c82e38d4L,0xc89a02d589d244caL },
|
|
{ 0x0b464846ad9c718bL,0xf8d5ee1f8de96d61L,0x2cc33c3dfbfd0960L,
|
|
0x3ef549f0e199b6fbL,0x29f83f686c1597b3L,0x54ca37a3731712ffL } },
|
|
/* 48 << 168 */
|
|
{ { 0x357540ab903ff177L,0x225280b8276af514L,0x33d273ac14d7fed3L,
|
|
0xfef6b9ffd186ee3dL,0xa94c207101a7b1d9L,0x4ea3627450bc8bc2L },
|
|
{ 0xc68959c9fa98a918L,0x8f5ecceec7bdc262L,0x7a73a4fce6861310L,
|
|
0x19bcac90c828330fL,0x73e3b66f7ef74fdbL,0x60f7698352d8f2f4L } },
|
|
/* 49 << 168 */
|
|
{ { 0xda57f1a65645cb9bL,0x3d5d3190f0840240L,0x6a0c6ab101bce275L,
|
|
0x38993676ad23128aL,0x54f7b5d7ea0da248L,0xfee930b38b04ccb8L },
|
|
{ 0xadb9034e2cf3bf1aL,0x0488b71ae9b608daL,0xa3e51e303bd1172cL,
|
|
0x56dffa5844993c1bL,0x6b3211fa4cdcaf10L,0x223b2a43834d4e17L } },
|
|
/* 50 << 168 */
|
|
{ { 0xb31f934134e43ed1L,0x895c99973c6b7f58L,0x360021084c465126L,
|
|
0x7eb0bf6b095df89fL,0xde3b2fa3ac534af6L,0xd9dd9f55c22477caL },
|
|
{ 0xf52cfffc2092e355L,0x4ba071ac8d8bffc6L,0xafb61137abefe750L,
|
|
0x2887d0e4cb62210bL,0x0eb2be515f4fc157L,0x8c993039438fa2f7L } },
|
|
/* 51 << 168 */
|
|
{ { 0xfd2a61093efae008L,0x60fa269552f57cafL,0x3591e64f481c36c1L,
|
|
0xdc2b9993c908a87aL,0x76bd4dea5bffb50dL,0x913a0458f70fb0f5L },
|
|
{ 0x45ea6c4c097bbfc3L,0x3ebe29d3fa9e90c1L,0xc69532426479c087L,
|
|
0xdd1d24509abc7a4eL,0xa497b072d0fc7791L,0x477d71f9388ab90cL } },
|
|
/* 52 << 168 */
|
|
{ { 0xab3578047e03a14eL,0x0f4f28688caf673fL,0x919e661e66530425L,
|
|
0x28da445c91ba47c5L,0xd6d0537566c394feL,0xfe1864a302e8ae91L },
|
|
{ 0xd34baca2a753aec4L,0x43b7ffe7a2c8d292L,0x496659eb04efb8f1L,
|
|
0x310ec2a9e0252dfdL,0x98173d2f9168a80eL,0xa3e018d631497255L } },
|
|
/* 53 << 168 */
|
|
{ { 0x39ee6439ddfa0ffcL,0xaea6f882c1d1d54dL,0x688feff654a65059L,
|
|
0x17ee5aaa37f25ebaL,0x6c9b4f2932b345f2L,0xb883c0c75b4d62ebL },
|
|
{ 0xaf33e4ae3135aa7eL,0x28a7572c924146a2L,0x67dc5dd37e77ae8bL,
|
|
0xe11cd9c5ff39b601L,0xa86f090b5e6f364aL,0x76f7517500b84247L } },
|
|
/* 54 << 168 */
|
|
{ { 0x26d3a3e3fbae20ddL,0x5e9b73cee1dd2b25L,0x7008aefb0235d5b0L,
|
|
0xa92af4ed2aaf208dL,0xab786c9bb1132040L,0x43250e6c9a91269dL },
|
|
{ 0x00a15294c9be00ceL,0x2d5782df1698dd42L,0x3f980bbe76e3d6e3L,
|
|
0x5b602647496650fbL,0x461edc3271aca61bL,0x2516ab6c9805a01bL } },
|
|
/* 55 << 168 */
|
|
{ { 0xb468fcf2967e2216L,0x97b840679ae47d05L,0xfcafaebc5cc15209L,
|
|
0xaf7f6c8ccc83c3d4L,0xa74d4cd5cfa47e0fL,0xd8a51615474cb8b1L },
|
|
{ 0x4815ef52591462a6L,0x9c5b2cf74deb41ddL,0x39cb450b7e99d620L,
|
|
0xfe8cacbaa7772019L,0x98b98210577dc69dL,0x5e02b90072423a96L } },
|
|
/* 56 << 168 */
|
|
{ { 0x3266c887d9d9284aL,0x690f818b73646ab7L,0x67315ec6af7fc33bL,
|
|
0x181e61abc30b1ccbL,0x1b81e6cd105a9e1cL,0x62a15daf5078b9bbL },
|
|
{ 0x74f9840f6fa8cc65L,0x356b777443388573L,0xba0f7d0506b3fd46L,
|
|
0xb0ac864c92b4fdadL,0xcdeac253ef192cdeL,0x0c24810bc313b4a7L } },
|
|
/* 57 << 168 */
|
|
{ { 0xfbcd4f77e748de9bL,0xb7d28cdfc25dcc94L,0x32f937a92e033c43L,
|
|
0xb6289636d9da1f7aL,0xd774e97dd287865fL,0x8d013739e6243bf8L },
|
|
{ 0xee7ec1f856b9601dL,0x429017666afc90caL,0xc42d960ad2bef9afL,
|
|
0x654ece7f5b430bf6L,0x02878c7f221440f4L,0xe575aa6474a4e1a5L } },
|
|
/* 58 << 168 */
|
|
{ { 0xc96e763e71a449f9L,0xdeda66311a349fb0L,0x6f896aef3c4e8f44L,
|
|
0x71ffe2d2e9eb36a3L,0xcbee21ab8f908a29L,0xaeb695f85be98708L },
|
|
{ 0xb6023803de61e1a9L,0x59f1ec96065ecca3L,0x2a1229f3637d0741L,
|
|
0x5a9bca2c69441afeL,0xfc6daedbbbeaeed6L,0x950034954e2e31e0L } },
|
|
/* 59 << 168 */
|
|
{ { 0xe59a827339859da4L,0x8720429fa7431a84L,0xfcab26e17ee3457cL,
|
|
0xc13c1125da3b7833L,0x0bb1043fbc0b0da1L,0xdc2726ea84b526e8L },
|
|
{ 0x34049278a213a188L,0x400bb4a00a1a2553L,0x00e3eb25c92df398L,
|
|
0xc0b7113f9c36a6ddL,0x719d185001e274bdL,0x86f08f2dcde338aaL } },
|
|
/* 60 << 168 */
|
|
{ { 0xef8c40bf1adb09b7L,0x2efeb49c0b74992aL,0x3f0f8a412b79957fL,
|
|
0x08927bfe87a06873L,0x1f63a4109288cb9aL,0x8c66fb70df2b373aL },
|
|
{ 0x98da4712980facaeL,0x15ce5b17d819d026L,0x097571a5749a671aL,
|
|
0x85a40804894dd269L,0x3e89c13c34cb6797L,0x2d19d5e4d07119a4L } },
|
|
/* 61 << 168 */
|
|
{ { 0x903eee85d90da9a7L,0x67723582de5ddbf9L,0xacf6898ad394eeeeL,
|
|
0xa700fb8fabdb94f3L,0x1bcc4f947ac5624fL,0xee5cccff7e3b8ec5L },
|
|
{ 0x87d64d4d98e5a1baL,0x78727fc1ad9c4409L,0x55b4159b82310db7L,
|
|
0xaff4eecea58d10efL,0x6d2ec94c11c958afL,0xf129bd1043db33faL } },
|
|
/* 62 << 168 */
|
|
{ { 0xe1f6d71ed42eebf8L,0x46f825b9541ac0b2L,0xb01031b693ae2ab1L,
|
|
0xfa4e1c357c589556L,0x65fb2504d273d1bbL,0x589d735447642bddL },
|
|
{ 0x7a5776adcf5e2d53L,0xab5c3544e5feda7eL,0x48e8442d32dea96cL,
|
|
0x5f3e9c9e64d293daL,0x3f2df6a16b972a00L,0xfba58f5fa273832fL } },
|
|
/* 63 << 168 */
|
|
{ { 0x5c9fe89240e9ce34L,0xfd9fb296633495d7L,0x0ae3c18a8c76cd7aL,
|
|
0xb5ede1e3a6b77012L,0x5ac7a9d5a285822dL,0xe41de7da71ffe07bL },
|
|
{ 0x585f7e101b1bb4c5L,0x482794be74153077L,0x66f1c9d5a3e2a34bL,
|
|
0x491d48f7c749830fL,0x3c0f3bcd5416d2bdL,0xaa3baada90b04986L } },
|
|
/* 64 << 168 */
|
|
{ { 0x58225208ecbafb80L,0x4f212035aa73d6deL,0x1224e45562fe86dbL,
|
|
0xa8c8a4782dc5b2f1L,0x8a957b8dc3096555L,0x6a3248b0b1591452L },
|
|
{ 0x1e563c58cb604c18L,0x32808cb59bf1045eL,0xf8f62de99462e7a2L,
|
|
0x6b3dfe91c2489214L,0x6c1d8fc42174639cL,0xdfca11b8ef88d4b5L } },
|
|
/* 0 << 175 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 175 */
|
|
{ { 0x5a4a5ce418690ad0L,0xd0f788e0fe27f51aL,0xd459388e4efe9a30L,
|
|
0x3a45c11aef9d074bL,0xf68ab50b93ab9cb0L,0x62fbc397ecd9a566L },
|
|
{ 0xbfb79b7fcc587a7eL,0xfcf4d66f92870baeL,0x4f31aa21877390f0L,
|
|
0x2de0c645e314cfb5L,0x56d904f6238eab12L,0x4d104a42ccb4d4f6L } },
|
|
/* 2 << 175 */
|
|
{ { 0x3eb83a8729358cd3L,0xad741295b9c6d430L,0x57b8c77a53abe4e9L,
|
|
0x0a14673ebb9feb82L,0xc0a6cbf7f26f922eL,0x213de299a32e526cL },
|
|
{ 0xca417e677b6ca858L,0x8d6ae0f7fc2e0900L,0x2bae0e7a62e135ddL,
|
|
0x962bdcaea7ee82c7L,0x573d7f6ae5776c74L,0x9c4de6496ffbefebL } },
|
|
/* 3 << 175 */
|
|
{ { 0x8c962fc809335d38L,0x26d1bc81eb38d176L,0xe1aeb295c47711edL,
|
|
0x0812b9926cbe3e4eL,0xeecacaf90ab9805dL,0x82fefbaa3521a0adL },
|
|
{ 0x3a6948c0e2c31b9dL,0xb7d3905be82daf2bL,0xbd3ac90e25a34c37L,
|
|
0x55afd99b61453063L,0x56d87cd190b99303L,0xc9bf82dd97ddb0a3L } },
|
|
/* 4 << 175 */
|
|
{ { 0xcbc0bb1968916917L,0x0bbb9f921094bf88L,0xf62cb350d3806442L,
|
|
0xe4d2f1cc397a7602L,0xa54bd48e43987d82L,0x77b6f8314f0a19faL },
|
|
{ 0xfa0c9a456e766443L,0x995ae0fff51ba70bL,0x8e242c5b9cbd8d33L,
|
|
0x1671eb0813d97956L,0xccae388f40da55faL,0x97cc48faf376dce5L } },
|
|
/* 5 << 175 */
|
|
{ { 0x1c2919bbe8c91718L,0x9dbb727a5097bde3L,0x23f87ae7f8ea2fb2L,
|
|
0xe1bfffdcba310121L,0x5938c50c75329669L,0x716c63e00549855cL },
|
|
{ 0xe091b0c9654814f0L,0xa20535d10e43daeeL,0x16ce68b2593ddd04L,
|
|
0x7813a49af59900bdL,0xef0d3eecd3e5d232L,0xe7d12cc40ee3fd4dL } },
|
|
/* 6 << 175 */
|
|
{ { 0xe54d92cdef01fc5fL,0xc46c2ab8dda2e25aL,0x7c907fd2849f6142L,
|
|
0xbb11dd2dacd0202dL,0xa4913a701d92d19aL,0xe9a26ae0cf610677L },
|
|
{ 0xfff1e1d5538943c5L,0x5943dcc4a47b2204L,0xcafcf33a92cabf71L,
|
|
0xd571e13ce329d1adL,0x7626ad237a9a0e4cL,0xf0aa0d9f130d7f86L } },
|
|
/* 7 << 175 */
|
|
{ { 0x09df3a4419e6aa7eL,0xe27ad0475841b1cdL,0x02d2a69fbde75934L,
|
|
0xb0e05e53fd9ba435L,0x4732d88ae008c16eL,0xdebc4777ea72110dL },
|
|
{ 0xccb7d9932e3143adL,0x674f3753ea8cd06aL,0x56012a7a051562cfL,
|
|
0x961df68425f74cd6L,0x26630e71214d8a95L,0x584e8d6365d92f84L } },
|
|
/* 8 << 175 */
|
|
{ { 0x8a89daefebc5557cL,0x7ca71403275e1649L,0x48d923775b80bb4aL,
|
|
0x0a587c52a45b3626L,0xdaff503cc75bfe91L,0xd845d3e6116d07d7L },
|
|
{ 0x6b5a4715a51eeca2L,0x34ac02bd74481991L,0x8f076cfc595abf8dL,
|
|
0xc9de4ce9ed0391ceL,0xaaaad03ae1fcabd3L,0x8d48ec0087b199edL } },
|
|
/* 9 << 175 */
|
|
{ { 0xbd0f2653ae5dd482L,0x59f968dd060032dcL,0x6bea33e067283310L,
|
|
0xccce88cc012aa50cL,0xbb6d7f2f66838f46L,0xb764c95f05ec9bcbL },
|
|
{ 0xd097b60451477ccaL,0xc2fbda7b82b20a85L,0x75fe07a424e9ca8dL,
|
|
0xfc4fa8240cc40d01L,0x0b17d5f90c0e95f7L,0x285e6e8a6e1e46dcL } },
|
|
/* 10 << 175 */
|
|
{ { 0xb0641d09bc9b2654L,0xf9fcc2e68aa8fa35L,0xd12a5b4b00d5ec6eL,
|
|
0x9be1a1115569d89aL,0x9c0566deffac7208L,0x7a9fd4ff7034edf1L },
|
|
{ 0x636aeb6b9571c375L,0x60d05aec55cdf187L,0xf4e2f898734e9d2fL,
|
|
0xdaf742195ccdc6bcL,0x9d39249f608a4f28L,0xb5f1bb5e8820e2c3L } },
|
|
/* 11 << 175 */
|
|
{ { 0xd02e9936d9589548L,0x8f1bf5755341402fL,0x1535a443057300aaL,
|
|
0x3062478e65d29324L,0x4203351fc656a3f3L,0xbeb21b516569c4ffL },
|
|
{ 0x8113ce70e1f0f263L,0x59d1293903f9320cL,0x95061255d08f8936L,
|
|
0x8be3c0f997d4b705L,0x0259742e827837c2L,0xf55ea28d95c65cdaL } },
|
|
/* 12 << 175 */
|
|
{ { 0x62024812603dc3dcL,0x25dc5337efd67b57L,0x86b3eb38d7f033fdL,
|
|
0xee3226b232646d6fL,0x8c4825f6f1dae596L,0xd2303055a5bcb8e5L },
|
|
{ 0x904a53493c0baa76L,0xe60f6125e08646a7L,0xaf6a329f21d45f89L,
|
|
0xf20ad88a06605546L,0xcf7a0e9619a93d14L,0xf1eabcc891c97174L } },
|
|
/* 13 << 175 */
|
|
{ { 0x72b76e9e8f02af51L,0xac94cbf1d580f95aL,0x2e9cd74801d854a4L,
|
|
0x4ed4e9061f08a1bcL,0x0a2b28419d2bd936L,0xbf86350051c89ddaL },
|
|
{ 0x9407b0e7e3f00bf5L,0x6b1f71ff28b57ac1L,0xc1dfe03fcd28801fL,
|
|
0xf3d83d64afa55309L,0x47aafba28af8f76fL,0x54eed45f6604b2e9L } },
|
|
/* 14 << 175 */
|
|
{ { 0x59edd2640f3e541fL,0x318674b582b76ba8L,0xbf4a0d304e7f0716L,
|
|
0x36fc0e4119b88200L,0x91db560240da801eL,0x638371ad2c72c2c7L },
|
|
{ 0xfe960c25d5822da7L,0x7a7571d14a7415e1L,0x5a6480febccc1576L,
|
|
0x72f4e5e5c3c88f47L,0x224e7e749a7bd8ecL,0x3ebbf52c7631455eL } },
|
|
/* 15 << 175 */
|
|
{ { 0xae3c2bc08608ab37L,0x35e3da8c39f336b6L,0x7413664281f44511L,
|
|
0x21ce7c511d8506e7L,0x9b6718b3846165f1L,0x9e455007f5cabf6aL },
|
|
{ 0xec582a0e02611073L,0x269aa18d83bf042eL,0x7c54fb7c86306757L,
|
|
0x453336021b948fafL,0xd3a5c508b7025d73L,0xcd6e555b428471e4L } },
|
|
/* 16 << 175 */
|
|
{ { 0x42c9fad511a224e6L,0x6b6aeb8b69b2ac26L,0x0cf4c7fdb149854bL,
|
|
0x4a7d90002fc359ebL,0x9ff0c3ea29ec8603L,0x157ae7859b24ee14L },
|
|
{ 0x638c809a8979e9bbL,0x347dfb2e7869d8c5L,0x2fb1e0f8a07ea547L,
|
|
0x1e580d32aecdec3fL,0xbbf895730f74025bL,0xeb94d71bdd529164L } },
|
|
/* 17 << 175 */
|
|
{ { 0x8670812a35d03250L,0x2f68343f1984cd59L,0x5fe890caf1ff97ecL,
|
|
0xd47fff536f764b2aL,0x70fa44a4f8f7077bL,0x7b287efcb2c7fe02L },
|
|
{ 0x0718e70806dedcdeL,0x37193c827172c0f6L,0x47ad55f67b7f28a5L,
|
|
0xaf83c4fe9c71a96fL,0x2d6075587c490626L,0xe647de1b933e9033L } },
|
|
/* 18 << 175 */
|
|
{ { 0xdc5909e3f1687d4cL,0x4fe3be46d431c5a7L,0x28c41a035f9807beL,
|
|
0x2c4203fd12f1f8daL,0x13f12da450a19620L,0xc32f881eae2e9835L },
|
|
{ 0x56328ef7622587d0L,0xcf785f038f209f66L,0xb562ea70a2697748L,
|
|
0xa762289055598769L,0x9842bfa8fbf41fd3L,0x304c3057fa401ba0L } },
|
|
/* 19 << 175 */
|
|
{ { 0xb8d685d1c56bc716L,0x1eceb18f1fccc358L,0xf94bedc82034cabdL,
|
|
0xa9acaf11ad003472L,0x6fea0a55ad0786c6L,0x60f7f9a9581f6f52L },
|
|
{ 0xc4736494400bcca5L,0x221d8f8a3606b047L,0x533756fb6339c7fdL,
|
|
0x1e068e987510c1a4L,0x9bf9abb6ededfa09L,0x96895ce548d54775L } },
|
|
/* 20 << 175 */
|
|
{ { 0xc995b0171552c477L,0x6f92a95252351781L,0xa9d4bb6c4da25dafL,
|
|
0x2b02828e3cf6aab7L,0x5f4febed11fa4d0bL,0x42f0e61ea12d9d37L },
|
|
{ 0x1ceef875d24610d0L,0xa7c85c485d4eeceeL,0x33fcfa3b79340a49L,
|
|
0x3671e563b00b3491L,0x871f74e493eade0fL,0x1ed095182c546f3eL } },
|
|
/* 21 << 175 */
|
|
{ { 0xc003b709a9a5c68eL,0x9441e7b26c84310aL,0x7ec3b652dd90f7c5L,
|
|
0x17e601685b526324L,0xc5f77fee479573aeL,0xe89beed18453fe7eL },
|
|
{ 0x259a2b0364540cadL,0x8c2f13322b9a8053L,0x1db53ab7304940edL,
|
|
0xcf780c5d1612763dL,0x2edd7285e19b62f9L,0x20ddc9874abdd7a5L } },
|
|
/* 22 << 175 */
|
|
{ { 0xa70aa6781250954bL,0xe4a2f7cf2930f3edL,0x3e3dd26666fd719aL,
|
|
0x500166cf792ff463L,0xeccd32cd75cf00a6L,0xb65f46a5c4526e56L },
|
|
{ 0xfc3a99c360aa8cd7L,0xe04a18b31290b20fL,0x957139a218cb9326L,
|
|
0xf6b352ce11fc04a5L,0x9314b80778534e64L,0xd4a265c52d8f5015L } },
|
|
/* 23 << 175 */
|
|
{ { 0x7078b4820dca1fd5L,0xec3192daeed504baL,0x144183332d06a63eL,
|
|
0xaff9f7bd69c01ac1L,0xc5fb50475b74308fL,0x37846eeaa67e7ef4L },
|
|
{ 0x0fcea663976b931bL,0xd3407d42bb345b71L,0x925afc36a2deb11bL,
|
|
0x12c271092207db49L,0x237500002e1c8fbeL,0x41427e0763f771cfL } },
|
|
/* 24 << 175 */
|
|
{ { 0x9dafbe96491ddae9L,0x92c60b897741da5fL,0x1185b001b866ab14L,
|
|
0x7a43b9cfca7f2f81L,0xaaeb5efc6ee8fdfcL,0x1f7cc70022beba9dL },
|
|
{ 0xa212724722e3e7cfL,0xb98dde1e9e723477L,0x87832183ac89706bL,
|
|
0xdfb92ac1ff72f1d5L,0x5877fe6daade3804L,0x7ddde4a79170b9acL } },
|
|
/* 25 << 175 */
|
|
{ { 0xdb147da0b7df600fL,0xbef5374660a8b100L,0xb4c7e404a1330d14L,
|
|
0x152c6ae754f96693L,0x08884fecb25fd94dL,0x8ec186048ba59001L },
|
|
{ 0xdc245c0c9f8e77fcL,0x2be5aaebc0f0a83dL,0xd15bdecd1fd13525L,
|
|
0x46b603f0821c9224L,0x6b335a7daf6dc128L,0x4cead4f94dc6b5bbL } },
|
|
/* 26 << 175 */
|
|
{ { 0x239cccd8179fac91L,0xffa076063829d42eL,0x75b8589cbd42a0ecL,
|
|
0x012f5e80d7f2292cL,0xdcee7efd99c14665L,0x4925256d23650737L },
|
|
{ 0x847c86ecf3cc64afL,0xdd34a75feabc04fcL,0xc2f73b3ac6a1f710L,
|
|
0xe16e317565cbf6fcL,0x9cccffee351461d9L,0xe3d635543b4fe4b9L } },
|
|
/* 27 << 175 */
|
|
{ { 0x6e27de1176ece8f1L,0x3ca873a79d5a3cb7L,0x7d65cdff7e424482L,
|
|
0x023e5bcf69372216L,0xae601c2f2ffeb5a6L,0x8c8888cbde130b33L },
|
|
{ 0xcb8309485700ecc4L,0x5a1902ef9dfe1891L,0xe01f5fc558198380L,
|
|
0x9d5d1c476c59f973L,0xacc64c98e34cc41fL,0x057d81f03065d870L } },
|
|
/* 28 << 175 */
|
|
{ { 0xf3a1a9797aeefd73L,0x3fb166a09537abf7L,0x39e8c469d4c37607L,
|
|
0x3efc85650e3f034eL,0xc955c2dff9c25655L,0xd6ce96ec260fa449L },
|
|
{ 0x5383a8b831d8e6d4L,0x3aed2e761a3595dbL,0xbd269c39e22a0f45L,
|
|
0x4c82238694a7a83cL,0x362f08055731bd0cL,0x7dc1e7ee0527be95L } },
|
|
/* 29 << 175 */
|
|
{ { 0x606ffedfd41ce228L,0xb87608d0ceb21740L,0x6fa23c0794a4354aL,
|
|
0x587a7c54d5061d84L,0x75678bdb16b823ccL,0x2d2163c94ec818afL },
|
|
{ 0xa80b1e4e22c6fcaeL,0xc07cebee4d2a4b65L,0x64f303c7a895e2c9L,
|
|
0x750079f5a768a2e6L,0x0665502c2d423133L,0xaf33176715135cdcL } },
|
|
/* 30 << 175 */
|
|
{ { 0xda8f7878c715abf4L,0xc62292a5a5830c4dL,0xfcd30f7e4b46acb9L,
|
|
0xb931f1ee39a73db2L,0xf838a5c84ee1afb0L,0x15609b57c202a921L },
|
|
{ 0x2e21871620bbba58L,0xe1d2fa14ae2615cdL,0x0a4dcf3543946185L,
|
|
0x2e80d804730d2490L,0x5e43dc17794246b6L,0x7b3588c8dcb3be9bL } },
|
|
/* 31 << 175 */
|
|
{ { 0x3e74f09c1bb8e6e2L,0xac587847584dba0dL,0x926415593f843324L,
|
|
0x0033257729f3ed18L,0x4b7164e5d0089537L,0xc50542793e54c9a0L },
|
|
{ 0xbae7ff9808e58162L,0xc0707d03c1aa2fd9L,0x43524f717714dca8L,
|
|
0xa202a0707255b169L,0x0a7867ab4249b2e0L,0x03f748656d6ec5e9L } },
|
|
/* 32 << 175 */
|
|
{ { 0xfa2db51a8d688e31L,0x225b696ca09c88d4L,0x9f88af1d6059171fL,
|
|
0x1c5fea5e782a0993L,0xe0fb15884ec710d3L,0xfaf372e5d32ce365L },
|
|
{ 0xd9f896ab26506f45L,0x8d3503388373c724L,0x1b76992dca6e7342L,
|
|
0x76338fca6fd0c08bL,0xc3ea4c65a00f5c23L,0xdfab29b3b316b35bL } },
|
|
/* 33 << 175 */
|
|
{ { 0xd2437a52eddd4b72L,0xe2cec2abf051b831L,0x845af98e482a4ea4L,
|
|
0x75758ccfa43cae82L,0xa76733429260ea35L,0x77845b02b1dd602aL },
|
|
{ 0xb78bc4c047d5c450L,0xcb1f444550ad371bL,0x6bc01293d71cc417L,
|
|
0x8538f638c1fcb367L,0x5d01d35919b313f3L,0xcd6b55bfcf67f6acL } },
|
|
/* 34 << 175 */
|
|
{ { 0xc28000d6e3b03290L,0x4dd5064a5f2ddbcdL,0x4916f830338a1414L,
|
|
0x3ffb8381aca74c22L,0xec073ee8e680f548L,0xa34e0693a0430cc3L },
|
|
{ 0xc6baf20dca03e6e7L,0x2a30df6e835fb88dL,0xbf3c9e9cc2092d6bL,
|
|
0x391cb25c17bc2433L,0x9b7de7126c205c0aL,0xf25e1494cd2a5e62L } },
|
|
/* 35 << 175 */
|
|
{ { 0x05ae44e9d21fdc9aL,0xc520657fce40ebbaL,0x6b8e25431270cb59L,
|
|
0x24e6f9bff7f096d0L,0xc6ded76a3ed81f52L,0x729d05e75f7df798L },
|
|
{ 0x99e2636fe5468eb1L,0x6f3abd4c00419facL,0xfc61117a9cc41e09L,
|
|
0xb16f106baa399a51L,0x05603bc845e52713L,0x612658aca5c36107L } },
|
|
/* 36 << 175 */
|
|
{ { 0x107573b96defe8f4L,0x9a9edf0570545313L,0x5df43df0e54e8272L,
|
|
0xac91bae8eeb4ae90L,0x241d54bd26006ab1L,0x0ba118a6c031de7dL },
|
|
{ 0x376214671f500d4fL,0xbbd6b318bc3596e4L,0x4b5532c85992277aL,
|
|
0xb15165da16a4728bL,0xbd7986d45140abdfL,0xf4fe16df7386f38aL } },
|
|
/* 37 << 175 */
|
|
{ { 0x8c5d305696aeee65L,0xe52e500ea79991dcL,0x3af4a3ef343fdde9L,
|
|
0xc6d0389b248ad10cL,0xc3dbdb3f5014de53L,0x606b1352310a0cd8L },
|
|
{ 0x65af3f8479bde08fL,0xa6c7d968d82ab682L,0x7262c07d202a6508L,
|
|
0xd0231bb64cd75fe0L,0x58a34ca5dcb1f7fbL,0xcc8b21b21b8cf7a1L } },
|
|
/* 38 << 175 */
|
|
{ { 0x4cd6e61be824653dL,0xfa02c0c9f253dd65L,0xab198e41b1e84cedL,
|
|
0x89ce6aff1928be7cL,0xf2a83f4895afb956L,0x5b5f195ddc73f3a5L },
|
|
{ 0x44220ff79328317bL,0x03d62cb7f5239616L,0x0e908d34b5d49415L,
|
|
0x050b7651c1f7e665L,0x3610167089e1a98bL,0x564abb3418eb7644L } },
|
|
/* 39 << 175 */
|
|
{ { 0x400b363b2eecacf6L,0xe2ae5bee1ed9fb9aL,0x23374b11831e99c6L,
|
|
0x0a8382d82cb9de95L,0xf95b8e052dc02291L,0x63b05a0d2f752257L },
|
|
{ 0x9ec16f84b60d9df4L,0x6ed683ac3bda5171L,0x7206450813acca39L,
|
|
0x6024af3cf8871ba1L,0xbf88040e2f9a4d56L,0x001054149fb100e5L } },
|
|
/* 40 << 175 */
|
|
{ { 0xd52c606375ccd2e3L,0x4fa8e4df56ce654aL,0xcd905c9bce581d23L,
|
|
0x51ce0eab24ff75eaL,0x1c1c0831432c6e5fL,0xb83307aec02f0e86L },
|
|
{ 0x0b7a0274fe2ee821L,0xae7dd7729c3d69faL,0x54745da5931ed75fL,
|
|
0xc276d96f18caba13L,0x142571dd26dd9792L,0xc522dac16c0e3167L } },
|
|
/* 41 << 175 */
|
|
{ { 0xa86fa630197b5b97L,0x749ea479fa21c176L,0x520c0e4871ce7101L,
|
|
0x5c53d9ebe30a0b0aL,0xdc71b629ceb570feL,0xa30fc3d11fa3699eL },
|
|
{ 0x741321b579cbbfa4L,0x205ea0aae8d18119L,0x94556e92fc62e0eeL,
|
|
0x5ba78d4e042b9c3cL,0x14de84103fa24a56L,0x6e57a9fbd6557bceL } },
|
|
/* 42 << 175 */
|
|
{ { 0x2a5e716ff103d9c9L,0xda2f7e5cb9cd27ecL,0x317f74b8e047e5cbL,
|
|
0xf1f496d33a4413feL,0x1a480a9cb8cc9fdeL,0x502b52d7575208d4L },
|
|
{ 0xf14fe00cd19c49a3L,0xf5c2367b269be5a9L,0x966a524f12d42690L,
|
|
0x2786ff714dd03b95L,0x6fa1f891d69bf68dL,0x0f3d77579f67b3bfL } },
|
|
/* 43 << 175 */
|
|
{ { 0x230c8d00c966c638L,0xde5c9e8e54673305L,0x618b0dd561bc99faL,
|
|
0x669618048f3cb5c0L,0x7c653ca507141ba5L,0x454d54ff32ba155aL },
|
|
{ 0x82665a307df3e39fL,0x15eb1a65ca19cbb7L,0x4e7632a617330ab3L,
|
|
0xc69235295a3221b4L,0xe23ee9382eb58e9dL,0xb320aa8e23bcf88cL } },
|
|
/* 44 << 175 */
|
|
{ { 0x6ba15fe607a7ecf8L,0x93127926f831cc91L,0xfde2dbf41ff6264fL,
|
|
0xdf7f22018413fdb2L,0xdd81d11487f66260L,0x87907f0e4a87133dL },
|
|
{ 0xeac1032cb1d47e23L,0xe2603119125a0918L,0xba680392f2259208L,
|
|
0xb7c7f8ebf9bf06b7L,0x875a380fa56ba57cL,0x05a88a97460c939cL } },
|
|
/* 45 << 175 */
|
|
{ { 0xfb2871b7d0dc771eL,0xd12b21fcbaf358c9L,0x30dbd412df616c16L,
|
|
0x291bd90f9345e16bL,0x92f7534b8ee6bb6dL,0x7ebc5b0eb1c901a0L },
|
|
{ 0xc9e9c76151e1881aL,0x5ca52152756bfecbL,0xb0a9f5cb6affd506L,
|
|
0x4c12f965669feb3eL,0x01d84b9ea6f1c529L,0x3870fa27e8433c92L } },
|
|
/* 46 << 175 */
|
|
{ { 0xe4e9e72495bb5db0L,0x86babe3ffd616958L,0xc1520c280f93c1cbL,
|
|
0xe393ded539cab777L,0x031a2af3e86a6ca3L,0xb26a19101e8466eeL },
|
|
{ 0xb16b746dbb64fd81L,0x4e96f0b65a97d50eL,0x7a12a611a793fac2L,
|
|
0x8d729847db6482aeL,0xdd050ce812e72ce5L,0x915041366c54299aL } },
|
|
/* 47 << 175 */
|
|
{ { 0x9e8018c06b63c4beL,0x49dde0c8fce47904L,0x1668de9c9bae36cdL,
|
|
0x8dfb0d5f80ed18aeL,0xfd6739a791e1949dL,0x80353c9f8053d7d6L },
|
|
{ 0xa611699bdea54710L,0x5eacf16e6c6c1f5bL,0x5212fbd3c920323eL,
|
|
0xaf75db75848d085fL,0xb58564b1babb45b8L,0xefa1958938bc491dL } },
|
|
/* 48 << 175 */
|
|
{ { 0x0a43a76c2f95a081L,0x27eaf2bc38b1c395L,0x6ba3222c63da1d80L,
|
|
0xd95ae17e6a78ce09L,0xa72d9812508f03b3L,0x9f36d02efa8ed359L },
|
|
{ 0x1716d1dcd5118f96L,0xd116339f489bbc53L,0x272153ef6f7e1d3dL,
|
|
0xcb4a9e739e308d22L,0xcfa9d88b615a3646L,0x8b69bd6cde454569L } },
|
|
/* 49 << 175 */
|
|
{ { 0x33ae0fec2b8f41feL,0xc45aac500762c46bL,0xa03bc6ddf228ec44L,
|
|
0x82cb78cfea3d48c2L,0xbe7a02ed27126795L,0x1a44d1f830b3e3ddL },
|
|
{ 0xb414edc73be7b58cL,0xb3e6c7ce331bcbc9L,0x9f6fd0f2903b3508L,
|
|
0x260c8b5736cc2930L,0x8581a05d0d59278dL,0xfac1817b189b3005L } },
|
|
/* 50 << 175 */
|
|
{ { 0xbf4d4640cc9a69c3L,0x07b39b5d67d262dfL,0xcd4a6a4579526d6cL,
|
|
0x4a04c430538143caL,0x6c3341b86639e3b0L,0xd490cab5ab7216d4L },
|
|
{ 0xedda2b64a2a93161L,0x04e309de644a06f3L,0x7cad728a8c4495fbL,
|
|
0xe1744f3871dd61f4L,0x39cbd782e3201618L,0xbd66e1850ca18ab4L } },
|
|
/* 51 << 175 */
|
|
{ { 0x69d8237f87dcb8beL,0x3f9a485b090e0237L,0x535371e1f117a1c5L,
|
|
0x0d5ef52675430c29L,0xcb9c150898fdd18dL,0xc7c1a7b4108d9383L },
|
|
{ 0x6ba9fb4d98064eedL,0x07d205a9a3df31c8L,0x7a0be62e9be5da37L,
|
|
0x03b21b1255a9e2c2L,0x3f4792263de80449L,0xb0160ee1ae3bf31cL } },
|
|
/* 52 << 175 */
|
|
{ { 0xa22c084a7a3f8c5eL,0xeb7fe23f3ef30511L,0x161ca862819fa38aL,
|
|
0xe5f014156d45762aL,0x37da6bb95718b789L,0xfcb682bbd837f453L },
|
|
{ 0xc49c7397275e5974L,0xbe908df5a1ed0925L,0x3dcd694615a13ea0L,
|
|
0xdbe652e32596fa76L,0x6a3bcc93c55d376cL,0xa2f7611933a0f02bL } },
|
|
/* 53 << 175 */
|
|
{ { 0xdfff9b9c6ed061ffL,0xa36aef2dec32b16cL,0x9f3b7ab6da61572dL,
|
|
0x96e72a027ac2dac9L,0xb0e36e023aaf4fcdL,0x5f32a620503004cfL },
|
|
{ 0x6c91dacbadcd649aL,0xb25deea21ac02a32L,0x211a421ffb914c2cL,
|
|
0x1ddbd60e149fde1dL,0x91c4cc0d7ce86ad3L,0x8be6f031b9ed909cL } },
|
|
/* 54 << 175 */
|
|
{ { 0x62e773c4a0cb50ffL,0xe54fdbdd2e903681L,0xed2bce9e21c12ca9L,
|
|
0x13aa4748c072bae6L,0xb290c0ad475f290eL,0xcbbc3f9b56698a85L },
|
|
{ 0xfb37611b1b7fff76L,0xe62a842260bc2e36L,0xb6a36c783bb20fd4L,
|
|
0xdec045418dd69509L,0x67648b7798a1ad2aL,0x4fa2005d078fdea3L } },
|
|
/* 55 << 175 */
|
|
{ { 0x757f249416307553L,0x865af9d0de6bcb49L,0x3943031a07b0104cL,
|
|
0xe5fdb46168da2d33L,0x4937d614b5432b48L,0xb3fbbf2c0a29a5e5L },
|
|
{ 0xe7d3b12b8de89887L,0xc1a43c24e41258c3L,0x91ac7eabf7d9efe4L,
|
|
0xfd90de0088385cb3L,0xead102e37674c39fL,0x7b9a2cc4fff118c5L } },
|
|
/* 56 << 175 */
|
|
{ { 0x11f92678a1e598f5L,0xde8052491fbb882aL,0x3730b3261154d0aaL,
|
|
0x0e279827da521670L,0xa03c8c702336f8c0L,0xae50e64ff0bd66d6L },
|
|
{ 0xfbfd665f7af4f681L,0x237a4f4e5c8d5680L,0x6527611ba409064fL,
|
|
0x1f4eff6a99db9a94L,0x4a55d96ae53ba177L,0xd9dec234f002368aL } },
|
|
/* 57 << 175 */
|
|
{ { 0xbb837d0ad193ebc0L,0xab1e3eccd09b24caL,0x229f36d81d848777L,
|
|
0xee895edf0ab68c98L,0x67fc65f4dce31b92L,0x777ebe585db96c26L },
|
|
{ 0xca0893ae6047d0d6L,0x71a2ca0b550d6905L,0x35426866eac4c2e3L,
|
|
0xb4d7e78e0c1b8eb0L,0x03cb0a9a84b384e4L,0xd8a99a5c7f7115b6L } },
|
|
/* 58 << 175 */
|
|
{ { 0x07db8bfa5f25a74eL,0x97dd568a3dd8e706L,0xcf4c02a32fb59efaL,
|
|
0xe2ae502616b291e4L,0x5499f3b20f9c10cfL,0x59abdcf5a7297ec7L },
|
|
{ 0xcec282671f4a3646L,0xc10ae0971e065cb1L,0x172f886319dbbaebL,
|
|
0xb0c27f7d73dd068aL,0x764d185495086ceaL,0xb89923c732de9a97L } },
|
|
/* 59 << 175 */
|
|
{ { 0xacd499ca093345e2L,0xfbdb3895f3c23800L,0x2584f8ca02f0fadbL,
|
|
0x9f5dc96ec2f35eddL,0x4dd102ca1ba0266dL,0x13ee9c8aa9f26fabL },
|
|
{ 0x9e7467fa2a1e61daL,0x999764b6850191c5L,0xd053a575b70dd8dcL,
|
|
0x697b856fd7065eb7L,0x9d5bb6aa695b4914L,0xc5cdd170e65001f1L } },
|
|
/* 60 << 175 */
|
|
{ { 0xe87cf622e93495f0L,0x347b09c6bb43a802L,0x2a38f3b7a4e3ac34L,
|
|
0x13353b959751c1c4L,0x753ec3ecb3947985L,0x3bf856dc12d3fa90L },
|
|
{ 0xbf4f6fa5ec35dbe0L,0xd099a15bf3b4fcf2L,0xb348462fbfe7245bL,
|
|
0x508324b352a2d4f4L,0xec4bae05feee1315L,0x468fa9e404496618L } },
|
|
/* 61 << 175 */
|
|
{ { 0xc57673257d5e7a94L,0x40c05da604cefc01L,0xba1fd6c6b921c681L,
|
|
0x0d3e09f9c104cedfL,0x4b7cd83cc6586416L,0xb747d7f9adfa7bfaL },
|
|
{ 0x833f8e24a42be782L,0xd5f0421d06b2471fL,0xac87b17c22e4b84eL,
|
|
0x85af6b063a10c7bbL,0x4e557cbf66e88e2aL,0xaff21b66d3751e40L } },
|
|
/* 62 << 175 */
|
|
{ { 0xdbab25f4c4464538L,0x3c36560ba93d7f74L,0x8b9b15d39f86f410L,
|
|
0x1237e35b0a1db237L,0xc9dad97994f49677L,0x390a3d8f15dff99eL },
|
|
{ 0x0a74dfaef82c19edL,0x3f8e958589c2dc55L,0x763448ce94a8e729L,
|
|
0xc6349398625f0517L,0x1ca5f9e7523dd700L,0x45aa25317fe638dbL } },
|
|
/* 63 << 175 */
|
|
{ { 0xe91af601aad04ed7L,0x6f86f323e897df2eL,0xf8c259564c7a0ab8L,
|
|
0x6e793f3633845d15L,0x08937ef5e583d043L,0x92dafa5824d1fd96L },
|
|
{ 0x6458ae2a86c9aedbL,0x271823a026a4252fL,0xb119fe4c5a57ef16L,
|
|
0xf41e13943a507289L,0x0cbf1da6bd1aa499L,0xa177ac9dc2465a51L } },
|
|
/* 64 << 175 */
|
|
{ { 0x14f962e404a8313dL,0xc6e3e7c45f1f5a26L,0x2c0e11c079e777beL,
|
|
0xa1705efb4657c31bL,0x02688fd23c494de3L,0x75664a84412a8718L },
|
|
{ 0x878fc7ad7a422f8aL,0xe5d581df7419bd0aL,0x7c813c4c704b70c0L,
|
|
0x98553da87323c008L,0x4f63cec663089f1aL,0x9626d6fa9655d291L } },
|
|
/* 0 << 182 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 182 */
|
|
{ { 0x10586ea7507f8b27L,0x1510deb9a261f7d7L,0xa42fc4d7dfbfa352L,
|
|
0xbf38c3821e1c2291L,0x46e40ef60e11760aL,0xc24f6061dcb974d7L },
|
|
{ 0x755b105ba7619027L,0x8004bf09b8ffa759L,0xa630d0b00945db60L,
|
|
0xa160ac9cf2809e1cL,0x38fc1113dc6c95c5L,0x01f540985d52574fL } },
|
|
/* 2 << 182 */
|
|
{ { 0xcda68a7e698ee21cL,0xc7414d196a5e725eL,0x483be2dadce20b91L,
|
|
0x7de1601cfc69dca6L,0x4bec17aaac4f9891L,0xe8741dd18d479a56L },
|
|
{ 0xc623cb8dac23a286L,0xe20a96b5166133f0L,0xda9bb7c030dcde61L,
|
|
0xf84ea3273a1733fdL,0xd7afb6c3e82fac31L,0x37ea7d35d3897449L } },
|
|
/* 3 << 182 */
|
|
{ { 0x120649b20370327bL,0x0e76555acd48cdc6L,0x4ed54decca01db03L,
|
|
0x7be21319ac601d22L,0xf711661901b6576eL,0x7839fa064e73537fL },
|
|
{ 0x169d43ace46e860aL,0xde6d658c3078eed9L,0x8df731395032142bL,
|
|
0x6be199b09b3c76c7L,0xc2f385f6f8bbffe5L,0x848df7f3d5ffd28cL } },
|
|
/* 4 << 182 */
|
|
{ { 0xa189f30fc6a6d6d1L,0xdd674d3669665ab8L,0x307c9ec37d8da76dL,
|
|
0xb3e1d006c1ea7c10L,0xc15e20b3b88c62d4L,0xb0000ec50bff3b3aL },
|
|
{ 0x9e330eb19ff9aa5cL,0x8663f9fddf578877L,0x157d3cb002e1eb2aL,
|
|
0x638f297bf525e4d4L,0xa20f833234a3dff1L,0x748ea86b45a9c051L } },
|
|
/* 5 << 182 */
|
|
{ { 0x978ed3abe664c066L,0x3f4a8e0d668361eaL,0x0ba610c753a25231L,
|
|
0xa8b5b864189143c6L,0x0d7ccefca2841fc2L,0xa80dd8f3f8fea1e1L },
|
|
{ 0x2c24af232e19028cL,0x0e332b77919decaeL,0x44eae977f6089c76L,
|
|
0x25e04dae53722e9aL,0xdd6f8b1f71ac4db0L,0x7c5b6ffd075e7bc4L } },
|
|
/* 6 << 182 */
|
|
{ { 0x4c6299a7a1de1cc7L,0x362d293c02d9445bL,0x08f24df0399a9494L,
|
|
0x33307792e37a1851L,0x1cc5e448760f680dL,0x70a6a8164a2efbefL },
|
|
{ 0xee939681246fc671L,0xfa7a26d1f70a9c14L,0xfae5ca89b826aab5L,
|
|
0x6b8932c7e48176f9L,0x379f89bd9841c8e1L,0x46141d2fdb674190L } },
|
|
/* 7 << 182 */
|
|
{ { 0xf4408485b4619d3aL,0x34b4f18160b4f44eL,0x369edc1b3532caf0L,
|
|
0x2d0471ec6771abc2L,0xca4129311013266dL,0x02e636af617e2024L },
|
|
{ 0x1f93d60d3c69696cL,0x6aba7f2a1b99a172L,0x896873e1bf435ce6L,
|
|
0x9649f08215b71e40L,0x730bedcfa02b024fL,0xb17e9cbd8df60bfbL } },
|
|
/* 8 << 182 */
|
|
{ { 0xfe9fdde8bc266ee3L,0x91668688ba18e6c7L,0xa65349acddde6f6eL,
|
|
0xc53c29c97e54356cL,0xee15ad945709f73cL,0x033b3940e5429277L },
|
|
{ 0xf52035cdd0c3475aL,0x9c5bef4d93f1f1f0L,0x26e0b0ceca319bd4L,
|
|
0x4e7eb67b6951fd8dL,0xac3a6f4395c34d6fL,0x1f2769e600f60b59L } },
|
|
/* 9 << 182 */
|
|
{ { 0x95188c136c4d0bedL,0x377a04901b5271e7L,0x60db30226a540165L,
|
|
0x4be61fda3310c5b9L,0xbbb4fbe93f8bbf16L,0x5232fb46ac12f77fL },
|
|
{ 0x8d6f75ab255b569cL,0x09cc854d3bd39650L,0xec17a6e74b557c3eL,
|
|
0xd6949f9d5c3d149fL,0x9a17a440494b18b2L,0xc10cb9d5d4a024acL } },
|
|
/* 10 << 182 */
|
|
{ { 0x4520be6b8eddc97bL,0xeb8f2c317391f948L,0x18fcbbd772369418L,
|
|
0xb8950ee217246882L,0x6b1e4b7a382e82c2L,0x9e2bb1eb7ea4c447L },
|
|
{ 0x5202d913c3c5bc54L,0x53ea78cd21352716L,0x7bd53ffb36e6b4ecL,
|
|
0x8325bdf817387196L,0x33b2cd8af94d6a73L,0x206bdec5e13db4bcL } },
|
|
/* 11 << 182 */
|
|
{ { 0x6e27ce2609c98c86L,0x8f87ec4c958002c2L,0x00b6897064ab26edL,
|
|
0xd2b4037282e5e129L,0xbeae654c78c48327L,0xc0632b4341a54107L },
|
|
{ 0x7b1fc7f001562313L,0x01cd1b5c1fd6a56cL,0xa199a69835e71626L,
|
|
0xb02b2692635fbcffL,0x1c0c4200a0632386L,0x637164f8d6c670e7L } },
|
|
/* 12 << 182 */
|
|
{ { 0x2c47010d18e30ee3L,0xb7d4b1dbfdd5f040L,0x5c8abe509d930f6dL,
|
|
0x6bcf875d5f56cf04L,0x1f6456c0062f1fc1L,0xc79597805304d710L },
|
|
{ 0xd76452e4db85dcecL,0xd531f73fa0cbf90cL,0xb5ae9fc89021bde6L,
|
|
0x505c6b9f4babfae0L,0x99d943c17ea61fd6L,0x6ef4766159bf125aL } },
|
|
/* 13 << 182 */
|
|
{ { 0x3a48020daa0b0a5dL,0x4a32d4d658bad0dfL,0xe013dbde2e4340ecL,
|
|
0x99efac69a5fc51f3L,0x26acf7a669ee64c6L,0x36672d6566fdc9f2L },
|
|
{ 0x77426caedcb879feL,0x0166194676e3be96L,0xb6fe4709b2dac331L,
|
|
0x1f3d8a63678ff3ebL,0x711c0ea447bd5865L,0x5fbe38e87c080adeL } },
|
|
/* 14 << 182 */
|
|
{ { 0xd0891b2df4e61379L,0xea2c7ceb9941c391L,0x1441a2d099677e8aL,
|
|
0xc29d88c8abcb3669L,0xecb1a21a06ce9bd9L,0x0663fa7cf5b11fc6L },
|
|
{ 0x440a5a1c0c44c2c8L,0x08d71bc39fdded3cL,0x62b53ca512d33d2eL,
|
|
0x3fb8640e005e8adfL,0x2a9acaefaa2673a5L,0x356ae6f6695f8448L } },
|
|
/* 15 << 182 */
|
|
{ { 0xcf3c9b318496d935L,0x7e849aff8ceefc78L,0xfc06a46e7a5d692dL,
|
|
0x87248699e89463afL,0x4dc55e5e8e17af3cL,0x3378832fe41ec54cL },
|
|
{ 0x7578d6192816f87dL,0x505845612806d3cdL,0x7354f1022754c3d7L,
|
|
0x61ca6cac08d64863L,0xecde4969eb9954ecL,0xe0c211b4a1a5dae0L } },
|
|
/* 16 << 182 */
|
|
{ { 0xbd10b8bffb787270L,0x4f0b1566e43aaab6L,0x9a18be5ec0c90781L,
|
|
0x3677f4c71ad167ceL,0xccb254e2a68c1c56L,0x392493e6e2c4d275L },
|
|
{ 0x44958cb1d5b63617L,0x178f141a4caa4e7cL,0x7445a767a2ffdbd5L,
|
|
0x0e789c99b0b6c22dL,0x3ff8b6565dc92b2eL,0x1623e5c3eca98782L } },
|
|
/* 17 << 182 */
|
|
{ { 0xcb013ff62c5c50daL,0x5e5550b70b256dd6L,0x38249ee1bfd47036L,
|
|
0x984daee275379fbfL,0xfb35304588c6bc7fL,0x32379c955f9683aeL },
|
|
{ 0xbcb4ac531b5a8626L,0x1057d2a3bbaa0deaL,0x114ef8a7ffa8efb7L,
|
|
0x553a34566da90cbaL,0xa2ced0b21a365fe6L,0xcec4d64bb1ccdb57L } },
|
|
/* 18 << 182 */
|
|
{ { 0xe0312b66b81fe0eeL,0x11e0493b892c7b21L,0xb6a1d76e624ce73bL,
|
|
0x38768ec0cd75cb6aL,0x425b091f2032c271L,0xa88d39f55b5d8338L },
|
|
{ 0x1496b9ed1916be43L,0x14468e3054549f3cL,0xd429c2c47248e206L,
|
|
0x21a1c212fc9e892aL,0x0feb5822640c984dL,0x0cabfb472b7c0c66L } },
|
|
/* 19 << 182 */
|
|
{ { 0xcda1c4cd1cc5a20fL,0x33d66a893f67814bL,0xbba50d5360ce82edL,
|
|
0x9d34dc4d70553a53L,0xc926f498a8a1442fL,0x9dfe3cbccbb43feaL },
|
|
{ 0xd25887434fd3e4efL,0x7443a9a9a371d894L,0xb53e6afaa22bb4f9L,
|
|
0xcef3fa347dfc9da4L,0xd079ded047403836L,0xc6c97c36d39aa93bL } },
|
|
/* 20 << 182 */
|
|
{ { 0x6618fcae534f6370L,0x1635580da1a864a2L,0x90ad39947d7ce552L,
|
|
0xbf8c45895257f24bL,0x5a9499202098768cL,0xec1eb621bb6d8830L },
|
|
{ 0xfae8f161f1f9ac16L,0xfc9184ca35704c99L,0xa72b1ea9139ea04fL,
|
|
0x82229a912e39e1d8L,0x4153bf3e479c7bc2L,0x83325be4c5541825L } },
|
|
/* 21 << 182 */
|
|
{ { 0x358a91badbea81d1L,0x4d1947d7c669c7a9L,0x4ca6d8f18eedbfcaL,
|
|
0xf9eda237069b3b93L,0x9e1217e5a35ea963L,0xb7e16f08ab960c77L },
|
|
{ 0xf440d825fb313db7L,0x804c5262101c5424L,0xd236a0edab3c4f7aL,
|
|
0xf8bdb2b1c2682459L,0xfaa7aacaf46c4d70L,0xcf6ce4adae83dd7cL } },
|
|
/* 22 << 182 */
|
|
{ { 0x2c7756bcbd452842L,0x2c47593cd1783fd8L,0xa4f41583a7527697L,
|
|
0x2fddafbbd1049934L,0xc087f3db6c71063fL,0x8f5a85c4c9b3ef6cL },
|
|
{ 0xbe178bc966a975d0L,0x2e2d825b94066514L,0x061dd919e0d42ba4L,
|
|
0x964fdcfb227ca011L,0xcb915b2973d7ba7aL,0xaa7f2fa72af8338aL } },
|
|
/* 23 << 182 */
|
|
{ { 0xbdbb3440734e8984L,0x8b9b7acb3d6f547aL,0xfc4f48ea0e76a07cL,
|
|
0x49758a9f97da0c23L,0x13f4254a26958261L,0xdf1fdca2adb3ef57L },
|
|
{ 0xfafba40d699460e6L,0x71b2de39cd5c94c4L,0x52d76b76c21cdf0eL,
|
|
0xbe75960760f3dfa3L,0x519d4fcb7078f5e0L,0x4bd8ca7f5191e1b3L } },
|
|
/* 24 << 182 */
|
|
{ { 0xfadf9be978207cefL,0x97d5ba569cb5718eL,0xcbad24ec2f995393L,
|
|
0x6236a26861203303L,0xe4bafc336589a4beL,0x6cba77185e23fa82L },
|
|
{ 0x8ccbc5774583e65aL,0xe5d88bca4bc2f415L,0xe6bc2d5841df8dd1L,
|
|
0xec24e1d914d31fcdL,0xacaaf13efc26010bL,0x7e1da447e01b92f3L } },
|
|
/* 25 << 182 */
|
|
{ { 0x2b3477ec1a29de39L,0x30a5c2190a8720eaL,0xf593ec729775bad0L,
|
|
0xaaf607792af7dbbeL,0xaace90d4c7cc7b59L,0x6eadf21d40509cf4L },
|
|
{ 0xb9a5f138096d00fcL,0x3896d42625b206a0L,0x0f28f0f09dcaa5dcL,
|
|
0x2ef6f9f9a8186106L,0xd212710fe25b4d04L,0x0cc6d2878b9847b2L } },
|
|
/* 26 << 182 */
|
|
{ { 0xe7407327cdfb2baeL,0x06745198510c3039L,0x8a913ba74da758e9L,
|
|
0xc882e7bb1a4797abL,0x0f0d8eb5dd7b375dL,0x90ac5223dcff3f3fL },
|
|
{ 0x8443b7cabbe341a3L,0xa7cba7f22f173bbcL,0x04669ff830e5c327L,
|
|
0x0edd0eac09b777fcL,0x2a70898bd71e0cb2L,0x881c48929bd983bfL } },
|
|
/* 27 << 182 */
|
|
{ { 0xe4847c654e7603f4L,0x826cd33c0bbea366L,0x95727caf2c4ced28L,
|
|
0x580313dedb8ac1e8L,0x6745673701363cb0L,0x540c35ec0ff13cc9L },
|
|
{ 0x878c86fe3c4fc263L,0x4d81f8aed14e7c78L,0x6f7cf97e8355ef22L,
|
|
0xa2aadbc848a0aef8L,0xe0200ecf4fc3c61bL,0x7e58e6e0c8094ab1L } },
|
|
/* 28 << 182 */
|
|
{ { 0xc52789bbf2d3bdc6L,0xd38673fc3b23d7a0L,0x8b6df95aacafbbfaL,
|
|
0x37afdcbdc7f6eb6dL,0x57775bdd6cb4c9d7L,0xc34e5a2711007453L },
|
|
{ 0x903e5ba1b5faf98eL,0x811e142a9d4a8a45L,0x046d18932d7ac9e4L,
|
|
0xe2fe9d1543ce66a8L,0x44b5beb4d4956410L,0x7c5f1b9ebb147f72L } },
|
|
/* 29 << 182 */
|
|
{ { 0xd51033f48312b074L,0xc98fe29456f898d7L,0xa8d6433be8eeebbaL,
|
|
0x50bf170976fdbb84L,0xdd95f89d43c14baeL,0x13f9c7366307bca5L },
|
|
{ 0x3cd12e2855e7bc8fL,0xe2d7482c3a52581cL,0x12a2c6c7b59eeb8cL,
|
|
0xf98f79124ae87ffcL,0x41eb808e80d7bf65L,0x589970f2015e20adL } },
|
|
/* 30 << 182 */
|
|
{ { 0x200a764a6333b070L,0xa0acd8ecdf0d20d7L,0xbc1c589953269941L,
|
|
0xed7c9192b439eca8L,0x057c50eeb789f0cdL,0x31dc2d36a9c794a3L },
|
|
{ 0xe3f2d38dd58ef984L,0xdb250da69235b084L,0xc2ff1b49da05b500L,
|
|
0xf2ea6cc50387c539L,0x8250353a3d1004cfL,0x69103201aed0bf97L } },
|
|
/* 31 << 182 */
|
|
{ { 0x495cd7fc878e97f8L,0x6397fa8b61120b1dL,0x20b9afddc8708907L,
|
|
0x84f55bb97be2ee80L,0x996fcb9d8d075b5dL,0x2e94d95ead858627L },
|
|
{ 0xf786143e77113ebaL,0x6fec684f7b3fdb28L,0x4be44fb211d10d07L,
|
|
0x4b3478e2372f16b6L,0xec8d61614697ca58L,0x097d241c3a45f335L } },
|
|
/* 32 << 182 */
|
|
{ { 0x6f6a6104899ef333L,0x95496f6d39067165L,0x42fd9a6ab51989e5L,
|
|
0x1b60ce0f68f5b168L,0x97324d8756f7fe67L,0x443812f7676815a8L },
|
|
{ 0x265ee994685a7260L,0x342c7b2f6c6515f0L,0xe909232334b4adb0L,
|
|
0xddcd233e1e5a8d18L,0x3dc5b27c5f4f6456L,0x9664533a7f421d9bL } },
|
|
/* 33 << 182 */
|
|
{ { 0xa55e8ab09a35f4aeL,0xf908fb35ebbadf5dL,0xf885d61b35fee31aL,
|
|
0xb8047f4f82728fdbL,0xa6fe454d33c5bc34L,0xdc5266332ef52e54L },
|
|
{ 0xb2f524a931581251L,0xb9eeec91aba760f4L,0xa95d396624a9b423L,
|
|
0xfd52f4d29d3d75acL,0x82719e78834d4c33L,0xeeca71fb3840ca62L } },
|
|
/* 34 << 182 */
|
|
{ { 0x984658940f4c60e0L,0x3929d4c645ce7c0cL,0x7846d6c19c4f9b89L,
|
|
0x2c38a9b20fbc695bL,0xeeb4799ad73d4bb2L,0x7c16e5ba4e3b5520L },
|
|
{ 0x11ce92e51cf310d2L,0x0910dcc91e037725L,0x159fcef85fc5af9fL,
|
|
0x4944f8ee1dcb3ca5L,0xf5d9f8c0b9a4516fL,0x452f0fa2f1cfa6e0L } },
|
|
/* 35 << 182 */
|
|
{ { 0x59b15b61c634aab2L,0xcca0742a620df0b6L,0x791d95720d345276L,
|
|
0xb775b790cd3854baL,0x944e591a256c26fbL,0xc5fda2d0b8fe17d9L },
|
|
{ 0x7dba5830c0aff69dL,0x46f7164b0f7c6d60L,0xd767cd58549eeb83L,
|
|
0x4498b4f51ff2da7cL,0xeef2caf8fc594b0eL,0x88dc39ec5f0a95b1L } },
|
|
/* 36 << 182 */
|
|
{ { 0x1a57d3e1b3fe597eL,0x1a3ad06d18d1b6f0L,0xf70f27b32e4a4617L,
|
|
0x55e8a0479a75b4adL,0x0b24d5beede15d86L,0x2b3c41d0fb2f56b5L },
|
|
{ 0xf6cf36aab1d36456L,0x418a72fe1d8ff434L,0x64149a0d156746bbL,
|
|
0xae65897c4e3a26d6L,0xb75e87d21e68eefdL,0x5b81e0b01cb27c91L } },
|
|
/* 37 << 182 */
|
|
{ { 0x2c3fa19b34b90671L,0x369c9e9aa7c9aae3L,0xd89dc03f3d236ad0L,
|
|
0x280c47b9588ace95L,0x0ad071be57f25a96L,0x36ce641d8296279cL },
|
|
{ 0x321778128595511dL,0x51878842b52cb227L,0x720df7ab4156b413L,
|
|
0xccc71e10fed25819L,0xc878554e3fde679bL,0x9c50ecbe3b565d48L } },
|
|
/* 38 << 182 */
|
|
{ { 0xb2d66f1ffe23ba35L,0x82339e2914b273a4L,0x454a5f0b58c2be97L,
|
|
0x0ebadaa68488ac1fL,0x3c635442517e9af1L,0xa87044c3a5b9fe2bL },
|
|
{ 0xb8214dbdb505ae0bL,0x05a9bfad60bf4393L,0xb7b64b42428a49ceL,
|
|
0xcad71866bd2283f1L,0x5bcfe7fce33a3a22L,0x018a2121fd6c73c3L } },
|
|
/* 39 << 182 */
|
|
{ { 0xc4471fb02510a1c7L,0x542e73bd2c1c35c1L,0x0bc8bcc4f028a46aL,
|
|
0xdf87cd2bb5610f25L,0x0845e4d1df42b41fL,0xc0523e3593aba84dL },
|
|
{ 0xc9161e8ed14887b0L,0xa96f9b3aa68c235dL,0xba1427a46f94d5b5L,
|
|
0x6a5fdbbc858e00f3L,0x8170bad6abfaf661L,0xb4b9dc0ec9f4abedL } },
|
|
/* 40 << 182 */
|
|
{ { 0xc48bc829ff7543c0L,0xc0bda14c4d72bfaaL,0x2f470ec703be0af1L,
|
|
0xc70f1e8e92d37eb4L,0x08abdd98418f410fL,0xe38c74ab35386176L },
|
|
{ 0x9c07cfdd8c00426cL,0xba74c310a998f1adL,0x76b45140b7d2dda8L,
|
|
0xa52b5e584948330eL,0x9b7332348d8efb26L,0x5d1763735d19a312L } },
|
|
/* 41 << 182 */
|
|
{ { 0x46950a441d38ade1L,0x377fdf593058c7a2L,0x5e2fa1681aa129f6L,
|
|
0x2eae63dbc5fe1745L,0x9616fee275545475L,0x4073a79c8627b2cbL },
|
|
{ 0xf1ec69ea9a5198e4L,0xe9a906aebd2821d5L,0x193a9387bc22625bL,
|
|
0xca468d717b6c67ccL,0xb4d11cb360f17a73L,0xcd801a0e3df1cabbL } },
|
|
/* 42 << 182 */
|
|
{ { 0x1b80b9c386cf5a12L,0xa5bcd3a016349cfdL,0xcee36e8f00d1edb5L,
|
|
0x9566e10a5b7bf29bL,0xd0db98cfd4ff0a0cL,0xb516605e7fe427d0L },
|
|
{ 0x099066c18e614e25L,0x63537fbbabe78647L,0x5601a8b420117e1aL,
|
|
0xfd125e2f06df05acL,0xa7fcbd420948daeaL,0x55ad4ee28ff03220L } },
|
|
/* 43 << 182 */
|
|
{ { 0x18d71671da2c6332L,0xb38bf94f98ee4e23L,0x9b90bf72ecc579e8L,
|
|
0x5af93aab1bf6b8c5L,0xdad6e7909342613eL,0x5a1d49dc710ad0ccL },
|
|
{ 0x2013ed8801468036L,0xb8bd31cf2f0f6f9fL,0xf025eb2aaac961a6L,
|
|
0x1e201f659e1adb43L,0x2755f3aeac7e5132L,0x72d8e1d0f5205d31L } },
|
|
/* 44 << 182 */
|
|
{ { 0x80bba9170319fec4L,0x4ba44600aaef6debL,0x83285b613594f325L,
|
|
0x8879183753b5765aL,0x651b4c6adaf1b02dL,0xccc17578825f609aL },
|
|
{ 0x0b4076b39fddc6ffL,0x286e2daddf2fa874L,0x46c45233c413b648L,
|
|
0x4fa46969b7cfe0abL,0x835786f3e04f5e5bL,0x526292a90ce3f707L } },
|
|
/* 45 << 182 */
|
|
{ { 0x9928e9eb83f17723L,0xc38d5de26c2306aaL,0x3dd3f371558b3989L,
|
|
0xfa4b194877154d39L,0x89f437e4b89f5448L,0xd5531444a6437c9bL },
|
|
{ 0x65a6874092537cd4L,0x5f6d72281246fb09L,0x0db0b3be58539e37L,
|
|
0x1f0dd43df50f4143L,0x1aa12daec215aab3L,0xf82820fb7fe7b225L } },
|
|
/* 46 << 182 */
|
|
{ { 0x32c6bf5e56cb520dL,0x74dc46c41569fa1aL,0xcbee46391ba52541L,
|
|
0x5e2f511a50ec4575L,0x90165e35032b6f53L,0x2b8f1f8a5544c780L },
|
|
{ 0x95baef65c6b50147L,0x4e9db41946b7fde6L,0xe2463226f7afa6feL,
|
|
0x4d70932235409eb4L,0x8faad8937c20aa0aL,0xc8c95a85abc1ab65L } },
|
|
/* 47 << 182 */
|
|
{ { 0xd5f54ce676d1f996L,0x55957500e595a0eaL,0x9b62e1fd92c72af4L,
|
|
0xb4803bc3069bf052L,0xb7cdf59c686ebd16L,0x2d1fa780655ac6d2L },
|
|
{ 0x6c306d3edca404f5L,0x24e9d7a9a7b5fa9aL,0xe4c080ddc533c701L,
|
|
0x71d16b63425e29e3L,0x81c00db32d993e49L,0xb59f87f577902ecaL } },
|
|
/* 48 << 182 */
|
|
{ { 0x43b58def987cf64aL,0xc95b16c63d4bcd4eL,0x5d1b1373bcd9b923L,
|
|
0xaf560542522e052bL,0xc2ff8f7583800352L,0x11723aa17fe2a4eaL },
|
|
{ 0x28de7668e94bd9bdL,0x0ce80e0f874018a5L,0x0fe3755d8d43e726L,
|
|
0xa78296acf9b075c5L,0x76d58d9882207423L,0x5c5bc6971db99205L } },
|
|
/* 49 << 182 */
|
|
{ { 0x9cbecc969e2aea70L,0x1a3fd38d7e4f2a84L,0xdc35e3c84b95e560L,
|
|
0xd5e912a5aa21d2e2L,0x037866628d8cd601L,0x4b726855f2bb35e6L },
|
|
{ 0xa45a827a0d763ea2L,0x17d6e5ea057bceecL,0xdab2381d09a2a2a0L,
|
|
0xf1880617e9aa76dbL,0xb86444dbb184c5ecL,0x23a0e4b767da7c23L } },
|
|
/* 50 << 182 */
|
|
{ { 0x2d94a6f030df736bL,0xd1ce20050b3be2bdL,0x201352b55e288cc1L,
|
|
0xdbd3dc57779644a7L,0x9f258b16d191db2bL,0xd83c827fd1c123efL },
|
|
{ 0x74c5126e17f04f0aL,0x06008f14966e620fL,0xa4406ba80aaa9e37L,
|
|
0x27323f797faf87eeL,0x43380a672b1206a1L,0xab1ed1cfaf15ebedL } },
|
|
/* 51 << 182 */
|
|
{ { 0xa3d2bad9bb22cc74L,0xfe6591a80e2b9221L,0x8c94c974d3cb4eefL,
|
|
0x772694266beb6451L,0x2942737a010986e4L,0x920c9dda59c1ace3L },
|
|
{ 0xd31af336da61e1d3L,0x973997a118021018L,0x50a6c8425710575dL,
|
|
0xd61d47c9ade9d8a0L,0x90abe8f8a85f458fL,0x23cc28a3ac4d474bL } },
|
|
/* 52 << 182 */
|
|
{ { 0x283d5bb63e052e69L,0x149ac3d01bd300e4L,0xb4c7b96ce0582ccaL,
|
|
0x66102883428cb7d7L,0xd3eea16b500958dfL,0xe1b6a74f74674893L },
|
|
{ 0xe3b284be3fb0522bL,0x74b0fe2dea983a60L,0xd4328e5c81e465d8L,
|
|
0xecb534c7403173b3L,0x1721e22774144d34L,0xb7273c6aa88a5141L } },
|
|
/* 53 << 182 */
|
|
{ { 0x0ea24ac64018877dL,0x265cbfe42acf249aL,0x811c17e61837d63aL,
|
|
0xff453f5d6b3adf1aL,0x7add0621a3031529L,0x62105dc838af1d27L },
|
|
{ 0x2cd31a899b56ec62L,0x5f524be5ede7bbceL,0xc485b2ff66a044f5L,
|
|
0xae28f5dc87a7b274L,0xd41989a93415b6c5L,0x3051ca44c9c43ad1L } },
|
|
/* 54 << 182 */
|
|
{ { 0xc22046bcfb50bf2eL,0xee22fb7b78f7c548L,0x5c41c6bc2b5b4563L,
|
|
0x56da674a8bf9259cL,0x3732f77433d8d4c7L,0xa90bf0472741046aL },
|
|
{ 0x5ee7f4396288c2e0L,0xa7a1fec99ae621c6L,0x523c0569b76e955cL,
|
|
0xda0c2b378d1e8601L,0x9010bc349559b56dL,0x8d2fab0917b8d9b8L } },
|
|
/* 55 << 182 */
|
|
{ { 0xb2caf938281b021cL,0xc61f3abf1404b0abL,0x24203e1cea26d902L,
|
|
0xc84f07e10d34906fL,0x8ba3d589f0cf7520L,0x86b54f6d9a2a90caL },
|
|
{ 0x9f87234f3d77a667L,0x328941966e3fa8d0L,0x0921b4a6e994d49aL,
|
|
0xe77e9f8b8b3495cbL,0x9e5b74798da1fe56L,0xcbc09ce7b070591eL } },
|
|
/* 56 << 182 */
|
|
{ { 0x583ee7dfe3b7e746L,0x0b6659e4a4fab3a8L,0x34ee02751946db5dL,
|
|
0x5ae3c0ba1a12eecaL,0x36756ed44ccb83e7L,0x973b0861a80eaf3aL },
|
|
{ 0x969e38f46982ca90L,0x9a9bcd10018d01fcL,0xb540e9533272476aL,
|
|
0xcf91dd0a75ab7002L,0x2c7d363f39ceb983L,0x4369c221974747c7L } },
|
|
/* 57 << 182 */
|
|
{ { 0x32c5b289642be172L,0xe5cc452e697e6a30L,0x344935e10aa6841fL,
|
|
0x9eb2dc4faad907a7L,0xaf77d029e121d0c0L,0x2bcddeb08bb073b8L },
|
|
{ 0x3584dee5e40653fdL,0xe853b6337605f214L,0x4723f0add4bab900L,
|
|
0x16dddd27fbf91322L,0x1f96d7e610c525b2L,0xdfba535200c998abL } },
|
|
/* 58 << 182 */
|
|
{ { 0x701e8ab819df9ed7L,0x1a6d74c13e2159d1L,0xe82127e0fc61a470L,
|
|
0xaa2e5f33dd15316fL,0x92b6ea927c42c081L,0xfd470a298522aef4L },
|
|
{ 0x0c54a067e5ccf152L,0x60c113eda1a079b5L,0xdd501a8389d6e6b9L,
|
|
0x3dbf20d219792456L,0x633cd2b710bf70edL,0xace5327a0aa8e5e8L } },
|
|
/* 59 << 182 */
|
|
{ { 0xed79a2de3b2a8a4aL,0x02851125cbf095c4L,0x6817ecd1880fd3bbL,
|
|
0x72acb6ff066adfe0L,0x04fd696d66ce8257L,0xb644f098dc81958fL },
|
|
{ 0xcab55d1525218005L,0x1184b0a64de70465L,0x6248e1157aa96b53L,
|
|
0xe30958630516ac32L,0x19f80cc0d07084ceL,0xfdf7ca2efde86c28L } },
|
|
/* 60 << 182 */
|
|
{ { 0x9a8857568bc1783eL,0xb373e5a0a7cf2ee3L,0xdeb162fde46cc503L,
|
|
0xd5d334601074ef35L,0x0030f98eea159a90L,0xc5ffbdde64e50d98L },
|
|
{ 0x85a6486a48195b26L,0xdbf56597b1b9f2d6L,0x5df2352ab8613aebL,
|
|
0xc425807ebd0189a9L,0xcf5a34d4fa1f4f7bL,0x233e26c7628fd2ceL } },
|
|
/* 61 << 182 */
|
|
{ { 0x6c4dd28313a1e482L,0x24bfc23bf803f1ceL,0xb8e795b2f426832fL,
|
|
0x636d2d63b13fcb5fL,0x2dbca0b214a508ecL,0x1948c957c1ff2b70L },
|
|
{ 0xc9d7cd4ae3135c7aL,0x1bf41de75d7cfe18L,0xfff9428f2f6cd5fbL,
|
|
0xa25d3e8294d640edL,0xecdea1583e4fec66L,0xff3b2b1555530798L } },
|
|
/* 62 << 182 */
|
|
{ { 0x483565313178cbc6L,0x085a31143f3a1ff0L,0xee2a58b11dc7054eL,
|
|
0xa9ce7c113287d5e6L,0xd283d22c8fa263a1L,0x9160bb8be77ff147L },
|
|
{ 0x21dabddf918caf34L,0x6921e987ad1a9f13L,0x47e45c7d3ba0ad41L,
|
|
0xeaac63192bd18585L,0xb88881060818034aL,0x2d8e9c1b60be0a45L } },
|
|
/* 63 << 182 */
|
|
{ { 0xad3e46af32f4625aL,0x5c2f95dd88371d5fL,0xfc7a9adef2415ac6L,
|
|
0x77a23c424ad85440L,0xce7c63712f4dd730L,0xd65bdc45a5c9f380L },
|
|
{ 0x763d3990cf11ee6eL,0x7b2a927a9ffc522aL,0x65ccf351deead5c5L,
|
|
0xef1fa99cce4d076bL,0xdb6f5cca6708ba8fL,0x361525a0f3bac7ffL } },
|
|
/* 64 << 182 */
|
|
{ { 0xbfc40c30f893a2caL,0xdf96980e0623bad1L,0x4fd7b54dc027511cL,
|
|
0xf4799284cf3484ceL,0x655ab811069beea5L,0x52588bc87392e280L },
|
|
{ 0x522e7b404f0c17cbL,0xc0d88acac705e9b2L,0x9cf1b95877f3913fL,
|
|
0x3e06b9267dd52514L,0x992e920e2908cbcaL,0x13baced26d6ed529L } },
|
|
/* 0 << 189 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 189 */
|
|
{ { 0x8a46c911bfc6c637L,0x8dc3d699e4fa4fe6L,0xd4ba64f15cf8e4c9L,
|
|
0x01b3908a01cb3488L,0x69b1fa5d38bd7dedL,0x92ad483818b2eae1L },
|
|
{ 0x619324beb33955b6L,0xc7f373355c8a6df7L,0xa397f42e925b3f69L,
|
|
0x32169a495f7e4d11L,0xc0fa9a548d0d9f01L,0xf52a1f2289d8f2e5L } },
|
|
/* 2 << 189 */
|
|
{ { 0x9c0d5231ba8e0a52L,0x94d0509e93e465d7L,0x67df90dd98515454L,
|
|
0x223e8b9c8dbfb46aL,0xf39529a36d757ce3L,0xffec9175b4648296L },
|
|
{ 0x330749e8f78aae7bL,0x19e5549645f93cc3L,0x8c320b3494083aa8L,
|
|
0x1161f5a321e321c6L,0x0980deedde3e7892L,0x605aa9196ad76cccL } },
|
|
/* 3 << 189 */
|
|
{ { 0x71191262062312e3L,0x84c82a94691f46faL,0xad4b344bdda57f44L,
|
|
0x674b758ac4f0cfd2L,0x3bc058a077543efdL,0x3d7c765756618d06L },
|
|
{ 0x95107c744dba9e44L,0xe59c3180cfdf1923L,0x5dbeaf35e3f1d63cL,
|
|
0x012029c643ab8726L,0x4f588a4ea256c6fdL,0x14a01b7a3e5d2e30L } },
|
|
/* 4 << 189 */
|
|
{ { 0x73fa3508180660f7L,0x4cae013e2d24936fL,0xf64a549f58493d98L,
|
|
0xd9ceae0adc79f602L,0x6569e37bd1512b84L,0x11e4c022151c9151L },
|
|
{ 0x075678c2b55c5813L,0xb26cdb5809d3cb16L,0x6334dca3a57fb969L,
|
|
0x0ed90820223dc3ceL,0x74f9c3aebd11e277L,0xaeefed3679c0b8e2L } },
|
|
/* 5 << 189 */
|
|
{ { 0x22195e48e57ac6a0L,0xba77c58214bd1913L,0x265f96b4323349b5L,
|
|
0xc183196ea124d497L,0x99f1f78d2466d82eL,0x185a18bfc6263afcL },
|
|
{ 0x29a3d5b686cf8908L,0x81f3bc00f680511dL,0x5f6ffc81661d015aL,
|
|
0x31c2ff64cd5eb082L,0xc3c37ad672776042L,0x49438769d9c6ac75L } },
|
|
/* 6 << 189 */
|
|
{ { 0x0e2fc74c2a24c385L,0x836a474034679278L,0x25518f16817e2c41L,
|
|
0x8b573a8eb4b7d3c1L,0x012797f94ab56adfL,0x9e0e56d0fa2ab690L },
|
|
{ 0x009ba1ee1c9f6f08L,0x8ebf4aac2f412e9eL,0xb143122a1cfb4e02L,
|
|
0x988cf0eccbf2b783L,0x44a7ed9657f5be97L,0xbdcad87251804147L } },
|
|
/* 7 << 189 */
|
|
{ { 0x969fcd982f60d1a0L,0xf0f4c9b2ef06b3ebL,0x8c6438cb49ec8f92L,
|
|
0x746107773f1653daL,0xf7cbc899b574576aL,0x758de9008494795cL },
|
|
{ 0x73045065ab22cf9fL,0x9893653c9ff13e98L,0x6e8860264a58d64dL,
|
|
0x387d6cc34e3bf554L,0x82a49da4a42b0008L,0xb28bd9b71b0b1c47L } },
|
|
/* 8 << 189 */
|
|
{ { 0x378205de2f9fbe67L,0xc4afcb837f728e44L,0xdbcec06c682e00f1L,
|
|
0xf2a145c3114d5423L,0xa01d98747a52463eL,0xfc0935b17d717b0aL },
|
|
{ 0x9653bc4fd4d01f95L,0x9aa83ea89560ad34L,0xf77943dcaf8e3f3fL,
|
|
0x70774a10e86fe16eL,0x6b62e6f1bf9ffdcfL,0x8a72f39e588745c9L } },
|
|
/* 9 << 189 */
|
|
{ { 0x97e6400574103b65L,0xdad518d6db50ac66L,0xaf96065961077d1bL,
|
|
0x1335de0a5baab1f5L,0xd404db749e444a1cL,0xd3124c5027d5fe2fL },
|
|
{ 0x1f20c68a0bd49e9dL,0x44405e6aad6a1654L,0x287d565193c362a9L,
|
|
0x301ec6a2e76661bfL,0x4900f9b54c6f9927L,0xca3dbc3464bf3909L } },
|
|
/* 10 << 189 */
|
|
{ { 0xa96955b9b1bafbc4L,0x8dcb55a7646ece39L,0x2b62784feb00e541L,
|
|
0x462f9d7d2693249bL,0x8b264697794c189dL,0xded6ff5563354e69L },
|
|
{ 0x7c8ea441eed1089fL,0xe355f75c1462f461L,0x87b691f61210fd5bL,
|
|
0x7291bffb6983cb27L,0x9ed83afc92800095L,0x307a3dc81f24d923L } },
|
|
/* 11 << 189 */
|
|
{ { 0x9f79814a45faaa0cL,0xc64a7ac93bb1b07eL,0xaad6ff897f2ad506L,
|
|
0x43da948300b83699L,0x6a702b8d6617956dL,0xfcb1035a7981052bL },
|
|
{ 0x094acd48cb230926L,0x3c3249d05da96800L,0x934088079d7208c8L,
|
|
0xe4f04014d738a48dL,0x49bc5f0bf18b06c2L,0xf854285f596b9befL } },
|
|
/* 12 << 189 */
|
|
{ { 0x7cec60ead7804b2fL,0x0064464345c11441L,0x3c6de88b769cd685L,
|
|
0x34709186c7f01232L,0xd9eef41eedd2bd0dL,0x3bafcccde427faa9L },
|
|
{ 0x33e5350ec07e701aL,0x9cb2eb47a87c1fd1L,0x9fa9a7790d5f5b28L,
|
|
0xa2e7076b07ea2e53L,0x72f4da325c169cf4L,0xb7f192947e751588L } },
|
|
/* 13 << 189 */
|
|
{ { 0x1a3b217d2f6d700dL,0xcbbe9349ed335d55L,0x428adbfb53ff169aL,
|
|
0xbd74385214793b47L,0x2224e2569d9460a2L,0x8408600809982ac0L },
|
|
{ 0xae6c6f9934447242L,0x63c78b2b9b51fb67L,0x381c948a389593d4L,
|
|
0xf4cdd09f6e79ee72L,0xc658428ba185a0b6L,0xcd7562a786fe4c6fL } },
|
|
/* 14 << 189 */
|
|
{ { 0x47eb133532dd7a30L,0x9d058169a9db654dL,0x375c59df6e7a2b1aL,
|
|
0x55d37c677a35f29fL,0xc78a3678493c4cdeL,0xe5f0e2d68d83e31bL },
|
|
{ 0xf7927002e9777bf9L,0xdd559324a5afdfc7L,0x077c6c48b81c08ccL,
|
|
0xba1c98ccaa2ef694L,0x06c6c9544c02dd46L,0x211e50f37dd3145eL } },
|
|
/* 15 << 189 */
|
|
{ { 0x7f985fa8a96aea53L,0x811f94dc480b38d4L,0x91fdd510f3d40c68L,
|
|
0xc156312ccd763693L,0x24b544c3640057dbL,0xd7d5d4f5ad3b5a1bL },
|
|
{ 0x5e235a1e26cda8a4L,0x0cf7b7cd1d2c6f17L,0x17b1ccf0908d3107L,
|
|
0xf32f2a06f555eb5cL,0x274f7c2cb3c278c6L,0xcf1eaf296af1b44dL } },
|
|
/* 16 << 189 */
|
|
{ { 0x2a5f8ecf06616d0dL,0xca9b1cb8c7deb373L,0x9de31cedc59c4301L,
|
|
0x1e0f40b10111d998L,0xd29d229f960d5b95L,0x10563249d1dabab8L },
|
|
{ 0x7b225cc9a05ecac9L,0xb02e689678f3b8a0L,0x009b52a1f5fb06b2L,
|
|
0x8a575d3f842b9081L,0xfddb48afe9272512L,0xd39b8f1d0b452cb7L } },
|
|
/* 17 << 189 */
|
|
{ { 0xb6efc7e167ba9cd3L,0x5a642c288e4f62a6L,0x214a63da364378edL,
|
|
0x582c59944121c53cL,0x840277facc9a728fL,0xc6db3529f8f72d39L },
|
|
{ 0x9c5cc2760aca9955L,0x8558a58db8b6dcd6L,0x709226acf0701f24L,
|
|
0x6ce95b21ed248b40L,0x32ea565b5487934aL,0xa75a688496f9ddd1L } },
|
|
/* 18 << 189 */
|
|
{ { 0x0d6b9c7c67e09987L,0x261a564d0761ad52L,0xec4621749f60925bL,
|
|
0x83ee0c1218529b03L,0x72972467fbcfff74L,0x37fc074c6abc4bfbL },
|
|
{ 0x8b6015bd54e65e89L,0xde8583eb991583cbL,0x379548e1b4d2c62aL,
|
|
0x88024a9a9b24a5e5L,0x633aa869fc03abfcL,0xa27657b98fa35283L } },
|
|
/* 19 << 189 */
|
|
{ { 0xb340993c5727e344L,0x2379f51d4f3295d5L,0xa5de3efce2929734L,
|
|
0x7d2e2c82d8717e3eL,0x8f24abb67180db1fL,0xa5060d648a4ed876L },
|
|
{ 0x8d39e3a2761110d6L,0x38d30c93a3bb5b66L,0x07774ac3c12fb741L,
|
|
0x7d4ae5a55f4425beL,0xb9848a2afa704922L,0xed9ab68c4cd00812L } },
|
|
/* 20 << 189 */
|
|
{ { 0xde9703b461d9e770L,0x02d4091def4653efL,0xefd229aa576eb5e1L,
|
|
0xc0b0b243f77eb987L,0xb11309b2eefe8f71L,0xfeeacf2f68478044L },
|
|
{ 0x8dfd8e8643ac3dd7L,0xc0a24181b07f95c3L,0x551ca09624be161cL,
|
|
0x6cb2c1d4b098cdc3L,0xbfc74e9be74f84f8L,0xe58e14d9067e3388L } },
|
|
/* 21 << 189 */
|
|
{ { 0xda121aae0ef98506L,0x435f28c6328e636eL,0x64b2170a720d40a3L,
|
|
0x3ddb0e61cd24a844L,0x111442478797c7adL,0x624e7f73d589dd37L },
|
|
{ 0x3e7e0ed0a8efdd25L,0x8de031f116509a5aL,0x1330cff5873488c2L,
|
|
0xa80c60b3342ecf75L,0x9d3742c8e62550ceL,0x8ec9b229e46475f9L } },
|
|
/* 22 << 189 */
|
|
{ { 0x9eca6f94f025baa6L,0xb2db0741bcf9c741L,0xf8e2aab590bb8f56L,
|
|
0x4772903208762829L,0x067a0c5ae2a266c8L,0x22b104c771b7d7d0L },
|
|
{ 0x4a48cd6953e406dbL,0xb85e44d524f0070bL,0x6168262fe10133ffL,
|
|
0xdfc02315e4874e8fL,0x20dba2d7ca317e3bL,0x441c56d2e1d2c0c3L } },
|
|
/* 23 << 189 */
|
|
{ { 0x9ebd10d6c444a2fcL,0xda7683e3f18ac11aL,0xdd42ed990fe8e59fL,
|
|
0x9c867debee068909L,0x32df043fccc77aa3L,0x377423ce4aaa45acL },
|
|
{ 0x960940524a90c535L,0x48bfe83347d1799cL,0xe8cd1a55ccabd174L,
|
|
0x2ee0a276682145c3L,0x4249297e8d606c00L,0x22021ce2fd7af6d3L } },
|
|
/* 24 << 189 */
|
|
{ { 0xae10069e808dc4b1L,0x64df30e18fb3ba73L,0xbbe4caf27ebaad0bL,
|
|
0x5907bf373dd6119cL,0x0a723dff9dfceefeL,0x59bff4ddf7cffc7eL },
|
|
{ 0x7bc95fa26a6f43c2L,0x9001d1d53ca0e2b3L,0x316a7ecd27b3335bL,
|
|
0xbf08e6727b8d7d49L,0x4b209f93c619058fL,0x4c0ca01e59d8f9eaL } },
|
|
/* 25 << 189 */
|
|
{ { 0x3c1e7f45bad772b1L,0x20f6f1732544af67L,0x14f491f9a7d6544dL,
|
|
0x1451cc8e6acea162L,0x20c8ffa5d234ab89L,0x4b59bce1f5cd1002L },
|
|
{ 0x99da4c0ee63027acL,0x6290cb963fc1f75eL,0x3a51774524c4d85cL,
|
|
0x3bf9929c1fd144e7L,0x9bcb97467068294bL,0xcb0b3e5d2e61a022L } },
|
|
/* 26 << 189 */
|
|
{ { 0x18c452c4cae69c3bL,0xf45690acef0f00faL,0x3b363aa04f66a5ccL,
|
|
0x9dd41c0a47718c52L,0xfa219d7e7e5cd370L,0x5d384db7b2196dfbL },
|
|
{ 0x5e14749b90b4d46bL,0x55796656d9db9481L,0x3bf13d0ac8cf353eL,
|
|
0xb89a28a6a95c485aL,0x568fa3d05da29783L,0x4aa008eed182b1a4L } },
|
|
/* 27 << 189 */
|
|
{ { 0x4f38667a179639e1L,0xca492d50ba7c7a16L,0x191e4a3478fe9dcdL,
|
|
0xa3cddb2f03fc70b8L,0x57d90a90a751ec9fL,0xcf88357457a50cd6L },
|
|
{ 0x69abd86d7cc58687L,0xc73a00408466bc6cL,0xfbb99c755c495208L,
|
|
0xdd5f1ab9c13347b8L,0x9ae6fb92060b93efL,0xd6bb56a3588e5369L } },
|
|
/* 28 << 189 */
|
|
{ { 0xf7e1ed3bb09fa8f3L,0xbb4fe6f71da5be9eL,0xcbab0e01f4d1ba21L,
|
|
0xb732741076a5f326L,0xd94d2349206092afL,0x739f3cd0728e0e4dL },
|
|
{ 0x568644aaf81fd823L,0x510cff6b6110e2f6L,0xef4cf1ac566c3598L,
|
|
0x2c26f17162aae69bL,0x1e4360468964a2a5L,0x83c0bbf63e472c50L } },
|
|
/* 29 << 189 */
|
|
{ { 0xc198c07064b2955aL,0xc32d41e1d8d43284L,0xfb6f0e2c9f4fc13eL,
|
|
0xf4d5b60b41c61889L,0x5c79f500beb36946L,0x328b22408ca4beabL },
|
|
{ 0x64058e916697617eL,0x6bdf7409f43f7390L,0xf2afd208f5bd8512L,
|
|
0xc0000aa0bd1ad6d6L,0x38b8e03bd9f6c1c2L,0x0a34680d665a2d06L } },
|
|
/* 30 << 189 */
|
|
{ { 0x79c04804aabd965aL,0x9581aab443d0b660L,0x59bff0035ba71d23L,
|
|
0x212ecd58b6a0cd80L,0x29bdcd33bf1ea5d6L,0x59fd2ff477a002e1L },
|
|
{ 0x3c9d21308d9cd247L,0x790e9dbcb1786da3L,0x967ee5e714464d04L,
|
|
0xd6f7ebbd2b5373afL,0x1c0b22d539768d40L,0xdfb54983913f6cc3L } },
|
|
/* 31 << 189 */
|
|
{ { 0x5c9808b78a42e002L,0x5cdb2b070f732854L,0xdc92b1676d6d4579L,
|
|
0x789dbb8ebcc22c54L,0xd76b2d40716eb28fL,0x5cbaadea004affd8L },
|
|
{ 0x5d4d84dd08fcfe12L,0xd0f1d7ee20d4b893L,0xc98d77dfbbb90db6L,
|
|
0xbce9a5a2b1e29a22L,0x71a6835d0b54e100L,0x0199594a55b1ac68L } },
|
|
/* 32 << 189 */
|
|
{ { 0x167ec88a51b3f1ceL,0x19756ee0420024c8L,0x10f2e2443877e634L,
|
|
0x6321bf2603462cb3L,0x1dbd10ee9d3afceeL,0x0726f5f22ca17dcdL },
|
|
{ 0x094652660bacf018L,0xc92a9f2de1feb969L,0x0043b0f95e1c5912L,
|
|
0xa09b94d1757d3a63L,0x533956529fdef1e0L,0x9826886cd4fedd41L } },
|
|
/* 33 << 189 */
|
|
{ { 0xd22bcbee51964ceeL,0x3ed80af3b0eea46eL,0x263cfa026b854aafL,
|
|
0xfa4ad481b9ca3b51L,0xf8c569a0b4451297L,0xeafb78f8f48059a3L },
|
|
{ 0x86a9e3c037093acbL,0xcfb3bb63275ef52eL,0xc4672d3c7c924f03L,
|
|
0xa87350871691be3bL,0xf124f3a52be289b7L,0xf45052dc6b80b6c1L } },
|
|
/* 34 << 189 */
|
|
{ { 0x79c99f99a010db6dL,0xe83088a74ee93fc2L,0x76e8376d836b1a7dL,
|
|
0x8cab091c4e24e127L,0x5c98a00f7283cd21L,0x1beaf4a084997647L },
|
|
{ 0x2cfb55b8d934088dL,0xca24052cee724d5fL,0x5d6e9db5bba84289L,
|
|
0x133414b26fb26d72L,0x3e844eb9cb12a503L,0x5eac12dab53d6496L } },
|
|
/* 35 << 189 */
|
|
{ { 0x79a098812cc6698bL,0x6d44e7577f383e02L,0x1969f93785b5f732L,
|
|
0x3061f62792acecccL,0xa9428d60cc2a4752L,0x69a472af2cf58626L },
|
|
{ 0x63fde53cabd347d7L,0x138b5b6a1aed4fd3L,0xd93fce1f2bd48519L,
|
|
0x957fe302e49cc436L,0x9b51657a2e21ad5fL,0x3b5c4cb6acbd3af6L } },
|
|
/* 36 << 189 */
|
|
{ { 0xdcfa78b096dda000L,0x5b60dfe5be2303bdL,0x7a6bbd34c7c6ad6fL,
|
|
0xd45c9cb57012b97dL,0x9a049e36812e1662L,0x723bc0b66a5483aeL },
|
|
{ 0x7fc03b6ad1c82e81L,0x02ddd6d2b23f6818L,0xe8914b2d30dae39aL,
|
|
0xf4f0ae392f692056L,0x198a31bd45f1390eL,0x917ce4f4f542565eL } },
|
|
/* 37 << 189 */
|
|
{ { 0xde39a4e6ca447864L,0x95a028f9f0b131ccL,0xba77ac314a39c4f7L,
|
|
0x0c24d09614857939L,0xdeea56edfbfaa0fbL,0x79aa342f4c920bf1L },
|
|
{ 0x50228f48c7e9dc62L,0x0fd9d1dee0f0fba3L,0x3fc03993cd703f6bL,
|
|
0x229a3bf4c5ff39fcL,0xa7456aa484f9cb20L,0xb01bb5a7d12fd7d9L } },
|
|
/* 38 << 189 */
|
|
{ { 0xfb390be4539519d7L,0xbaa98a2a6ad44d22L,0xafd19a75ef89de1fL,
|
|
0x1afaef2971e27781L,0x18b297d79887739fL,0x8fcff6048e6da42eL },
|
|
{ 0x17bfc1717e861a36L,0x1467800537a8843bL,0x2bc47afdeb16065dL,
|
|
0xcc038e2fbab7b4fdL,0x9d8fc42a3eb9be7cL,0xfc2f0b295928da63L } },
|
|
/* 39 << 189 */
|
|
{ { 0xa4e33ca261c14fbdL,0xebafe73fc0a87f99L,0x22fdf1d1f5abf7f4L,
|
|
0xfc1da26549a6b956L,0xfd8c48e5be25dd72L,0x9fd6520ad31a25aaL },
|
|
{ 0xe0167d4ffd14dbbaL,0x8838d2ba7370153cL,0xe5f7d69b133fdda1L,
|
|
0x31acbf8de1749b60L,0xc14ec9e2107558dbL,0xb06d0252b99553acL } },
|
|
/* 40 << 189 */
|
|
{ { 0x34590975ed424438L,0x7c03ce744d11a200L,0xcc939a286ec406eeL,
|
|
0x8d214276fee5454dL,0x66a0e1a56b257f70L,0x93761a8a006fb85eL },
|
|
{ 0xc44f9df2aa70b65aL,0x1dac524f91d9e2e8L,0x5894a8224fca1a81L,
|
|
0x8586e418f3ed85bfL,0xd494dfb202899b5bL,0x7ea9f222ecb8e371L } },
|
|
/* 41 << 189 */
|
|
{ { 0xd93ee716b0958516L,0xa91f39db3eb86888L,0xb472c1e2ac92105eL,
|
|
0x4d88a307429ca094L,0xd3fd88027a8e87e1L,0x40c4cd50126a2cf2L },
|
|
{ 0x046ce3bf11cf2046L,0x412678ee05691999L,0xea0c78168d3a2921L,
|
|
0xd24ae89924f3c66eL,0x2c4457f00bd144e9L,0x82005b4fd7a52270L } },
|
|
/* 42 << 189 */
|
|
{ { 0xf1b3ec32924340e0L,0xe5430ea3b33a05abL,0xbf43b031807629b7L,
|
|
0x53c9407d57014039L,0x6e67b52f2f195ce2L,0xc8cc645f1e48d8c1L },
|
|
{ 0xf2234275c08f2122L,0x9cfe3c74c2f233e0L,0x235e6b349c4e0af9L,
|
|
0xb4e8ef5770de39d8L,0xba573a727f73d0a9L,0xe12c506a18587ed2L } },
|
|
/* 43 << 189 */
|
|
{ { 0x6b9669c59cf3e4f6L,0xa472d5dbff677559L,0xde845b0c877e5590L,
|
|
0x9f7ef5802d0e2350L,0x87ea99d4e78c1096L,0x213243e9abb68028L },
|
|
{ 0x0172c81595e71abaL,0xc2592a762ca34c65L,0x50749aee9dc286dcL,
|
|
0xe37d10884055de3eL,0x3e5a93bb90d652baL,0x0cbb7a08c32aa3e6L } },
|
|
/* 44 << 189 */
|
|
{ { 0xe0bf3d8a026c43cfL,0x091956cfeb702508L,0xfcd486c9a6b3203aL,
|
|
0x94a6d52f365460ceL,0xefeb5400563bec77L,0xbe6baa9619b2659cL },
|
|
{ 0x116f71c34bf21a00L,0x83d1c99a86d21871L,0xff1ba96aca0bd547L,
|
|
0x5eb0acf741b94afbL,0x1be5d66fb1aaad14L,0xb8ececc5e6cd6d4fL } },
|
|
/* 45 << 189 */
|
|
{ { 0x65f6e29dec7d4de8L,0x082fa0560e938c79L,0x4cda3fc925a02f04L,
|
|
0x77dbcf0d3bac5cadL,0x625f9bd859145bdbL,0x98b7fd64553a11f3L },
|
|
{ 0x621bfbe387dd8a45L,0x6519421d1c35176bL,0x89eabac6d5ead4c7L,
|
|
0x45c68bfe54acfbd5L,0x87cd244a84f30b68L,0x83b5f6b27b39275cL } },
|
|
/* 46 << 189 */
|
|
{ { 0xd43b1d3c0ed0ade8L,0xd60b1ae7640e7d37L,0x965489e6f88e06e5L,
|
|
0x35398ac89653417dL,0xed1e89ac02cfcfc5L,0xd127f68dbb6f2bfeL },
|
|
{ 0xa569c59fe22bb079L,0x7933f14e4ca8e9deL,0x68b4964a30033c3eL,
|
|
0xab438cf88f069045L,0xa64f3a1516163059L,0xf40499c14576fe42L } },
|
|
/* 47 << 189 */
|
|
{ { 0x361c28da052567f7L,0x8a2c6aafe0db84b6L,0xa79eb10cabbc87d3L,
|
|
0xeaf7bfff4141b3acL,0x90bba4a953aacaf8L,0xda577661c35f9564L },
|
|
{ 0xb2550d0dd4487a5fL,0x69d43c5199638269L,0x6d16973f7a1f8ac6L,
|
|
0x3dfb2253c71e4a4aL,0xafd836aefa36168cL,0xba72fd1faae6dacdL } },
|
|
/* 48 << 189 */
|
|
{ { 0x690c0cfeb449d1e2L,0x4a5e150b1b8e1577L,0x22508042204d98a6L,
|
|
0xc87a97f5bad2eb08L,0xd307c59ed25823eeL,0x6ed083580df8b3f6L },
|
|
{ 0x280ae344314e7016L,0x6a55be876ef4e889L,0xea930e5a24d04e38L,
|
|
0x0269d9a7309830fcL,0x41dc8f0ae4afeebcL,0xfd1bc660f14ee02dL } },
|
|
/* 49 << 189 */
|
|
{ { 0xf81cc943631da366L,0x2e821eb85ab1a2caL,0x339e9e4765433883L,
|
|
0x3dc14370e1f60c71L,0xbd6c79bebc25b506L,0x2bd3ad51a8a639f0L },
|
|
{ 0x7c168f13c700a293L,0x64fef4fc28b4ce88L,0x3ccdc3080c329c6aL,
|
|
0xbfd78932b76a9452L,0xf0c123fbc684f4b5L,0x8bfad06432305ed6L } },
|
|
/* 50 << 189 */
|
|
{ { 0x208a668feea1a9ddL,0x8af75caeab903f09L,0x356208b449265292L,
|
|
0x57b24ebe53faced4L,0x9c8aaa7303694920L,0x1c06ef5ad2f90179L },
|
|
{ 0x794ead99df92de87L,0xad900c4e7a73fe9aL,0xdb66b9ae715d9f66L,
|
|
0xd19dc46db1bc2950L,0xb0a5af5c24c82c0aL,0x7d83f950371d0ec7L } },
|
|
/* 51 << 189 */
|
|
{ { 0x716071e3abd37656L,0xaa22858be6cab564L,0x6793a66f5aec00ccL,
|
|
0xe2ea5401e025da6dL,0x3998ea5d2eb0059cL,0x4ff6f442e39abb77L },
|
|
{ 0x703eabdabdb6e0f9L,0xa33e6deb38522433L,0xe23c13f6ca83c2acL,
|
|
0xcfb8e57c0cac836fL,0xd0f84bde7692714cL,0xb4fc3b01f3f41d29L } },
|
|
/* 52 << 189 */
|
|
{ { 0x67842ab4d8f358a5L,0x70cab57540e2fb69L,0xdebc3046e5c458e4L,
|
|
0xc3574cf47eb004d5L,0xbac261a1c86f20f9L,0xc1bcb661deccf7fcL },
|
|
{ 0x5b3b96dec5574e9dL,0x07b878b3e151fb0fL,0x2f2d126cd38bd5f2L,
|
|
0x06c951e8319597c9L,0x5529be4424ed0027L,0x82dcacc2ba8d7acbL } },
|
|
/* 53 << 189 */
|
|
{ { 0xc37eef0149311e82L,0x3d07aaad401d010cL,0x934e039e53417831L,
|
|
0x70775653da895ec3L,0x206b80af625cbe49L,0x9e2a4ee1e53ccb36L },
|
|
{ 0xebeace45c8ca6ff7L,0xadb19bd9925302deL,0x951bfcc497dee154L,
|
|
0xd09882da79b60e1fL,0xb1e9cf0cda5f2516L,0xc2b697295e4def97L } },
|
|
/* 54 << 189 */
|
|
{ { 0x74ce542d04f860e6L,0xdc8adf8fa3c48075L,0xe19852232063f76fL,
|
|
0xf651c9fd5cd9ff61L,0xd4cbea69bab39ea0L,0xb6d4749b28fe3443L },
|
|
{ 0xaa7747ec65e960ebL,0x1a1b7b65e132a213L,0xfa52901f402a50d4L,
|
|
0x3e4d2da68d43700fL,0xbfc7322937d45181L,0x68a812f9008bb845L } },
|
|
/* 55 << 189 */
|
|
{ { 0x226d4d233e4cbf5dL,0x36359f52576243e8L,0x032af38a39a1999eL,
|
|
0x9b59120a687eb228L,0x85c56b78e68e1498L,0xa7a14bd4849d03d1L },
|
|
{ 0x9e7177b345c4c3f1L,0xad7e4975183bd846L,0x42418d9a42f69dc2L,
|
|
0x218e8f8e4f52cac6L,0xafafa7649f1f3214L,0x32f6f72b747f7592L } },
|
|
/* 56 << 189 */
|
|
{ { 0xefca7f7ba6c53c1bL,0xcb4bb33c524457a0L,0xc9eab87fe57d08dfL,
|
|
0x48c01c2a7d9a1967L,0x11c97ed97dc27492L,0xd8c644861cf1f639L },
|
|
{ 0x541f8c0d8156576cL,0xdf5c8dff2384e299L,0x9806935ba6be190dL,
|
|
0xec6c5de764494b4eL,0xf04e2d4cb83c00b6L,0x379af438c0b84f15L } },
|
|
/* 57 << 189 */
|
|
{ { 0x64e6289d92bbc1f8L,0xe88b78c5a0620121L,0xd01bac79a0fbc373L,
|
|
0xa2e7986af098f07cL,0xfcac4dbcc5911218L,0x2e2bf56db337ed26L },
|
|
{ 0x878d9819e89a73c6L,0xa7df4f5768df46d2L,0x74bf7e2f4b3c9568L,
|
|
0x2f2b187aebcce535L,0x544f18139a4c2be3L,0x3a5fe300a5938f0eL } },
|
|
/* 58 << 189 */
|
|
{ { 0x901a14cd70aa91aaL,0xf0b6e1ec7f0b0a70L,0x6fd1ee0156a8bf9cL,
|
|
0xe7e53c6693fbdadbL,0x18ebae68e17de706L,0xf4107457ebecf636L },
|
|
{ 0x77a85ea4a9f6c696L,0x3ea193e17dd9e3adL,0x9497e0a9f151c8abL,
|
|
0xcc9237497a1dbf14L,0x2e36740e8f9be59fL,0x1b1c7d7c4a249e51L } },
|
|
/* 59 << 189 */
|
|
{ { 0x7a45af2242cdcc53L,0x3061d91b8682832dL,0x85e080f6c375030fL,
|
|
0x3ea6dcd1418440c7L,0xe0559870d14b6537L,0x36619215d178b45eL },
|
|
{ 0x48a4b452dcb85a34L,0x79cf4529bd5504bdL,0x506215e9e9c34c8eL,
|
|
0x961f74b6dbd00e2fL,0x473d1397cbc84ddbL,0x6c64f870a8d67cb5L } },
|
|
/* 60 << 189 */
|
|
{ { 0x519a6edb91a9b99eL,0xc0ea29e0f19221eeL,0xde83e0f77dc193b2L,
|
|
0xa7b33b6044be16f6L,0x7edcb49406c8e8d7L,0x9f9dbb86392c0ef6L },
|
|
{ 0x09aefe035726bd5eL,0x782d8350c4e80b7cL,0x14e41a49186b80e9L,
|
|
0x9af13703499ef97fL,0x5752877f2cbcc336L,0xdd0f8583d2df624dL } },
|
|
/* 61 << 189 */
|
|
{ { 0x1cd2be3f32f6b0a4L,0xfd5da4a90114bca5L,0xc322a6a198a39a66L,
|
|
0xca411eeb10d64384L,0x7c5d3ed0c72d8b6eL,0xf20c76697481309fL },
|
|
{ 0xaa4e45dca155872dL,0x66e41d54b87c1e51L,0xbe2fe5e6a6bfe6b6L,
|
|
0xf60ca33a08a4d3e7L,0x45c1ec8c7211b48cL,0xdf44d3b573b78f7bL } },
|
|
/* 62 << 189 */
|
|
{ { 0x21eda67429a1e6acL,0x33118990422ce5aaL,0x236aa9ec27326810L,
|
|
0xc42dff9e3be7b318L,0xbe4601281690755fL,0xa395509d8c1c60c6L },
|
|
{ 0xa36de79d05b991d2L,0x55f516a3632882d4L,0x4c8c5a4296d1d493L,
|
|
0x56199648533cda6dL,0xf9c6897a603bbfeeL,0xae835160f9857cc4L } },
|
|
/* 63 << 189 */
|
|
{ { 0x700bad58d6aa9618L,0x2ad7069c05d54c73L,0x7f3ff5992f6a8495L,
|
|
0x39de751ee26e6720L,0x39126d97d4cecf54L,0x353e00e21523aca4L },
|
|
{ 0xee905af017a33178L,0xa30173d31daf2642L,0x24cbbcc728f9169dL,
|
|
0x4e65bb13a7039e69L,0x004a11859121e44eL,0xd4efa5b91c1e60beL } },
|
|
/* 64 << 189 */
|
|
{ { 0x2e75a26eec65b53eL,0xfeb630b270552fb3L,0x53dfd057ee7d8e4aL,
|
|
0xb959110d8994f449L,0xb4a16596bb538367L,0xa70917bdef82f29cL },
|
|
{ 0x5a76430043bba6aeL,0xee207476cfbc194aL,0xc7eab23803a4184bL,
|
|
0x60c67ef20f7fcd62L,0x41e05799dfa8a0c6L,0x5d7d05e604d352b0L } },
|
|
/* 0 << 196 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 196 */
|
|
{ { 0xc97c01eb436b59f5L,0x1d15aca7ef1848abL,0xdba1ce807fa7d3c2L,
|
|
0x69e6f96e81060874L,0x6e3e0df74d7eeeadL,0x8a3b5e85b0c87f3dL },
|
|
{ 0xc55ae3dbc8a23914L,0x5cdc2a92bf6d27d9L,0xa6008c591de7860aL,
|
|
0x8202f8b66e546731L,0x652f2d07aa1e45d4L,0x146f214f6df5415aL } },
|
|
/* 2 << 196 */
|
|
{ { 0x041c706cce5fb4d9L,0xddc78cb3b22a79a7L,0x7dc4cd27839e9d5aL,
|
|
0xdfc9db83bf3c4c06L,0x85b8094138b7bd22L,0x1007dea2d0f4c2daL },
|
|
{ 0xd7b34006c633fba0L,0xa8880acf4476e55fL,0xa340b2c275236685L,
|
|
0x5ddd05510113a85fL,0x7dfc7ab29cb32704L,0x9a334a33dabf22ffL } },
|
|
/* 3 << 196 */
|
|
{ { 0x2fbce9bed7d1146bL,0xcec9e5d8b3980bd2L,0x48ea45939f4cbaf0L,
|
|
0x56c540092574a3bdL,0x84a39630e792c39aL,0xe5c690f8eef81343L },
|
|
{ 0xf996760f17655bc9L,0x6009c2156c0c191cL,0xa0ca12e6966d7027L,
|
|
0x92a6d5d52e6f7c63L,0x46809d269bd13eadL,0x3c11fa7967aac681L } },
|
|
/* 4 << 196 */
|
|
{ { 0x3fc9b3cfabe2cc87L,0xfd8d64e3514e77feL,0x2003a58afe1ad535L,
|
|
0xcec4be38cb39149fL,0x4d578c99bdedf470L,0xcd35d7a33a356519L },
|
|
{ 0x7a762f278b078d6bL,0x3b6891ed31ae2701L,0xdc0e817f270c508eL,
|
|
0x5a7be2049fdb29c8L,0xfa1a0be3cb2711d3L,0x5865f55f3786a0c2L } },
|
|
/* 5 << 196 */
|
|
{ { 0x1d0af6b52f641cffL,0xa932adeb3648c4a0L,0x67641951b1ea8fc4L,
|
|
0xc0b90064b1fae482L,0x7012642f6623477bL,0x1cddc0245bf019ceL },
|
|
{ 0xca1f4675c2c32737L,0x11525a5e97d6b18cL,0x9c034ef2d3868de9L,
|
|
0x0533d921044e0c18L,0xba6cf14ecb5e38c3L,0x438309f3509d7053L } },
|
|
/* 6 << 196 */
|
|
{ { 0xe164268ec4ff9f0bL,0x6c8e9349e6c36e63L,0x734f979478ab17f3L,
|
|
0x46d468de0179ed0eL,0x7e68f006dfa26867L,0xe4d4a85de3d0485dL },
|
|
{ 0x0913a1d7f84c0f8fL,0x4095c8c025a9c9cdL,0xeeb1a79e49eadd08L,
|
|
0x433f5e417dd8f954L,0x70a6281430bb26d0L,0xad94d8f6ff5e8e29L } },
|
|
/* 7 << 196 */
|
|
{ { 0x6a352b579e32c0a4L,0x5274a08277ec7a40L,0xee1f7c7a240e6dc5L,
|
|
0x85d5be62d313b4a9L,0x1522c5d25c01a405L,0xcfa08aab960afd5aL },
|
|
{ 0xa3cb77f38e8a93dcL,0xaacb16766d1c98c7L,0x84090c7d3b93fa9dL,
|
|
0xc77f1ee13c0383adL,0x461c93b776f7a220L,0x66d63a1d04ac0bfcL } },
|
|
/* 8 << 196 */
|
|
{ { 0x3c7d6b644751207fL,0x65e1f96ae440c1a2L,0x8ed15d20aa0eaa1eL,
|
|
0xe944ad2fc0eab490L,0x71525aa1f6d9f260L,0x5cd14c8816146ba3L },
|
|
{ 0xf940190814a41275L,0x3bb7ea742288618dL,0x6a4e1c37cab1060aL,
|
|
0x357fe4d0c8cac96fL,0x97a8b8ab6a2466ecL,0xb6e83fdb9c01be70L } },
|
|
/* 9 << 196 */
|
|
{ { 0xa55a7142cb09a69cL,0x0a39fa12896a9c24L,0xa7131a001f6c9c82L,
|
|
0xdacbfae97509c912L,0x3793d4ef4232eb57L,0xb63d9fc0da02ac15L },
|
|
{ 0xf1ce48a09ab37492L,0xa388dbb5cf9ddedbL,0x7224ef47fd7b2aa4L,
|
|
0xdfe18be82fd35ae0L,0x2286ae7b90a2e98dL,0xd06cfd71e0d3c2daL } },
|
|
/* 10 << 196 */
|
|
{ { 0x7825df5c948663a4L,0xc8c093adeb4ec9ddL,0x677c51ebc1505989L,
|
|
0x8c28421524041f43L,0x0f63f15ac9ef610bL,0xcb98841d257678c5L },
|
|
{ 0xc0560066c52c64acL,0xaf7417db954180e4L,0x935c08876fe1f0e7L,
|
|
0x8fe556ba46d03a88L,0xec44271484a0c4a7L,0x431f8e8395be9544L } },
|
|
/* 11 << 196 */
|
|
{ { 0xc1fc18cb3101ce6cL,0xff753902048e52fcL,0x768299554e58e21eL,
|
|
0xac990acc32856d44L,0xaac4d5dc9f8a9da8L,0xca1740fdd4be9e8aL },
|
|
{ 0x59250846892d8bdaL,0x45f45cad19c97c71L,0xf29e2724e6ba5c87L,
|
|
0xe441134473f6a778L,0x9f4f9027a0f278faL,0x11bb7ce02bdcef71L } },
|
|
/* 12 << 196 */
|
|
{ { 0x0cc553bb9b3fd7ceL,0x2e0ff43ce103b562L,0x96c01f0328222a3fL,
|
|
0x7dcc5593c10171c0L,0xc677366a4b3e5858L,0x872d4396bde4eebdL },
|
|
{ 0x5d0c5f3a7f83c0b6L,0xbf4274dcf7ba33d9L,0x1df6e4811a635f83L,
|
|
0x24e2e8347d807292L,0x792203a8eee1e676L,0x20475f907ef4e8a4L } },
|
|
/* 13 << 196 */
|
|
{ { 0x1b4db0579e37cd0dL,0x61b95bc9ebccdf79L,0x7d98d8537a57d7adL,
|
|
0x58a3d639709b0194L,0x45fbd4417ce5bc31L,0x7684b71b5b3c856aL },
|
|
{ 0xb311f8f85bb6bd1aL,0xaeb8e44711eda59bL,0x1ad5b35fbf269cffL,
|
|
0xc69651b4a0e2a640L,0x3713803bd83ad8b2L,0x613ca3af0e4b353cL } },
|
|
/* 14 << 196 */
|
|
{ { 0x3ac59b1fff8cf495L,0x3f3726866b04c4dcL,0x2cdddf90da325f0cL,
|
|
0x3ae79666444cabe5L,0x8222f6d6c7484b1fL,0x61fb08929ae328b9L },
|
|
{ 0x279aae392c575c0eL,0xac694019948508bfL,0x4931cc55b84056f1L,
|
|
0x75927a688b50ad1dL,0x47ba72e945584371L,0xbea7e62ea79fe5e5L } },
|
|
/* 15 << 196 */
|
|
{ { 0x990a6767faddc25dL,0xcd7650eb114eaf17L,0xf9d1d6409a44cda3L,
|
|
0x70996b6871fb091aL,0x630ae9754ff80816L,0x59a9dc2f987b20e7L },
|
|
{ 0x9a39588ef65fbbc7L,0x71f4c8e598e7c78cL,0xad2f5a0138cd40acL,
|
|
0x3c68fe575a837332L,0x7af44087155e6b4aL,0xd66f4cf8e99e31f2L } },
|
|
/* 16 << 196 */
|
|
{ { 0x5b0b5d692a7aecedL,0x4c03450c01dc545fL,0x72ad0a4a404a3458L,
|
|
0x1de8e2559f467b60L,0xa4b3570590634809L,0x76f30205706f0178L },
|
|
{ 0x588d21ab4454f0e5L,0xd22df54964134928L,0xf4e7e73d241bcd90L,
|
|
0xb8d8a1d22facc7ccL,0x483c35a71d25d2a0L,0x7f8d25451ef9f608L } },
|
|
/* 17 << 196 */
|
|
{ { 0x81e304c903b37e31L,0x21781e57925a6491L,0x4ecbad144b9250d9L,
|
|
0xb395914345cae8feL,0xb894a39dbf775d4fL,0x8a2c1090d307e272L },
|
|
{ 0x49dfcee9408bf3cdL,0x08f0f33195b573dfL,0x23eb8a0b214bcd3bL,
|
|
0x425e1cde7ccc4d82L,0x53f64095ac113d2bL,0x377a6cb3d88e0761L } },
|
|
/* 18 << 196 */
|
|
{ { 0x9cd08431d360ae16L,0xbf5a73d211281e82L,0xfe25aadfcc34ff33L,
|
|
0x8874984b84e3af16L,0x8dd38b596a65a2a7L,0x6c91112c68a26926L },
|
|
{ 0xb765168637554f46L,0x79558f04c78bf29bL,0x8bb14b1f03012b9dL,
|
|
0xed7d03f9a0886ba3L,0x9a436ec3c2a93baaL,0x601babb740db0c78L } },
|
|
/* 19 << 196 */
|
|
{ { 0xa7395eef391821d0L,0xb299378fc8b7b1e2L,0x53a37e3b7f3a58d4L,
|
|
0x7d06fa4e3188c5adL,0xe65a94c063dd7462L,0x4daf74f39cfde2b0L },
|
|
{ 0x98f986b4fbe7198dL,0x8e96b1ee88176bffL,0x5f309f64eb91641eL,
|
|
0x46bfe3352ffdca19L,0x1ea1bbe7ac8fbc08L,0xde8ca618b00f88eeL } },
|
|
/* 20 << 196 */
|
|
{ { 0x0757ee852005631fL,0x60f484ea9d70cc3bL,0xaf131d246b011041L,
|
|
0xe40711a1062e2e17L,0x05ccf1b94c27e2c2L,0x29e9910e43d43758L },
|
|
{ 0x54daa550ed000e45L,0xf00a312295d3674cL,0xdb006fe743ec424eL,
|
|
0xbddf5473536162d2L,0x7b8a24b579d433bdL,0x3127a46f282297d3L } },
|
|
/* 21 << 196 */
|
|
{ { 0xcd964573cd0585a7L,0x9c2fd35605b684aeL,0x7f600f4de4a47ec5L,
|
|
0xcb4bcdf085fdd4feL,0x5b292292b4dcf5d1L,0x923c4331df33a2b8L },
|
|
{ 0x0fe13edfd6c1e73aL,0x0b35adc6c370821bL,0xa70061b08d405282L,
|
|
0x98efb3fc6457af81L,0x8806ee7136e1041dL,0x8b56657faaaf0731L } },
|
|
/* 22 << 196 */
|
|
{ { 0xe68b669189cb38d1L,0x250f59233456ed5dL,0x8928f1fe16188290L,
|
|
0x8b24b1f734a837d4L,0x268c8c57d945d0b1L,0xa4190ceae002b3abL },
|
|
{ 0x4596e76e56dd74b1L,0x647c17871c307789L,0x0b945c7243b13a6cL,
|
|
0x4904669552a58ee2L,0x7547a6b46e25b7e4L,0x8bc26f49e2b1b140L } },
|
|
/* 23 << 196 */
|
|
{ { 0x95b3f4e75196d614L,0xc075bcfd5ea18aadL,0x15dc9dd41ae71f42L,
|
|
0x75a769f289543f86L,0x06032d9ec392b4c4L,0xd6cc5c717d4df83bL },
|
|
{ 0x111fc63427ad6680L,0x770dfe7f781bda48L,0xabacb082fc0afb5cL,
|
|
0xe3a463e771dca197L,0x390f21a89635b275L,0x3d3474b24ae094a6L } },
|
|
/* 24 << 196 */
|
|
{ { 0x48f5588853666241L,0xb9fee3d39e6a068dL,0x8c50e3af0275e82dL,
|
|
0xd490cf2dcab34005L,0x20b11f86bf0584c8L,0xd49714c18179e559L },
|
|
{ 0x89647b178ded6686L,0x6c4bac8cf16c93d4L,0x5401e4f8076ff71bL,
|
|
0x577e73acb1ef9b0cL,0xa1b87e0ea46e7880L,0xab8d8bbb54fd28a7L } },
|
|
/* 25 << 196 */
|
|
{ { 0x220161f0741396fcL,0xae14ce5817da16ecL,0x766e415bb828b19aL,
|
|
0x1b3b239e610c7aabL,0xf1c7df4992d53419L,0x57e4cee59442c6cbL },
|
|
{ 0x546f73b5f85d33d3L,0x195116c74e041703L,0x5a71a96a5d668df5L,
|
|
0x0adb7b16fe56c658L,0xf6be923deb563532L,0xa65ed113f2d45f4dL } },
|
|
/* 26 << 196 */
|
|
{ { 0x8c6742e5bccd3be6L,0x5f0f7fdd378de702L,0x41236fec334aabb8L,
|
|
0x4b15815b7e9d8aa9L,0xbb816e46e1c235bbL,0x8591cc45176c2fe0L },
|
|
{ 0xef00e3981d7104b1L,0x761d2c244012398bL,0xe4984f4ae81af247L,
|
|
0xf923bb80c144dc64L,0xd51f27dd83988de3L,0x0ad5438d995dbbddL } },
|
|
/* 27 << 196 */
|
|
{ { 0x0532790bd148314dL,0xb4862d9d5b6b4ad1L,0xab65bfc45beb3ac6L,
|
|
0x72eac92d99331822L,0x2e09a69a6127632cL,0xaa1eaf0791ef9141L },
|
|
{ 0x79b923fe754ff12aL,0x19395a97f9a467ffL,0x7dcc91d49ef5cc4eL,
|
|
0xb9019ff198a84090L,0x62616ed6d5bfd083L,0x95cbf9442b328615L } },
|
|
/* 28 << 196 */
|
|
{ { 0x22ef6f606374afbeL,0x70e19fad26348f5cL,0x8bcd51a845f98ac6L,
|
|
0xeeef7f7026b7ba04L,0x33aa0644544edcb9L,0x22d89a1244974c71L },
|
|
{ 0xecd08f5d0f8d90a5L,0x495a0403cf03513bL,0xe924feea27953ba9L,
|
|
0xdfbe1f93eb5e7975L,0xd3c105a1285865dfL,0x87b8b6360886fc87L } },
|
|
/* 29 << 196 */
|
|
{ { 0xc2da6d7a219d44f8L,0xe66364c555a9d970L,0xfb0936258611738aL,
|
|
0x916fbfa844f7f35dL,0x7a4e0451774b1e2bL,0x7adaab9e80375e65L },
|
|
{ 0x2272b95c8ffdfda9L,0x41644b619ad42b25L,0x157026817f0c98fdL,
|
|
0x25d4a00fffba1d85L,0x52e684c6c6c5545aL,0xba85bf2adabb7df5L } },
|
|
/* 30 << 196 */
|
|
{ { 0x89a5b69dd282b12fL,0x63864e7ba7d28277L,0x36ac74d08c21f920L,
|
|
0x7cfd291713a2f8d3L,0x50b63122c2ef5022L,0x23d454328ed33339L },
|
|
{ 0xf8696b2dc4880048L,0xb9605bd5792dcb6cL,0x4cdb5fc26fdeeb9bL,
|
|
0x58ee2837f1a7f35eL,0x8956359ae2985ccfL,0x0cc6c4ab2c94cb32L } },
|
|
/* 31 << 196 */
|
|
{ { 0x2fcac7d161a8254aL,0xc396583a05389aceL,0xc6f069cc3872ee52L,
|
|
0x76f0e5b407180f5fL,0xc8b23b7a2dee0d6fL,0xc77b242613bf8fb2L },
|
|
{ 0xa8c625e66d5ae411L,0xc0c40a75b0723adfL,0xdee0ba8f380d9c67L,
|
|
0x38b86a3b19920f24L,0xff2191b7d910e9cdL,0x8d01786734181894L } },
|
|
/* 32 << 196 */
|
|
{ { 0xa704016022ec7eddL,0x19124972cc9c8ee8L,0x697f301f2ccb9417L,
|
|
0x3ee877646f00d8aaL,0x2b5afaf88138a017L,0xf152b14c832d7543L },
|
|
{ 0x27c27ce2383052f9L,0x4746c5b5e1dae11bL,0x92dc5ac75b752008L,
|
|
0xcf382e01e84fe5f1L,0x90e034197d5929ceL,0xafee3abb15ca3ffaL } },
|
|
/* 33 << 196 */
|
|
{ { 0x299e0c5507f0e3a7L,0x75dac5c46cdebb44L,0x340b5479183c7e42L,
|
|
0xfb1b03dd702672d4L,0x68f7222ec07cf89dL,0x67a471e422e7a8a4L },
|
|
{ 0x79dd4627b9ada93aL,0x774c53771c8ecca5L,0x95191e1a59db2e65L,
|
|
0x3f6947f270abeeceL,0xb4934fe0885e4e00L,0xd082e49901728c2aL } },
|
|
/* 34 << 196 */
|
|
{ { 0x86cd8083aaa82329L,0x74f0c5786e579dfcL,0xc2b68c4e3b436545L,
|
|
0x8e66c648469d4a81L,0x4c5b05c5bef62bb0L,0xe558ff020bb6f865L },
|
|
{ 0x9f8ccb16f356a124L,0x1bb28d7c1279f8f4L,0x9b885f0ca8fc4e08L,
|
|
0x2ec4cf69859d90eeL,0x9bef3c4d86d3b9d1L,0x5a98ce73eaad8d53L } },
|
|
/* 35 << 196 */
|
|
{ { 0x6c716b179711b5d2L,0x396a4a4cb386c1d0L,0x5845f6861c157c12L,
|
|
0xdcad516262c15d4eL,0xb6e0a6a02dadb218L,0xe4f6d5e5a342e785L },
|
|
{ 0x1eeea548c78980e9L,0x363c31be00a32adaL,0x01481fb7e660b445L,
|
|
0xcbb61552999c1f5cL,0x20a73942f361d12aL,0x67fb89a11b8b4b3eL } },
|
|
/* 36 << 196 */
|
|
{ { 0x1d57d639eb00e26fL,0xbeb198906985c10bL,0x38cd95a337b9b76aL,
|
|
0x3b1d12e30304c87dL,0xdf42dc6f4734e191L,0x1ed1d9e397841989L },
|
|
{ 0xfb60e333859b577bL,0xfb026d16ed3db987L,0xa216b0e46f7855c8L,
|
|
0x9501bae3539ebdf6L,0xd95a4a32dc8a1f6fL,0x76cb0b6b45307deaL } },
|
|
/* 37 << 196 */
|
|
{ { 0x5607ab62a844b579L,0x8d3ed3db94f67d9fL,0x95390de8a9929b04L,
|
|
0x4a6f6f7cc85397f3L,0xec5b73eff26eab04L,0x2543190b045699f9L },
|
|
{ 0x9a4896138cdbb723L,0x0e081e5b7a1c638bL,0x20f292c6596a7b1dL,
|
|
0xa14d849794477dd3L,0xeeeca98064b0de1dL,0x75fdbae92c5135dcL } },
|
|
/* 38 << 196 */
|
|
{ { 0x1202b5752b076f5bL,0x5ca1247edbd6c420L,0xb45ff9bfd8ccc5c6L,
|
|
0x680fcfb28e061baaL,0x5a6e6342122a4212L,0x0ad12abc312fea8aL },
|
|
{ 0xd1dd8ae5665dc7b1L,0x30494dfdd9a22454L,0xc8aa9bc9da55ed09L,
|
|
0x6ec643031b74b119L,0xf54574716b604639L,0xe2a214e59f8d83ceL } },
|
|
/* 39 << 196 */
|
|
{ { 0xca698de5f5c96e8aL,0x352c89a3fd941919L,0x0e3de0a909812f23L,
|
|
0xa74ba91667702fefL,0x6acfaa5a3863d479L,0x28d8932bb6bb15cbL },
|
|
{ 0xc62155704ba9718dL,0xc67a3eafa1edd692L,0xc86eeedaab31aa74L,
|
|
0x2064ea632deb79c3L,0x813b84f51ff01adbL,0x994b9437458a1835L } },
|
|
/* 40 << 196 */
|
|
{ { 0x1013c4f4fde3f7ccL,0xbad5415a838699b6L,0x2a8b4eac64cacc78L,
|
|
0x3d10f949bf75d233L,0x5a9f7782fc84e55eL,0x209a18345ea7b274L },
|
|
{ 0xa66cb6d4f9e8d374L,0xf898d9479a20080eL,0xe7e4b91b1272df4cL,
|
|
0x5b8507cc5dd136bbL,0xbe4b5262372a8e05L,0xa0cb170c2aa4a47bL } },
|
|
/* 41 << 196 */
|
|
{ { 0x469180a38378217fL,0xd960bdde85ef6d61L,0xcc4e737d6654aa84L,
|
|
0x28d440016ae51d69L,0xf13a0d9ac6187196L,0xe60851b392160f65L },
|
|
{ 0x41d98cf61cac48d1L,0xf37f003d1b57f2cbL,0x4829c60bce272603L,
|
|
0x45991d4adcbdddc1L,0x17e591fe74601bf3L,0xf8a36b4fb3fe856cL } },
|
|
/* 42 << 196 */
|
|
{ { 0x4410b773fe480323L,0x42ae32e3ea2f8b57L,0x6578a64b2886b9d9L,
|
|
0xafcfa5fe4241ec91L,0xa7fa5afc16b4ef24L,0x4a6594bbbc16b610L },
|
|
{ 0xcb5845515e264fb6L,0x4b89955e2b9c3c70L,0x530426be21e11c1eL,
|
|
0xb707abe9c9dab34dL,0xb5aab0bf5931cd78L,0xab6a2585f0ccfcdaL } },
|
|
/* 43 << 196 */
|
|
{ { 0xe75761f716afd216L,0x8ff1cea3b8a4f008L,0x04b8b65e69889d77L,
|
|
0x679bf7a586ad9fb5L,0xbe49be0b4c22b86bL,0xcc8905a16c026c1dL },
|
|
{ 0x17464e7e59ec1983L,0x50cb62832a03afe0L,0x8dadaf456ce4df91L,
|
|
0x26cf59d1e0df6fddL,0x6ecc66119adaec45L,0x1be42e744ef67dacL } },
|
|
/* 44 << 196 */
|
|
{ { 0xa01cb3bacb1957b9L,0x053693ccf50694c9L,0xf8a887ad527f3aedL,
|
|
0x2f1a80ece9bf06f0L,0x74baeaa57d0eec9fL,0xce8e8b9ab0641cabL },
|
|
{ 0x91d1e84d128a1804L,0xbdcfcaec2d5fa43cL,0xfc5cff124106fa6dL,
|
|
0x2ae3ffab01588ac1L,0xe9dcc9b44c067052L,0xd8e3d74bafa7d4c3L } },
|
|
/* 45 << 196 */
|
|
{ { 0x64a134296d7b277bL,0x487080d8e9a50637L,0x02e5fe901c6c061bL,
|
|
0x8fdaafc8ecabeb11L,0xb1e3960110720b13L,0xe7304bf77081f41eL },
|
|
{ 0x78a10af8c26f5cf8L,0xf52cbc155c032c15L,0x95a3c4558c0c2091L,
|
|
0x1797b407abba6f79L,0x87c0cd05a96a3062L,0xdf75e2805f04a7e2L } },
|
|
/* 46 << 196 */
|
|
{ { 0x47161e1f82779cd6L,0xa95afa08c8158458L,0x2cbefdbc40a80742L,
|
|
0xd86e0bfaca420c9fL,0x08f5f8c29c79427eL,0xe8f88361da4d0d9eL },
|
|
{ 0x2195174d3eb78d14L,0x889b32c9ed6caecfL,0x1e679749c3c83ed3L,
|
|
0xc27a8c84eddf8a29L,0x4a21af3af8e09f40L,0xf4b9797f1eb3b9b3L } },
|
|
/* 47 << 196 */
|
|
{ { 0x58c2405baa44f11dL,0x86ffaa37ac0f7257L,0x373623cc4070f6e3L,
|
|
0x142e62f9a36c73b3L,0x43bab2dd36a143fbL,0x4fbeb0b7aa50375cL },
|
|
{ 0xf9cc2e7b1f862294L,0x95a9be3c0abdcaa8L,0x70f050225cda074eL,
|
|
0x152659db43e6bc89L,0x1790148727c6e01aL,0x544069354e083c21L } },
|
|
/* 48 << 196 */
|
|
{ { 0xcb51f03954ebc926L,0xe235d356b8d4a7bbL,0x93c8fafab41fe1a6L,
|
|
0x6297701da719f254L,0x6e9165bc644f5cdeL,0x6506329d0c11c542L },
|
|
{ 0xa2564809a92b4250L,0x0e9ac173889c2e3eL,0x286a592622b1d1beL,
|
|
0x86a3d7526ecdd041L,0x4b867e0a649f9524L,0x1fe7d95a0629cb0fL } },
|
|
/* 49 << 196 */
|
|
{ { 0x028bc25096c54946L,0xace5e7ad0f5fb7eeL,0xc820d7513350ab02L,
|
|
0x4ae1f6d99c8d7635L,0x03d1f83a98e1ed80L,0xf014d45d5ad14550L },
|
|
{ 0xeb8f2c328cd6d0b6L,0x090a8f71770f586fL,0x1a8219f93eb7d3b7L,
|
|
0x0d610d9febfc26dcL,0xfdb49980aa330297L,0x6396f218d81b3fbbL } },
|
|
/* 50 << 196 */
|
|
{ { 0xb4ea3102eacb7b9bL,0x4aefb43d72af1d6eL,0x9a1a912d249a51d6L,
|
|
0xddd0a5744d5e3a1fL,0xe252114708aa1f69L,0x4b235efe9de89d5dL },
|
|
{ 0x6fae47420d7f1aa7L,0x0434ae2ff200e13aL,0x75143dc192508b57L,
|
|
0xc441a768055e177aL,0x84cd7adf2f142b2dL,0x56484f4161d9ad5aL } },
|
|
/* 51 << 196 */
|
|
{ { 0xe3e9d0881beecd14L,0x4bd12b179093ab18L,0xa6908ddbc925d5dbL,
|
|
0xfdc5f740832d1474L,0x1a35623696f831afL,0x0e39086808cde8c9L },
|
|
{ 0xab1c7cbda2206b32L,0x84d299c8b93ccf1fL,0x380fa432dabb6542L,
|
|
0x59f01b5177c2cb3dL,0x9785c47b6e56c4bbL,0x047acc813a3f2b1aL } },
|
|
/* 52 << 196 */
|
|
{ { 0x724210e61e42b4a7L,0xa8d536afe2dd968cL,0xc69936e683582c60L,
|
|
0xd031f1abdd5d7f68L,0x7d31dcae8c4180d4L,0x117985f622bca188L },
|
|
{ 0x3b0a982537e38dc2L,0x1663fdc5896fe4b4L,0x55d18cc7fd707372L,
|
|
0xfac2d7a40d2d8470L,0x994763391b04b1f6L,0x87cfbb5ee0bd72e4L } },
|
|
/* 53 << 196 */
|
|
{ { 0xeac6a72ad5dd2841L,0xf1aa32524277e152L,0xe6c44e9b6ef7e947L,
|
|
0xd03309fc54095378L,0x6fc5fb9ccdd06947L,0x10ed0e76d1e9a968L },
|
|
{ 0x42d5ab02dfb77b17L,0x4c54c381a53de8ccL,0x5fb4c256f2b1b5d8L,
|
|
0x17d5ab28e12ed054L,0xd7c96ce1139da42aL,0xb32f63859919f459L } },
|
|
/* 54 << 196 */
|
|
{ { 0x4bf5788312f4b0b3L,0xcd69d82ef46735faL,0xc397c8f9a1baa0efL,
|
|
0xfce184c0fd1be398L,0x15021775fa54580eL,0x10bc85468f54397cL },
|
|
{ 0x6009a691eaa9d711L,0xc9c6a42fb7846417L,0xe9c305685627817dL,
|
|
0xa1be66ff92abd5daL,0x9317838fcdea11c0L,0xace94ddcc85e7aa5L } },
|
|
/* 55 << 196 */
|
|
{ { 0x3ef37821d4079bf4L,0xff78abebfcbdc3d0L,0x117414bc4733ea34L,
|
|
0x7f181a3b9f50d0feL,0x9ea5f94eda897ea7L,0x01a996ceee8314ceL },
|
|
{ 0x0cac3c8b420e988dL,0x7ad66ac4bed3294aL,0x6bbf6dd800b62445L,
|
|
0x590a57017a2fb4fdL,0xbf3b4e529ac11d81L,0x1bd453020d60c710L } },
|
|
/* 56 << 196 */
|
|
{ { 0x8a43bba0902c32d8L,0xd8c69b74a3955e42L,0x413bf25d79c64afbL,
|
|
0x3c39837584ac94cdL,0xfbfa9c53a08ccf5aL,0x9d8ac945e9d791d4L },
|
|
{ 0xfb9bb89e5e7a2553L,0x1442612bb039dd24L,0x8250ffe0a2e2344aL,
|
|
0x5eae8b396426b985L,0xa1657768484741deL,0x05e52d4ac73cdf8cL } },
|
|
/* 57 << 196 */
|
|
{ { 0x61c2417995c5e767L,0x7456380c3bdfef62L,0x62763f43d206cbb1L,
|
|
0x1996e2c657871e44L,0xd0dbd290f220c06dL,0x6778e1e5d87743eaL },
|
|
{ 0x40e54caf16b8f046L,0xe834a1cb6bed77daL,0x7240befa3e9457c4L,
|
|
0xd1b638dbac96cedcL,0xd1d7e814c9c0cd8cL,0xc73beaf14d38258eL } },
|
|
/* 58 << 196 */
|
|
{ { 0xf1a6d776c05f40feL,0xb98c19b1c21ce471L,0x700b0bab7f9689eaL,
|
|
0x861513a56f1d2e6eL,0xb7558b2292fe4456L,0x2d8f860704c66a25L },
|
|
{ 0x10ba7d6a7998347dL,0x72bf56093983b98dL,0x8d873c4f89238292L,
|
|
0x5db0dca9a5e3c944L,0xf81fe37e0925aef0L,0xed6a13a4e4daae25L } },
|
|
/* 59 << 196 */
|
|
{ { 0x49e2372711c3a930L,0xbf2ede34f5293b8eL,0x0abeeb3ca8e1cc9aL,
|
|
0xb1db299440205cbcL,0x3252d29e52fb01d4L,0xa0b080c57dc91095L },
|
|
{ 0xb56fdae622a9ceb9L,0x6c3c3463b31f6f27L,0xcb510ec2ae3bd22aL,
|
|
0x1efcd77b0b3db475L,0x1094bcc5ca766f9cL,0x688e940dfea48297L } },
|
|
/* 60 << 196 */
|
|
{ { 0x3d95d26a99cde27aL,0xed608a89b99344f4L,0x7a70a8f09c0ab25cL,
|
|
0x7740953c496552d8L,0x4da4ca0f4a366adcL,0xbf475c1b33274d4fL },
|
|
{ 0x5ac1d8288811b869L,0xed62e7b4d23446d4L,0x67d78571a0eab287L,
|
|
0xa74ae3e98b0acc4dL,0xa63f91d64077c236L,0xe2c3f82a818a6889L } },
|
|
/* 61 << 196 */
|
|
{ { 0x2bde7037b1d5fbeeL,0x477a4b51a80b92f2L,0x195ae0e06606b504L,
|
|
0x7aaf3de57497785aL,0xb5581ee9290c5ef9L,0xcb303c30360c8ec2L },
|
|
{ 0xfb056f901b1fb602L,0xa38bc9f59931b7ceL,0xb0b74aeab2f453a8L,
|
|
0x9a0e2ebf668cd68aL,0x8b7e0d73d7db7842L,0x21f29b74d1fa5433L } },
|
|
/* 62 << 196 */
|
|
{ { 0x38321d7c4e11f824L,0x04dcd3a3e4a816e9L,0x382968ed07e09612L,
|
|
0x6f7b2dbfa370e1d1L,0x5a8472348675d730L,0x88d974b0e59e984fL },
|
|
{ 0x89f7e2bce3f9e429L,0xd478eacfe3aebac2L,0x8df9f281ebef3488L,
|
|
0xcbcb9fbeab5543b3L,0x2c8d19b0203f59e2L,0xbb98e4495287b0fcL } },
|
|
/* 63 << 196 */
|
|
{ { 0x16c45f709aab81d7L,0x0f1310851795a4b7L,0x3c63d43af0ecd732L,
|
|
0x22e2d1988628b683L,0x7d7482bab641d6d4L,0x6baef4a2ab69891aL },
|
|
{ 0x10989097e63c00d2L,0xbfd42ab0d93794ccL,0x9a1935f3e4165a41L,
|
|
0x359701b35b600ca7L,0xbe7d69f983d1b54bL,0x99b0f35e3729bd4aL } },
|
|
/* 64 << 196 */
|
|
{ { 0x11dd860e1c6d03b0L,0x30c1700809eec660L,0xd4f8aff635c0192fL,
|
|
0x96a727b1e3a4a900L,0x1426daffde78c8baL,0xfacaa9bd8d1527c4L },
|
|
{ 0x0c0d5234cd072989L,0x1936c20d918550b5L,0x4828bee43d914fb3L,
|
|
0x8324ea38f3ba26a6L,0x027590f3a94eb26fL,0xfd354295acd957bfL } },
|
|
/* 0 << 203 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 203 */
|
|
{ { 0x3ede2484da756624L,0xb22da2ab73b13062L,0x56069e93962a667bL,
|
|
0xc931266b130f2ceaL,0x4bd6a6fca7366a66L,0x23f30563aa5ac3b1L },
|
|
{ 0xa025d0efd7c2b26fL,0x597ce7d862129bc7L,0x4809927f2b3057f2L,
|
|
0xb001c10a1499f884L,0x309d141c30b9a653L,0xadddce7dbf659d05L } },
|
|
/* 2 << 203 */
|
|
{ { 0xa6c32900af2825c1L,0xb37c46c1d223a04eL,0x691e7d39063de7eaL,
|
|
0x998df4e710daf9bdL,0xc7085b9e718b5d7aL,0xd41abcc816b3d4b8L },
|
|
{ 0x4dfce693f9bc4041L,0x383677ed659ec7a8L,0x2c1904bf4491fb34L,
|
|
0x7c1bf1114552451cL,0x6562cc2c3c5e5e40L,0x1ecaa2a1fe0e4372L } },
|
|
/* 3 << 203 */
|
|
{ { 0x9657d08ca9cb9ecbL,0xf69662363b75be69L,0x396a9344a31c2b8cL,
|
|
0x1c50b1269767bc1fL,0x597223d0d1417e03L,0xe165ed5a12137153L },
|
|
{ 0x8bce29f926a24098L,0xc428a1fbe99e7bf8L,0x6fd4c906eea7f1d9L,
|
|
0x94275713fceb2e05L,0x3555448b741dbd94L,0xc50e85459faffd4dL } },
|
|
/* 4 << 203 */
|
|
{ { 0x84c3630bf3087bc8L,0x152691e674be6e26L,0x5abd125ff61af001L,
|
|
0x69bca56fbfea3525L,0x384af19900e0cb6eL,0xb0b13cfed00475a6L },
|
|
{ 0xedafde495e394049L,0xd988b558daf2add6L,0xf14cf97a6c8ffcc9L,
|
|
0x4d6cec23e5a9cc5cL,0xb0d678f88a104e05L,0x80a7fcba9fb527c1L } },
|
|
/* 5 << 203 */
|
|
{ { 0x9ae12b902af1ffceL,0x082f30b95a30521dL,0x974099bdc304014bL,
|
|
0xab1e27e444ccb6e5L,0x72db8f42290387a1L,0x3d1a461040f3ce18L },
|
|
{ 0xe939a3f2634ba10fL,0xe70a9cf517254c56L,0xd0f8692fa08ec3c5L,
|
|
0x77edefcc7a7cbdf8L,0x04c4b18ebdf90f0bL,0xa890436a8aa36a59L } },
|
|
/* 6 << 203 */
|
|
{ { 0x8618ffa79e30f8a0L,0x9961390cd12699bbL,0x5b1b0d744f61edfeL,
|
|
0x33df67d9eb7a476fL,0x7f1a767ea92ee99bL,0xfab400e32223a2ccL },
|
|
{ 0x16f376f2f534dc3dL,0x6f36eaefcec17905L,0x8dc1516ca58765deL,
|
|
0x893408262260ed6bL,0x060eb0afcf4b29baL,0x9cd0a9f11d252bbaL } },
|
|
/* 7 << 203 */
|
|
{ { 0xd3c2a6a8ca413693L,0xcc56a8e932d5714cL,0xc72b73683c0da165L,
|
|
0x5d236660db44e616L,0xa83b2ecce5c73667L,0x9d292f298aea900cL },
|
|
{ 0x67121215aaa2a7eaL,0x57dae96abf889191L,0x63bf7a81d296ae68L,
|
|
0x9bf518758fd496c4L,0x5b4382fbc2f7308cL,0xf1215dfc9632aad7L } },
|
|
/* 8 << 203 */
|
|
{ { 0x0d6cadbfc22137d2L,0xb5db59d3628a3298L,0x3b433c734ab19507L,
|
|
0x4fc53405660086b3L,0x770ae903a1eb0f43L,0x31b5857ef6b5b58dL },
|
|
{ 0xe206e141d392868eL,0x8be6956f4b31de04L,0xcfbfca2f47449e07L,
|
|
0xebaef25639fef8e1L,0x959e37b8c16fc80cL,0x8bb4bdd2e911d61bL } },
|
|
/* 9 << 203 */
|
|
{ { 0xecfb851380fc41f3L,0xb0dc8823931843c4L,0x59decd6c1b93df03L,
|
|
0x954103b72511e252L,0xe372f86a0f759de1L,0x04f5afd38f6f9ef3L },
|
|
{ 0xbd8e60affcba2e7cL,0x9b1cb1ed092315b0L,0x5f9e20a03fd05e36L,
|
|
0xfcdcc44ded95f25eL,0x6baf401b6ac79cb5L,0xfe1a5a856894f651L } },
|
|
/* 10 << 203 */
|
|
{ { 0x014a0907e51c6673L,0x28118ccd3e6e6a91L,0xdbbb7c4dc999acc0L,
|
|
0x01b771075e7ab1e3L,0xa33fefbfcd8fb11eL,0x1df5b61fc0b8a5c2L },
|
|
{ 0x774dc2674478c5c6L,0xbfe1add422fb91a1L,0x5ac4dc694d9c8461L,
|
|
0xbf6e002a1e772c5fL,0x4922120e0b83fe91L,0xa7747f4b3efbadceL } },
|
|
/* 11 << 203 */
|
|
{ { 0x4b955beaddaf2e82L,0x3775ecde90fdc68aL,0x579c34f91713e763L,
|
|
0x6c27f504fa509d74L,0xef6df04a3f8dbf4bL,0xc39f2e28b3ad7104L },
|
|
{ 0xe54042b3a5973cffL,0x4e594427f111f3d9L,0x53c7a2ba155fce57L,
|
|
0x7b3c1c60e6e1d21fL,0x5e12db8d308ddf4dL,0x2c3c5e77a00e8976L } },
|
|
/* 12 << 203 */
|
|
{ { 0xc483d4b24343bbf8L,0x42aca2e18a0fc95eL,0x5165df6fcbab1fb0L,
|
|
0xeb284370f6cdfc0cL,0xab565c00994320fcL,0xc0d157fd62133e80L },
|
|
{ 0x7850cda55b69644aL,0xe37ae76a806ec8b8L,0xd14b805cc2c82eddL,
|
|
0xcb5468b6cf244539L,0x97d43ee825dbe92dL,0x1442243689fb8f1eL } },
|
|
/* 13 << 203 */
|
|
{ { 0xcfc8a945f361dc08L,0x383a5336491dc3abL,0x77580587c35cd376L,
|
|
0x6604248ae2426904L,0x47c56025ffeb9d26L,0xc301edd8bae5d983L },
|
|
{ 0x7c6511a9e2e5cf33L,0xdc52c1dd221d41acL,0xdbdc8acada47503bL,
|
|
0x01b406864bcedbbaL,0xca9cb9fd2d5496d5L,0x5768e0edb17e8400L } },
|
|
/* 14 << 203 */
|
|
{ { 0x421afbe0431cb760L,0x9ae9ff985203e69bL,0x56cacf4db1a2705aL,
|
|
0x6a3a4136d128bcd5L,0x2411c4b866191ad8L,0x39f26e1a15b45d24L },
|
|
{ 0x4cc82459c64ed153L,0x5c7a0dd58195b452L,0x9c88bb1c69f6298dL,
|
|
0xfe567b031933fdb5L,0x8a6aea71881308c3L,0xc1268b55a2f0adfaL } },
|
|
/* 15 << 203 */
|
|
{ { 0x312b777c1231c557L,0x3984f71be9971115L,0x0266b58294cc2d4bL,
|
|
0xc3058419cdf5e5c1L,0xab3a1ae477bbf0d8L,0x7c2173a6d21603daL },
|
|
{ 0x61cca8cc747b092bL,0x70f77a53e376506aL,0x742c20692f1ccc85L,
|
|
0xb1f2ceca2dc8844bL,0x5a73cff83a096c10L,0x28acb67d5c19cd11L } },
|
|
/* 16 << 203 */
|
|
{ { 0xd7bf2ac6a0a85236L,0x2921b55c7194c46dL,0x162fabaa9afa9762L,
|
|
0x7b7f1664b62b36abL,0x77b9f797296a84e9L,0xfcc1ad657dbd843dL },
|
|
{ 0xc6e9c1e1cd77b7f6L,0x9cf0e272917067c9L,0xfa7fa93d3bfa90bfL,
|
|
0x55846fe9d050e46aL,0x473b9a0d35c56256L,0xadd29e332b656a65L } },
|
|
/* 17 << 203 */
|
|
{ { 0x4698137f46fb8ae3L,0xb11a595f7b1c062dL,0x4a043b99ff023ef7L,
|
|
0x2836d64d8ef0fa4dL,0x4067dbee8ea44a98L,0x9d1739c9f00ff4e1L },
|
|
{ 0xcbcf12fe133d2703L,0xd2923424016037cfL,0xda7543d68be5f666L,
|
|
0x587d1920ac5e1847L,0x14662476f79e3462L,0x0120a1d8c810a1f3L } },
|
|
/* 18 << 203 */
|
|
{ { 0xa4fc828ab18f9bb1L,0x06de4c9da27a787aL,0xfbb7c7d7b1b3a12bL,
|
|
0xa7052b94b8583128L,0x173ec2d2e7b02fd8L,0x4b724682c776c664L },
|
|
{ 0x46ed9be5673183e5L,0x312191e83bd17c60L,0xe3ed6326efd56a9eL,
|
|
0xb3ebc44c943a2278L,0x7ef62ba9ec9cf589L,0x754be6d389832cd7L } },
|
|
/* 19 << 203 */
|
|
{ { 0xccb4b369dc992b32L,0x0ef84cc0922cee22L,0xda0058f1fc56e9e1L,
|
|
0x208c57943f23632bL,0x3589a7338f77a82bL,0xee6cfa2c76ee99bdL },
|
|
{ 0x88cffafc418f7993L,0x0dde3f05f4be56d6L,0x5d088382a0472bf5L,
|
|
0x872ca5aabd58d05dL,0x9c467c62e8f91f17L,0x38ab1b348c6b91ffL } },
|
|
/* 20 << 203 */
|
|
{ { 0x926c2552ebc69b0bL,0x953a850fd4c7432eL,0x0ee85e14b9359035L,
|
|
0x8b10b01abde090a5L,0xb2878dcaec423943L,0x2571a178f70bde20L },
|
|
{ 0x24ed159af5ebeee5L,0x60c202af043f6539L,0xdaaa76f4c8d4ffc3L,
|
|
0x2fc1f1ba06eda10fL,0xddf159ee88ded556L,0xcfa71782e67b1ec4L } },
|
|
/* 21 << 203 */
|
|
{ { 0x2596ee7409d3ed60L,0xd42551f474a46e37L,0x2e46a92e21061c90L,
|
|
0x236299fa73ad22eaL,0xacdccd5214393ac2L,0x9a572130b56b4d5bL },
|
|
{ 0xddfc31781835e70bL,0x5dac0671d542048dL,0x2b0768d7a6dce17cL,
|
|
0x6d447d4206c55342L,0x6b55b21525548478L,0x24e6483518d5310dL } },
|
|
/* 22 << 203 */
|
|
{ { 0x3c58c5ea9b037c66L,0x08d0648e0d5c6ec5L,0x1bf90c53a4fa3f5aL,
|
|
0x660cf61740381205L,0x63fd03081d44af3fL,0xe22b9c1a77175de7L },
|
|
{ 0x0b6044fc3556fc9dL,0xaefb6804fb55318eL,0x77045bce5c46e1ebL,
|
|
0x29c4a3bc76e8f93aL,0xdf8aec699d697f5dL,0x5bd9552845a89080L } },
|
|
/* 23 << 203 */
|
|
{ { 0x1bd61fbdc5756910L,0xcfcc6d5adeaca40dL,0x292867885dd80ac1L,
|
|
0x7effe328d621c0a6L,0xc64ebb91ab22a2b5L,0x8954ab330c44a456L },
|
|
{ 0x7552a0b460e26218L,0x2e81d3a94136adbaL,0x96dc2451610d665eL,
|
|
0x30859c62ab04e03fL,0xdb3726fd4c31fa3fL,0xbf4954d1d962a7c4L } },
|
|
/* 24 << 203 */
|
|
{ { 0x31521f66d5d826b0L,0x0a63695240787844L,0xc0a3bd059c8f934eL,
|
|
0x12c57dd42f0ce835L,0x847f6a9967064213L,0x1c9e1a7aa88bd71aL },
|
|
{ 0xc4060eb2171e8407L,0xdf78d8dfed106780L,0xa3d28ceb0d704729L,
|
|
0x4f8e523246ca3912L,0x09e9f852017791f4L,0x594006631e6ea97dL } },
|
|
/* 25 << 203 */
|
|
{ { 0xdd26fb79444827feL,0xbf78e076d3f5fa6bL,0x46d486e81a5475b5L,
|
|
0x43e325a5faabc3f8L,0x1fef6b6ba6795d0cL,0x40e040666644d631L },
|
|
{ 0x16207bb9676c3322L,0x677c1c235811706bL,0xb686252e994e2a95L,
|
|
0xa359e2a51b6f6a3eL,0x6d8f06cfb124f019L,0x3bcf778246266c42L } },
|
|
/* 26 << 203 */
|
|
{ { 0xeaa3426b8eb929aaL,0x090924f2327bb35dL,0x4d23ba1276da394fL,
|
|
0x05d98e56adecd43fL,0x83c7169f6b4af795L,0xc22560a7c8f26ae8L },
|
|
{ 0xb43aecc2d01ab5d8L,0xe7bcdc1f7257d7d1L,0x6f32d77650de3318L,
|
|
0x6d736b279bf02c0aL,0x9534fa5865319235L,0x5a6a38493cfbeb3cL } },
|
|
/* 27 << 203 */
|
|
{ { 0x3ddcb65828c50956L,0xb335f336bf1bdb4cL,0x7c18d2d0ac3b6194L,
|
|
0x8748654bca324d11L,0x7c9c58dac2e85f94L,0xf1930a56d4f4f957L },
|
|
{ 0x9cacbdbbe410fee8L,0x0e292c2178e1312aL,0x6845b293906a6270L,
|
|
0x842ded0f00c5401eL,0x747cd08f35e3ff9bL,0x8405540af48227feL } },
|
|
/* 28 << 203 */
|
|
{ { 0x547b0d9583939224L,0x3a0823ff1e026769L,0x6016671525bd43acL,
|
|
0xb6cf475e18ba5f64L,0xa22f9c92c8b6d09dL,0x730553683ccf50abL },
|
|
{ 0xa6de248eee6deefeL,0x32aaf8b2acc3ca20L,0x0e254c5bad44e674L,
|
|
0x8aa73e6535f95f98L,0xe622600160a2dc1eL,0xdf9482109109020aL } },
|
|
/* 29 << 203 */
|
|
{ { 0x7b24d7b056190aafL,0x0115cbdd0563b377L,0x5688526ca7ba4975L,
|
|
0xd2971e28aee3100dL,0x57a6ff8a6fa24f61L,0x9cb571c4d8603be7L },
|
|
{ 0x09c01564a2cce6d5L,0x14f0902b89884939L,0xd71a5ff8a072ffecL,
|
|
0xee7848b8fefeab69L,0x7b52a9577e40895aL,0xd1576be7e8c61be2L } },
|
|
/* 30 << 203 */
|
|
{ { 0x4c4d454849d77b8eL,0x431f942f6a4c982dL,0xc8633d051cb39ce8L,
|
|
0x23421f8caf516f9bL,0xc9db25d2aac876fbL,0x9f2669c5d882760eL },
|
|
{ 0x59dc4bf4c47d4bfaL,0x99ed0024c475f93cL,0x269d1ca4ebe07d37L,
|
|
0x49ce3bdbbf88b1faL,0x515044053361e4ccL,0x207f0048735b3c96L } },
|
|
/* 31 << 203 */
|
|
{ { 0x835fe90b5a516e82L,0x26f1f2a7abfcb383L,0x3dae65a8609c4ac0L,
|
|
0x70b01d6e91f4054eL,0x22da015b581e3159L,0x2ad34f99329d1ebfL },
|
|
{ 0x7385aad60d09b845L,0x4cbafb0b0adf42f7L,0xd8727d26c02398cdL,
|
|
0x58c261f590549db5L,0xd49b12e48ea70310L,0xb31eea047ef89773L } },
|
|
/* 32 << 203 */
|
|
{ { 0x372798f02893f2f7L,0x4f62bfac9e5030caL,0x5e64f9a98a1e2567L,
|
|
0x5870254ce70391c8L,0x2def81a341f02458L,0x25d4e4dc1d087bedL },
|
|
{ 0x3557d07d4fe24a13L,0x6da49186dc3112bcL,0x08c8c5675f73ba50L,
|
|
0x5309050b9c7c6706L,0x2ab67da3bd985072L,0x9bafa8b1e5df4e96L } },
|
|
/* 33 << 203 */
|
|
{ { 0x5acdcd216f77738eL,0x340710746cb67a3eL,0xd68c55cf4bf76bf7L,
|
|
0x64c159200b4deda8L,0x1021d38ae242b1e0L,0x615f1f033bd3d95bL },
|
|
{ 0x2ae0245cc300c9c5L,0x3549605ba88d63e2L,0xfe0dd65ad5038849L,
|
|
0xe67abfec63c6e4aeL,0xccd08ba528153bdfL,0x9be9f5bced4d76bbL } },
|
|
/* 34 << 203 */
|
|
{ { 0x30fe00bb6e8423deL,0xe16ce94784e4d005L,0xaf0f8c283fed764cL,
|
|
0x05ef9bf67d92b1efL,0xbf6570d4eb481da7L,0x39349e30468494ebL },
|
|
{ 0xe32b99a63fb36907L,0xd92386da2d35e71bL,0x74af8b79166a973dL,
|
|
0xa0a177f94f72de6bL,0xfff3e19d5dd6c660L,0x15310d4d4b0d54f0L } },
|
|
/* 35 << 203 */
|
|
{ { 0x692a561f15c15a11L,0x25abe85f26ca3ddbL,0x50fef4444caffa5fL,
|
|
0x58472cfbed3f4aadL,0x7e9178f0092d2b83L,0x3afd364ff8dfaaa7L },
|
|
{ 0x4686ee5cbbf813a8L,0x6a62687d937cbae4L,0x56f22558a9b7b6c9L,
|
|
0x9af1beae9c189e25L,0xfac4ad9f4d41f79eL,0xdecb57431f9c7a40L } },
|
|
/* 36 << 203 */
|
|
{ { 0x3ac662895c02f173L,0x6a110e3876d566e5L,0xd9cc14e2b9577e26L,
|
|
0x6f3d5df9fdfe617eL,0x8fac740f352bb2caL,0x50bc8a0cc28e6310L },
|
|
{ 0x6e572fc477ac93f7L,0x56277377605bb8e9L,0xad6d0637402b8c55L,
|
|
0xdab377914509eda7L,0xae770abc0854e91bL,0x523bd278742b3de8L } },
|
|
/* 37 << 203 */
|
|
{ { 0x8ede0eea2aa0da2eL,0x7015ee6e90cfeb90L,0xef33f3efd6b3227aL,
|
|
0x6e332f1712ef9f4bL,0xcaa089898e7f9fe9L,0x001482ef8fa71529L },
|
|
{ 0x2522637907a5019aL,0x807faf01bed40fc9L,0x426002ab56710e12L,
|
|
0xcdfffbc18d3949e6L,0xcc03f27861284379L,0xcd7dc2026d5edc82L } },
|
|
/* 38 << 203 */
|
|
{ { 0x94f84d57cff31148L,0x9c567c7f6bf2a313L,0xc82e62353149ad8fL,
|
|
0x81f69703c2a5d513L,0xb54e6fc756eea9acL,0x6799c7957c3aae62L },
|
|
{ 0x78e89c1edb280515L,0x3c5693066ac42925L,0xd984c86dab063cc4L,
|
|
0x61754b5151d44ae3L,0x23af8ec0cebeef0fL,0xff67170bc618fe8aL } },
|
|
/* 39 << 203 */
|
|
{ { 0x123b567195b58447L,0x7397316ad43aabd2L,0xcb65d69d9ddc7979L,
|
|
0xf98be7bd91150e08L,0xa5388c79fc0ae5c7L,0xb115690215ed9074L },
|
|
{ 0xc2d01b9227e9afdeL,0x80d705ec2095a6ebL,0xbea901c7fab23079L,
|
|
0xced8b2772346d712L,0xad5c45a92542a0ffL,0x87b2e4ac0455e90fL } },
|
|
/* 40 << 203 */
|
|
{ { 0xc2cbd64417fecb90L,0x61616eb3b32dffdbL,0xdc4485a29f5d2095L,
|
|
0xf78911246553371bL,0x4f06ba18bf9b20afL,0x136d4f291a2c4df1L },
|
|
{ 0xc04aca34fb8b685fL,0xeec83c20f2b657bbL,0x4da5d70a5925a36aL,
|
|
0x8060874172ff2965L,0x2e0dd9ff9f352620L,0x5f0afa6746d1a7a8L } },
|
|
/* 41 << 203 */
|
|
{ { 0xb76c722762c1e582L,0xbce1eb164ffefd05L,0xa574a9fe169e53fbL,
|
|
0x77bf92b0c001628eL,0xd998172c04d60440L,0x62f35199ceae6bf7L },
|
|
{ 0xd81a563e93f1ff84L,0x5a7a0b4211598ad0L,0x884f2ca5ff11f3f8L,
|
|
0x99f5aac2f3ac66cbL,0x58497c01f489c5afL,0x11277bc39566521cL } },
|
|
/* 42 << 203 */
|
|
{ { 0xfb9670c26a770385L,0x5da887e1e9682174L,0x31fa9d6bedf922f3L,
|
|
0x8de8814cf7a98d1eL,0x3935b9b27a019f08L,0x1f59d6f3ea6173caL },
|
|
{ 0x8732f39d5c638a66L,0x981a1b7a3d48d3e5L,0xea451b381ee0ab37L,
|
|
0x31a8e9abf2708356L,0xa491944ee86cbfc1L,0xd747a885a97ddfcaL } },
|
|
/* 43 << 203 */
|
|
{ { 0xa3460236aefd304aL,0xaac80f43c58719a0L,0x7d635c17d3ca5b1aL,
|
|
0x986ac0a62119976aL,0x0d8a6e39f2538d36L,0x6a02af2f31849d5dL },
|
|
{ 0xecb6ef8f6719d4deL,0x6dd71ab674ff8880L,0x0d40ec0e9d225d93L,
|
|
0x304cd88adf381d24L,0x2d6787380c5571fbL,0x03c23f547c03af94L } },
|
|
/* 44 << 203 */
|
|
{ { 0xa995a95bf46aace5L,0x44ede5379eaa630aL,0x421f3b3500336e3bL,
|
|
0xbf897478cf47c9edL,0xf360ae32259e0827L,0x04e0e3e82e6a9f6bL },
|
|
{ 0xb26eae5fa9136702L,0xd6cb15a1853674b4L,0xf81276e2748bcbc9L,
|
|
0x7fc02e220a4ca1d7L,0xf650f48ecd82f330L,0xf4ea7c1dabaa8859L } },
|
|
/* 45 << 203 */
|
|
{ { 0xe9f090b935caae35L,0xe04dff188dcf1e6bL,0x81b7de5eb8032e04L,
|
|
0xba0d0b4e4b1e8070L,0xaa82dc8ad1a2aeb3L,0x5855ed1ded26f229L },
|
|
{ 0x8bce967ed1955233L,0xe6ed07f356ac7532L,0x4227c7fdbf0eff2dL,
|
|
0xb1f4785fa5e213e4L,0xeedad0733ac30f4bL,0x503619889cf1e686L } },
|
|
/* 46 << 203 */
|
|
{ { 0xeb252116ba5da79eL,0x51cc937edb691345L,0x1d5fec14077458c1L,
|
|
0xaa304f7ba0808e6fL,0x4bed89f5abec4c09L,0xc67293cbd1a3b798L },
|
|
{ 0x0905f7d342122672L,0x83675b2da0d3a277L,0x7f422b7024bf5bcaL,
|
|
0xe2144c6910495acfL,0xdac1c357a6a6ab5eL,0xd1a3b951c8b1d472L } },
|
|
/* 47 << 203 */
|
|
{ { 0x0821017d60c0c248L,0xa17ce97a8540bdc8L,0xe0576ea986e6f45eL,
|
|
0x1453268bf152c6eeL,0x1ea1937138edbed5L,0x970ad9c002343c23L },
|
|
{ 0x3a08a859af8a97afL,0x20caf7cab570d738L,0x6d82d863e2a89455L,
|
|
0x30eb8d0724c76844L,0xb31d58c8d32b79f1L,0xe5df7cb9fe63e93cL } },
|
|
/* 48 << 203 */
|
|
{ { 0x1ccd44ff95c746ecL,0xe18914b510405763L,0x50ed644321a3a927L,
|
|
0x4f96a1b143ef8e8fL,0x7f5645e577952bf8L,0x4bc5c7ab66dbdf15L },
|
|
{ 0xacc1612623930a08L,0xbf5ed482504cf9b6L,0xdeb7a798d71ecbd7L,
|
|
0xf62e63b14a4dd859L,0x668809a7daf714d9L,0xdd836382f3a4329eL } },
|
|
/* 49 << 203 */
|
|
{ { 0xac0ef2cf383e038bL,0x848e3c1f91135098L,0x19e5a3ee3f15b241L,
|
|
0x2d01f1a2dbea2ad2L,0x44ec32a799cb0bdfL,0x3e66fed4eab4d856L },
|
|
{ 0x3162a75af45c8656L,0x53ab74245a37ca4fL,0x1b81f1dc360bb395L,
|
|
0xa7eb222e2b8a5267L,0x163bb0c804b0bcaaL,0x1cac5bc0ef5c417dL } },
|
|
/* 50 << 203 */
|
|
{ { 0xb95e2d85e81d9e43L,0x8a92acdd1418f6d8L,0x5429140110ee43d7L,
|
|
0x32a2933c625838dfL,0x801d57dd3d485868L,0x33bba67258af765dL },
|
|
{ 0x545fe2583f520eecL,0x900ed51a32d71974L,0xf21fefe6df3ed77cL,
|
|
0x2f0df28c9deb2d81L,0x90898dd780856fb7L,0xeba82159bbba4771L } },
|
|
/* 51 << 203 */
|
|
{ { 0x83ecc8f374df3780L,0x432e9807d3a89728L,0x3461c5297b5cb6e0L,
|
|
0xee307c19030c25cbL,0xd72b60c7391ee616L,0x0c07bf462e9b4384L },
|
|
{ 0x9d791b0bd44acd49L,0xf3b3411c9f3b33caL,0x1bf55cb97f9b455fL,
|
|
0x77e01607600f0a91L,0xdab95bf26bb7e977L,0x30d0f591fe4633e5L } },
|
|
/* 52 << 203 */
|
|
{ { 0x894bdbd9c48f3ad5L,0x687ff8de09e167f6L,0xf06104a930371c43L,
|
|
0x82fd34b7ce84dd10L,0xae122deb66ce5abdL,0x31f041d2fc4a90b2L },
|
|
{ 0x2589535c9a01c607L,0x231bcc85695bd7abL,0xc67c306262e3a31dL,
|
|
0x31be44757af3e186L,0x1a2077a388efa7f1L,0xffe53e22815fad1aL } },
|
|
/* 53 << 203 */
|
|
{ { 0x4ce41f69a3ee310bL,0x38fb07d09bf311ddL,0x5fd284d660985bd4L,
|
|
0x2fe99a19e04d3dffL,0x21a352520b3ad853L,0xb0808a89012aa69cL },
|
|
{ 0x98219cf718c7c301L,0x429e08fc91254db8L,0xface2e53c41d54d0L,
|
|
0x180651242decb2d7L,0xa9f65e3f26a9191cL,0x1dadd3deed42831cL } },
|
|
/* 54 << 203 */
|
|
{ { 0x81ce91dd6327460aL,0x4cc880a0e2f22af0L,0x81aa9bb46a6d36f3L,
|
|
0x8ad516741dd10657L,0x212267854253b30aL,0x530d1f6a8f161dd6L },
|
|
{ 0xe7eeb4c7e9ab63aeL,0x84f225bfb72d250eL,0xc81cb984458a8dc7L,
|
|
0x39fbbe3bda68c1afL,0x8c6c99b3083cafd9L,0x4700ba37eb07d40bL } },
|
|
/* 55 << 203 */
|
|
{ { 0x8980dd7cd8dcc7b4L,0x0179e9bc7ad18f8dL,0xa9e4fa6a08c60f0aL,
|
|
0x4f0d76fa3cc7dd36L,0x53339e4c51a0e67eL,0x1acdaf24cebd80cbL },
|
|
{ 0x5aaebffcb5264b96L,0x3ebebb22858df87aL,0xb2f4c1cb092a95a1L,
|
|
0x34932d51841b1a63L,0xe0631aab49074a2fL,0x71525c4fe3b7fd61L } },
|
|
/* 56 << 203 */
|
|
{ { 0xdd15591366229776L,0x84093730f7882064L,0x6dddcb14e50ee337L,
|
|
0xa8e6ec597a1f7e81L,0x8467f998f3738a6aL,0x70fcc6bcad3f1840L },
|
|
{ 0xf82eb4be723b3f4bL,0xf0f3935406beec1bL,0x1b181ea37ddcb539L,
|
|
0x9c82c4faad6a81b9L,0xcc5ea5435c612c2bL,0x63ce7571bb258d6fL } },
|
|
/* 57 << 203 */
|
|
{ { 0xc6c110ecd3b9416aL,0x254403ea024f63e5L,0x92d2965b68aa4a66L,
|
|
0xa08bfaafbaed92aaL,0xe2194cd701ad3eb4L,0x7ba66e1da7552847L },
|
|
{ 0xf68c90ee44eb9bbbL,0xabe38c5c5f6438daL,0xe16d4aa68c38a6a1L,
|
|
0xc2f8691bf6294db4L,0x9248492fba64da6fL,0x850c6a6865a3d6b7L } },
|
|
/* 58 << 203 */
|
|
{ { 0xa794308d2599a1f7L,0x06bbefce3e72b328L,0x24f2c6f5420f6ae1L,
|
|
0xedf67defaae894c0L,0xf66396eb2e8e9821L,0x21fbf5f7a701c8ceL },
|
|
{ 0x7fbb192401732f26L,0x3d0063a944f57696L,0xd6bcb1c3513dd8f7L,
|
|
0x1fbb11b2c9f8c033L,0x122f94b17b57b3eaL,0x08edce19d24626c0L } },
|
|
/* 59 << 203 */
|
|
{ { 0x06aa75398c3a1e9cL,0x3512ec3c1a08c7caL,0xfad0dddac5a92e6aL,
|
|
0xa98059ee3b9022fdL,0xd67b6723103fbda5L,0xc1df32904762c170L },
|
|
{ 0xfd99ee58c734f81dL,0xa8de2a4b478b8a4fL,0x9e3ed58fb4b557c6L,
|
|
0x14d353c571abd10cL,0x10ea798fe3fd4475L,0x157e16f97627f4d5L } },
|
|
/* 60 << 203 */
|
|
{ { 0x1b5888550b96547fL,0x4539c9c065d1a59dL,0xd6c95fea26e15084L,
|
|
0xf84ad9e286b96242L,0x92f57d6d451a5486L,0x0215cfcb06a9e87eL },
|
|
{ 0xe05b10eaf66e46f3L,0xe7b0e72f655a0642L,0x035032677b117f43L,
|
|
0xf5b78105779ea4a1L,0x28ee00faa4adac77L,0x1ea67d716a93a2b1L } },
|
|
/* 61 << 203 */
|
|
{ { 0x4b68a01cd6b3387eL,0xc79582a9e7c4c99aL,0xa4ad6429029fc3bcL,
|
|
0xf260ad946b83c7adL,0x81360618b09c3b8eL,0xf66e00ccc661ba2bL },
|
|
{ 0xd064537de29a69e7L,0xe2764d389bb4095bL,0xa3f57eb0f2efdea7L,
|
|
0x72c214f27ed3ac00L,0xf8cfa59de392e32bL,0xa5d995124ad99928L } },
|
|
/* 62 << 203 */
|
|
{ { 0xd069a9971dec038dL,0x64401a3fd0b59bf0L,0x33eff74ce7ec5e85L,
|
|
0xfef5a1c50d35b207L,0x731cfc17e766bc43L,0xf994c0d01328b6cbL },
|
|
{ 0x4f2a5eaa2d3cc024L,0x7f83c57036a6fa14L,0x915a126d65f71dbdL,
|
|
0x588fdd68acfb54ebL,0x7de9d37b7f57b2afL,0xca52d27170e071ebL } },
|
|
/* 63 << 203 */
|
|
{ { 0x9b9211ada283322cL,0x30c6fa27b7124c9fL,0xda8f88a7474cbf5fL,
|
|
0xc2414ee338203749L,0xe5c65cc26b767731L,0x8bdb52952753781cL },
|
|
{ 0xc8fe770be051cd30L,0x6370ecc4f046aa97L,0x03c83c1cfa287e66L,
|
|
0x935bd2052bccef4dL,0x87b2a49646012036L,0xbce6a91de3e6d6aeL } },
|
|
/* 64 << 203 */
|
|
{ { 0x7be81fb126882c6cL,0xe2d5a251ecd25498L,0xbb3d40e27a8d1678L,
|
|
0x1806c67ad520811eL,0xadd4bb6686f65d23L,0x3a62b1b3e20e23d7L },
|
|
{ 0x208b47006548b3ebL,0x0497f09ab7ec2809L,0xbd3964f8121c37e2L,
|
|
0xd35ef301a598efbbL,0xbd76a276c5eef966L,0x64700a7f0af64e46L } },
|
|
/* 0 << 210 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 210 */
|
|
{ { 0x169474a2d3812087L,0x9de300da6698ca7aL,0x8589de922ede425bL,
|
|
0x50e03fea6df8a890L,0x0d8a5c1c4ba8b8e3L,0xf273aa673fffb91aL },
|
|
{ 0x21cf054475fc8236L,0x6ceafacf9799c242L,0xc3237eaed0962c81L,
|
|
0x43d6ac34213f6004L,0x45e619b2d4148b6bL,0xfafa18b5ea5fb80aL } },
|
|
/* 2 << 210 */
|
|
{ { 0x9a8580aa2f063b51L,0xa83c8ff71c216613L,0xb4da0970be07f781L,
|
|
0x0ac2a260712f7b7cL,0xc9b8ee84436a7b97L,0xd758c20d11fb2f62L },
|
|
{ 0x5daabed9f170b799L,0x018d2fddc46bc387L,0x82d6b5b7d96cfb8eL,
|
|
0x4d7d0d9344d9e843L,0xfa2a9ea991e7da3cL,0x8230c1a3d531b253L } },
|
|
/* 3 << 210 */
|
|
{ { 0x82412f525ec31754L,0x42f462c89d32e890L,0x1e7b58cece897ff2L,
|
|
0xcfef785241164628L,0x34ee0422d8bb22efL,0x6e0d44ac7d32f01bL },
|
|
{ 0x968251655a3cc196L,0xa26724dc99eb23d3L,0xdb575fafa75f7252L,
|
|
0x778e333062a3e5b1L,0x8689884e84cccc80L,0x9883cd19b645502dL } },
|
|
/* 4 << 210 */
|
|
{ { 0x4cc41f2834220e26L,0xb5937c6da49749c4L,0x705366640fa1ca24L,
|
|
0xeeb40f3b91e5edafL,0xcdf98235f1d3de14L,0xa65e5b7eff018c43L },
|
|
{ 0xaa3228e7acee3a6eL,0xb63a6289e08f4ff1L,0x90e90425650b2daaL,
|
|
0xe4a8cad26d875f17L,0xc212029c9ce8a46eL,0xce0512835ed7cfb5L } },
|
|
/* 5 << 210 */
|
|
{ { 0xb0df226159b79436L,0x82bd0dafa195be26L,0xbc99a94b3398c317L,
|
|
0xbeb44c903c96ee31L,0x3c39ad81664d2e46L,0x081787520a3e0585L },
|
|
{ 0x9a054b6b413e269aL,0xbe58891d98c3b62eL,0xe7fa4c4de5734974L,
|
|
0x8ac535f4d0a846a8L,0xea0f95f1a651339cL,0xa255274fd96aa239L } },
|
|
/* 6 << 210 */
|
|
{ { 0xe23b7b229534047eL,0xbd70aea83a3bd625L,0xf44b05fe238db60bL,
|
|
0x9c46fb140293abcfL,0x12cab5d3bfd8875bL,0x1f38d4aa12dd0c65L },
|
|
{ 0x4bed41572adf9805L,0x3f87da928a56609dL,0x10b93363da02c903L,
|
|
0x7ecc726621ce4786L,0x8ae366851e3da5bfL,0x196040ffd3edee12L } },
|
|
/* 7 << 210 */
|
|
{ { 0x4805841fe81508e8L,0xe2a578d3a4808642L,0x6bbf10accd0b2555L,
|
|
0xc5071effaf5cde28L,0x665e75439a7124a9L,0x157c11edc1437981L },
|
|
{ 0x2019367d7aeddd8bL,0x74a1e104386e3b8aL,0xe72d429bfbe09a42L,
|
|
0xaca96fd9061b862eL,0xbb2d2bc8122595f8L,0xc90c6503c509d644L } },
|
|
/* 8 << 210 */
|
|
{ { 0xadb5966fcff05adaL,0x8ed26c025c57284eL,0xa76e73e244693a95L,
|
|
0x14da74355982bbd3L,0x46e982cd5d2ca132L,0x8f39074024938e76L },
|
|
{ 0x749206b30a89b09aL,0x429653c793b4a1e5L,0xbee3d1567025bb7cL,
|
|
0xe23f0e1e19555c9eL,0x0dec3837751639baL,0xb36cb84405d43bd0L } },
|
|
/* 9 << 210 */
|
|
{ { 0xae76a96e74f90b6eL,0x5fa8e94824c6789cL,0x2b3584bb03abbb81L,
|
|
0xe19ce47c5c451f72L,0x35792fbad619ac7aL,0xfa0282a250059bf4L },
|
|
{ 0x562bfd14dabe692fL,0x1aaf542c47eeb6c2L,0x392d5bba045d0360L,
|
|
0x4e7bb31bd80fe998L,0x08f62ef31111e14dL,0x4de917b04e9ee1b8L } },
|
|
/* 10 << 210 */
|
|
{ { 0x8b9d2d5867166271L,0x658db4ea142bab7cL,0xdf84932fa4ad2849L,
|
|
0x04b113355f6f86a7L,0x2de6b29c50cfcea7L,0x46d8f68a9be6a3a3L },
|
|
{ 0xfb88cda7af0204afL,0x3ece449126029d72L,0x69fef1e23f946dfdL,
|
|
0x708532fb01ef7bb5L,0x78d5053deb3795a2L,0x819a63206b36d57bL } },
|
|
/* 11 << 210 */
|
|
{ { 0xca07e0c1e509d19eL,0x6c7e42c39f6281b1L,0x0e2ff43977b66728L,
|
|
0x1d740e7880e76251L,0x6bfae4c631a0eb23L,0xd78ca917aa9b0b3bL },
|
|
{ 0xe140c662991e1781L,0x6e396b5f0dd3cfeeL,0xf0a1d1976ce7f6c7L,
|
|
0xbe10f8efd5b01564L,0x865cbd54101a5194L,0xf665885266861dedL } },
|
|
/* 12 << 210 */
|
|
{ { 0xe4e52e865b28f7daL,0xeb43a6809a58683fL,0x73b951bfb49f2b38L,
|
|
0x7b6cb7db3f8097cfL,0x9dfb8d0b328fbf05L,0x491635a5ebce6211L },
|
|
{ 0xa31a152390fdd577L,0x334120df1cd2f39cL,0x1d22834e6b563876L,
|
|
0xfd91b30d10ee5a28L,0x3d7a282d59aee4eaL,0x36814c6b73300a76L } },
|
|
/* 13 << 210 */
|
|
{ { 0x7b584add6621c251L,0x98da669d4233aba3L,0x4d652b7933aa2065L,
|
|
0x901bcfb8df7b4ed4L,0xb2ce587948012f81L,0xc18e2cd63cb71b88L },
|
|
{ 0xadb0f2bdff86279dL,0x46d9e5d65bd15866L,0x11b1fb3ec635a4c0L,
|
|
0x8bcd0ad201b1006aL,0x0f6f7502cbab210bL,0xd6cc3e560d6b3995L } },
|
|
/* 14 << 210 */
|
|
{ { 0xa54a6420137264c5L,0xa6ef0e78f9c2e45eL,0xba8b5a73d58d850cL,
|
|
0xc0209ed86ef6fc3eL,0xe39dd0f391f7518aL,0x74697b8942b3eda6L },
|
|
{ 0x2dccac36abfc9150L,0x80e4fba298b2f5a5L,0xe0e56fd2771018d5L,
|
|
0xa31fd1684c22bb94L,0x8b0998f71a66ef21L,0xed483e55b5a53ddbL } },
|
|
/* 15 << 210 */
|
|
{ { 0x95db1c0ef23978ebL,0x80ad1612f04011f4L,0xe76bd1824d7ae83dL,
|
|
0x841d6e668fc3bd60L,0xb68e80796875e2d0L,0xe3965efcd5d9dee7L },
|
|
{ 0xc488bb7e58930931L,0x52f4de19a907aa24L,0x39aebbdd321cc197L,
|
|
0xd2f5b1f967de5c66L,0x60f1a8c28efe3e76L,0xf40604a0af988831L } },
|
|
/* 16 << 210 */
|
|
{ { 0x78b5c14c0acb5935L,0xd9ec715c4311d3beL,0xffa22ab209e1759eL,
|
|
0x5a86263db4b2f68cL,0x71e77c516b5be7f4L,0xfb5bea3a19844f6dL },
|
|
{ 0x2519d0060890ffabL,0x426a03f0f0329ef0L,0x2c6d74a685b3c2a9L,
|
|
0x9306f68fc294f449L,0x552e77c22c69fb46L,0x7c7337ad10bb9886L } },
|
|
/* 17 << 210 */
|
|
{ { 0x61f8a505d2b9f25bL,0x1d33aafe4c8645ffL,0x26f3fab7bcd333e5L,
|
|
0x8ff4fc51be95e40fL,0x11cd52c6b55bdd5aL,0xf2b4782a22d43de8L },
|
|
{ 0xfe66e399a4c0e1c4L,0x26c6d7fc17954032L,0x44c700f97f20d2caL,
|
|
0xdf67c3927187cdc7L,0xe11a98f9da36414cL,0x0bc5763a04052276L } },
|
|
/* 18 << 210 */
|
|
{ { 0xe75b564bcf95451bL,0xd5ed760cc01aac32L,0xccf14dc5980d2c06L,
|
|
0x235b5034ce2a5c0cL,0x64dc86aa05fa6780L,0x1d2ea4877385590dL },
|
|
{ 0xb18696f636c3174eL,0xf530487b608215b4L,0xa073d0750a123172L,
|
|
0x8ca24b5afde8666aL,0xd6dd589a9b716dc1L,0xcab7ea504a721d4aL } },
|
|
/* 19 << 210 */
|
|
{ { 0x34dee42c1592ebceL,0x5b0eba2e417636d3L,0xba178703a97d7356L,
|
|
0x16f6119f4123e8cfL,0xd2906a53ef179fa6L,0xac5530606b7ed572L },
|
|
{ 0x82a25857b600f5c8L,0xb1dc1309973d516aL,0x6d53a967245c6e34L,
|
|
0x7ce90bf4f670b879L,0x727ad4129732b6ebL,0xf00fb0054411dfd5L } },
|
|
/* 20 << 210 */
|
|
{ { 0xeba7daad2b14da6fL,0x8274d1a8cee90515L,0x985c18f885bdbc82L,
|
|
0x86555ff094d43909L,0xb0b1b2b6539e108bL,0xa4f32c66c0bf1313L },
|
|
{ 0xbd4777c162080e0bL,0x73039da8dadfb23dL,0x85bc57374a27f1ddL,
|
|
0x9a8ae24eeaaa58abL,0x161cb2f5e876fac2L,0x54d457e46636e377L } },
|
|
/* 21 << 210 */
|
|
{ { 0x409b17487bece8c3L,0xee36a1d3b49f5c90L,0x8ed9eb2a619ecefcL,
|
|
0xc50a917798ab7bb1L,0x1eb247cceee2ccffL,0x07a9566f084a0f69L },
|
|
{ 0x59bda805a7cbee61L,0xf588124ca4e7ecd7L,0x0f7d8c3dde5eed54L,
|
|
0xd98894ddefcb791fL,0x2fd80439ab309d7dL,0x0c8bf15d3e6cf756L } },
|
|
/* 22 << 210 */
|
|
{ { 0x076a19c70e68a69dL,0x4d01c94b24b3854fL,0x9f38c5eeea8a85b8L,
|
|
0xea80422d9a56f9c3L,0x10d9ceec9ad36735L,0x42194df742261173L },
|
|
{ 0xc7332e70c285d22dL,0xf3a3d4be592ff9b0L,0x2fe712f7f59846abL,
|
|
0xd6de5201e4362677L,0x16ce8f1d4f30006bL,0x1f3c324d11dba5edL } },
|
|
/* 23 << 210 */
|
|
{ { 0xa5af9e1c0cb4335cL,0x00a46bc0f3d0dbe5L,0x852a18c99d734817L,
|
|
0xc12d54a9986c0102L,0x184b407063ffe60dL,0xe05182437d99d723L },
|
|
{ 0x8d3886cb20ef7647L,0x7e9c618017b1ce8fL,0x194baf260f176141L,
|
|
0x978015d3b4694945L,0x2603be2f1c135e8eL,0xbc0f5e72ba074e0aL } },
|
|
/* 24 << 210 */
|
|
{ { 0x1674b959cfe7bcebL,0x62e1279fe7b66a28L,0x3962a32dc67c3648L,
|
|
0x4949617368d720a6L,0x4e81df85a957a5b2L,0x28b5c45753123c0fL },
|
|
{ 0x5091dd347e239c67L,0x10b9c3f6160ef925L,0x5e7720f52c119dbeL,
|
|
0xd584ae76c94d609aL,0x476c63ba86dccd1fL,0x70103a1a32508c6eL } },
|
|
/* 25 << 210 */
|
|
{ { 0x64f4f4ee90a17a16L,0x31165bee7cb22fb7L,0x31da800b924825b0L,
|
|
0xc2c169db0551e47cL,0xf9ca5e0e0d583789L,0x5e4fbdb53cd42f2cL },
|
|
{ 0x6ade1fce1d81000bL,0xa105df391d6603e5L,0xd659094da3139f95L,
|
|
0x363a882851d01444L,0x13cd7cbb2dece086L,0xaeea2aa96ab9020aL } },
|
|
/* 26 << 210 */
|
|
{ { 0xdcb31a931081405fL,0x200090dcf1326ecbL,0x773fe49cde99f0ddL,
|
|
0xf6a7cb67fac2c511L,0x95c93429b40b014dL,0x967708d4198dd723L },
|
|
{ 0x74591cc184b90062L,0x2539ef20691d2550L,0x7d7290765a5d86c7L,
|
|
0xa81f085475c6fdacL,0x103186d1c0f0d5cfL,0x5ae582e07eb3b8d9L } },
|
|
/* 27 << 210 */
|
|
{ { 0x7df39eb2f9f3456cL,0x1e7ad4587be12020L,0xaee54df11fedfb79L,
|
|
0x98f3a0879bf1dfe6L,0xdf958d371d13fb71L,0xa745249717dc809dL },
|
|
{ 0x9f2ec9dd02d4eb90L,0x9db5686e48b0c7a0L,0x7d064cbf72532eb0L,
|
|
0xe204d56593a71a9cL,0x0c912346f1aecdecL,0x894224a3d25d243dL } },
|
|
/* 28 << 210 */
|
|
{ { 0x6bbf77cb5a508291L,0x2af81442d35db82cL,0x357feb1a2b9febf8L,
|
|
0x74240a81a25330ceL,0x7a9ab575b4917998L,0xa60288d5eda3ef5cL },
|
|
{ 0x360410d30aea9569L,0xef66acb5b9bf8c16L,0x7baeb466cc381b57L,
|
|
0x024a98b8247a4904L,0x6e70b4c3e3c58130L,0x276e2420ae8a56d2L } },
|
|
/* 29 << 210 */
|
|
{ { 0x3b4a25222c57f1f3L,0xf43d352ba8d1f53bL,0x169fb3cce198b03cL,
|
|
0x92172ca923235a6eL,0x90b5953683f996e5L,0x32b1a34cb5ab11a0L },
|
|
{ 0xb944e4b7b9001351L,0x1084de3d28ab5cb2L,0x60f1dc93c70ec63dL,
|
|
0x790e1d496cfa10f9L,0x79bcc2277c3cd865L,0x95007ac24fd31fd0L } },
|
|
/* 30 << 210 */
|
|
{ { 0x6b5d8db5f75e17b5L,0xc5ab42961b45a230L,0x586f097b7486832aL,
|
|
0x1ec456c14f289757L,0xd11773bb57b04a20L,0xc84dfacd0821d3dfL },
|
|
{ 0x580da8cd586e399cL,0x58c1355ae3bbec57L,0x0a476934d594a2e5L,
|
|
0x0490ffd537e99427L,0xd41348386a4d8c4eL,0xd62cccb3c83d6e28L } },
|
|
/* 31 << 210 */
|
|
{ { 0xe6071a3d57c9e219L,0x88728c47a93f38dbL,0x0426848b50eb1a01L,
|
|
0x9df36972cada9a09L,0xf2ad4a2d4f494ec4L,0xae26577de1f34993L },
|
|
{ 0x72ec08cde3618d7aL,0xd1fb89013ea90c46L,0x915936173b94f996L,
|
|
0x8703357705387745L,0xf1961ff818fd5199L,0x7f0b58d34c2aeed1L } },
|
|
/* 32 << 210 */
|
|
{ { 0x3313a9d544b133d9L,0xdb85c25d2da910ddL,0xc0fdef915e4dd5cdL,
|
|
0x902a2a93c565dd67L,0xd8eba4dc7fed05acL,0xd453995ce157dae9L },
|
|
{ 0xd655d0b3f250cb55L,0x4194a09e86119222L,0x5b7e525a0652872bL,
|
|
0xaf7968efe68c0ddbL,0x2ec02930f51cb31cL,0x237f3ae4f2be071eL } },
|
|
/* 33 << 210 */
|
|
{ { 0x696d84910dc943a1L,0x1f24fd7d9fe1d7d5L,0xea38c9e349413ad7L,
|
|
0xe223996607c1cecaL,0x62094496ea7bd8dcL,0x9aba5bc7236dd525L },
|
|
{ 0xa138ed5851631b6fL,0xed724f20902f109aL,0x3ab594cccb28f1e8L,
|
|
0x3424213b5916dae7L,0x07e5a6df18479651L,0x4c51f2e1c5b48e29L } },
|
|
/* 34 << 210 */
|
|
{ { 0x6306564b6591a811L,0x734b2619fd463a13L,0xa795d0569d8019d8L,
|
|
0x103d85004ffe5858L,0xe1962c31adab8484L,0x326b3351b2015dccL },
|
|
{ 0x2ad52b852ff36c73L,0x5874652308682fcaL,0xf544e162ea37824eL,
|
|
0xd4a6b45ec208ce7cL,0x52d09045d2559ef2L,0xde1dfbbe57ebca65L } },
|
|
/* 35 << 210 */
|
|
{ { 0x3a94aec3bb793f9aL,0xd0af44d4b5352511L,0x1d3f1c130b8930cdL,
|
|
0x016cab225a729e0cL,0x092a7c11e31b549aL,0x80c462ed90ebfea4L },
|
|
{ 0x3dcb9606e5e4ae09L,0xad150903ab59a450L,0x1b58210c6c944727L,
|
|
0x26599f6024572a80L,0xfce0ad40c0445075L,0xedca1ada54c4037dL } },
|
|
/* 36 << 210 */
|
|
{ { 0x794593303801b021L,0xb19bb405c9a4cde4L,0xe20091667f9cdee9L,
|
|
0x762c684f7636d30eL,0xbf2b29f20c215831L,0x4c0d1b651853fe90L },
|
|
{ 0x196ccb3157defc94L,0x9f3d66b7f6b9cc44L,0xb2328a0eea439deeL,
|
|
0x82b3808d7b140e5bL,0x986210dd88e4a35cL,0x9b171fc838a2b7a7L } },
|
|
/* 37 << 210 */
|
|
{ { 0xdc80e3ae91517233L,0xa219f65dc6f20d29L,0xd348a3d8be093f56L,
|
|
0x63c233774d33113bL,0x587fd56257f2ce9bL,0x82cf3e3a4e9061c0L },
|
|
{ 0x0e41f59bee8dd928L,0x7a5641be8aaef52dL,0xa852a171984ff476L,
|
|
0x3c37fd1c047457b6L,0x7f00d665972d4793L,0x29dab0fd97b27966L } },
|
|
/* 38 << 210 */
|
|
{ { 0xb1d119c91e9d07c0L,0x2f973a09432c86afL,0x3505b6f05ded5546L,
|
|
0x21814b958687f973L,0xc104d7fad3794ae9L,0x81614d707ea91311L },
|
|
{ 0xb7f3e6b600677961L,0x53fceb8bc0e6a90dL,0xa3a7485699ed4fb6L,
|
|
0x07ad488421d4807bL,0x527b1ae6004e0c03L,0x437f306215146393L } },
|
|
/* 39 << 210 */
|
|
{ { 0x917b4cf463e12603L,0x79e0b7363f838ecdL,0x57de4b3328b4f37eL,
|
|
0x3085e4887f58fcfaL,0xb9301c4e958a3bc6L,0xef8d10578b044eddL },
|
|
{ 0x2123d284d6391459L,0xdfcc2be5e196d765L,0xb58216268184b993L,
|
|
0x13e21d03937c6048L,0x39eb3d38460d11fdL,0xf8ef123e5bb23c30L } },
|
|
/* 40 << 210 */
|
|
{ { 0xa6f8b354666eb2f0L,0x7fbf6d91f9c7b16eL,0x9b360814161b5e0bL,
|
|
0x13726fbd921511a4L,0x37aa1b8013833a11L,0x53f01183407b9889L },
|
|
{ 0x8a83ea3fd147da9fL,0x25279241db0ad0b1L,0x78353bccd1a8d9aeL,
|
|
0x1e33c10e271f7f0eL,0x136d9e7e9e67adc5L,0x11dcef95cc56ff8dL } },
|
|
/* 41 << 210 */
|
|
{ { 0xae530580d84ba919L,0xac2e43ceb6d3ecd5L,0xf97b1afda4bc6a2dL,
|
|
0x180d66d5bdfa96a0L,0x935b8a7d1ca12bf5L,0x1d4409a79e678225L },
|
|
{ 0xdd85bf4b19a2163cL,0xe34197bcddeeb22bL,0x1e33fc3e1210cde9L,
|
|
0xc96212a98b9b5d0aL,0xa3ae81f303e4a12bL,0x531a7148ea262807L } },
|
|
/* 42 << 210 */
|
|
{ { 0xf11ac5fd4ace8006L,0x898a388133c499a5L,0xcf27ab9f1d3368ffL,
|
|
0xfb6019606cbd6e54L,0x5373c2a901fb58b6L,0x1489f5037cd1b888L },
|
|
{ 0xb3f0e0b85a238131L,0xd0e11e6e670858bdL,0x897f1584b65768f8L,
|
|
0x9252aa72013b1f2dL,0x185842af0a1a5f8bL,0x49a978373d681a70L } },
|
|
/* 43 << 210 */
|
|
{ { 0x8b65c6d23396eaf3L,0x2191764e50b9392fL,0x7a2363b72dcf6d0aL,
|
|
0xa6a52402f0591553L,0xfaba81cd5ff7a071L,0xd6be926ae43e37aeL },
|
|
{ 0x7b34c578ccaacef2L,0x2bc5d248d5eec9b1L,0x9447aab3014c0048L,
|
|
0x767309a3c02d54d0L,0x408c6eee1f92297dL,0xf7ad95f40072a2d4L } },
|
|
/* 44 << 210 */
|
|
{ { 0xd0051ab940ee5098L,0x4861b2461d8311deL,0x6b7796e0f31e860fL,
|
|
0xde8b243acfd543e3L,0xef9d0957a0161843L,0x70fd43ecefefcbaeL },
|
|
{ 0xd47392541931a5a6L,0x42e253300342623aL,0x90b33edd52ffbf5fL,
|
|
0x0affda4ca015a550L,0x8716376b77e59672L,0x39d84b33fc0e9448L } },
|
|
/* 45 << 210 */
|
|
{ { 0x71b55e7ea0415173L,0x5d0b5e01b10f3cd5L,0x0c35a1b63e3f9d84L,
|
|
0x3c68cb5db794ba37L,0xa73356f0dfd6c999L,0xc59ed0650e5e221aL },
|
|
{ 0xc59443a90cd7d577L,0xa354296e283015a8L,0x202aee3ba7477107L,
|
|
0x59f361392ee80330L,0xc52bdfaae875a886L,0x8ca39d9d07637e97L } },
|
|
/* 46 << 210 */
|
|
{ { 0x95be10b8f3a1611dL,0x6db370f0d1f992c1L,0xb964029de8124b40L,
|
|
0x618b26aadfc90473L,0xac65c9916f6d5553L,0x10d5b0f0a0a6fde8L },
|
|
{ 0x4bff23122d164911L,0x876db39d1f7293b1L,0xa2d3cd549de47789L,
|
|
0xd8ca4f6eabc9a28eL,0x0bb3145fca7b5467L,0x4dce66338b37bf62L } },
|
|
/* 47 << 210 */
|
|
{ { 0xcdd8ec4dec1b8d36L,0xf76258d888003e0cL,0x35a114e7262723f9L,
|
|
0x12933142abb34bcaL,0xf55b84514c188a3bL,0xa0cfdb2c0ada78b6L },
|
|
{ 0xaf0b62f6ed36781cL,0x0c619486ea7e1ca1L,0x11fae38689162fc3L,
|
|
0xe9bd7ae694828e92L,0x081c3acda84cedb9L,0xb34ceca8787a67e0L } },
|
|
/* 48 << 210 */
|
|
{ { 0xd1b2af2f2bca651bL,0x2211e4f97404bc78L,0x787b1cc8fc5068f2L,
|
|
0x73d6da299fcbb3f5L,0x6867fb7707d2142fL,0x36f277ae116ad6bdL },
|
|
{ 0x81c86073a7534943L,0x67188488c4033c7aL,0x13a8415ccc568123L,
|
|
0xbc01db07f3f475deL,0x90b8af2e3aaeee1aL,0x320c4880175fa55bL } },
|
|
/* 49 << 210 */
|
|
{ { 0x263afd7d2fcafc9aL,0x9b0c30ebcc9405d6L,0x713fdd27d6720896L,
|
|
0xb07f8ec5f7df4a02L,0x05d62e5147ddd4e1L,0x6278227b8ae3b80aL },
|
|
{ 0x2ef5c81b0d4ab658L,0xe6ad5925016a434bL,0x6c0e30a2b85d8037L,
|
|
0x254830037a9cd869L,0x78da543b2cc48c8aL,0x3a65b54e3edca4dbL } },
|
|
/* 50 << 210 */
|
|
{ { 0xaf2a06c3d54b0072L,0x81621ebfaf0310c5L,0x6bd1fe41a8a7a9ecL,
|
|
0x942cf6ba03e74289L,0x2a25f0f59f9822e8L,0x16654b13062edd3eL },
|
|
{ 0x2345a0b19de373cdL,0x425a59f80c0744acL,0xc6738fe96f0d620aL,
|
|
0xaa479ef8ed67c1a9L,0x52540af87765b194L,0x17a3bd3bf2b96455L } },
|
|
/* 51 << 210 */
|
|
{ { 0x5b1a1f075f01e608L,0x3c696f4e87b821c5L,0x4358a5243129700fL,
|
|
0xfc9816a14be9d001L,0x905de48166744b96L,0x2ca5f8d8eeda3945L },
|
|
{ 0xb30eeb1aad207f4eL,0xbd113b2dbc66e6f7L,0x1b6c5c6cebaef81dL,
|
|
0x6b3863998bfaf32bL,0x5f9f2a2432a83dffL,0xe8cc190e26ea39d1L } },
|
|
/* 52 << 210 */
|
|
{ { 0x51e05f7d450535fbL,0xa5f5181effbe389fL,0xdf178fffaa2d5514L,
|
|
0x89358810e51da035L,0x206e324f664d399cL,0xc148ae74c4477d4eL },
|
|
{ 0xe0c8d4377d6f38d5L,0x327aad6d8c8133e9L,0xa685a889d21cac4dL,
|
|
0x1217c68d0ceb5770L,0xa4a09612d21f1d50L,0xab64b4dd889676afL } },
|
|
/* 53 << 210 */
|
|
{ { 0xf263062aee202007L,0x95e90bbda2359019L,0x57740eb39f34e691L,
|
|
0xa5f4fd0f355bef37L,0x484b97fb439f091dL,0x642776fe53ac871dL },
|
|
{ 0x5c8f9b1e494e0eddL,0xbc62c971ae25a6d7L,0x01981994a7d90290L,
|
|
0x3cec43524602cdc1L,0x4bd29f5a14403ae2L,0xafaef08b921328d2L } },
|
|
/* 54 << 210 */
|
|
{ { 0xd33e754a53ef149dL,0x82243def548034e6L,0x99c29a9b23ea2dcfL,
|
|
0x724e4b5d214848afL,0xe43d4438dcf85b9aL,0xaf7241ea9d7b20dfL },
|
|
{ 0x60a10c30069edb1bL,0x1aaddd5e9874f484L,0xfc784ac073085538L,
|
|
0xc998afe54d69703aL,0xb71f6fd7bf52139fL,0x28f994c46a45b089L } },
|
|
/* 55 << 210 */
|
|
{ { 0x85084ec2eebd9e0bL,0x73e489c6cb9f1929L,0x91e47fd7ebe10e55L,
|
|
0xeed6a3a1486a2704L,0xf63deae7e124d6e2L,0xca958204b48b3834L },
|
|
{ 0xe69cb5bb13185b44L,0x56be0e05868d97d0L,0xc48cb1e50181e64dL,
|
|
0xfaa012ddfc7827cdL,0xf535b1c83488352fL,0xd1cce04e9fbf42d4L } },
|
|
/* 56 << 210 */
|
|
{ { 0xa54436b6ba3403ffL,0x1fe4b1ecdcbc4822L,0xb3b351004c6846e2L,
|
|
0x360278048d1cac7cL,0x9eff87327e86d5d1L,0x7f435326ba21993aL },
|
|
{ 0xb51a9da5adc24224L,0x111c19fcc8c14a71L,0x05aa2c86ab77e011L,
|
|
0x81edc338ce72744dL,0x20fa8f528d882bc3L,0xc61c3e639d1696f3L } },
|
|
/* 57 << 210 */
|
|
{ { 0xa66674ca0f41637cL,0xa01d08ac418487daL,0x2ce4258b6b593194L,
|
|
0xd755220645024db4L,0xffb3366f626732ceL,0x802878f370ba2f1aL },
|
|
{ 0x80a3f41659b77372L,0xfbb411631a04b19cL,0x7d575112a346d265L,
|
|
0x6c30421ffff87d4fL,0x1b62b93fdcb05f02L,0x98ba4397b72649e3L } },
|
|
/* 58 << 210 */
|
|
{ { 0xcca45c1d135a7eb5L,0x2623e629b048126bL,0xada7326e926980f0L,
|
|
0x64f334c276bf796eL,0xf0751596b4a562a8L,0x0baa14486f9d0079L },
|
|
{ 0x6c394aa32205ea70L,0x635b9d2d556172e9L,0xf418fe0cfd37b53bL,
|
|
0xcf5fe2ac56b9791cL,0x9d855e67911c68ddL,0x9e40f75f734b57d8L } },
|
|
/* 59 << 210 */
|
|
{ { 0x32c42482b5b8f846L,0xdefec599b61cc3cfL,0x4c3460996506a9b5L,
|
|
0x0d9475a0263a6142L,0x1753cd92c80a6713L,0xc015412f420cf67eL },
|
|
{ 0x1c33f01b6a88d12bL,0xa49f038ef522f7d0L,0x232343decd25f260L,
|
|
0x479bc742d6a833c3L,0x2f2ab294cee07b83L,0x02e69a143dec38b3L } },
|
|
/* 60 << 210 */
|
|
{ { 0xbf7fea3aee1fee16L,0x31fb342ce0cde85bL,0x9a232ea51575924bL,
|
|
0xc3132e6cbcc4cf26L,0xbc5b7a7102499a58L,0x3064a3b904d99836L },
|
|
{ 0x6f17475ff8b3bad1L,0xaeeb90c429271790L,0x7f442a13f8eca53dL,
|
|
0x6d641eea08882274L,0x8dff43bf88ffaebaL,0xaa92827f5840b198L } },
|
|
/* 61 << 210 */
|
|
{ { 0xf5ce3fca26d803acL,0x6927ddd9d4e1b6b5L,0xb509b5c609f48bc0L,
|
|
0x2bc5d1749e35975aL,0xfba3024af570c98bL,0xeba15980aa27d6b0L },
|
|
{ 0x95abc07290abd2daL,0xd0e30e99232035cfL,0x3dc4e1bcd3f0ecb1L,
|
|
0xa5a8c6e556de9d17L,0x878c7403ab73bd18L,0x5cce39260c474b0aL } },
|
|
/* 62 << 210 */
|
|
{ { 0x86a3f001e93b6ee6L,0xa28984474fb3203aL,0xbca0d71e9b3550adL,
|
|
0xc225759d0396d796L,0x208b9a02cbd949d8L,0x15b21ec9a550d2ddL },
|
|
{ 0x64aaed6a2a7dcffaL,0xb8cc7575ed5b6b47L,0x2b4a3aff022dbce3L,
|
|
0xe85d690b86f51861L,0xe26a6c3d578f4d5fL,0x706d770a70e7ae76L } },
|
|
/* 63 << 210 */
|
|
{ { 0x822467eb579c91a6L,0xe98a471531599272L,0x7baf0e9f1078d497L,
|
|
0xd13f270e25fe439cL,0xae9d58adc0d95395L,0xc3beb60827693037L },
|
|
{ 0x4d9c4cf397f797e5L,0x4e26167db26d2e9dL,0x06092d5e86a167efL,
|
|
0x9827a21128dceb29L,0x30423344552a55ccL,0xae07b37f3fa437afL } },
|
|
/* 64 << 210 */
|
|
{ { 0x9b23ab4e94d0864fL,0x46356266009c9fc1L,0xdbe99e51e798edf9L,
|
|
0x38547449307675c7L,0x23ffaf55628c0fb6L,0x56ccd2a31698c372L },
|
|
{ 0x39f45a578347ce95L,0xe0aaec744f2c6118L,0x2a89079e4af138fcL,
|
|
0xb86371ea2ee4ecc0L,0x076d256a06bbf92fL,0x9073adb8ae3c4c51L } },
|
|
/* 0 << 217 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 217 */
|
|
{ { 0xba2e9543743c15d9L,0x7d5812db1c99c984L,0xf94db95145bdc19eL,
|
|
0x951d00ae382e77bdL,0x9940a5fbb220b29aL,0x6908d50e58fc91f1L },
|
|
{ 0x682e42eadd0940feL,0x2124e23aa1d32009L,0xbe15810016294d05L,
|
|
0xaea13fe32e326d68L,0xc0dfe1ef15e64fceL,0x32dbc0b5b8237a8aL } },
|
|
/* 2 << 217 */
|
|
{ { 0x6ee65a08c36d3f25L,0x7b6c811fe393e4d4L,0xc4a2cc382876e523L,
|
|
0xab7aba26d3bf53aaL,0x5bf00871db7f290cL,0x3cb1cd131ee6d5bdL },
|
|
{ 0x4cafb218de998adaL,0xa1ecf36af6319101L,0xa1fe785520b281ccL,
|
|
0xe457198e64d9c65eL,0xa3d1a6d0c5a0e67bL,0x69ddbc3290cc468aL } },
|
|
/* 3 << 217 */
|
|
{ { 0xd4ee3f7f6dadc46fL,0xa1f3dc925d7febd6L,0x4c0bee1363ebab5bL,
|
|
0x70e32d77005ec237L,0x302fc73dc52fb006L,0x1af84c0a8f159899L },
|
|
{ 0x42a5478f0686232aL,0xb4fc56348a308687L,0x042c4970c8378f0dL,
|
|
0x70c195758e2c86c5L,0x61a95e6884c7c767L,0xd96a8216d6fb43a8L } },
|
|
/* 4 << 217 */
|
|
{ { 0x0c62fd2d543c1255L,0x71ea9c6fef361a27L,0x76b0933dcef3f9e3L,
|
|
0x51b1ec2d9889ffa2L,0x9e84b2ba9a3c88d2L,0xc8996b961913e52fL },
|
|
{ 0xbafc5e94cee43e36L,0xd9898d2470c658b7L,0x4e9bcc41bed17108L,
|
|
0x0db5b7336c7a41c8L,0xd4be07a7795369cdL,0xb899f92f7bd3a934L } },
|
|
/* 5 << 217 */
|
|
{ { 0x1fffcbc010e15fafL,0x8447bdb8910245acL,0x857d521e86476901L,
|
|
0xcd1d5f87369ccfe9L,0x560b3277b3f1dbf1L,0x4ac02a1a47ea4266L },
|
|
{ 0x29ac98b6a8a929eeL,0x020ec6db5e5e70c0L,0xb0be38ba21291be6L,
|
|
0xcbe9d362bdba40deL,0xc585450571535a89L,0xc21839de3d7a3235L } },
|
|
/* 6 << 217 */
|
|
{ { 0x831541b39805497aL,0x2ceb5ac879c414cbL,0x86601fa616d2eb82L,
|
|
0x373d19079338ce8eL,0x98151a90c1f5c87aL,0x966ebde6048a538cL },
|
|
{ 0x5c4a8c5ae180ff7cL,0x6d9065dff996d994L,0x4e0dd86e2460ab91L,
|
|
0xfbe8b3ff309a8f5eL,0x33d7cb35856f7218L,0x62b2200a1ac59f2aL } },
|
|
/* 7 << 217 */
|
|
{ { 0xb36ad750a460e53fL,0x727006d60df0f7b0L,0x6ca3ac348ee96a11L,
|
|
0xb04f6ae930e75d1bL,0x9957738a3a24e9eeL,0xc0117a7d16521e18L },
|
|
{ 0x79fcea8872ad7e27L,0xcbe2c2d37281e3b5L,0x31915f1cc391fc60L,
|
|
0x1c1c0082a13a92e1L,0x362663cc7ddca7acL,0x8021aad689689d35L } },
|
|
/* 8 << 217 */
|
|
{ { 0x3f2eff53de1e4e55L,0x6b749943e4d3ecc4L,0xaf10b18a0dde190dL,
|
|
0xf491b98da26b0409L,0x66080782a2b1d944L,0x59277dc697e8c541L },
|
|
{ 0xfdbfc5f6006f18aaL,0x435d165bfadd8be1L,0x8e5d263857645ef4L,
|
|
0x31bcfda6a0258363L,0xf5330ab8d35d2503L,0xb71369f0c7cab285L } },
|
|
/* 9 << 217 */
|
|
{ { 0xc19db6f05890e1cbL,0xc21587edfcac8d05L,0xa9e88798d86730edL,
|
|
0xee3e6ee2c27441cfL,0xadb2c63ea23af57fL,0xb524b7da29ff5977L },
|
|
{ 0xab1ed847d3e4739dL,0x6592a0131cbfb581L,0x1f519c6ea1798195L,
|
|
0xfe837a814c324a4dL,0x74fec4a85c813abcL,0x7b3b5351dce539b0L } },
|
|
/* 10 << 217 */
|
|
{ { 0xb886a0c50c99e321L,0x4063d19576e924e9L,0xc03cca041a659dcbL,
|
|
0x1e01abbc1bd3dab0L,0x9d7cf04fe9141cd8L,0x5f87dfa73ef58d85L },
|
|
{ 0xa579e76388d764b8L,0x381dec6a74b9e5b3L,0x354221f99a4c9a67L,
|
|
0x8c2556d33f529346L,0xced3642bb4349eb7L,0x1527cec7fef5c92cL } },
|
|
/* 11 << 217 */
|
|
{ { 0xf2e42ef7785ecd51L,0xca3438cf33d9c0d2L,0xeef9ec08c1c097f3L,
|
|
0x9e438fa746682aa7L,0x53d0144531a7eefbL,0x04431241e6998a0bL },
|
|
{ 0x2c1bb2bd55bc7febL,0xed99e7afb44d4943L,0x7f37bc4a3c77d21eL,
|
|
0x866c0978398e3997L,0xed7462305bde12b8L,0x24796f7c7194fd1fL } },
|
|
/* 12 << 217 */
|
|
{ { 0x7e4450cd5e83d570L,0x0113cab242b394e7L,0xdf4062a08ee24413L,
|
|
0xf8a0fd4931227510L,0x06b798f4b80f0d23L,0x33f17673b72bffa8L },
|
|
{ 0x4638602b5de9f490L,0xbe3a65834d905654L,0x446e0afaf406772cL,
|
|
0xef68dfd7b4ec908aL,0xa6be004966ab5ebfL,0x56049360ff376531L } },
|
|
/* 13 << 217 */
|
|
{ { 0xb47202b760b6ce82L,0x8129c1befe05e9faL,0xcb70cbdde861de07L,
|
|
0xcf35fbc5af16b6d9L,0x60071beec9916116L,0x3aaa496ed057e63cL },
|
|
{ 0x1cb0bb12c356f065L,0x12dccccef4de0d26L,0xe3f59cf67ccc0d48L,
|
|
0xd66f10b3d9569e26L,0x95f4d7e79d1853ccL,0x10313dfdbf651d5aL } },
|
|
/* 14 << 217 */
|
|
{ { 0x779b55062a3d9774L,0x3785db08e0554291L,0x9b3a4eb8546c69dcL,
|
|
0xfe36824dd22d8fc8L,0x037d9ac9471132a1L,0xc895e332a01e1c28L },
|
|
{ 0xe535ede71b5e2845L,0xdc90cd7c568743deL,0x3292b40b4691d367L,
|
|
0x911fad21b4f16a4bL,0xb3c5f0eb455d018dL,0x2eb2def669033748L } },
|
|
/* 15 << 217 */
|
|
{ { 0xfd1297a4307aa8fbL,0x021f242177952146L,0x17cc2d6f0ba72feeL,
|
|
0xa265095d01a3a733L,0x2e12c2e7a07d5f8bL,0x27bb60341202224cL },
|
|
{ 0xb58b3fab8185dc12L,0x83467b977700f166L,0x98242e227ff9e1ccL,
|
|
0x96b2a4d9f4b28f1dL,0x64113c3865ed82eaL,0x7dc9ab732ee160e8L } },
|
|
/* 16 << 217 */
|
|
{ { 0xf16938f514c5969bL,0xde2e3cf0944b2271L,0x2d5095530b6490d6L,
|
|
0x8432fef1a28a296aL,0x6f254dd08d26415cL,0x3780eeadd50c2865L },
|
|
{ 0x4f5bc455665b8794L,0xef31fb9e56cb7018L,0xbab8dd6e65e59340L,
|
|
0x676baca2a56dc2eaL,0x38eea06beaa90e05L,0x26e64224174bada0L } },
|
|
/* 17 << 217 */
|
|
{ { 0x309e9fbe109cdb79L,0xc2ed3566977d0e4eL,0x2891f30be6b944aeL,
|
|
0x514bd4cf5022e070L,0xae9a22a98726a661L,0x1114a0c8c1916b06L },
|
|
{ 0xe1b4f8339795adecL,0xcc0f3824ed4dbf8cL,0x432c93c878096a66L,
|
|
0xb9450e9da7d2ad83L,0x294b0c192c1e35ebL,0x791427038be5a953L } },
|
|
/* 18 << 217 */
|
|
{ { 0x4d215132881faf35L,0x52171a5ceec736a8L,0x4788813e1ba561d5L,
|
|
0x9ca022a7d35e399cL,0xbfcaab926c4b8d7eL,0xde62b2c007c7ec40L },
|
|
{ 0x7b46c2d96bb54e10L,0x2ce02e5a7d31e85aL,0xb757b699cd776c12L,
|
|
0x08f122552c81b71bL,0xaca91e058aa6b02aL,0x35cf7bd37209279dL } },
|
|
/* 19 << 217 */
|
|
{ { 0x24b5bc7086a04b9aL,0xd4d4c640612e0fbcL,0xb19ea7fcf732589aL,
|
|
0xa18b6f4081fc63cbL,0xddd7211d84d88fe2L,0x7e8db6f72963130cL },
|
|
{ 0x8772908c500c491fL,0xa3bf747783fd8a41L,0xca54d0d34e3e9fe9L,
|
|
0x9969471866b030d5L,0xc2f5fb98b1fd6736L,0x58d5a851d103fa45L } },
|
|
/* 20 << 217 */
|
|
{ { 0xe4c16fcda97a5decL,0xcc4333092f1dd4b8L,0x8cac9da985d334dcL,
|
|
0xb4deff204cda5a0cL,0x59eea4c9be70b1b9L,0x161e73a2ec5b7b58L },
|
|
{ 0x584c5e098b7fb4a6L,0x697fb795a3f7dd08L,0xc9e15f754bd4ba2cL,
|
|
0x66d04f47c83df783L,0x0c03c2452efedf63L,0xa76a08c94a87dbb4L } },
|
|
/* 21 << 217 */
|
|
{ { 0xde4e18c2da669a50L,0x0629350a480fb520L,0x84b3e68b7cac0748L,
|
|
0xab718a12da3e1e9eL,0x3f5c5489cc26aed3L,0x81c6b6d42a57ab3bL },
|
|
{ 0xc4ded8ce15d23825L,0x2d753e6a20c6eb43L,0xbaa120ec555f3a83L,
|
|
0xc72f9d3877e93abaL,0x4ce297d0373317cfL,0xf42b3e954845bc1fL } },
|
|
/* 22 << 217 */
|
|
{ { 0xbf162c19d7480e46L,0xa7f45ea76403bf0fL,0x250e936c6c51cef8L,
|
|
0x97ba086f1cd24b64L,0x271a22364cfb2889L,0x2685c98804dc4b48L },
|
|
{ 0x843bb75ac877f6a1L,0xe10cd5c799d5c7bcL,0xbe65eea1db60606aL,
|
|
0x9019a9a7a10d0d74L,0x5614c0b987c62e5eL,0xaab2308d38240d05L } },
|
|
/* 23 << 217 */
|
|
{ { 0xc908c6929a772e03L,0x73441df703928ce9L,0x36141b5bcf111c12L,
|
|
0xf6b9e2f16c7c3e5dL,0x1f245a77722c5b57L,0x07e3f364635f65e0L },
|
|
{ 0x1aab7abf272597d8L,0x03954428d4fe8e71L,0x7dd58036ecae1b5cL,
|
|
0x9b97c2f28c85b0f0L,0x68ed3dc6ace011e9L,0x8e4ab5ca1744a774L } },
|
|
/* 24 << 217 */
|
|
{ { 0xe6a19dcc40acc5a8L,0x1c3a1ff1dbc6dbf8L,0xb4d89b9fc6455613L,
|
|
0x6cb0fe44a7390d0eL,0xade197a459ea135aL,0xda6aa86520680982L },
|
|
{ 0x03db9be95a442c1bL,0x221a2d732bfb93f2L,0x44dee8d4753c196cL,
|
|
0x59adcc700b7c6ff5L,0xc6260ec24ca1b142L,0x4c3cb5c646cbd4f2L } },
|
|
/* 25 << 217 */
|
|
{ { 0x37daf7fd5a96d915L,0x1bba82e6d16a1332L,0x7558b642ce1135d0L,
|
|
0xc9fcd6ce3abc5915L,0xc3762a20b93ad4d3L,0xef0cdb45e4e74f82L },
|
|
{ 0x809b91dcd26fbab6L,0x1264f72ea9b53697L,0x264699ffd7c827f1L,
|
|
0x16d4f094d8c4976fL,0x244c90cd997df2caL,0x58eb3b1c76f77b3cL } },
|
|
/* 26 << 217 */
|
|
{ { 0xb99e2dde1ed04268L,0x94247d202497b83fL,0x0c6c21d1fb833507L,
|
|
0xa01e682fafab9c39L,0x4938108f4d84c3d5L,0x70b68c75347652d1L },
|
|
{ 0x458e814740e17747L,0xca752a14c3f8bb03L,0xaa537b4d8598d044L,
|
|
0xeec3febb7ff102e0L,0x10ef3cad247fe4baL,0xe4de5b1b5673ac39L } },
|
|
/* 27 << 217 */
|
|
{ { 0xbca2931378d0bb1aL,0xfcc237068e5c3fe4L,0x0f9d6b11dd0d67a3L,
|
|
0x9aec22faae14bbd8L,0x75f8d86e5bda7184L,0x6bcad95759aeb4c1L },
|
|
{ 0xbb1224a5990a9309L,0x00edc04ef7193f45L,0x870c1647c17cbff7L,
|
|
0x9855513c65031caeL,0xe5a2e2ded852b607L,0x540a4141e5671e25L } },
|
|
/* 28 << 217 */
|
|
{ { 0xfb0e2f2e4d5efff4L,0xbf3b96e73a143fd6L,0xa18a037f18579946L,
|
|
0xae02fd4ce48c8a51L,0x1cb139288745c177L,0x4991594a28c47832L },
|
|
{ 0xdce3b1d2fd51c1a2L,0x4e707213314cb09dL,0x5312de95ee323449L,
|
|
0x4925c4e789389866L,0x2438fd9e28ca17acL,0x58fd2aad872dc0acL } },
|
|
/* 29 << 217 */
|
|
{ { 0x75bcf0ef54ddedaeL,0x3cc75fc6f9077493L,0xc91b78df60f6b874L,
|
|
0x7687a1d0622634c1L,0x57fdef4f82cabf32L,0x544819218e2671e5L },
|
|
{ 0x526cbb27a3c37afbL,0xe0db88340d1aec76L,0xa034badb73cdef1cL,
|
|
0x165cdfad6281f26bL,0x5c90d4d1ce24a71aL,0xc404af1125f297a7L } },
|
|
/* 30 << 217 */
|
|
{ { 0x6b21a0ea2fd5df44L,0x2da8dc6cb36e5b1dL,0xa683e08ac3688655L,
|
|
0xfc5fbad3454bf878L,0x9d2fb9f12f73b749L,0x4612cf42f920b37dL },
|
|
{ 0x23da6b697035794dL,0x2763828adff7c198L,0xd320660522dd7eedL,
|
|
0x6829994cd1316e68L,0xd732bc8f62831ed9L,0x69c6972c9303d789L } },
|
|
/* 31 << 217 */
|
|
{ { 0xf5901854b0dcc28aL,0x81c92c1fcd18e579L,0x91a412ebc4b8e1cdL,
|
|
0x35f00725891d6ab8L,0x10d6bad8ad7aa63dL,0x8cda809d09df2b47L },
|
|
{ 0xe856cfbfa489c233L,0x7ea921addf1ecf5aL,0x884cc717fd724c37L,
|
|
0xe278f2457377136bL,0x240b142d9f3dc9ecL,0x80a384961139a645L } },
|
|
/* 32 << 217 */
|
|
{ { 0xa35e411c2cb40964L,0xdd7d4f4cc331a3d6L,0x7c7c859e89a66f2bL,
|
|
0x9908c37e0def8ecdL,0x8274124e344947b7L,0x0d279f7b568b0ce8L },
|
|
{ 0xe5291961866091ecL,0xb056e3bf3a08acc7L,0x60fb39e156bd3a7dL,
|
|
0xe56a34d6268f8562L,0xb3a1fe1613fd8293L,0x6a41e1a967537fcbL } },
|
|
/* 33 << 217 */
|
|
{ { 0x95c2bbfe021fc932L,0xc7e3399db2af7e0cL,0x1224bf06122670f7L,
|
|
0xc9e4513ffcc1fe85L,0x8c82371ddb50fa7eL,0x017c5498bb76e4b5L },
|
|
{ 0x5467926c7fa89f61L,0xa4a65606f3a1204cL,0x22133acfa64b2e59L,
|
|
0xab7896bce1247662L,0x75d35fb661780c9eL,0x99199644a91b33faL } },
|
|
/* 34 << 217 */
|
|
{ { 0xf799c4638471104eL,0x43c122dd8b91c351L,0x9db6498616dc06f7L,
|
|
0xf7e534410ebcf250L,0xa702c0f18373f9bbL,0x6ed8d39a1024e14eL },
|
|
{ 0x92913e436cabd9c4L,0xba906ef40dde6283L,0x06835e914a3972d8L,
|
|
0xfbba3c7dfd99c4feL,0xf843e6f1b950909aL,0x7ec9866df5160b4eL } },
|
|
/* 35 << 217 */
|
|
{ { 0x68f75bab06722bd4L,0xdeca718813066eeeL,0x4d658fa11152b8c6L,
|
|
0xfae01e657257c9e2L,0x999445f923e4189cL,0x2cbe272cef6f0b1aL },
|
|
{ 0x5f60d9d735fff303L,0x4ca7a54696235360L,0xf506201598758f1fL,
|
|
0xba81e7ad1dbaecbfL,0xd326e063c687425dL,0x8c46fa4b193484c5L } },
|
|
/* 36 << 217 */
|
|
{ { 0xa97149cf3c1f5f12L,0x17b04a3d143d72b6L,0x174195ff17449a22L,
|
|
0x851803960b136adfL,0x8d87d21f9a7adb22L,0xf9c9fc85a8f46d49L },
|
|
{ 0x7839f453a7ed1b7dL,0xe19d80ace9067ba5L,0xc387a6a0e41b8d6eL,
|
|
0xd11611e1241d287aL,0x2561ed02636240beL,0x3bd8c57df0fba033L } },
|
|
/* 37 << 217 */
|
|
{ { 0x7b5caacd3ea8ec1cL,0x221770e944624802L,0xafb1a4df5a32468aL,
|
|
0xdec20eb62e295525L,0xe1cd4fb9e309c92dL,0x0331b9c0e7256005L },
|
|
{ 0x987d4c55246f2fddL,0xa392d27367f70f8fL,0xccba11994e214e5fL,
|
|
0x789f0e4c9943562cL,0xf502ec237235c86bL,0x67403523987746d6L } },
|
|
/* 38 << 217 */
|
|
{ { 0xdd02ced216c97e7cL,0x578d6912dc3347baL,0x760260da2134e993L,
|
|
0xf96643dff34fb26aL,0xec214b767ea3285dL,0x19b135d4117733d1L },
|
|
{ 0x29a0e0636b037168L,0xb5df2bb95d1285eaL,0x5a2d3297796f0cc4L,
|
|
0xfcee639f2090e0b9L,0xba11e8a4d93c091dL,0x5b6fc501492250e5L } },
|
|
/* 39 << 217 */
|
|
{ { 0x6019d207263929d8L,0x9821d6e81f164aa2L,0x8f1b33f8d4924236L,
|
|
0x389e482fb72de1b1L,0x398785a862554c10L,0xed31cf8408469265L },
|
|
{ 0xf9b99e158a09f334L,0x9ddfd4eba83df391L,0x28a5cdf4caa4f7d5L,
|
|
0x32b9e3c68f68fd49L,0xbce64b93b6f52209L,0x72649c6fea7c4bdfL } },
|
|
/* 40 << 217 */
|
|
{ { 0x8a15d6fea417111fL,0xfe4a16bd71d93fccL,0x7a7ee38c55bbe732L,
|
|
0xeff146a51ff94a9dL,0xe572d13edd585ab5L,0xd879790e06491a5dL },
|
|
{ 0x9c84e1c52a58cb2eL,0xd79d13746c938630L,0xdb12cd9b385f06c7L,
|
|
0x0c93eb977a7759c3L,0xf1f5b0fe683bd706L,0x541e4f7285ec3d50L } },
|
|
/* 41 << 217 */
|
|
{ { 0x73bc200cfdd5504eL,0x73322fbf3825b0c3L,0xbf8bf1edd35c24d2L,
|
|
0x54eba9f52e2bc29eL,0x80ffb5fff3aa841bL,0xbc676f62cc188be9L },
|
|
{ 0x2e2f79290383f0dcL,0x886c647e0d42059bL,0x673f0ea113eb7019L,
|
|
0x630da63f3f9cd771L,0x2597592b3a0a42b2L,0xfd21fb21b83b8673L } },
|
|
/* 42 << 217 */
|
|
{ { 0xd39ebb9fd2b34df5L,0x622bd0c3db873666L,0x546cc7f77b52738fL,
|
|
0x0323cdd1c156c52eL,0x78b00818b5950f19L,0x8065a86a562bec17L },
|
|
{ 0x0b42eb1427ca5a49L,0x1791eaf1a457ac04L,0x3a2c93a6b2631402L,
|
|
0x28b9cd6fcacec5dcL,0x6a0a8826d4535a3dL,0xeb08a884a83fcdcbL } },
|
|
/* 43 << 217 */
|
|
{ { 0x16bae8925a940b6dL,0xfec394c1789562f0L,0x54349605ea412ea1L,
|
|
0xccd57783cd18e2cbL,0x394bea1a1c813e61L,0xf11c566ff249dd67L },
|
|
{ 0x2cd679c112207f37L,0x7780918e83d16012L,0xe8bdbef4646c9987L,
|
|
0x6e1882e5082dbbffL,0x811dd74777abe4acL,0x5bbbb740668380adL } },
|
|
/* 44 << 217 */
|
|
{ { 0x0969263a7321c39dL,0xbd13b28bab7aefcaL,0x10e431f205377165L,
|
|
0xbbb2a7d009442c57L,0xf935bc2d9cd156b7L,0x66c3d55e42406686L },
|
|
{ 0x4c529b76d20bdc50L,0x112e0f004d1c9f24L,0x414f1c65ed38dbc3L,
|
|
0x63ade49c4eea65caL,0xbefd8af5fab697e8L,0x727bd3b45cc3b209L } },
|
|
/* 45 << 217 */
|
|
{ { 0xb89d450a957925f4L,0xcb39b69c6e1e60f3L,0x55396e61ae3fffa3L,
|
|
0xe89d97962986fdceL,0x5521d6b787fcd037L,0x6c20b2b0ec718024L },
|
|
{ 0xb1e0964bad6529c9L,0xe1bdaba3bc38493bL,0x6a9cf9d6f19b4690L,
|
|
0xa2d035f7054466dcL,0x37df7fc07fa65c9fL,0x045b0b36106ef822L } },
|
|
/* 46 << 217 */
|
|
{ { 0xe4fc833eda5c9577L,0x22afb5addfbbca7cL,0x215de02eb902e8d9L,
|
|
0x215e4c900f1a6cb5L,0xf6d7e4a9d59e146cL,0xcd0c6c6e4912eb8cL },
|
|
{ 0xe0616976eae22897L,0xe2279d9f5d809d19L,0x2da1b7b3e282b2e5L,
|
|
0x19327068ebf058b7L,0x9b23df0f5934492eL,0xabeb464fb1752d68L } },
|
|
/* 47 << 217 */
|
|
{ { 0x6e754efc00d03f9bL,0x64aed0bd38b94393L,0x9d084ba16df2f6dfL,
|
|
0xfe383a56c6abe8f3L,0xd23c6ca2bc7bac13L,0xde8ef161e326b691L },
|
|
{ 0xbb4e853342f96925L,0x1391974f6601dc73L,0x3a545ffb700480cdL,
|
|
0x4d379c538884e214L,0x0fe40f66f713e900L,0xc7f202cbfff783ffL } },
|
|
/* 48 << 217 */
|
|
{ { 0x89e48d8bc6bb5e5fL,0x0880ede01ea95a10L,0x60f033d7302c0daaL,
|
|
0x15e4578a048eefe3L,0xfd6dec89b0a72244L,0x1f7cd75e309489cdL },
|
|
{ 0x7cdcc2a0e9aba7fdL,0xd18dc5c7f28ba00fL,0xa6300a455812b55fL,
|
|
0x8fa5c4152ca31d8cL,0x36aa3c234f3a5b5aL,0xd128739ec86cf4e0L } },
|
|
/* 49 << 217 */
|
|
{ { 0x7ac4712f660598aaL,0xe3f00c28aaba6261L,0xb71ac42e1a9b639bL,
|
|
0x19674c28f69958d0L,0x3983abfec4e5c60fL,0x67f4583a5de58f9fL },
|
|
{ 0x83e0bbbaf7278c06L,0xd1883aaa19c5f96bL,0x8ec0f2848b3128afL,
|
|
0xc88e07f49166e04cL,0xa515a9e44e3995c9L,0x0680a306b757ec2bL } },
|
|
/* 50 << 217 */
|
|
{ { 0x5673b61e6d6f3aedL,0xcd1275e29524fd2dL,0xa8844f08cde12134L,
|
|
0xeca3eb27b8366e0cL,0x5ce49d498bbe04b4L,0x0b7ab7a02882b056L },
|
|
{ 0x12fddcb840fee142L,0x99b7920b2895df5fL,0x35dd8d5a5829bb19L,
|
|
0x271c6a4c46ee8dfbL,0xae09ba7536b594e4L,0x45502d0e1ae12c22L } },
|
|
/* 51 << 217 */
|
|
{ { 0xa9e1b19ad95e0110L,0x6a419f8b2383280dL,0x6c35e8e16eb602a6L,
|
|
0x966e0f44d71beeeeL,0xfc5cbdc0c8915585L,0xdce1c36583133b89L },
|
|
{ 0x3fbdd24289e6a35cL,0x8cd24d1760ff9dc3L,0xb9708c2729dd493fL,
|
|
0xabbf39803cf807caL,0x62689ffe5410c80aL,0xf133928be8b31d13L } },
|
|
/* 52 << 217 */
|
|
{ { 0x3645a1910d4bfc83L,0xa564ac85f2114b63L,0xf0647034cc6d9314L,
|
|
0xb58e96d331d80285L,0x8b8222d9e269c964L,0xdee12adcd204b214L },
|
|
{ 0x82d2bfbae1d0a6e6L,0x4fd69d2e9da964eaL,0x1605d9e3200b3ac0L,
|
|
0x5ab2886266d133eeL,0x938411c9f72f5353L,0x9fcdcb3a7d40dee7L } },
|
|
/* 53 << 217 */
|
|
{ { 0xd65c1d6c501eb835L,0x37374dd14a0e5861L,0xa13f1070505f1fdeL,
|
|
0xedd76943d1351805L,0x0f9501953673091dL,0x0dec24e308aa62f2L },
|
|
{ 0xec4962e7f50efefeL,0x0acccbdc9d227293L,0xc6c95d29d84fd828L,
|
|
0xa4b214c540578ca4L,0x06963d3ba4d41991L,0xeb8c14c2fde0034cL } },
|
|
/* 54 << 217 */
|
|
{ { 0x3d46a2317460e00fL,0xedce1c7dacce513cL,0x3d7b6f388cfdce74L,
|
|
0x870082baacfa61deL,0xa86efef862ff847dL,0xc146218368c11d11L },
|
|
{ 0xb296eede9d21be2aL,0x9dc54e9e761451cfL,0xed1bb1fd53107f7bL,
|
|
0x41f9efdb676bfbe4L,0xcdf43b904feb9a1eL,0xe81fcb6409d98782L } },
|
|
/* 55 << 217 */
|
|
{ { 0x00639fa8642789c3L,0xf8e893a03c101e43L,0xc55439302730e33bL,
|
|
0xe2967d30460970e2L,0xb33f1976ceacc128L,0x9bb0f896235e8c4cL },
|
|
{ 0x523f7bbb2fbbbc97L,0x127728a5dab215c1L,0x95dd23ca7ed6ab74L,
|
|
0x69f1219feacf4ba8L,0x5ed12355e875dd6fL,0x7aa732dc95565bdeL } },
|
|
/* 56 << 217 */
|
|
{ { 0x9a0e153581833608L,0x5cce871e6e2833acL,0xc17059eafb29777cL,
|
|
0x7e40e5fae354cafdL,0x9cf594054d07c371L,0x64ce36b2a71c3945L },
|
|
{ 0x69309e9656caf487L,0x3d719e9f1ae3454bL,0xf2164070e25823b6L,
|
|
0xead851bd0bc27359L,0x3d21bfe8b0925094L,0xa783b1e934a97f4eL } },
|
|
/* 57 << 217 */
|
|
{ { 0x0a700190a5e41f7bL,0x2173e68dae9045b6L,0x28e9ac53f1669974L,
|
|
0xcb00ff99d4b9fd98L,0x09c7b907ebe90d1bL,0xbf401f20385744c1L },
|
|
{ 0x0bb7ea7ae1292c18L,0x82aa43120b58f171L,0x5aa97bb2e3102d77L,
|
|
0x1a71e7c570178b35L,0x9bbb9ade6ab76f59L,0x32da60c9dea7bcacL } },
|
|
/* 58 << 217 */
|
|
{ { 0x3c3f113ab3726680L,0x27be1c406f5b5ab2L,0x5f51f684f6864a39L,
|
|
0xfaf84229a60c4f39L,0xa788612d01df18c9L,0x65c9fd14951d5ea3L },
|
|
{ 0x4b2153cdaeeaf44fL,0x6b9e977ba567781fL,0x4dbca3609dbf3e39L,
|
|
0x1ad43ad4fc65d7ddL,0x70a7a5e13d8dcf0cL,0xc11b1f4688b91e4dL } },
|
|
/* 59 << 217 */
|
|
{ { 0x1ef5695b0868ad28L,0x09c9c06c2e3a9176L,0x2f2c19672c358e86L,
|
|
0x4ff1af54da22d7e7L,0x5ea6716840fa2270L,0xd164b6874d31a3e9L },
|
|
{ 0xec036bb4345103d9L,0x6c6a130f26e17156L,0x2c491063d872b0d6L,
|
|
0xa66be18c4123d04cL,0x8593de34a33fa919L,0x620d2970f025b880L } },
|
|
/* 60 << 217 */
|
|
{ { 0xc194cc1664baf040L,0x8038f31fcc01f35cL,0xfcc82fa0ed2079c7L,
|
|
0x1eb7571190d39b9cL,0xf1a89043c108e069L,0x10633334c020880fL },
|
|
{ 0x492a494086e262f8L,0xaa0208173383f1a7L,0xfbb4e5ba6d99cc07L,
|
|
0xd6ccdc5cbde40478L,0x9e0b9d5867ee92c7L,0x5204bab7653eb14bL } },
|
|
/* 61 << 217 */
|
|
{ { 0x721f44f0ef90c9bcL,0x6ebbecd8d55e653bL,0x9af325df6ccc5d5dL,
|
|
0x265f0f6d827bd1aaL,0xb82453213487ea4bL,0x1642be42af6ba8d0L },
|
|
{ 0xb8c4168d4140e5f8L,0xdf5e32c13545d107L,0xf1301b9c2db68318L,
|
|
0xb22e20472bf3c067L,0xf40af49ee56ba514L,0xf4090e795575f363L } },
|
|
/* 62 << 217 */
|
|
{ { 0x980de58b1746f6bdL,0xa9e1f0089eb9511cL,0x8f53c6fd1bbdba34L,
|
|
0xe6a867a6a1a41706L,0xd4cc48a5d2e48256L,0xd580559e05cb19d6L },
|
|
{ 0xc8983311e6466ae0L,0xeab62080174df01dL,0x710ebd184a0441d1L,
|
|
0x0af69d9a9f653d0eL,0xef3a2510d789c932L,0xb5959cb992fbd39aL } },
|
|
/* 63 << 217 */
|
|
{ { 0xdbbdd5fdccb1cc9bL,0x660110b98a26d874L,0xfa80d8b60fb9ff2cL,
|
|
0xfeb5cd6b95040da7L,0xb526ae0c7366cf25L,0xf49d85fce3566146L },
|
|
{ 0x3b4107e699f505e5L,0x3c2d618f4302bbaeL,0xdaa09d150b199866L,
|
|
0x3b65cb88c395abf5L,0xd2af1dedbd5ac4eaL,0x0586f5a5276533d1L } },
|
|
/* 64 << 217 */
|
|
{ { 0xd927283013575004L,0x01a330d620b2275eL,0x58b9207f450db713L,
|
|
0xae95338423e16d95L,0x4f10c6d4e60e349cL,0x541d03ecfeb122bcL },
|
|
{ 0x22548cd22c648211L,0x5c2dc84cd01354f5L,0xa1c6f912b6167b3cL,
|
|
0x6967bab27902d2baL,0xebbe0b0836de34baL,0x6985b33a4b79625eL } },
|
|
/* 0 << 224 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 224 */
|
|
{ { 0x9e857f33771560abL,0x4ae1ba22250f109dL,0xf8538d68ff4f6566L,
|
|
0x35380f15ac339148L,0xfef0bfdd5ddfc12fL,0xf706c6bf1387d93eL },
|
|
{ 0x618ce77d5357e131L,0xf0921744236478c4L,0x24eaf06e00dc0da5L,
|
|
0x049113be07603cc7L,0x5cf489088f6963c7L,0xbe5eb9e6ede4a300L } },
|
|
/* 2 << 224 */
|
|
{ { 0x77e486f85d066c15L,0x0c05b6c24ed5307dL,0x322b28ab7df36628L,
|
|
0x2d14d1316704dcd6L,0xd359977af29a3567L,0xc29bb132ec96d3b6L },
|
|
{ 0xfd6e400ae6bfa701L,0x03db99244c7e5101L,0x62d81c7d9b8533afL,
|
|
0xefa638c28de66eb8L,0x7405a9d7e86784eeL,0xafaa74efa6c22223L } },
|
|
/* 3 << 224 */
|
|
{ { 0x6909994f0572e536L,0x9d22f9157fed8954L,0x1505ca05884aaca9L,
|
|
0xe4b6530996995a98L,0x30e00a5ed02c000eL,0xb9032350236e7b09L },
|
|
{ 0xe696f09e14f6c7bfL,0x2126b6277dc18d06L,0xa9ada7b401e1e2a4L,
|
|
0x9630acb69d2d025aL,0x9fab2c6ed84ffeb1L,0xc1d0db26ab7584f6L } },
|
|
/* 4 << 224 */
|
|
{ { 0xf9b2dba4b9d36e91L,0x5fb4f6cefda9b2c4L,0x7692a4f33b8104eeL,
|
|
0x5da885b0e4e1896eL,0xc2a30fec73d2aa36L,0x7d06e6af86f60bcaL },
|
|
{ 0xbc8bf16d87287887L,0x6c3dd86a3d701becL,0x8e79e2f37e35610aL,
|
|
0x981139f482f9d71cL,0xf8997ec424e62733L,0x330d989aa3518061L } },
|
|
/* 5 << 224 */
|
|
{ { 0x6cf0e6ef9b7e3cc9L,0xb465be6b0320acbdL,0x02777783856111dcL,
|
|
0x3a1d36f0c0e9f2b0L,0xfcf4f6365e7fe507L,0x36bf41827fa7c8f1L },
|
|
{ 0x09a02de8b0f4ce56L,0xa0bbf65ca9cdb353L,0x7211a9654b7f4e35L,
|
|
0xa6b2ba79805b58bdL,0x418302c20957860cL,0x3c17ec02f99f9d58L } },
|
|
/* 6 << 224 */
|
|
{ { 0x4e6ef410ca89fbadL,0xe0fc53ba53933b78L,0xa4f03403fd41d143L,
|
|
0x3a507177e0774c37L,0x078e8c568ec7484aL,0xfb73c6b6fbb3f66bL },
|
|
{ 0x169c94753bfbdff6L,0x44d286060a232243L,0x3e8e968508303114L,
|
|
0x7a9797b8fad0def2L,0x0ad14404efc1c8daL,0x6daae4e921ced721L } },
|
|
/* 7 << 224 */
|
|
{ { 0xfde0d1b4cbfd18abL,0xa3c9917595850f83L,0x16d3ad79c9eb9de3L,
|
|
0x2707ec8b0ffbcdacL,0xd7e6750fa220287cL,0xe51baf059c2e155aL },
|
|
{ 0x3018c309871e10faL,0x074f08e3f23221c2L,0x1aa323aecf15a4afL,
|
|
0xf085d69cc1b8cca0L,0x47a3eaccb143a969L,0x56a04522f3a98430L } },
|
|
/* 8 << 224 */
|
|
{ { 0xc7e9ddef88dd2dc2L,0x2c21a99819a0c0b5L,0x6bc0746db239bb82L,
|
|
0xc811a8eb28ea1341L,0x5f714ca71d1309b0L,0x79eabd20d4eb9b34L },
|
|
{ 0xe0e5afdcdf0fb30fL,0x1b01a16d8c0814c6L,0x670e1e7b84334366L,
|
|
0xc8c38f9a0eed1116L,0xf914fae2619bbd50L,0x1ed062cb51c1995aL } },
|
|
/* 9 << 224 */
|
|
{ { 0xce64d065b711b4e9L,0x32760c2eefc4d25eL,0x9e5916caa6292c7bL,
|
|
0xa90d40bff2a47deeL,0x90dc6681604933d2L,0x707270c60115cf42L },
|
|
{ 0x55b601ff6fe583abL,0xdd2fe842a039dafeL,0x602d8de34c2d3357L,
|
|
0x7cc979bca7ab9014L,0x4b8dcf7e60118797L,0x7f1f2a04cbfaad32L } },
|
|
/* 10 << 224 */
|
|
{ { 0xd4e60e15cb583422L,0xc6b1ef90320f296fL,0x0714bad0d9bfc834L,
|
|
0x5ee2ca8c9050e2c2L,0x074a8ca824f7cf1dL,0xb975024910df8516L },
|
|
{ 0xecee8ab7c2636d2cL,0x308e5af13b4b7bbdL,0xfed4f27eee2ae021L,
|
|
0x7cd4bb192065253bL,0x6b21a3f84de525b4L,0x0f10e7bdac27fddbL } },
|
|
/* 11 << 224 */
|
|
{ { 0xb4f02d9dbb3bf37aL,0x69590395978aacc1L,0xdf99b1309c3def3fL,
|
|
0x5c66391e12be0bceL,0x30ab382cb5eaf100L,0x9b84b2b4e0352249L },
|
|
{ 0x0c22e4e1af14e85aL,0xc29d3c592286ea0cL,0x6c7f8b6a40758aebL,
|
|
0x7a91adccde68fd0bL,0x4d8554fec8e8fd4aL,0x9fa863d5bb5621e5L } },
|
|
/* 12 << 224 */
|
|
{ { 0xd5068487870e29cbL,0xf9420b85fc52d5cbL,0x50c3265a496d000dL,
|
|
0xe605414a166bd6b4L,0x4de8d724c62b2a6cL,0x16af06f2a1a11048L },
|
|
{ 0x5406bde945f43c4cL,0x5e15bf6c751ad18eL,0xa846e665b6a59587L,
|
|
0xcdb28a7d1816ac55L,0x899b3551819b73f8L,0x2d46297bbc848d08L } },
|
|
/* 13 << 224 */
|
|
{ { 0x76f5aedd44af60a1L,0xf7bd3b4651d1efd8L,0xdfbf3c6439a9721eL,
|
|
0xf927fbf0ee9d2ab3L,0x628e9258c7e0779dL,0x062cb2fe4cf1dccfL },
|
|
{ 0xb2ff57dde2278f00L,0x3f0e140a2d199ca3L,0xe7161304342c0a9cL,
|
|
0xe7ca734f0bdbe131L,0x7d070270870057d8L,0xf6f1a65daaa55860L } },
|
|
/* 14 << 224 */
|
|
{ { 0xdc4cc720299127beL,0x5b34e762faab8165L,0x2289b2f7b39c120dL,
|
|
0x687a78d06e52b913L,0xd2a091dd2a3ea6a5L,0xc61eced638eab329L },
|
|
{ 0x652231ea7887ff2bL,0x77a568750479db4eL,0x1ef471c8d43c5722L,
|
|
0xf82bf436f3764c34L,0x962af4050445cafeL,0xed8b227f5ff47259L } },
|
|
/* 15 << 224 */
|
|
{ { 0x30e045f4a73c3da0L,0x13d2527df36c6346L,0x3dffe56d3836fb9bL,
|
|
0x9518276617c5d2bfL,0xa0ef38724dd0b240L,0xb45e19ebc39c675aL },
|
|
{ 0x65202bc603e95445L,0x41e2f0d19a2ec9dcL,0x51c719cf2a0d762bL,
|
|
0x3bfb9729ecc6b9f8L,0xda8271705a261640L,0x65c2bbbcaeee5f3fL } },
|
|
/* 16 << 224 */
|
|
{ { 0xde849cd1d89594abL,0x00e2d2b10ec4fb3aL,0x3fbd9e3dabe92fbaL,
|
|
0x785414d43324900aL,0xdaead1abde20904eL,0xb493e121aa5f1ba8L },
|
|
{ 0xd60a4f2d6eaea0dcL,0x394746b56fca8596L,0x163dc78934efa243L,
|
|
0x3067dccf216a8d8cL,0x116b6534a901617bL,0x8c4bd099bbabe51eL } },
|
|
/* 17 << 224 */
|
|
{ { 0xbb9eb22a97ebad53L,0x791d4f90666f1428L,0xa3a896e06c5d5569L,
|
|
0x322d566fdefbc26cL,0xaa581a083c039c26L,0x82d899be62790f0bL },
|
|
{ 0xeff4bb9a43a0c2f7L,0x60515c10a01df2c4L,0xdd1455a849312160L,
|
|
0xc8a15052c4292265L,0xdb2970f97f68d081L,0x29c825b892594c4dL } },
|
|
/* 18 << 224 */
|
|
{ { 0xc8c2df45ac3a082cL,0xc353d074c8d4c40eL,0xb214f9c05a3c2de7L,
|
|
0x504bc42cf86b0214L,0xc82df5cbd1922a58L,0x40887948a5bc3267L },
|
|
{ 0x04bcd21788ba8bb2L,0xe21b3e7f046fd401L,0x8419c338616af5cfL,
|
|
0x7f24760baedfce9dL,0xded8035bddbd519aL,0x1f1fb0d71693faabL } },
|
|
/* 19 << 224 */
|
|
{ { 0x7a88376766117f71L,0x8d4e37815d261599L,0xc900e6dff770b193L,
|
|
0xb7d1c06b12e9dda7L,0xa86d173a717cb0faL,0xa138b7ba51dfbeacL },
|
|
{ 0xe84468c57360a27cL,0x4acf8b412e9b82a2L,0x85fa386cb121d6faL,
|
|
0xc794d9f283e6169cL,0x7b4cd3fc8c9293acL,0x3096ad868d082719L } },
|
|
/* 20 << 224 */
|
|
{ { 0xbb067b49d02ffcf6L,0x7cedf8f93e657299L,0xc3829961406bbfe3L,
|
|
0xefe4b5aa37c12472L,0x7dc01cf9fec7dee8L,0x70a9db2389472f50L },
|
|
{ 0x29c269f8b31bf737L,0xa26deac3ae3fa7dbL,0x0046e91233caca41L,
|
|
0x3bf4bc8ab6e78b55L,0xca83bc6cd9eb5ef1L,0x73f25c62c0c5deffL } },
|
|
/* 21 << 224 */
|
|
{ { 0x117bb83d3ff7d803L,0xe91098c539c56c0aL,0x7bf72fe91e347fa0L,
|
|
0xa66201a31e174941L,0x1d069d4d6846a06bL,0x721cdbbdcda59bcfL },
|
|
{ 0x17d6683a17652893L,0xee1b28f505be2530L,0x2e70558697a69062L,
|
|
0xd4b5798682b56c36L,0x1ccc5be09082e781L,0x42e0e429d6b05e30L } },
|
|
/* 22 << 224 */
|
|
{ { 0x697dc47d44b4aae8L,0xb3525cc0782c331cL,0xff71cca40bd7c78cL,
|
|
0x5f3d776610c0ab69L,0xbdc10267e2ba07e3L,0xc656f75ce6373f6eL },
|
|
{ 0x9e2938b4b5607b62L,0xa65017d410b0a0f7L,0x8dad31195cc6ac25L,
|
|
0x00f8f2d18ba5d1e6L,0x608137bc43305aefL,0xddad34bbdcb81cb1L } },
|
|
/* 23 << 224 */
|
|
{ { 0x9e46b17c20c78a64L,0x28db365d5c48e678L,0xbe4c3b8eac6ba470L,
|
|
0xee737236b6617b28L,0x81c5b94a4f3422bcL,0x4d44c33076faa922L },
|
|
{ 0xd7a09a719be38835L,0x99d024e1410b382dL,0x103b67c36b15012eL,
|
|
0x02b6e094d9808da4L,0x4f5d938a0a7f2fcdL,0xa43058b7e4c5073bL } },
|
|
/* 24 << 224 */
|
|
{ { 0xe133d941b1f82ca5L,0x2af8b98bfdf115bfL,0xdc6179c857aaa6f3L,
|
|
0xabaa83e9130ade06L,0x7836b6fb0e8bffd1L,0xc479751ffa103703L },
|
|
{ 0x0ff3c1299c89963bL,0xe64072560b84c24fL,0xa92a4ea2f34f6bc9L,
|
|
0xba45b3053197989bL,0xd12b5a0199243aabL,0x3015772c442af625L } },
|
|
/* 25 << 224 */
|
|
{ { 0x5362ac737e0a5c36L,0xc731132a8c4fbc07L,0x0ef7468d7ca0d4d0L,
|
|
0xc43afef835d25de0L,0x096bde6a3fa1209bL,0x21f57eb566846236L },
|
|
{ 0x878b585cf04d23d7L,0x737f7e527315ed56L,0xb716462c811afdd1L,
|
|
0x4d223734a571a3cbL,0x56460e2fa7db2c60L,0x0684d72c61f97485L } },
|
|
/* 26 << 224 */
|
|
{ { 0xd95fca81e6f065c5L,0x45e886d5fc8655deL,0x3580957727cff79eL,
|
|
0x92a39a34625877d9L,0xdda02684dfee17eeL,0x6354f871986f635bL },
|
|
{ 0xb3a6e9edd409c182L,0xf0b1c8d9c4fbbb3aL,0x28721c019b77adedL,
|
|
0x3c356df1bf94f028L,0xff221bd229a81f1aL,0x20edf2e856b20b0dL } },
|
|
/* 27 << 224 */
|
|
{ { 0xb8c636db31ac60c2L,0xf3830e72bd987402L,0xfe63957c30e6b969L,
|
|
0x3508e67989eb2bc4L,0xc0837f8c9a987e3bL,0xd1d0ce7b3f9b2ef4L },
|
|
{ 0x08d8f99441fe62baL,0xe73f79d7e17669d4L,0x8801fabaee6d68feL,
|
|
0x4ef814891a508a88L,0xcc851bb71fbc4512L,0x69f728704680b88aL } },
|
|
/* 28 << 224 */
|
|
{ { 0x97fff124835fda9eL,0xa79ceb2f0bc68512L,0x70ba93d1a2fc3995L,
|
|
0x62bd28ab9e51c5eeL,0xb95fa624d5bbbaa9L,0x0654dc458c1f571eL },
|
|
{ 0xb9a4edc665a45ed6L,0xbf5ed1bc21ad0612L,0x74adc1a1b1a3551bL,
|
|
0x3dfa3dc8dbbd6cefL,0xce5dd40b2fa3afd2L,0x14894e0f30a746caL } },
|
|
/* 29 << 224 */
|
|
{ { 0xe4544006ada9bf7dL,0x9e123b709b75770dL,0x903628d557cea95aL,
|
|
0x6429e00c9e8cef6bL,0xafa2cce77b1adaa2L,0xf2f5771e15e488daL },
|
|
{ 0xda44962269820874L,0x5b20ef1b6e0fef81L,0x3150a8699507b4faL,
|
|
0x901897add191de20L,0xf459da31c41dbb2dL,0xc2516dd077146754L } },
|
|
/* 30 << 224 */
|
|
{ { 0x7e729c58b8ca2a2cL,0x0f32ea1ecaac04afL,0x47267f13bdd549e3L,
|
|
0x35b9440690be3b50L,0xad0f2bb14b27f670L,0xd7e5874e92341803L },
|
|
{ 0x7dc841cf1f9ec462L,0xebeff994512b2a42L,0x22998a7f320dc858L,
|
|
0xf08eb5c719946f59L,0x228c8dcda68ea75eL,0x40dc6dc37b20dee5L } },
|
|
/* 31 << 224 */
|
|
{ { 0x23f40e331dd722adL,0x0a441bf4c54fc48fL,0xed6c026548b75f84L,
|
|
0xc2d3972f3e0fff2bL,0x889b44c4db09b7d9L,0xeb6ccc6541a6a562L },
|
|
{ 0x5ef1162e8f04e03aL,0x25e2ea895d8102c5L,0x37b71631154644d5L,
|
|
0xa9a1a8320446b1bbL,0xe3f58daefb342b20L,0xc6d19decb6d292c3L } },
|
|
/* 32 << 224 */
|
|
{ { 0x929454f6b3952db4L,0x412142ec4d3f69f5L,0xf5b0a7c5ee25c0b0L,
|
|
0x7d3372ff2e752295L,0xd6dadc7d6eacac68L,0x5f0076cca96a8e3cL },
|
|
{ 0xea831db671725b3aL,0x4a286c89c29ab454L,0x5ff817e572e3c00cL,
|
|
0xb022e25d2a5fb6baL,0xb611c5bcbb392476L,0x062c14dc190485a0L } },
|
|
/* 33 << 224 */
|
|
{ { 0x44730047ffdc9a7eL,0x44949bdcf078d5bbL,0x8c1a3e4bc486e2b1L,
|
|
0x53088ba20801402cL,0x6e20a7cfeac83daeL,0x4407ea8436ec5443L },
|
|
{ 0x564fb733853f79d8L,0x59ea819afe809670L,0x1ac62174f1ec7e91L,
|
|
0x0d7e065566a0b8c9L,0x0c4d072482958221L,0x80db0297a60f984eL } },
|
|
/* 34 << 224 */
|
|
{ { 0x380823e7f3359d47L,0x8a60fb05f5efd39cL,0x78a940669425487dL,
|
|
0x1da6abc3f199c67cL,0x7df00b2165f0a6b1L,0xdc0dea58017b1231L },
|
|
{ 0x9c529db079f4f22fL,0xc7043be3e5dd92b5L,0x10153ffb43661331L,
|
|
0x51c459bf6ff02e8fL,0x451483bfa43aa005L,0x3313f903199cd1baL } },
|
|
/* 35 << 224 */
|
|
{ { 0x2f66587e62e1ef1bL,0x942d4c739e3ae33fL,0x4a27ead5c0ab9c1eL,
|
|
0x368d8dd89ca91b06L,0xb3f0cf92c4b6ed34L,0x28cc332673e62557L },
|
|
{ 0x2649e5527910986bL,0x635dcf9cdda049abL,0xbbde12f625d3f201L,
|
|
0x5200c3d0a9384443L,0xd996573d51eb3c10L,0xb093c1792b8cd7e5L } },
|
|
/* 36 << 224 */
|
|
{ { 0x15cd1d1cc3fe6fa4L,0xf260a739e2c3c686L,0xf7c2270eb08c65dbL,
|
|
0x9ada2cb6ff69d971L,0x65fbbcac212bff0cL,0x40157d075646a735L },
|
|
{ 0x101d2b7d55de9e45L,0x0db580e83118b763L,0x3203baca8322a9cdL,
|
|
0x2a3137ef22cac14dL,0xcc9092e291a14128L,0xbb269f6d98cc368fL } },
|
|
/* 37 << 224 */
|
|
{ { 0x7c8946002ad7f66fL,0x6a8328bb99b438a7L,0x86d06fbbdb440d86L,
|
|
0xb74ffe2d20ac5a42L,0xc3a6f01d91b1c82bL,0x606f8ce71d5efbddL },
|
|
{ 0x8c49c43a6338c99fL,0x50657f7216da7cb7L,0x7f204c8b84f22d9bL,
|
|
0xa2612d80ca76978dL,0x80080d868a3e8e96L,0xd8841a1ac0bff9afL } },
|
|
/* 38 << 224 */
|
|
{ { 0xc2a734cb962fa060L,0x2baa26c580a17874L,0xe27b21110b44efe6L,
|
|
0xdc1244e531d2154cL,0xfcd86d4116c7742bL,0xf45230df32503138L },
|
|
{ 0x94a790f4812cf0afL,0x0ab2df23da3f24d7L,0x0c764df181571d54L,
|
|
0x989ff71c68d68f74L,0x9896fe62cda535b3L,0xfe0502e05f4fa41bL } },
|
|
/* 39 << 224 */
|
|
{ { 0xf1ffe852c2f58cf6L,0x2ec46d2546d64576L,0x95bfec93d602c51aL,
|
|
0x349c58bf3907b766L,0x59cb12bb9b94bdfbL,0xfa95da9515dfcd87L },
|
|
{ 0x731a8535e1543bfbL,0x14844aeeca14187cL,0x0d73e58aba1f4928L,
|
|
0xbb71009fc6bb67f2L,0x5e7c0e988b4142b9L,0x4866b5095f08f58bL } },
|
|
/* 40 << 224 */
|
|
{ { 0xc8295c2fa234de87L,0x1cd7f3fd878e77dbL,0x309c1fefa2155b6cL,
|
|
0x2a9bcfd9484afddeL,0x87ef7a56cc999775L,0x34336cb1970aa188L },
|
|
{ 0xd45eb83cc3e16ba1L,0xf9d72c72b9c1695bL,0xff117458cb980742L,
|
|
0x438a7fcb67af836aL,0x5ffad086eb9a6c40L,0xdbd3e518513922a3L } },
|
|
/* 41 << 224 */
|
|
{ { 0xde241983e42021b7L,0xaa70e834542873c1L,0x99c9d35f9daf2b99L,
|
|
0x0bf712d549b40780L,0x202d9969d9ab6e97L,0x7f3382dac4932106L },
|
|
{ 0x1eb5f5d40849e319L,0xc1bdd1179f659546L,0x628ddd3d2329f977L,
|
|
0x5944611d363ee601L,0x7b7a631463d5bd4dL,0xaf6c51a5631d21ecL } },
|
|
/* 42 << 224 */
|
|
{ { 0x2d8f9e1db4100182L,0xa08ae2fe4f3d2c03L,0x7548c430589e99f8L,
|
|
0x0f5ccee2aede8af9L,0xa21ace3343b34b25L,0xb120c569dee102e6L },
|
|
{ 0x1cb103ed36f13699L,0xf71ff0dfc91e8cb4L,0x88f141079b22460dL,
|
|
0x050af75af509366aL,0xeec8a310fb179bc6L,0x069e7331c26efef6L } },
|
|
/* 43 << 224 */
|
|
{ { 0x3e2a9c713be9cdabL,0x8f235d6f73ac08e6L,0x3de28a6b28832dabL,
|
|
0x7d08b9f31ee82d6dL,0x67c3b88f915ddda9L,0xba8f18cc0f7c81a3L },
|
|
{ 0x38cebc31ca3c0936L,0x745f71aa7816a6e3L,0x00cb85a91a95fcd3L,
|
|
0xb92742c6577dc22cL,0x1afdaab592029cbeL,0x0bb43c91278d3f7cL } },
|
|
/* 44 << 224 */
|
|
{ { 0x3d77059d3ba02d27L,0x58e28671440b2d3dL,0xe2d4235726636fbcL,
|
|
0xcc448a52c54605d5L,0x73c2902efc0269a6L,0x28a15ed57ea8c26bL },
|
|
{ 0xf666587a0cfc1a34L,0x8374f2cc1ae0377cL,0x5dca6ae828417437L,
|
|
0x15a6d54c94bc87ffL,0x5bf187bbb344796cL,0xc629c14889574b2dL } },
|
|
/* 45 << 224 */
|
|
{ { 0x06d43c6d87748b63L,0x2489a957a7f232edL,0x7aa9174afa407c3fL,
|
|
0x8c8b8fd933a762e0L,0xe2e8f1e7adbe94a3L,0xd1e0c8c2bb723045L },
|
|
{ 0xcafd8f483df092d8L,0xbc89caebb174025cL,0x97595c5649f20c98L,
|
|
0x6e520a968a77acefL,0xc3dbd3107a52a4e6L,0xf51db5a91284ff27L } },
|
|
/* 46 << 224 */
|
|
{ { 0x406465742c74cb2cL,0x44eeb9e546c33df0L,0xd2a9f16ecb4c50b2L,
|
|
0x68f912a01906a6ccL,0x2b81296d95211e94L,0xddb2988ec8575839L },
|
|
{ 0xb74d990d33b180c0L,0x290185567d319c48L,0xd3d2e40dac8de56fL,
|
|
0x9ad42a60461f30e6L,0x265e4715292a0faaL,0x56c2626c8ac3b2a5L } },
|
|
/* 47 << 224 */
|
|
{ { 0xb7580f2fd468adb8L,0x8e1fbf0388a6a587L,0x1b8c40ed8f4f6cddL,
|
|
0x337414f56817b2b1L,0xd877ebafb744d563L,0x59eed3c6df5e18b2L },
|
|
{ 0x365e148dd33afa01L,0x82e70adc665702cdL,0xccd77955a5e390ebL,
|
|
0xd86c343accc90cb2L,0x23bd948d6cd8a33bL,0xb1fc140cdc43a8cbL } },
|
|
/* 48 << 224 */
|
|
{ { 0xefda99d9ce11b02eL,0x9017bd4a3f820083L,0x8b9e6cd1ad14ac6fL,
|
|
0x1239ee331f413880L,0xd98e93d993dd7fb9L,0xc280d252894fcb12L },
|
|
{ 0x33a9201a5230b5eeL,0xc6aeee256e41de26L,0x845051280d0a320aL,
|
|
0xc20551db4b607b53L,0x6e63c766ea228c2eL,0x883321aeac48f25cL } },
|
|
/* 49 << 224 */
|
|
{ { 0xa5173910e15a530aL,0xaa2c88b83ac38ab2L,0xcbfbd31ec6a6ba9eL,
|
|
0x0fa126cb49ed182dL,0xd6b38897cfc53c85L,0x98d5f6bacb9c2f41L },
|
|
{ 0x6694e8e5cbd150e9L,0xd470ef226a1fc551L,0x57a63765d5ea1c0aL,
|
|
0x95f5eb4318078139L,0xbeaba00585d3e0dbL,0x6bbf010fd314dec7L } },
|
|
/* 50 << 224 */
|
|
{ { 0x5941229729ee46d3L,0x39e5aaa0e66bdfabL,0x9ff1575001c815e1L,
|
|
0x709706211f2de195L,0xaac904a968aa571aL,0x9cbefacd8f7625f9L },
|
|
{ 0xadfd215dfce3a501L,0xc04d09ddf20651b4L,0x688c1421d17b25f2L,
|
|
0x3efde5d40073247cL,0x999b7f3a7432c699L,0x33c76487703fea50L } },
|
|
/* 51 << 224 */
|
|
{ { 0xc720aeb10af6e1faL,0x1564b8d8e8771dc6L,0x5983eb44673d8ef2L,
|
|
0x5dabb2070679ac65L,0x51a854cdbcdb681eL,0xe2b186a9364a3cb1L },
|
|
{ 0xfa189eff7222208bL,0xf7161d86477666f9L,0x0ffcc3e6192d1df5L,
|
|
0x1523508e39cf5a4cL,0xf5e98687c43ecce8L,0xbf17b63261450309L } },
|
|
/* 52 << 224 */
|
|
{ { 0x63293cb8adfbde28L,0x5df78fb3c6b18ec4L,0xad10da4ffd27e50dL,
|
|
0x60202b357ade5c9aL,0x67b9d253c6c8c8b5L,0xdbacffefbc2b30bdL },
|
|
{ 0x508ff8a67494b1edL,0x87ef48be3769728fL,0x74d4f180ef98d036L,
|
|
0xc5d9ef531799e8a9L,0x726d22206e850162L,0xd86d3414239f6b38L } },
|
|
/* 53 << 224 */
|
|
{ { 0xfdde327b3e1f1b96L,0xb6272e94bb58615dL,0x2881350cfc2d8a47L,
|
|
0xfcbe87031142ab9bL,0xaa5fccd0f48c7f97L,0x606be6ed29a74ba0L },
|
|
{ 0x545409ba3afc598bL,0x4779f54aa7d23f5dL,0x2811c0829d68e38eL,
|
|
0x5b4646bd3f9c5842L,0xbcd3aa492586219aL,0x7345799313642e3fL } },
|
|
/* 54 << 224 */
|
|
{ { 0x9a61f240ab638788L,0x519742162b0a8449L,0x9a5ec31d43b2abfbL,
|
|
0x6f3075740563c9c9L,0xe465f7793ffa198fL,0x8876c5772957418eL },
|
|
{ 0x10e3d09c976e5875L,0xd66d334e592c2409L,0x3f0d5727b39b7897L,
|
|
0x17ca7ad1e37fd300L,0x221d8436da530871L,0x4df38e4179d6b350L } },
|
|
/* 55 << 224 */
|
|
{ { 0xe805096338b7a2cdL,0x9874cc734b8f05cdL,0xfc0821791b74a790L,
|
|
0xe18a92f3293049a6L,0xabd525694dfdc13aL,0xb928cc300d843466L },
|
|
{ 0x12750aec348dc7c0L,0x3c8e205d87f12dbcL,0xa2c71091e0bdbd81L,
|
|
0x895b56a0c1c1871cL,0x68dd7414b4c850f9L,0x45a948ecbe806596L } },
|
|
/* 56 << 224 */
|
|
{ { 0xa88dbfe0f4fe35f4L,0x32de3a1c84283011L,0x8a3777bc39caea33L,
|
|
0x673630dee4d49959L,0xf3ef842c59070317L,0x33e4bb031fab88a9L },
|
|
{ 0x88e4538e98ce8bc2L,0x870c2eb81a235c6bL,0x71f62c5640df0e92L,
|
|
0xdb43b853f9627486L,0xfde9fcaa95cc473bL,0xe4c5b4bb4b677b11L } },
|
|
/* 57 << 224 */
|
|
{ { 0xa6ebd946dd4091f8L,0xf0e11886dcf0741bL,0xd6267674d9533601L,
|
|
0x571926506f74e49cL,0x18269c2f891d6717L,0x350a7869b45ddb53L },
|
|
{ 0x79ea6a4ac8f62777L,0xbad33c4cae7edec9L,0x14bed149ad7e5578L,
|
|
0xb2f4190ba91af4fcL,0xbbd6f68be71dfd3bL,0x23fd3dc8f2fb7a21L } },
|
|
/* 58 << 224 */
|
|
{ { 0x5e0f89e598fd044dL,0xb77180d97cc30e97L,0x64fbfb747f82a12dL,
|
|
0xbeebb9ca77629636L,0xe164549feba83845L,0xe65a964a7079519dL },
|
|
{ 0x8b1bcc08ca88157cL,0x466399c3f7483338L,0x6e2726414b9efdc6L,
|
|
0xff8c7027be922e96L,0x9baebf7d48374f59L,0x2a84a23ac18ee18bL } },
|
|
/* 59 << 224 */
|
|
{ { 0x337484e0dca4b3b3L,0x82137cb9f5b27d3fL,0x12ae1d11bbf4c806L,
|
|
0xa1e2873f2880c078L,0x9e6bd909058b9a0fL,0xacc5656d2dba5fb9L },
|
|
{ 0x7fe5467853fd2ce3L,0x2aa4af35452439efL,0x329989a5904ffc67L,
|
|
0x007ea4c8520fd31bL,0x58988e2551816b44L,0x644f2469d8f186eaL } },
|
|
/* 60 << 224 */
|
|
{ { 0xcd4d1a9e8890722fL,0xfa0b826b74142916L,0xa494dfa817ba8041L,
|
|
0x3fb73e736de2b6c2L,0x156a6cf4344b57a7L,0xb197c8621e205448L },
|
|
{ 0xf453e348c214acf7L,0x665d7083e9061a73L,0x5ed59ec5ce9868a3L,
|
|
0x9bab305f6ad777faL,0x752c490b35315de8L,0xabcfa35b5d5aaf26L } },
|
|
/* 61 << 224 */
|
|
{ { 0x4059fc2f914d618dL,0x88e55ce6108380fdL,0x0c22b21bee61a4c1L,
|
|
0x435ecbdb04788627L,0x3f8a5ec7a9f72788L,0xa31eff8a732d5d97L },
|
|
{ 0x119b6bf9d48d0af9L,0xde6d1de5af70a043L,0xac075ffd3368db4aL,
|
|
0x23a33ec94a58603dL,0xd43ad120fe181a89L,0x386b90ed42f0b006L } },
|
|
/* 62 << 224 */
|
|
{ { 0x8096824bf9bf1a24L,0xcdf69abc8260ebd7L,0xaf93b34de9ab190bL,
|
|
0x676351ff841cbba0L,0x3db704d3eb6d6c60L,0x3b1b893fc09aebfdL },
|
|
{ 0xc06b9bfdbfc69f15L,0x28b1ffb8e9c688c6L,0x1607bc68d3c16455L,
|
|
0x07d56bcc6d16d937L,0xac28e69f318afd9aL,0x7f4afeb7e77263b6L } },
|
|
/* 63 << 224 */
|
|
{ { 0x796a530ab935875aL,0xd6700ec89dd1e51cL,0xc30301df4d9320e4L,
|
|
0xe23090f357157f87L,0xdd3f68a74029113eL,0x566afc6de2709936L },
|
|
{ 0x830f952edbff8926L,0xe207eae5c7a39d27L,0x9210b3dfd9494592L,
|
|
0x3be25582d8460831L,0xec2496575d58edd9L,0xebe8426fefd24738L } },
|
|
/* 64 << 224 */
|
|
{ { 0x0372678dc419b0aaL,0xf95031d8c13fdf17L,0xebaebca4b79594c3L,
|
|
0xe587850baf3b75cfL,0x534183ac2c1e09c6L,0x3f5b0bfdc08204cdL },
|
|
{ 0xdac2cf06e297cc77L,0x5e47d9c6d0487084L,0xf6f509f490b0f6c2L,
|
|
0x3ffc3cd6c2c62207L,0xbb21eb1132ff1887L,0x2116a023e62ccc6fL } },
|
|
/* 0 << 231 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 231 */
|
|
{ { 0x406a7e2116960728L,0xd03923f85597d8c4L,0xd4402eff020748eeL,
|
|
0x7827442af39b58dbL,0x77e3f2768d8cfb04L,0xf6eb49c8e45a978fL },
|
|
{ 0x9db0829949247f6aL,0xce71a74706669fe5L,0xe434ce47b82775f5L,
|
|
0xe84995ef63910016L,0xa35e8b971e47792fL,0xc779cb3d7c6aaeb9L } },
|
|
/* 2 << 231 */
|
|
{ { 0x1fa064cfaf31ea1dL,0x2a9547a848e8d974L,0xda8102a1fa9d9453L,
|
|
0x786aecabdc6bd7eaL,0xcaf91e3bca2f6044L,0x67d86ea78573f208L },
|
|
{ 0xd309fce9c505ae24L,0x67ddc5b17f86eb8eL,0x57791ae0f3d53056L,
|
|
0x26b053f00d1fd61eL,0x91c962c0045ebfa6L,0xe95246de076ed979L } },
|
|
/* 3 << 231 */
|
|
{ { 0x156eaf570746d174L,0xa2d4a83dcda35250L,0x60a9f48c0290fa02L,
|
|
0x9855d26d5c33b4acL,0x06e379c697eb1c30L,0x4f2e2dbe6e219664L },
|
|
{ 0x6b7448f829006065L,0x237a1f31115062a9L,0x5c635a90ad92cb24L,
|
|
0x2e857f8c2eed977eL,0x3d512df7856dc88aL,0xbde85263e597a27bL } },
|
|
/* 4 << 231 */
|
|
{ { 0x49f24994e7c03ce4L,0x274a8c132aed9ba3L,0x897b9103d5e91bc0L,
|
|
0x63db1efbcb404f68L,0x70efd9d842f7fc02L,0xd6e02921c6a230afL },
|
|
{ 0x8d5b199f11ae0a56L,0xc98287dece33da6aL,0xde583d34504dd889L,
|
|
0x03756001f823686fL,0xf19ab86f95fc73dcL,0x300406c693f12f42L } },
|
|
/* 5 << 231 */
|
|
{ { 0x2f73595f7759701cL,0x8dc2069a6fe0e0d9L,0xb7de7114c286a65dL,
|
|
0xfecc429e84c0e487L,0x51061a2c14344c07L,0x4d70972596869e37L },
|
|
{ 0x8b02781f2be9403bL,0x6cb6aa02de3ab5d9L,0xb013508eff6bdc9aL,
|
|
0x568d2e84e5438c58L,0x7b35a979e4206c3bL,0x0bb793c0b17a8bc7L } },
|
|
/* 6 << 231 */
|
|
{ { 0x3f896ca9fa4dd561L,0x4b9a98abd2de2ecbL,0xd0741632600e4e2aL,
|
|
0x87c7db5f69e702d5L,0x1f5a3b8053e0df2bL,0xe1e24b49f443dfbaL },
|
|
{ 0xeb90e2305eef3a1dL,0x8f3fc8a6d38f73fcL,0xfb1e8299a5aa335aL,
|
|
0xd78504cd4197b32aL,0x0e7a79cc6755918eL,0xc7c98ae2883b1c72L } },
|
|
/* 7 << 231 */
|
|
{ { 0x1a12727c03d2beccL,0x810a37dfc6741372L,0x44ac483fb7049f39L,
|
|
0xab73e5e7a36fc614L,0x298d453feeff8aebL,0x2127dd167e1b586bL },
|
|
{ 0xeadc5c54e07bd60cL,0x67cdae00f5e2d2e2L,0x03fe0446c9d2f10aL,
|
|
0x0784098795e38ed2L,0x5d348a7ce1a6306eL,0x4903f1b6562f5463L } },
|
|
/* 8 << 231 */
|
|
{ { 0xbf66baa5b44b1d0cL,0xbbed18eda44f8edaL,0x80bc32abeaaa466cL,
|
|
0x605b7897e5f2733bL,0xe9e7e3a1a2531afaL,0x25d66db33deb8369L },
|
|
{ 0x36212ea3b2f25d10L,0x52d6b3f4a08d303eL,0xefa54b31444e9e9fL,
|
|
0x9c2229a169530c1bL,0x68feb9854b79bdd1L,0xd570e84f8b984cc3L } },
|
|
/* 9 << 231 */
|
|
{ { 0xe141b86bde0560a3L,0x858bf4cdb2264bd1L,0x526fb104fabe5359L,
|
|
0x95f9c43f185b8a70L,0xf8e3a3eb2d1f75e9L,0x71826067d93bc6b9L },
|
|
{ 0xf360e01799692f49L,0x00f4fd16c2dc3dd5L,0xeb7f40498b9454d3L,
|
|
0x5cb0f3c426c3b393L,0xe8ab4e4357bdc4d7L,0x9abe36b00c123d67L } },
|
|
/* 10 << 231 */
|
|
{ { 0x1df8d98c57b168fdL,0x042fd731b45da94eL,0xa54d64f91703e143L,
|
|
0xa12198be9de0ab4cL,0x160e06241ddc4e0fL,0x15cae64a6695891fL },
|
|
{ 0x808565e70c2b2081L,0x6de4a393cc65040cL,0x6682cd934bac1768L,
|
|
0x62e7ac2ca5be965fL,0xd33f6f8ad7a38e90L,0x9cafc4635b8b516eL } },
|
|
/* 11 << 231 */
|
|
{ { 0x0541a391b685c547L,0xe86d35e091765999L,0x65aa03c51db4a2ecL,
|
|
0xba53470e6b1c4784L,0x4f848cc8cceca1faL,0x89d0db0b8b18e350L },
|
|
{ 0xd03e452a7840d734L,0x6cebfa790ca24215L,0x288b4569e8f1d9e8L,
|
|
0x18e405af8927ce0cL,0x5aad57e51abfb4c8L,0xbbd99091a197ed1eL } },
|
|
/* 12 << 231 */
|
|
{ { 0xf041e421aa44f3e2L,0x47ed9e8eae6fd2b7L,0x4fea93751128ed62L,
|
|
0x041a1c1acec6eae6L,0x1f32359415a65daeL,0x741fea0a0154e8e8L },
|
|
{ 0x309e9f289c32e224L,0x457d4ffa902ce57bL,0x7bb54dd5692420c2L,
|
|
0x193a41aec4fa1a6aL,0x35f5f3b43d779e77L,0x31e84371046ebb8cL } },
|
|
/* 13 << 231 */
|
|
{ { 0xe75a7c1d9d7e5551L,0xb73c987611635e3bL,0x3b07a071e09d29b3L,
|
|
0x0a3cc0acc623023cL,0x15ec4a7a1e2ceb33L,0x09a01968c70eb27fL },
|
|
{ 0x2e5bb53c369d145aL,0x4c93330d9b7fb506L,0xbb10a2f358013308L,
|
|
0x3d9da0c4e0b85fd4L,0x8b39c992ce0dc79bL,0x7e6d18b0bec905faL } },
|
|
/* 14 << 231 */
|
|
{ { 0x3a5a366ea1554376L,0x0e1687c052a6ed9dL,0x3e16e4aafe5355beL,
|
|
0x6d8bac03ced67666L,0x403eb33ed9344003L,0xd7b9ec0d333ab20cL },
|
|
{ 0x9fce1986d64c272cL,0x9d52d64bb1e23843L,0x8e689611921a58e5L,
|
|
0x8f5f115620d5c61aL,0xb17f612fadc81b4eL,0x36e2db30e562f779L } },
|
|
/* 15 << 231 */
|
|
{ { 0x98d0bcead01f8634L,0x6e9ba675bc5f825eL,0xfac2d3aa05e938c1L,
|
|
0x434b712fb9c66adfL,0x81c29163a9a61d36L,0x80eade933be8eea9L },
|
|
{ 0x10fc6d75c04c45a8L,0xa2c9aa58fb9e8702L,0x9142afaeb200428bL,
|
|
0x4fa28c8520eccf38L,0x3b5f63308209b3e7L,0xf74206ca8cd74accL } },
|
|
/* 16 << 231 */
|
|
{ { 0xd6a4d25c845f26e4L,0x71e554ce1b039dffL,0x942059731cdedfc0L,
|
|
0x0c4e385603d6502fL,0x981a4fc5e15ce8c8L,0x85d1b0f17aca30b7L },
|
|
{ 0xf2037ef777bb9e43L,0xc52804f4e87ae187L,0x9c98a23c71f3e4e3L,
|
|
0xa73c8b89f47b504bL,0xb9e33f54023233aaL,0xf2bcfc17f92c9f68L } },
|
|
/* 17 << 231 */
|
|
{ { 0xb3c1bc26707fc6ebL,0x0bb585b75ef6dac6L,0x70af297f5f707063L,
|
|
0x3d86a8fa967a0ad8L,0x510dae4d4f956cc6L,0x1dbcb2e883c01ad0L },
|
|
{ 0x0e480cd28bfbb5edL,0x76498f813025fca2L,0xc015064ec5446cadL,
|
|
0x4ddfe2af3616f51aL,0x76b0d690e6750b31L,0xc4502c050073f263L } },
|
|
/* 18 << 231 */
|
|
{ { 0x9120912bb3081e59L,0x6c73c4a2f908b364L,0x408af8c94de763d6L,
|
|
0x3d9e83084000add2L,0x65d197fddcb5a5a2L,0xbfd29f0b2bd82bb0L },
|
|
{ 0xa1243e63bdfe09e7L,0x91d90b54d556188cL,0x977dd4a18bc872fcL,
|
|
0xa8e6e7bef4ea7805L,0x12c53bd80a467365L,0x9d7abca493b7f0a4L } },
|
|
/* 19 << 231 */
|
|
{ { 0x5faf453a40eeb93eL,0x6801e0d1f1fe9307L,0xe92505d39ea9b800L,
|
|
0x7e911f8108eb58c8L,0x5da7ffcc098143eeL,0xe023262056876057L },
|
|
{ 0x5354045bbfa99a91L,0xee660bbebb346841L,0x1dbf5c7cecb3099fL,
|
|
0xe79c78d6a125d753L,0x2a356f10706fc013L,0xe50c50b725f88ebdL } },
|
|
/* 20 << 231 */
|
|
{ { 0x663ca92723ca903aL,0x8a64a4dec7681937L,0xe3ec0966a2baa42fL,
|
|
0x688328d7a2906226L,0xc2821e9c94790fd8L,0x7a295b62157501cdL },
|
|
{ 0x032cd57d3675c2f3L,0x91d66a57f42e6f95L,0xd75056961e97dcd0L,
|
|
0x7e8ba3ed7d8b6f52L,0x8ddb72c420b0dccaL,0xe09e53bb6aea2d55L } },
|
|
/* 21 << 231 */
|
|
{ { 0x3815b1028a009f19L,0x4f76d609f5418c34L,0x7a35cb332a9eabd9L,
|
|
0x018d6c54ce89e886L,0xe00b99e859c9fab6L,0x4f10a0d9aaf6e7b8L },
|
|
{ 0xee51f8f0e722fce1L,0x03e8b63179bccac0L,0x66e540c26f327d2fL,
|
|
0x31df4a35d22377e4L,0xba5b0029d5c71cedL,0x6a3e20553ed6aeeaL } },
|
|
/* 22 << 231 */
|
|
{ { 0xe932d1aaaffc47ebL,0x75c9d4d8513f85a3L,0x50886fcdf9419cb0L,
|
|
0x756a7d7d49081e9eL,0xe45fff1fe14aff77L,0x022b4ac339846230L },
|
|
{ 0xefc3e8dbe89adc78L,0x921bb1538c09ccecL,0xe4dc6aa17826d461L,
|
|
0xa53aa6cefac8f0f4L,0x5d4e4d53954192c5L,0xda721828c722780fL } },
|
|
/* 23 << 231 */
|
|
{ { 0x978609c67e4933daL,0x49fd5c5d2539c807L,0x072a911c6330373fL,
|
|
0x40cfa61838177579L,0xf9a7aa4c81c51596L,0x7ba8e7a5b346724dL },
|
|
{ 0x79298c06d26ee66dL,0x243323702a9c2792L,0x585e8b9eb6aab53eL,
|
|
0xa39596c6e14bee4eL,0x89b2758828a76dbfL,0x889fba0aa00dc1adL } },
|
|
/* 24 << 231 */
|
|
{ { 0xd55a3eaf0a9a8ba4L,0x13b1406b2a8cd215L,0xcb44589a93943e1aL,
|
|
0x91b5e3493a671a47L,0x488654f8efbe0256L,0x448bee4b392ba5e8L },
|
|
{ 0x228f478137e762caL,0xe21a2ca7e71b6c47L,0x0e809fe94900fcefL,
|
|
0xb05e1db2815f6c76L,0x8cdf28815fa6fa0cL,0x2ed55c1c586fec8fL } },
|
|
/* 25 << 231 */
|
|
{ { 0x7c3842eba210d4d9L,0xd656154e5f69a69bL,0x9e11c6db1f3a0483L,
|
|
0xb0314a5e5a217444L,0xe17a274e34f4e54fL,0x6e41c20a9f79d6abL },
|
|
{ 0xd010d789dffef6dfL,0x704937f17e8915f0L,0x5072bf063d3460fbL,
|
|
0xa30814ed5f08429dL,0xe5faf476207d2708L,0x46e56e14af448339L } },
|
|
/* 26 << 231 */
|
|
{ { 0x5a049c8f94af3a35L,0x9ae89160d8b75bbcL,0x8b026d867ff40c5eL,
|
|
0x90e54aa4fbddfd06L,0xc85349e7ee418640L,0xbf71e454beb7801bL },
|
|
{ 0x63f5e068ad912e83L,0x6252a4a4ada5341bL,0x25114b87b44529abL,
|
|
0x9b80bea9eadb4f13L,0x7f071c0cfe050052L,0x4c9cd33418612061L } },
|
|
/* 27 << 231 */
|
|
{ { 0xc6f50ed03c768ff6L,0x5b994b58b6de126aL,0x807ad19e2a1ac05aL,
|
|
0x012fcb9ddfc66ad7L,0xf8706d5fefeb7d07L,0x132aa6697bfc5337L },
|
|
{ 0x56bd874310e28d18L,0x33bc53d96e9f8e26L,0x5885b63b152758edL,
|
|
0xb8b1bd5e757e1471L,0xdbc689458c0d406cL,0xa664de3bfc605a11L } },
|
|
/* 28 << 231 */
|
|
{ { 0x04df415ea6d4b6c2L,0xb8e33e71d254d2d4L,0x179df4f48b84c588L,
|
|
0x8a2a0683d435793aL,0x6147a5a911eecec0L,0x0b8389793a0196ccL },
|
|
{ 0x855059ce81805693L,0x37babf9f3b27872fL,0xa2ac78b1769be5c3L,
|
|
0x16260f0c0a8d267bL,0x31f48c42388266c1L,0x58fee495ead1f238L } },
|
|
/* 29 << 231 */
|
|
{ { 0x5753ee0fc048300dL,0x307dfd57e048abc4L,0xc18bdfeca3ba6c56L,
|
|
0xfb2d8daf10495489L,0xd93aebd4e0fd2d13L,0x4736efaf0518a5faL },
|
|
{ 0xa8ee4995eaa9fc77L,0x2620f08e008adc03L,0xf03981839f06991aL,
|
|
0xd47b1eabe25a4f4cL,0x669cf09c79f95484L,0xf30191584a0f8b96L } },
|
|
/* 30 << 231 */
|
|
{ { 0x047b0f0124b240a1L,0x959915dd46cecf58L,0xedf2e74b72980ca1L,
|
|
0x6b7b7b4ef2cad32aL,0xf9f01c9d0b9ded1cL,0x009d3a5825e77e0aL },
|
|
{ 0x62314ab411a39c1cL,0xb3b0c5b2ad557b74L,0x6dbb75dd961619fcL,
|
|
0xb8f2d198c934e1e0L,0x4401507542eb7fd5L,0x3a8552efea1be435L } },
|
|
/* 31 << 231 */
|
|
{ { 0x08e3f0e2217de9abL,0x6bdec27bb6b4f789L,0x5b160334685af8e0L,
|
|
0x31e651cc61738f6fL,0x37224bc4631989c0L,0x2dc8006ad39f9c4dL },
|
|
{ 0x2a5d585056c3d84eL,0xb2ef06cc5cc79193L,0x246d92869eaa50e7L,
|
|
0x8cacbf7cea6a7cadL,0x109bddc629465ce6L,0xad2f492fb5744947L } },
|
|
/* 32 << 231 */
|
|
{ { 0xba03ba3b7b3b336dL,0xe57ce50928c9c55dL,0xf96b8cfe4f0f60b2L,
|
|
0xb908d77e6fcccd96L,0x7208ef7de79dd17aL,0x739095333ec3d048L },
|
|
{ 0x9c5ad2da1163fe78L,0x4e2a8685cd4a15c2L,0xac999449470eb938L,
|
|
0xfaaf27fbee7d772fL,0xfbe402abd0b7ad09L,0x704d4f0e57db00a9L } },
|
|
/* 33 << 231 */
|
|
{ { 0x8f2f736c6330607fL,0xaf4acf66c975432bL,0x838fd8cabd1dec99L,
|
|
0x347088aa7c3d0499L,0x28008757e835ea86L,0x43e2fb30c03e1aa1L },
|
|
{ 0x06c66dabf0d10da1L,0x25d7aa1867321158L,0x215e483811dc063fL,
|
|
0xd52dee1e288362f2L,0x790989a1fe300a0aL,0xe0452fa5f163e1ccL } },
|
|
/* 34 << 231 */
|
|
{ { 0xd3eab3ae25e7c044L,0xa3712d11b6d22325L,0x5e3835999e8237ddL,
|
|
0x2549047c9dc93a5fL,0x24b07617b546a113L,0xa50359ed2e7b82fdL },
|
|
{ 0xbbc3eb5889964effL,0x93d490b60d7ae172L,0x68cd6b3f774ac0e6L,
|
|
0xf98f1df035e02fc6L,0xfd2625c560857c16L,0xd68f25e845dd06f6L } },
|
|
/* 35 << 231 */
|
|
{ { 0x40dcb41018c1b3d8L,0x8af9a0bf954cc170L,0x9c40a17d5af27d6dL,
|
|
0x6b20fa7d7137d35aL,0x7c46f6aaf07f5adfL,0x7caa6e3cafc2f780L },
|
|
{ 0xef03332694dfb637L,0xd8f330b38d0ac73cL,0xacbf571255d40a9fL,
|
|
0x1b4ffafa3f4fde0eL,0xa17488e09fe6b04fL,0xd27808a103957cfcL } },
|
|
/* 36 << 231 */
|
|
{ { 0x85e1de1e96569e6dL,0xc9545920d7ae52f9L,0x04ebc797bcd62008L,
|
|
0xe142d0bc04a24db0L,0x5ed44b0d40e9fa80L,0x39fd679a48ddaba3L },
|
|
{ 0x91aba967ce7ee095L,0x76de8d3a0e97d0f4L,0x92e7a107a221785fL,
|
|
0xb028f67e734283ffL,0x987f644168af2f42L,0x0ad882369d7f7102L } },
|
|
/* 37 << 231 */
|
|
{ { 0xc5289301642f7d3cL,0x53ea584de508c45aL,0x86eb66e949337336L,
|
|
0xa56d59d668fbc13aL,0x44c464ffe9e51562L,0xe5280ecd8200a27fL },
|
|
{ 0x92e2a9334cc73f23L,0xf59780325e7b858cL,0x399bd41e90d4b2efL,
|
|
0x4faecb8bd0ead86aL,0x6ead9c530ce48b14L,0x941b4807ef74700cL } },
|
|
/* 38 << 231 */
|
|
{ { 0xea281be94d522b69L,0xb6855d45694a08bcL,0x7c47ddc7aa7f4d28L,
|
|
0x2028e22b6c36bba5L,0x206b63430c2dee0aL,0xfeb0b3dae68fdcd8L },
|
|
{ 0x6dda02a44603db5cL,0xa705d0defd786a39L,0xd356f6a426aadd38L,
|
|
0xd34acb7d95ef6a00L,0x073ea16e14846402L,0x2cf7a82ab2df8bc5L } },
|
|
/* 39 << 231 */
|
|
{ { 0x8fdcd309bffd7240L,0x6843dd76386e459bL,0x222fa67c0dee5740L,
|
|
0xa3801343620d7d83L,0x96dfdbffe21b4af3L,0x017bd3d3dadd04beL },
|
|
{ 0x1b6adba2bca18337L,0x191b86f1300ed35aL,0x103a380cd73bbadaL,
|
|
0xc2f3172f36f95dacL,0xa01a10e220767bf4L,0xda882ca6989ad766L } },
|
|
/* 40 << 231 */
|
|
{ { 0x5bbc748b9cc47708L,0x16d796054026c772L,0xefc3ce3ea053df6bL,
|
|
0x30ea7eab0713752fL,0x15b491b9dfd524b7L,0xa751d82010bcd34cL },
|
|
{ 0xf30c708abbd5da72L,0xf0c55aa86d16bd51L,0x1754060ba6215d84L,
|
|
0x3a48d2cbb863542bL,0x992e8340261d8c45L,0x4096f65be8fd2113L } },
|
|
/* 41 << 231 */
|
|
{ { 0x5532411e1045d8cfL,0x2d2f8d6b52bea60fL,0xa850b61825c556c2L,
|
|
0x6547892fe8965d13L,0xa7bd4527184d0cffL,0x0e7f7daec25ba558L },
|
|
{ 0xfcfaf7b234343889L,0x9d6a23aeb82ba1d7L,0x2859023b60514faeL,
|
|
0x4d51aeddc82da6b7L,0x6a060dc38273cd00L,0xf2f8923d78478c29L } },
|
|
/* 42 << 231 */
|
|
{ { 0x0baa35154f08b278L,0x26baf331e57297c8L,0x3fef65cc04e27c13L,
|
|
0x0f910ee0ca8430b6L,0xa27c5f5c2c445251L,0xc780142dccf3c637L },
|
|
{ 0x47dc4192e0f3fbbbL,0xf4d12bd6f2a91a33L,0xc1eb18b206352685L,
|
|
0x111cc07f5b3db096L,0xbce0cddbcb95c815L,0x6b0bae7e14d28563L } },
|
|
/* 43 << 231 */
|
|
{ { 0x40d16b7705897177L,0x4772a643953915adL,0xc6cfc1d23cabc7a9L,
|
|
0x0641e96df80536c3L,0x6c297cd6be4c5454L,0x509a837c9c00216aL },
|
|
{ 0x17455153c01ce9a5L,0xee76da8a40b825e8L,0x1757a59cd23a37acL,
|
|
0x5adcfbd10958248aL,0x043314525d01549bL,0x831f725ab0c42176L } },
|
|
/* 44 << 231 */
|
|
{ { 0x28704bdcdf7d537bL,0xbcae2c15fa88f42cL,0xab32eecd3866ac4fL,
|
|
0x446754a2128c4a7fL,0xc69309c1739ef781L,0x216e9f43bd160d81L },
|
|
{ 0xe0efa3ec6fefc0aeL,0xd179225086a604f5L,0xe43e13e260418c0fL,
|
|
0x6f605146f100b9b7L,0x6c39828a6e994093L,0x99558f4706c019e9L } },
|
|
/* 45 << 231 */
|
|
{ { 0xf541b3cd28df49eeL,0x0be75ef5cec2660fL,0xe73d18bb620c81f1L,
|
|
0x42e81fef3c775c53L,0xd0a9dcdcbc012ed7L,0x570f5a1b8f292a58L },
|
|
{ 0x51f302e74c030819L,0x42e1903f50bb8a5bL,0x6d8105a98536e7d0L,
|
|
0x66e2fdf1c1ca766dL,0xecaf4a316c5927fdL,0x347803cf96a14565L } },
|
|
/* 46 << 231 */
|
|
{ { 0x794d90ab425d3a7fL,0xcae9008d93ecbe48L,0x211e38c3bd5f11b3L,
|
|
0x6020ed2a6db1c1d7L,0xaa5695064437f020L,0xb2b93424235f4d6fL },
|
|
{ 0xa84a3c1d66ab2a3eL,0x171f9325712a14e0L,0x4a43cd6744d958d0L,
|
|
0x53bea85ee95dc3cbL,0x1fba008769f2009dL,0xf0fbc48f31c13eb4L } },
|
|
/* 47 << 231 */
|
|
{ { 0xefa3dea85fb2227aL,0x0160b031e098a97bL,0x92a554e3553377b1L,
|
|
0x7b58c26258ccaac8L,0x666400171c3e0a47L,0x40e45f90ae2d7d8aL },
|
|
{ 0x660df3441ee18103L,0x5515cd66e9b64e55L,0xede93c59de059b3aL,
|
|
0x874a0c90ca0e7acaL,0x840188abc8b1daa0L,0x9d49a02601e148a7L } },
|
|
/* 48 << 231 */
|
|
{ { 0xe93ee31ae12b4e64L,0x2ab8e378662d17f4L,0x2544bd9969516582L,
|
|
0x7bf80e4b2e1e5485L,0xf30f0b14729d9361L,0xb3ffb5d18268d40fL },
|
|
{ 0x34605055ac193a63L,0x9e5ca9a9f8e04d69L,0xcbbeebc1085ecbb2L,
|
|
0xda03b75bf340eac4L,0x3bf9468a84436462L,0xdfa8b4c80f26f20cL } },
|
|
/* 49 << 231 */
|
|
{ { 0x2e6520714aa497e2L,0x2b9358fd7ecd223cL,0x96efcbdc4f828e86L,
|
|
0xa0f76679d2f096c9L,0x3887bef70690b78aL,0x2e7d9cae1a01b10dL },
|
|
{ 0x8b0cdf0e5656e5d0L,0x0a6ca92d48d3ec2cL,0xdcacbdd3b49e2ab8L,
|
|
0x4d087ee0d7485e87L,0x4987078292cc57a7L,0xa1776bd47bb38b8aL } },
|
|
/* 50 << 231 */
|
|
{ { 0x60c113bdb711e087L,0x28694ff4e257e115L,0xf81d5e054c18d716L,
|
|
0xd1c04b67eb0af843L,0x16e6e46e40d8907dL,0xb73c3de91dd34d22L },
|
|
{ 0x9d7f282519825f92L,0xdf5d33edba486ce6L,0x288fafac21c223d3L,
|
|
0x21c4df016d05007fL,0xccd9626b197c5badL,0x3a91743902c91b36L } },
|
|
/* 51 << 231 */
|
|
{ { 0x6f950922340ebed2L,0x9e796894beddf06bL,0x5a8ea337cd9d7a07L,
|
|
0x1c5dee115bd182ddL,0xba87dd1ae0c79b9dL,0xb16169f3b9002931L },
|
|
{ 0x68098da138c62518L,0xea7bf413417fdc6fL,0xa500a320b6fdf768L,
|
|
0x7870c71c4550c202L,0x0874fd9f6121afb2L,0x49f0fd0cab7d0b6fL } },
|
|
/* 52 << 231 */
|
|
{ { 0x7af3de47f6b7fedaL,0x19b8a51ba30b2296L,0x16886446150a0af8L,
|
|
0xdada5aeeb2a4ecbbL,0x77105de8e8de3888L,0xc54d352c7d763f77L },
|
|
{ 0x754984ae72ff499aL,0x3de4b2785a5a25f4L,0x5df75ece818512a4L,
|
|
0xd4fc8093ca7ccf3dL,0xff9bdf544a49f4fdL,0x45d23e77de0a5840L } },
|
|
/* 53 << 231 */
|
|
{ { 0x8ef88682ca85a586L,0x12038785bff64885L,0x99670d8ac98cf695L,
|
|
0xf7dc3dca6c3d5832L,0x1e836a59fd3e64d1L,0x8dbb13addd426c1aL },
|
|
{ 0x21867f0690f59314L,0x7adb6f707da5ce5dL,0x662422ae0da28987L,
|
|
0x75a1486466766a41L,0x2d42bede6c8937b6L,0x559e168dff0c474cL } },
|
|
/* 54 << 231 */
|
|
{ { 0xa07fdaa25af635feL,0x01d67fb36a0c8fd9L,0xa226f8dac9eb8d8aL,
|
|
0x0795c27ce7fcfd0dL,0x84556c0553578294L,0x92b30a84b3e57574L },
|
|
{ 0xc8eb6ac0ca5dc890L,0x061a0a195c8b7d8aL,0x60f3351923177c06L,
|
|
0x780755917d01bf6cL,0x63ec8a4421f48422L,0xddfcb2c0d804c7b0L } },
|
|
/* 55 << 231 */
|
|
{ { 0xb186daffdb2e385aL,0x7589c9cd43aac848L,0x9b474a411fb053d7L,
|
|
0x2f79556be1ada6c8L,0x694badc54d7d9ce8L,0x31ac06a84921f546L },
|
|
{ 0xacaf91c165666233L,0x6ea97c8ee45b62b3L,0x9c8f3fa66f0096c6L,
|
|
0x2db7da39ac68f8baL,0x0ad2da0f19a3d1b2L,0x08c96b0ff80d426eL } },
|
|
/* 56 << 231 */
|
|
{ { 0x07d63f07257d20b5L,0x25475a304e8c62caL,0x2469d661789ac15cL,
|
|
0xd0d2ba1b3aae86a4L,0xc716202a4458dab6L,0xa011ca5ec4d5f90cL },
|
|
{ 0x53ce0273ca2430c9L,0x61040ecf96da6946L,0x6847dd034247c99cL,
|
|
0x0c500b4519defda5L,0x263316db365796d4L,0xff9b99e7b982d89cL } },
|
|
/* 57 << 231 */
|
|
{ { 0x725fc8f911591738L,0xe6c16db3f4030f65L,0x66c7622d441b6b17L,
|
|
0xad8e4b9c69d93786L,0x732d597473093a4dL,0xa2136d85228f103bL },
|
|
{ 0x84f1d9397bcf76e0L,0x971a4c55e2531411L,0x9816371d15920fa7L,
|
|
0x5515cbc594bbc17cL,0x8b8c76e859d52722L,0x3bfe618e9a240652L } },
|
|
/* 58 << 231 */
|
|
{ { 0x18981da25cd1f7c3L,0x198a91bb09b22c3eL,0x48d11aafb23d71ebL,
|
|
0xddaa6e071d31782aL,0xca7b812a39125babL,0xd89dcd825d963539L },
|
|
{ 0xc7012ed9e5a89eafL,0xbcf0d4c4af0ce61fL,0x6f65a246e6a9f404L,
|
|
0xae6a489d51c1302bL,0xab43a2bcfc5ea651L,0xfdb73470293b1e58L } },
|
|
/* 59 << 231 */
|
|
{ { 0x8e860629f5c9d835L,0xf91a0b5d04efe37dL,0xaa2acb55b1956d3dL,
|
|
0xe295b30fb5bb48ddL,0xdfad64a7e8275e6fL,0x1e203bb7d41beeaaL },
|
|
{ 0x4aa2fd5836e64f60L,0xfb0b92a706e01818L,0x68e386d60d29ff89L,
|
|
0x617981bc1802840aL,0x6d68ccf7ceb124f5L,0x19193c483b120ddaL } },
|
|
/* 60 << 231 */
|
|
{ { 0x4d02098b8b5d9d67L,0xecb580503148dc75L,0x561545107d898600L,
|
|
0x0213ef782d8be728L,0x4123671b1f11d90bL,0x8b9ff1b654c291beL },
|
|
{ 0x139ba95e52db185bL,0x83be41d0997b3eb4L,0x4a950c9a41e2e288L,
|
|
0xdca0290c48916145L,0xf1eb9327cd073e77L,0x384ec5ddbd4f4ccbL } },
|
|
/* 61 << 231 */
|
|
{ { 0x7e538f9036f4b7b0L,0xeb54e9e4ca25008eL,0x0054a07bf8af6eb2L,
|
|
0xd96b712f5e3f61e9L,0xf01da03e29aa496dL,0xedbbc2d7d00faf95L },
|
|
{ 0x178c5bbd104f4dd3L,0x5cbd4783aa11b0d0L,0x4433fe6156eecea2L,
|
|
0xdcc01bdcada7991aL,0x89ca41ba1addfa5bL,0xad64ee097a65ee64L } },
|
|
/* 62 << 231 */
|
|
{ { 0x05a8a58d7e276915L,0xee28f77bf1582bf6L,0x6f308349285bd210L,
|
|
0xb8b8ec47ab877186L,0x0436930e0ddb857fL,0x20a9973e5346b800L },
|
|
{ 0x756ab9b5848dd5b9L,0x33a220cfa12370ebL,0xdbd87c391f3d0386L,
|
|
0x90c6879075429844L,0x5cc1a9736193f021L,0xf0b80f6543d46e24L } },
|
|
/* 63 << 231 */
|
|
{ { 0x45e5f57bf79f5116L,0x14f02b229bcd30ecL,0xd989ee5426a39a1dL,
|
|
0x497ad3c3d5854b85L,0xb61c15e50154364fL,0x5979941f502107d5L },
|
|
{ 0x0b99f087195934f6L,0x1f852baa605fbf71L,0x68ec80e47206f65bL,
|
|
0x0392af1cea5bc3c0L,0xcebe56f81cb1d6bdL,0xdc6279d90f80b6b9L } },
|
|
/* 64 << 231 */
|
|
{ { 0x10c082a63fc14a85L,0x59389ebc1c0b14c4L,0x785d935b4cb291a7L,
|
|
0xfc2ae15313e9ce08L,0x3146fabf4df6f1c4L,0xa2a4a457c87dd24cL },
|
|
{ 0x85fdd8771deb49bbL,0x2b7843709b055934L,0xc81d05013e7e0297L,
|
|
0xb56ddd1fb92df904L,0x4612df9f295ddccbL,0xc24bd4cf0e27cf1dL } },
|
|
/* 0 << 238 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 238 */
|
|
{ { 0x7830460fd1944d1bL,0xc56f08e784350af2L,0x73bee2aa307d9c78L,
|
|
0x1b02af1b5aad8b6cL,0x5e31882703848db5L,0x4785958bf230f476L },
|
|
{ 0x4ea6535d4f80e25dL,0x9958c9c7d23c7f72L,0x4c197b332fd33cabL,
|
|
0x24c7b0b1c566914fL,0x956ce3c371952d3bL,0x8735694bfabae5f2L } },
|
|
/* 2 << 238 */
|
|
{ { 0xca9872e1597bd10eL,0x6725cc9a4aed951fL,0x96b17cb84e05b280L,
|
|
0x97987146fa234d45L,0xba78949ebb35a7d8L,0xb82e9b9f6fc59384L },
|
|
{ 0xa303e54a70f165c7L,0xfd6bb0dcb9c2cad9L,0xe57e2de8ee722045L,
|
|
0xa05c106563e27035L,0xaa38e86602d2fe6fL,0x78e02fa8ee2f6aadL } },
|
|
/* 3 << 238 */
|
|
{ { 0xd6256e7c62c627c2L,0x5571edfc3cbb10dfL,0xfedec45771cca8f4L,
|
|
0x2e26ac5f8483eed6L,0x8e8c0671173508c2L,0xfd9f25d50f39bf76L },
|
|
{ 0x1cb080c3094cc1b1L,0xd367ca8c113e6552L,0x4ae2ca36bedb511cL,
|
|
0x0de0c3e34707eeb6L,0x204cc610239d3097L,0xb235dbf0adb00383L } },
|
|
/* 4 << 238 */
|
|
{ { 0xc0426b775e3c647bL,0xbfcbd9398cf05348L,0x31d312e3172c0d3dL,
|
|
0x5f49fde6ee754737L,0x895530f06da7ee61L,0xcf281b0ae8b3a5fbL },
|
|
{ 0xfd14973541b8a543L,0x41a625a73080dd30L,0xe2baae07653908cfL,
|
|
0xc3d01436ba02a278L,0xa0d0222e7b21b8f8L,0xfdc270e9d7ec1297L } },
|
|
/* 5 << 238 */
|
|
{ { 0x9704cdc6a9c26f4fL,0x96808107908a6756L,0x73be47d40f1def2bL,
|
|
0xd32c11d619215394L,0x1a59b9541842c2f2L,0xd64a70bb52c94807L },
|
|
{ 0x32b08c3e9dd262b3L,0x54d2cdc4440315a0L,0x671b3139425ace14L,
|
|
0xd418542f2c7518e4L,0xce5e1712cc1bbdaaL,0xb3268403131f98adL } },
|
|
/* 6 << 238 */
|
|
{ { 0xce4b39874e39e87dL,0x8e60a901966f4603L,0x1b95e4fd73c4a679L,
|
|
0xae87f845b004310eL,0xcd50aedf815684c5L,0xa56805d343c77e38L },
|
|
{ 0x9a429abcf0588403L,0x77dd1a02009e699dL,0x27ad38fb52a417d6L,
|
|
0x62591579fd8f6d00L,0xccb12126ea58f822L,0x3a009e76760a3ccfL } },
|
|
/* 7 << 238 */
|
|
{ { 0x17688d3410023b42L,0x9bc8bd6f7cfadb6eL,0xe4cdf89f460aa255L,
|
|
0xf709740a99eb21f8L,0x1ea8115cbd460bacL,0xbf7bafe8ac7e6629L },
|
|
{ 0xf8dc02bb096de741L,0x982f7becd2f6a583L,0xd971589a0f92bfeaL,
|
|
0x662793afc02acbaaL,0x1b0f7d5eb771574eL,0xd9f71c4c66985cdaL } },
|
|
/* 8 << 238 */
|
|
{ { 0x4f120aa7e2a07891L,0x9158bab3a25d3225L,0xc96bac5ecfe5f7a8L,
|
|
0xd4e73d59bbf3cec6L,0xed8d233560361cd5L,0x9b1a252c562f444cL },
|
|
{ 0xbd37d3cfc70f23c2L,0xf13b3b6ea52ea19eL,0x7e35535a3d2f41edL,
|
|
0x0353b52ee8b1743eL,0x31d89dfd7b5a2765L,0x2b7ac6848d9ea8b8L } },
|
|
/* 9 << 238 */
|
|
{ { 0x3613afb361bd36b3L,0x85171aef3e0339eaL,0xdaf0c280c833abe6L,
|
|
0xde566372e4500f09L,0x487dbef84a5bda73L,0x5cc00564e6e3f324L },
|
|
{ 0xbdf148cfb96abd01L,0xf8dbeda5ba9306ffL,0x05774d1a5ac0b828L,
|
|
0x73ddc3248cf4a56dL,0xabc5af5232dc6125L,0x15ad6d2573294d7bL } },
|
|
/* 10 << 238 */
|
|
{ { 0x7b5bbe51bd6086deL,0x7fbc95303816cee6L,0x60ac14fab3354bf6L,
|
|
0x2b2abe43c9a6e793L,0x6ffae7342e19664bL,0x1d0e38b90064bd95L },
|
|
{ 0xc1303ba3fa9f23beL,0x6d5f4ea5d8f0a46cL,0xf8f472517a270649L,
|
|
0x126c13ae723a5a0dL,0xe4d0a19e5e21273eL,0x18076170e83abb8cL } },
|
|
/* 11 << 238 */
|
|
{ { 0xc21dc6946b771809L,0x2501f25600f85b8aL,0xb3a21dc347382df8L,
|
|
0x25ede3c239dee18dL,0x39709b9db29b770cL,0x6eb314d510fa9c5aL },
|
|
{ 0x79140b1f508f5e59L,0xcce9f7cedeff2816L,0xa153c050400bc8a1L,
|
|
0x052e03c4ff2c127fL,0xf8ffff1f841a03adL,0xc0c2626345896fb5L } },
|
|
/* 12 << 238 */
|
|
{ { 0x06a67bd29f101e64L,0xcb6e0ac7e1733a4aL,0xee0b5d5197bc62d2L,
|
|
0x52b1703924c51874L,0xfed1f42382a1a0d5L,0x55d90569db6270acL },
|
|
{ 0x36be4a9c5d73d533L,0xbe9266d6976ed4d5L,0xc17436d3b8f8074bL,
|
|
0x3bb4d399718545c6L,0x8e1ea3555c757d21L,0xf7edbc978c474366L } },
|
|
/* 13 << 238 */
|
|
{ { 0x905ad4bf3023ec1eL,0x8cc101ca16081c1eL,0xe0d47ec79cb74127L,
|
|
0x1be5f86725da2dd4L,0xcba2ee4507ebac2eL,0xcee26667e22d87d1L },
|
|
{ 0xfc339af1c7c409ecL,0x112af9b47b7ef32fL,0xcc3e07898b821999L,
|
|
0x4234433c222b3478L,0x55bcc87ddbce50c0L,0xcb6141cd7816f642L } },
|
|
/* 14 << 238 */
|
|
{ { 0x8ae24e6b67f38eecL,0x61adae20ea14bc0dL,0x32737584c480c3fcL,
|
|
0x44f61b79812ee744L,0xc8f607d5fe06d5d2L,0xfeaeb2bcea45267eL },
|
|
{ 0xe004522bb92c909eL,0x5171fe360ab3e854L,0x659936fe63ebc481L,
|
|
0xdde6dbbff76649d4L,0xb38c160fe2295d0eL,0xba608b7e1e8f5c1bL } },
|
|
/* 15 << 238 */
|
|
{ { 0x55616c4c86c2cb9cL,0xcfa8b484173526faL,0x096a09d90039a4c9L,
|
|
0x6ccb4964f300a73bL,0x42dd78ac66819855L,0xa7c532c10941599cL },
|
|
{ 0xd15905f0b630220bL,0x9f4893ca5637e103L,0x768c09bf8a2115abL,
|
|
0x5091f4399c52755bL,0x4ad1c0f6d38e7c50L,0xf6e6b2d054eb4439L } },
|
|
/* 16 << 238 */
|
|
{ { 0x73457010c46db855L,0xccb68c43dd579fb8L,0x705b0e8c9c25fe5bL,
|
|
0x40f36ea182dd0485L,0x3d55bc8527ac2805L,0x15177c6fad921b92L },
|
|
{ 0x51586cd55ab18cabL,0xf51b5296cbb4488cL,0xbb4e605e84f0abcaL,
|
|
0x354ef8e3772dd0daL,0x7f1a8f795e4e1d41L,0x93461f09de5d8491L } },
|
|
/* 17 << 238 */
|
|
{ { 0xe186b0b09cd7d54aL,0x0451cb0dd4303760L,0x90a8b0f84b38f082L,
|
|
0x2357f03700b04fffL,0x8a4669f86d81dbd3L,0x2a5cb6f6bd94842aL },
|
|
{ 0xa13d19c4c498a572L,0xb7b8fe10cd937a76L,0xf8df355ed9842244L,
|
|
0x64fc9d62b077c8feL,0xd4b2c3cce9dd337eL,0x7c63799ad3784edaL } },
|
|
/* 18 << 238 */
|
|
{ { 0x39fe6673a780fd38L,0x8bc8d026a4b4cfa8L,0xcc339850801c44bcL,
|
|
0xb5d80c4bc2dca07dL,0x745ffb5d91f1408bL,0xb55588f89017d1e7L },
|
|
{ 0xafef3cf1c3d76a1eL,0xe3a6e8058e1367ebL,0xd09ea1e2a642d2bbL,
|
|
0xf303c613216e63e5L,0xe699e51cc98908e6L,0x835d4cefafeac3c2L } },
|
|
/* 19 << 238 */
|
|
{ { 0xd1cbe55ee5000eceL,0xc1a074b01ff0f474L,0xc6681f48d7ffb89bL,
|
|
0x7c68011d48d0bb4dL,0xf305627bdcef5e07L,0x0f0e0c36323ee3fbL },
|
|
{ 0xc5c6b61355f5f185L,0x6e4de5af52d6cc84L,0xa64ea548889fe8bfL,
|
|
0xc4c5e4104d28350eL,0xef944a8f7dd3072dL,0x7ed579fa13356185L } },
|
|
/* 20 << 238 */
|
|
{ { 0xec72c6506ea83242L,0xf7de7be51b2d237fL,0x3c5e22001819efb0L,
|
|
0xdf5ab6d68cdde870L,0x75a44e9d92a87aeeL,0xbddc46f4bcf77f19L },
|
|
{ 0x8191efbd669b674dL,0x52884df9ed71768fL,0xe62be58265cf242cL,
|
|
0xae99a3b180b1d17bL,0x48cbb44692de59a9L,0xd3c226cf2dcb3ce2L } },
|
|
/* 21 << 238 */
|
|
{ { 0xe646281876ba99afL,0x1d53bd27818b5992L,0xc55e135d67e1d81bL,
|
|
0x32b9e37023e211feL,0x91ea63dc130b1176L,0xd7e1cc51a34fbb3cL },
|
|
{ 0x5363fd962fee934dL,0xd19c50ba0b8fd289L,0x21257825a11c27b6L,
|
|
0x19159a966792c1ccL,0x0ccc3cac39a08fbaL,0x841cb58a45512d8eL } },
|
|
/* 22 << 238 */
|
|
{ { 0xae8532c3224ab492L,0x8bc92c85f6acd0ddL,0xc071ba92b796d21dL,
|
|
0x1290162943797a3bL,0x8f4c5fb5ec950329L,0xfab6f950cf0578e3L },
|
|
{ 0xb7b8d211bb6aa75cL,0xb06279dc3d1147f9L,0x060db1a7591820cdL,
|
|
0x0e691a412830f356L,0xac00664224b8bc33L,0x579f9c052f17441eL } },
|
|
/* 23 << 238 */
|
|
{ { 0xd8b9dcd50c4cb7edL,0x2f59d64c7619cdf4L,0x7e83d18e284bc6f9L,
|
|
0x49af25123e415166L,0x90388976ccd64d11L,0x4708fffdfe2580b6L },
|
|
{ 0x7a8d25ff17dd4d8bL,0xba7785fefd71355bL,0x7cceb111b9789cc6L,
|
|
0xa8fd782ee98d6b78L,0x8d1b7fb66135d4a2L,0x78c2267d35e382beL } },
|
|
/* 24 << 238 */
|
|
{ { 0xf38995589311182cL,0x1bee4c4bb657a7b7L,0x0b1c4fd32df8d1a7L,
|
|
0xf16bcc2376d3fbbfL,0xd5888916f4fd52bcL,0x3de6cfb4d5cde1f0L },
|
|
{ 0x764ffffdd4a07dfdL,0x5e674426e2642182L,0x34f64762ccd57b85L,
|
|
0x2233a4c329351062L,0xdf076095d9c642f3L,0xac917a2c59f0df34L } },
|
|
/* 25 << 238 */
|
|
{ { 0xe588d5a8cf2f7d4dL,0xb45923ee86798c14L,0xffefd323f0623572L,
|
|
0x24dd7019005f605aL,0xb9e833053a6edaecL,0x039ed04949923a44L },
|
|
{ 0x0f83a74360789fd2L,0xb4f91a8e9b001515L,0x37b856664261ad9eL,
|
|
0xc291caa68b92b7afL,0xfa0f8a5e67ba28e0L,0x362a6808c5eefb98L } },
|
|
/* 26 << 238 */
|
|
{ { 0x8aee939cc64e4ab3L,0x3baac0a844621bb2L,0x9094a09629da9bc3L,
|
|
0xa92dc70806d2314fL,0x45c1cd0e34235918L,0x51aeb007c34021a4L },
|
|
{ 0x58267735a3492237L,0xe8d494bd375eb21bL,0x664dacf5a395bf8bL,
|
|
0x2ef1feb612cec40eL,0x90c5f43fa7141e5bL,0x93e80dd03855169fL } },
|
|
/* 27 << 238 */
|
|
{ { 0x2e550006211b2fb3L,0x8c82e59d6cab73baL,0x011bb2fb2bd326b9L,
|
|
0xfbd519ff1e0efd69L,0x0fb2f266320cec7fL,0x879e28c03518fac3L },
|
|
{ 0xd0887775e01294eaL,0xf6e60efd1df5bb0aL,0xb2a5d3a404d04a96L,
|
|
0x915eaa29a4f3500fL,0xcb6c03f70db6bde4L,0xfee081a405f30cc1L } },
|
|
/* 28 << 238 */
|
|
{ { 0x9580cdfb9fd94ec4L,0xed273a6c28631ad9L,0x5d3d5f77c327f3e7L,
|
|
0x05d5339c35353c5fL,0xc56fb5fe5c258eb1L,0xeff8425eedce1f79L },
|
|
{ 0xab7aa141cf83cf9cL,0xbd2a690a207d6d4fL,0xe1241491458d9e52L,
|
|
0xdd2448ccaa7f0f31L,0xec58d3c7f0fda7abL,0x7b6e122dc91bba4dL } },
|
|
/* 29 << 238 */
|
|
{ { 0x24e2801364ca563dL,0x6f06fde270f8f91eL,0x9abcca1bd2a65c0fL,
|
|
0xc5728ffca5aa1e40L,0x654f0f56eb9d3e45L,0xe04ada2394161a0cL },
|
|
{ 0x001b25626ddbc960L,0x253b447aef93504dL,0x895ce21e2d6dc894L,
|
|
0xefb987381c1b63deL,0x6adb6eecde8b806aL,0x9ea3884e0240e7bfL } },
|
|
/* 30 << 238 */
|
|
{ { 0xe8387f68411ad563L,0x98a962eacc5f157bL,0x8093a8d296090321L,
|
|
0x240a73083790052dL,0x6cb4a7382e7dcedfL,0xda65bf8481a60e8cL },
|
|
{ 0x420ce478c66c70aaL,0x0e7959ec42da3021L,0x44bc9d3c7e35aa20L,
|
|
0x36e49d764e9df39bL,0x7281073a9b286287L,0xd9a068422524b62dL } },
|
|
/* 31 << 238 */
|
|
{ { 0x00d6e0312546247eL,0xcc2851020fdaebdaL,0xb8a453f15601006fL,
|
|
0x0afaa3f138be7068L,0xc87acb442c6cd9f1L,0x10dd5d031ffd5fbcL },
|
|
{ 0xbae0b62fddacbbd0L,0x1daadc18446bf2e2L,0xaeaf15317ef0facdL,
|
|
0xe7b92b76c941808fL,0xda59af2ae6d0dffeL,0x1c09b783e612b888L } },
|
|
/* 32 << 238 */
|
|
{ { 0x3bd258d8775f516fL,0x4bedebd5c715927fL,0x5b432512e3f966a0L,
|
|
0x338bfca7709d0c2dL,0xd142cc1049658259L,0xfabc6138636b8023L },
|
|
{ 0xa9ef94014d4ef14dL,0xd5917ac1c54c570cL,0xfd2f63c55cb64487L,
|
|
0xbae949b11cea475bL,0xa45446031e67a25fL,0xa547abc1dc6a7a6aL } },
|
|
/* 33 << 238 */
|
|
{ { 0x6c7b4cf344b880b0L,0x29da87760a388eaeL,0xf434d173fe9617c9L,
|
|
0xaf67cc2ea47abf28L,0xe211ad37249d0eb4L,0x88d156e538bce76fL },
|
|
{ 0x60320c6dd58fa585L,0x7b352c39ebf09a7bL,0x9305dae8a31ce734L,
|
|
0x70c35be89361cc3bL,0x6b8b71f8bcd14255L,0xd1b7963572a457a7L } },
|
|
/* 34 << 238 */
|
|
{ { 0xd8d04787ef8849e1L,0x58adf044148375e5L,0x5b613ac476623232L,
|
|
0xbd274d2f95d7e359L,0xd97acbd271576bb6L,0xd20bb2c34c7fc4b7L },
|
|
{ 0xe15465315f837664L,0xddac59b5fb4ce79aL,0x33fef5214fb36e08L,
|
|
0x0467811045108b22L,0x0de6c7766dbe57bfL,0x456d765a25fea77bL } },
|
|
/* 35 << 238 */
|
|
{ { 0x4d9838a32922b715L,0x3cd9fc0a6a7bb3a7L,0xb1bf28fc2247e916L,
|
|
0x92dd22006f206a16L,0x8ea87d67b51256caL,0x2c535730b5a4bf17L },
|
|
{ 0x34da42505f584954L,0x72326fb8fefca748L,0x40fd9d09da2844a2L,
|
|
0xaadaf71c412da037L,0xa62329a9aa6f884aL,0x1b6165e6726a8f8cL } },
|
|
/* 36 << 238 */
|
|
{ { 0x2a2dedafb1b48156L,0xa0a2c63abb93db87L,0xc655907808acd99eL,
|
|
0x03ea42affe4ac331L,0x43d2c14aeb180ed6L,0xc2f293ddb1156a1aL },
|
|
{ 0x1fafabf5a9d81249L,0x39addead9a8eee87L,0x21e206f2119e2e92L,
|
|
0xbc5dcc2ed74dceb6L,0x86647fa30a73a358L,0xead8bea42f53f642L } },
|
|
/* 37 << 238 */
|
|
{ { 0x39de72e225e62213L,0xd885c406a03a58adL,0xa63964b527e76458L,
|
|
0x93f83239637c0becL,0x8c9e29b4ba556e65L,0x7d746448a6183182L },
|
|
{ 0x6dee01aa09a8eb37L,0x97289f2e757ffa96L,0x367ec50fb4785102L,
|
|
0x200f77cdb3d07cd8L,0xadc7c000a581946eL,0xa2dba5e52c0b32aeL } },
|
|
/* 38 << 238 */
|
|
{ { 0x95a5a7f0b203f75fL,0x9b574cfcb5df11f0L,0xbf5fe3f2dba4b4e6L,
|
|
0x347a7bd7d0987125L,0x858dea6b09377a2aL,0x87cb1e66eea85d5fL },
|
|
{ 0xe7619b666146a0c6L,0x0012585a8a0bc101L,0x738e6589ea0ce92aL,
|
|
0xf23547979a39b3f0L,0x666f3f5d6dc81167L,0xe569cc82fb06b0b3L } },
|
|
/* 39 << 238 */
|
|
{ { 0xef0e64399c7677d5L,0x052bf027efc398c2L,0xa5d253cc515e4198L,
|
|
0x7b915f07a71ce047L,0x56880ea2e177dbf6L,0x735dc74f0b5741d9L },
|
|
{ 0xa108632f0161a0acL,0x0c68765705e7e09eL,0x694e651e211709e0L,
|
|
0x334e15e51d879a41L,0x6191d34260c2a603L,0x3a8ce0e6224234d7L } },
|
|
/* 40 << 238 */
|
|
{ { 0x158d814db12c4bb1L,0xe52f75d22f0cf4faL,0xf106023e6141b59cL,
|
|
0x5eb8b8ebbeb9d941L,0x1dd3972990cf579cL,0xb273252e69ee6efaL },
|
|
{ 0xe43a3c593e9947a0L,0xd605124f6c19dd01L,0x8090fdbd05c578b0L,
|
|
0x8e6c535a622ff18cL,0x3600b0c257d12071L,0x6d026e5c78d001d7L } },
|
|
/* 41 << 238 */
|
|
{ { 0x6e515f3608e33ad5L,0x3e320c5283512d9bL,0x171ab26a5ca1c452L,
|
|
0xfb3061e874c97139L,0x7944644c9cacf3aaL,0xedc724f03687cfceL },
|
|
{ 0x7252d7590db9b5beL,0x625f17ed0eeaf1d4L,0x6b0b4e5e82e3c58bL,
|
|
0xf03d7bcef0f2ecc3L,0x4cbaa878139a7580L,0x982e471672203e07L } },
|
|
/* 42 << 238 */
|
|
{ { 0xa533f574e335d60dL,0x102b66fb2aa6855fL,0x7a57420c49946287L,
|
|
0xe3bb702286f393c2L,0x1892642d04a41c49L,0x2c47ba38d44969feL },
|
|
{ 0x9068650444388ef1L,0xd94f6f131eaf6b54L,0xf81d8782f0b872e8L,
|
|
0x7ced5924d013f6eaL,0x76ef63d307cd721cL,0x888646b36cba783fL } },
|
|
/* 43 << 238 */
|
|
{ { 0xd2c858157ec1660cL,0x6c8988a3ee73763cL,0xd6cc562d5e80aaeaL,
|
|
0x48f399d975768c58L,0x3189bf68af50c1c3L,0xa3f8d2df27dc372fL },
|
|
{ 0x99d6b416b8c7c529L,0x531707944406b1e6L,0xafb57933e3ac044fL,
|
|
0x530ad3bab2548505L,0x791a290a977590caL,0xb0d07228646fd1fbL } },
|
|
/* 44 << 238 */
|
|
{ { 0x636225f591c09091L,0xccf5070a71bdcfdfL,0x0ef8d625b9668ee2L,
|
|
0x57bdf6cdb5e04e4fL,0xfc6ab0a67c75ea43L,0xeb6b8afbf7fd6ef3L },
|
|
{ 0x5b2aeef02a3df404L,0x31fd3b48b9823197L,0x56226db683a7eb23L,
|
|
0x3772c21e5bb1ed2fL,0x3e833624cd1aba6aL,0xbae58ffaac672dadL } },
|
|
/* 45 << 238 */
|
|
{ { 0x86d2f71530cf85afL,0x8e1b053cf7e634e0L,0xe79592f43a4e466dL,
|
|
0x26752e8506985331L,0xfd098e83dff73363L,0xaa158e2c505ffbc0L },
|
|
{ 0xe45fa1cba0fe759cL,0x6e2f5989bc0d1491L,0x4a804eacae7210a9L,
|
|
0x0e252f758a63f67bL,0x0d7600cf362a7df7L,0x795069bf6d5b2b18L } },
|
|
/* 46 << 238 */
|
|
{ { 0x25f9f0fc0649613bL,0x109521f05d3005d9L,0xcce1c5b41feba4c2L,
|
|
0x6a27cfafacda6021L,0x37ff83303ab6382eL,0x53c7ccb715ca79f3L },
|
|
{ 0xdffa6c9633611dd4L,0x7555cfd4352d3916L,0x2354bec62cbd44f7L,
|
|
0xaf0044c54b0b500cL,0xe4835df7ce9aade1L,0x14e57f6bcb218644L } },
|
|
/* 47 << 238 */
|
|
{ { 0xb5e26899b1c22bd8L,0xde12b0b51aaf3460L,0xc269595c31ee049fL,
|
|
0x8c7513c88a73ed74L,0x8273018450cd009eL,0xb2cd2dec4d130b5fL },
|
|
{ 0x1a9015521971a189L,0x6ce23544c6f39bc3L,0xd76133aa9467badeL,
|
|
0xf91173cc071ee7a4L,0xe54d8f44b8267c73L,0x5725e0676dc9aee6L } },
|
|
/* 48 << 238 */
|
|
{ { 0x00e0a003daff1807L,0xcb9d155992c94fd0L,0x3c2b5c3dcebbf905L,
|
|
0x9c799ec7d338afa9L,0x60b9908c4e2cfcccL,0x4bfe1a57ae3c6f92L },
|
|
{ 0x480d310efb116150L,0xa1ed6c31e3e7888eL,0x841a11d9720b5196L,
|
|
0xcc337d178adff37dL,0x08c668265faa86c5L,0x945c90d49dfcc7adL } },
|
|
/* 49 << 238 */
|
|
{ { 0x0fcc0854f2b3622fL,0x3a9e218ab6833f04L,0x209125d4ee8fc062L,
|
|
0x98b2c628a3c3bf2eL,0x7e051fda83ca6a6eL,0x81afd3933d87981cL },
|
|
{ 0x8f3beaff4baf556eL,0x0f1b27fdcc7e66c7L,0xbf0b08f59f4a4461L,
|
|
0x8eb739fa141985e5L,0xdb5b46112da43947L,0x63bf81cbe5cabfddL } },
|
|
/* 50 << 238 */
|
|
{ { 0x355e40d398ff85afL,0x19f2f3c2b08f836bL,0x0a62d254737cb5f7L,
|
|
0x5d0ef7d9f8c50d82L,0x773a399ebbd70eb7L,0xac357974a70bea8bL },
|
|
{ 0x1de5a45cb3b5d794L,0x67c58b52a48b55b7L,0x724f56f4b02ebc8bL,
|
|
0x03dc71e3154ad508L,0x9bcd3939cc84428aL,0x7fdba978158c4a0eL } },
|
|
/* 51 << 238 */
|
|
{ { 0xac08e06e65b93d44L,0x2397625a5358c691L,0xfbc9285a8516e31aL,
|
|
0x38ce0d3544ffe25eL,0x13381dd16414072bL,0xf782fddc170ecb4eL },
|
|
{ 0x78c71a716f815259L,0xb725870573659a85L,0xd37678008712d968L,
|
|
0x153d8aee3eda5006L,0xda4fd94818f1439eL,0x6384135352dbfdf8L } },
|
|
/* 52 << 238 */
|
|
{ { 0xce92224d31ba1705L,0x022c6ed2f0197f63L,0x21f18d99a4dc1113L,
|
|
0x5cd04de803616bf1L,0x6f9006799ff12e08L,0xf59a331548e61ddfL },
|
|
{ 0x9474d42cb51bd024L,0x11a0a4139051e49dL,0x79c92705dce70edbL,
|
|
0x113ce27834198426L,0x8978396fea8616d2L,0x9a2a14d0ea894c36L } },
|
|
/* 53 << 238 */
|
|
{ { 0x06d57f2920514206L,0x61394b863a2cc1ebL,0x0ffdf49a86c7b2c1L,
|
|
0x65334e9349f58f13L,0x180b10b8c08dfb05L,0xec352adef6c95b7aL },
|
|
{ 0xf9801dc0c4bde0faL,0x428c77f0dabf0c66L,0x2a7d1bb0c2eb80d4L,
|
|
0x81774172fdb56fabL,0x7507481f1d965515L,0xee0693bb8ebfadebL } },
|
|
/* 54 << 238 */
|
|
{ { 0xf4589418ac56a031L,0x21f3dec6f2718a10L,0x0ed08d9690f28b6fL,
|
|
0x2624bd7a35c3a6a3L,0x1b3f02e8bba795f2L,0xe629b5aa3977fd17L },
|
|
{ 0x66c8cd7691e8df1aL,0xf36c4e2c1b2b5542L,0x7f6b742f7dff66a7L,
|
|
0x00bc68b8242e0fc2L,0xdff5c73360119d9bL,0xe726260fb5c4dddfL } },
|
|
/* 55 << 238 */
|
|
{ { 0x0242fa358eeaa549L,0x2d081bcf8abc93c6L,0xaa31813c55551d40L,
|
|
0x1cf21c1271db3aecL,0x5a6dede7203880d9L,0x389c63cabe4aaa9aL },
|
|
{ 0xff4db7d4bf28086fL,0xd89c039b33146844L,0xc2b32bf06df6f790L,
|
|
0x7f4e836b9f22fecaL,0x3f64d0fa0af51572L,0x681a1f5bc67aa565L } },
|
|
/* 56 << 238 */
|
|
{ { 0x9f9ac9608e2941a6L,0x43e7ff902fc4fe1eL,0x5ec413596033e041L,
|
|
0x5ce791c46f6ff0f3L,0x8d134b899d907343L,0x7bd15c7786304df2L },
|
|
{ 0x2cd2ebc777c4a913L,0xcd86a39d45f07153L,0xe7e12d2e88bc423bL,
|
|
0x478e814b0b3163f4L,0x78bd9c8abe8ec766L,0x6a5763e87709ce48L } },
|
|
/* 57 << 238 */
|
|
{ { 0xb503ac624329d7f4L,0x3a900374488e3ce4L,0x8a11addab0d8dc97L,
|
|
0xbea3ea2c0873bdf8L,0x0f57130115bc7adeL,0xbc98d2070b2b69a0L },
|
|
{ 0xaefc4047639d182dL,0x0e6db26feb3c44eeL,0xaf0f8b392a68a48dL,
|
|
0xde65a6b36bf1e593L,0xe48f8fc989dbd38aL,0xad18a43bd8d285b3L } },
|
|
/* 58 << 238 */
|
|
{ { 0x249d86007e9d48c8L,0xec6109ba109a54bbL,0x64f688af5ac65ad4L,
|
|
0xb12c85b4be1796baL,0xcc258d31c9940da0L,0x59590853ff2f151bL },
|
|
{ 0x9e9edc4d401c5d1dL,0xdd9ad117f230b458L,0xc2c752ac962334b6L,
|
|
0x3fab66ce27327e6cL,0xa363d3643816a47eL,0xa6fc57bec180bbdeL } },
|
|
/* 59 << 238 */
|
|
{ { 0xd72dd5893ff345d5L,0xf87c17ae41e1d287L,0xadadbf525964d55fL,
|
|
0xecc7f27af8b07db1L,0xa2dacfce6f2aa320L,0xc7936da72aa3f228L },
|
|
{ 0x2e9e6058fa504b87L,0xf2df43279d0f0634L,0x90d5ee22a4b768c5L,
|
|
0x1ea9bf0b5b46ea84L,0x792370f45cc41770L,0xfd17823176c1a3f5L } },
|
|
/* 60 << 238 */
|
|
{ { 0x4f1e1254604f6e4aL,0x4513b0880187d585L,0x9022f25719e0f482L,
|
|
0x51fb2a80e2239dbfL,0x49940d9e998ed9d5L,0x0583d2416c932c5dL },
|
|
{ 0x1188cec8f25b73f7L,0xa28788cb3b3d06cdL,0xdea194eca083db5aL,
|
|
0xd93a4f7e22df4272L,0x8d84e4bf6a009c49L,0x893d8dd93e3e4a9eL } },
|
|
/* 61 << 238 */
|
|
{ { 0x4c124a904190257aL,0x09002f52347e517bL,0x2e9b69a1e5760993L,
|
|
0xbaa49e53e26672bcL,0x9468fc3bf7820190L,0x637bccfe1f955328L },
|
|
{ 0x16fd33f26e0aa088L,0x9391550757b2b2adL,0x85e98842e9a0ace2L,
|
|
0x8e2bd52b4fa787afL,0x8a86bd85644aeeacL,0x63490956c2814734L } },
|
|
/* 62 << 238 */
|
|
{ { 0x5e902fb3063b3517L,0x0cd006cae5a65212L,0x597bd7804591c4bcL,
|
|
0xd853d81be17c1d3dL,0xbc4bf68156e5d24fL,0xbc801615d26b5ce5L },
|
|
{ 0x1ffa5cd5caeecbe7L,0x16ec32a4b0203156L,0xaaad43269a857672L,
|
|
0x0606ebf9189c6f6dL,0xb90730bd57e476f2L,0xed8d82b1d492fb05L } },
|
|
/* 63 << 238 */
|
|
{ { 0x69a2a9b6ff824814L,0xe7b716e7c35c5da3L,0xb6781a5e9a5fde1aL,
|
|
0x08bf695dc072e1b5L,0xaadf71462590a817L,0x490297f9c755c83aL },
|
|
{ 0xbd9fad6191c29990L,0x87b3abc226b6cb9dL,0x6975d59865fd0b64L,
|
|
0x0fdc5267f4257158L,0x9f3e10585877bbdeL,0xb7f4cfb04297a2d1L } },
|
|
/* 64 << 238 */
|
|
{ { 0xd699ea2d8d095606L,0x3cd080c51e0ddd3aL,0x46604bad66a8b35bL,
|
|
0x0c779b624233fccbL,0x578458acbfd3cf0cL,0x6820f66596bf57afL },
|
|
{ 0xa9724245bf1f302cL,0xbbde24da277a6c3eL,0x0980a5b8c6be8c14L,
|
|
0x6230e3ec774d62c4L,0xda1467d84fbde24bL,0xd9d68d07cc862204L } },
|
|
/* 0 << 245 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 245 */
|
|
{ { 0x67c516347378f90dL,0xbc201a7966647082L,0x77fcc8dc9ee450cfL,
|
|
0x8dd2b318b41a3e2fL,0xdf6a935e93bf0689L,0x75edabf3a92e5464L },
|
|
{ 0x49afcd9f604d208aL,0x372f0ea7d465ca48L,0xcdbd8ad2c7ea7810L,
|
|
0xfe61571e550822b2L,0x744a4f9386606adcL,0x6beb3c9cd9d4e110L } },
|
|
/* 2 << 245 */
|
|
{ { 0x1fef389ce700b9f2L,0x63029466425bc8abL,0xbd770a1437f04a33L,
|
|
0xc7438e29d0169369L,0x6b265742e2377cc3L,0xdf24bf96c369fa4fL },
|
|
{ 0xdfdbcf470ad94e08L,0xd101b8617f75a7dcL,0x5574a0b82a9c483cL,
|
|
0x0563fe942de43228L,0x58ca0e8aead1fabeL,0xdc3d9a8466023966L } },
|
|
/* 3 << 245 */
|
|
{ { 0x383bda07c3fd20e5L,0x9619b1df5c29449bL,0x6f3c717d369f39bfL,
|
|
0x1bb593d11a5a3900L,0xd0f07ecc2aec6c2bL,0x9d72eb2a4240b202L },
|
|
{ 0x35342f6cc50e4a0cL,0x701b46626b93bf61L,0xfcd6eb09ccb6a888L,
|
|
0xabb7a6f785aa42c5L,0x952f8824aa4e5895L,0x49860db85c406582L } },
|
|
/* 4 << 245 */
|
|
{ { 0x3667a7203955812bL,0x0d73483b284d1dacL,0xe084535efc62f791L,
|
|
0x5bc1652b389faf7fL,0x40cf51683a71b7f6L,0x8a4b19fad4f39703L },
|
|
{ 0x823e754a2a8eff13L,0xf01b2021bffa5afcL,0x5639ee027225b319L,
|
|
0x7533bc86fc282f16L,0x710009d2c69f61aeL,0xe30c499dbf65e803L } },
|
|
/* 5 << 245 */
|
|
{ { 0x0da7ac1b734b4ec3L,0xf47fc1d012a2afbeL,0xbbbc99be87dce4a2L,
|
|
0xf7264b4edd5c6378L,0xe9409305f618ffdcL,0xafadda9bd1846ac1L },
|
|
{ 0xe734f9d0a21850d4L,0x199cb44f8722a316L,0xcfe8704b38cae89fL,
|
|
0x2db1e56b6b151b57L,0x116ca5cf69ce7b2cL,0xe9b8625f57de97c8L } },
|
|
/* 6 << 245 */
|
|
{ { 0x18811bd5af247c49L,0xbc180793e124dbdaL,0xed978d3a21234fc4L,
|
|
0x516dd9a70616ae15L,0x8f80677774e430b8L,0x9094256906e8fc49L },
|
|
{ 0x4ca03fb5a4e61235L,0xb91de709b617f361L,0x0898d82d0ed08bc3L,
|
|
0x2bd712368cb08146L,0x45b92d45e213176dL,0x05894791f2bf5b9cL } },
|
|
/* 7 << 245 */
|
|
{ { 0x0d79cb892695ea2bL,0x2cb0f8dfc88e538aL,0xc1b8dc3da80f36feL,
|
|
0xd756fa6684f00cc2L,0xa6f1cdec9cb9efb2L,0x5c3f15a8a6a21818L },
|
|
{ 0x9a7ee3516995d09fL,0x88885463d70434bfL,0x18cecc6d4f7d5d33L,
|
|
0x3f0138866b353bd1L,0x53bf798b0d9ad368L,0xeffd465a28dbc3eeL } },
|
|
/* 8 << 245 */
|
|
{ { 0xeb29e44cb5d98ac1L,0xe47e57f80e227a4fL,0xd09c04943d2bf688L,
|
|
0x3ab7799a47428dd2L,0xdc558d6be9aafac8L,0xc042c4cd87f9f6e0L },
|
|
{ 0x93842bcd89fb4693L,0x62dbc82f7068fbf7L,0x164552687e6d47b5L,
|
|
0xab304b7a4c37eeeeL,0xdbb3d4e13fc412ceL,0x4f65dad0a726a2c8L } },
|
|
/* 9 << 245 */
|
|
{ { 0xb25e01b2605cdaeeL,0x74abec55bc57969dL,0x9c57bfabcdd9d41aL,
|
|
0xa3330e3f4a9e32a3L,0x5929a0d8e5792fd8L,0x830b4ea271ea2cdeL },
|
|
{ 0x80065ac1fd06d246L,0xa2b416e632e64a25L,0x3950bde7c0c927a9L,
|
|
0x9951f3bd679d9b8cL,0xc235a274651b6855L,0xbfe5e08e5ad97bc1L } },
|
|
/* 10 << 245 */
|
|
{ { 0x4409a5b6744ae145L,0x5e83fa0b7f620908L,0xfc489bec2e140aa0L,
|
|
0x5805a462e3cae337L,0xe56e9ff7c2211c21L,0xb722f2b40c955362L },
|
|
{ 0xb098a32f41371f33L,0xe6cceceabb4923d6L,0x1cfbe2b3d82a311cL,
|
|
0xcf9428936b98f917L,0xd60dc62492ef848cL,0x34af446e5adb5228L } },
|
|
/* 11 << 245 */
|
|
{ { 0x0eb7e743796ce1caL,0x138653e5d851377cL,0x69c7c86f2b11c8e0L,
|
|
0x878ec1decdf2b205L,0x03e6688aae0e8562L,0x20810666935a36a8L },
|
|
{ 0xc8ab7c7f26635c50L,0xe75cdb06744a21dbL,0x4e26f32fd720e198L,
|
|
0xa1c6395ad8cded81L,0xb75dc6ea6ce4fc04L,0x71750b33004623b5L } },
|
|
/* 12 << 245 */
|
|
{ { 0xbdef84077e60c447L,0x88570f712a65accaL,0xef3d4a400bb6aa79L,
|
|
0x5c9d189060212976L,0x80179ea21d96c43cL,0x3f002e6d53d2948eL },
|
|
{ 0x14b2cc9149d78183L,0x7a549c71b496c279L,0xf4beac3f44995f6dL,
|
|
0x5a34239800bc78feL,0xa874dc1b60e42da0L,0x3a984010cf5824d5L } },
|
|
/* 13 << 245 */
|
|
{ { 0xe514ee06dfb9760cL,0xb8862d7577b8951fL,0x0144676ef8ee1141L,
|
|
0x49561a3002eb3e82L,0xb3541c154ff9f897L,0x1670edf0a7a99791L },
|
|
{ 0xd41d603564aea7f9L,0xf66ffd092b3463b4L,0x0784e015c3b26fb6L,
|
|
0x88edce33ec46f8c8L,0x1b1e25a3b6381011L,0xbfaadc03ff95ab97L } },
|
|
/* 14 << 245 */
|
|
{ { 0x727a59fe0c7be4e1L,0x75a7d5e3f58ced15L,0x146fc0d990f569e7L,
|
|
0x94dbccd2b7f1dc54L,0x0df1ef90b75bf232L,0x2943a082a2568190L },
|
|
{ 0x75f2f80d67837b06L,0x07e3506f24b44b6eL,0x7c30829ad0d2231bL,
|
|
0x9ce577ca93277abfL,0xa19d1868b17549ecL,0x0ad6ff5525e8c4d7L } },
|
|
/* 15 << 245 */
|
|
{ { 0x16b38dfe1c24d075L,0x3acd4c36992959f6L,0xdaf2fe88ac2da7abL,
|
|
0x76e8ff0e89644935L,0xb8547c26e85f7076L,0x9f149faa1cdea7ceL },
|
|
{ 0x181a60729e125d84L,0xc4aef9fa18751ce6L,0x451c84660e00f00aL,
|
|
0x662b3e7ac4e3e6b8L,0x57b7114ec6b64507L,0x07aeb1980b37fb70L } },
|
|
/* 16 << 245 */
|
|
{ { 0x79d88e004516234aL,0x98dd3cb931f9cedaL,0xb528000fce7d606eL,
|
|
0xc773557e2fa27fd3L,0x55b53dd3e19436afL,0x675084b3e10b64c7L },
|
|
{ 0xe583266556d56374L,0xf8f7fd2a307e2e60L,0x7b93bf537af3e3dcL,
|
|
0x94fafa2cf47d298cL,0x94c2ff9a21121369L,0xa41de95f33468ff6L } },
|
|
/* 17 << 245 */
|
|
{ { 0xebbafd4720f25aa7L,0xe2becad71ac444bfL,0x323356a092a944b8L,
|
|
0x32feccc0c9a3cec9L,0x15ec3aaf5f9e96c1L,0x852142b5c12c8e62L },
|
|
{ 0x098ffcbf2b6865f1L,0xcca470e8733d7741L,0x0f8c0f5271945bf5L,
|
|
0xfb654f6a08068827L,0x3a9e7d742a0e2829L,0xb90742b04b687763L } },
|
|
/* 18 << 245 */
|
|
{ { 0x145afb651fdb2a7bL,0x93315b684eff5eadL,0x0cad1d20e40ca999L,
|
|
0xda9b517a379a8173L,0xacb665780ca018cdL,0x1e9d919f481969b4L },
|
|
{ 0x5c9a058d68130364L,0x872e26620a62ce5dL,0xca598848acaabe54L,
|
|
0xdabfcee18aa048a0L,0x16198d034ac52a57L,0x72eb5ec632b6d102L } },
|
|
/* 19 << 245 */
|
|
{ { 0x13f2e1726a0c96e0L,0x55aed9e02d6b6f05L,0x3c919ba3bdce76c0L,
|
|
0x647a525ffdda39aaL,0x5c0dbecc01a9011fL,0xa537ba8d9fd9dcefL },
|
|
{ 0x8472e375cff62467L,0x57672311ed5adf05L,0xd1e178dc6a423de3L,
|
|
0x3ebcfe18d3ad3ca4L,0xb8f341d7ae802c11L,0x3f14c424ecdfdb7bL } },
|
|
/* 20 << 245 */
|
|
{ { 0x381e0a136e4d2e42L,0x2f2a4ee183c0d752L,0x50d4647fc8e6532eL,
|
|
0x7e210aeeb4e7495dL,0xfd147710bcd142a6L,0xddddb07b06429213L },
|
|
{ 0x63e06fc64548a6b8L,0x05d9b825904f92a6L,0x4b63fdbf9988ee79L,
|
|
0x6cfa412f9b3366bdL,0x0dd5fe3dc8c61f51L,0x3ec77027be8e047eL } },
|
|
/* 21 << 245 */
|
|
{ { 0xea7d01cfc7d81791L,0xfa6c0fe6e2264afdL,0x53c7eea363651291L,
|
|
0xe58f8411f2d90f92L,0x4919b4c61faf0e14L,0x0c7dcd07148e98a0L },
|
|
{ 0xf9ef44cebc8bd43dL,0x3acfb6686f83cfb4L,0x34130e18f883693cL,
|
|
0xda9ed2ae2d236c3eL,0xf54da64cc75cabdfL,0x1c3df906cc01722bL } },
|
|
/* 22 << 245 */
|
|
{ { 0x686796c68d8f2286L,0xe0efaf9334d7cd1aL,0x84f9237c93b23708L,
|
|
0xcb50cc8ee47f5161L,0x498b81e71f597821L,0x3c3f33e1a491079fL },
|
|
{ 0xee300c6dc69d1bc8L,0x279760e734778389L,0xe00ac0eb2bb8ed78L,
|
|
0x9bf9a10e765c8b5dL,0xc7e95c0cf8c1e909L,0x3721300ae6e63ea5L } },
|
|
/* 23 << 245 */
|
|
{ { 0xc03ad784d8dfd7aaL,0x671384a64b065a2eL,0x9b21e9e7bed74e87L,
|
|
0x153b606cf889f75bL,0x7345c62a2aab6562L,0x270e4f445960cb4cL },
|
|
{ 0x515909fb885f0f88L,0xe43ee4f7067a7928L,0x5f906fc8fc182e56L,
|
|
0x297ad5770641d0d1L,0xdcc45aa1d1b188b4L,0x8c817fb2ef062a39L } },
|
|
/* 24 << 245 */
|
|
{ { 0x91e8c992044637f0L,0x01f7838827ee8e8fL,0x7c5e3f6dd095f5b9L,
|
|
0xed7522fcddf3cad2L,0x80bb87056c57aacfL,0x495480b00cc5ff51L },
|
|
{ 0x964def7f04da2565L,0x8b0d0fe3afa72140L,0xcc75192584de66a1L,
|
|
0x9acaf7fe075f07c5L,0x6505c2f81eeade93L,0xa2f35aa00e3cf58fL } },
|
|
/* 25 << 245 */
|
|
{ { 0x1ad38a2d80548b22L,0x4d6120df47a37b3aL,0x6d64ef8c23e33cb7L,
|
|
0xa1b5f51723c14ca6L,0xd2cdd425039a8e83L,0xa0a359ae229dd2dbL },
|
|
{ 0xde0788166c2779afL,0xd960453362d2abc2L,0xc5c48b20707c0e4dL,
|
|
0xe452debd691c5407L,0x35c37ca882b0a299L,0x5b263014da3cde7bL } },
|
|
/* 26 << 245 */
|
|
{ { 0xde34fa4586330487L,0x8391248153f61e6bL,0xd3f8fe742d04958dL,
|
|
0xdade250f6df77d09L,0x3a3a16175649d9ebL,0xf9b77847a23abc74L },
|
|
{ 0x31d45db63b2e2c8aL,0x311ecc24f61a7bf4L,0x206029f9c56eab17L,
|
|
0xb9d9ff35878c672eL,0x0d268c160fbf2d91L,0x2474b527a45f58d0L } },
|
|
/* 27 << 245 */
|
|
{ { 0xad8e84be8436beaaL,0x8f07eee4209eb5d3L,0x47cba1d83ee61bddL,
|
|
0xa081f21f72018544L,0x5dffddf493d88d16L,0x539a79efcac3952aL },
|
|
{ 0x990af57791bc452eL,0xb139d7d5012f5c6aL,0xf818c9f3fb180417L,
|
|
0xeeb2d08475566152L,0x287571253f5d4ec9L,0x5a26505daa959798L } },
|
|
/* 28 << 245 */
|
|
{ { 0x6536834e11b0f7b6L,0xcaa5271aad46c10cL,0xb5b6ead1fab43763L,
|
|
0x25bf402ff7f7d8fdL,0xf33fb223e19374b4L,0x183ae9b75f348172L },
|
|
{ 0x1783c235078862a0L,0x9981a6c33cd368fcL,0xf58d2274fd627f9fL,
|
|
0x37ac9c265c5e71cfL,0x167c8d047b0f157eL,0x24f522f8eefc7d85L } },
|
|
/* 29 << 245 */
|
|
{ { 0xd25aeab3926cc973L,0xb3e2cffbdfc2cfbeL,0xdd259ed1de742b6cL,
|
|
0x9d77c94e7b98bf81L,0x90f9067cb0ead3d1L,0x148f2a192a93fec1L },
|
|
{ 0xbae3c543c2850153L,0x0d330d758910422eL,0x06f80a9efa670474L,
|
|
0xac6cee9f038431a3L,0x4900d17f5c22ee99L,0x62de04aa275a9774L } },
|
|
/* 30 << 245 */
|
|
{ { 0xb6eefcc55f87fb35L,0x9766873b4371415aL,0x308337bd16b058bbL,
|
|
0x6d5b1ddae1ac3884L,0x9307aa0835c4630aL,0x22cfcc0c23e91988L },
|
|
{ 0xbeb3814c37db0207L,0x19ab212fc4bbaf5bL,0x0801a1cf21abf22dL,
|
|
0x9e6862cb3bd07332L,0xaa12ba0e4319929aL,0x0da45831f540f97dL } },
|
|
/* 31 << 245 */
|
|
{ { 0x67d8ac9484bbf927L,0x7dd04e4e4ea01d33L,0x24ea6386f13def66L,
|
|
0xa8a1acbe28f7f5f0L,0x5f578ffecc84c93bL,0xda8fe295f4ad116aL },
|
|
{ 0x4b610ae48483347dL,0xcac5c5596255f9e4L,0x19a0e043abcfe47bL,
|
|
0xcd0cc9493966784eL,0xcc59a36743279291L,0xaa504087802961b6L } },
|
|
/* 32 << 245 */
|
|
{ { 0xbe45d81a1b270599L,0x50696e7d97d6c603L,0x63c5a516b078ea89L,
|
|
0x9f3efe41b4464764L,0x84580e24101e5232L,0x00850a1ac8ae8220L },
|
|
{ 0xbff4077ded55c404L,0xd74de734f2e7bf50L,0x4df4eef207e1c03dL,
|
|
0x4ab3d0396e654d58L,0xb20056cd086f1596L,0xe4d08a278acd7cd5L } },
|
|
/* 33 << 245 */
|
|
{ { 0x5510cebfe354510aL,0x48925b9349998c9bL,0xa05fc961e6d707a0L,
|
|
0x85bf38f866ebc93bL,0xea637045254e615dL,0xae25e2e740d8459aL },
|
|
{ 0xa98583176efafd1dL,0x863931fd5a51c4b6L,0x3810d732d4221708L,
|
|
0x959a2f70762a30f3L,0x7bdbaff9420ad3acL,0xba41b20bebdfe90eL } },
|
|
/* 34 << 245 */
|
|
{ { 0x5e4d3280d3171eb9L,0x3fb715851bc65c5bL,0x6558962a901a899cL,
|
|
0x78b7cd3e7851462bL,0x21228419ca8f6495L,0xfd8d8f9b2d8be765L },
|
|
{ 0xe5e90b92bc562144L,0x4f1f7ca1ae3243edL,0xd20178cd0985f4e4L,
|
|
0xe5be263304253cbdL,0x1e34141c0d348fadL,0x0073fa0dad0eef45L } },
|
|
/* 35 << 245 */
|
|
{ { 0x922ddb84d403f20fL,0xf7bccbb54681def7L,0x81a1200f6b580442L,
|
|
0x64901025dc2f9884L,0x3746675aabe78edaL,0x3e750369aa6f005aL },
|
|
{ 0x140477ceeb00658fL,0xc76a320ccf89be62L,0x00761f21658c127fL,
|
|
0x669186dfb8b6b03cL,0xbcdf1c36dcb26a2aL,0x94a7aba5da876a56L } },
|
|
/* 36 << 245 */
|
|
{ { 0x1872f65c26163265L,0x9fbaf44fda52ad9cL,0xbec7addeeda47d38L,
|
|
0x6a04dc3078094f9cL,0x2c73b8f15f4498e1L,0x504909efd4fcfcb4L },
|
|
{ 0x747efbc6b6b3a63bL,0x856e276de0dadd96L,0xa22459aaae3be3a4L,
|
|
0x9ef59e732294a854L,0x0717d4e5d0e36205L,0x5a6afa3eb734cdf4L } },
|
|
/* 37 << 245 */
|
|
{ { 0x6bd8fd330e938950L,0x8b26d7fa0f20c4f3L,0xd29a1121e0604d4eL,
|
|
0x23d1cae60711c191L,0x460af39d51914cb2L,0x9cd04208547463c1L },
|
|
{ 0xeb80d70e493b7a0bL,0x182568869171652bL,0x9f3007ad76ca8b21L,
|
|
0xf9bdeb4664ac10c4L,0xdaddd584284ae80cL,0x5c7ea28a0022abfbL } },
|
|
/* 38 << 245 */
|
|
{ { 0xaef75aa7dc3c897eL,0x98bab5852e6432a8L,0x522b383d83fb0ee5L,
|
|
0xe0d8620f056a8589L,0xd63525dd39352633L,0x74362bbfaeb985dbL },
|
|
{ 0x11419f4e8c0f17feL,0x3ca918b0494ba972L,0x39f2bc3c6e074e25L,
|
|
0x3bb66618fbbf0d60L,0xee60c8f88579fecbL,0x916f3fe92a9b905fL } },
|
|
/* 39 << 245 */
|
|
{ { 0x14ed31b6482b668dL,0x8e3e10db5b65978bL,0x72ff92eee8011bafL,
|
|
0x5183d0bde1143531L,0xdb628188f9c740d1L,0xd23cb9c57570e3d2L },
|
|
{ 0x9e893cacd2745832L,0x49762940ef4a2b31L,0x02f6f892324361bfL,
|
|
0x332e089dd7a881bfL,0xe9303153f788f52dL,0xcd6d15564e7f1bd7L } },
|
|
/* 40 << 245 */
|
|
{ { 0x8caa623d408b62b7L,0xa58aa0b0c0272b41L,0x089af856ee285bfdL,
|
|
0x77b461f6d0674ecdL,0xbaa9d9b38d6f6612L,0xa8f26e12590669f8L },
|
|
{ 0xb164340c5ebb5e28L,0xfdc11f7401ea89a8L,0x73c03b9176e4346eL,
|
|
0x6a678eb17caad5fcL,0x103ff0790a87803dL,0x25d6fd2af7430a94L } },
|
|
/* 41 << 245 */
|
|
{ { 0x72cc0aba66116d84L,0x642c88681039c0fcL,0xaeded9e6d96a7423L,
|
|
0x4ff4163ccc5fea03L,0x180e4d3616483ec5L,0xefde910a7f6332c1L },
|
|
{ 0x8042696283367060L,0x4edce3e8c28af356L,0x2452e4de965139daL,
|
|
0x15129fd9547477a1L,0x7f628b5ed80998cdL,0x7c56d44541054b54L } },
|
|
/* 42 << 245 */
|
|
{ { 0x4c3f81184d3d9da9L,0x332072f9e1e71487L,0x8cbf7284759ef371L,
|
|
0x3d13d85cb98ce007L,0x507b467f980f4fd5L,0x9853b98bc74fdfdaL },
|
|
{ 0x94b81534993f5e19L,0x316b761beeca71adL,0x09820a2331c04080L,
|
|
0xc71a9bd4420e3114L,0x569f813822ea67ddL,0xe3ec5d2b3a41b079L } },
|
|
/* 43 << 245 */
|
|
{ { 0x6085b24a19bb6f27L,0xc2f18e8f64dcb82dL,0x8ff89ed91fd3888dL,
|
|
0x9fbe31db0e525a5bL,0xd52dfb5df0527573L,0x90288a3f703193c3L },
|
|
{ 0x87bb5d30bb1ce380L,0xb6c9a4c9f0dcf59aL,0xcbc52966aeb86e7aL,
|
|
0xd151178a9a1636eeL,0x48342994e4b48c74L,0xe5bced925af80bc2L } },
|
|
/* 44 << 245 */
|
|
{ { 0x106882534918179cL,0xdeb69dde08143b36L,0xfb3c527b992363faL,
|
|
0x11d05e93e9393832L,0xe3249558383a0f59L,0x2d0f3e11c234ab5dL },
|
|
{ 0xd50a30d95c599ae7L,0x6d7abc6ce9f98316L,0x3d190629060ab6ddL,
|
|
0xfd58473c81d69afcL,0x841193d24b782d62L,0x4f72696da771226bL } },
|
|
/* 45 << 245 */
|
|
{ { 0x288895d056e467a5L,0x78166a95e025a5b3L,0x89df640e895835dfL,
|
|
0xdc2b61f483dcbc50L,0xbeaa7363110dd6a0L,0x2346a2a5e7fdbe3fL },
|
|
{ 0x379ae5fb6947a9c4L,0x9dcf01956370a372L,0x34c3c6c3d70d9a24L,
|
|
0x98ee14b7fe6a3d0aL,0xdd37708bba8ce5baL,0x785adb86a15c3672L } },
|
|
/* 46 << 245 */
|
|
{ { 0x4c93de89c5ff194aL,0x56aef366fdc94109L,0xc8cb2a0c5b0b23d4L,
|
|
0xd73f1cef587ada16L,0x7138315a364b1463L,0x43940ef59f6bd411L },
|
|
{ 0xad068e490f4a533fL,0xe8a772a33c7dac91L,0x74b815fc107998b8L,
|
|
0x4b8fa9db92699ee7L,0xfb2de4bf4cbb023dL,0xe5833a390f67c29cL } },
|
|
/* 47 << 245 */
|
|
{ { 0xe985acae7fc4fa91L,0x7730e38ec66c4282L,0x4b971449f4bda67dL,
|
|
0x55261be02b001f47L,0xccde0c7126d0d8e6L,0xa7ac56fd701f6febL },
|
|
{ 0x2488b28552642a53L,0xeada397c58fcfabbL,0xa3fc0452b679b0e3L,
|
|
0xd0ef09ffec2e921aL,0x9fcfd991575fb70aL,0xf4adcbbb366cb10dL } },
|
|
/* 48 << 245 */
|
|
{ { 0x517075af5faa0cb7L,0x400a22c1efaf68f4L,0x320ce9493b86f639L,
|
|
0x511565717f296bf4L,0x0919607a96108276L,0x4fcc39a02f035900L },
|
|
{ 0x5d13de7cefb73f3fL,0x19d725c5081c38e3L,0xf1b28089c0f58697L,
|
|
0x2adcd1a30ca7ca20L,0x96c07f42c21e1be5L,0x94d28cacbaa0aba0L } },
|
|
/* 49 << 245 */
|
|
{ { 0x0ff4983fd64cfa4bL,0x2c49c4918c55942cL,0x6093eb7f98eb20baL,
|
|
0x1b33296a060497baL,0x32776a53c92d7b47L,0xf367e6b25241de3dL },
|
|
{ 0x711119813b65228eL,0x2e5dc541e1394451L,0x940a4a0f98ef33e5L,
|
|
0x1a395be32cd4315dL,0x4d49469f3c2e20e1L,0x5384f4b95c314f95L } },
|
|
/* 50 << 245 */
|
|
{ { 0xdda2f3a0a256813fL,0x4363d190ee6cbae0L,0x61f4d607930d0094L,
|
|
0x6767ff4817021739L,0x8450091bd2c5fadbL,0x144d02fe870710a8L },
|
|
{ 0x73f45d9035524b7bL,0xccc7856b04615373L,0x0eb5cd436f081dfcL,
|
|
0x9c433cbfe3a70d59L,0x9ee70f509818349aL,0x16de27347241c634L } },
|
|
/* 51 << 245 */
|
|
{ { 0x02a24c5cc47f7db6L,0x519242cd33d60e1cL,0x543f39cf7244a636L,
|
|
0x4ae15d698deb181eL,0xbaec81ef44261806L,0xe5cb18bb5fbf13abL },
|
|
{ 0x7534787a032158e7L,0x770e1e34da0d9a6aL,0x251bfa7158f9baccL,
|
|
0x12663214c8d39905L,0xb7bfa81b39c3d64aL,0xd6d439ffe3ee296cL } },
|
|
/* 52 << 245 */
|
|
{ { 0x192ecf72d0aa048fL,0x23af774063e40c0fL,0xe4d98e41d804d367L,
|
|
0xd868cc885405bfc3L,0x96909a5b6f6ece88L,0x16b05ad2bae60dabL },
|
|
{ 0x7382a1dbde621949L,0x569bb6c9c47cf6dcL,0x892da43e1f2d098bL,
|
|
0x6bd959b9bfa25649L,0x90617c419cb48f9eL,0x36059b73f110b22dL } },
|
|
/* 53 << 245 */
|
|
{ { 0x1817b140791af82aL,0xf4a44cde042870c5L,0x60b8414ab5c0405aL,
|
|
0x3b00f5ddf4dc4a9cL,0xa61aa0cfea81dd5bL,0xd43c37422554907dL },
|
|
{ 0x3fa264a620569ecdL,0x2cc69c2ba5a46190L,0xecd4f6d3dddd072eL,
|
|
0x41083b72dda8de01L,0x4bc047f110d6f156L,0x7164b432cac3203aL } },
|
|
/* 54 << 245 */
|
|
{ { 0x7e7e08f401d45bfeL,0x04f9c9ed0e2d17e2L,0x3213556fa55bc148L,
|
|
0xc58983c734449f0eL,0x463217afaf2bb219L,0xe08a51a2f8fba72dL },
|
|
{ 0x2f44991e974d51f0L,0x15f2171f3f12af56L,0xbcc919de24cf01f3L,
|
|
0x9ea371f269399bd0L,0xae8a8eca3ccf4574L,0xf0535b83ae499429L } },
|
|
/* 55 << 245 */
|
|
{ { 0xe9ad8928f72305e3L,0x4144b6b9fce1295cL,0x672732a0c3487eb9L,
|
|
0xf19d09a6147f70b8L,0xf45f6a11362a7684L,0x84ce4f25adfbbdadL },
|
|
{ 0x31e4bb0ac3403b48L,0xefc861b9b478ab38L,0x3323df44a8320c49L,
|
|
0xa2838aa1ed4f14abL,0xc80e30cc63bf7df7L,0xdd2d5ef9f15ec5ffL } },
|
|
/* 56 << 245 */
|
|
{ { 0x3027c1698d6f8572L,0x89326850111e64d7L,0xe6eb6cd31b8b0179L,
|
|
0x0d2d27ea6dd5a4a7L,0x41682c0007c82f11L,0x5a01c54c81075022L },
|
|
{ 0xf3903f51fe7220d0L,0x75daeaba1f8e66b2L,0x1b625eed470bd3b2L,
|
|
0xa46398a7e85a6293L,0x8ff6ef8c805ad640L,0xb3430f6795bfa3a5L } },
|
|
/* 57 << 245 */
|
|
{ { 0x55d31765bc9341b7L,0x6530526ba312d125L,0x57ad29c02e9eb238L,
|
|
0x31658a8282292155L,0x4d3417b169301639L,0xb38d6199e48c3d1bL },
|
|
{ 0x4399d5ddcc5202eeL,0x4b1c293a5076cc08L,0xa46e87f5824171b0L,
|
|
0x16f75919e4cb40e9L,0xd086562dac35d85bL,0xc2b41ad532713f5dL } },
|
|
/* 58 << 245 */
|
|
{ { 0x2da6d2ca3248f02aL,0xae49d2fc675de73dL,0x4abb1a65cfbfee63L,
|
|
0xc6cea22cf1246350L,0xdd510cf82d3faec5L,0x8b7d1b0865e7460bL },
|
|
{ 0xc5b39c802737b182L,0xeee61e0d8963c709L,0x9cf9da61793e7179L,
|
|
0x630637e52a295ba6L,0x18b85c9fa3881ba2L,0xca091a9464a94fe2L } },
|
|
/* 59 << 245 */
|
|
{ { 0xcb68739f0bdec121L,0xf4907b3cd3811dabL,0xcf1b079b8c5d7707L,
|
|
0x9ef9002d2fc6a56bL,0xc4c9d069809e8b64L,0xaf86a3db90d0eef4L },
|
|
{ 0x30a52f994b24a04aL,0x03bcd7a958574ed0L,0x330ce8a1a5b52b8bL,
|
|
0x632b3c2d5e6a8ed9L,0x7b080a2c18369382L,0x12173e5f65187ce1L } },
|
|
/* 60 << 245 */
|
|
{ { 0x027f654feabe8ef1L,0xd9d327e481a51834L,0x9215df61980faa43L,
|
|
0x76b4f8003ba045c1L,0x8f3ce587f400732cL,0x0abe1f34f133a3caL },
|
|
{ 0x2ec690526de4f504L,0xa297cee4cb7ff026L,0xa31a76e3cadaefe1L,
|
|
0xb701391e1173a958L,0x0a4279b08c8768f1L,0xd58927c12f8ede03L } },
|
|
/* 61 << 245 */
|
|
{ { 0x71ea38454e630b0aL,0x4f696b59119263abL,0x9e7cb293f9cbab69L,
|
|
0xa448d591c60ea8d2L,0x5021d4ef7d89eb52L,0x1a1ea5e3787663b1L },
|
|
{ 0xa95af4eb05bedc8eL,0xfe72effcc2fba411L,0xa88b79bb19a2c6bdL,
|
|
0xbed948fac84c78eeL,0x022dcf3d5ee7455eL,0x0c39c3689f56accbL } },
|
|
/* 62 << 245 */
|
|
{ { 0xe0e818a8b77c9de2L,0x0dbaea885e07f77fL,0x6ece83b97b1f96f0L,
|
|
0x3c02e59631733a5dL,0x44bcdfcdd14828ffL,0x2791ca54b66f6107L },
|
|
{ 0x1a051c5a6198f24dL,0x9cd5f09a17627301L,0x64323392004a0cb1L,
|
|
0x75d6819b3cc13e05L,0xf5cab2874a58768cL,0xbe090e83e3ca9332L } },
|
|
/* 63 << 245 */
|
|
{ { 0xd639e0f3ab9b278dL,0x57f3f8cafa2407b4L,0x6720549f6c11f6abL,
|
|
0x6ad1c608e784308bL,0x62c31e4a196babbbL,0x764b4deed1d36447L },
|
|
{ 0xf44efcefaf4407bcL,0x7c1f45dbb3ca82a3L,0xf43e4a8773b952b3L,
|
|
0x145cd2d6ff478bbeL,0x11ef2df450c8e708L,0xa2af06f044491734L } },
|
|
/* 64 << 245 */
|
|
{ { 0x8cd6c9f7c90b13f5L,0xec0c187d52a9d469L,0x9c0db0f589b8ad2bL,
|
|
0x692a8db70d9c999dL,0xa407fd03c9f84ab4L,0xa5742fd1cc9a906cL },
|
|
{ 0x4813a765c8e72867L,0x9c65943de2e9a10fL,0xca6bf2934fa0a23eL,
|
|
0x1dfa3af7cb1f8d7aL,0x28036f5498d10c53L,0x7bfbcaf20e012c13L } },
|
|
/* 0 << 252 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 252 */
|
|
{ { 0xa53f1a104ec177f6L,0x4a2ef9aa3faa5ca8L,0x30efed8532976d13L,
|
|
0xcf5ada165ee692d1L,0x3ceda69d259e7cc1L,0x2aae29e99baab472L },
|
|
{ 0x7ee5baef737cc8bcL,0x1717af747fe68dedL,0x9e5c8ddacfdaff63L,
|
|
0x575c8db9cec07693L,0x9afc8ae0fdfb509dL,0x27836d3685651697L } },
|
|
/* 2 << 252 */
|
|
{ { 0xa7342f9517eb9264L,0x9264a6a00a8a6eefL,0x50e48bf07471c384L,
|
|
0x729e5ab130827f34L,0x17199191ea779c23L,0xd13ab8539fa9fd58L },
|
|
{ 0x7d5799373b1d773eL,0x65f8e7c6d196c3dfL,0x253f7d51e8541725L,
|
|
0x107a793dec720355L,0x1c14d0566aa16268L,0x9dc5fca38bbb231bL } },
|
|
/* 3 << 252 */
|
|
{ { 0xf5689c5e12b09f53L,0xc1da32e19e87ff7dL,0x1af879d012eaa533L,
|
|
0xdba775e6d9271e94L,0x60f8507310e63c34L,0x445f3e21a686a24bL },
|
|
{ 0xed5ca8fa15bc277eL,0x9839198a364ab7abL,0xe2ee39426d90a7d4L,
|
|
0xe5b3e4cbccd37e76L,0x9013bd08f1412e0fL,0x82f5c532ce999048L } },
|
|
/* 4 << 252 */
|
|
{ { 0x61d0e01bf3fe3441L,0x674e52332af47609L,0xd4a4e224b362902dL,
|
|
0x45923c129e0a5d16L,0x4fc2bdd495e580e9L,0x6d1d974ca8c3d954L },
|
|
{ 0xaeff1135d0bbeaaaL,0x013ab5b31baafc9eL,0x80907d3eab8f9f31L,
|
|
0xaf2c12166d566c15L,0x0082daba952e6fa7L,0xa46710032df9e03aL } },
|
|
/* 5 << 252 */
|
|
{ { 0x91b379c63223d561L,0x8cb7b8cce203417cL,0xd0f44208176b3b81L,
|
|
0xd18c2118aaba5cd3L,0x4aed5c9770794f9fL,0xfc540dc4f4c33894L },
|
|
{ 0xb8e6798a0153a8a8L,0x6537dcdf43c4b0c0L,0x1b7eef39ab557397L,
|
|
0x175e3934b7103105L,0x943abf4a82ac89e4L,0xeb1a61f957ffcdb8L } },
|
|
/* 6 << 252 */
|
|
{ { 0x99c2b4cd66476227L,0x576a4b0662850cd3L,0x067bb66b5a352b7aL,
|
|
0x3c7d6fc43ec757edL,0x2f69291cb9d36adcL,0xc7c0f3257c9143a4L },
|
|
{ 0x768c3c400627fee2L,0xc214d81da8fde577L,0xd86e4b025299ea1aL,
|
|
0xbe46b7e91a2d4005L,0xaf865a169317fa60L,0xfbc3268fcdce2fbeL } },
|
|
/* 7 << 252 */
|
|
{ { 0x66fcba52d8fbe900L,0x9f16434c861b3e33L,0xa371b97241b4305fL,
|
|
0xb2d858ce25b6af89L,0xbab07d53275f9e8cL,0x3b5951f8d525bef8L },
|
|
{ 0xebf79e3ca1755b0aL,0x4e6256e7b467b1c2L,0x7dbd8b66cba1a659L,
|
|
0x88ea40138b1eb8b6L,0x210ac1b38fa6436aL,0xe93e22c23df40e33L } },
|
|
/* 8 << 252 */
|
|
{ { 0x5f79f0df1fd64063L,0xd2d39dd381e118ecL,0xd631a68e11571c5bL,
|
|
0x6d072b4e2474faf7L,0x5e043a6d862a924aL,0xcae58bd8b0fc8d7aL },
|
|
{ 0xf54bb7f3b1351f28L,0x4588b6280413275eL,0x81459f4c5909ec04L,
|
|
0xd28cda25abd16460L,0xbb676d018db1c69eL,0xc0056e2dac5036f4L } },
|
|
/* 9 << 252 */
|
|
{ { 0x1ce187bf323169baL,0x1dfaef8661ab5073L,0x1893dc7b2ae468b5L,
|
|
0x0748ec86123848d4L,0x0d2877b46a96eb12L,0xb6063e75e9322495L },
|
|
{ 0x1cb17189d7d1828fL,0xde41f11944d1b318L,0x7ce0f87610f0b74dL,
|
|
0x2c7c91ee7a98f86bL,0xb641418e750f3ea1L,0xae2cd2e280094054L } },
|
|
/* 10 << 252 */
|
|
{ { 0x9f6c6ed598d8e086L,0xa9ad63ca2d3fad85L,0x055b8323fe016926L,
|
|
0x039fbe287b3a8d68L,0x544a8bf5fb6b315aL,0x04b122fb647fed85L },
|
|
{ 0x1e9807fa98085b1aL,0xb78a36a771c12696L,0x4ccc1a2cdc22f95bL,
|
|
0x6ff4997d54d1e818L,0xecb5bdc2f08c22dcL,0x6e07e2c146a27762L } },
|
|
/* 11 << 252 */
|
|
{ { 0x602077aceaaec565L,0x9dacf68224568aeeL,0xa490fc1e9cfcce26L,
|
|
0xb2ac94b3303218baL,0xc0208604ab33f9aeL,0x801663b6e39a6668L },
|
|
{ 0x1defbb42961b0927L,0x688b445e83e318b3L,0x34fe2830c11648e8L,
|
|
0xed56e99360066dfaL,0xa5f30f9a07671eccL,0x02c40260a3222e8dL } },
|
|
/* 12 << 252 */
|
|
{ { 0xfb2a11b4ea347db9L,0x2360667e03350681L,0x1aa6e720a02a1261L,
|
|
0xac2bd2eba110bb21L,0x8ab2f9063c9b4568L,0x5f46263d5ace1f17L },
|
|
{ 0x97067801eae704c8L,0x35d2637ea715d313L,0x24cdc3d0c77573daL,
|
|
0x6f97cd07e2562b2aL,0x27bcd62d5afb29e4L,0xc38ac1c55d29f5d3L } },
|
|
/* 13 << 252 */
|
|
{ { 0xd9c38ba47c88f46aL,0xdd07c4d79946ebe4L,0x908731dcce0e5417L,
|
|
0x43088d11e145839bL,0x9d37419d07b61543L,0x440cdbcd2c3c7c4cL },
|
|
{ 0xa6a6fed673216db4L,0x15ce171a198cd32bL,0x198c256974e6a085L,
|
|
0x5fec853f3dc2a714L,0x329250bdd5923068L,0x1d82373c9f6195caL } },
|
|
/* 14 << 252 */
|
|
{ { 0xa8e17be53777b2aeL,0x534e3a3bcc284224L,0x7f34ce458192cfa1L,
|
|
0x0009a72966d0e03aL,0xc42053ba524ce1fcL,0x834e98fe6d092e58L },
|
|
{ 0x400c65a1c8b0f751L,0x268bfe6f107965ebL,0x0f141c0332e0bc69L,
|
|
0x33bc6e64597a2264L,0x039a4ae9454a0d6bL,0x2cb0bf550b07ddaaL } },
|
|
/* 15 << 252 */
|
|
{ { 0x69056cbe63769bb3L,0x710a67d385044d35L,0x971ccbdeea855332L,
|
|
0xd655163a0fd0d210L,0x619c3f9adbb8a8b9L,0xd156f73d49a014e2L },
|
|
{ 0xd04ea0a5a129a598L,0xc9c04da6fa2f12eaL,0xc0ed654ae98b3187L,
|
|
0xa254eef6a82f9ec4L,0xe537695fa386a72fL,0x170f1ed4a74eb453L } },
|
|
/* 16 << 252 */
|
|
{ { 0xdbe04c3044ce3ad8L,0x995fbb1b4ce8aad5L,0xdbf8b54670911457L,
|
|
0x9e683b5b3f7a1757L,0x7b89a08a9c7bd62cL,0x448865a40b3fc97eL },
|
|
{ 0x0ac9abfc3bb01e94L,0xa07760421e756124L,0x0aa6c335d9deed97L,
|
|
0xe270580f72603e08L,0x70857a946c783bb2L,0xa0047774caa929aeL } },
|
|
/* 17 << 252 */
|
|
{ { 0xf99a63c5e8c4a440L,0xc7fd1d1419d65168L,0xfb6c21d696d5e80bL,
|
|
0xa4a7304944b833beL,0x093728d5127b1599L,0x9046cbe2c89e7195L },
|
|
{ 0x21e2863c146a80d3L,0xb1ac7e1bdd559c13L,0xbe5ba65c72c39063L,
|
|
0x7da5feb87722cbc7L,0x122615d0f17c02c5L,0xd44f477179e5fcb6L } },
|
|
/* 18 << 252 */
|
|
{ { 0x0d913830e2d28da9L,0x0465920a8a164385L,0x79959ce1b0ad65d5L,
|
|
0x6c94690759a966d6L,0x4ccb0e5e832c24feL,0xa8c5bee5d6af2a10L },
|
|
{ 0x264dcc118c5791fdL,0x719f23ac5b58ce85L,0xfbff8a2f8e54b029L,
|
|
0x0c9240be864e959cL,0x8f7c21733c37c665L,0xfda848d9f164d354L } },
|
|
/* 19 << 252 */
|
|
{ { 0x203ea731f35d11f6L,0x90610383f9f9001bL,0xb9d3c302ed97e6f2L,
|
|
0x4c529736c9a67e6cL,0x2e440b1781f6597dL,0xcc798f5616aabf20L },
|
|
{ 0x490f50642832ffc5L,0x585e462a7a19b125L,0x99d73e391b06d98bL,
|
|
0xb817e97aab696d7bL,0x9df2f65ac28dffeaL,0xa48dad47045fddd7L } },
|
|
/* 20 << 252 */
|
|
{ { 0x2878c20d62e5fc09L,0x419ed2ece7f012abL,0x3bbc853fbaa21e7eL,
|
|
0x412bc3c54844c009L,0xc4b150508b012199L,0x9d160f4c310d5fbfL },
|
|
{ 0xcb61b69214f60becL,0x436348c064092943L,0xce8c136e3185cde0L,
|
|
0x97b034f68be5dd85L,0x7697adf92701631aL,0x2ddd86361fa6e8a0L } },
|
|
/* 21 << 252 */
|
|
{ { 0xde8c2c963e9ff7faL,0xfdf1e25d8b75bbeaL,0x28ba3be59c146264L,
|
|
0xfc1df52e81fcb0c9L,0xf9341c43af3ba66aL,0xe81c22470d72188eL },
|
|
{ 0x2ff00f1069c62b9dL,0x1077962e71498d24L,0xdf35b17ecc34ece7L,
|
|
0x3516c33687eab2daL,0xe71cf7ddc72b7911L,0x6c9233d92c286c56L } },
|
|
/* 22 << 252 */
|
|
{ { 0x7ce6389d162754d7L,0x8f03eff514e0d8e5L,0x9fd2c896ef402e31L,
|
|
0x4a4bf70a2195b0e6L,0xe6043a383c8d82dcL,0xd86b647e8bed7c65L },
|
|
{ 0x21bc56f4a4c87660L,0x8c99d6270c05564cL,0xd6b82e9014050ee2L,
|
|
0x09bf6a3eb6b11f0bL,0x9704b36731dcd6b1L,0x871c85c85e3d44caL } },
|
|
/* 23 << 252 */
|
|
{ { 0x93024430e5236badL,0x4c5872728b883d1aL,0xc265b94bba68d3bbL,
|
|
0x7d8fc82a648d9b7eL,0x57086e6e75ac264cL,0x4b8a157102fc9ec8L },
|
|
{ 0x83ae238e86849a9bL,0x2eaad9b8a69acccfL,0x2d82c029d44eaa39L,
|
|
0x8f5b9ed833d7a556L,0x05c83328eea8b609L,0x537069efc3c96005L } },
|
|
/* 24 << 252 */
|
|
{ { 0x292f8874b25c4d4aL,0x54961fd87e79f526L,0x949a1fae008c6ec9L,
|
|
0x6ae82f0d525524fdL,0xd1f6f4ef2edbcb1aL,0x41617a6d977ddffbL },
|
|
{ 0x6ae38fb71baf0668L,0xa79ea228d538ab3cL,0x70babb05fc44e273L,
|
|
0x247384fbbca85910L,0xdc0e069b6a564959L,0x37a9c5521a7438adL } },
|
|
/* 25 << 252 */
|
|
{ { 0xaf2c87828a4b7251L,0xcb5ebfd3c1bc7f72L,0x160b77e560579615L,
|
|
0x297412e3c10f067cL,0x5ad0681ef7df86c8L,0x2e8c63529b3e3afbL },
|
|
{ 0x32372cc74cfd3266L,0xb7abc8baa820f8b5L,0x857d545519f34baeL,
|
|
0x5c055ce920ed65beL,0x1d8a59ca537ad6b7L,0x1135adcf7ad88633L } },
|
|
/* 26 << 252 */
|
|
{ { 0x47e6ed9530034df1L,0x1839f488321bed8dL,0xb6b67d452ac8a9f9L,
|
|
0x2fe1efc6182e4a63L,0x2da34bde0c1185c7L,0x6e5d1621edfdf9aeL },
|
|
{ 0x3bae9db77120804cL,0xf094b0676d986ef3L,0x029c9246853e24ceL,
|
|
0x3abacb1b25a82463L,0x58777e1389c5616aL,0xaedd003b5aeed714L } },
|
|
/* 27 << 252 */
|
|
{ { 0x7494e4319da5fb0dL,0xc684d74bee3fd6f3L,0x12fc899403a87d91L,
|
|
0xc4c55e692d6e3931L,0x63e1255896336788L,0x36c297a5f78371fdL },
|
|
{ 0x4cd3f9c4a63b313eL,0xd2825e17c543e507L,0xd37e36d06a4e64d0L,
|
|
0xab9559ec11872774L,0xaf168b34880a5d00L,0xb0c916a10c0c3f42L } },
|
|
/* 28 << 252 */
|
|
{ { 0xd389397c834eaa9fL,0x2271ea0d2a5532aeL,0x5e59a23ae1f92e9eL,
|
|
0x9f179b8c1f7b91f5L,0x2a1c10028de2dc8bL,0x6ac83e58787a276dL },
|
|
{ 0x0facd4756d9d1571L,0xcceaae5e4bf118e2L,0x4e8008b7620fbecbL,
|
|
0xff633fef7a1474cbL,0xfbefea80ce377357L,0xebb9a9460feb7724L } },
|
|
/* 29 << 252 */
|
|
{ { 0x0bab441ae9803b71L,0x309ef14684e2e21eL,0x17ccd5b6851b6519L,
|
|
0x8b5e7e300126f470L,0x0560cb9d847eca03L,0xc45850bf11ade256L },
|
|
{ 0x08603f5c3c33dbbdL,0x21887bc9708ae545L,0x3bd25ad480014ffcL,
|
|
0x5eb0f89fd3a64409L,0xbca2726b4c3dd83dL,0x611afd2fe4259797L } },
|
|
/* 30 << 252 */
|
|
{ { 0xd9cb4233c4f4e0e5L,0xcfc0576818e49029L,0x8e9c8360526f05a1L,
|
|
0x8e83037aa56d6c3dL,0x33507065c47e6742L,0x5ca2c8d8788b5da3L },
|
|
{ 0xf355cee9cfb0b6feL,0x0e86fd73973ddafdL,0x27fc6c56d44fd889L,
|
|
0xc9ab416ff7d93f3cL,0x778c3f160d063d62L,0x175e5d920b5085ddL } },
|
|
/* 31 << 252 */
|
|
{ { 0xd62406873be63d8cL,0xe8c93b93b80059a6L,0x33bba7dfe065854fL,
|
|
0xcb26543f36b34e45L,0xc17ee58dd2d0c3d5L,0x69752f49bae1bcadL },
|
|
{ 0x87e31b429b20106aL,0xc520424b06734eb5L,0x993240afa896d17eL,
|
|
0x5238851bc2762a62L,0xce399f9d506d7dbfL,0xa4822d23040cc7d4L } },
|
|
/* 32 << 252 */
|
|
{ { 0xf071c9878fa06859L,0x0083e5311a52390bL,0x845eb12a61483bc2L,
|
|
0x17471d801caf6dd6L,0x7b603616ddc21b92L,0xd38fe0f6b992536dL },
|
|
{ 0x433f0652297c25a4L,0x03d4d8fcb1c4bf41L,0xdf617386a9adf49bL,
|
|
0x4bfeb3992cb2944fL,0xbf288427b3d9c076L,0x17818c3e965b4576L } },
|
|
/* 33 << 252 */
|
|
{ { 0xfbcff79f6df360c9L,0x342f9ded2bd94c22L,0x2dc5f999283f2300L,
|
|
0xbea18d9893cc3330L,0xc197176269a7da4eL,0x72de17ee93ce69a3L },
|
|
{ 0x6c354a6184170a91L,0x031ce0debe47ef92L,0xbf256fd418658739L,
|
|
0x0395088a0d037d9aL,0x61179c42c5a05970L,0x0d5a9f7db8b6ab64L } },
|
|
/* 34 << 252 */
|
|
{ { 0x18be1d605a44a8dcL,0xb512d945f1d18ee0L,0xd2e1f6623af39ec0L,
|
|
0x440469136c223676L,0xe7a860836a60a4d8L,0xaefcfc2dc7e09d3bL },
|
|
{ 0x175817fad685c9b7L,0xe20b6c9e4b9d0557L,0x9212e7bb51fe560dL,
|
|
0x748aafb7608b53c4L,0x86186d4fd9b06850L,0x4cc6041376512c08L } },
|
|
/* 35 << 252 */
|
|
{ { 0x2d5be3b00c127e46L,0x8c6f38fad9b04e47L,0x49c444098736f31bL,
|
|
0x5469ae47f53aa908L,0xd84856f3492fd120L,0xd04b1fa20725e199L },
|
|
{ 0x50c2e80a8e7056f2L,0x415db04c9ba2e259L,0x8e4c56ae2eb201e0L,
|
|
0x449e4d9e5082ce94L,0xb5ff077a7345459dL,0x96d10f1e07330e72L } },
|
|
/* 36 << 252 */
|
|
{ { 0xac77126e3b3094b7L,0x7c1e7673bdcb616fL,0x90491f8176993114L,
|
|
0xf17c08a8cc8da63bL,0x972a3bffaa050364L,0xdef45b7f65a9cd57L },
|
|
{ 0x105ec5ba2b9b889eL,0x7066821150f7a61eL,0x11daa9dbb1d63a40L,
|
|
0x6065451007790568L,0xfaa219cebc2b6d2aL,0xb1b8ace93e5163dcL } },
|
|
/* 37 << 252 */
|
|
{ { 0xf8042ae2859b0f22L,0xd8a5d3a200d8bb8cL,0xe85c596189faae14L,
|
|
0xb7d636f906611c0aL,0x35b68bbdd2bc8957L,0xc86f5be5b7cf558cL },
|
|
{ 0xb602a00369c17e74L,0xc39479cfd8a1fc01L,0x6dca5c81f733237eL,
|
|
0x9c8cefd41b2e2cccL,0x2e32a323caacb4b8L,0xf7406874ad639090L } },
|
|
/* 38 << 252 */
|
|
{ { 0xea3a358e24c1bbfdL,0xfd32af33571400aaL,0x2ec3d44da413949aL,
|
|
0xa0d8594a7bd121f8L,0xb32997a1d6b6153fL,0xa0f48d98b9469c6eL },
|
|
{ 0x236b7a18fba15481L,0x49dee3bd98ff970fL,0xbc27ac7a7ee97875L,
|
|
0xd1acf2be28ac6279L,0x92e7ef02514c8328L,0xb2d7a8304f48b497L } },
|
|
/* 39 << 252 */
|
|
{ { 0xcaad0554d95946a9L,0x992268c973ed1281L,0x6c0b1edf7b1b25e1L,
|
|
0x4de2d9f81d6e73dbL,0xe12a4f1c5a2950a9L,0xe0cdf7af36ac18fdL },
|
|
{ 0x16e7332d1abcc9f5L,0x4dccc1505bac1c75L,0x1b48bbc141f8c231L,
|
|
0x3702cc2693692a4aL,0x9e9e53dd311c5dabL,0x27bc006cfe5d9fd3L } },
|
|
/* 40 << 252 */
|
|
{ { 0x2bb798ff689f43efL,0x5813e4415f26ec54L,0x51f64c495005c929L,
|
|
0x60e213a54b42e417L,0xc152844262cc3734L,0x6ecd6c3b09d994e1L },
|
|
{ 0xa6e72f7183dd047fL,0x3836f663b0019803L,0xbcf1265b257493cbL,
|
|
0x59b15ff09e62d78bL,0xaac5ed5b6cb92ecfL,0x37e6ad7d9662651cL } },
|
|
/* 41 << 252 */
|
|
{ { 0x04743bf8b224f6c9L,0xec04b641ae33b1caL,0x6301f51623a76fccL,
|
|
0xf1aa954675e15fe9L,0x878c64ecd95c1972L,0x033df5ee3ba7578aL },
|
|
{ 0xe5e9ff7c47f4721fL,0x9b3d93fa03eef7e9L,0xcd0be6ad573deaa6L,
|
|
0xf377570f3bbc8a16L,0xffdc04c161c37393L,0xd9eee46dd26d659dL } },
|
|
/* 42 << 252 */
|
|
{ { 0x33f933604d4b7317L,0xee44b3e02fe482ebL,0x5a96870480f1fde5L,
|
|
0xdfd6293b5510952fL,0x2abdc1989cc0af6aL,0xe608e2769ff45aedL },
|
|
{ 0xf408670e3247e796L,0x3144153535fe07c4L,0xa941f96e2870053dL,
|
|
0xbe908795ef6383adL,0x82b620a63560fdf0L,0x2c1cc1ae135de5c8L } },
|
|
/* 43 << 252 */
|
|
{ { 0xa829397c727e5988L,0x305659bac6239b1bL,0x9b13701200392cb0L,
|
|
0x4eb1ddf376091862L,0x68b64b19202bdd8aL,0x56c427c5228071e4L },
|
|
{ 0x354b1beac3375accL,0x94a45b4e54e1194bL,0xf528df0178095edbL,
|
|
0x6fb0867146fb9ec8L,0x977efc84c555bd48L,0x8230d6f7c268a20dL } },
|
|
/* 44 << 252 */
|
|
{ { 0x003d4004b8d81c0bL,0xd3d5048f4168a407L,0x7748ecacc6675bd9L,
|
|
0x9dba4539e2612cf4L,0xa5ebbccfd8770b8fL,0x206b4a9aadd90558L },
|
|
{ 0xe446ed9c81b5c103L,0xcd2434184d2199dcL,0x0840f6eacb0d70d5L,
|
|
0x6fbbf1b43107367bL,0xde9444f7d29335c8L,0x33ef004c66252eb6L } },
|
|
/* 45 << 252 */
|
|
{ { 0x10eac97aa5a6546aL,0x6129392fe231f95cL,0xfd41bda100e2aae3L,
|
|
0x5b1f93299d8c6288L,0xf1d2fc9246b7df40L,0xbc6fbacfc5df62bbL },
|
|
{ 0x64885d924b5af011L,0xe4f3ade883461896L,0x644ce7a7a4a62e43L,
|
|
0x74c9d145337b2730L,0x69d714840f83222aL,0xbfbc594ec27c0fdbL } },
|
|
/* 46 << 252 */
|
|
{ { 0x3263c0517ed92916L,0xc039b94884e3f519L,0x54aa433ede89de6dL,
|
|
0x92f76292c0971a03L,0x8457b2312550a2e8L,0x46ab1f0f11cfcd9aL },
|
|
{ 0xd97b95c1c6d53077L,0xe8db11d159550599L,0x2092c81385ea4b32L,
|
|
0x149b6b2cb7ced408L,0x2ada6fa482b9b22fL,0x53a5576a25877963L } },
|
|
/* 47 << 252 */
|
|
{ { 0xa1e2c2a8195ad455L,0x65e90a3de7f61038L,0xb01eaa52ec623680L,
|
|
0xfad0f9f110302efaL,0x9e544b5449274409L,0xfc9037de8c3a0925L },
|
|
{ 0xbcf196fcfd139cdaL,0x0a1f747c4f6a2cdcL,0x580a9abab879fe3eL,
|
|
0x08a20f1c5ee74778L,0x7c9be7de464c5271L,0xa4a1972918e85a09L } },
|
|
/* 48 << 252 */
|
|
{ { 0xce23a19aa17e560cL,0x6491b95f62550e2bL,0xc72000121d15a005L,
|
|
0x15fde735f4355a1fL,0x3849761f607f7807L,0xcbe322d018204691L },
|
|
{ 0x75756e4ea95e8e91L,0x365959fe817a9b8eL,0x631232763d4ce3dcL,
|
|
0xa769d2fef1d66e00L,0x8624ddbac28829e6L,0x03274297d2df06efL } },
|
|
/* 49 << 252 */
|
|
{ { 0x2ad21bdadf3b1368L,0xf4f9d5270b3001abL,0x10182c5557ecb528L,
|
|
0xe00db71565372a5bL,0x2018e0ed74f2bd83L,0xa11b47066175efb4L },
|
|
{ 0x3172264722d565cfL,0xb20c27ab2f0faac9L,0x4ca2982a6260f995L,
|
|
0x3850ef89b7085c6fL,0x5b4a6e235f0d45a3L,0xde562df9b7523682L } },
|
|
/* 50 << 252 */
|
|
{ { 0xb34ecab233bb63f6L,0xe6cd56a202944c4cL,0x2690cc39489a8d88L,
|
|
0xcdfe368a4fe612dbL,0x23069ca5e9e9f7adL,0x7b87105cc07d742bL },
|
|
{ 0x5114645a8b58ea8eL,0xd31fb4821829e8aeL,0x5e235d95c4b28520L,
|
|
0x2a1cda885c2292d2L,0x95d77447ee925b6aL,0xeec419a3df18845dL } },
|
|
/* 51 << 252 */
|
|
{ { 0xb8903f10be9ffa75L,0x8bf7fc786432dcc3L,0xcf3f7cf15d028549L,
|
|
0x7684baf29846f2d9L,0x4c580edbe9e063deL,0x0ac5c3edf2d70321L },
|
|
{ 0xb9ba10e184c5d96dL,0xbb854b39d7aaabafL,0xe29d66964793c87aL,
|
|
0x7b0fe1d448285ae5L,0xa143454df0121733L,0xa286eb043aa5ddc8L } },
|
|
/* 52 << 252 */
|
|
{ { 0x8e4dcfc88c93bc5fL,0x9f96d60a1b233295L,0xae5262e91d447dcbL,
|
|
0xafe58396541d46c4L,0x3e733c2636ff8f80L,0xcb36a37748b81037L },
|
|
{ 0x9bcbfa9fc406ef17L,0x57a6e28006fb128aL,0xd86b44db9a771eb1L,
|
|
0xc7ce106e62545a4dL,0xec6818a6b254c908L,0x4b8d3fc550feb342L } },
|
|
/* 53 << 252 */
|
|
{ { 0x8faa39c8b609ef4cL,0x0209b3a7d8225cceL,0x11254c211feffc0fL,
|
|
0x64930dcdc1e42ad3L,0xf5b058eb1cbb39fcL,0x2f870e3341cb5065L },
|
|
{ 0x61b3611cf7663f95L,0x981890b637941996L,0x00c42b0908dd6854L,
|
|
0xac42af5de17da075L,0xaf3a394c282b8d53L,0xb53b3b245d8bab96L } },
|
|
/* 54 << 252 */
|
|
{ { 0xe17c9d98d90f0c83L,0xdd4aa8ac6d984408L,0x94b6fc50f71aef46L,
|
|
0x2e6b5d24f0a2009eL,0xcb9d9cd17d8d75e4L,0x5e732a5b962a1708L },
|
|
{ 0x9d774f1c7fd01089L,0x56bc35aded95094bL,0x6844220bb9c797d4L,
|
|
0x40021d8e90ace48fL,0xddc769c5701baad0L,0xe23e8f9e333ac2deL } },
|
|
/* 55 << 252 */
|
|
{ { 0x6cf6faf6e92e42bdL,0x759dc78b0d1e6a0eL,0x18fd55ff11532759L,
|
|
0x04a306d7e9af0c07L,0xd7febf615ef7f82eL,0xaa04f1dca65cae01L },
|
|
{ 0xb084407c16442bc2L,0x17ab4f74f874f10aL,0x236368d40fb6cea7L,
|
|
0x451ea8206f66813dL,0x4a61097b1760e6ecL,0xa8655cfba01bdd2aL } },
|
|
/* 56 << 252 */
|
|
{ { 0x52fced3116f01d7bL,0x88c6b172daf046aaL,0x1a189403fe7a338eL,
|
|
0x39741ecd61798b1eL,0x6a47b0712934b879L,0x3b1a5dd1828d1e9dL },
|
|
{ 0xd4bd48487f35a7efL,0x71774b5bc1eebaf8L,0xa86471e5d55344baL,
|
|
0xfbf145f17b8a483aL,0x70f9b214aa53802cL,0x995af93010b066e1L } },
|
|
/* 57 << 252 */
|
|
{ { 0xd2714b97aadf25ceL,0xb95c54162a7643f1L,0xae7dc619ba2f1939L,
|
|
0x30e5d013b0db537eL,0xfcd1a456753f0813L,0x19f7117cef62925cL },
|
|
{ 0x40a22e35423d3c56L,0xb0271e9926a5534dL,0xc19f703cc76c9a1eL,
|
|
0x9b8fe585560bee08L,0x48c7797d3cc772aeL,0xabd2148e10bd6393L } },
|
|
/* 58 << 252 */
|
|
{ { 0x046fb36cc34a7ba2L,0xd42e56d42a61a8a6L,0x16b8fd2d3d4b1184L,
|
|
0x6f9e85a26da29888L,0x1ff7324bdd683c49L,0xdb3746db27bb8e2aL },
|
|
{ 0xa7e586e684be7f99L,0xfbd0c0ee61740d6bL,0xb80509bab2071320L,
|
|
0xb5bf09fea3f03641L,0xe872cd854971e39fL,0x9bed91c0ce2b2db2L } },
|
|
/* 59 << 252 */
|
|
{ { 0x85177e7ca6bad7b2L,0xd5b1f0901425b611L,0x6b5f16223c4bfa24L,
|
|
0xde34a692def66d8aL,0x96c0663ee8a1b7a0L,0x43eb91ed459c8bbbL },
|
|
{ 0x6cc7e78b7d3d8b92L,0x3c9da7efe0338ba8L,0x18d7ab00e21360b4L,
|
|
0x0785ca897f9df01aL,0x5bcfb8302220f1efL,0x8c61a3bfa52bbf42L } },
|
|
/* 60 << 252 */
|
|
{ { 0x4dcc3b82196c21d2L,0xef0e0e1e61071fd8L,0xa2a28c3b35a013f7L,
|
|
0x7550d3d7f6b58f80L,0x0f1fc9d58101742bL,0x027874f055982d5dL },
|
|
{ 0x5a10b98c629bc409L,0xa28a1b2baf494679L,0x84afdbe1b96578d8L,
|
|
0x201a8062d427238bL,0xe321ee2d89fffdb0L,0x0b304de4fb89f171L } },
|
|
/* 61 << 252 */
|
|
{ { 0x5d8e16c0d7700dfdL,0x336e30fa24260211L,0x7ba72067ad557ce2L,
|
|
0xcb388c3169621e0dL,0xcf6b7d813dbf7ba3L,0x7bfe43a91cbd216aL },
|
|
{ 0x6c40516adcffe0b5L,0xe77507f083b7ea33L,0x5b5cda074ba1fc8eL,
|
|
0x46860dd296c6d2c6L,0x4716114f0eb5013cL,0x05bd136898c3642cL } },
|
|
/* 62 << 252 */
|
|
{ { 0x7fac263852ca5d3bL,0x35e5d8d0f5a2a596L,0x4c7129210011a394L,
|
|
0x400168f7a9c417e0L,0x220994b447b77b44L,0x01a7580af548c0adL },
|
|
{ 0x59870c2afe292ad7L,0xdda35a1a2abf8e7cL,0xa3082dc4f16d0c7cL,
|
|
0xd4dcd5f38557c9e8L,0x38d45cc6ba7f0f99L,0xdefc0b1da7c18157L } },
|
|
/* 63 << 252 */
|
|
{ { 0x5db2ed891c43e426L,0xeed247709adf4a50L,0x0b5e19765c8b90e1L,
|
|
0xe9db695ffa18542dL,0xc16d3bfb8d043dc5L,0x5c5feb44f11d3430L },
|
|
{ 0xd44e3d57365593c0L,0x1338f26c8796edb5L,0x789b325e051ca644L,
|
|
0xaa93b75d1579c2bbL,0xa39a8ec57842c0b2L,0x84225134550ddf11L } },
|
|
/* 64 << 252 */
|
|
{ { 0x9ec1159727a28f9dL,0x96f2c44bb847cd83L,0xacf794e131fca111L,
|
|
0x438b917896076f45L,0xad71035b51732588L,0x2db32f32a5d910daL },
|
|
{ 0xefaad0e8fe1cc184L,0x6f0360b52e00bbedL,0x99402426474ce326L,
|
|
0xd53b687a2aa270daL,0x96c8bb78d78fa6ebL,0xd07f3bba6e699411L } },
|
|
/* 0 << 259 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 259 */
|
|
{ { 0xfe1f11ad389283baL,0xc87e20b60cd91b22L,0x99d0015a3c5babf8L,
|
|
0x7e795b4d5929ea0aL,0xc9cf68331dfb7b7eL,0xc1c07346a64992e8L },
|
|
{ 0x0b7e0dd89889746dL,0xa89d7b461c43ea4aL,0x64023cf034f02b96L,
|
|
0xf7dd410a5662f0c8L,0xa3bb6088a1058ccaL,0xedb25dc34e7801edL } },
|
|
/* 2 << 259 */
|
|
{ { 0x140a0f9fdd93d50aL,0x4799ffde83b7abacL,0x78ff7c2304a1f742L,
|
|
0xc0568f51195ba34eL,0xe97183603b7f78b4L,0x9cfd1ff1f9efaa53L },
|
|
{ 0xe924d2c5bb06022eL,0x9987fa86faa2af6dL,0x4b12e73f6ee37e0fL,
|
|
0x1836fdfa5e5a1ddeL,0x7f1b92259dcd6416L,0xcb2c1b4d677544d8L } },
|
|
/* 3 << 259 */
|
|
{ { 0xb6f8d615a033cccdL,0x6aabb87cad75e31fL,0x30a03029a4646d1bL,
|
|
0xfad497e6e6547805L,0x4b9d45c3ba291f12L,0x0f74909bca059918L },
|
|
{ 0xdece1fb0b5a181b7L,0x973f74413be1f21bL,0xcc919af36b06839aL,
|
|
0x14427886ad57101fL,0xc63a79882bbc8022L,0x04cf807426742ccaL } },
|
|
/* 4 << 259 */
|
|
{ { 0x279fd119da1c29abL,0xbd0688022b30d40cL,0xd8f57da4da44105dL,
|
|
0xb1814b7a28223fe1L,0xcf2fd241e06f2d2eL,0x99003a0201dfde06L },
|
|
{ 0x876a31affded7e4bL,0x1efaf8272f725094L,0x5117d608493a6a0aL,
|
|
0xdcec8088a88c03e7L,0xeae1d352ea916897L,0x8cdc28106e8b2c57L } },
|
|
/* 5 << 259 */
|
|
{ { 0x52fb8e6f7041b903L,0xd7fc4b5b2ad368a3L,0xf16c61d2f890136fL,
|
|
0xeee859dfbb52a90bL,0x1651b16b3f8396cdL,0xfbced93eb6462918L },
|
|
{ 0x1cb3126c4b6bfaa0L,0x65dfc76cc7c8fd16L,0x225b9c21bb46a3c9L,
|
|
0x6c3457577f64f9ffL,0x6f65fadd57c297ecL,0x72a630eae5c5bbbdL } },
|
|
/* 6 << 259 */
|
|
{ { 0x0254486d9c213d95L,0x68a9db56cb2f6e94L,0xfb5858ba000f5491L,
|
|
0x1315bdd934009fb6L,0xb18a8e0ac42bde30L,0xfdcf93d1f1070358L },
|
|
{ 0xbeb1db753022937eL,0x9b9eca7acac20db4L,0x152214d4e4122b20L,
|
|
0xd3e673f2aabccc7bL,0x94c50f64aed07571L,0xd767059ae66b4f17L } },
|
|
/* 7 << 259 */
|
|
{ { 0x25cb1f44f4fefeeeL,0xe1a6b6c8bce660c7L,0xd25459a00d2118e4L,
|
|
0x716532dafedf8f98L,0xaeff37d492cfb480L,0x45919f7da1453c41L },
|
|
{ 0x5100afe08d8836a6L,0x2ec20fd7b35d4fe0L,0xce8eefd1c00b7d66L,
|
|
0x922d535d6b82c7ccL,0x5eb38f3fddd8d80aL,0x7eae5305213ae465L } },
|
|
/* 8 << 259 */
|
|
{ { 0x09f8bb0654e93c1eL,0xb0045884ad81e27cL,0x26ebc7b6076e13ebL,
|
|
0xbda0b5535d5ac07fL,0xbcb8132248ab69e6L,0xd3847d2e1c0f21faL },
|
|
{ 0x7a466528c834d740L,0x6c67a79ae0823ff2L,0x85dd11864c1d7cb8L,
|
|
0x096f849f2d081301L,0xb4f503dd8a5ea0f0L,0x71ee0889d1bf69b2L } },
|
|
/* 9 << 259 */
|
|
{ { 0xd7a5f9feaa074b9eL,0xbeda44032fd2468bL,0xca3956309c35ffcaL,
|
|
0xb02a1f592de68348L,0x946b0250903b35c7L,0xe9984f24634e9c91L },
|
|
{ 0x4f70d22fe7303041L,0xf8a05d7fb68b0051L,0x0ce7af4fab5006afL,
|
|
0x1011d1644a6bb502L,0xdf959199da4ad1a6L,0xc468cddf1e146f24L } },
|
|
/* 10 << 259 */
|
|
{ { 0x40336b12dcd6d14bL,0xf6bcff5de3b4919cL,0xc337048d9c841f0cL,
|
|
0x4ce6d0251d617f50L,0x00fef2198117d379L,0x18b7c4e9f95be243L },
|
|
{ 0x98de119e38df08ffL,0xdfd803bd8d772d20L,0x94125b720f9678bdL,
|
|
0xfc5b57cd334ace30L,0x09486527b7e86e04L,0xfe9f8bcc6e552039L } },
|
|
/* 11 << 259 */
|
|
{ { 0xffd4fd775b5c7501L,0xc43e409ee0600e93L,0xd2a18cba7d522993L,
|
|
0xbc2e14dc17c84d1cL,0xe84deb43c1eee29dL,0xe65326f08d691cbfL },
|
|
{ 0x89760cdd77b726afL,0xb91c302a577b30acL,0xc6a742906e145891L,
|
|
0x95bf3e913be85cc7L,0x2ec0285b9815e0edL,0x5b4be6da8aa3ec95L } },
|
|
/* 12 << 259 */
|
|
{ { 0x4ab7a22c02a2d1e6L,0x967e19a31371d5a4L,0x20f59f95078de336L,
|
|
0xfd28fa36f7869245L,0x1de42581cbf1d96fL,0x2e0127d7366e1f0fL },
|
|
{ 0xbc65fa9d2258c741L,0x1f2f3356dd6d65f8L,0x06384f3a4a0822a9L,
|
|
0x1c81332bfd05a0aaL,0xbfb12361d95ee3ceL,0x180aaf0642016d00L } },
|
|
/* 13 << 259 */
|
|
{ { 0x329ff57bf08c171eL,0x6cd8122a543af2a9L,0x5209a3d65b2f8d96L,
|
|
0x0285b128ba90c881L,0xeb5971ef61b43c8fL,0xf1ec473ccfd759b8L },
|
|
{ 0xd2a79fb712d58e1eL,0x695f4877fdb6497bL,0x8bf5a4251f1a0f24L,
|
|
0x3e79a0dea5c8a189L,0x9c8ada35908b7ae3L,0xd8b8622c5000f772L } },
|
|
/* 14 << 259 */
|
|
{ { 0x3b75c45bd6f5a10eL,0xfd4680f4c1c35f38L,0x5450227df8e0a113L,
|
|
0x5e69f1ae73ddba24L,0x2007b80e57f24645L,0xc63695dc3d159741L },
|
|
{ 0xcbe54d294530f623L,0x986ad5732869586bL,0xe19f70594cc39f73L,
|
|
0x80f00ab32b1b8da9L,0xb765aaf973f68d26L,0xbc79a394e993f829L } },
|
|
/* 15 << 259 */
|
|
{ { 0xdd01a72b6024f09fL,0x192c8254378d12e1L,0x03ec536bf5d8b8d0L,
|
|
0xb0c4c01873806514L,0x7d3c5f5614d202b6L,0x7c2a7c5c6febb3e2L },
|
|
{ 0xf2fa07d4f9f2b562L,0x6f717b003ba2a4faL,0x1ff95d598f452226L,
|
|
0xe4b3f6ba867c1cf1L,0x907a648a5d0944ecL,0x1ed480007f64f9b9L } },
|
|
/* 16 << 259 */
|
|
{ { 0x0a159f6295b3287dL,0xb18f875948cecad0L,0x6d1ab8ee1661a23fL,
|
|
0xcae7f40ec95c41b3L,0xbc3d20407c51eb56L,0xa7527283e8754250L },
|
|
{ 0x815610561f9e668aL,0xb8aa7296900f5912L,0xabdbc1bf6af2a00cL,
|
|
0xe9a942542d0a56c0L,0x4774a7b77bc8959eL,0x0a837ff019cef2f3L } },
|
|
/* 17 << 259 */
|
|
{ { 0xd9c3f4ea3c696c76L,0x3aff88caea5878bbL,0x2b01171b09dda122L,
|
|
0xa61d5ca0f599cad4L,0xba0c19bef49772c7L,0x8ee9acc25001f977L },
|
|
{ 0x15fd3a172549a25aL,0x8f1a25d82263bc97L,0x372b88434db4af00L,
|
|
0xa613b31f4f912925L,0x7d83041a0b64efd9L,0x897c521ca7d5f6a8L } },
|
|
/* 18 << 259 */
|
|
{ { 0x9c441043f310d2a0L,0x2865ee58dc5eb106L,0x71a959229cb8065cL,
|
|
0x8eb3a733a052af0fL,0x56009f42b09d716eL,0xa7f923c5abcbe6adL },
|
|
{ 0x263b7669fa375c01L,0x641c47e521ef27a2L,0xa89b474eb08ffd25L,
|
|
0x5be8ec3ff0a239f3L,0x0e79957a242a6c5aL,0x1dfb26d00c6c75f5L } },
|
|
/* 19 << 259 */
|
|
{ { 0x04c6a90ae75c82afL,0xe9183100f2488abdL,0xef4b378b111a46baL,
|
|
0x77ad9ef502eaa62eL,0x61229a6205e81570L,0x06e26a2db474c367L },
|
|
{ 0x0bb2ea7e7113f2d4L,0x8ddc6f887f101386L,0x93fe2d7ef4de63abL,
|
|
0xc3d038278f44e271L,0xe9f9f48ea94e641aL,0xb84b817b4962467dL } },
|
|
/* 20 << 259 */
|
|
{ { 0x36f3a3d8a084fae6L,0x759835899a9b0d95L,0x70722186cc80fcb6L,
|
|
0xf28ed0c796d84c04L,0x95a32263ffb63f90L,0xdd7d60a098766034L },
|
|
{ 0xe193a31f1d5c387cL,0x6c5eca7eb8310f8bL,0xfe61d523c083ff47L,
|
|
0x90c832dbcb2944e9L,0xa9f3f293593334b7L,0xe6cde2e12d7d1c33L } },
|
|
/* 21 << 259 */
|
|
{ { 0x5637d16b065096b9L,0xee3a2ad04770d39eL,0xae605cb56aa94587L,
|
|
0xc2d71dae9b600c6eL,0x672ef30d76a87e0aL,0x74d5bebe567e0817L },
|
|
{ 0x38f591310eb8ca48L,0x92b74866031e099fL,0x654858ca785f77eeL,
|
|
0x264b6b7b830be443L,0xb167203d57103903L,0xa73d5d545ce2b21aL } },
|
|
/* 22 << 259 */
|
|
{ { 0x2fd97b9b9dfbf22aL,0xdec16cc85643532dL,0xdf0e6e3960fee7c3L,
|
|
0xd09ad7b6545860c8L,0xcc16e98473fc3b7cL,0x6ce734c10d4e1555L },
|
|
{ 0xc6efe68b4b5f6032L,0x3a64f34c14f54073L,0x25da689cac44dc95L,
|
|
0x990c477e5358ad8aL,0x00e958a5f36da7deL,0x902b7360c9b6f161L } },
|
|
/* 23 << 259 */
|
|
{ { 0x5e8eb8f0636a77efL,0xe14290f8970c3a7fL,0xfe6f6acdfa1784c0L,
|
|
0x98671d33de6a46b3L,0xe7fd88722ae5a76eL,0xed971ecbae4f7d60L },
|
|
{ 0x1d90dbd88461b895L,0x3f979ab4bfaaac13L,0xe06ccba1dbd3379aL,
|
|
0xb53b04ba108c4487L,0xe42609dd38d2730dL,0x0638fe82e81c4594L } },
|
|
/* 24 << 259 */
|
|
{ { 0xbd079cf1f144b6ccL,0x7f86e29bb4f4a764L,0x5b08b290f21f9cbfL,
|
|
0xada0c85b75e3aeb9L,0xd0789f8b6666c2dfL,0xcf5d8a8cd71ec2ecL },
|
|
{ 0x6f7780c3e7e4364bL,0xdd9a652985d2eb75L,0x8222f66bd952a38eL,
|
|
0x9dd5f7eb27260a29L,0xce49b34457947178L,0xaa215f82cdda7e39L } },
|
|
/* 25 << 259 */
|
|
{ { 0xcb91619d1419a50fL,0x44a22eac65dc4c84L,0xc199f93701a92405L,
|
|
0x3749a33198045324L,0xf1676e8abc57764dL,0x922f9460a00c33eeL },
|
|
{ 0xfde98e63d3766db4L,0xae08a82efd5ffb6aL,0x6a9834537c0c6ae7L,
|
|
0x0e9a919a54f34cdbL,0xf37a95e8fd88d765L,0x927427d4228a1affL } },
|
|
/* 26 << 259 */
|
|
{ { 0x454ab42c9347b90aL,0xcaebe64aa698b02bL,0x119cdc69fb86fa40L,
|
|
0x2e5cb7adc3109281L,0x67bb1ec5cd0c3d00L,0x5d430bc783f25bbfL },
|
|
{ 0x69fd84a85cde0abbL,0x69da263e9816b688L,0xe52d93df0e53cbb8L,
|
|
0x42cf6f25add2d5a7L,0x227ba59dc87ca88fL,0x7a1ca876da738554L } },
|
|
/* 27 << 259 */
|
|
{ { 0x277c833f57c7bf99L,0xbbb84d1d0b301f02L,0x11435cb20713a92bL,
|
|
0x8ae509702d02862bL,0x4edc66bdaa7b0660L,0x5bc0d893d6382c91L },
|
|
{ 0x7992c5d3b94a6343L,0x1cfee04147b19345L,0x57963034964ed646L,
|
|
0xd7af0cac3de7b0e9L,0x5123dd8d481b940aL,0xe1d23ad8ad7d3567L } },
|
|
/* 28 << 259 */
|
|
{ { 0xaa44b2863004db31L,0x86f43d7ad43e4430L,0xdc4874cdb0b0240dL,
|
|
0x79986a23adc45a06L,0xbb275b443cee4631L,0x21daee8a63a217aaL },
|
|
{ 0x1e7c5397d7b25c02L,0xe677d3cbc5e668faL,0xc7c84e28ed51b4bfL,
|
|
0x7ca19e99923e5408L,0xc6f8a595c3f832e7L,0x2d0a789c5fb049a3L } },
|
|
/* 29 << 259 */
|
|
{ { 0x49702e622b82b466L,0x365d4f6afb8fe508L,0x2f5234e044884733L,
|
|
0xcd527f345dd0a3d5L,0x371b02544bf4033eL,0x7d84ad677e3212e0L },
|
|
{ 0xaf48fd79e69d6b81L,0xd126f83a7a44bfc6L,0xbb8d2b57b2cc4e93L,
|
|
0x5f62a3d5eb60ec5fL,0x7b37da33aa76c824L,0x7593d06b89a682dbL } },
|
|
/* 30 << 259 */
|
|
{ { 0x3fa5c1051cac82c4L,0x23c760878a78c9beL,0xe98cdad61c5cfa42L,
|
|
0x09c302520a6c0421L,0x149bac7c42fc61b9L,0x3a1c22ac3004a3e2L },
|
|
{ 0xde6b0d6e202c7fedL,0xb2457377e7e63052L,0x31725fd43706b3efL,
|
|
0xe16a347d2b1afdbfL,0xbe4850c48c29cf66L,0x8f51cc4d2939f23cL } },
|
|
/* 31 << 259 */
|
|
{ { 0xc342ed50dd305573L,0xe3055013de86c6c8L,0x0ae84d9776deedc4L,
|
|
0xe8e70cbfd1274b52L,0x4bb51dce32e87f7fL,0x32de3672f3748177L },
|
|
{ 0x528af91681722d55L,0x459af071a5f2ce91L,0xf6883bbdc685a670L,
|
|
0x398657f9eeb836b8L,0xa08a793eb9278bd7L,0xe786426bcc09e408L } },
|
|
/* 32 << 259 */
|
|
{ { 0x114a25c844922386L,0xdd084d446d4e8b57L,0xc49b68411e7bd7deL,
|
|
0x5b0359fad6da54dbL,0xa6e6e5f93f0da321L,0xb65ec55cd640a87eL },
|
|
{ 0xc1a4f6ceae64020eL,0x91e29cd2088e1337L,0xf44ceb8e3c0a631cL,
|
|
0x0205b11db756445fL,0x04844e845bc8880eL,0xb630ddc0b85e00d3L } },
|
|
/* 33 << 259 */
|
|
{ { 0xac512659c6ee46b6L,0x0c92e402ca82b384L,0x81d79049194fba3aL,
|
|
0x9b68376c36b42b32L,0x6dc1c80cf6b410b0L,0x509fbe9196b2b328L },
|
|
{ 0x988fedd6fdc783b1L,0x9f34cd87436ed055L,0x29f243648bb8809fL,
|
|
0x6962ca24b8dc8b68L,0x076cb7b931963ff9L,0xb609ad792b915093L } },
|
|
/* 34 << 259 */
|
|
{ { 0x169e025b219ae6c1L,0x55ff526f116e1ca1L,0x01b810a3b191f55dL,
|
|
0x2d98127229588a69L,0x53c9377048b92199L,0x8c7dd84e8a85236fL },
|
|
{ 0x293d48b6caacf958L,0x1f084acb43572b30L,0x628bfa2dfad91f28L,
|
|
0x8d627b11829386afL,0x3ec1dd00d44a77beL,0x8d3b0d08649ac7f0L } },
|
|
/* 35 << 259 */
|
|
{ { 0x4aeb3f870af947c6L,0x9ac9ff2791d090c1L,0xeaaa7e0fcf698277L,
|
|
0x737ccc2ff09d6155L,0xd5d4bde86753cc31L,0x3b9063477146d4a3L },
|
|
{ 0x75106d8959e32369L,0x7a8ee281645999b3L,0x9184fb5cfc3f675aL,
|
|
0xaeebd0423ad4e239L,0xcff8f73e12f449d1L,0x2771bec17339eb4bL } },
|
|
/* 36 << 259 */
|
|
{ { 0xf783db44e6674091L,0x57d0eed31e12a3b7L,0x62d2762af3474f91L,
|
|
0x3d122edf0562af71L,0xaf78dbf77f4bbcbbL,0x8fbbbd97e55f0654L },
|
|
{ 0x77e117b004bac36eL,0xbbf6bd463ec582aeL,0x553acd10017eb463L,
|
|
0xfc521187fdfd820bL,0x73211103089b6829L,0x9d3fe7ad7e01e5c0L } },
|
|
/* 37 << 259 */
|
|
{ { 0x12a8b7ac04c6babfL,0x7b23210557d2cf63L,0xe03831868f21ad0dL,
|
|
0xd14c2b95acdc2184L,0xe7bd19fcadc9bae1L,0xe2dbabf2edea5c71L },
|
|
{ 0x009a3ab78f3f4266L,0x159691e17f8ff74fL,0x5ae666aa22f40f41L,
|
|
0x72fcdc88512387bbL,0xa74e8fb841516c92L,0xd9cee7833b15bf07L } },
|
|
/* 38 << 259 */
|
|
{ { 0x00a93daa177513bfL,0x2ef0b96f42ad79e1L,0x81f5aaf1a07129d9L,
|
|
0xfc04b7ef923f2449L,0x855da79560cdb1b7L,0xb1eb5dabad5d61d4L },
|
|
{ 0xd2cef1ae353fd028L,0xc21d54399ee94847L,0x9ed552bb0380c1a8L,
|
|
0xb156fe7a2bac328fL,0xbb7e01967213c6a4L,0x36002a331701ed5bL } },
|
|
/* 39 << 259 */
|
|
{ { 0xd76b43661c8bd222L,0x041c2b87b97e5b19L,0x7b80f8d7b47c4282L,
|
|
0xfec3d476d0dbc7d3L,0x84aa69712753a830L,0xe5f336079ec85e26L },
|
|
{ 0xa425d60cfe2374b3L,0xf88b90f14d953af2L,0x80370e7857ca6c43L,
|
|
0xe07d07176f4d6d7eL,0xe60639401e61ab85L,0x171a2bf632a4c829L } },
|
|
/* 40 << 259 */
|
|
{ { 0x38e4168d4f8b5073L,0xf1ddc53fc521849cL,0xd2bf515bab917df1L,
|
|
0xab76b71a697d45c1L,0x20fdc6c7cb566a9dL,0x3843bf838a031cf4L },
|
|
{ 0x9a2d89a58a028b04L,0x52f3cb1922a908cdL,0xb5df9c2b7b8723baL,
|
|
0x5142f51060374a3dL,0x949b719800bd9f30L,0x4b7cda16c9b86959L } },
|
|
/* 41 << 259 */
|
|
{ { 0x22a32c50d154fc49L,0xe12242de66357eb7L,0x67571eb89f19ef9fL,
|
|
0x2ed01f28b92b20e1L,0xd4fd6efb6cd439c0L,0xc4036cfc03b057fbL },
|
|
{ 0x605fab271cc48da5L,0x3cbd7a071416a3e7L,0x9cfe7161714bf173L,
|
|
0xbd03d786a77eb0f8L,0x1423516678b8f5ccL,0xecc56e02f0523f3fL } },
|
|
/* 42 << 259 */
|
|
{ { 0x20b1632addc9ef4dL,0x2a35ff4c272d082bL,0x30d39923f6cc9bd3L,
|
|
0x6d879bc2e65c9d08L,0xce8274e16fa9983cL,0x652371e80eb7424fL },
|
|
{ 0x32b77503c5c35282L,0xd7306333c885a931L,0x8a16d71972955aa8L,
|
|
0x5548f1637d51f882L,0xb311dc66baba59efL,0x773d54480db8f627L } },
|
|
/* 43 << 259 */
|
|
{ { 0x2be2f1d67d64ddbbL,0x3afc2fad6edd7e04L,0x9a57c16d9e797442L,
|
|
0x1efecfde9c16769bL,0x86523c3571b2940aL,0x1a9b30035825d17cL },
|
|
{ 0xa25e99beeefc4d7cL,0x8521b49fb50df9eaL,0x10bd2309bd8f3b06L,
|
|
0x1f892e95ea82e80cL,0xf741621c93585741L,0x95687594f5e5087aL } },
|
|
/* 44 << 259 */
|
|
{ { 0xbcdd3a3146f684c5L,0xbc8be436f700b0cdL,0x33005e370de75b7dL,
|
|
0x527a8a2c3bd820caL,0x5e44854446997e4cL,0x40921fd93c3dafb0L },
|
|
{ 0xf3873a8ab7390d9bL,0x30999855495ba2fbL,0x005164f0813c8c76L,
|
|
0x05bb04d7fe8da60cL,0xee7c38d503224ad1L,0x172018d615785ce5L } },
|
|
/* 45 << 259 */
|
|
{ { 0xaaf786c0f6442534L,0x3f1344c1e56b44a5L,0x31199702ed073a36L,
|
|
0x1f8ba0ec3df17e33L,0xf3e7b63493ceee0aL,0x568bdf39490fc4beL },
|
|
{ 0x364bdd11b1e1c439L,0xa1aa317ae5a63c82L,0xb12697034c02ee46L,
|
|
0x0bc6d92e7eb64374L,0x87538fe740ed83f1L,0x862450abda74892aL } },
|
|
/* 46 << 259 */
|
|
{ { 0x59b1b1347a62eb3bL,0x0f8ce157cceefb34L,0x3fe842a8a798cb2bL,
|
|
0xd01bc6260bf4161dL,0x55ef6e554d016fdbL,0xcb561503b242b201L },
|
|
{ 0x076ebc73af4199c1L,0x39dedcbb697244f7L,0x9d184733040162bcL,
|
|
0x902992c17f6b5fa6L,0xad1de754bb4952b5L,0x7acf1b93a121f6c8L } },
|
|
/* 47 << 259 */
|
|
{ { 0x293ff71acc51318fL,0x69437a2e614149cfL,0xb12ea4613b48b348L,
|
|
0x2f58020321f6cf90L,0x2e865f77178b53fbL,0xf4774d29231909a8L },
|
|
{ 0x0433e66bc4d8b703L,0x4fb6256b907097cfL,0x44a2a7fe004470f7L,
|
|
0x7d3ebbb46dc5f10aL,0xe9b3af288f5526b4L,0x4bc0d9db1107bd75L } },
|
|
/* 48 << 259 */
|
|
{ { 0x4865c0ffc0391d0bL,0x70d31470176740ffL,0xf44ca9a1ed506d00L,
|
|
0xfaac86f6c981153aL,0x713ddaf4e3f86940L,0x64ec27093fc39de9L },
|
|
{ 0x04d413acac9a26b5L,0xde2052eebb21664bL,0xa6e04de8957b4f20L,
|
|
0xd185b640d5487618L,0x1668b6a46fed1707L,0xeed37894c435ac3dL } },
|
|
/* 49 << 259 */
|
|
{ { 0x1fa08a16f69cdfbbL,0xabba54dd0bf735a1L,0x37848c6a68a5cc20L,
|
|
0x08e23c52a969298bL,0x48240306f965bddeL,0x48492deaf90bcff5L },
|
|
{ 0x416b9005bd994e22L,0xa6ce214ce6429f16L,0x5aaeec21f43f86d4L,
|
|
0x202db9b7a0b1979fL,0xb2d97b4fdd7ae6d5L,0x4fedb6b9e12f04a1L } },
|
|
/* 50 << 259 */
|
|
{ { 0x7a56867c325c9b9aL,0x1a143999f3dc3d6aL,0xce10959003f5bcb8L,
|
|
0x034e9035d6eee5b7L,0x2afa81c8495df1bcL,0x5eab52dc08924d02L },
|
|
{ 0xee6aa014aa181904L,0xe62def09310ad621L,0x6c9792fcc7538a03L,
|
|
0xa89d3e883e41d789L,0xd60fa11c9f94ae83L,0x5e16a8c2e0d6234aL } },
|
|
/* 51 << 259 */
|
|
{ { 0x9c8e64869c85df60L,0xa84692a681e26100L,0x0350e1209c739462L,
|
|
0xb6da4ebf99fa1f63L,0x857b534055e2bcd4L,0x7f4001dbdb209cf7L },
|
|
{ 0xbfa320378757800cL,0x2d56821fa6a562b5L,0xe56d810b6c3e775cL,
|
|
0xeba244a6ba757f86L,0xb7ca8dbf80a17cb3L,0x8cbff4a22b7db57cL } },
|
|
/* 52 << 259 */
|
|
{ { 0x650c31da9dff967dL,0xecd1e0f77ed949dbL,0xa7ff9becb20196fdL,
|
|
0x5085c68d1e6259aaL,0x5759a166871a71e9L,0xba15e24c2b4d3bd2L },
|
|
{ 0x22c4f75912c51998L,0x6038fb0a7c8a9400L,0x64827d9c09625dacL,
|
|
0xd8ce10c96ec4fb64L,0xe417ac30095686ccL,0x1e624aa88c723f44L } },
|
|
/* 53 << 259 */
|
|
{ { 0x872d3dc953387fbaL,0xaaa0e1b4317ec17bL,0xa12b45519efb728cL,
|
|
0x0b43907d45a3491eL,0xb7fa83befa4a239dL,0xbecdae00b59a4f3cL },
|
|
{ 0xe4e4c7c393407d23L,0x8278f336cf1d3cd8L,0x73dc9356610570a3L,
|
|
0x5579653d688d933fL,0x208b96be5881d760L,0x4752a645d12f57bbL } },
|
|
/* 54 << 259 */
|
|
{ { 0x87ec053da9242f3bL,0x99544637f0e03545L,0xea0633ff6b7019e9L,
|
|
0x8cb8ae0768dddb5bL,0x892e7c841a811ac7L,0xc7ef19eb73664249L },
|
|
{ 0xd1b5819acd1489e3L,0xf9c80fb0de45d24aL,0x045c21a683bb7491L,
|
|
0xa65325be73f7a47dL,0x08d09f0e9c394f0cL,0xe7fb21c6268d4f08L } },
|
|
/* 55 << 259 */
|
|
{ { 0xe02aca87d4bba3cbL,0xd40ac486652fb181L,0xa1dcfe7ffaa3f999L,
|
|
0x116323e0e9eded09L,0xaa3a0f0f07629d4fL,0x9f8e49f5e0dc53adL },
|
|
{ 0xbae96096742af22bL,0x6d7e24dd518862dbL,0x5c91ba30bb333cd7L,
|
|
0xda8df051e65319b0L,0x2b9305ce9b3e43dbL,0xbf1d0e98fe783571L } },
|
|
/* 56 << 259 */
|
|
{ { 0xf629fb233809aa31L,0xb3b66d77650bd2b8L,0xcb643126bd325d57L,
|
|
0x29f46272ed41fa03L,0x374e734f406ef56cL,0xbb9ecd36da7428eeL },
|
|
{ 0x069694a61c06325aL,0x852b2912e40b9e8cL,0x6504bc90cc3d9695L,
|
|
0xf1af43587e38707aL,0x552127dc239a0781L,0x0d1b3a6e8fe76173L } },
|
|
/* 57 << 259 */
|
|
{ { 0x207e41f31d681018L,0x8883a6e417a7d540L,0xffc48332bc983c31L,
|
|
0x729c4110c6b3de67L,0x5ef4680ad69a2499L,0x4544b58fe7afb2e7L },
|
|
{ 0xf5a2fb13480e063dL,0x8797357382054197L,0x5dd38cf7131d2df7L,
|
|
0x635e91b8a9366742L,0xbd87a407e0d703c5L,0x6cc37be247251f16L } },
|
|
/* 58 << 259 */
|
|
{ { 0xc4ccab956ca95c18L,0x563ffd56bc42e040L,0xfa3c64d8e701c604L,
|
|
0xc88d4426b0abafeeL,0x1a353e5e8542e4c3L,0x9a2d8b7ced726186L },
|
|
{ 0xd61ce19042d097faL,0x6a63e280799a748bL,0x0f48d0633225486bL,
|
|
0x848f8fe142a3c443L,0x2ccde2508493cef4L,0x5450a50845e77e7cL } },
|
|
/* 59 << 259 */
|
|
{ { 0xaa129c0ddc428c57L,0xfe619b75aea19047L,0xd6287ecf12ea77aeL,
|
|
0x4e6d070fdf7ce104L,0xd0df6788f097c79cL,0xd1c1f8a6ad8b1d07L },
|
|
{ 0x53eceba296519e66L,0x71670de3d6274109L,0xd2f21ea03f7a82b8L,
|
|
0x41efbe939c8e45a5L,0xb5b153436ada3edfL,0x32ba22aca90038f8L } },
|
|
/* 60 << 259 */
|
|
{ { 0xe1d195fad0cbe947L,0xd1fe0c4ef2ef1b72L,0x1451a0b206003fffL,
|
|
0xda653fa08239341cL,0x5f834372f2508d75L,0xaeb245f507faeac3L },
|
|
{ 0x3eb3285b65fdf4ddL,0xfb335c0e84085970L,0x600ad6cae5efc0deL,
|
|
0xc9c9f8910cf83e82L,0xf880ff84ad8cc14cL,0x54816725a016aae6L } },
|
|
/* 61 << 259 */
|
|
{ { 0x22ce565ce1124375L,0x30ff1dc5edd968c9L,0x62d74c54e9148534L,
|
|
0xf003f0d35de42774L,0xaf9448e6e57f8842L,0x55d5c9a3c5ff761bL },
|
|
{ 0x7da9398cc4c5edd8L,0x9643424e4ea0e099L,0x497eed480634fcb4L,
|
|
0x09ffe2d07dea57cfL,0x30673ba73530a094L,0xfdbf8f24a251cff3L } },
|
|
/* 62 << 259 */
|
|
{ { 0xd0f4e24803112816L,0xfcad9ddbccbe9e16L,0x177999bf5ae01ea0L,
|
|
0xd20c78b9ce832dceL,0x3cc694fb50c8c646L,0x24d75968c93d4887L },
|
|
{ 0x9f06366a87bc08afL,0x59fab50e7fd0df2aL,0x5ffcc7f76c4cc234L,
|
|
0x87198dd765f52d86L,0x5b9c94b0a855df04L,0xd8ba6c738a067ad7L } },
|
|
/* 63 << 259 */
|
|
{ { 0xf9ae5fcedb877020L,0xd84ad42f703e5d09L,0xa6a5cc1fbfaed17eL,
|
|
0x2099409829362fe9L,0x9f863bb0dd299c2dL,0x82bd3f61fa632197L },
|
|
{ 0xd3b14097ebe7ff51L,0x7c9e6ec4c719a6bcL,0xd3b46f3d70a51db6L,
|
|
0xc8fa2f0692eb8243L,0x68e1f56e02155139L,0x0c35d135fd3b893dL } },
|
|
/* 64 << 259 */
|
|
{ { 0xe76894c3ae7ce296L,0x87737ee2a6cafc34L,0x566dfcfbe55cd1e6L,
|
|
0x5421a9f23a7ad5b9L,0xa005838a4687a4efL,0x3837219a23a2c423L },
|
|
{ 0x4b7800128a82cd1bL,0x401c07bec728b588L,0x2b5f69e937ced8f3L,
|
|
0x306b621d8c1e1eaaL,0x8acbbe71d389cc4dL,0x922fa665f4ab7774L } },
|
|
/* 0 << 266 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 266 */
|
|
{ { 0x2df6f242d35c2d80L,0xf65a99a93493ce97L,0x9e80232b372bcc87L,
|
|
0x26ba13b86e428cc5L,0x2526ef1f13a1b763L,0xcef3edcddc97c5f3L },
|
|
{ 0x4954867fbde16b73L,0x9817813d368ff6cbL,0x7e39fa69be143027L,
|
|
0x12329463cf54f28bL,0xcf0991dc7597c2daL,0x0cda396952e07099L } },
|
|
/* 2 << 266 */
|
|
{ { 0x412f64a3f303955dL,0xe92bdca9bd692593L,0xfbe6cdc2c2e964e0L,
|
|
0xe9a3b1fd0011cb01L,0x6c30762dcf228f23L,0x1270b84abe9199a1L },
|
|
{ 0x732711dfe3c9cbb1L,0xa3aabe37d91d9513L,0x8ee08ba0c6eceba7L,
|
|
0xb1711531f3c3d31dL,0x65060b633c716948L,0x046b4ea12ff2caddL } },
|
|
/* 3 << 266 */
|
|
{ { 0x25d1124fbab220c6L,0xcd1423c861524e3eL,0x75e4f45f0434fb51L,
|
|
0xb5180a8f5180ab2bL,0x144e214e5b22e388L,0x6b16dad192263054L },
|
|
{ 0x3ea7590740863566L,0x372d5abddada3b46L,0xb3ff5a3a893d210fL,
|
|
0x39f8d1ce5e29f3dcL,0x559186ce68200e82L,0xf48764541202cb66L } },
|
|
/* 4 << 266 */
|
|
{ { 0x6f178dbf8b540904L,0x0264bccd8720472aL,0xa6e8b4b459b46611L,
|
|
0xafce8267c72b4a58L,0x21142175a45985adL,0xd23401dfe649d733L },
|
|
{ 0x6bf42fe085dc7720L,0xc5c8ab9440e3f2f5L,0xb0c8a58acd029197L,
|
|
0xa73ff329215492e1L,0x895c545eb1b5a5f0L,0x6dbc24456fcaf49bL } },
|
|
/* 5 << 266 */
|
|
{ { 0x25ef32d60f2d76a3L,0x540650b9af4a7d46L,0x8979a4b8d991d7f4L,
|
|
0xdaa706c299202400L,0x8a729680f19d281dL,0xde25bdc44ec44de2L },
|
|
{ 0x0fc50832c2054496L,0xfee72fb60aaf2941L,0xc8263e64b82ed4f0L,
|
|
0x91a8cb736f49055cL,0xb7585458f2bb515cL,0x03d2b23ab855e6c6L } },
|
|
/* 6 << 266 */
|
|
{ { 0x09ec1e3dcfd3f182L,0x1f1c30b5adae7af9L,0xf3a33f7c6b454164L,
|
|
0x0318926f94647c4fL,0x8e37bdd787db14ecL,0x811cbd342ab364d3L },
|
|
{ 0x1dd1e5077c2b369dL,0x7a57bc46a28056bdL,0xfca5be4b089efe44L,
|
|
0xb3bd84d76dc1290eL,0x40d7af098793e6aeL,0x4e08e11fa3723942L } },
|
|
/* 7 << 266 */
|
|
{ { 0xca3709ad899ffebbL,0x1a87377877c00602L,0x5ff40c2aa99b4af0L,
|
|
0x680464e5a80e870cL,0xd2f7f04494e10b1dL,0xee9b206c4e9aa1a7L },
|
|
{ 0xb536d67596cbe950L,0x841856899e8305f3L,0xae1b669c369fa255L,
|
|
0x62e260267233e1eaL,0xac05c5136aa60c24L,0xdfc6814fd2691677L } },
|
|
/* 8 << 266 */
|
|
{ { 0x8baef5df0a02b0fbL,0x58a2b06bc2b92b02L,0x268558d754c8267aL,
|
|
0xf924f795ccf70393L,0xe3763f30f68ee021L,0xc1e856f05c01ba4bL },
|
|
{ 0xcc01a3e9722b6bffL,0xd2be4623ed5b3b02L,0x1ab3512e6c45e33fL,
|
|
0xa978fe484ef433f6L,0x23e2ea018e21f5afL,0x49647d8811524a40L } },
|
|
/* 9 << 266 */
|
|
{ { 0xd50abc94f5d3f437L,0xbf2ffcc546b7b738L,0x0bf53571f80edda5L,
|
|
0x167908d4ab90ba5fL,0xad445b102303cf00L,0x9b537d4fb9e59406L },
|
|
{ 0xfac5e27cf43049a8L,0x05ccb32ebf9db100L,0xe662eeac4d1b535fL,
|
|
0xbf21d6d78d27ca90L,0xb960bf652a684981L,0xe16bdaee49236475L } },
|
|
/* 10 << 266 */
|
|
{ { 0x47a5958f92ad4720L,0x12c33193da3bf809L,0xf16493147da6d32cL,
|
|
0x42eb4e687102deebL,0x0f8c4ce283088c86L,0xedf91c3bd693c9a2L },
|
|
{ 0x8a18a4761e8c310cL,0x5e8757c5dc3db0e8L,0xc48b820ef76a0affL,
|
|
0x690d788d5c71e596L,0x2b0a00857cfe770dL,0x440ba06bd46505f0L } },
|
|
/* 11 << 266 */
|
|
{ { 0x503f77906087d4d0L,0xc7243aeda1ebfb04L,0x203f0563ad8f14bdL,
|
|
0xc20013b7cad73fcaL,0xbace8b323741a708L,0x0b376ff731bdeb56L },
|
|
{ 0x820b7f1282c22e57L,0x0c08133117830562L,0x306d178a8d0d30c2L,
|
|
0x36a6efd1467a1510L,0x558fea1af55b7b97L,0x1e9152b784e546eeL } },
|
|
/* 12 << 266 */
|
|
{ { 0x92a7fbcdac3ce531L,0xeb85f7f059498d99L,0x8e45db2d02a8feb5L,
|
|
0x176c0cb2728cecbeL,0x33fcfbb0d1837662L,0x426e192dd6f2882cL },
|
|
{ 0x75a0f3450a2c9899L,0xd815dc6066148f9dL,0xf4ea90cefa0453afL,
|
|
0x5108858ff54c96fbL,0x86b46b5731f77afcL,0x59df021f6bf7e2fcL } },
|
|
/* 13 << 266 */
|
|
{ { 0x48d67f73dab6c0f4L,0x70cfc26cf0d49ef3L,0x25c95a68a65cce7bL,
|
|
0x29a05632cf6ad228L,0xbcc2fb5a1a8128f5L,0x360d82a48c9defe0L },
|
|
{ 0x1c5c5d628d1531d8L,0x58fc4b9a149f6b4cL,0x8097cf56a3b625adL,
|
|
0x8821ead7fd8e0e35L,0xb96c2b880d9e1df0L,0xfbf55ba72a243accL } },
|
|
/* 14 << 266 */
|
|
{ { 0xef32e94d70e0d8fcL,0x33ec93dc6d63e65fL,0x134532fb1dc7156fL,
|
|
0x98fb5b0c0e8d85b4L,0x05c28df9b64f7861L,0xa7e73afa4160e1a2L },
|
|
{ 0xbfe60a9b785f6e4bL,0xfcf998f12fec9ec5L,0xf673b8d15c12a44aL,
|
|
0x85df3bc736d189a5L,0x4480a189dd83f6e0L,0x3216317ef3d3ab44L } },
|
|
/* 15 << 266 */
|
|
{ { 0x221c1b7ffd3d7532L,0x40939c318bb4e719L,0x75182ce602f8f74eL,
|
|
0xf508d6415395f9d8L,0x88fc89ea1fc81977L,0x861d8d0bcc8dc7d3L },
|
|
{ 0xd76e4f0cec07b0e2L,0xb0a4e2aa5819b99bL,0xa67bed0366a9c935L,
|
|
0xce7c8241d2781f91L,0xe7c5c22512af0abdL,0xd1067dbcfde7de16L } },
|
|
/* 16 << 266 */
|
|
{ { 0xe1d42d94d087b788L,0xfbfb221aba0e176aL,0x5f6698e783686966L,
|
|
0xbb5e159474a30dbfL,0xef86bb5bcfd20230L,0xf055a1c5403b8f8bL },
|
|
{ 0xf249aac8d9d85ea7L,0x7318f7bc3d200198L,0x3b80960cefca9a90L,
|
|
0xf28e33888f449c4bL,0x0cdfc61bf0cfe09eL,0x3b169c638b22cd26L } },
|
|
/* 17 << 266 */
|
|
{ { 0xf4f13a49b81b45b0L,0xb77a67be3003fe1bL,0x70e648a318d52c97L,
|
|
0x701ba8a1ee17ce93L,0x58a0ce0cf672226aL,0x2fcad147cebc3294L },
|
|
{ 0xf5cd118a104e8f68L,0x0015bc0bd15358e6L,0x75f0d28f1c662df4L,
|
|
0xcd54f443a3e038f4L,0xa83507610804c717L,0x5fce0ce3f03bad08L } },
|
|
/* 18 << 266 */
|
|
{ { 0x4c2e2bffa180a71cL,0x067f3e3baff551b9L,0x007610f1afa43e12L,
|
|
0xe8a9ae79ef7b9a1cL,0xa558ef6cf9d3b397L,0x8d5229884f172f34L },
|
|
{ 0xafa906332d425e05L,0xc62c3914207b0bd8L,0xc84d197c059f7d66L,
|
|
0x6cc1d8ce421a9172L,0x1d44a46929a7ebe3L,0x96ca4d0171c3c8b1L } },
|
|
/* 19 << 266 */
|
|
{ { 0x31302e094d369fd6L,0x62fe210cf1b62d27L,0x496ac173bb37578cL,
|
|
0xb4d3d065aa0907e0L,0x02317db27c822875L,0x60a01580f241ebc7L },
|
|
{ 0x81a5d5244e4f37d0L,0x5286f7289c3f2555L,0x14c8c7549a73ff08L,
|
|
0xd8236689ff478877L,0xf62d426b08e09f00L,0x2ba1833c67a96517L } },
|
|
/* 20 << 266 */
|
|
{ { 0x7013d596831f464aL,0xe57185fdd3cf6ca2L,0xbba7898e35915f51L,
|
|
0x9fbe5f139fd967d4L,0x0aba8344d173558fL,0x4c0dd30dffeb6beaL },
|
|
{ 0x928f68cc5110e40fL,0x1589a327a58b6d60L,0x09b5c4e06abb0ac9L,
|
|
0x01ef3f8a68957627L,0x55dbe9f79f4045a4L,0x91976aeeef178ac3L } },
|
|
/* 21 << 266 */
|
|
{ { 0xd9c20a69b85e46d9L,0x1bda1163cdbda686L,0x5c0717f6c02427a9L,
|
|
0x2a976c104d2a48afL,0xea276b15921a02e5L,0xf055b980ddb6315cL },
|
|
{ 0x0ab85663825f00efL,0x95377fd42053a392L,0xc51c245e23f463e8L,
|
|
0xe1ae1e5da24c981fL,0xd6a0b44d9f5cfdbaL,0x1205754023c16002L } },
|
|
/* 22 << 266 */
|
|
{ { 0xfe464ce116ac9150L,0xfd629551173ee9e8L,0xd0623ab1781696cfL,
|
|
0x7a07cedd58529fa9L,0x831b4a9d449c33a0L,0xb7b7b72417b171a8L },
|
|
{ 0x0e1ff931f5a9aa41L,0xd43f33dfe356ba47L,0xd2abfc77f003b5d2L,
|
|
0xc2909150882c0313L,0x83823f6c7ee111a6L,0x9d7a2d82f59cb72dL } },
|
|
/* 23 << 266 */
|
|
{ { 0x52e712549b33f6fdL,0xd4d9b73f5c414babL,0x9834943177e93a9bL,
|
|
0x848b53c99f283fc9L,0x86e48b6234c787efL,0x8b498e1cb3166045L },
|
|
{ 0xb2259559e5e456ddL,0x0316069fa2c2ca8cL,0x9a70e29ef6524ecfL,
|
|
0x2477ffc9bfff600dL,0x80a9a5e081869e1cL,0x84f887e70a78f6a0L } },
|
|
/* 24 << 266 */
|
|
{ { 0x7f89c2c40c9f23eaL,0x8fb025d4d6ec2b2aL,0xbe70e48b12d9f811L,
|
|
0x703ac1bdc7a43dd0L,0xa4309a2c2118ca3aL,0x5a95d7b301943012L },
|
|
{ 0xd9597d87811f6c73L,0xf82e801596079992L,0xfcf8760df1561aa9L,
|
|
0xe1e0306e2d91ee39L,0x99979031e0bbcb6dL,0x49259e54cfcc8746L } },
|
|
/* 25 << 266 */
|
|
{ { 0x0de49373a38fb6dbL,0xda9e9036d6bf0a7dL,0xc99fe05fcba221c4L,
|
|
0x45b51edd4cb730f8L,0x312670a3b064e142L,0x60dd1edecddb9ddeL },
|
|
{ 0x94be613b9291d75dL,0xbc49861ca00b9831L,0xccec7a08230320bdL,
|
|
0xd1de7bd80ff967b1L,0x5a1164f105fda7e3L,0x864cfc4ce3004538L } },
|
|
/* 26 << 266 */
|
|
{ { 0x06f76165385095a7L,0x3c73ac918514b2e0L,0x8ac1120a04b2dac0L,
|
|
0xed6a74174382d5b3L,0x852a5a7864a32d50L,0x7ef5b84bbdc721acL },
|
|
{ 0x73dd18980480d271L,0x755b23e04ab0b11dL,0x2e78238982391e5aL,
|
|
0x4957b5c948923446L,0x4ab9318f6921c1fdL,0x8e455abd3e46607bL } },
|
|
/* 27 << 266 */
|
|
{ { 0x5c41aafbaf25d6b6L,0xe351f1df916b63f6L,0xe28e9ba98a6efd65L,
|
|
0xcbca736356afe7b0L,0xa77d6077f7384e6aL,0xcc9ad74a738a90abL },
|
|
{ 0xe1071caa2333dc2cL,0x4415691000dfc2cbL,0x0ce43c16afd89eefL,
|
|
0x0cfbb8767b812045L,0xe6da40fa6d916fc7L,0xe404b3436302af21L } },
|
|
/* 28 << 266 */
|
|
{ { 0x4073f246d9915433L,0xc0149d5672e06203L,0x0abb06c18fcec6a1L,
|
|
0x3a7d1295d75a73f1L,0x65fd8700f18c9488L,0xc3cc0b27732f7741L },
|
|
{ 0xd15d8c8025a261caL,0x518233510dc1fee5L,0x981607c7120e1266L,
|
|
0x0e486b11f42cc9fdL,0xe606c16c01a888cfL,0x079dd0b31ea23249L } },
|
|
/* 29 << 266 */
|
|
{ { 0x19c62d3c58624305L,0x44974c41b73eae15L,0x2df48b6dd023231aL,
|
|
0x6a82c197c6fad2d0L,0x55758764c623fdceL,0x29f533fbadcebd90L },
|
|
{ 0xcfbe4155cfff7336L,0xb18415c7bfb609fcL,0xc23395ad8d411a6cL,
|
|
0x25aebbcf0c92de60L,0xf4d3b1ebc5ccf268L,0x9646b4a79ac85de3L } },
|
|
/* 30 << 266 */
|
|
{ { 0x0f423f3013d6cb61L,0x239b2baa66674aceL,0xa6f2ba39eda69340L,
|
|
0xdbbd20eb43e6918cL,0xe6ce84a3e5e7248cL,0xd9184bb5e04c580cL },
|
|
{ 0xe4b76d96a0738aedL,0x98662b6090d480a8L,0xfb14bec72610b6c5L,
|
|
0xdfcb01f6bb65837cL,0xd7f0b6ad4a97fb21L,0xe6d84f4bad59b2ceL } },
|
|
/* 31 << 266 */
|
|
{ { 0xa79085eb1f7e921aL,0xe2737a08d0aeb41fL,0xa96d7e8169ead959L,
|
|
0xbed1731b733b7c6aL,0x7768e32df508a48aL,0x6f73a08651ccc97aL },
|
|
{ 0xb7f94a4b9122db73L,0x1cd17ca257ec947eL,0x7c83fe278f8445f1L,
|
|
0x661f5d82b520fe34L,0x495354942233d364L,0x0bf7abe663925ca2L } },
|
|
/* 32 << 266 */
|
|
{ { 0x923e948c203bb368L,0x58e37a2b231a80e0L,0x345a011a6df27debL,
|
|
0xba6784c1d57f4ca2L,0xf01b3703114196e9L,0x981a63eb1aab426dL },
|
|
{ 0x2ffdc97851770c1cL,0xddd19da6efa722fcL,0x5ca1c01216f09c1eL,
|
|
0x612021de5b9cc0b6L,0x910e10e95e150569L,0xacace9dce2ab93eaL } },
|
|
/* 33 << 266 */
|
|
{ { 0xf66601a7aae13423L,0x940bcd2882cf3308L,0x55de590974f632bdL,
|
|
0xf677d9d4f183faeaL,0x54026b2828ab364cL,0x2a5353dc743469edL },
|
|
{ 0x15f02aadd46871d5L,0x4b3ec89b5a2100d1L,0xca85c3681eb9c381L,
|
|
0x145cc7fd50e78466L,0x75fdac98c4b4cdf3L,0xb7cb9170796136f4L } },
|
|
/* 34 << 266 */
|
|
{ { 0x6e89c0df54827957L,0xafb26b6d05805250L,0x0c0dc4ea37343465L,
|
|
0x2d3c8b873daca876L,0x733b23d9554a2cd8L,0xd4f2936a6a04d38dL },
|
|
{ 0x0937611686f90d9aL,0xcd854d3211425591L,0xbaf9d4cab55b4bf3L,
|
|
0x47259b95144676c2L,0x765cc4b55d7d2835L,0x36e47a8882b2cbafL } },
|
|
/* 35 << 266 */
|
|
{ { 0x2070db373af8c96dL,0x4c2db2623b70e976L,0x7ed4d1e9c01f404aL,
|
|
0x04a52764b39d2e07L,0x06e4a7984ebe3ac3L,0x35c9c1f68d7645a7L },
|
|
{ 0x2e0b48c75e9c295dL,0x5d44fafaf78e0717L,0x2fc27eba04213067L,
|
|
0x9f3fb2ff2ab0f0e6L,0x374b32fd0c730af6L,0x06ec846129583945L } },
|
|
/* 36 << 266 */
|
|
{ { 0x583a3272230be37eL,0x4d3298951c55f593L,0x3b3a2d8a350f0334L,
|
|
0xec830170b25498abL,0xd65847d9b3a01571L,0x4605e739663f86fcL },
|
|
{ 0x971b8e115c4bf502L,0x651d179571a892b0L,0x57930832d2d1a4f9L,
|
|
0xf97010745b09a4c4L,0x76b023e55ec2d1a6L,0x8648b8bcf49e1329L } },
|
|
/* 37 << 266 */
|
|
{ { 0xc5a8884d6d5c7411L,0xad32aa97d098e2f2L,0xf99569e945d8ad00L,
|
|
0x35801c1c0a232776L,0xe426fd65fb1a2cb2L,0x874b559ecb26ae10L },
|
|
{ 0xfa67c2ddf44461b8L,0xc58f8d229418e17cL,0x5998197169908eddL,
|
|
0x8a4a14b8a1f78300L,0x4814c36e61f7fbc5L,0x0389dcc716a1c7adL } },
|
|
/* 38 << 266 */
|
|
{ { 0x777e308fc072cf71L,0x4a2d66928c807ed5L,0xa4fe074124842689L,
|
|
0xa3c2a867151ed7b1L,0x52ef24f24d22ee35L,0xe684ac76499053ddL },
|
|
{ 0x0b7c223b0582cb86L,0xa6c18539bb81f713L,0xb472da7f66d2aab9L,
|
|
0x3592ab7b7916d4e5L,0xed651a05770c49a1L,0x7b879da1c0256420L } },
|
|
/* 39 << 266 */
|
|
{ { 0x82eeaa1496f83e29L,0x586f3e8de5cae8eaL,0xb671eddbb298eb5aL,
|
|
0x41efea86dd0da080L,0xfe9af019564a382eL,0xb2f370463027693bL },
|
|
{ 0x65466e5018789c0fL,0x5b0870ac2ebfe89eL,0x9093f416a59f3a53L,
|
|
0xab0cd17251864c77L,0x8e3aa9864481457bL,0x46cfd207896346a5L } },
|
|
/* 40 << 266 */
|
|
{ { 0x473bdac887cb6ae0L,0xbd3001b3f155c32bL,0x109643c20026e8a5L,
|
|
0xc4f5f6cc188a568eL,0x630aecf64d2758e0L,0x4549949955b91872L },
|
|
{ 0xb10f19d4b6a09df6L,0xc537a4bb37f26d01L,0xd29f505c4d19a293L,
|
|
0xf388a5d2cbb09b17L,0x462efffc6811a49bL,0x8a1cbc40b2f3aef2L } },
|
|
/* 41 << 266 */
|
|
{ { 0xf7d94342b7b42998L,0xcdfd6e43629089abL,0x622e8d3cf7932661L,
|
|
0x4818adca0b14b257L,0xcc1dcd1ccdb486bbL,0x58b6cb7ecce8b358L },
|
|
{ 0xca36c0b4e640cebeL,0xcc5598942d25f742L,0xdf4f2a9ed754d3eaL,
|
|
0x072eb5e5f44a8604L,0xfa7b1a03cd5ca1c5L,0x6b6b4967d4779eceL } },
|
|
/* 42 << 266 */
|
|
{ { 0x0f0233df8665f6f2L,0x8cd887463bd40f39L,0x23a41596eedf8d3aL,
|
|
0x3f50e3f0b5ef5455L,0x935b24e0a50cd358L,0xfdd0e940d362a9a7L },
|
|
{ 0x6b00a6d154371aabL,0x2e707c4e1204bcf8L,0xb4d2d2dc30233f88L,
|
|
0x470c3201783e58efL,0xf53987865ac21a16L,0x278487d626c3513eL } },
|
|
/* 43 << 266 */
|
|
{ { 0xab5ac4df7d40427aL,0x0c4fb23b66ebdcedL,0xb02f8632b87df612L,
|
|
0xebbd2e7f1801700cL,0xdd11de725b675e5bL,0x2adfb20662d7210fL },
|
|
{ 0xe3ba7c0e28667b70L,0x3e190a438fe31c22L,0x57908f2bc3390733L,
|
|
0xe9e8714ccb6fefbbL,0xabba506dfd51c513L,0xd50f979f6b798860L } },
|
|
/* 44 << 266 */
|
|
{ { 0xdf224cea1eed2b0bL,0x10205f438814572bL,0x8b99d85c02eb9b6cL,
|
|
0x7a8a3d146c63a672L,0xc8822c6c96f45695L,0x0530f619c7f532f5L },
|
|
{ 0xb981e182310f8355L,0x49318290f201444cL,0xeaa4c406f9b76d19L,
|
|
0x960fa2c7534a91c1L,0xf98966d1522b7d9dL,0x66912542c757dbd6L } },
|
|
/* 45 << 266 */
|
|
{ { 0xe265972e1fe73a1aL,0x77e234c2987a1a34L,0x1814bdfe8c5789c0L,
|
|
0x908f55c7df2ca0d7L,0xec207eb2a6a50ceeL,0x63cfeaffee916760L },
|
|
{ 0x808a758bf466a1b8L,0x2a48112d8383b0afL,0x5238922ef1a4ca6aL,
|
|
0x5c422786778de666L,0xf5a8c6b5d2f549ecL,0xcac5d0c5242bbc9bL } },
|
|
/* 46 << 266 */
|
|
{ { 0x33e0e005b34dbf06L,0x7bbdbe1e1fb341dbL,0x443fde882bab5425L,
|
|
0x9db5bf1a86b57cdfL,0x72c535c309a93848L,0xf7aa9432b5f216ceL },
|
|
{ 0xc17dc7ae0242308dL,0xf1cb5dc5db0e4c0cL,0xb9d16d58a2b7112eL,
|
|
0x486cda07ee4494b5L,0xeb46ab545d431adbL,0x3261dc5181ab565aL } },
|
|
/* 47 << 266 */
|
|
{ { 0x476a4bfaa2a8a081L,0x43c5f841394f851bL,0x659baa591f5b22ddL,
|
|
0x49a786aa65f680efL,0x091bd21608fcb9d8L,0x13f6953d984fe1f1L },
|
|
{ 0x7b5d9f4b6d6d40a3L,0x2f135dcf0d458d54L,0x2da18c3d3a71204aL,
|
|
0x3d93edb97a3486d6L,0x026fec7261846af9L,0xa62197bcd5200dcdL } },
|
|
/* 48 << 266 */
|
|
{ { 0x0cdd83725070e0a9L,0x7c5ad562ec550783L,0x9652b8474f3b8d2bL,
|
|
0xfdd60d93e6e98d73L,0xd51cae2ca3479d0bL,0x11b93b6dee05c006L },
|
|
{ 0x9d72b82d8a3b40d5L,0xc6e996fea7d24855L,0x420672f7398603deL,
|
|
0xd551b34a9a1af2ceL,0xdeb8c1d913bdce0cL,0x56ca926debbeba7aL } },
|
|
/* 49 << 266 */
|
|
{ { 0xf63ec096bb85ca8aL,0xc149664173bc52f2L,0xba792560c02fc808L,
|
|
0x9a6043e3533c6523L,0xa9d78f0aa8564390L,0x7fef67e494614bc7L },
|
|
{ 0xb4091b8fd389234dL,0x5913368e82db1d08L,0x178f7df0981cc6caL,
|
|
0x19b1f2be725ec048L,0x852aad85012f9c44L,0xb07cac0dc894e777L } },
|
|
/* 50 << 266 */
|
|
{ { 0x1c1709d02c7e0767L,0xec1013234d70b117L,0x95c57e678beb8e05L,
|
|
0xdbf29e2e1133fa4aL,0x917f4a6c5139e020L,0xcf0be5098399735dL },
|
|
{ 0x83014c169c878b4aL,0xe0c14d2cf789b84fL,0x222aba39165a4aafL,
|
|
0xe135f2b384441391L,0xb6f1cf7e19c3ee07L,0x2f918da9f810499eL } },
|
|
/* 51 << 266 */
|
|
{ { 0x026ee35816bb2bddL,0x8c8953f8566d8470L,0xf0cd746d0fc63932L,
|
|
0xddf3e54f060a07a3L,0x8da877a643b4e92dL,0x7ffd839dfdc9e34aL },
|
|
{ 0x5c3527445df04d9aL,0x3c5eb576b69f84e0L,0xf73cae300848d993L,
|
|
0x3438f2bea0fe7fdbL,0xd4e7511f0eaf0168L,0xa7ffd167c768386aL } },
|
|
/* 52 << 266 */
|
|
{ { 0xbb91877acfc74bb0L,0xbe742182a060a71eL,0x116e5a626ed7786cL,
|
|
0x0a496b1bea669e56L,0x3a012174b8f02e6eL,0x6add760c106174f4L },
|
|
{ 0xaf2606e05e0292cbL,0x7800a495c7b7bad0L,0xca02c9320a1c5954L,
|
|
0x904f23c6b245ad57L,0x28d6cc2172934de5L,0xbb7ed903283752cdL } },
|
|
/* 53 << 266 */
|
|
{ { 0xc80288125e58122dL,0x7a5c65f1c4b089caL,0x4ddfd3663b980faaL,
|
|
0xe8129f7f96a909a0L,0xc177aa042221ffacL,0xaf444ef78ff46e81L },
|
|
{ 0xa627f3d76b154996L,0x0f06fa7b115e2a5dL,0x2532b85d43fdb775L,
|
|
0xb6d96b32eaacfb58L,0x898766304f834382L,0xfd2ffde9d5636b92L } },
|
|
/* 54 << 266 */
|
|
{ { 0x318cf974973757d0L,0x12882d0a94ac73a2L,0x1fb74a53bc250843L,
|
|
0xc612569eccd8d47dL,0x74cff8789d5f7c8cL,0x54e0e475375a7366L },
|
|
{ 0xe8322d23d0f57cd4L,0xb6ec5666d95a6e0fL,0xc8374b254a4bd084L,
|
|
0x9459181b349d93ebL,0x7011f0a61368b9a8L,0xed57a19137eb2833L } },
|
|
/* 55 << 266 */
|
|
{ { 0xd245d180fa5f79acL,0x44c331f35b41fcb3L,0x13188b6e27ee6c0eL,
|
|
0x54ce984b23fdc742L,0x66d4e1303c81c213L,0x432174030ecb6fd8L },
|
|
{ 0xbbeb09fe111ae08bL,0xb22ca6b42e2df05cL,0x0e9d01dd0fec9be9L,
|
|
0x9ac4523dfd2fc4abL,0x3d9e98c8fdc059f5L,0xd52e6dfb2d2cbde7L } },
|
|
/* 56 << 266 */
|
|
{ { 0x80d7ef8598100f17L,0xb9795c7112db3f3aL,0x44473659296a7c44L,
|
|
0xa46810f21e5bf539L,0x5621241814ee1e3bL,0xea8284e209931822L },
|
|
{ 0x424c613e42ac1e42L,0xe84a80afbccf9466L,0x21a8cdcc45132204L,
|
|
0x9505a4148d58da62L,0x773e09837b3f47aaL,0x0ad0cc91e109bc6dL } },
|
|
/* 57 << 266 */
|
|
{ { 0x98e2509bb527b250L,0x2dd30c824a9c762bL,0x54025da4cb2a00a2L,
|
|
0x88ed00ff04d8e0e9L,0x5699890219ab1fadL,0x92fffc41697b0226L },
|
|
{ 0xb481d1ee7d08a39bL,0xea773f7f82be0803L,0x967e848a6de8ec6dL,
|
|
0x6ea1e46380293472L,0x941cded72e988de3L,0x85f96b23399da6b5L } },
|
|
/* 58 << 266 */
|
|
{ { 0xabd86572f1a62473L,0x9ec25d0bec274738L,0xd27d1a8c2052d4ccL,
|
|
0x1f2a2a9ba95de3f0L,0xe3b8652ea2c91bcaL,0x1a4f6900822175deL },
|
|
{ 0xd9405d4662475a44L,0x4ecbe06cfe55c587L,0x30f8d199a4ac2f35L,
|
|
0x2a5defd8d3c12844L,0x6d0fd9d673fe9b7eL,0xb0ae1019adf1a196L } },
|
|
/* 59 << 266 */
|
|
{ { 0x6c9a378c30734f5eL,0xdf04359f6aaf7b42L,0x244422fc16f87409L,
|
|
0x81dfb15b08bcd67cL,0x24b7d083a5e4a8e0L,0x557183410431786fL },
|
|
{ 0xc8feeb8c33f3ec2eL,0x360098cb2be371a0L,0xf4f3d992bdb874ceL,
|
|
0x47b432ed87af8471L,0x5c4b1dbdf87535deL,0x6bb6d6dd8301f660L } },
|
|
/* 60 << 266 */
|
|
{ { 0xafa9338759769f77L,0xe6c710cb49e502b3L,0xe6fd7b8d1514da98L,
|
|
0xb5924c63aedf93caL,0x4cc36795c112b37bL,0x0ee30ce3231def42L },
|
|
{ 0xe1f436e7daf8a37eL,0xed54b7f56efa184aL,0x09ad65752c0dfe63L,
|
|
0x5ed9da43ca530b38L,0xea2fa192ae156274L,0xbf096c54a4429edaL } },
|
|
/* 61 << 266 */
|
|
{ { 0x41401b98f54490cfL,0x361a24a143b21183L,0xf0176431b6570f0cL,
|
|
0x851bfe9d05c8bd3aL,0xe44f4ba74611e1b9L,0x587677dc28bf2c27L },
|
|
{ 0x3e3b67886d85341fL,0xad65a69468aa381bL,0xd269dc711aecf19bL,
|
|
0xb94b64a2d98e6a2cL,0x6004b569a94661a0L,0x81713a8e689181d5L } },
|
|
/* 62 << 266 */
|
|
{ { 0x55b1901d3649638eL,0x2e9929c416abaf64L,0x2d2b160ee9cd0090L,
|
|
0xb5ef6525f55f13ccL,0x447aacbe11c3e8a5L,0x2c54e602630cf4c4L },
|
|
{ 0x3f6d99fc641d8eb3L,0x35386c1384877912L,0x7195db8973f31b6fL,
|
|
0x63297cb2d3a22085L,0xa627593833fe97cbL,0x2f9a6f0da1eaef0aL } },
|
|
/* 63 << 266 */
|
|
{ { 0xb70d7683c63d6dd3L,0x60ea781084acedf1L,0x7646260c40d62cd0L,
|
|
0x687000b456142a6aL,0xce3c4728ccb9177bL,0x45377d059928c509L },
|
|
{ 0x75cc40bb1a78af0dL,0x43a1661cc69e59fdL,0xf9bbcbf8044a943cL,
|
|
0x934fd40d7c372080L,0xb6edae96cb2eb940L,0xa02bb5fd6e063cc9L } },
|
|
/* 64 << 266 */
|
|
{ { 0xac58c9e09db9ca19L,0xd308ea5d390054d0L,0x32ef4afc2cc42529L,
|
|
0x08bd48b397c2bdf9L,0xac8a7803a849e19aL,0xcd51c0da75c31496L },
|
|
{ 0x733dc7def0e2d49fL,0x7c9caad1b44b8cc5L,0x6d9c5b0847be21a8L,
|
|
0xfab0fdc55ebf426fL,0xd60748caf94e9e5bL,0x3072e59269366089L } },
|
|
/* 0 << 273 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 273 */
|
|
{ { 0xb06c17a3f0ef77c5L,0xc144e7846df6bf59L,0x2440ae990038aeb2L,
|
|
0x83bf711b58b402caL,0xb8763e00b577732aL,0x509e91eff651a932L },
|
|
{ 0xbe02ab9d00ac109eL,0xfbcb426c8dfd78f1L,0x7ed272f64283f80fL,
|
|
0x098cf0572365da5eL,0xd90e6f1805dc6bebL,0x09ef177fcf7b9d72L } },
|
|
/* 2 << 273 */
|
|
{ { 0x6f101762eeb791c4L,0x0d942184df261effL,0x2c58e2aaac1dc827L,
|
|
0x51410e89f835a1b6L,0x981333a7629915a4L,0x371891b60c14148dL },
|
|
{ 0x4d20b3d3c0904446L,0xdda7ecc8949776d8L,0xa664b68c2a2645f7L,
|
|
0x7a6bc857add082eaL,0xe7467dc63e5ff206L,0x40a6c34004e2dfccL } },
|
|
/* 3 << 273 */
|
|
{ { 0x3d0efae3106ba1a1L,0x9c717ca192d7be5aL,0xa5cb5a253f00eeeeL,
|
|
0xc2f9258cd86161ceL,0xd2b0865f5c4a389aL,0x8c06d7689b1f2159L },
|
|
{ 0x5a758a612753107fL,0x5ab6449d0a539c19L,0x88655a4949d301c8L,
|
|
0x129647e61c4bb89bL,0x06f0665ec360259cL,0xcdba2f0b066197d1L } },
|
|
/* 4 << 273 */
|
|
{ { 0xa235456903744726L,0xd2169e6dd8d275acL,0xab0c247b132c5689L,
|
|
0x129a5c9dcc4760bbL,0x03eba46726ae821bL,0x67a33fda3df1cf83L },
|
|
{ 0x010813cfb8421b7aL,0x7b0f507098cd6d76L,0x907320b31fe4b600L,
|
|
0xda3bfeb398dd3239L,0x23f1ed1641abb34cL,0x01b30f29946f85f1L } },
|
|
/* 5 << 273 */
|
|
{ { 0x97c5f1c7d3970d9fL,0xd051c518ac8e6227L,0x3f67b3958e87edacL,
|
|
0x3a5cbd287b9e4c17L,0x58c009e65671841dL,0x7bc5bddb518b3b39L },
|
|
{ 0xe7a8a6335e74a614L,0xf92e4c226ed89a92L,0xd0d6e80a118e663dL,
|
|
0x33dba4f9dcbb4aecL,0x1d4cb3141f917417L,0xd8b17bfa3b0c5859L } },
|
|
/* 6 << 273 */
|
|
{ { 0xc0fa0d21a093c3e0L,0xad34c41439e902a2L,0x81c8cd7599bc928bL,
|
|
0xf7f8be14cdbbe4d8L,0xe46268b5c2339529L,0xcdc54e348283ba7dL },
|
|
{ 0x4c5cf62778904fe1L,0x056678c11b45e4d2L,0xb555ad6ad265abc2L,
|
|
0xb8f8ca3f830306efL,0x48c8764681c20e1dL,0x5bb0a529737a7944L } },
|
|
/* 7 << 273 */
|
|
{ { 0xbd4c2bfc9cf6fc5fL,0x888885140577af66L,0xb5aa2f05f9e3f7c5L,
|
|
0xbd477bae64de6007L,0x1da5dcc9747e1224L,0xc2293d1732a15f5dL },
|
|
{ 0x4dd9daed029d6cbaL,0xf51362d62cf299c7L,0xe1a4b5c4279cd1e1L,
|
|
0x4b129a5ea89acfffL,0x8292228ece1c8744L,0x5a440fa04fd12c86L } },
|
|
/* 8 << 273 */
|
|
{ { 0x285248309666f8eaL,0xd579b3dfeff6502bL,0x3a66fa9900e4f78aL,
|
|
0xfd8a65bb54a3f7a3L,0x505d3f631965a79aL,0x9524972c1891469aL },
|
|
{ 0x78367cbc3354da3aL,0xbfe1fe3de4941c6eL,0xe41bb3f6f5af173eL,
|
|
0x57cb03ca5ca36597L,0x27f86cb87b99f795L,0x5cae6514ad4dcef1L } },
|
|
/* 9 << 273 */
|
|
{ { 0x4b43f0aef1743346L,0x1700581944324c46L,0x86c77197e3603fcaL,
|
|
0x230d516f4a6858aaL,0xee965b4ee7c56f7fL,0x4f4ed301dcefb75aL },
|
|
{ 0x610b138c4a740b23L,0xda3996a83ffc3599L,0x930698fcb2d1c304L,
|
|
0xd55bdcd3702bf80dL,0xdf767c419e334726L,0x975352a9d0e819b6L } },
|
|
/* 10 << 273 */
|
|
{ { 0xc117353b5e816653L,0x0c87bebe820641d5L,0xee588c6d9ecd29a1L,
|
|
0xacdfe622c70edf9bL,0xe8b8024cebae414bL,0xd0c426dc9bd7ceccL },
|
|
{ 0x715cbc2efe735ce7L,0x8376edebc5e7017aL,0xe9b37efc07990dd5L,
|
|
0xc89e384ed8d75238L,0xbc594d218438ffb3L,0xbe77e4d4d3628473L } },
|
|
/* 11 << 273 */
|
|
{ { 0xc53720cdd1b4f3baL,0xb8ac3b4fadf2a330L,0xcef037f5fe179e70L,
|
|
0x2743b382589d9147L,0x77a094d624423d58L,0x9e34c2e62a23d372L },
|
|
{ 0x641ea760983a5893L,0x2211e6a49a81548eL,0x56578a1a48735310L,
|
|
0xedb91e03a57faa83L,0x4e14d5649b133629L,0x341f3ef957e82ff7L } },
|
|
/* 12 << 273 */
|
|
{ { 0x4952a350d87a86c9L,0x08ed7da7034f45f9L,0x1e9ff8272bd716d0L,
|
|
0x2471fd15f1d9331fL,0x0c708362d7370b75L,0xaddedde6fc1a1051L },
|
|
{ 0xf4475288db27b186L,0x5be4d46b3760bc11L,0xe44435d906d47ee1L,
|
|
0x865cf7c8d0b7c8a2L,0xdb412be08d31a252L,0x4b90a9322f24d71cL } },
|
|
/* 13 << 273 */
|
|
{ { 0x71b84eed8f7a3ab9L,0xf41d7edb2dc18004L,0xe408156dcc4a02cfL,
|
|
0x0be155a25cd906caL,0xbf4b0f6991516399L,0x2ea85d434a7ff94dL },
|
|
{ 0xf199b31da26e9974L,0xc584df250b805ae3L,0xd4e7e8597a3634daL,
|
|
0xf553f07770db4be9L,0x1cb1056fbf0dafa3L,0x235281b2a817d6edL } },
|
|
/* 14 << 273 */
|
|
{ { 0xc3304e9260d2b80bL,0xab24dac9a38753bdL,0x40373d04cc1ebbf8L,
|
|
0xa5a162d3437e68d2L,0xc8018b1257e8db12L,0x0c99c6de9bb52643L },
|
|
{ 0xafef0ff6ee24e63bL,0x329c46264bea9a14L,0x1b17d2e6effae4f9L,
|
|
0xd25b93aaee300afdL,0xe83bfdcba0d62da4L,0x5e919538fd787740L } },
|
|
/* 15 << 273 */
|
|
{ { 0xf5bbb4fe196c38e7L,0xe0011deca5c75baaL,0x2e29fe59b835aa49L,
|
|
0xee22e2864230f17fL,0x8774214ff94c1060L,0x35bcca38e6d4c126L },
|
|
{ 0x18d984dbb7c9d255L,0xb1d5515c9b63dc4fL,0x425360f12a0cb854L,
|
|
0x038c7f2317a1e286L,0x5e6b12ce951f18b2L,0xabfbde5ea65b1de3L } },
|
|
/* 16 << 273 */
|
|
{ { 0x38a49bf555f0ad9fL,0x1a84c6b8f3618639L,0x5f709eca01b2f7c2L,
|
|
0xc479a6505be8359fL,0x6b6a22bfd6646b3fL,0xcce78878cc5b711bL },
|
|
{ 0x8e7dbc63b446cc63L,0x231bd027218f800fL,0x2d3a7e04030271ebL,
|
|
0xb08b5978e22fb3c7L,0x860d62789be0d46cL,0x253a31c21d49a915L } },
|
|
/* 17 << 273 */
|
|
{ { 0xab4dbdf36ebc28e5L,0x56d5fec527be58b5L,0x6e9375d3cf3fd509L,
|
|
0xfffea897ca4ddf48L,0x0a9542ae6a3757c5L,0xb9069a2e7d93911dL },
|
|
{ 0x3e74ac5f3dc967b8L,0x99c38796ea8f5a21L,0x27797b97a6ddea53L,
|
|
0x9501e1c561dfcc1bL,0x568d3abe448e95c5L,0x021f8f4c0e7c186bL } },
|
|
/* 18 << 273 */
|
|
{ { 0x98aa1f7a6e44f63dL,0x6451b170cb597ec9L,0xc0f6ee8721e13b78L,
|
|
0x36c3b9c751cfd003L,0xc31718ed2f610040L,0xdddabc6688c48009L },
|
|
{ 0x5626f090a8369e4fL,0x0eccb1c06004a968L,0x2f0448035da2f1a4L,
|
|
0x5390b6dd3846a726L,0x5c4caffea24f3083L,0x3c9baac8c4842995L } },
|
|
/* 19 << 273 */
|
|
{ { 0x58c5fd1205c7a75dL,0xa98007fd10866935L,0x91369e874acd567eL,
|
|
0xb7e05dc322c6145aL,0x24c949b4d949d8b2L,0xc5c574a590a6a437L },
|
|
{ 0x4306f0334798d1d5L,0x82af09f4520e01b3L,0x53fab41b81247f00L,
|
|
0x3096ccf44ea93cbfL,0x9665e039f13ff09eL,0xb623f8b158e036d9L } },
|
|
/* 20 << 273 */
|
|
{ { 0xbad6b669376bdc3fL,0xc4a8e7bc23a9ff38L,0x3f54d8c4555fb0a3L,
|
|
0xfb3d5e1d2b23db1bL,0x6379f78af0d7eba9L,0x36004febfa0beffaL },
|
|
{ 0xdf0a373c334ff01aL,0x10314749dff12a1cL,0x1d52ddc7f184c1b3L,
|
|
0x79431663ab02d404L,0x1a6488c17f4d3795L,0x3363660f7cca9102L } },
|
|
/* 21 << 273 */
|
|
{ { 0x1e4595c6db3e57d9L,0x49e3d3d9bfb94ec5L,0x4c720de1a4f12881L,
|
|
0x91a08340b06c64e6L,0x8e5c72f0ef0857deL,0x2c9b4cbc09bb76fcL },
|
|
{ 0xd4262fe4b0bba8bfL,0x64c5fa1439fcd07bL,0x518da4de62904ceeL,
|
|
0x626182ebae4c9717L,0x900fe9f806351622L,0xf74aaa2241f9e4d7L } },
|
|
/* 22 << 273 */
|
|
{ { 0x9d2c02839fabb29bL,0xb27ac46e172348cfL,0xddc6fb63de1f64b2L,
|
|
0x532dc953bb097c87L,0xc7f5180cdaa34e27L,0xf96e4ad755438893L },
|
|
{ 0xc0b2eba324f54a0bL,0xeba396ce5b50d12eL,0x80b3a7f699772783L,
|
|
0xe2fa82ff3ff7df4aL,0x55375369a2359baaL,0xa28388ed856c05bbL } },
|
|
/* 23 << 273 */
|
|
{ { 0x4432fe8495a2d064L,0x4c6380747fec6057L,0xc33705bb33cfb533L,
|
|
0x5e7fb7c976991cfeL,0x73d249bdb3ac1b6eL,0x963964c896aeddccL },
|
|
{ 0x8c1abe0e56b71636L,0x6ebb841f38693cd1L,0x00ef6a7b60e7cf67L,
|
|
0x29ecded2c258bcb9L,0xb2d566a5e40fd26aL,0xa2910f4ed512abffL } },
|
|
/* 24 << 273 */
|
|
{ { 0x56d6515604dc109cL,0xcd740cc809c1d307L,0xef9e049f10dfaeadL,
|
|
0x19750b3ae30b70b8L,0x11ed860015c6a562L,0x53bdf97e12097026L },
|
|
{ 0x79559d056c0d908fL,0x8f1d75bab506d527L,0xd6fd7323ae8fb3c4L,
|
|
0x834639c9a4111f88L,0xfc69a029a310a683L,0xa4467bbb255f2e9aL } },
|
|
/* 25 << 273 */
|
|
{ { 0xa809a063e9e3953fL,0x09242dc960dc53fdL,0xa48f52d00080c436L,
|
|
0x762a585dad2eb70dL,0xc6d52f047a3c6aa2L,0x1b6979dcbe60899cL },
|
|
{ 0x7a07af246d760794L,0xa5b1f912ef5c1118L,0x36367e4375bb329eL,
|
|
0x594f349029e6bddbL,0x13cdc4aaa4a4f1edL,0xa7c3ff97b687a69dL } },
|
|
/* 26 << 273 */
|
|
{ { 0x1e79881146f7c4c0L,0x25730855946abf8eL,0x1741fdeeaac2031eL,
|
|
0xef34715b72ea60b6L,0x378eb680350ddcfbL,0xe72ac880ec237141L },
|
|
{ 0xb173251fff125bf8L,0x37ffb0cf4999b6daL,0x9eeb91a8817779f6L,
|
|
0xa9edff0ae93ed1f3L,0x31f2ca241d7772d6L,0xd25c3f3b97f67b92L } },
|
|
/* 27 << 273 */
|
|
{ { 0xb6c4144381478e46L,0x7b53d46350cf8795L,0xe96e7cb9ca5bf2d2L,
|
|
0xc8fa39c695ac9ba6L,0x8ab037d12efc83d1L,0x0ccacbcc94bc2536L },
|
|
{ 0x45e7c7c774038e13L,0x47d5b7292f5e344eL,0x2e0ffb2cb1eed282L,
|
|
0xfe88d3a88d5d0b37L,0x804b612e2487d971L,0x6f316d66c95d08faL } },
|
|
/* 28 << 273 */
|
|
{ { 0x5f0a58a8a3526fecL,0x849c171b02f028c1L,0x34d77ce856a5d3b5L,
|
|
0x9701621754d5a92bL,0x0cce35c12cc5b70bL,0xd9d5a00ae83f1f4aL },
|
|
{ 0x064223f826a0368bL,0x328a9f6940e16452L,0x3a6ac093d305ad2cL,
|
|
0x759d9a16beba7c44L,0x86021de7637ce7c8L,0x276bed61cc80c1ccL } },
|
|
/* 29 << 273 */
|
|
{ { 0x5d4a529ef9822e60L,0xc6f2702006edd801L,0xb2511d84efa3d8d6L,
|
|
0x38cfba656a4c6598L,0x31a5779765c067a9L,0xcee558f387d2ca0aL },
|
|
{ 0xf22345cff844260aL,0x29b6352a63d2ae75L,0x59dad0ab6cc9f2bdL,
|
|
0x615ad3599ae1bcb3L,0x3a29a237f692f42bL,0x543771c40f26163aL } },
|
|
/* 30 << 273 */
|
|
{ { 0x427437e7d722576cL,0xc9d7ac7abb548ef5L,0x72f00f28c331a9e0L,
|
|
0x5d9327b564949b48L,0xea75f3b54e2bb808L,0x28acdea068678f8bL },
|
|
{ 0xe9e787b20878223fL,0x213f47ff7e7b0a11L,0x5e967d39f277a3f7L,
|
|
0xe6651015d2006de4L,0x49b87e4bc44eb1e0L,0xf461bb76222cd3a2L } },
|
|
/* 31 << 273 */
|
|
{ { 0xd6b9341fde60d963L,0xb1a8dd0d5319a930L,0xc4f18dc0aa6b20b5L,
|
|
0x787de2e7f23f4401L,0xc15b38eb28047029L,0x0bffc0b55c99d51aL },
|
|
{ 0xf0310f39740b5798L,0xf69ea1064ed8d3bfL,0x545a54d79f6722aaL,
|
|
0xe5a9dee3af4017c2L,0x45efa2ec4a659592L,0xc5d64bedbed4e245L } },
|
|
/* 32 << 273 */
|
|
{ { 0x66797f56bbe4bddaL,0xb92a369eda51b1a2L,0x18eef4a531adb034L,
|
|
0xcf1cb5ee5d185cfcL,0xf596a59bbd53c27bL,0x1e1dd6f569002569L },
|
|
{ 0xd9433e797687e48aL,0x7d8d24c20cbcb9ceL,0x233cd7ed65d68ecdL,
|
|
0x201bbe09fb2aded8L,0x987f4975ac9b750eL,0x949da385337f7f25L } },
|
|
/* 33 << 273 */
|
|
{ { 0x31439e35b95fd11dL,0xf97e8fa4b691fb77L,0xcfdc02956d4ac378L,
|
|
0xd31bc3b0d1a617c8L,0xd857098204bd015bL,0x30cca6efd6198f0dL },
|
|
{ 0x6a52650a805964edL,0xb656d7abd060eeb3L,0x5267f37ed38a9218L,
|
|
0x5f28a2ecd3d6a193L,0xb7dc6e916d0d9c9eL,0xa7f84e4b219d45c6L } },
|
|
/* 34 << 273 */
|
|
{ { 0x550ef2713398c3dfL,0xfe184954307631a8L,0x02cef50606e5cde4L,
|
|
0x9687a39c10f11703L,0x02c35937acb10b97L,0x835b00fd13e3d219L },
|
|
{ 0x5828678b584d1abaL,0xbe55fb9cc9b40568L,0xe5a4a90e8fe19e84L,
|
|
0x91e24c9248989b77L,0x094f9e7ae3d5f4fcL,0xfe9bdfb9759029b5L } },
|
|
/* 35 << 273 */
|
|
{ { 0x43b1f8b9c1de72e9L,0xcbc8e0d4a3bdb164L,0x5c45d3dfbcc2e5bdL,
|
|
0xb5137b69247bef53L,0x6d889f5673794e3cL,0x43e2fc9b1e2dfdc1L },
|
|
{ 0xda15dc5da995d3adL,0xa0db9f5ec43d86e0L,0xc42a144bcaac3bbfL,
|
|
0x3c855fb174c43eddL,0x0731f33152688272L,0xc1f23e5643d7762aL } },
|
|
/* 36 << 273 */
|
|
{ { 0x00c2ee1c9c7de99fL,0x28a7461d15e50391L,0x1bdc0e32a1c77952L,
|
|
0xe98242c4d53d640dL,0x1a4724d2cf153c7dL,0x194e5dccba477d46L },
|
|
{ 0x871c8cfe3a0d4ccdL,0x62010af09af451fbL,0x9b354f9e6ddec75cL,
|
|
0xe5db0a5d680e3511L,0x183d1270d247745bL,0x9910867aeecf52dcL } },
|
|
/* 37 << 273 */
|
|
{ { 0xa970903e8bc2003aL,0x0f8bcfa4a3cf29bcL,0x7054f69e683a7ddaL,
|
|
0x53928bf1ece30167L,0x2588bdf1ffffea87L,0x01683b5ed7172ad4L },
|
|
{ 0xa0ac85379de7e713L,0x217bcdfe9b0442bcL,0xba46b8f64d4adb3eL,
|
|
0x320580990a9f8ecdL,0x0173b7bea504bdc5L,0x15321aeb82b1606fL } },
|
|
/* 38 << 273 */
|
|
{ { 0x4f349e5f6e39d625L,0x37cbd935b80760d6L,0xb8657ee14b1e84c2L,
|
|
0x502954064cb84bdeL,0x66d678cce8d23ef5L,0xcba173713ec3b79cL },
|
|
{ 0xed7ab3e526e3cee5L,0x34c68c516c44ef0cL,0xd704e724f8fdd226L,
|
|
0x2fa0d2dd3a9b40a7L,0x373c5c70a23be590L,0x0beb611bda9f7f7dL } },
|
|
/* 39 << 273 */
|
|
{ { 0xef506531913bc31bL,0x31210c5f8c320074L,0xb42faf19b861acc1L,
|
|
0x26f09b89e041e774L,0x23fec89822f84c93L,0x9f8b9d708ec590bfL },
|
|
{ 0x604d7d2952644790L,0xb77e3136a2339c53L,0x17f1d7a920f2fc09L,
|
|
0x8c6435d9e6bb96eaL,0x5cafeb5f3711b8a7L,0x1ec6c4edfa23ca24L } },
|
|
/* 40 << 273 */
|
|
{ { 0x6fb6b7bc0410ca0bL,0x0e16eed2b3c13935L,0x98ad89d8316ff531L,
|
|
0x4800ee179894d65fL,0x034ea3c448280170L,0x8126d12dc30be537L },
|
|
{ 0x43c2d27e5120e525L,0x96a5d498ee65df90L,0x654540105eaef29aL,
|
|
0x1d8f07a17b678fc7L,0x54bc6f737b301270L,0xe58a8102e9473365L } },
|
|
/* 41 << 273 */
|
|
{ { 0x1fa3a458aaaf79f6L,0x1d14ff613a1b7c64L,0x32c7da68f22ddb3cL,
|
|
0x7b2345ac58cff63fL,0x214e6d9dce3c3af9L,0x36fba0b78b6691deL },
|
|
{ 0x69fd813cee1a30abL,0x50daffe91adf6215L,0x55b34de692871a84L,
|
|
0x437f1b4b7ff3ea1aL,0xc3258ca580ff1c23L,0xdc220ffbc6d0b822L } },
|
|
/* 42 << 273 */
|
|
{ { 0x93e56b47ad910b37L,0x8cbce4815d20d236L,0x25b50cac5872d763L,
|
|
0xb50aa752d8505696L,0x02075e6d6f42b533L,0xf0b34a178f8d8352L },
|
|
{ 0x59f2feda5234531bL,0xb23e1da1751127c8L,0xe1f65e08b6759ccdL,
|
|
0x47d8631c352e9500L,0xab10d299c13feb16L,0xf9e916a3e5c6a220L } },
|
|
/* 43 << 273 */
|
|
{ { 0x55899ffdc06f1b65L,0x4f9ec6e011899630L,0x0df97edc50a29319L,
|
|
0x5c4a10ea5e66f0adL,0xea7b4497aa3d14e9L,0x484d8f64d22cc470L },
|
|
{ 0xd7fd252240a61a0bL,0xebd9f49d42d04a79L,0xf18ba2ec312ddb99L,
|
|
0x687273ec2dce1351L,0x68d8b052d0220e57L,0x2c0ecd6b05a7e3dcL } },
|
|
/* 44 << 273 */
|
|
{ { 0x460c29904ac6cf02L,0x01482cfa420a35b7L,0xf793933a34680972L,
|
|
0x2cd1f50017e2367bL,0x2411c3523944f060L,0x3d58b97411c06b05L },
|
|
{ 0x4552e369cddebb3bL,0xe1c38aec009aeab9L,0x9d34737c353b6e4fL,
|
|
0xf2c99e2cb16d7b0cL,0x57029fa47bbba6a2L,0x0565d1bcd13ef64dL } },
|
|
/* 45 << 273 */
|
|
{ { 0x93a50cc7eb0112a9L,0xa0d4419984a59bdbL,0x04b9538c82d01160L,
|
|
0xdb1d33e163a8d5a3L,0xa710beff08d3effeL,0xc2f37326f9bf02f4L },
|
|
{ 0x606b6b5555d26856L,0xf528d22a427fe3d7L,0x31b20fac84fb5086L,
|
|
0x27129aa592f7e7bcL,0xd88f0d4f44171b33L,0x9b045c897915ede1L } },
|
|
/* 46 << 273 */
|
|
{ { 0x0b15ebebcbe014d6L,0xa4f1504e68d24086L,0xbcf475c979d7c8b6L,
|
|
0xd61b92a8d00a6890L,0x78e096742ee24533L,0x6fe9fe6099656101L },
|
|
{ 0xc9542f53e5e63e28L,0x59ec39e12edf3a80L,0x8fe57ffe24ad9280L,
|
|
0xbae0671bf4b9b024L,0x76e36c14d5816ae9L,0xe53256d4805f8688L } },
|
|
/* 47 << 273 */
|
|
{ { 0x006956bfcf9e545bL,0x7829ed13e8fa2ee4L,0x1b108d77d4dd6f85L,
|
|
0xf51217bb17045f1aL,0x48c4802986141bd6L,0x8d59b995f8820213L },
|
|
{ 0x8439949ffc298a9eL,0x967fdcb278188d77L,0x5bbdfd296f35c711L,
|
|
0x25b37e5df8e62607L,0x18f5c4251795cccaL,0x260f075af0e35ff5L } },
|
|
/* 48 << 273 */
|
|
{ { 0x3561b3fea329deb1L,0xfdca0e34f1c3c3e4L,0x4374831347fb79d6L,
|
|
0xa7f497e1c48002edL,0x86221cce2c44dcb0L,0x65e3f04643785e06L },
|
|
{ 0x9ee9061fdf4cf461L,0xc7479e8cf022d27aL,0x1d8de85b76f7f52bL,
|
|
0x39a713c90fd6c65fL,0xf74ca067711f8a39L,0xad1119ad8ebc640aL } },
|
|
/* 49 << 273 */
|
|
{ { 0x43d9bcba57ec124eL,0xbce6aed98cc29801L,0x1dbb88c72632e757L,
|
|
0xe88f49e891f550e5L,0x056f67da7b6e1b05L,0xa503271082a027bbL },
|
|
{ 0x8471fa55c91844a9L,0x882f25b628479daaL,0x96f606dfa9c23504L,
|
|
0x6a42d307fb7fa83dL,0x531c8a5cea310e34L,0x7e2d20565b2e42f0L } },
|
|
/* 50 << 273 */
|
|
{ { 0x547047862e8c467eL,0x26f5efc690e52377L,0x762d8f767f6e71afL,
|
|
0x5fc1bd13917ff587L,0x487f6c63fb696a60L,0x889a1dcc3afd2aebL },
|
|
{ 0x7407d0a0adcf4b35L,0x8f6c9aef91024ecfL,0x3384f1c03e5d9da0L,
|
|
0xf87acb00b846d122L,0x6d86aebddceb383aL,0x6a5a90cda8f2d076L } },
|
|
/* 51 << 273 */
|
|
{ { 0xddff7aa3feb71de1L,0x431e106be44644a9L,0xafe96f8ed5190b4bL,
|
|
0x31a4dfe40ab42a27L,0x0e2d0cc435762eccL,0x7c928cd91fefb256L },
|
|
{ 0x5f33c775daeb94f9L,0xa7a91f8894c239b7L,0x6bf418fb4deda3c9L,
|
|
0x91ad6e99eefd4f99L,0x7aae05559c25448fL,0xfb7ed9df487b4deaL } },
|
|
/* 52 << 273 */
|
|
{ { 0x59753bf68ba85dffL,0xec8b82efd1c89bceL,0xd7f1a651b8b6a683L,
|
|
0x9c329bf36f84416dL,0xaecbf4b9e68db225L,0x94ec3b0f5a614d23L },
|
|
{ 0xbcb6672593a9543dL,0x90c46c46f19132edL,0x4767c73c950b080fL,
|
|
0x0b9b143e971fd9e5L,0xbce6886f8ec8c68dL,0x167b0f8ad47f512eL } },
|
|
/* 53 << 273 */
|
|
{ { 0x51517f9481819dd9L,0x2c2640a0fdd7cef9L,0x59283faabf98b8ffL,
|
|
0x39713768a46ad877L,0x13d9c0e6834dcf0cL,0x38c85473cc7acaddL },
|
|
{ 0x7b58c7666971a512L,0xbe46a58c2a38e57eL,0x3d26d0a06972e213L,
|
|
0x2341769b63cd0aabL,0x4a293dd0e86307eeL,0x8d1e338d264c81a1L } },
|
|
/* 54 << 273 */
|
|
{ { 0x66eb8beab2d5b430L,0x50b4af4382136220L,0x6644e673e79d0b5bL,
|
|
0xe64cdf10f9fa7610L,0xf1dea591132ff33dL,0x07791ab6b926c725L },
|
|
{ 0x6c41b4f383f60e02L,0x54bc9049977519c3L,0x618a6f3c2aef73a4L,
|
|
0x42cfc9d26fa4ca2bL,0x2784db71a39a215dL,0x378071655cc85253L } },
|
|
/* 55 << 273 */
|
|
{ { 0x9cc3ada3554a7f23L,0xa822f9f21c3d0003L,0xb1654da7303123f7L,
|
|
0xbe33e388f0d8c4a1L,0xd8919c79be4366e8L,0x5a41c92cfe292117L },
|
|
{ 0xc4b02d0678c325c2L,0x89eaf4356d511c4aL,0x726fb6d65fda70a0L,
|
|
0xaf7949a0183abdf1L,0x3410915d26f8f929L,0x36b3aeb281f0f83dL } },
|
|
/* 56 << 273 */
|
|
{ { 0x1942c2ffcd74009dL,0x71c4d5f5e9c286a4L,0xf3c152b5771a5972L,
|
|
0x4cfb1e74363c2048L,0xcd2ce8249ddb8da2L,0x5d97c8e0a5ee443dL },
|
|
{ 0x6fa84b3d68d7b3d5L,0x97eaa76d9ce14ec3L,0x2e4571368e13869dL,
|
|
0x39ac6a0c96f0f8a1L,0xe24458ac42d93dc0L,0x7eb3689d5f60bec9L } },
|
|
/* 57 << 273 */
|
|
{ { 0x75592736bce6ebe3L,0x84001a886777bd90L,0xe82739774a31ca6bL,
|
|
0x6906baf0a8e0dd38L,0x92af56d0848d0c92L,0x7ae700c6501326d0L },
|
|
{ 0xce418817470339a9L,0x4354d7928e448dfeL,0xc8f593afa48e3148L,
|
|
0xdd5fee34db1a96b2L,0x5974e81e357960c2L,0x7326bf016306fdabL } },
|
|
/* 58 << 273 */
|
|
{ { 0x74183618de017cd9L,0x939c7975dcfe6dbfL,0xcad9f8a108ec41e5L,
|
|
0xd9edb91d391afcddL,0xadf1f18c7c4a3f03L,0x0566d3e8ab477304L },
|
|
{ 0x32ae20464c19c62cL,0xfa15fdcb252c8c4eL,0x2ed4767e91de2794L,
|
|
0x622e4f38507f8067L,0xd647242bc68ac330L,0x0650e0a9fc1ccf29L } },
|
|
/* 59 << 273 */
|
|
{ { 0x6ecd68a086085cc3L,0xb463f4c165c0cc54L,0x3182cc5c480bc57dL,
|
|
0x8f16f2038e6d9267L,0x8c92e446df0d0ee9L,0x7da6001ba4d09789L },
|
|
{ 0x596390ff976ee9d0L,0x12b8f9dee4c0fd5fL,0xad08673f297b10f2L,
|
|
0xc8e9097c7b524a51L,0xd494f0d3009cf47cL,0xf535c07abcdd1b68L } },
|
|
/* 60 << 273 */
|
|
{ { 0x29544fe8588360ecL,0xa1aa9b9fffb550eaL,0xe1f6cf994af4d28dL,
|
|
0x723d48b00c6fd477L,0xf51f1b2f5c81b252L,0x88ec11c04f5a33eeL },
|
|
{ 0x7747f0432cd72de4L,0xcca69b0ad71c92c1L,0x9455d86e4e8cc763L,
|
|
0xc9e0aa1bc08444e0L,0x93803b68e8fffa63L,0xc296af292d781b7dL } },
|
|
/* 61 << 273 */
|
|
{ { 0xb1891a2b17329e31L,0x87c2a49056e36717L,0x8c2a50fafd26d8b3L,
|
|
0x017e4e417e3c5a5fL,0xbeb4fad0506c382eL,0x5d3e8b16fc281ec9L },
|
|
{ 0x407f7598890e57a0L,0xda855e8b340cd6d6L,0xb9393129ff388d54L,
|
|
0x41113ffdcf355d9eL,0x31d3bb09b357c28dL,0x975bdf00fd39e481L } },
|
|
/* 62 << 273 */
|
|
{ { 0xbfb0c87e10a1b4f2L,0xfaf51153dc2fcc04L,0xd2588e39d6b98d81L,
|
|
0x5de5b0eb4953133dL,0x6b65d8135b959ed6L,0x864511dc02eb45bdL },
|
|
{ 0xb1dcb4d3d7ce20bdL,0x917bcd0987587230L,0x0935790f83a79453L,
|
|
0xdc65862e54b35d76L,0x4cd2332ba6d1eeeaL,0x0706fcd030d315b5L } },
|
|
/* 63 << 273 */
|
|
{ { 0x7c91adb3adf2d8d1L,0xfe1549c24a212fd3L,0x8a7cc285c33213b3L,
|
|
0x26643cfd3e56d17bL,0xcc007c15684c872fL,0x485643e009e554f3L },
|
|
{ 0x7f5e9a6ec6569206L,0x252b5393c2f596d6L,0xf7eef1dbbf9cdea5L,
|
|
0x611ee7334dffab46L,0x8d93802a805e976cL,0xd07c0ac6f85c939cL } },
|
|
/* 64 << 273 */
|
|
{ { 0x514cc1dcb08d2d0eL,0x4e6b379e30e93536L,0xf0e422ac2fc9230fL,
|
|
0xaa50a1ad92e23e21L,0x70ac46d8676d1ac0L,0x698b9991f9f54493L },
|
|
{ 0x59a6b86a8649519fL,0xc1f11ad6e3511da4L,0xd3d9cff13192968cL,
|
|
0x13e700b40b342dd8L,0xfd5dc7bb3b1da441L,0x02426e7c2c883760L } },
|
|
/* 0 << 280 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 280 */
|
|
{ { 0x9e9af3151c4c9d90L,0x8665c5a9d12e0a89L,0x204abd9258286493L,
|
|
0x79959889b2e09205L,0x0c727a3dfe56b101L,0xf366244c8b657f26L },
|
|
{ 0xde35d954cca65be2L,0x52ee1230b0fd41ceL,0xfa03261f36019feeL,
|
|
0xafda42d966511d8fL,0xf63211dd821148b9L,0x7b56af7e6f13a3e1L } },
|
|
/* 2 << 280 */
|
|
{ { 0x3997900ecc8998d6L,0x8fa564b7baa60da1L,0x71bf5b0a661f3c57L,
|
|
0x44b13388aab1292bL,0xcbe80cb9d4d993f2L,0x0b19b4c92203f966L },
|
|
{ 0xbc82a6520080f259L,0x870ebc08ad96dea3L,0xa388c7e7502f0003L,
|
|
0x9c704ef056a38f73L,0x93cde8a73487d9b0L,0x5e9148b0ec11a1f3L } },
|
|
/* 3 << 280 */
|
|
{ { 0x47fe47995913e184L,0x5bbe584c82145900L,0xb76cfa8b9a867173L,
|
|
0x9bc87bf0514bf471L,0x37392dce71dcf1fcL,0xec3efae03ad1efa8L },
|
|
{ 0xbbea5a3414876451L,0x96e5f5436217090fL,0x5b3d4ecd9b1665a9L,
|
|
0xe7b0df26e329df22L,0x18fb438e0baa808dL,0x90757ebfdd516fafL } },
|
|
/* 4 << 280 */
|
|
{ { 0x63f27a25a748b8f5L,0x68c8f3ec2cd246c4L,0x5d317cd965f9ce38L,
|
|
0x162c92e0635ba300L,0x5259f64ffe343662L,0x4a6b2b668e614ac8L },
|
|
{ 0x97fb55bb01177c3bL,0xfb586c21a705cb01L,0xa57e732578061824L,
|
|
0x892f6b386c1e6306L,0xf12e4c072367b14cL,0x580d5fe2c83a48c5L } },
|
|
/* 5 << 280 */
|
|
{ { 0x1e6f9a95d5a98d68L,0x759ea7df849da828L,0x365d56256e8b4198L,
|
|
0xe1b9c53b7a4a53f9L,0x55dc1d50e32b9b16L,0xa4657ebbbb6d5701L },
|
|
{ 0x4c270249eacc76e2L,0xbe49ec75162b1cc7L,0x19a95b610689902bL,
|
|
0xdd5706bfa4cfc5a8L,0xd33bdb7314e5b424L,0x21311bd1e69eba87L } },
|
|
/* 6 << 280 */
|
|
{ { 0x6897401cea2bafb3L,0x7b96ecc215c56fe4L,0xe511b32939e2b43bL,
|
|
0x39522861bf809331L,0x815f6c1dc958f8f4L,0x2abbdf6bc213e727L },
|
|
{ 0xeb09ae59c39bc01fL,0xffe3b831676b56a5L,0x8f4815a2a20f86c6L,
|
|
0x748a17669aa30807L,0xf1f46a211b758878L,0xbd421fe76f6fc3d7L } },
|
|
/* 7 << 280 */
|
|
{ { 0x75ba2f9b72a21accL,0x356688d4a28edb4cL,0x3c339e0b610d080fL,
|
|
0x614ac29333a99c2fL,0xa5e23af2aa580affL,0xa6bcb860e1fdba3aL },
|
|
{ 0xaa603365b43f9425L,0xae8d7126f7ee4635L,0xa2b2524456330a32L,
|
|
0xc396b5bb9e025aa3L,0xabbf77faf8a0d5cfL,0xb322ee30ea31c83bL } },
|
|
/* 8 << 280 */
|
|
{ { 0x300b04840d6ded89L,0x0b1092cbc3ab55edL,0x17d9c5420cc10a74L,
|
|
0x7f637e84eff9d010L,0xd732aa1e27aa1285L,0xedb97340e2a77114L },
|
|
{ 0x62acf1585ef4dfb0L,0x1e94fc6eba1d7b81L,0x88bec5d22e6eb2dbL,
|
|
0xaec272028d18263dL,0x4b687353e4bbd6acL,0x031be3510ff7e4c0L } },
|
|
/* 9 << 280 */
|
|
{ { 0x048813847890e234L,0x387f1159672e70c6L,0x1468a6147b307f75L,
|
|
0x56335b52ed85ec96L,0xda1bb60fd45bcae9L,0x4d94f3f0f9faeaddL },
|
|
{ 0x6c6a7183fc78d86bL,0xa425b5c73018dec6L,0xb1549c332d877399L,
|
|
0x6c41c50c92b2bc37L,0x3a9f380c83ee0ddbL,0xded5feb6c4599e73L } },
|
|
/* 10 << 280 */
|
|
{ { 0x6c00f388f086d06cL,0x17ee45035add0cf4L,0xf96984c707caf89cL,
|
|
0x9d49d667648ed5e9L,0x3ef95015a0164881L,0x39e28e447d9c651fL },
|
|
{ 0xb13ad24059f37780L,0x08cee349b9522225L,0x9245ee6f2ba1b214L,
|
|
0x12bedaa9a886d8d2L,0xe139ae08fcb8186fL,0x99203fb6fc2ef864L } },
|
|
/* 11 << 280 */
|
|
{ { 0x14d34c210b7f8354L,0x1475a1cd9177ce45L,0x9f5f764a9b926e4bL,
|
|
0x77260d1e05dd21feL,0x3c882480c4b937f7L,0xc92dcd39722372f2L },
|
|
{ 0xf636a1beec6f657eL,0xb0e6c3121d30dd35L,0xfe4b0528e4654efeL,
|
|
0x1c4a682021d230d2L,0x615d2e4898fa45abL,0x1f35d6d801fdbabfL } },
|
|
/* 12 << 280 */
|
|
{ { 0x3c29284764c9323dL,0x40115a890491f77dL,0xec141ade2d7a05f5L,
|
|
0x0c35e4d9222a5f9fL,0x5ea51791442a3e9bL,0x17e68ecee51b841eL },
|
|
{ 0x415c0f6cd6ae9174L,0xe6df85f89ffd7595L,0x65fc694f8dedf59cL,
|
|
0xc609503efee92718L,0x57d2592e97d565aeL,0xb761bf157e20862bL } },
|
|
/* 13 << 280 */
|
|
{ { 0xa636eeb83a7b10d1L,0x4e1ae352f4a29e73L,0x01704f5fe6bb1ec7L,
|
|
0x75c04f720ef020aeL,0x448d8cee5a31e6a6L,0xe40a9c29208f994bL },
|
|
{ 0x69e09a30fd8f9d5dL,0xe6a5f7eb449bab7eL,0xf25bc18a2aa1768bL,
|
|
0x9449e4043c841234L,0x7a3bf43e016a7befL,0xf25803e82a150b60L } },
|
|
/* 14 << 280 */
|
|
{ { 0xd443b26582376117L,0xb91087c11a1beb0dL,0x3fe62a6545cc5951L,
|
|
0x49c754bce6e472d5L,0x7e60bb8177c424ebL,0xbcd4088e830cbb97L },
|
|
{ 0x3da5c94eba26df7bL,0x508b4f55f72b4338L,0x409c5c7469ad7784L,
|
|
0x82e5f1b0fdf44d6aL,0x10654a1ceed2766fL,0xef1e65faa6e83f4aL } },
|
|
/* 15 << 280 */
|
|
{ { 0xe44a2a57b215f9e0L,0x38b34dce19066f0aL,0x8bb91dad40bb1bfbL,
|
|
0x64c9f775e67735fcL,0xde14241788d613cdL,0xc5014ff51901d88dL },
|
|
{ 0xa250341df38116b0L,0xf96b9dd49d6cbcb2L,0x15ec6c7276b3fac2L,
|
|
0x88f1952f8124c1e9L,0x6b72f8ea975be4f5L,0x23d288ff061f7530L } },
|
|
/* 16 << 280 */
|
|
{ { 0xa6e19d0a5f56dc3cL,0xe387e2690b88326aL,0xef7380950ee527a4L,
|
|
0x78b7174b7c4278a6L,0xc133d867e70798ffL,0x9d0fef759e9230caL },
|
|
{ 0x7431eef01a955ab9L,0x3772e7038868d922L,0xf7a4306a8d6af3f7L,
|
|
0x633bb5a0bbec076aL,0x6d07623e7a257ca3L,0xffb5e16521c00663L } },
|
|
/* 17 << 280 */
|
|
{ { 0xebfe3e5fafb96ce3L,0x2275edfbb1979537L,0xc37ab9e8c97ba741L,
|
|
0x446e4b1063d7c626L,0xb73e2dced025eb02L,0x1f952b517669eea7L },
|
|
{ 0xabdd00f66069a424L,0x1c0f9d9bdc298bfbL,0x831b1fd3eb757b33L,
|
|
0xd7dbe18359d60b32L,0x663d1f369ef094b3L,0x1bd5732e67f7f11aL } },
|
|
/* 18 << 280 */
|
|
{ { 0xfab0ce2bee1ae33dL,0x7bf9f90b4c5692e3L,0x131a4374d776d6caL,
|
|
0x6ba40908a2b135afL,0x5c4ab997e1334bf8L,0x9eb442d07af584e9L },
|
|
{ 0xd764c506786391c1L,0x07f24c6bbcf6ab3aL,0xf73c7924fad8e1bbL,
|
|
0x79f624acb7583623L,0x2b032021b44c14d3L,0x7cc0ae8dbf58ff99L } },
|
|
/* 19 << 280 */
|
|
{ { 0x3c7fb3f5c75d8892L,0x2cff9a0cba68da69L,0x76455e8b60ec740bL,
|
|
0x4b8d67ff167b88f0L,0xedec0c025a4186b1L,0x127c462dbebf35abL },
|
|
{ 0x9159c67e049430fcL,0x86b21dd2e7747320L,0x0e0e01520cf27b89L,
|
|
0x705f28f5cd1316b6L,0x76751691beaea8a8L,0x4c73e282360c5b69L } },
|
|
/* 20 << 280 */
|
|
{ { 0xe4d7c8b88929c133L,0xe5f96bef92a813c7L,0xdb8ab0af71c18e09L,
|
|
0x0db6ff287dae63b4L,0x54d1fac49a1eaa73L,0xadbcfdf59180c980L },
|
|
{ 0xd3220f300b584314L,0xa24e4d1cca3697c7L,0x4ade8c7fa44f8067L,
|
|
0xbd8bc81aca21ac17L,0x303a2f9fc1d361cfL,0x55648b65c71cf031L } },
|
|
/* 21 << 280 */
|
|
{ { 0x46bcc0d5fd7b3d74L,0x6f13c20e0dc4f410L,0x98a1af7d72f11cdfL,
|
|
0x6099fd837928881cL,0x66976356371bb94bL,0x673fba7219b945abL },
|
|
{ 0xe4d8fa6eaed00700L,0xea2313ec5c71a9f7L,0xf9ed8268f99d4aeaL,
|
|
0xadd8916442ab59c7L,0xb37eb26f3f3a2d45L,0x0b39bd7aa924841eL } },
|
|
/* 22 << 280 */
|
|
{ { 0x6f8135c7ce89e8daL,0x21ac20d9d6b5948eL,0x1dc4d48b31cefd7eL,
|
|
0x3d34bc2a4a347926L,0xadcd11be8f614fd6L,0x77148b08a8ea116aL },
|
|
{ 0x7afc75fcfce1d3f5L,0xa9e0557d7d9a8ea3L,0x640cb5850cc864ecL,
|
|
0x5811ba842eb332c7L,0xb6c10b6efdb668c4L,0x24d8b10f99f5f6c7L } },
|
|
/* 23 << 280 */
|
|
{ { 0xd811eb32e03cdbbbL,0x12055f1d7cc3610eL,0x6b23a1a0a9046e3fL,
|
|
0x4d7121229dd4a749L,0xb0c2aca1b1bf0ac3L,0x71eff575c1b0432fL },
|
|
{ 0x6cd814922b44e285L,0x3088bd9cd87e8d20L,0xace218e5f567e8faL,
|
|
0xb3fa0424cf90cbbbL,0xadbda751770734d3L,0xbcd78bad5ad6569aL } },
|
|
/* 24 << 280 */
|
|
{ { 0x391fa3cd8d075ec5L,0x54d45020c84c81e5L,0xdead561a79fad87cL,
|
|
0x0ab3c8544e7ffc48L,0x5967f8ebff02706cL,0x8860de795d31ec98L },
|
|
{ 0x7476459c6c8a1c25L,0x8d9c484082f16117L,0x5c1b13b33b413429L,
|
|
0x1962a435601b5906L,0x78b9d382e006929dL,0x1924e979e5897b16L } },
|
|
/* 25 << 280 */
|
|
{ { 0xcadb31fa7f39641fL,0x3ef3e295825e5562L,0x4893c633f4094c64L,
|
|
0x52f685f18addf432L,0x9fd887ab7fdc9373L,0x47a9ada0e8680e8bL },
|
|
{ 0x579313b7f0cd44f6L,0xac4b8668e188ae2eL,0x648f43698fb145bdL,
|
|
0xe0460ab374629e31L,0xc25f28758ff2b05fL,0x4720c2b62d31eaeaL } },
|
|
/* 26 << 280 */
|
|
{ { 0xef1001dfbdb22e61L,0x1626bd9af384bbf5L,0x33f42d385fe8ae07L,
|
|
0x59646c42b7218d21L,0x5e27210e6a016f5dL,0x3e9ecf07094481c3L },
|
|
{ 0xf91609c1f50cc2dcL,0x8bf8c05ad0d43633L,0x9d508972e74ab746L,
|
|
0xb625887a33f628b7L,0x557bd493e733952fL,0xd35f450b8981dcfbL } },
|
|
/* 27 << 280 */
|
|
{ { 0x4603cdf413d48f80L,0x9adb50e2a49725daL,0x8cd3305065df63f0L,
|
|
0x58d8b3bbcd643003L,0x170a4f4ab739826bL,0x857772b51ead0e17L },
|
|
{ 0x01b78152e65320f1L,0xa6b4d845b7503fc0L,0x0f5089b93dd50798L,
|
|
0x488f200f5690b6beL,0x220b4adf9e096f36L,0x474d7c9f8ce5bc7cL } },
|
|
/* 28 << 280 */
|
|
{ { 0x531c43cdb63f3d28L,0x01289772429708dfL,0xb0ee772ccdb60078L,
|
|
0x4131f5cd5f1a6e72L,0xd9d0f8c6a0da0112L,0x58efddd204e957b1L },
|
|
{ 0x18857c0c32840c31L,0x00825340c4068b2cL,0x0a9217a771ff8800L,
|
|
0x69b19e6415530b80L,0xa28e274ee125e3f2L,0xb471a91bc9bfc846L } },
|
|
/* 29 << 280 */
|
|
{ { 0xfed8c058c745f8c9L,0xb683179e291262d1L,0x26abd367d15ee88cL,
|
|
0x29e8eed3f60a6249L,0xed6008bb1e02d6e1L,0xd82ecf4ca6b12b8dL },
|
|
{ 0x9929d021aae4fa22L,0xbe4def14336a1ab3L,0x529b7e098c80a312L,
|
|
0xb059188dee0eb0ceL,0x1e42979a16deab7fL,0x2411034984ee9477L } },
|
|
/* 30 << 280 */
|
|
{ { 0x01d04fe04ce2d199L,0xf434bcfd0517c7ebL,0x82f3aca4a7659a94L,
|
|
0xf436a7781ff015c9L,0xf5143391d6223e5cL,0xba66c6a2ecb5c340L },
|
|
{ 0x080f158a4b23a041L,0xb401094cb699acafL,0x1c57626c677491dbL,
|
|
0xfb39e317d42d86dbL,0x19e2ca804f6b3354L,0xe919c4c3c1d41ef3L } },
|
|
/* 31 << 280 */
|
|
{ { 0xd65246852be579ccL,0x849316f1c456fdedL,0xc51b7da42d1b67daL,
|
|
0xc25b539e41bc6d6aL,0xe3b7cca3a9bf8bedL,0x813ef18c045c15e4L },
|
|
{ 0x5f3789a1697982c4L,0x4c1253698c435566L,0x00a7ae6edc0a92c6L,
|
|
0x1abc929b2f64a053L,0xf4925c4c38666b44L,0xa81044b00f3de7f6L } },
|
|
/* 32 << 280 */
|
|
{ { 0x35ae891bbb71e9b0L,0x1f6ce6ca522b77f0L,0xc2dab3cae63745c4L,
|
|
0x55b8c185f218d139L,0x6ab039c889f3b0e2L,0xd9e25bfdc644c3faL },
|
|
{ 0xc8496f203e2ed47bL,0xc395ec028d67e17cL,0x5c67839292114918L,
|
|
0xe962e52fef73f345L,0x3818baf354fcfb22L,0x4d75d65d9d4bc911L } },
|
|
/* 33 << 280 */
|
|
{ { 0x10078824eb7ff5fdL,0x50c65328735ef75fL,0xdfc04d53ec980ba2L,
|
|
0x4bfb260f2d519cf5L,0x1f03dff15c854667L,0xd1ad2231badb625cL },
|
|
{ 0x986064d0be9f7f03L,0xe5ff93e5c13f7d0dL,0x02682a1896e26a17L,
|
|
0xc421567c817ec3cdL,0xb740652352615c25L,0x6800a8335d135eebL } },
|
|
/* 34 << 280 */
|
|
{ { 0xde57575b17d8ec5cL,0x72e2257578aeb9bbL,0xce73fa7731605c27L,
|
|
0x2f286b79ae77436cL,0x5e78fbb77f4e6997L,0xb03c888e474f23a7L },
|
|
{ 0x4bb302a3e38927ceL,0x39c6de5f6e1514ceL,0x9daa0ad349b2ddbdL,
|
|
0x98fd2377d683dffdL,0xbefa4ae5933476edL,0x4ad53d01173f49edL } },
|
|
/* 35 << 280 */
|
|
{ { 0xdfafc70e44b89837L,0xe0104b9c4935fa88L,0x7625d9d92fd702e2L,
|
|
0x27461e6549af2219L,0x4a279383ad3f36edL,0xd87e246b9204e857L },
|
|
{ 0x8d832190ab1727d9L,0x59205cd82182e291L,0xb96a1d15a6513613L,
|
|
0x1c7de3cc49cc8ddcL,0x637ea26af17ab785L,0xc098bb7a09a3ba58L } },
|
|
/* 36 << 280 */
|
|
{ { 0xfb5383cc31bd4f68L,0x6fd5aee3d96a1899L,0x4e39d6eb01d5430eL,
|
|
0x12679565ca5a2848L,0xa399e83f062b44fbL,0x3ee2432f3c166682L },
|
|
{ 0x57229c841de47708L,0x40a5d0cbba528a61L,0x4bae36be8239e7baL,
|
|
0xddac65a2f8087427L,0xfd516d1a3cc61266L,0xc89542b5bcef98b1L } },
|
|
/* 37 << 280 */
|
|
{ { 0x3fc8d1b2d49cc0eaL,0xfc591f7f7bca4d23L,0x5f48e27c41fefdf3L,
|
|
0x5ca1d08a1039419dL,0xd450c1bddc8042ceL,0x6760e23fb436fc4bL },
|
|
{ 0xc5642797c06bb34bL,0xb787cd53fde06d4dL,0x2926360ccbf144b0L,
|
|
0xb63756f4dce32421L,0x0878deab774abc4aL,0x2d97c7919a4e142aL } },
|
|
/* 38 << 280 */
|
|
{ { 0xf58389ff105c818eL,0xfa29f1eb585fa7f0L,0xb6da09b5917e8924L,
|
|
0x1375c3047e7a3f49L,0x9b4792b289cfa1c0L,0x92094a8535571cc7L },
|
|
{ 0xf986ccf6051e5e50L,0x55ea34d601df6babL,0xe65989eed1363333L,
|
|
0xd94bbd918c84e20aL,0x9a4f71dc49e39b8aL,0x6d9fe495927d633eL } },
|
|
/* 39 << 280 */
|
|
{ { 0x30b295f01fdc29e2L,0x71415daae2c2fab4L,0x205e957683c312beL,
|
|
0x893c69fefab48afcL,0x8108f3f994ca2fdbL,0x37c860c314f99296L },
|
|
{ 0x1009a6d2e990ed34L,0xd5350c36ac26b611L,0xd03161102ce23d91L,
|
|
0x82bb476e62189343L,0xe255965160ef0cbdL,0x6bab3f53cf5d2311L } },
|
|
/* 40 << 280 */
|
|
{ { 0xcaa3b7a592fa460fL,0x92bb46b804dff174L,0xcd6949b3cf926a1fL,
|
|
0x01f95e5559d1bb18L,0x21f90c08d4518f3cL,0x325dbfe920ee8bf5L },
|
|
{ 0xd0136f3feafb919eL,0x941190cc8e0ebcabL,0x599e91a287b557aaL,
|
|
0x7fac4887dcbde1c7L,0x1dad481905a07040L,0x640493978b03d593L } },
|
|
/* 41 << 280 */
|
|
{ { 0x65521bb85ebd3685L,0x16c68e79665d1619L,0xd6ab56bbc52b14c8L,
|
|
0x312f1fb4c6d3067dL,0x5afef4f3d50587c0L,0xa3e79e94ace6e2feL },
|
|
{ 0x52c7fa0825f12a1eL,0x9c1c1ea20dec9f3dL,0xc418d4232e87a036L,
|
|
0xa0a19fbb0283752fL,0x52e0a8830b804506L,0xc67fc71b3f7de2a1L } },
|
|
/* 42 << 280 */
|
|
{ { 0x4d062d3d7dad8ca9L,0xb78c81581cf59756L,0xaccb38f8c6b5d9fcL,
|
|
0x83436d3f7ddc66eaL,0x37115b6033adcb87L,0x49b74bd45a8b09abL },
|
|
{ 0x7b8bdb81675ae43bL,0x5284f5b3f0476428L,0x8f1521e7db38b0c7L,
|
|
0x792ef9dea0c4b2f6L,0xa15880a162159fc6L,0x70b999e372b09b63L } },
|
|
/* 43 << 280 */
|
|
{ { 0x6f47787d4e8ffde7L,0x19e9434574495a10L,0x8da6d55784f5be33L,
|
|
0x110844811884e325L,0x621734c5a9f030baL,0x25cd0544d0e63f63L },
|
|
{ 0xea6729687e936833L,0x08297af784a34442L,0xb77dc3a342f9ed3eL,
|
|
0x9f8908c8258e8d4fL,0xb8281bfc3299ba4bL,0x1f6412920a09849cL } },
|
|
/* 44 << 280 */
|
|
{ { 0xd5d51e60ee9a7708L,0x2e8ab3effd2cfe78L,0x0af5c3bac8e71273L,
|
|
0xbfd1b94091041652L,0x4c7c86ab52ce4582L,0x3ab72feff1d9bc29L },
|
|
{ 0xae89c3d51e1974b3L,0xd859c7ef70433caeL,0x762064c77edd1398L,
|
|
0xc0b6a6b6072064a4L,0x3ba43b059bb1b3d0L,0x20f9aa85e47d79bbL } },
|
|
/* 45 << 280 */
|
|
{ { 0xd1a45415c2d001cfL,0x40f3f05d848a480fL,0x03708da0ce554d5bL,
|
|
0xd7090557c80f4254L,0x7e57d29907743393L,0x7db8a5e10f2f5903L },
|
|
{ 0xd0466a0b14e8ff8bL,0xa3c38f49e0cf88b0L,0xde47262e329f71adL,
|
|
0x56b2a7935da6d0a1L,0x22e1f9b880ef44b0L,0xb9b96c617b2b6d4bL } },
|
|
/* 46 << 280 */
|
|
{ { 0x3235bc494c500ee1L,0xce0f0b54da4a4f35L,0x628cb91c337ac7b7L,
|
|
0xd8a6d4cd88a26e9dL,0xdcf40cba96e44349L,0x073a0f75b54e3fa9L },
|
|
{ 0xc9b95d29ca44e6e8L,0x42ad9afa2315f4beL,0xdf13a5ddf78617c7L,
|
|
0x40aeb346d196504bL,0x9317d6f33d1fef90L,0xf94d308fe1708a79L } },
|
|
/* 47 << 280 */
|
|
{ { 0x45bc768608835815L,0x700d93bc5798c507L,0xae3415b85362a822L,
|
|
0xdbce01b33883d21dL,0xb9df7efbe56fb2aeL,0x5ed57d9427d341c0L },
|
|
{ 0xdc26916e7ee4dfa0L,0xcdb06a17147c075fL,0x0198b6a7fa9e7a63L,
|
|
0xc9876c786355b62bL,0x9f4b8f12f565279dL,0xa03aeb619cb6ddb6L } },
|
|
/* 48 << 280 */
|
|
{ { 0x3a35938779493f3dL,0x128301a91f06a9c0L,0xfcce0f82899d204cL,
|
|
0x4ca41589158780b5L,0xc28f1bb73c4edd4fL,0xe08e48a87a6aec34L },
|
|
{ 0x6d4783dfd447c55eL,0xe7c2ecc857803027L,0xb7b8c2bcdf6d7f91L,
|
|
0xf0a8d4700f356ca3L,0x229894bfdeb8e964L,0x555c9d40d3aa70e1L } },
|
|
/* 49 << 280 */
|
|
{ { 0xa899a252e0ace851L,0x74b716c9bb9d8476L,0x2ba0bb00571bb175L,
|
|
0xee01a9bf7ac2b619L,0x74f0b6d3502ee575L,0x7fdd7856cc45f810L },
|
|
{ 0x68c0beb1c0ae384dL,0x21955de8fe63d58fL,0x1b98e3951c08bbd2L,
|
|
0x5ddaf7e9638701b3L,0xefc264f1b1242d62L,0xa9b8de5c81292443L } },
|
|
/* 50 << 280 */
|
|
{ { 0xf0d713b7131a3bf1L,0x690ae8c147e9f09fL,0x1dc92a5f8cd8bf1eL,
|
|
0xdf98927ad61f5445L,0x729b5469ae795eabL,0x939b391c5265675aL },
|
|
{ 0x5d916c6c7bd7e97aL,0x7c2a3de5d514e72bL,0x0660758379e9915fL,
|
|
0x0554d5e543a4d2c7L,0x37eb7f82ca5bca41L,0x90e41b71b640109dL } },
|
|
/* 51 << 280 */
|
|
{ { 0xfdd403b0e6f769aeL,0xa67f97f6906a7981L,0xc86c49be6aa83c6dL,
|
|
0x6177820677ab6d8fL,0x60f77c49916933b2L,0xfa33c528fcb3fe39L },
|
|
{ 0x102ffca0783cb589L,0x6a37a394a96ce10eL,0xd17bf1f89eb4695fL,
|
|
0x2a7623af2a53116eL,0x10601afe83af2e60L,0xceebada2582a1704L } },
|
|
/* 52 << 280 */
|
|
{ { 0xcbfb50fa57004c05L,0x0d545f0ea7bea436L,0xb7e30eb77071e269L,
|
|
0x435b3df73b845896L,0x48ba27f0b246365eL,0x9fbe883341344f12L },
|
|
{ 0xb763df280a87ef33L,0x4f9339d70b5288beL,0xc02770d6e722e3beL,
|
|
0x6c69bfd918e32f03L,0x20c5c05e74c2845cL,0x09fa0928d6f9279dL } },
|
|
/* 53 << 280 */
|
|
{ { 0x82f43866962fccc1L,0x92bc5f82278c9762L,0xc979a68b39a39a08L,
|
|
0xfcae204b97c5a298L,0x78f55c7908676082L,0x210e036447c7b09dL },
|
|
{ 0x24512cef47d87769L,0xb4b0fdd7e4b53f4fL,0xc2a263fff6818efdL,
|
|
0xfa160dc1985bc93fL,0x7b7f82961bf44affL,0xd6c75fb2a6407cdfL } },
|
|
/* 54 << 280 */
|
|
{ { 0xea0b6ec35741c57bL,0x9b148c2668ba5fd0L,0x6206025166461969L,
|
|
0x0726919f8cfc618eL,0xf66ac684c1954bcbL,0x160ad0260273adb4L },
|
|
{ 0x0ec10cffe6f6aac3L,0x232fc7adb4f64d98L,0x0707cb6e73564063L,
|
|
0x76daa2c5487a29acL,0xe4ffd6e335768176L,0x4ab87262464d126eL } },
|
|
/* 55 << 280 */
|
|
{ { 0xdbc1d21c553f05efL,0x16e950d0dc115e4cL,0xa727059a354480a5L,
|
|
0x32df221efd6711f1L,0x06f9bc2e5c8aa9fcL,0x9f2449a67b15522cL },
|
|
{ 0xac14774bf498ee00L,0x02b5979f3ec7e0a2L,0xdce96e06e1e00abdL,
|
|
0xd7a1bf5a1e00e8a9L,0x19b30fd3a8f42042L,0x29b08eb7e7c507ebL } },
|
|
/* 56 << 280 */
|
|
{ { 0xe91477d3a66b2f3aL,0xf50d3bdfc4deb7f5L,0x19bf2857a1e45e44L,
|
|
0x1c104e3270a2126aL,0x4636b4894357b9f5L,0xf65e5aa0962d684aL },
|
|
{ 0xfcc83a5fb7b52893L,0x8451d02b08adbd4dL,0xf0fb410c19f7a896L,
|
|
0x6b90b0faff36caeeL,0x111710d0f5af8966L,0x00a4cfafbd2b8c59L } },
|
|
/* 57 << 280 */
|
|
{ { 0xad9f11cb817bd227L,0xe4733a1465d27b5fL,0xeda46e8dbcf76526L,
|
|
0x8db309ecad57a5a9L,0x4a863ec07f1487a8L,0xb0453ed210f1c4c1L },
|
|
{ 0x9b4df78af2dbfd76L,0x62af38b21525e18cL,0xe6bd0b0ade2c7f65L,
|
|
0xad62bfb70b27fad4L,0xd21fd4346d6a8a5fL,0x07b606703e401a5eL } },
|
|
/* 58 << 280 */
|
|
{ { 0xdd14c891e34b192cL,0x6ddfcc793aed3e36L,0xc89c3e6dc49a92e2L,
|
|
0xa61954fd6fcf1ce9L,0x420c39a9bd297157L,0x57c20a8a406d3f2fL },
|
|
{ 0x7ccda02263faf545L,0xb01814a96cca4388L,0x88baf1dce5fb1fd0L,
|
|
0x9e1183cfa0bae755L,0x3fe540badbc243c2L,0xe50d52305aeb26a3L } },
|
|
/* 59 << 280 */
|
|
{ { 0x10145b3d52726a98L,0x7236036869e333fcL,0xce9a409323a6f608L,
|
|
0x61c121dcddd11095L,0x3349b30a0d39f1daL,0xd07df9d4e3485e93L },
|
|
{ 0xb4c500a561159e84L,0xbc74918100561c03L,0x8f27e9f3904ad807L,
|
|
0x7272786a0108ed01L,0xcf36a5d9c9365dd8L,0xe052fc9d7f859d87L } },
|
|
/* 60 << 280 */
|
|
{ { 0x0e6cd863da97e11eL,0x5b058c6852a818a1L,0x7768c5e73de760b3L,
|
|
0x898b7f608dfb4142L,0xd48130977efec180L,0xd7196cd758279538L },
|
|
{ 0x67c451fb816858a1L,0xbf0e88912ac699b2L,0x21fa74effcb126a5L,
|
|
0x1f9dc10123b8df5aL,0x38aefff921136ffcL,0x3408874c47cb395aL } },
|
|
/* 61 << 280 */
|
|
{ { 0xded9035213054567L,0xc61d0628c58c633dL,0x73ff2589f31143c3L,
|
|
0xc43594ff0871b05cL,0xcf662dd64db0edf2L,0x6bac019d8d1f33b0L },
|
|
{ 0xcaa37cd8bb379461L,0x9b077a6934fc0269L,0x421e716788ecedf2L,
|
|
0x2d422f95073284cdL,0x9a353114bbb2409cL,0x99e8c7a0dcbb79e7L } },
|
|
/* 62 << 280 */
|
|
{ { 0xfca254cba21c40f0L,0x4945c838e0f4a032L,0x99318ff3fd6cb7fdL,
|
|
0xc631e0644a85e726L,0x2e3ca11d9359e8cfL,0x433a0e5c06acf935L },
|
|
{ 0x665c54c996b37ea9L,0xe78865c4c2d52b81L,0x68596f6ffb27850aL,
|
|
0x7e7272221277995eL,0x602b0f5c197344c2L,0x81ff2ad620a9ec11L } },
|
|
/* 63 << 280 */
|
|
{ { 0xb2ce6cbe7c4c464fL,0xd7c11ef5741a4b1fL,0xf3f987f621a7eb17L,
|
|
0x6b2812ef79f4e274L,0x3a0117ae38a7d5ddL,0x5d8c75a9cfab6bb5L },
|
|
{ 0x3827c04052394166L,0x897eb181e00e621dL,0x6693817f8aa19361L,
|
|
0x67cac329959d81a8L,0x21e7133869a7ca51L,0xa02fd11269a46a87L } },
|
|
/* 64 << 280 */
|
|
{ { 0x7f1f985c022ea83aL,0x90a22662a7584e7fL,0xb40a930a5188fcf6L,
|
|
0x3fad79aba3a82904L,0x7bee8d22f3151027L,0x79a1a838c2c3e17bL },
|
|
{ 0x1fbe06e933cc3509L,0x629c56aa9abd5ccaL,0xfff290ec2d9cf7a5L,
|
|
0x5d0dedaa9bd062c5L,0x080344abd7d35381L,0x0848373af5cf9edaL } },
|
|
/* 0 << 287 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 287 */
|
|
{ { 0x31d31f7a7a0c0bc0L,0x7a37a84ab251d2bfL,0x1793362e52f04d67L,
|
|
0x5808e70921c7b651L,0x33fe9123ed6f47f6L,0xdeb1dde958f71405L },
|
|
{ 0x821d3045ae56b472L,0x9f61f761e02043adL,0x932ddb145b2048a9L,
|
|
0x17d989fed7811330L,0x032ae4cb128fd85fL,0x8f1956b47d1ef434L } },
|
|
/* 2 << 287 */
|
|
{ { 0x070d34e116973cf4L,0x20aee08b7e4f34f7L,0x269af9b95eb8ad29L,
|
|
0xdde0a036a6a45ddaL,0xa18b528e63df41e0L,0x03cc71b2a260df2aL },
|
|
{ 0x24a6770aa06b1dd7L,0x5bfa9c119d2675d3L,0x73c1e2a196844432L,
|
|
0x3660558d131a6cf0L,0xb0289c832ee79454L,0xa6aefb01c6d8ddcdL } },
|
|
/* 3 << 287 */
|
|
{ { 0xe5d473dc7521f457L,0xe9ef09bda00be577L,0xf6d0965fb6eaa640L,
|
|
0xeb49486875726560L,0x452116d528817302L,0xf0424fdbfbde3597L },
|
|
{ 0xd6096da3bb454915L,0xde48280841422141L,0x7a1351972d19fac0L,
|
|
0xdc9a5ec421393f6fL,0xcabcc1e3eb2c8adaL,0xd436643142d8c4f2L } },
|
|
/* 4 << 287 */
|
|
{ { 0x0ed1082f89e4e449L,0xdb1fb471833f2378L,0xa35fef0eece77352L,
|
|
0x76adaa464bf0c426L,0xfbab929aa011b2fbL,0x6f475d5b9d8cc4d3L },
|
|
{ 0xbe6d7f2174351480L,0x2d1362d193e4a7aeL,0xc7e2cba5106ceaabL,
|
|
0xfe94528a45258697L,0x7109b17d075945b0L,0xfd395b2ccae17f7aL } },
|
|
/* 5 << 287 */
|
|
{ { 0xdf534b80dece6d4dL,0xcfaa60a28737af46L,0x7d76a921b9ba3d56L,
|
|
0x61490bd199338721L,0xc514e950ed25cfbdL,0x5041fbb2dc09b8b1L },
|
|
{ 0x2410310d46fbcbf0L,0x2c46bcd14f7e8aa4L,0x08ce31f5d0d5fe1dL,
|
|
0xb11efdbebeac3c97L,0x406e1d05b01633e9L,0xde48cdba766391adL } },
|
|
/* 6 << 287 */
|
|
{ { 0x68550299845e12c9L,0x979b5406361d027fL,0xf601d2b4a8e92e70L,
|
|
0xfd02799f0cc9fca9L,0x89f99ca013bc2e96L,0x22a12c0bff9db9b8L },
|
|
{ 0x6ae7084a32efcea8L,0x5ddd3ee9a24b9376L,0x394d92a4e0945e8fL,
|
|
0xddab6752ecea36f6L,0x650b74d60d18a069L,0x37f91cebad650860L } },
|
|
/* 7 << 287 */
|
|
{ { 0xe3e559bd9d839b3aL,0x50e8d4e9719de3c7L,0xf7bb377cea70b986L,
|
|
0x63753cace1b2707dL,0xeb239a870e585c4aL,0xec40a379b0e32380L },
|
|
{ 0x836ebcefc86d6685L,0x703c296a70d18b76L,0x47e2c004b94aa268L,
|
|
0x33ef7d0cbaf14d61L,0x74aa00fcd315c72cL,0xf23c789eccf5d75aL } },
|
|
/* 8 << 287 */
|
|
{ { 0xfc1faedc310404a8L,0xea339148d3bcb128L,0xf00485456416defdL,
|
|
0x75de7770c58653e7L,0xdd2dcbebe2f6f99eL,0xa4380ef4d159ac07L },
|
|
{ 0x45dd713ce4173608L,0x44919b61446a6789L,0x3f73756b6b962b38L,
|
|
0x3cb9f53bbffd3f0cL,0xd723c40b7f08ebaeL,0x998a9b170c3cddbaL } },
|
|
/* 9 << 287 */
|
|
{ { 0x261c9fe6f21ae889L,0xa589147edf3cb243L,0xd09452f71976deecL,
|
|
0xf80ee8bf2497f6b2L,0x0b5f1b19eee697d4L,0xce9b6b680de48ab7L },
|
|
{ 0x3ad3bbc4bbf29546L,0x544406a697f51becL,0x51d44dfac2e2e75cL,
|
|
0xcfc8625d3da3f634L,0x0845ace6a1f5995dL,0x11850d8bf3b65c55L } },
|
|
/* 10 << 287 */
|
|
{ { 0xa804b2f089ef2489L,0x06a2a805fb22f7d6L,0x31baf4fd353970beL,
|
|
0x3481c8b712854a91L,0xb0424eecf3971398L,0x748ef3820f4ed94aL },
|
|
{ 0x92b74ad026722164L,0x23f71d5831b1302fL,0x6741b28070a5f0c9L,
|
|
0x46c12cfb9f5101caL,0xe7014d7901d0f81eL,0x129bd87ad758c288L } },
|
|
/* 11 << 287 */
|
|
{ { 0x6c43d8307b00cd09L,0xb794cb012141eb00L,0x95fe13a75cf23ec5L,
|
|
0x3de5ad7b8f2c799eL,0xa378434a025de83bL,0x07f681bba3a14a3cL },
|
|
{ 0x8fa0b5d2983ba419L,0xe477bf361781bf08L,0x5b8162845e8ce6bdL,
|
|
0xb36a78ee199ec8eeL,0x444fc01a6062d5d1L,0xc026ab4586ee9ac2L } },
|
|
/* 12 << 287 */
|
|
{ { 0x6a565269a3e0c5b3L,0xaab7ec7104c6ae54L,0x0bda11a7d8c6ddb8L,
|
|
0xb7ebfafb2332347bL,0xcf791881e99dff48L,0x81600214dc357c83L },
|
|
{ 0x2a264f8931d7495bL,0x8ca430004ec885a7L,0x6d478260bb47d417L,
|
|
0x544de4ec3d817032L,0xac7150a9dc05f901L,0xffef225775c0963cL } },
|
|
/* 13 << 287 */
|
|
{ { 0xacb83aadb65296f8L,0x04c96c3e18151422L,0x8913311e7a9f126aL,
|
|
0x3baeaf8010b74e8aL,0x253c9dcbb7410105L,0x30a13e42da2d5437L },
|
|
{ 0xde31fd5533a2065eL,0xde2caf1ffe099595L,0x54c762fe795076b5L,
|
|
0x8beb51fe635ed402L,0x369603c1e5c3d2a6L,0xc5083f0700a472b5L } },
|
|
/* 14 << 287 */
|
|
{ { 0x58805ca8d2eaf294L,0x910d085ed7d5abb8L,0xf9cbc9a1349cfecfL,
|
|
0x67bc7b417800a980L,0xe7e6dbc0f6847e9dL,0x7a0f22c4af379c48L },
|
|
{ 0x80b6fc04b1d2822fL,0xa1cae656d8517a70L,0xd2d11ed14e9dc24bL,
|
|
0x48d74f173fab87e6L,0x1feca5af50c630aeL,0x263e04cc62d0620aL } },
|
|
/* 15 << 287 */
|
|
{ { 0x7dd330ca16b2a52aL,0x25133c614157ae5bL,0xe6ee0e4edd606b2fL,
|
|
0x700840423f2b59a7L,0x58d27587d03f54eaL,0x62ebc668d34605e9L },
|
|
{ 0xa764392ab3155e07L,0xf0810f3e3c6ae6c8L,0x1b32e5ae94614cd4L,
|
|
0x45b49262b9cbf481L,0x0034db795b3d1184L,0x463237825b1b9ab9L } },
|
|
/* 16 << 287 */
|
|
{ { 0xf6377e3bf6ba1469L,0xc334fb6c09c832d3L,0x7f85ac42c21c0cf1L,
|
|
0x7a3e31c9857d8edbL,0x2eb1076327b77ed6L,0x2bfbbdbc38dae10bL },
|
|
{ 0xed7c6fb17bae3b4fL,0xc5911d9f36d04e6fL,0x4dc435504569e72fL,
|
|
0xaa82fb97bedae3abL,0x06d37bef4f27e463L,0xd0dbce6df0c35a11L } },
|
|
/* 17 << 287 */
|
|
{ { 0x4482c7b704414726L,0x72c9cb5b26d23eabL,0x3747b8cefd5cb171L,
|
|
0xe4ecabc300312ffaL,0x5909f29b9cf10a38L,0x209bc3f4b8d0e5acL },
|
|
{ 0xd34c84db60fac147L,0xd64dea89f8938c89L,0xb18285f8b815267cL,
|
|
0x719a7e355a2437d1L,0x45f8d9dab769c5a2L,0x2d0e4281a412cfccL } },
|
|
/* 18 << 287 */
|
|
{ { 0x23c14c43d8f6e236L,0xb14be0d28ee39386L,0xd3c55814262dd390L,
|
|
0xa1b40401e1f23d0bL,0x1377b07c61534375L,0xfe4e3eb116f6d95eL },
|
|
{ 0x17b1af0040b4386cL,0x2dc657a837ca3851L,0x6862ca92ef976731L,
|
|
0x9f0c380ba4118d3bL,0x23bf793977c1aa94L,0xaadee0612bc27d4bL } },
|
|
/* 19 << 287 */
|
|
{ { 0xfa5e4cb6f1847a9aL,0x0e13a60cba6f07f1L,0x68d9db450ac86498L,
|
|
0x44b02de3920ff013L,0x43724c2d84b46078L,0xb3686ee81f951b93L },
|
|
{ 0x019b3e77d712fe85L,0x313e7b7497dfb295L,0x7d883ed826d50e37L,
|
|
0x64815565d32562ddL,0x2f9e48bed7b3e2f2L,0xc97cf156dcb93450L } },
|
|
/* 20 << 287 */
|
|
{ { 0x0573d9963ab4c707L,0xee5d87691420fdf1L,0x41873aa55e2b9c12L,
|
|
0xe09290456810bf08L,0x4ff4143fccbe4bbfL,0xd0e5a74969328301L },
|
|
{ 0xab5912621c4b73beL,0x550ea0633f3edf99L,0x8a77633734c93db1L,
|
|
0x5c51d3f832b21521L,0xcee9f604713feea0L,0x0d6f8a5a7bf4268eL } },
|
|
/* 21 << 287 */
|
|
{ { 0xc415d467009a0cffL,0x32dd46ef55960242L,0x4ccc6f676d6a81b0L,
|
|
0xa860bcb6b2571d81L,0x7e74150991f9b6c9L,0x9a96b2f9d3a0592aL },
|
|
{ 0xcc3d821071248929L,0x586062daf1cb0f52L,0x18d993483d48b6c1L,
|
|
0x667f17949f4e612aL,0xf1d7a77ffb3a12e9L,0xf7586397f5753220L } },
|
|
/* 22 << 287 */
|
|
{ { 0xb87d5ce2722f405fL,0x24d1f993d7c6a322L,0x09d837291e0d8113L,
|
|
0x70b5cdbf89a6cbc3L,0xdfb3ee16fb2c9607L,0xf0acc1163465c7c6L },
|
|
{ 0x10cef4b707e6659bL,0xc280c4331fde9940L,0xc8b5e9819a2d3f25L,
|
|
0xc36faa763f7f68c1L,0x17878bfa8d54e281L,0x8fda8b359c42c5a2L } },
|
|
/* 23 << 287 */
|
|
{ { 0x2aa1366305d22d7dL,0xee77da6eb0c62a12L,0xff8f99c5bacad876L,
|
|
0xcbe33479f8a0f0baL,0x4c69bd7f4a232c8aL,0x760ce3fd485d3f48L },
|
|
{ 0x0b286a59268d7411L,0x2dd746b6589819b9L,0xe017a53060ce76f2L,
|
|
0xe4407828d642a7f0L,0x12761e51b6badaecL,0x4f4f286b78d07257L } },
|
|
/* 24 << 287 */
|
|
{ { 0x43c78835661019ecL,0x68e916b124e66d29L,0x02c0f3a224094671L,
|
|
0xab6f1c05d0f17d86L,0x6d3bac72a22d4264L,0xd7b8f152f6e5fafeL },
|
|
{ 0x95627c6339447eb3L,0xfd15901879e1ff93L,0x39277c835ad80806L,
|
|
0x758aafc90d7c7b74L,0x605ad8ca4cb8bec9L,0x6a90085c5741828aL } },
|
|
/* 25 << 287 */
|
|
{ { 0xbc11d3d559cdebfeL,0x75c31b4531b2796eL,0x8d11e18a07b1055eL,
|
|
0xcf522c1fb2d2986dL,0xc994c377eafcbec6L,0x840d27ebc0c0e2f0L },
|
|
{ 0xd4124d17859550d3L,0xeea6047aba21b2b6L,0xbd2a036e335a2854L,
|
|
0xd8703d6b207ac2e5L,0x09d2244a94a34bbbL,0xd6b9481417ec6f44L } },
|
|
/* 26 << 287 */
|
|
{ { 0x7d8ddca252aa7ff2L,0x0985e47d6953b9a2L,0xed328993dfff63ccL,
|
|
0xbfeca5327cfa6ee5L,0x7535a871b1e6a010L,0xb0052764303c2ec5L },
|
|
{ 0xd39c72102fedb0daL,0x7ee2b384e1001505L,0xb638a1b1c82a7e1cL,
|
|
0x1b94a47b4573fd7dL,0xef2bca7792cb2b88L,0x49ad6e97a75b21efL } },
|
|
/* 27 << 287 */
|
|
{ { 0x591bdd0d8f4093abL,0xa2c63f1ba1322343L,0x5e548f71b32a4331L,
|
|
0x9930891c5e7f3c14L,0xb2b2406e54c27043L,0x7ffe3e5ef1281af8L },
|
|
{ 0xc31ba363900742d1L,0xf24c8ae1e61ee209L,0x687c56b7beed46f4L,
|
|
0x0b63e47895682562L,0x9117cf4c0c8a45a8L,0x0744a86824c20748L } },
|
|
/* 28 << 287 */
|
|
{ { 0x9ac777993acb39ddL,0xd1d3ecddbb7c6a8aL,0xa5271c9e7a75159cL,
|
|
0xa6ffb41f2c276e4dL,0xc526556e0bb9a955L,0xa32e1352233b7774L },
|
|
{ 0x103f124bc2cf09aaL,0x1816d1eff10bae5aL,0xc5f9197ee8837629L,
|
|
0x064d5dcb13b1b76bL,0x109c70748d0fe0b1L,0xbb4e9743fce5f6e1L } },
|
|
/* 29 << 287 */
|
|
{ { 0x4636f36d3ef05af6L,0x3695267b3e498920L,0xd59830285d773fc8L,
|
|
0x939591245d3cc515L,0xc3f52a9569134370L,0xc9d0db7af8848992L },
|
|
{ 0xcd1be9bf15906eeeL,0xa95d25fb916d576fL,0x08de893be152fb62L,
|
|
0x65d743658ab1e35cL,0xd6d97057fef14ac1L,0x67ad47b9574508c7L } },
|
|
/* 30 << 287 */
|
|
{ { 0x1b403c4f1470433eL,0x6f8cb19257e53eecL,0x87b5b93df0cce4f5L,
|
|
0xfefaa5008c566f77L,0xf6aa8066db71517bL,0x9f01b036d67f5952L },
|
|
{ 0x9524306faaeb40dfL,0x5cb2e8e1421350a6L,0xa57d05ea3d69040cL,
|
|
0xd0ff12a1b9bbdcd8L,0xed64d3259e3e19bbL,0x29509c0fed0a490dL } },
|
|
/* 31 << 287 */
|
|
{ { 0xc94191e7a607c050L,0xb918a096b98d3d4eL,0x97413dbce3f253f3L,
|
|
0x8476c03cdc6d8418L,0x50247d1d2402202dL,0x077476225f8097c5L },
|
|
{ 0x1457ab609b71c6d6L,0x9ff312c447cf0c94L,0x954dce23ee79d2bcL,
|
|
0x3ba2b1a4a0da6e48L,0x363df36f532be9f6L,0x816642ddc742c7d4L } },
|
|
/* 32 << 287 */
|
|
{ { 0x6edf5561ff8b1fbeL,0x614b788ef6eac0c0L,0x7699ae56d8d66d29L,
|
|
0x5f81602ae9d58eb2L,0xd0c04874faf9176dL,0x4b3a0046523153b1L },
|
|
{ 0x9690930ff6315883L,0xa81c0b44a60ca92dL,0x2d0e725873bcba90L,
|
|
0x57efe72de902e329L,0x3fcd598676bc27b9L,0x492adf0393940c09L } },
|
|
/* 33 << 287 */
|
|
{ { 0xf2ab8e22973a4b6bL,0x6a96f2ef6ad73ce7L,0xad5e22547235e929L,
|
|
0xfab3e4a9bc6c3b76L,0xf69fb2062dc950d0L,0xd863ca9049478ff2L },
|
|
{ 0xec669f122749fabbL,0xe1d28bdc71a6d279L,0x766ee6458372942dL,
|
|
0xd118b90480ade5ccL,0xedcfb0a72293740bL,0xa3ee3a67f16b29cbL } },
|
|
/* 34 << 287 */
|
|
{ { 0xc29fb53e118a0c7dL,0xea7a1017193b834cL,0x678072a2cec93ecbL,
|
|
0x9054d6b72475dedfL,0x4a7d477342ee616cL,0x05cec7f8680f8a43L },
|
|
{ 0x39c491d496915870L,0xe07a2b1d8746edeeL,0x1d8ed3c83566e7fcL,
|
|
0xc7d744e5e002298bL,0x8a0acec99c0e6388L,0xb2daac39ebf48fe3L } },
|
|
/* 35 << 287 */
|
|
{ { 0x773ad1cb8e133d97L,0x1e29f5a2872523d3L,0xa2a742293a09c1ffL,
|
|
0x809e6d284369ca06L,0xf22e521a7fe148caL,0xbaaf90c383ef9578L },
|
|
{ 0x65aa9b54d633b2d5L,0xe55f2ce29a2994a8L,0x8a0af446e67e0b85L,
|
|
0xb9714de9c1f062c8L,0x1f4047dd2a3aa1d7L,0x39658ea965179222L } },
|
|
/* 36 << 287 */
|
|
{ { 0x0322b29a57fbc5cfL,0xf55af7863078be9cL,0xd4b186e6ecb59f79L,
|
|
0x50f5fe746d950733L,0xaf8a1898a9f90d02L,0x483801a742d6d9bfL },
|
|
{ 0xf0a0af145ec09c0eL,0x85af0e6188383360L,0x404b295e42592235L,
|
|
0xb3199d63c596493cL,0x7aadacdb194abb80L,0xac84563ec1c845c6L } },
|
|
/* 37 << 287 */
|
|
{ { 0xd78d1dae5336e58dL,0xa3f36e0bc5ff354fL,0x8421f95e5d1ed78cL,
|
|
0xff4c16019f360c43L,0xd5efa09f8bb582a1L,0x0ece005aefb39652L },
|
|
{ 0xce8bb58036c2c940L,0x11f8f74bcd1ae8ccL,0x923c350b57a2f2b3L,
|
|
0x2438e3213c86faacL,0xe76129503e230776L,0x35c73d415e6158e2L } },
|
|
/* 38 << 287 */
|
|
{ { 0x8ffda4643672507aL,0x76301be7dd91327aL,0x42720bb0958860bfL,
|
|
0xedc0b8945ad4f455L,0x2fb553201bfbeb4dL,0x22a425bda1c6494dL },
|
|
{ 0xfb927a85de0e7f52L,0xb84a82cf49a4b6a1L,0x8afd0546b640fe0fL,
|
|
0x23b78fbed2fc15cbL,0xeab469c26742a49fL,0x308e453fe277c7cdL } },
|
|
/* 39 << 287 */
|
|
{ { 0x60ce0f55af7b14aaL,0xf2577fbe5cf5a2caL,0x7bb9521fabf3bb41L,
|
|
0x68b6409def00287aL,0x700bf423bfaf9391L,0x98e6c3017d637300L },
|
|
{ 0x342ed4870ce28aeeL,0xad8b8dc383b059dbL,0x1b8a892b85d0a485L,
|
|
0x553c4fad6b7a7d3aL,0xf5692acc198d0379L,0x6004ebb3ce932f00L } },
|
|
/* 40 << 287 */
|
|
{ { 0x6895dbe2f820c195L,0x3787a5003f6c7b40L,0xdc718243ac1e90f3L,
|
|
0x352f8c91ba5d0870L,0xf3d1c53eec0112b5L,0x08a0782f6b84f64aL },
|
|
{ 0xd659e6358eedd5d4L,0xfc30df6c29537276L,0xbfb09978a1755ce0L,
|
|
0x227f7b12aa2b4187L,0x828730b9226539d2L,0x9051a37cb2472c95L } },
|
|
/* 41 << 287 */
|
|
{ { 0x430c2a45d0a0ddabL,0x916aa68926a6291fL,0x9db5510268dff24fL,
|
|
0xa22121c1850a7aabL,0xd43416194e2d9670L,0x7ef2cb9415cf7636L },
|
|
{ 0x2cd6ddf6bf97b27dL,0xac5676b625aba9c0L,0x3ca96f7ec4ee110fL,
|
|
0xc6900abd08e7ebb4L,0xcd3942fbdcb91135L,0x62d6b6f6a8ad56e2L } },
|
|
/* 42 << 287 */
|
|
{ { 0x1ec7f2410828d35fL,0xd94c2a926ccae554L,0xdf4227273c36ecedL,
|
|
0x2facd6d89fa6582bL,0xed43247ed349d3beL,0x1d59d55d1db6fcc6L },
|
|
{ 0x2b5074b1ee1bea38L,0x025496aac9c21a8fL,0x57dd7fa1d1d817edL,
|
|
0x57b5572aead03124L,0xdc024be87314616dL,0x5bb5b23c10f6e38eL } },
|
|
/* 43 << 287 */
|
|
{ { 0x643cb9cd53812134L,0x016a11e8092ff9b5L,0x227f3dfbfcde37bfL,
|
|
0x01b9bcebe8a8fc6dL,0x7009ae45e1da0dd6L,0x193b6f519e2908f3L },
|
|
{ 0x28656302230db5feL,0xb0a730c41aaeee73L,0x028320ab387addc8L,
|
|
0x92165d909a92488cL,0xb0b2f8f09066c95cL,0x0fa55db564007634L } },
|
|
/* 44 << 287 */
|
|
{ { 0xbff4fe0844284b10L,0xc7e3f8da19c2f775L,0xdcd97e54a45ab746L,
|
|
0xf53158a9540ee8a5L,0xfd19068728c4aa74L,0xa3447e30648fa2e1L },
|
|
{ 0xa6794670c374cedcL,0x605629c258204248L,0x1b86f8e6f7d8db3dL,
|
|
0x1e8ffe8bff0f38c9L,0xe4a556b8e274c82bL,0xb31406c94c0076d6L } },
|
|
/* 45 << 287 */
|
|
{ { 0x198999821e555a0cL,0x831e923fbc196442L,0x8b294623f682e135L,
|
|
0x79ba90c01743c6e1L,0x74f8dbafeff5ed22L,0xe4c3257d5c010835L },
|
|
{ 0x9cf94a208f9ec66bL,0x9fe9da3ddc303c43L,0xa53870be0cb716daL,
|
|
0xc322ffaa2aef881dL,0xb9ff76ff0fcd5580L,0xdcc125d49ebb1d7dL } },
|
|
/* 46 << 287 */
|
|
{ { 0x747b6b6ddecaf88eL,0x1a32f8ba368cc7caL,0x52a3a00f60d84fd7L,
|
|
0x60052af507adacf7L,0x8b7bf25650b8de16L,0xb8b2acf8194926baL },
|
|
{ 0x4bda72c81d1ef524L,0xe350f73288993f96L,0x63fee4e2e08c5d39L,
|
|
0x1f2cd9cd5db46904L,0xbf11ac311668d3bcL,0x8eaa064371d721aeL } },
|
|
/* 47 << 287 */
|
|
{ { 0x33cfdcb3e14210feL,0x4abad5ec4946aa01L,0x14b42417a8cb53b3L,
|
|
0xeebb0d70238d4edfL,0x8c9d87fdb5bdb30bL,0x3cc680f17c928b33L },
|
|
{ 0x4b2b2358757c2607L,0x51a70a33c1c8dedfL,0x62a26d776b22d113L,
|
|
0x2f4acd62ef3b4f5eL,0x403e91bf6ed00636L,0x219ba3577bf74d3cL } },
|
|
/* 48 << 287 */
|
|
{ { 0x7de743e2b39317b8L,0x9205d4472d372acfL,0x8226fc303eeb0012L,
|
|
0xab2a3e052af74be6L,0xbe4767804af91ac0L,0x98497c710ca36bf4L },
|
|
{ 0x74fdf7cd8d6dedb4L,0xb50778eea0fc5919L,0x5d5ec33f2fcd7c63L,
|
|
0x667b81937f33cde0L,0xce48ae4b38364d44L,0xb8578963223ed67eL } },
|
|
/* 49 << 287 */
|
|
{ { 0x3e5688e46bfd7adeL,0xb3f1eb051b80bd4bL,0x8626c4cafe3de456L,
|
|
0x8846bc714b7e5444L,0xa54c7cff689e8a67L,0x8c3ea61f43eadcf6L },
|
|
{ 0x924f17d6fde15178L,0x45319eb705c08d2dL,0x6d55775d9f85dcbcL,
|
|
0x2aaf9f7405278280L,0x574a13e77b617153L,0xe7fa921ae8b15bebL } },
|
|
/* 50 << 287 */
|
|
{ { 0x9dd54056514e343aL,0x8d9116dff12aa25fL,0x5322ec38e3397844L,
|
|
0xe1843921571036a1L,0x2cde0a48650beb19L,0x41ad4a7e4f259728L },
|
|
{ 0xf314fceeee6448b2L,0x80006b2aff0e81f5L,0xb5ee5524d51d229aL,
|
|
0xeba6d733128e900bL,0x79278cb8030f391aL,0xb24bcd63a9a5f9fbL } },
|
|
/* 51 << 287 */
|
|
{ { 0xed867a7b37d10743L,0xd57d2d8df510023eL,0x4d500e4c737e0a50L,
|
|
0xcfa119900ecbf795L,0x3ac126b89373bdaaL,0xb06324fb735449a1L },
|
|
{ 0xfe321df5cd79de70L,0x52d625dbfd07c6d4L,0x88ff505a3d628e51L,
|
|
0x120350fab044d725L,0xf718b20ad02f9515L,0x766698630bbea1b2L } },
|
|
/* 52 << 287 */
|
|
{ { 0x6293e0ff50d9bda1L,0xe7259ada433b4dd3L,0x39aee63e821cee67L,
|
|
0x4d707c7144b10739L,0x42b9e0f69bd6efc3L,0x7d71edcc0717a61dL },
|
|
{ 0xe7df9e56d1e5a5bcL,0x7895b638ddde509bL,0x6fc597b3d2a6a822L,
|
|
0x022da65d96d2a8abL,0x95541ce7cff45c72L,0xa5bb7799e649800fL } },
|
|
/* 53 << 287 */
|
|
{ { 0x7472e4c963676cd5L,0x2836b1d52687f376L,0x1460b664f732a51aL,
|
|
0x7c4541f22a214ae1L,0x743a524d107d6622L,0x9c64e3ff082fc015L },
|
|
{ 0x9341f3fc8e0d13bdL,0x9946043e529554edL,0x6fbbbcda5798d6ccL,
|
|
0x3bfad5fb242115c5L,0x1f46bd1945ab793cL,0xd9383bcf3b42f81aL } },
|
|
/* 54 << 287 */
|
|
{ { 0xe4ff888f820a13b5L,0x7cd18b3eaf1bfbbbL,0x3fb7f681bd4e4dd5L,
|
|
0xaba364c287d46c40L,0x44e209ab659b3498L,0x5e071a272dde85c1L },
|
|
{ 0x8a029b1fb969c790L,0x51bab9f0c6fd1c22L,0x9ee9b047b83eb0c1L,
|
|
0xda0b39439e5b2c35L,0x0cb30625f20ca425L,0x8e4dbd013d25c2c9L } },
|
|
/* 55 << 287 */
|
|
{ { 0xe7aa41a96b8f7599L,0xe97ff24a3f556ad5L,0x10e07713dd6a9329L,
|
|
0xaf464b18c4d06a93L,0x9b8e5145a1ccc85fL,0xa256680bd0487ca6L },
|
|
{ 0x420b60bf815652f1L,0xeaf09eff5bb45b6fL,0xa31e875f8845a557L,
|
|
0xb035ee09eebe0911L,0x1402d1d86531c356L,0x24aeeaf0b630f75aL } },
|
|
/* 56 << 287 */
|
|
{ { 0x4b20d1829567f5f4L,0xde7e814918f02b34L,0xc9a4be7becff9dd7L,
|
|
0xe2f70bbe9812fd3fL,0x471bf90c9c889263L,0xb60d01b53e61f5bfL },
|
|
{ 0x258c7f89d22d855bL,0x35ef5c15b75a7d4fL,0x26d8e1dab247f27dL,
|
|
0xcf1361998d0f7757L,0x312447803f8e894dL,0x8d2a20bae1a3d47dL } },
|
|
/* 57 << 287 */
|
|
{ { 0x6447cc97f08a0417L,0xd98ea6837afee809L,0x81426d20bf7990aaL,
|
|
0x848bd6223526ad26L,0xb6cdc5b4fe1f3381L,0xe7e10bc7a26189ecL },
|
|
{ 0x25a9f7cf57464e6bL,0xf90c1aa12c86ddf0L,0x2126ed530124705fL,
|
|
0xf384e7e5b58e6341L,0xb2dfeb0a12207e57L,0x72875c55e0e23287L } },
|
|
/* 58 << 287 */
|
|
{ { 0x37579c3eb954b7a4L,0xf0291f8f3f2ea608L,0xde68104f90a85ed2L,
|
|
0x6a35fea9e1088788L,0xe8d5517470d15d00L,0x0bc72de552467f90L },
|
|
{ 0x2ded3293297be2b8L,0x76c53e5761ddc65bL,0xae4b2b5015562d6aL,
|
|
0xfe7cdd329e0aeb79L,0x98ef4c518dd474ecL,0xfca56ffb0076b23aL } },
|
|
/* 59 << 287 */
|
|
{ { 0x120adcba6f60309aL,0x41e46edeca8ab2c7L,0xd68aa4c529b79ce0L,
|
|
0x21a21f8d7a3b11fdL,0xea68dc4739d0809fL,0xd4faa71a27973044L },
|
|
{ 0x65b42172810be134L,0xb2dafa6c793aee92L,0x951e9f6f1f78f7dcL,
|
|
0x2affc70a17fdba97L,0x4f0f4c51dcaa2789L,0xfde1951c9e703980L } },
|
|
/* 60 << 287 */
|
|
{ { 0x80826a196488d9d8L,0xfa452795f3ad867aL,0xdd9bf8f5bd4e6674L,
|
|
0x324386227e8e3ee5L,0x7af4c605dff05c96L,0x79efb6f9541cbbd2L },
|
|
{ 0xeb5ff62675e78961L,0x5318c4c30be43d7aL,0x02df456daa4a0562L,
|
|
0x4d6002d88a916a81L,0xf0dbc349f68eced2L,0xfd75d4d5ec8c3fddL } },
|
|
/* 61 << 287 */
|
|
{ { 0x6c15d903544378f3L,0x0a9bc9d735ea3c77L,0x9d9066408caa4acbL,
|
|
0x9ba27502402be833L,0x1ed4123f8773fd7bL,0x236364ba190eac92L },
|
|
{ 0xd6287f17f8383ee1L,0x75b7b0b5d9739582L,0xeb6cd50d0292806eL,
|
|
0x216f36dc43448409L,0xec136f8cb6c4958aL,0xfa805ab49ef7810eL } },
|
|
/* 62 << 287 */
|
|
{ { 0x5c6448f70d00b29aL,0xaa134b87124cd55dL,0xc2c6b269d94b72d9L,
|
|
0x0f0dd472412f76d8L,0xb4cf3c1873f6571aL,0x6aed00218b9218ffL },
|
|
{ 0xa55b74eaa0c9dde9L,0x59b952125b4c8fccL,0xbc9873ea4ddc367bL,
|
|
0x26b369ba0fd30421L,0x71763a45e446f4fcL,0x67e800edaff54707L } },
|
|
/* 63 << 287 */
|
|
{ { 0x4de97de1126b4919L,0xd631d908883ea109L,0x37c77d729f6ec50cL,
|
|
0x910932e6df718c7dL,0xa798406855028d0fL,0x21b09540a6119a26L },
|
|
{ 0xb837cceced4b4962L,0x3c83f4bdba66002aL,0xa067aa3d2ac41124L,
|
|
0xa64bff30d08dc360L,0xa22778a5c108d3abL,0x7f732064aac4dee4L } },
|
|
/* 64 << 287 */
|
|
{ { 0xc68b641ec795a2c7L,0x4fe559b15a4d6647L,0xeda98cbad89ce668L,
|
|
0x15f84dc06c269d8eL,0xf0eb685ecbf34023L,0x3668c530c032634aL },
|
|
{ 0x2e3d7fffe4531f59L,0xe627030685494d06L,0xf02cabcfa3e050dfL,
|
|
0xccd2da67c001dcd9L,0x50aa3723066d2d52L,0xdb0756507224a41fL } },
|
|
/* 0 << 294 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 294 */
|
|
{ { 0x04418b5965b55050L,0xa8a797c3d324aa67L,0x5f87e22c7c65a6d9L,
|
|
0xaac710651dbeffe4L,0xff619d64bd3cc05cL,0x9a29c966e65c92c4L },
|
|
{ 0x23af2b21dad7fcbdL,0x4950a767153b817fL,0xc34a7efac6478c55L,
|
|
0x57cde95af6cd140eL,0x64b74575f5a0db2eL,0xd4b5ea5275d7fb76L } },
|
|
/* 2 << 294 */
|
|
{ { 0x284050628e72aafbL,0x655bf3538ea8bf00L,0x789d944405547f7bL,
|
|
0x7fa445ed3441e472L,0xfeb198254a44ce87L,0xccb5f12c129aed14L },
|
|
{ 0x22b05de3af94fb34L,0x7422a040d3f03199L,0xfba252caa83f7f08L,
|
|
0x0f6ad6e6cefaa757L,0xe1ad18716517d806L,0xd16dc8ed8e9d97adL } },
|
|
/* 3 << 294 */
|
|
{ { 0x0208092a0e3dca68L,0x9a49bdccd1a09971L,0xe5194181aefab9c1L,
|
|
0xc1c9690a0076f47cL,0xd7499e95b486c2fbL,0x83a69e43d4b72e00L },
|
|
{ 0x75f2838a2d1a6c2bL,0x57a24c69751f6366L,0xd956ee08626cc684L,
|
|
0x434cadd7e6ce3249L,0x3d4eaececfe289bfL,0xbbd53b961b8aafddL } },
|
|
/* 4 << 294 */
|
|
{ { 0xcbb99194a3736eb6L,0xdd5161cd36dcf470L,0xd50b24aab6ab6c03L,
|
|
0x419d2810bc41f4b7L,0xe2e88d7a295496cfL,0x350713f2f2457ac0L },
|
|
{ 0x838e4a360427e2aeL,0x7631472a4d974e5aL,0x9fa3ab1c7a5c5fdcL,
|
|
0x324798cdde34cb8dL,0xbfa5a9d0889105feL,0xd05dad34fd0df249L } },
|
|
/* 5 << 294 */
|
|
{ { 0xb47c1d47d6a3a1baL,0x99bb7e6572f65bd5L,0xf251794578abfda2L,
|
|
0x827f2aba3e3e3420L,0x436ee73250e2de70L,0x5c9ac6dc10eca926L },
|
|
{ 0x2ec67465181f5e18L,0x1e8f32fcc6c83d02L,0x9dd3aeaf3953bd81L,
|
|
0xca955f4b07086daaL,0x7b4b6f3fd14eaa88L,0x562e75f1148d826fL } },
|
|
/* 6 << 294 */
|
|
{ { 0x536e5657cb419fc3L,0xe8c208bc1d271dd1L,0x6a3713bd22d2b9adL,
|
|
0xa4c761a7471d808dL,0xd93aafb67e6dca35L,0xc46c0ae38f55ca32L },
|
|
{ 0x55dc0de7a78bfca0L,0xe9cfb3013407d0caL,0x777e2a60b3256c14L,
|
|
0x32b2238c6d8fee02L,0xe8b3539646e43ee8L,0x310bc1ba247985ddL } },
|
|
/* 7 << 294 */
|
|
{ { 0xbb9bce6810168f49L,0x32edc368717445e3L,0xb0b5a04426aa3ff2L,
|
|
0xc671f1fcd166542bL,0x3142864df61d2523L,0x11b2dfc7b0c67410L },
|
|
{ 0x2e031a05c99690a5L,0x4782fb749fb7bae8L,0xeac2cd506b7175acL,
|
|
0x2e116782bef2313aL,0x67992027241c4d2dL,0xf8aa0e09a6952d9fL } },
|
|
/* 8 << 294 */
|
|
{ { 0x9974759c581f9d3cL,0x9e76a970e5cb1973L,0x8afec58ec64941caL,
|
|
0x2d7c57fa01d05575L,0xc07c74cc5c448db5L,0xa52474ce01bb1440L },
|
|
{ 0x93162d9700115bbbL,0x483b6147fd7480f9L,0x4f28c57e6af18dedL,
|
|
0x36faed8f174a3089L,0x702dbd64a3dd6265L,0x86a9c43f6adc0d7bL } },
|
|
/* 9 << 294 */
|
|
{ { 0x9d4d4b3c795eb646L,0x727e2aa17485839cL,0xb50018a5aa9250baL,
|
|
0x5a15808d1ba716adL,0xb1748d580ff91cebL,0x0131bcff76144b6dL },
|
|
{ 0x23fea4a58dcccffaL,0xe8eddb5ceb64caaeL,0x011a65971c3c5e66L,
|
|
0x7723dfba377a8f6cL,0x00167c71dee2f651L,0x3e89ddf5ee0e4325L } },
|
|
/* 10 << 294 */
|
|
{ { 0xa3510710b9de7b63L,0x9f364ad14019c9dfL,0x5b66a5d79b5bdce3L,
|
|
0x2b2f695178b1b385L,0x3e4783d33cfa9f99L,0x1af517506bd6bcf4L },
|
|
{ 0xf9c0686a81d8d7efL,0xdc0f22ec37c068d3L,0xe1b8665393545fafL,
|
|
0x37ca8501a8a52881L,0x07ac5c8a5603e359L,0x98fb2bab542cc937L } },
|
|
/* 11 << 294 */
|
|
{ { 0x96326ec323da6b81L,0xdb48a5e1f90a6f83L,0xbb141660f640a0fdL,
|
|
0xb51609375b92f5c2L,0xaaabd54c997244e4L,0xbeb8ab2f859bb92cL },
|
|
{ 0xcac7c5dda4be476bL,0x7093faea7f58c1b2L,0x3167a2c45c6ad412L,
|
|
0xabd86bc9544fb9a7L,0x571296a72448c363L,0x4da64cd9c6cd4621L } },
|
|
/* 12 << 294 */
|
|
{ { 0x4981be690c5bbd3eL,0xb047df0a185fdb55L,0x3168e05074cff00cL,
|
|
0x111150a1b52c7f9cL,0x0db2ed84a51c7986L,0x7d991630e61272adL },
|
|
{ 0x7443d93628de14ddL,0xfdf31f41a5daed5fL,0x71e0ef4e866b5e40L,
|
|
0x05c57a45b965a670L,0x85bdb58c70e1aa77L,0xe4d1fe2a9df3ce32L } },
|
|
/* 13 << 294 */
|
|
{ { 0x6ff2b1a1772c3796L,0x9b88c1178e186fe8L,0x342ba11f4312af31L,
|
|
0x9a93a4d1a86ae2b6L,0x496d5f219d59e3feL,0xce519a7d6924acdcL },
|
|
{ 0x6fdef82327c46e44L,0xab5504c34d31c9bdL,0x6fa52bca71693677L,
|
|
0x31221119033c80f7L,0xdb2cb49dc0a22f91L,0x4962d58f9b4aeb5eL } },
|
|
/* 14 << 294 */
|
|
{ { 0x5d4618982f722563L,0x11d22b39567db14cL,0x9a8f004e6779cd40L,
|
|
0x0812ae3d5473ecd5L,0x4ed828624e6c296aL,0x2d9ce40c064ee61fL },
|
|
{ 0x4856d586d8a9eb1eL,0x2ddd6b125d1b5e3aL,0x0ab5eec0382fba3cL,
|
|
0x302018dffcf4a9c8L,0x7b4e6fd2ab3cdedbL,0x266c246a8f64cb1dL } },
|
|
/* 15 << 294 */
|
|
{ { 0x55bad54bd6dc35e8L,0xa43d72ff38642612L,0xe39a191609bc85ddL,
|
|
0xc9d4bc9b0f85d3baL,0x84cd12b61367a70cL,0xf4ebc0e04937bb2dL },
|
|
{ 0xd083145949dc027bL,0x110751601cf29970L,0xa443a29c0b76b4c0L,
|
|
0xee5b8d0ca0de3249L,0x368aa3259002e7d6L,0xeb48afdc6182e2e4L } },
|
|
/* 16 << 294 */
|
|
{ { 0xc41e4aedf5c3af59L,0xa0284ad06de9a78aL,0xf5eaab7b8ed812d2L,
|
|
0x7801fbb81afb58b8L,0xbe5cdba671efcc3aL,0xe31a0e3ccd10cb91L },
|
|
{ 0x882e821e85dc0bc6L,0xd3ad070fbb32e506L,0x3afede2bd8a0f038L,
|
|
0xe20a117c857fd3a0L,0xebaa2aa43060f767L,0x6524aa0d2b9d1da1L } },
|
|
/* 17 << 294 */
|
|
{ { 0x86aeca0ffd81174dL,0x19bc6ee60c6eefc8L,0xc85f7f2ea91f0e19L,
|
|
0x09b9276ad2354dc8L,0xb62adee0542a669aL,0x8354ad1a88097445L },
|
|
{ 0xe67d2834df9984a1L,0x2330c8cfa64b2864L,0x309dcdeb39e7b54aL,
|
|
0xbbba4737a18cf5eaL,0x47511b1d92861a8eL,0x99d4bd673286d404L } },
|
|
/* 18 << 294 */
|
|
{ { 0x9cc5847c88cffe33L,0xff726b0f6e8eb6c1L,0x9bb2ca161bc45d8eL,
|
|
0xe7903009a6d8a5a6L,0x4f089cc047db2201L,0x4135884de6b5928aL },
|
|
{ 0xb1a86a0ae5c017cfL,0xb1d9bf6db0a393dfL,0x33d9c1c628bb3277L,
|
|
0xcb05b67b45b582ceL,0xa72585fcf33792c5L,0x78b7c5e8a7d1ed84L } },
|
|
/* 19 << 294 */
|
|
{ { 0xbb83b446b1b4a091L,0x66440b3d9603d875L,0xd1931f33c2b45d1aL,
|
|
0xb8b67f20098d4cccL,0xa3583818790f208aL,0xe01194bec4a3e88fL },
|
|
{ 0x29301bb192e8b150L,0x1795cabe9448ee60L,0x377d8f9752500c48L,
|
|
0x474e73d65a457e79L,0xce0a50ef30159027L,0xfe69abaafbb2c214L } },
|
|
/* 20 << 294 */
|
|
{ { 0x70e478fb9346df25L,0x01dc0c2eb4a4ada5L,0xaec82b005be36ea7L,
|
|
0x82618b8f6717e06aL,0x2db1f6d4008f1977L,0x4e493f3b16b390d1L },
|
|
{ 0xfe86fd4d990a75ebL,0xa1cf7f99783f6076L,0x6cbb23e70c049158L,
|
|
0xd05be7e5ed456235L,0x601374069bd836efL,0x94ec964432e5f604L } },
|
|
/* 21 << 294 */
|
|
{ { 0xd96e4d920fc48c7bL,0xa2e29660f66e491cL,0xb92d850601146906L,
|
|
0xa43f4803afe346d6L,0x27885d98700b6bccL,0x90662e9f595d8de2L },
|
|
{ 0xefa7f261f70d1007L,0xfe8a8be3fc72531aL,0x3b3f7541f1aa8d93L,
|
|
0xb31bea258215966bL,0x15faa4acf35d2be8L,0x0a5f95e786c9a45fL } },
|
|
/* 22 << 294 */
|
|
{ { 0x3361e1ce3d87bfa8L,0x92f235e78dcca4f0L,0xc8084cb4be323fd1L,
|
|
0x3fd481a5c24c6d16L,0x9b1bd9402cea81baL,0xf50911910c5aa59fL },
|
|
{ 0x4cd8c9eff81d5e2aL,0x5ad000131550bff4L,0x29d47b9f8cc32e55L,
|
|
0x66e3e6f111694eceL,0xd5edf7017950dd7eL,0x9ccb10960f6350c6L } },
|
|
/* 23 << 294 */
|
|
{ { 0xc31e47ff95e784e4L,0x7ad0dfd63fa14241L,0xc91482092dab896eL,
|
|
0xe9a114cccb9bb463L,0xedce9e6f16cb16afL,0x0ee2ce0607508893L },
|
|
{ 0x1aedb80ce31c0f54L,0x235d4591512658ccL,0x9029fad2a38583f1L,
|
|
0x95b1e1ddebef898eL,0xeb2f21809efabef3L,0x458c4338b10e9cbbL } },
|
|
/* 24 << 294 */
|
|
{ { 0x09db138d18f2470cL,0x63bd2290f613658fL,0x0bb647794feebab9L,
|
|
0xfce4aee17fdb1e71L,0x7d5c0c61a7f1f65dL,0x46405b618d02d6cdL },
|
|
{ 0x7cac04856fdcb0d0L,0x85224c4b2f8ec5afL,0xb5879a59db0aa864L,
|
|
0x75f391b8ff94f8b5L,0xa6c994ae49c97f8eL,0x4d968fadd690b232L } },
|
|
/* 25 << 294 */
|
|
{ { 0x1e436df6e11a616aL,0x9eb49c76bdb932a8L,0x207d2fe90e6591aeL,
|
|
0x6e05acc8233ac034L,0x464dd321f3d04d32L,0xd4ba4889af43c171L },
|
|
{ 0x0808e5207120fab9L,0xb9e4726c3fbac672L,0x5dd1c13b9d7d883bL,
|
|
0x1c091808771f1edbL,0x76988d1c75eac1a5L,0xb0fcd3a893a67be8L } },
|
|
/* 26 << 294 */
|
|
{ { 0xf5cd290a67e0b4e7L,0xaa6fa6807c1594b6L,0xebedfbd7b63270beL,
|
|
0x574b410ba369bfeeL,0x431cba5a020ea888L,0xd3a3102f56c71d47L },
|
|
{ 0x4894bfe0a90a853aL,0xd78bd98b5f9c4b6bL,0x9b1324f6d900c5c1L,
|
|
0xc65c944d718c2147L,0xf661de6ba987f634L,0x0315e69f172628d8L } },
|
|
/* 27 << 294 */
|
|
{ { 0xb12e0ab8aac7ab64L,0x8ce877abb06cf9cfL,0x39b694b40bb11fb4L,
|
|
0x0c2428369b0d8850L,0x6bc9a033ccd50c6eL,0xaa2e77739a1e8fb3L },
|
|
{ 0xa7d8be09608e2e9cL,0xeb4cef0542b9f458L,0xa7268c9b985f66fdL,
|
|
0xd60eeab27acf4968L,0x02eb2db3b6e5621eL,0x82fb4abfad8236c4L } },
|
|
/* 28 << 294 */
|
|
{ { 0x07c60c7522ea5f1cL,0x35beae34a36bee4fL,0xa8b00a09dcba8997L,
|
|
0xa77f1f3a802ce50cL,0x6c4050df2a2144b0L,0xf79bfa96ab1b10dbL },
|
|
{ 0x9025d470433a9b1cL,0xaf3e391790d9eec8L,0xbcad2d629ae2d535L,
|
|
0x7a152829eff0f6a9L,0xe87345cd925fa5a0L,0x6ce007200e84039cL } },
|
|
/* 29 << 294 */
|
|
{ { 0xc65acf36c3d095d2L,0x9192c5fe72427e6cL,0xcb84c43c3fa8b90dL,
|
|
0x2f458fe965e15b23L,0xd8bf193731469f11L,0x1ccd8bb93638cc3eL },
|
|
{ 0xa067022f78e35577L,0x382e6af730ee676dL,0xf197adc2f6d135bfL,
|
|
0x06360834c9a1cf58L,0x413813f7930371beL,0xf7461d04f5dcaccaL } },
|
|
/* 30 << 294 */
|
|
{ { 0xdae449c007f6a05aL,0xbc1b84f55bf26c9eL,0xe3b3f9edb1c13820L,
|
|
0x5442ad5b4090598bL,0x794ef65613749e4dL,0xde809180948b71c5L },
|
|
{ 0x4c72dc7de203c5b5L,0x8902b0971b349fc4L,0xa899bedb225a1569L,
|
|
0xeb7da73de6ff3f53L,0x6ee8e1607c0be37bL,0x9ee667d2a31bf943L } },
|
|
/* 31 << 294 */
|
|
{ { 0xbc91031108b6fb2bL,0xa5e0ab3e25e06a55L,0x16ff0705360f1698L,
|
|
0x71c0aa7487e72a67L,0xa1f1497b355c75e8L,0x179b67bffa6bbcd7L },
|
|
{ 0xc9db6590b6738583L,0xf77660c4d87e72bdL,0x0ee2e7b3f13abc2dL,
|
|
0x0cdf5a37a4d922b6L,0xaa8af2d596c853a4L,0xdc452af4e0092356L } },
|
|
/* 32 << 294 */
|
|
{ { 0x5017e145db81146dL,0xc7d2086d45c54db8L,0x2541059dfa98234aL,
|
|
0x4bf344d99985af98L,0x39737ed67b5b7b1cL,0x8e24691987c411adL },
|
|
{ 0x2fad8cedb877a75fL,0xe42352df17e60ee2L,0x1a53d856404043f7L,
|
|
0x6c1f07a5863927a1L,0x38d3a4f4b6892121L,0xf4c1092001976c8fL } },
|
|
/* 33 << 294 */
|
|
{ { 0x541732a70224214aL,0x61617b515cb2d019L,0xc560c24bcb4fc6b2L,
|
|
0xd0ad737943670d99L,0x08cdd32eb83112a8L,0xbe57493d7e29810fL },
|
|
{ 0x7834124899d4523fL,0xae1a5857cc8e5fb7L,0xf8b62a59b8454efaL,
|
|
0x7c63c900ab0f4729L,0xeef9243d72dd0f5fL,0x6b865dfbad766386L } },
|
|
/* 34 << 294 */
|
|
{ { 0xd11536eefee626b8L,0x1d2471dd8077b5d4L,0x7db062debdb9a4dbL,
|
|
0xfcc62c0ab9f808ebL,0x619b54c6ef392bc7L,0x81e146fc51b9f5c9L },
|
|
{ 0x0343807c7bbd52b3L,0xe024a9f1572125c5L,0xf8b886d86c57cb31L,
|
|
0xcb92aa7d5398a318L,0x4ce0870d2410ef34L,0x1a40c103f8366683L } },
|
|
/* 35 << 294 */
|
|
{ { 0x46485baa7bb78552L,0xc0f685f23e6a3f0fL,0xd24970b5fb3cc0ecL,
|
|
0x0d1f380e7bf91feeL,0xf0f7fcafe7624351L,0x27cb99bc697a8055L },
|
|
{ 0x55be14685cdc7560L,0xf006927927ba7f93L,0xb0c25c759fdd0e70L,
|
|
0xda82e73785818253L,0x7d40d86946304c51L,0xe06ea6fdcc18ba58L } },
|
|
/* 36 << 294 */
|
|
{ { 0x99d37ade6b65e17aL,0x61ca538e38ce217cL,0xd3ea83f68ebb89edL,
|
|
0xce6611eb4b02964eL,0x0ec7cc2f5c0a8e44L,0xa985b0c2974240a4L },
|
|
{ 0x7a3abb6c42ee5b0fL,0x55f049a0cb2eddadL,0x69348b027c44a60cL,
|
|
0xcabc65191974a8c7L,0xd9def4bc07b91a35L,0x684a2d71b93b34c3L } },
|
|
/* 37 << 294 */
|
|
{ { 0x21c37d21f48f274cL,0x2de96b4da082a098L,0x82520e0ca606b6a6L,
|
|
0xf76c9ec6e1050b81L,0x248c5efbd1ce149dL,0x5a36ae1e9a909790L },
|
|
{ 0x8790b09bec8b43afL,0xd592dce560ff709cL,0x726d699724cc8e21L,
|
|
0x61e37bef5e2cb745L,0xd55a68c26eff3ba0L,0xd47f02659ad265c0L } },
|
|
/* 38 << 294 */
|
|
{ { 0x3e6351ef3932ef94L,0x65625878db5d64e6L,0x118a688e091ec7b7L,
|
|
0x2a95072abdf60b88L,0x5200703540dc0afeL,0x59c3d90b6fc1cbffL },
|
|
{ 0x5622b1b21dfb1a7fL,0xdcb0344834d92243L,0x18fccfa86d7d36c4L,
|
|
0x5d43a14181341761L,0xef375542eaaee79dL,0x4e4667216999d399L } },
|
|
/* 39 << 294 */
|
|
{ { 0x1bca97aa9d3c6b9eL,0xb4bb4f95095cb250L,0x4f2c216a996fb52aL,
|
|
0xc4d01916f379790cL,0x510882a4359df53dL,0x6457d76a671d6a8fL },
|
|
{ 0x0ded2623061f7d64L,0x3cb4f38f1ce7dcf2L,0x0d86313a224ffa88L,
|
|
0xba8a15012b99aeb3L,0x2fb92183d69f72b5L,0xd3b9d6daf1fdb8f0L } },
|
|
/* 40 << 294 */
|
|
{ { 0x5d573a3a0b6320aaL,0xf9ac8ccf289b6700L,0x8bad05cd8f28dd72L,
|
|
0xe2eabd446b62c306L,0x60f70353906ef302L,0x147cdd0c367a768eL },
|
|
{ 0xea9d871635a9e846L,0xdd71e80aa8684430L,0xa56a5ccd530768a8L,
|
|
0x59d241270a3e42f6L,0x707cbaf0faa367d1L,0x5419b14f52a0cbd0L } },
|
|
/* 41 << 294 */
|
|
{ { 0x625bf4e6d991d842L,0x56b95a56a81daaaeL,0x2101137c9911bdadL,
|
|
0x1141b0a1bbded1c2L,0x85deb889d1df8d43L,0x51e3e17edac3e376L },
|
|
{ 0x5d31639381fb19f8L,0xd1cb634b92eed2c4L,0x72a6ed7b943746dfL,
|
|
0xd55f55fb22b85e00L,0x255b025804193aabL,0xd0b94c5d86a78c96L } },
|
|
/* 42 << 294 */
|
|
{ { 0x121c15d859c3556aL,0xabe25c21864380dfL,0x2de101832627f78cL,
|
|
0x19988e4b4bcf4a0cL,0x4ed3aad8a2f9cb52L,0x50f8cef5b2b257e1L },
|
|
{ 0xab0b000c49f7f596L,0x6cb997471fb9c471L,0x331974b95fefb8f4L,
|
|
0x57cf97578e2e0e5cL,0xa82a8d06174a626cL,0x40ef371b03e80567L } },
|
|
/* 43 << 294 */
|
|
{ { 0xfea713e1324cbab8L,0x738885e61897e7baL,0x8234ed08126aaa13L,
|
|
0x4f66467661ed1548L,0x61fdc2aa172c432bL,0x78eade7c9ebf0a29L },
|
|
{ 0xd50ae7156aa104a9L,0x977d7a605536df98L,0x024014bdc9eb983cL,
|
|
0x75d53c0585e21649L,0xc181d67098404cffL,0xe00f5f5dfdb3f05aL } },
|
|
/* 44 << 294 */
|
|
{ { 0x3cfe2987d10542b1L,0x5935e0dc29f5b006L,0xce5932d6d83344f2L,
|
|
0x67aab7ad9800a6d5L,0x3ef2b0e765073619L,0xc381a99454aa9ccaL },
|
|
{ 0xbf069577d4011571L,0x33b70c5d4d1ce997L,0x801ba41c758c9b1bL,
|
|
0x6c2dd5ec36968958L,0x31820ca087921665L,0x0b7f0d337ca55668L } },
|
|
/* 45 << 294 */
|
|
{ { 0x0b099a5afce6c55fL,0x91d1caca408dd628L,0x42a5181165449db1L,
|
|
0x540935b040715d49L,0x8feabc5433b00823L,0x7107c06240c2485fL },
|
|
{ 0x13f307ac4fea64e4L,0xae4ec4a713a04327L,0x8297be380eff71f5L,
|
|
0x3434286f1ecd0b2eL,0x4d7a5456a3e9d625L,0x657f950b6a0d04e2L } },
|
|
/* 46 << 294 */
|
|
{ { 0x2237f78ecebadb15L,0xa1184339da01f9e2L,0x542c3354ef37abd1L,
|
|
0xbec90883de982d70L,0xbacdbb9c457d3024L,0xf1d167c19840ea52L },
|
|
{ 0x9ed827d8433bd3cdL,0xf4e5b4231102fdf3L,0x2038c92fb63d6056L,
|
|
0x490cb0188eb9ae35L,0x776331b87c75ffc8L,0xafbe7c6a3fe2e400L } },
|
|
/* 47 << 294 */
|
|
{ { 0xf668460c9176a02dL,0xa843a70011d322a2L,0x6424f0e8a8c5d1c8L,
|
|
0x0b45a1ab1bc440e5L,0x3b740cb11c3e391cL,0x5aaa89c4d5850e1bL },
|
|
{ 0x77739ee6d632c592L,0x171fd350fffe373cL,0x6a648fcdbd7e83beL,
|
|
0xd98650c6b619f4d5L,0xa4e4ae5438dea07cL,0x10001f5afe0bf5c1L } },
|
|
/* 48 << 294 */
|
|
{ { 0x31cb896b57dfc732L,0xc6b74a1edc323e91L,0xd24a41d0f11b04f6L,
|
|
0xb609a26dab8f7159L,0x96d84b372adbec34L,0x154f5307d24ae7f6L },
|
|
{ 0x36dd3243e10eb34cL,0x055d3b714f6dbbd3L,0x30b1efde36d0c561L,
|
|
0x3846925ce9bffd15L,0xaf401286aa99ba07L,0x3a191267fd48b839L } },
|
|
/* 49 << 294 */
|
|
{ { 0x67145f18e42a26cfL,0x580857fa491122d7L,0xa4e2db8dd03b5071L,
|
|
0x47a39a0d3e379882L,0xb6bfe4b35970766dL,0xe40f4daea8bce767L },
|
|
{ 0x38f199a7e812a217L,0x1407f98d97eec7caL,0x25d6f750236a41a0L,
|
|
0x644327340e811ee6L,0x84d5d9c9dddd6e5cL,0xc1b6ef13c44cae4eL } },
|
|
/* 50 << 294 */
|
|
{ { 0x79879d4f6714e8daL,0xce409617a17abd07L,0x6f2b14d008a6e685L,
|
|
0x817d467409b5e150L,0xa1181873eb51b966L,0x573ba855da6b9544L },
|
|
{ 0x836ec3e5c4a37013L,0xb8da1bbe93fded69L,0xdb5bb6f16edff4c1L,
|
|
0xff30b837f1657d36L,0xa20cf000223270b9L,0x29d60562d44a57cfL } },
|
|
/* 51 << 294 */
|
|
{ { 0x0d6f36b9b98b029dL,0xc4cd72d07a371233L,0x23bd419e4f95cd4cL,
|
|
0x2c95b0a2b80d1e13L,0x0f76e62f7edfbef1L,0xd077194dd303a470L },
|
|
{ 0xd6e20e7cd1b50934L,0xf4201fca2dfeb806L,0xa57dc150bced28faL,
|
|
0xa84d621be3172301L,0x119768fe9aa14d6dL,0x34f1ae864b363253L } },
|
|
/* 52 << 294 */
|
|
{ { 0x2fc83aa3afabd13dL,0x521b745f53c45a27L,0xc6f345a660c18225L,
|
|
0x9609076eb5faa47aL,0x8bdd97fd535388fbL,0x8f5f3bd6e7fd7e87L },
|
|
{ 0x6de4454c1c8e1d5aL,0x8d61ca3b2b35e823L,0x93b66fce4672d30eL,
|
|
0xcb9d601721d09ec5L,0xef98137fb1de06eaL,0x45e212758b051877L } },
|
|
/* 53 << 294 */
|
|
{ { 0x117b89e9ee6e35f7L,0x2ad205aadd203ed9L,0x3f6c950c0689bd4dL,
|
|
0xaba1e4b342f20742L,0x67464b793e22f0d1L,0x74436dfdbe0ad6c1L },
|
|
{ 0xc4a6e964c1470ac7L,0x853ad39b361da35bL,0x261c6fd6a187a6abL,
|
|
0x08d7e89d59fb860eL,0x158e2697e8f88299L,0xf3f1f6f34b04a8ecL } },
|
|
/* 54 << 294 */
|
|
{ { 0xbdfb8d006b562705L,0x76dbc217ed9f2aaeL,0x62f713778cfd02ddL,
|
|
0xa05eed177a5d27e1L,0x60082379a006983aL,0x312af914bf7c2c05L },
|
|
{ 0x7d163fe76c8500fdL,0x722a35299d4d0dbcL,0x9b4c5c3539f93a78L,
|
|
0xb193734c34c7ec06L,0x457db178cda87a84L,0x088dae087f816e0cL } },
|
|
/* 55 << 294 */
|
|
{ { 0x746e73055896ac5dL,0x1d8326c21a7b69f1L,0x695197743132a40dL,
|
|
0x3899f8a03f58720fL,0x2c3070a5df0b7fb2L,0x49bc59f2acb839e3L },
|
|
{ 0xf7d5d3f66b8f5a9aL,0x704ed893a4c3b570L,0xbafde26cab591c03L,
|
|
0xc447dac83388a62bL,0xda80991d4416acfeL,0x1625c9151e729d69L } },
|
|
/* 56 << 294 */
|
|
{ { 0x3104e59e6b843647L,0x4eccb42720bad138L,0xa575b8e150efd6a9L,
|
|
0x68a6b7055a6e4729L,0x670306798f5b2a22L,0xb2cfcf81df9253bfL },
|
|
{ 0x9c3eeb19b8f81c39L,0x082ca86c986b4dfeL,0x1f64eca250250d8eL,
|
|
0xbf26bcfb67f0c713L,0xbc5d0e2a49b609cdL,0x175acb34e6aa3c76L } },
|
|
/* 57 << 294 */
|
|
{ { 0x5237d7368c53aae2L,0x2a88098bbdbc0b10L,0x18f1af11cec6db6bL,
|
|
0x12c23392c4e08b3bL,0x23b652bf3eab43f3L,0xb79feb949f3dca0dL },
|
|
{ 0xb71e311d2b24e0d9L,0x85e48aede37a0f90L,0x93e8a0e753200b6dL,
|
|
0x5d44b87226bf3a30L,0x466c31d1d0496b98L,0xabec12f7dd39874fL } },
|
|
/* 58 << 294 */
|
|
{ { 0x58bc23928ca41326L,0x0744ba8524aa5067L,0x900e7e9baaf80bb2L,
|
|
0x510bd122aff38fe1L,0xf90dd6a1002b277bL,0x829379dc81bf7df2L },
|
|
{ 0x5443b8736372d502L,0x124c2abab5b6f9a2L,0x88b237a4d6020c14L,
|
|
0x3542215108f7a498L,0x39e84240e6234eb1L,0x43d721dfcc5827eaL } },
|
|
/* 59 << 294 */
|
|
{ { 0x43e7597234658dcbL,0xed936b96bdf3a7caL,0x74acb7f60f1923abL,
|
|
0x6a52b28cc007995bL,0x5abf2909a560fbf4L,0x79d571dd256bf1a8L },
|
|
{ 0xa8d51082e4c3281dL,0xc0d6f8aa0b9fdd38L,0xd589f2c57ac30640L,
|
|
0x6abb8faf07635c58L,0x2af1b083d7520b0dL,0x18b9f6c893b951fdL } },
|
|
/* 60 << 294 */
|
|
{ { 0x32e678b4c1ba956bL,0x9e8b137248f32982L,0x9b380a118a8f262aL,
|
|
0x5c2d6ce0807f6d1aL,0xe99c2e909f1b3fa2L,0x6a0c9e4a7c4bb836L },
|
|
{ 0x30d80329ee8dac83L,0xabcf7b76b60bd5fbL,0xc589a0c8c14d56d4L,
|
|
0x9e40af665de24d43L,0x932f4070230f8331L,0x96bba1c19b87948dL } },
|
|
/* 61 << 294 */
|
|
{ { 0x8b83af0c4efaae9aL,0x25e55686770c85cdL,0x0beda54fede0c999L,
|
|
0x6c5749398d249a2eL,0x520ac2ba2f476146L,0x162e482de95b05acL },
|
|
{ 0x2d3d19b6c73a32daL,0x945e5e3c33fd2c48L,0x361d9770a36b4ee8L,
|
|
0x8aed760d014cacb3L,0xae66e5de5ae302c7L,0xb5fd5959b5d4d6a4L } },
|
|
/* 62 << 294 */
|
|
{ { 0x25df58ff147da470L,0x1b3941ec3f4e3e98L,0x7543b1227aee3587L,
|
|
0xb7bc2b31b4a28218L,0x8628b5400bb3224fL,0xe3e7644d373222e6L },
|
|
{ 0xb4e3269299244dc9L,0xe72c679d49781bcdL,0x894d9eb0bb6f0700L,
|
|
0x4a08cdbc443c3639L,0x52c4d04e5baeb02cL,0x53f550ffb5f93552L } },
|
|
/* 63 << 294 */
|
|
{ { 0x2b908f693c1f524fL,0x59fd6ae7090970ceL,0x595e15721eb9ec29L,
|
|
0xa55adbd6fbc4f04cL,0x575a2344bcc38bf8L,0x89397944f2b659b7L },
|
|
{ 0xc77532a18c87fe8bL,0xa5a75677de4c9eefL,0x2e3d873a0e4a1704L,
|
|
0xe18ff4fcc4d02aa1L,0xd842074275573a79L,0x0fcb532115296dcbL } },
|
|
/* 64 << 294 */
|
|
{ { 0xbcc88422c2ec3731L,0x78a3e4d410dc4ec2L,0x745da1ef2571d6b1L,
|
|
0xf01c2921739a956eL,0xeffd8065e4bffc16L,0x6efe62a1f36fe72cL },
|
|
{ 0xf49e90d20f4629a4L,0xadd1dcc78ce646f4L,0xcb78b583b7240d91L,
|
|
0x2e1a7c3c03f8387fL,0x16566c223200f2d9L,0x2361b14baaf80a84L } },
|
|
/* 0 << 301 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 301 */
|
|
{ { 0x7a1a522b246dc690L,0xb563cbe14b61ab70L,0x41bb4abe3d4ac4abL,
|
|
0xc52950b337f996e8L,0x01d991e679727761L,0x35de93bd978fd7d2L },
|
|
{ 0x86bad5e65706d336L,0x10844155e7f26c20L,0x58ffeb7705757453L,
|
|
0xbb1861293939df77L,0xbfdd394a6a78ea0fL,0x907ff0546e33e1d3L } },
|
|
/* 2 << 301 */
|
|
{ { 0xa7f295320df93b34L,0x855934f25c14df30L,0xd2f54ce9efae348cL,
|
|
0x5acb931cac52758dL,0x287b3e18d22961a4L,0x42a5516d748f8fe1L },
|
|
{ 0x1b62b341877224caL,0xaff58db3d30a4aa7L,0xbad78dadbe8da847L,
|
|
0x85fa710954f18276L,0xe2cc9d287c4bfdadL,0xbb131f762c75f237L } },
|
|
/* 3 << 301 */
|
|
{ { 0xcdcdd7d703844670L,0x79ec59afb4a23f91L,0x5923c569c00ce5c3L,
|
|
0x099c17ffc589d0c7L,0x0335eeea89fa6fe6L,0x916bcacaa4e868c4L },
|
|
{ 0xb7037325fb687bd5L,0x57d6bca79853b564L,0xdf3132efd5e26d28L,
|
|
0x7ed994b8de919cbeL,0x12df67cd6fbbb18dL,0x516e07c06baff508L } },
|
|
/* 4 << 301 */
|
|
{ { 0xf2ec9ef597e833e4L,0x97bdef9734ec7e41L,0x90e2b2387d2ac6e3L,
|
|
0xcf682b120318a3b7L,0x7fe76089ea84a7a0L,0x85c489f916546d05L },
|
|
{ 0xf987118f6abdda05L,0x675cf998aa4b95fcL,0x544c7774888a7e8cL,
|
|
0xbd2647ba63ec5831L,0xb479cea3fd2fe985L,0xa042134528d163e8L } },
|
|
/* 5 << 301 */
|
|
{ { 0xd93506a4e5947c6fL,0x4340d76a39b81d08L,0x741aee5917930d30L,
|
|
0xfea3d99a18fdb81cL,0x1088ff6b289bcb07L,0xc6b45602b7c082c6L },
|
|
{ 0x50e2baab453d8d69L,0xda9bf561e893e183L,0x0af25f86b29a284dL,
|
|
0x0e92e67473e01380L,0xe173a0e32be00e59L,0x402d2f3dada8954aL } },
|
|
/* 6 << 301 */
|
|
{ { 0xca9cb3890399721dL,0x03ad9f4aa3291479L,0xd85b5df56dee003dL,
|
|
0xe1fa7b0264a4f83aL,0x01c4cbfdb73f7324L,0x707010d45cf2ddf4L },
|
|
{ 0x3c6df430b12e02f8L,0x921a290185531489L,0x302fc77c91d1022cL,
|
|
0xc3733ec0342d8f3fL,0xb83bc75f6195a665L,0x4a14b9e7a79f8027L } },
|
|
/* 7 << 301 */
|
|
{ { 0x9f0e5428e2a57359L,0xc690a3c714998c16L,0xd73c3ca2de37e07eL,
|
|
0x2ddf91b8dba0bc0dL,0x69d834b27570ae71L,0x2ac8bed4735195a6L },
|
|
{ 0xcd8c51ff3b1fcc5cL,0x7aa8cf4e1ba6863fL,0xebb69e72ae70f428L,
|
|
0xa29409dfaa9e936dL,0x43f6ee805a332b9bL,0x0de49efac2eab0a9L } },
|
|
/* 8 << 301 */
|
|
{ { 0x04baa1762310333eL,0xdc75e35f7b9bad46L,0xc4a6031dc6cd6108L,
|
|
0xba2534d030bf87a5L,0x7ebc6e2131e497ccL,0x8a2a82b4851fd665L },
|
|
{ 0x9ecae0116d5faf40L,0xfa3a6d7f96956ecbL,0x39e8a9c22fa52782L,
|
|
0x74c93801236d442eL,0x8b21ba23b1c289ceL,0x7f3e221b25c769cfL } },
|
|
/* 9 << 301 */
|
|
{ { 0xed800e4d08aa4dfdL,0xf524b107d8105bc7L,0x8c4addc9ab07fc03L,
|
|
0x2b0f038d26a71b4cL,0x5055c471a83d19a7L,0xc6c5ecba27e20a5bL },
|
|
{ 0xdbad26b7aaeaa017L,0x4e3abc20d2493554L,0x626310143a0c15bfL,
|
|
0xbafcc06798cec55cL,0x9204e17ce6f87607L,0x8f1c10eed9302c05L } },
|
|
/* 10 << 301 */
|
|
{ { 0x53680ce08afe59b9L,0x36a3cec75665022dL,0xb3a5091654490b50L,
|
|
0x803d383f0838f0aeL,0x65531a008005ba2eL,0xb7fa6b4a1241a17dL },
|
|
{ 0x9aaec449b17e07bcL,0x19b7d9113d190dd0L,0x79da42457fa5e7feL,
|
|
0x725bd045598ad850L,0x49f96cc45f94ee82L,0x114bbcbf03850eefL } },
|
|
/* 11 << 301 */
|
|
{ { 0xf566a287d43a6db8L,0xffb8944b2aeb120cL,0x3e7099427e294c1aL,
|
|
0xce122b126c31214eL,0xe59b280c2a21282dL,0x03916e2ba01a4fc6L },
|
|
{ 0x56e65da29f5e409cL,0x374d3dfe7f5c3e11L,0x150684fc13967e2cL,
|
|
0xfbed4f5bdf4bc38eL,0x5973c67182e54b82L,0xcd36c873363f307bL } },
|
|
/* 12 << 301 */
|
|
{ { 0xcb42c5617c3805d4L,0x0e74e75c3b43a8b3L,0xfd58f864369f579dL,
|
|
0xf471aa774a3dfe97L,0x2e0dbb51ab37bd2fL,0xc4704487729c887bL },
|
|
{ 0xcb7958a9cff32948L,0x3e36de368505e71fL,0x2232fd2dd38ccfbfL,
|
|
0x6f3c502042005175L,0xd1280a3e306fb63bL,0xef7abd792e368ee9L } },
|
|
/* 13 << 301 */
|
|
{ { 0x29c5712d56ffcac3L,0x20307670e1a8e0eeL,0x676a23c26356aea0L,
|
|
0xb9c17e3f432f15d5L,0x0008512e287c5705L,0x6ae2704bc5f7ccfeL },
|
|
{ 0x6a200db709a13b60L,0x24fb1e9241043271L,0x2e455e9741b766a2L,
|
|
0xa11ff26fbe056684L,0x3cfb8a64ad9178ceL,0x5786978d5d675b79L } },
|
|
/* 14 << 301 */
|
|
{ { 0xf4cf2c8e6070a72cL,0x0bd73aecabc3251cL,0x1af44eff17539f67L,
|
|
0xec3ee99e44e8d8f7L,0xba698f6a279afdf7L,0xe871accfb771d4a1L },
|
|
{ 0xbf92963d8bb0f264L,0x817b1fcfb10716bdL,0xf57580786b23076dL,
|
|
0x994ff3c535a994cdL,0x05d984e82604847eL,0xd728e292fc9f2e43L } },
|
|
/* 15 << 301 */
|
|
{ { 0xa44bf023b900b696L,0x1f82fe54037bb770L,0xa6d12f820717e747L,
|
|
0xf154ac51e3b83029L,0xfbd343128cf3984dL,0x7f734beaa76c72c2L },
|
|
{ 0x05c5b443114548b9L,0x4ce414f396af4132L,0x1474c0b79d080a7aL,
|
|
0x865827c6497366a3L,0x34760c457816a0a8L,0x6da2474c15d2a176L } },
|
|
/* 16 << 301 */
|
|
{ { 0x761e10e2ca114c4aL,0xe39d121d894301b3L,0xa0870ff43dbc6fcaL,
|
|
0x97651286cbe0ba8aL,0x47d46075c0f1ff6aL,0x18669c843abeb5b6L },
|
|
{ 0x1234c80ead8d9309L,0x1ccbe4d51f6f97ffL,0x399a2d41d82ab780L,
|
|
0x8a03afafde426e50L,0xa2bcb109ca6dde77L,0x840e13b00618f5ecL } },
|
|
/* 17 << 301 */
|
|
{ { 0x9552a8184929f7eaL,0x514e9ce9acc61766L,0x03159a525a219015L,
|
|
0x5efeebfa14eace54L,0xe8a3736f853da94dL,0x3a0f334ff45e8a32L },
|
|
{ 0x71ebab39c9dc65c9L,0x6ef37f49d7c24f39L,0xde3d45f8b24a9383L,
|
|
0x7193bbb80c218869L,0xa1bdfd30c0f7b6beL,0x82b2c4c5c1d9206aL } },
|
|
/* 18 << 301 */
|
|
{ { 0xf9d9b678b197099fL,0xfa8548c4c15b2bbeL,0xa36f17fbdd2817beL,
|
|
0xb35597021732d1edL,0xba145100744f3955L,0x7c274633344b43a3L },
|
|
{ 0x9b0ee7c8686b65a5L,0x438eaf4823f0e973L,0x79a658a7288c5019L,
|
|
0xf6d938c546d04413L,0xe39bf9a6a6cb9853L,0x880d5b83801b70ddL } },
|
|
/* 19 << 301 */
|
|
{ { 0x8f23f00303825482L,0xc4a9f214a6b35023L,0xf0905573794e7de0L,
|
|
0x7ff790144dd68979L,0x8d9c14942959beffL,0xdb34474f82282e48L },
|
|
{ 0x423bdfa281fde794L,0xfc31e3e792a8810bL,0x19d316ba8bae4eceL,
|
|
0xddcf30b7159c1386L,0x997968a38e7d69dfL,0xcf67ae9aa6b21be0L } },
|
|
/* 20 << 301 */
|
|
{ { 0x877866a3697b4dd0L,0x32a872f4e76481aeL,0x300387bad609cc04L,
|
|
0xc761ae79d74566d4L,0x9fd3e5bff22e2d24L,0x363ef5bf1c46bc0dL },
|
|
{ 0x121b25bce299a690L,0x7932471dc2d32b7eL,0x7f89692e94bb4272L,
|
|
0xaf9cc4111a3ce076L,0xaf02ea22ea02e452L,0x43154e581d19dc60L } },
|
|
/* 21 << 301 */
|
|
{ { 0xd9389e05e25dbe97L,0x3a8689b162b3afe3L,0x4d5556467014953bL,
|
|
0xd6894c42af5ba9bcL,0x4b233690b3bacaa6L,0x0fc8ad07fc191181L },
|
|
{ 0xcd3a1e4df0764f39L,0x18a47233d79567f1L,0xf0f9eb765f921f79L,
|
|
0x7f3d814d19d12a7fL,0x5e48cc36ff33a995L,0x9589679b8960331eL } },
|
|
/* 22 << 301 */
|
|
{ { 0xa2ff78bb477d7226L,0x3216fcc085e04a8bL,0x7c594f81e4c3c24aL,
|
|
0x075eefaa029d6ef6L,0x5ae51000493ab006L,0xcdfcc6939ab165efL },
|
|
{ 0x50b7eee276073bfaL,0xee52d55b3b60cdb4L,0xc7f7b3af45027275L,
|
|
0x01d5444ac15b2ecbL,0xdf56f8c12a61d1e1L,0xcf032e7e4992e1bcL } },
|
|
/* 23 << 301 */
|
|
{ { 0xc8a4dfbf15b6d8d5L,0xcb34e0e4e87ff88dL,0x6dc95befa6ebbff6L,
|
|
0x2a55ca1372ff2cc0L,0x3c4c0f3c6a62588fL,0xa8de444ece156917L },
|
|
{ 0xced7c4523e55eba1L,0xa109b7949f05820eL,0xa021717e0e6c318dL,
|
|
0xa0156b8d0b308f5bL,0x3c65ab9daa6634baL,0x1666e650e2839e0eL } },
|
|
/* 24 << 301 */
|
|
{ { 0x0d27500f9ebe3c40L,0xeb9ac1022b700fcfL,0xee7578f8610763e3L,
|
|
0x6e56078f47ef08feL,0xa8d03a7f047d04c0L,0x2143606f27cc8aa3L },
|
|
{ 0x6b08eb383b004721L,0x1f505c0dc4e36bb6L,0x6f9b869ae3f10ba9L,
|
|
0x3bfb9833e500e846L,0x6d975557b9171b1aL,0x7af9cf4f18fa0045L } },
|
|
/* 25 << 301 */
|
|
{ { 0x35bfb51b3b35836dL,0xc834e59003b0fba6L,0xbe6e17d378937ce0L,
|
|
0x2f796f7c4daa9aa8L,0xd7896a0ad310eba9L,0xda258ab05ea4056aL },
|
|
{ 0x2d872d2170626628L,0xc9b26d7c2ee433f0L,0xb176220ee72f7491L,
|
|
0x4869adcd895e9b52L,0xd37540e4d3a6d786L,0x024aff303a86b44bL } },
|
|
/* 26 << 301 */
|
|
{ { 0x5e78606bd8424b90L,0xc83a5af9ebc9c9fdL,0x8d5b63740b65ada7L,
|
|
0x4d01d6a221fca70fL,0x8ed7787ba1838061L,0x29901318f4a1716eL },
|
|
{ 0xc4d260527f25fd2dL,0xa66dc0a98b5147e0L,0x4355e26c269d726fL,
|
|
0x1284fecce3a27644L,0xc9aa6cf7f98e1d0aL,0xa25ac1be3ff560c9L } },
|
|
/* 27 << 301 */
|
|
{ { 0x5bbb87ded64d103eL,0xcb53a2f24d20fb37L,0xf8a9c2993a46b892L,
|
|
0xb552910ca793aa9dL,0xd09e5bea51ef0806L,0xb57a0568e0c3817fL },
|
|
{ 0x9ca67c5f4e85598fL,0x04f6361fb0336008L,0xf028231b580afa5aL,
|
|
0x8d938c0ef2bba03cL,0xa5984c1f894f37d3L,0x62ead7f4af695ac5L } },
|
|
/* 28 << 301 */
|
|
{ { 0xf897de9213a48775L,0x505e21681b0041bbL,0x9f5533aad598ebb7L,
|
|
0xd552ae1e1e87b2fbL,0xbb35a6319b736f5aL,0x391ce7dcc3a4c54aL },
|
|
{ 0x4c677d87f90124d6L,0x2ceebe51a9292210L,0x8882ae3133c63951L,
|
|
0x8222c6482d44c9d0L,0xb97511420d607658L,0x3a999028b85f5997L } },
|
|
/* 29 << 301 */
|
|
{ { 0x7b23f424eabb3f68L,0xa622a3ba4294750eL,0xb382b118e535b446L,
|
|
0x7dbab9ee5fab292cL,0xcfabbfb037fe2f8eL,0x2283d7606670925bL },
|
|
{ 0xd18e90715be9d07fL,0xe191daa7d257745dL,0x86d59808df915e35L,
|
|
0x87f68d5987370b6bL,0x76b9d255f945ac1eL,0xdcf9e8f2dc94ddbdL } },
|
|
/* 30 << 301 */
|
|
{ { 0x004f1db65b986506L,0x5da683c32b0d22acL,0xf2afd1d85ee0c71aL,
|
|
0x3b99a78a8f2ad25bL,0x8145d2ffd1c0cb69L,0x4511dc4e4009a536L },
|
|
{ 0x5539e8b8a5cb0c13L,0x4f8fd0186aae4603L,0x15dde4476d2365f3L,
|
|
0x7cb887f7380df270L,0x815343a6a741b88aL,0x81a085e4bf99e7e1L } },
|
|
/* 31 << 301 */
|
|
{ { 0x37d0460fd647fbd6L,0x2ccc7b01b9541f89L,0xec0e8826877a1b2fL,
|
|
0x54d9e611cd462979L,0x016e8458453dcce6L,0x99b5dbed20ea6a24L },
|
|
{ 0x64072ec778550386L,0x279fbd9959d02307L,0x7f2ca27e9183bfebL,
|
|
0xa191d6e8bb5132f5L,0x2b9f6163ba49ee68L,0x5a58a11fa3ee1672L } },
|
|
/* 32 << 301 */
|
|
{ { 0x15d47e52ec645a62L,0xabe0ddb38d6d4423L,0x51226a3070cddb11L,
|
|
0x63a253d32b5a8db7L,0xe8be4d1fbef37d65L,0x41e625d9c0920b91L },
|
|
{ 0x08b713a8d9d040ecL,0x467fb08dc450cdbaL,0xa8975877917ee393L,
|
|
0x294792e91528cd12L,0x4512dc8c37daf6aaL,0xa83becc9197a99b9L } },
|
|
/* 33 << 301 */
|
|
{ { 0x1b7bfdb118815b20L,0x1aa602e8629b81b9L,0x11e6df9d199aa5abL,
|
|
0x1a521728bef9296aL,0xeba3e03b89e127e7L,0x6e69893553dffcf2L },
|
|
{ 0x24355785101615e1L,0x126b4c5282e42593L,0xe344ddd85c23144bL,
|
|
0xc73a49b3746c0ca2L,0x1ec2432be6f63f9bL,0x6080ba870243120bL } },
|
|
/* 34 << 301 */
|
|
{ { 0x6ab2936a4c3e946aL,0x8de2e0ae3ab052f0L,0xcaf8c35eea109739L,
|
|
0x21d69383032418c8L,0xefab535ae7ee60faL,0x1a3a1be794b44fabL },
|
|
{ 0x0842aaa5eb911cbbL,0x789c2b7e0286862dL,0x8bff708715c0b148L,
|
|
0x71100d79d8d7faf7L,0x47caa89a6dfa0c8fL,0x82385cf44b546332L } },
|
|
/* 35 << 301 */
|
|
{ { 0x4f5d8c35e4b814fbL,0xe534b7be6a427f92L,0x468fb2819ca1d37aL,
|
|
0x8c1c86347949961cL,0xf9d00305db0f7f19L,0x77534b3a976f7102L },
|
|
{ 0x94ecb7933f530710L,0x072f6fc7a916827aL,0x9247acdecc926f8eL,
|
|
0x0d4a8997281d0a50L,0x659712669f353507L,0xd4730a15fde80a6bL } },
|
|
/* 36 << 301 */
|
|
{ { 0xde68ca25bd37b630L,0xcfa9d32ca899d623L,0xaaeab905937c9ba8L,
|
|
0xcb261334348ed39dL,0x8d12531fc77e1512L,0xfb7934b6213b63d1L },
|
|
{ 0xc6a6fb0096a13f19L,0xe940f3aac8f88d6aL,0x014c7f95c3d2829dL,
|
|
0xc33d87e9fff01f41L,0xbf9c3c23c5cdcb4bL,0x8b8c0afe5d5be5c1L } },
|
|
/* 37 << 301 */
|
|
{ { 0xe4f84bf12aac2c23L,0x5bde1744f823f90fL,0x65ffefbc02d5bbe2L,
|
|
0x385aff9332a3b756L,0x3813f2b362abfdacL,0xbbb444cb0a144325L },
|
|
{ 0x0cf9d137ec625be1L,0x86b8fcd4c143816bL,0x03f7a9d060ac32d8L,
|
|
0x0428daf9366165b6L,0x6ef94260d2a806d0L,0x94a100a598134bb5L } },
|
|
/* 38 << 301 */
|
|
{ { 0x4b68325ca4a34cb5L,0x74f41f7639fada89L,0x34bf397236e593e7L,
|
|
0x0cc75d461c6179c4L,0xe62d5ba577d711e5L,0x7bec1be7876964c7L },
|
|
{ 0x768f35d13809fc73L,0xfe55a9a57dcf1703L,0x86405336e69d3390L,
|
|
0x68f5ea2d00bfc544L,0xd4cf822b4834b2d8L,0x77dc1ac22b0d3ad6L } },
|
|
/* 39 << 301 */
|
|
{ { 0x45603dfa0337f57aL,0x50623184344b6968L,0x3fb9957ef160d9aaL,
|
|
0x40eef1697c8db44fL,0xa8f394e98bf71121L,0xa55ecf3b86a920f5L },
|
|
{ 0x1f3c1f22bb0822e6L,0xb3c2f21357747a3eL,0xfbdb4465bef56f08L,
|
|
0xa9844890a46ac73fL,0x3fd564a5bde3652aL,0x008cc1a97c653c82L } },
|
|
/* 40 << 301 */
|
|
{ { 0xcfebe027ca0a98d5L,0x946b0d9aa8914697L,0x00f89d16725ebd08L,
|
|
0x94c6f2b07a584e8dL,0x095ac9cc911cab58L,0xfc9c3b499c4073c8L },
|
|
{ 0x265919b0c7233aa8L,0xe6c0c7f474be5217L,0x6db597f1815a70a9L,
|
|
0xdd9e4a101c5fd35aL,0x38b8e35112d52a8bL,0x5d0ed83f2ef20fabL } },
|
|
/* 41 << 301 */
|
|
{ { 0x4f47e10a6c96b43eL,0xe406ab39f3d744deL,0x1caf45d83c893b01L,
|
|
0x4f089452a7582ea6L,0xc02f58cd62b5a868L,0xf6532017c2a9aa7bL },
|
|
{ 0xf0d8bf6f32b01bf2L,0xfeec5f68a97246f3L,0xb2ead70a1aa7c238L,
|
|
0x1a1d6f77ad83e05aL,0x4b7110533dca7e9aL,0x44a89fb85f96e5adL } },
|
|
/* 42 << 301 */
|
|
{ { 0x86a7ebe0f02461f3L,0x6a7a9cc6862282c9L,0x7f8857944a97e48bL,
|
|
0x191244cd20662db2L,0x8d85175183489311L,0xfbcb17b0f934c1fdL },
|
|
{ 0x33b4d86e032a7bb3L,0xa99864cb573f5c28L,0x49fe8e799c4f12cbL,
|
|
0xe34c32e32c8bb49cL,0x5888421e962d6d9bL,0xa317c2d1bf1be44dL } },
|
|
/* 43 << 301 */
|
|
{ { 0x3454c424cc1dcbbfL,0x67e61434aac98717L,0xfecd8125cc2d3044L,
|
|
0x2032be70df7f8891L,0x04c5a0c81028059cL,0x6563dc8c76ade6b7L },
|
|
{ 0x9ff3815192f460aeL,0x8c2c3c632d54785dL,0x1fa99d8e43eabf60L,
|
|
0xd75d9559383be317L,0xc9ef068e3dfc908eL,0x2217c8c1959d3e6cL } },
|
|
/* 44 << 301 */
|
|
{ { 0x5828d71bf2e5f345L,0x8b756075929fe375L,0xca625ec12c43a6d1L,
|
|
0x08cd01f53b31e127L,0x56c622619cfc1be2L,0x093ea207b3a6caeaL },
|
|
{ 0xdf53b20970b42dc9L,0x2d2dfdf2235f4aa0L,0xcaac3b3598786c94L,
|
|
0x1ce1f893b4998150L,0x40341c41526a98bdL,0xef39e97eedce5288L } },
|
|
/* 45 << 301 */
|
|
{ { 0x08cd60d461ea4256L,0x8031748b9461f861L,0x9c96e1f9019c7908L,
|
|
0x7e6e08f4e46bcf7dL,0x8e8408f123ffa986L,0x0bee857ed467288bL },
|
|
{ 0x702fa8536e36fcceL,0x3bb25fa905a89edeL,0x642105f4e96866ceL,
|
|
0x6a5207cc16e37536L,0xcb6a96d1372a3e06L,0xb1c7c85a1da6bc6dL } },
|
|
/* 46 << 301 */
|
|
{ { 0x0bb97497a97a3316L,0x9416659ce402a800L,0x79656970503a2314L,
|
|
0x0070a7eef8007c50L,0x8093cd4372624892L,0x4c0ee444f9b96830L },
|
|
{ 0xc7c10b9fe300c49bL,0x97f5f90a5f7baf99L,0xf04a5a7cfaa064deL,
|
|
0xd5b01fa6b0c111fcL,0x4d12d6fb65d8a2b7L,0x807a381c27770e2fL } },
|
|
/* 47 << 301 */
|
|
{ { 0xcd1aeeb43b6a9c22L,0x7fbdc6c19d71dcd0L,0x9bb43b6e6221669eL,
|
|
0x1b76f2bf526f8a00L,0xaeba54302efdf661L,0xe1f623e745537bbdL },
|
|
{ 0x340966ae067c5f4aL,0xe2cdb27e4799b2aeL,0x9aeec5989b8458e0L,
|
|
0x1d0588487655b632L,0xa5ffe5897abd70b1L,0x84db43db6721054eL } },
|
|
/* 48 << 301 */
|
|
{ { 0x3b21dc1f538d92d8L,0xc80b22b3c005aa86L,0xf536e5d30da87d65L,
|
|
0x4ce10edf0cd999a0L,0x8949181450e08f5dL,0x77fd8f2e526647e6L },
|
|
{ 0xcb207ee9250099fdL,0x03c7d1abfd6aa078L,0x7d4940d225e0cf15L,
|
|
0xb688b311067fa052L,0x89308326a98b2e21L,0x3ee4cc2b72311eabL } },
|
|
/* 49 << 301 */
|
|
{ { 0xec49fc4e06d255b2L,0xabd0c002fb309d28L,0x97490ff08c601c3cL,
|
|
0xe17102fd58042cd6L,0x861411f11416ebc3L,0xfb31ce455c6c630cL },
|
|
{ 0x0a24d561c6cc5e9bL,0x80bec25c9a7c1524L,0x8003494fbe53e50dL,
|
|
0xe89b75e28633c559L,0xafb1f6d6763b3360L,0x0e7e58c52bf70cd3L } },
|
|
/* 50 << 301 */
|
|
{ { 0x72322d26aab6c9b5L,0x953e43d0070d7d08L,0xe2dd5444954645c3L,
|
|
0xc5de051cb276ca86L,0x195d454439158c74L,0x26e2cf9fb90a8f97L },
|
|
{ 0x774baec15b217a76L,0xdba4bc63f94172baL,0x96ddaa4022e20037L,
|
|
0xfe1ce4aac111af69L,0x6f6d3c428ad6dacaL,0xe59257d8376cdefeL } },
|
|
/* 51 << 301 */
|
|
{ { 0xf2cabe73184d44ecL,0x4bf744d60bb08687L,0x10cb9e9209865d58L,
|
|
0x3a63fe414ea221e0L,0x8f595e5892961becL,0x1b8ad036855d186cL },
|
|
{ 0x75dd5f70086542abL,0x8b357e087bddbb6bL,0x22de89f06e829a06L,
|
|
0x44ca8b64ecc6cc26L,0xd02fa871a5ddebb6L,0x6adf1d0c6a60a0e3L } },
|
|
/* 52 << 301 */
|
|
{ { 0x0102775982e4f5c3L,0xac8eac172c014fc4L,0xa0cd26e85bd843eaL,
|
|
0x9b0431ec056d4b1fL,0x89df7db58eb9c55bL,0xf17f917298fc9b9eL },
|
|
{ 0x2cf1e4a78e6b770fL,0x0d6ef9e2b842fe52L,0x40b4ddb76c578172L,
|
|
0x6630657627533b9eL,0xf8d8661eb50ce390L,0x6ceba0aa16577df7L } },
|
|
/* 53 << 301 */
|
|
{ { 0x6dff66c19ec8ac93L,0x6261295bfdf6fe7dL,0x9ad1536fcf9fbbb2L,
|
|
0x5cfa30a92a6d6d31L,0xb3bcf1b0296224dcL,0x42e4b410608371daL },
|
|
{ 0xd6bad6dac32945fdL,0x0fab7d1dc0c031a1L,0x054df9599b192d32L,
|
|
0x29830094ea78052fL,0x8d73ffce03f2ce45L,0xc14c7012f9d840ebL } },
|
|
/* 54 << 301 */
|
|
{ { 0xdf74522e74ce5c21L,0xf864cbac930c4b92L,0xfe0d2358eb0fbe9cL,
|
|
0x10b31736a5cf765aL,0x185bbbe96a9c95c6L,0xcb14d694e5362993L },
|
|
{ 0x3f5c921da5332e61L,0x0820b32bd244cc98L,0xdaf09f24d7c32062L,
|
|
0xb2241c9ad5959a1cL,0x16bb89a3226127ddL,0x0b46e3f03723d04dL } },
|
|
/* 55 << 301 */
|
|
{ { 0xa38b1a796975230aL,0x25c6db8c3991b5ceL,0x0d89c3fe9c1bf52aL,
|
|
0xe186e293cd8f9f8cL,0x777bb327e6ec37afL,0xa974132a0ae31c7eL },
|
|
{ 0xfb9918305c50f089L,0x4a653d6999497954L,0x5055c690774e8a26L,
|
|
0xf94ffbae3815d67aL,0x99d74f5e74ea4481L,0x3b352a327d477151L } },
|
|
/* 56 << 301 */
|
|
{ { 0x2a62804172fb61e9L,0xa9bfa73ab13d053fL,0x4a2cdaa3c647fcb9L,
|
|
0xe1a9e91f4952d3a4L,0xbc1b3d8011e2e2c3L,0xe58ef59c18e4340eL },
|
|
{ 0xeb8696ff1cf859b8L,0x5b0f5cc4ee918cf4L,0xa471d6ce6c1e905cL,
|
|
0x4e13d6091ed2e8cbL,0x52951509c77c8c91L,0x0926dad8e234884eL } },
|
|
/* 57 << 301 */
|
|
{ { 0xb168a6c36e3aa3d7L,0xbd0086ea5ad9142fL,0xbc4da0293c24fe23L,
|
|
0x7ed3b34808b90de6L,0x7a7a2259e33b0df9L,0x483b389c9c3a173dL },
|
|
{ 0x02080c626334a061L,0x61944965b020cfbeL,0xece528e9ede88ecfL,
|
|
0xcdf3e2fc99389758L,0xb21470cb7a3fb92fL,0x717cfbe083937e21L } },
|
|
/* 58 << 301 */
|
|
{ { 0xfac97f2910e3e93fL,0x1505c7d2f1101b88L,0x7cea978823bc0d11L,
|
|
0x27ead95d45045667L,0x711bc4dcd17ea199L,0xe3f93fb522f3142dL },
|
|
{ 0x31b05e6ad7233d64L,0xac28e6c154e7c9d5L,0x892b6366716d273cL,
|
|
0x1622230470da8a48L,0xc85bbe6070d560b3L,0x555e6de987fd38a0L } },
|
|
/* 59 << 301 */
|
|
{ { 0xac593f746ed50680L,0x89bdeabbcb01cfd3L,0xfa43158ead35524dL,
|
|
0xb2393726e8d66ca0L,0x248c67c2c36bb495L,0x27d4b0b85c933625L },
|
|
{ 0xdbb1364a78c8bb4bL,0xdcf4b1e13486ef0eL,0x554f95cec498b2c9L,
|
|
0x2b76da29811a2329L,0x750c10271a10d941L,0x07045eae375b01b6L } },
|
|
/* 60 << 301 */
|
|
{ { 0xd3fb9bef82621500L,0x09b18748f0f647a6L,0x186bed054c357e73L,
|
|
0xd58281f0a85f3174L,0xdcf2e0bb91ded0e9L,0xe77faad126894faaL },
|
|
{ 0x6843c160bc3a3c4bL,0x7f8058944c76592dL,0xc53be0883ec05e95L,
|
|
0x318d8ce7cce0c822L,0x6d615f1b4c761dbaL,0x0115824c46ff47e0L } },
|
|
/* 61 << 301 */
|
|
{ { 0x1815391cf8d0b74bL,0x903ad8fd797625dfL,0xad1ca24d3983100eL,
|
|
0x0883fd415572ff15L,0x0e9e572cadeb4e56L,0x800bad6f7d0e25c4L },
|
|
{ 0x52a394b44c7e2f03L,0x5150c01398f2c416L,0xf4ab35c68ce503c4L,
|
|
0xa0ad209a41b4beeeL,0x050c52c80189706fL,0x86780a924049e913L } },
|
|
/* 62 << 301 */
|
|
{ { 0xa398529c74ded2a1L,0x5e7248f52d7ea6e5L,0xbeb250bc28c2225aL,
|
|
0xf7068fc0b40f4843L,0x62098aed839b7290L,0x947087e293ddfec4L },
|
|
{ 0x81ba8c8824d71004L,0xa877f443bf4813c2L,0x3cf5f473ca4751bcL,
|
|
0x2533890e633cc635L,0xb358f7781e6d9465L,0x50693deaa7801dc7L } },
|
|
/* 63 << 301 */
|
|
{ { 0xaf306f56cbebedf6L,0xdd733be7837acb84L,0xc767237afcff0b9bL,
|
|
0xdf948f12e555bee9L,0x86b85657826dc76dL,0xa4bac032e702b1c0L },
|
|
{ 0xdf3544bba81bb117L,0x69c20dff34f4f0aaL,0x846b78577050d98dL,
|
|
0xde0ef0403c70120cL,0x4483872c12c3bd64L,0x870b758550acebacL } },
|
|
/* 64 << 301 */
|
|
{ { 0x37be5d3f68d7dfcfL,0x97bdbd49b945e6f2L,0x165a24b59d1569e7L,
|
|
0x254aaf59b4e293abL,0x3c751fbd6fb7c0a4L,0x14eda4ba5018cb18L },
|
|
{ 0xacb3b8971b5f6aedL,0x6d10be441e4b6b78L,0x245d7258621df6d7L,
|
|
0x2af0e283185f0e2aL,0x1e7edc818fddbd81L,0xbd1e6c72c538d02aL } },
|
|
/* 0 << 308 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 308 */
|
|
{ { 0x6858b674844626a2L,0x610cd40f0cbba6a6L,0x324e674e29d9194dL,
|
|
0x2dc6fdf6dcb30a51L,0x3f3ecb77528aa549L,0x0721f8f923ffaa92L },
|
|
{ 0xd8efcbd627a77538L,0xf4e642bfd6162c9cL,0x04f2b0b74cf4a16fL,
|
|
0xbc0bb49fbbf335fdL,0xc6b6e5bd5a928c36L,0x981b01f4d893dd45L } },
|
|
/* 2 << 308 */
|
|
{ { 0xfb083c2af810465bL,0xb66a8de902ce0deeL,0x6e4130e747a81b95L,
|
|
0xcd704dc658a98737L,0x842ae329592829c9L,0x99bedc34be20dd63L },
|
|
{ 0xabee8e55d53b2df4L,0x6ce657586010b37cL,0x781f39b2467112b9L,
|
|
0x6f06058fbe341038L,0x5effdca512a2f8beL,0xaa9bdad7af34466eL } },
|
|
/* 3 << 308 */
|
|
{ { 0x3933b4c1575782aaL,0x610d3ba25c66e501L,0x52fd3c0f0b7e019dL,
|
|
0x7f8e5ddfa48715d6L,0x0879c5defa39be53L,0xe32c886c56f01cdcL },
|
|
{ 0x71b2dcbb1726779cL,0x6caaff052c6aa84cL,0x6af94846640b2d74L,
|
|
0x78a10710049a2cbeL,0x41a1ce67ac2ab0f1L,0xd160b7faa76d8438L } },
|
|
/* 4 << 308 */
|
|
{ { 0xab86639e9c216137L,0x45a12fb882b18d64L,0xb5734418d763f0bbL,
|
|
0xd2cc332211a9802cL,0xe41d7db881269b8aL,0x91072fc12ecfa355L },
|
|
{ 0x59d6912504ce306fL,0x916d9d4da131b86dL,0x84478b6b8a739738L,
|
|
0xe86ad7d91cc83ae3L,0xbc9b2084797ccd97L,0xc1e94af4694944c6L } },
|
|
/* 5 << 308 */
|
|
{ { 0xbbb6725b5c82c857L,0x72c66c3f140b561eL,0xab65dd0664bcb2d5L,
|
|
0x755e848a780d5c1bL,0x84e6f686a3a61e6eL,0xd84bf486bd100b4bL },
|
|
{ 0xb34fdf846354e899L,0xcbc312da55ec5654L,0x3c2cc881f9a125f0L,
|
|
0xb1fcce564aeadf8eL,0xbdfc54c0c46bf0c2L,0x11d7ea4f09d281beL } },
|
|
/* 6 << 308 */
|
|
{ { 0xe1aa844b1601940eL,0xd22221821797e84fL,0x3025aba65ddcb5d1L,
|
|
0xac8cdaba38009c6aL,0xb9ee07b46e261ee5L,0x84069bc106ab8430L },
|
|
{ 0x7a36b46278b9b112L,0x2d91ed2c08e77879L,0xae4ef469341275a1L,
|
|
0xf7cb393f1c7cf858L,0x83c00eafd192af3dL,0xa81697a7a1e15176L } },
|
|
/* 7 << 308 */
|
|
{ { 0x687d0980f9bfd795L,0x9a7539377ad882bcL,0x641407fabbcde5b3L,
|
|
0x12ec9d216ed103a5L,0xf858c7851fa6ee22L,0x329b61bc818f2c11L },
|
|
{ 0x4720d42ad9d48b30L,0x3f61c66082a66766L,0x99aff25533723e4eL,
|
|
0xd6c67ce3d3260b62L,0x63a6fc9d86391c33L,0xc002433a31de2381L } },
|
|
/* 8 << 308 */
|
|
{ { 0x585edee3895c0318L,0x775e142f45e8205bL,0x3bd7924fd85ad31fL,
|
|
0x2e7d8f919124bffaL,0x885397c044c62868L,0xc0c2dff47fda9f5dL },
|
|
{ 0xd302582ec14e693dL,0x53d6e33a6cec31baL,0xb0216b5b63653c06L,
|
|
0x8f08a1ad9c70dad4L,0xccf014aaffbba93dL,0x900b0d2ca33f12b7L } },
|
|
/* 9 << 308 */
|
|
{ { 0x4960ccb6e9824c45L,0x3c5a9b74c7e4cd06L,0x1e78cdfe37cfec62L,
|
|
0x8cd49ca80da56a05L,0x5ba51217dca05707L,0x0d1f6e459d66c960L },
|
|
{ 0x7178089467f9c82bL,0x342e4a5b18974c55L,0x16263f18f9b32fdaL,
|
|
0x844b5a02935b3636L,0x9c5abd51c139ea58L,0xf54c69428beef953L } },
|
|
/* 10 << 308 */
|
|
{ { 0xbe51552d6d2dedd1L,0x6bc86dc1cd997093L,0xc9b600c4418f03b8L,
|
|
0x4ea4e857e7a9208aL,0x7aac3d96883b639bL,0x4127ed0735d2f4bfL },
|
|
{ 0xf5f6310d76bd792aL,0x3da9b6a5fa223d0cL,0xd75f88075a041b79L,
|
|
0xf3261457e4dd58f6L,0x4f0f5b18b0d9a51bL,0xf5aeedc1b8c84f9fL } },
|
|
/* 11 << 308 */
|
|
{ { 0x1e08d6a81375620eL,0xed9a4fbae1f62c24L,0x0d3bb90381ab5de2L,
|
|
0x885781f0df1b6a13L,0xc3fb9f97e1c7de7eL,0xf12e4bcf9372b033L },
|
|
{ 0x9bc3cf4dd5868448L,0x89465649552016adL,0xeea40cf92a8b2c23L,
|
|
0x57d720ee3af98886L,0x97b14c0b72db853dL,0x65d10f42f23504deL } },
|
|
/* 12 << 308 */
|
|
{ { 0x0dd2395e9b8cfa41L,0x50e203abd4f92a44L,0x7280aff16630023bL,
|
|
0xfcce59dc07de820eL,0xa686be05bc8189adL,0xac4b59bfaac70b7eL },
|
|
{ 0xd2c0070e7a3c71acL,0x1d550add35ac1c47L,0xd42b6389fb881c1bL,
|
|
0x57ca3fccd0dafd42L,0x909e8284be26ccc9L,0x1abe7595a002235cL } },
|
|
/* 13 << 308 */
|
|
{ { 0x02562f1c6b1878daL,0x52a2cd069fce0ee6L,0xf25b35bdeb16199aL,
|
|
0x0320c326a75fb01eL,0x2006d7587de2d46aL,0x6f9d0e256842b459L },
|
|
{ 0x70a89562a68b5482L,0x9653726e1ab35865L,0xbda3cebbd8f849adL,
|
|
0xe2f8d9e60b6fc51dL,0x9c3fd51246104400L,0xbbd260c9bab5d34eL } },
|
|
/* 14 << 308 */
|
|
{ { 0x1f5094703cbc1df1L,0x9f752a663f962634L,0x98089d2ca2435048L,
|
|
0x05256acb0e755318L,0x91a21f707f3845f4L,0x473ac1e0d68c8fcfL },
|
|
{ 0x57ee51417f2ff0c9L,0x959a84f32013c48bL,0xe701f13c4c111ee5L,
|
|
0x70219eee86db5763L,0x385f890cdb0782e5L,0x81fb64b2fea04d2eL } },
|
|
/* 15 << 308 */
|
|
{ { 0x61b4bf7eeaa07bd9L,0x49832879afe544c0L,0xf788e97f54eb4d80L,
|
|
0x78351b41338af327L,0x3a631bba77cb8057L,0xeb9a6f23f218e4ceL },
|
|
{ 0xbd4a0dcf025b6453L,0x2aad6a467b876222L,0xaee94361215c42cfL,
|
|
0xf8d1fd5de496cddeL,0x3c3af08022d0fe06L,0xb3d5dde0d09cc3f7L } },
|
|
/* 16 << 308 */
|
|
{ { 0x1e34781aa6a1913dL,0x9a8f32287d0adc38L,0xfc185ccc28af85baL,
|
|
0xc923d78b3ae9ba11L,0x7d494d7ea7bdb313L,0xf774dfa5af8f8b87L },
|
|
{ 0xc178ccc116e863b8L,0x2d472f2aa8899691L,0x608747cc80a50372L,
|
|
0x8147aa90e6f90197L,0x4683d4c978c2f216L,0x8323652c552f3b51L } },
|
|
/* 17 << 308 */
|
|
{ { 0x7d6bff984dc9149fL,0x79879e1f499b443dL,0xf4ec65232aff2a1dL,
|
|
0x6cf3c97f27253aa1L,0x95b9471eefe6f72cL,0x3959bd816c8457daL },
|
|
{ 0xe2870635cf112073L,0x84e44933ec12174fL,0x67a592deedf434edL,
|
|
0x0c93cdae2897d0e0L,0xe344ecf463c89730L,0x28098b7567a1133fL } },
|
|
/* 18 << 308 */
|
|
{ { 0x62e96dc7a12a0cd8L,0x09d7c6f0f02a3d87L,0x9d9fd51233f8929dL,
|
|
0x1231952dab376555L,0x6ef6823c8e3d2d63L,0x7ad2e5405a01c12fL },
|
|
{ 0xd1bfaec479af6fc8L,0x4555fedfdad97daeL,0x0e6d3f0155750bdeL,
|
|
0xd37ed9f0056f6128L,0xf1fdf91c65fe6ff7L,0x3ece19ae92d05e43L } },
|
|
/* 19 << 308 */
|
|
{ { 0x07d2075e750fc5d0L,0xdc2b03f6a07ca45cL,0x0248d87552efef7fL,
|
|
0x2dfdaf3f744e727eL,0xbef861b8d9b2bcacL,0x5e6363f0baf394c7L },
|
|
{ 0xe8f23bbec973934cL,0xb43d619a50ea324dL,0x2bd5e0075842d6cfL,
|
|
0x5c5af62217646e90L,0x5d95d8fd222ec05eL,0xc9adabb45bd67c31L } },
|
|
/* 20 << 308 */
|
|
{ { 0xa5c08e8bcc2c9a2aL,0x70e1b4058baaf0fcL,0xf29e1e5c9e36e50cL,
|
|
0xa3d9080080f258c5L,0xc9ceac25ecad4498L,0xcb73130fca32f3feL },
|
|
{ 0x2dbe620c48b3863dL,0x8c52727f14ff53bfL,0xb60b22a86b45e9b8L,
|
|
0x81e05bc0f6483c5dL,0x217caa6bcd542972L,0xffab716afa780778L } },
|
|
/* 21 << 308 */
|
|
{ { 0xaef1278b0ba5a344L,0x253be7ad2d0c3947L,0xce58bf0fe5408f09L,
|
|
0x867b0d6fe21228f4L,0x815abb5dca61e691L,0x0da28f58f3e94434L },
|
|
{ 0x5b0fd178ca4cee2bL,0x8989604240b13224L,0x8e2fe19616c251a7L,
|
|
0x7b3381cb11b17162L,0xc73d96a427ef2c0dL,0x76b7fcf36899c135L } },
|
|
/* 22 << 308 */
|
|
{ { 0xcaee3387cad8b585L,0x58446c1ad59d8777L,0xb8755fa540888d8cL,
|
|
0x7868510654428813L,0x7bd21629136e2b59L,0x249903a6998254a3L },
|
|
{ 0x2cc73a751f8fd813L,0x4b1a64576d4f3a70L,0xea2aa620b2e7a0fbL,
|
|
0x77c8cb98202f6ddcL,0x68ba9d261e3851cfL,0x936fe8cbfe02e6efL } },
|
|
/* 23 << 308 */
|
|
{ { 0x8b84121bda75aba3L,0x4440272d74602c33L,0xb8110b2a1e8a8ab0L,
|
|
0x4de462e9391cf47dL,0x9173d756519b9ab4L,0x3df52d13ba8d5dc7L },
|
|
{ 0xd7a822eaa418b01fL,0x58be2b076585f7d8L,0xaa814fde00fb449fL,
|
|
0x6b8260fc7da43c5dL,0xaecbfb442351ba9cL,0x9cbe3d199f8db60aL } },
|
|
/* 24 << 308 */
|
|
{ { 0xe5d3e0d80d7410d6L,0xcfa9ed742be432c9L,0x60044434a85a0686L,
|
|
0x93b357166ad6918aL,0x1a3c3e6d051762beL,0x80813589b0ab32d6L },
|
|
{ 0x64214b92aad403fdL,0x684befc14d3fb746L,0xaca5a51479515046L,
|
|
0xacdba03472e84485L,0x61aa2834287d9e97L,0x07a515a5cad222e7L } },
|
|
/* 25 << 308 */
|
|
{ { 0x8f631b17bc04e9c5L,0x017527212c515161L,0x4358d8e9ee7769a5L,
|
|
0x18f0aed0b59dba1bL,0x035c6bb644973218L,0xa49a4cbcfb3897e6L },
|
|
{ 0xd2a0b7505841ab18L,0x8fe952dca6d2d43dL,0x2d30add69a71d0ecL,
|
|
0x0cb84c402c5d440aL,0x33f3cf7c7c47846bL,0x88703c65bc8e8b3dL } },
|
|
/* 26 << 308 */
|
|
{ { 0x3c3db9419474059cL,0xcfbf13ad72820ae8L,0x3f84300c51c37d62L,
|
|
0x0f78adc45529d333L,0xa19be46482e34cfcL,0x9ed07ee011c98376L },
|
|
{ 0x5113e660b5b6f6beL,0x56f2d2b37a5bc818L,0xd99290c61c2c822cL,
|
|
0x39c026b8b27aafceL,0x8692150b12ef7c76L,0xa55426d1c6de9e16L } },
|
|
/* 27 << 308 */
|
|
{ { 0x889aa8ee3465358fL,0x5885ee29afbefa70L,0x05f9dbd290b6ff58L,
|
|
0xc74be0d09b5e02afL,0x4b7da27ea6b29d44L,0x2ad60aefcf68eeddL },
|
|
{ 0x2ba942b3388c81c5L,0xda8badcc368e2e62L,0x33e95ac87a9e8511L,
|
|
0x37453bbae72008b3L,0x3e1f181195eceea0L,0x719f550c7b19a417L } },
|
|
/* 28 << 308 */
|
|
{ { 0xb03093068af19670L,0xd784125a34c6bf0fL,0x0b425ee0255a8396L,
|
|
0x91076433fb541162L,0xc4d8188586f47a0eL,0x3b767d54fd7bc7c1L },
|
|
{ 0x98b405d3bee196e9L,0x4ef9c511edaccf4aL,0x5a6deb6503f4f1a6L,
|
|
0x4a22ca641b4c5104L,0x2cce36679145ce41L,0xd05187523206810dL } },
|
|
/* 29 << 308 */
|
|
{ { 0xa5746e07f7e11342L,0xb50e390f2e2ddca0L,0x3847749bcb288bc2L,
|
|
0x6ff43ec646ee679bL,0x343b3fe2c5257b02L,0xc0f57f509b823eb7L },
|
|
{ 0x5ce3d2c8aff42c7dL,0x984c9b99c3c76f3fL,0xc8559f58b8823b92L,
|
|
0x883ac8064ce4338cL,0xecf8aac3389d8ebbL,0x9edaec10b40bfb16L } },
|
|
/* 30 << 308 */
|
|
{ { 0x0ed8a07cafb04e5eL,0x7e95ed898f6bc911L,0x6a4ed37113dcc222L,
|
|
0x9aa3a43296f07c7dL,0xe819a80b9b338e4dL,0x65fc2778278f53b5L },
|
|
{ 0x788408e9024163b3L,0x159de8bb7de54f06L,0xc953e21281239dccL,
|
|
0xacb5ea2c6dd62ce9L,0xf56ac93b753f4ab3L,0x2a1a09b5eacc39a6L } },
|
|
/* 31 << 308 */
|
|
{ { 0x89dcbf021c5f4cb9L,0xc0fbe7ce210f98ffL,0x3dc3c743b897cdf2L,
|
|
0x931f9dbb5d02c43fL,0x0ea9f164f74db981L,0x504938874af9f53aL },
|
|
{ 0x86bd3ed62531b8aaL,0xcc1fb6dddcfca2a3L,0x24b0cbf2b97abaa9L,
|
|
0xd81ad35c9073f19eL,0x4dde5dc05db7fd5cL,0xce410880e3ac9b63L } },
|
|
/* 32 << 308 */
|
|
{ { 0x29d81538037bebadL,0x76e52c73d9e0b78cL,0xaa4ace6e8783d1fdL,
|
|
0x9c14ebddf0e3c126L,0x0eb1c08d6eca4b71L,0xd10c6b961c91df35L },
|
|
{ 0xdb8119bbe81bb84aL,0xf784d3c117e3ceefL,0x053c916835436f81L,
|
|
0xeb41ccbb9b18d212L,0x93b3fb43b1bc3497L,0xd85a7c758c1ced81L } },
|
|
/* 33 << 308 */
|
|
{ { 0x90b606b2fc9958e6L,0xd39965b6f94234b9L,0xf4a86f1676f4dd03L,
|
|
0xd6a7ba54470f0f7aL,0xa1b85c0ca86fce7fL,0x2b50f14e574c4cfdL },
|
|
{ 0x4aff867d80e783bcL,0x031092eb61f78fc4L,0x8ad0d7486fe0af1fL,
|
|
0xb56b1a1a0cdfa574L,0x586c916a56466e12L,0x427e5946d09a9d1bL } },
|
|
/* 34 << 308 */
|
|
{ { 0xdd0e3ca276d1b2e5L,0x07dea7e48b4cb3a6L,0x62a63cc7fc4a0f0aL,
|
|
0x048478ef5ea2eccfL,0xa77eae472e34c1a9L,0x7a2120751bfa5dc6L },
|
|
{ 0x0c1fbbecabc233ffL,0x6255fd91dee18d7fL,0xd6da39aec38462ebL,
|
|
0xd86bc3194be435f9L,0x23567d64291c606fL,0x6b85038af67051adL } },
|
|
/* 35 << 308 */
|
|
{ { 0xbe79e1b1eef4ae7cL,0xa45668dc42fb7357L,0xcdb3b3ee2d497a36L,
|
|
0x6ef724e6c5f8d861L,0x7e8834523802a324L,0x641b3a81aba90442L },
|
|
{ 0x13bec555ae4c2544L,0x340d34f927d172ceL,0xfcfd933bd92f558cL,
|
|
0x57d8e300d5a669bdL,0x9f745ce71883049bL,0x19690a31e261f9ceL } },
|
|
/* 36 << 308 */
|
|
{ { 0x004105c3811af84aL,0x01307934a7934a0fL,0x179fd49b9b3226a1L,
|
|
0x195d9e5cde6834b4L,0xfbb79dc00e6051bdL,0x354273ed367f4487L },
|
|
{ 0x4afa9d4574fb892dL,0x03ae905ea1b7f3bbL,0xea32cd5d592f6122L,
|
|
0xa758eed2f1103301L,0x9dde4238c59d1cc8L,0xe2760bcc51022a42L } },
|
|
/* 37 << 308 */
|
|
{ { 0xfed7077b7a7134a8L,0xe65b4eaefe0cf05aL,0x130de76be626841bL,
|
|
0x499934ca300117fcL,0xce74885d4e186b5cL,0xd352d0d2029bee7bL },
|
|
{ 0xd86c448c857a38ecL,0x8139eb50a956da9eL,0xa036de4a93ce7131L,
|
|
0x3f9eba375041c9d4L,0x8c24408e548f74fbL,0xa74053fde942bf8fL } },
|
|
/* 38 << 308 */
|
|
{ { 0x64cb00f586ff10acL,0xd1eebc4c9cbba8d8L,0x427fad8af3157125L,
|
|
0x9f8eb84cf7523b0bL,0xbdd082bf2e6dc29cL,0xfe40623823d3c315L },
|
|
{ 0xad5df7fb546d9dd4L,0x83cadc4b8e42f3c7L,0x7c90502c36876485L,
|
|
0x4f33eccda35bb6d2L,0xdf7571383a79b9baL,0xd250b7d2e6ddafaaL } },
|
|
/* 39 << 308 */
|
|
{ { 0xa52a7595504417a1L,0x540f70b014683af9L,0x5f0d1560f27a9620L,
|
|
0xccad06444b2147c9L,0x92223275e52c8eccL,0x30d6b52b7cfedb7bL },
|
|
{ 0x2161f8bb9bb5b844L,0x075b9db87033586cL,0x5748d512c8c5189aL,
|
|
0x95d76a950f0aab91L,0x91f85aaed0ce9c56L,0xeab8cd9b8434e695L } },
|
|
/* 40 << 308 */
|
|
{ { 0x54f84d70d377d7b0L,0xb745d1903344bc4eL,0x1c693ed08f33aa53L,
|
|
0x990ed45f8bfbee7fL,0xad620c9fe9b258fbL,0x465ccb101a54bf46L },
|
|
{ 0x5330a0d3ebc40951L,0x34423e8ca405da61L,0xeef1ce78b83043b6L,
|
|
0x99678f22ac06d182L,0x9213f57d1802f14cL,0xf8549616adf11fdaL } },
|
|
/* 41 << 308 */
|
|
{ { 0xc6ca95476c66fa6eL,0xcae41345bdd5b16dL,0xd72a41a4ef022783L,
|
|
0x810f4615b2d5154aL,0xfddc469e6d333af9L,0x3154ccbb02d2bf38L },
|
|
{ 0xb33d5c59fc1a0bdfL,0xd8c3f8743c971fb3L,0x5e47ec01114e68b2L,
|
|
0xa440a83fe9baa164L,0x353d01c397c26b35L,0xfaabf5dff03b7672L } },
|
|
/* 42 << 308 */
|
|
{ { 0xdc2a97651e22de2eL,0x91eef436b6cd3b6dL,0xff099200f99ac721L,
|
|
0x20faacfed4f89e8aL,0x91bb24373fcfe45cL,0xb7a152897b6d3ff6L },
|
|
{ 0xfee966c0ef94332aL,0x944728473c81b942L,0x831d36dfab1a553fL,
|
|
0x244bc8393023cca1L,0x3f4a49d57e7be940L,0x4159aa9d7b71c0e0L } },
|
|
/* 43 << 308 */
|
|
{ { 0xfc25fcab5b16ee64L,0x44f807e06841acd2L,0x5f43cfedf59c3f06L,
|
|
0x9279c8110c5b59a7L,0x825df117194b80beL,0xe2c18880d27d6fa7L },
|
|
{ 0xc9aab2e66a333721L,0x1665b6f55b034c1cL,0xf28fffd13df9796cL,
|
|
0x23caca87bbefb8a2L,0xfc556d575f7510f0L,0x41990ce8552dafd0L } },
|
|
/* 44 << 308 */
|
|
{ { 0xf31796d2b6e392e1L,0x199d624893b3395eL,0xef14c7c212f9b763L,
|
|
0x721ebf2143edb7a5L,0xa40b88945e96f3baL,0x8770608c4cff8394L },
|
|
{ 0x990c99ae8d0def0eL,0x292b26dfa15a5649L,0xa98fda2c91ca89d7L,
|
|
0x916cb1b4973e5f5fL,0xa2823f13a72de0bbL,0x415f7bd28cd3219dL } },
|
|
/* 45 << 308 */
|
|
{ { 0x5cfde16a9fc0e90fL,0x61bda4caac6c15d3L,0x5935e48e2a79d928L,
|
|
0x31213c7c82f986eaL,0x170dc539bcc4c0dfL,0x2e0d29406f11823cL },
|
|
{ 0xd2dbecac80fe659eL,0x98b7f46b8399d8b8L,0x259f975abb204589L,
|
|
0x65f3073cd5c52a46L,0x0f4c007805dc7fc4L,0x16c49d403031a8ffL } },
|
|
/* 46 << 308 */
|
|
{ { 0x95705b15359816d5L,0xce0c4379d0641ed7L,0xb3f0d8321e8a448eL,
|
|
0x8bea060873e2d711L,0x5a85fb2f6a040c03L,0x7c19a2185bcebd4aL },
|
|
{ 0x2b10a87aa31cffddL,0x4fc728fa9a5814a2L,0xedabb0dc63bdd2ceL,
|
|
0xdb90173f96bdaa40L,0x543c4f01527ff659L,0x5dbff7ad0a33b251L } },
|
|
/* 47 << 308 */
|
|
{ { 0xeef30ea55e636f5dL,0x8df2d4040bccc4ddL,0x8b0d6f35ef1afe9fL,
|
|
0xbd288e6ef8f86f6aL,0xbc68817ebda45411L,0x8a6f50070faf9e7bL },
|
|
{ 0x6158c57a53d4050cL,0x6d5a3af165b2252cL,0x10f62839f450886aL,
|
|
0x8b9ac19b1df85080L,0xc160c1567553ed58L,0x2195ab29cb449cd9L } },
|
|
/* 48 << 308 */
|
|
{ { 0x521f4af73ed03d5fL,0xe3461f66eaf9064cL,0xad099ab7ae03777fL,
|
|
0x541cadcdb65f73ffL,0x53430463a86059b9L,0x8ff88fe5043e9f82L },
|
|
{ 0xd515f4c7e42cde45L,0xf7f3dec3f41c3269L,0x7bed53567ef1b8ffL,
|
|
0x8782b45f1295b5feL,0xab54ebaa03917627L,0x8516beb28787ed9fL } },
|
|
/* 49 << 308 */
|
|
{ { 0x24b2b95b113940daL,0x8c24d8d3f9c6e6d1L,0x7c584170eddaaf29L,
|
|
0x249267171efd01aeL,0x692cf8f40cd0f2d5L,0x0bf82e142f960244L },
|
|
{ 0x6dbcb6162dabe927L,0x76d826d20aa1eed3L,0xe4492fb3be98af99L,
|
|
0xd4f27cbea50dd711L,0xb7796efe2d8085daL,0xf2d42519ec4e8ec2L } },
|
|
/* 50 << 308 */
|
|
{ { 0x3fbaf46dccc3c261L,0x773c240c1b646e80L,0x151a711f363b6a5bL,
|
|
0x3c8680b1c53b5b59L,0x8ee6795f9fb234b6L,0xab7840aa2f673211L },
|
|
{ 0x0a1a0ff3224a8184L,0xcab87319c71bb575L,0x7a9e9daa8125668fL,
|
|
0xdc607b016c4cff5bL,0xa54cb4c792e5c760L,0x977e4c93d99e4655L } },
|
|
/* 51 << 308 */
|
|
{ { 0x87d4ff71ebe95680L,0xa2093915e5adaac7L,0xd5bbbdade32f5d9aL,
|
|
0x5d61056cf328a4e1L,0x61fcdb0f353f565bL,0xb7b8ba004efab5caL },
|
|
{ 0xb5bbcfa410f05eabL,0x483ae9221f09a105L,0x17d94ca44bbf4753L,
|
|
0xf734a8cdbbdc9a94L,0xc7f01a4244e81e2dL,0x60c3e777b3ba8033L } },
|
|
/* 52 << 308 */
|
|
{ { 0xba7df5a965b68624L,0x30b4d6ed6e7d58bbL,0x67e52341dbb81762L,
|
|
0xd697ab1b0deeac1dL,0x01d15e8e5577ea92L,0xbb12d72498fb38daL },
|
|
{ 0x302faa6d4e04908dL,0x66cf6cb909b90a9cL,0xcd665dbd98d96736L,
|
|
0xf7d3c528b86f3af4L,0x4844c7541d8b07f4L,0x2a77d7b91eaf7dc0L } },
|
|
/* 53 << 308 */
|
|
{ { 0x8a36c9b57fceaa87L,0x5110912b553c7ad3L,0x4aa51166d5eca67cL,
|
|
0x05740dcf07a5eb58L,0xeaafb3e3396857a4L,0x1ae9571bba8d62d9L },
|
|
{ 0x2736975500272434L,0x2c74325c59872fbbL,0xd1d8291709dda11aL,
|
|
0x2a5334eb4683e8a1L,0x22cdd088e3481df0L,0xab1c5f5b4fddc546L } },
|
|
/* 54 << 308 */
|
|
{ { 0x1966aa0515f46174L,0x495901bd2a074050L,0xda5b0cdebba902baL,
|
|
0xc47c518a684325bfL,0xa5df133ec4d9d6d9L,0x3771f465fbf7d31aL },
|
|
{ 0x0a73718c02b05d1aL,0x1107cd45534237a2L,0x582cfd2980f5d897L,
|
|
0xf51a0a88dab0269eL,0xfdea51cfea1a22faL,0x3c9a0d247a13a324L } },
|
|
/* 55 << 308 */
|
|
{ { 0xcc330f58c42f1ce6L,0x8e1fb7df534efc38L,0x2a37208f5fa5a01fL,
|
|
0xc06d8447369bdbb6L,0x0b1ea5161a3e36e7L,0xfb4a48366ff9abbeL },
|
|
{ 0x5989c2d524419909L,0xdeaa6136f1d5b1caL,0xac6003b04ba760f1L,
|
|
0x3a6d5422059081beL,0x96c7fa9df797e22dL,0x67c2f77fa9f3addcL } },
|
|
/* 56 << 308 */
|
|
{ { 0x53e59f251d70eb73L,0x8aed17afe69d0525L,0x26ddc17864413768L,
|
|
0xa7c8d40f5e48c349L,0x29ad92d187ff01fbL,0x8f4e1b3b965b2de1L },
|
|
{ 0xb83cfadf1446eca2L,0x7432bda4e609d416L,0xcf97e8a3f1c7de69L,
|
|
0x45899bd832f55f07L,0x41a6811751175738L,0x89eeb115b8efff21L } },
|
|
/* 57 << 308 */
|
|
{ { 0x9dcda4f3723fc25eL,0x710de79fb5d954deL,0x095ffbf1f0b7d129L,
|
|
0x419a2a5e32651179L,0x7b249135827d4268L,0x9dccc98d909fbfb4L },
|
|
{ 0xcb4b0cb016554ab5L,0xb2fc635f6d84b255L,0xa7f8f3f553512b87L,
|
|
0xc72633f300ec778bL,0x4e07d91a4f1841a9L,0x2a1adbbdcb4f478cL } },
|
|
/* 58 << 308 */
|
|
{ { 0xe31333093bb794fdL,0x34c68bac33b3be44L,0x953fa2c412172b7aL,
|
|
0xa9afc12d4fdde6ffL,0x30b5302ae9c7804cL,0x4a1746c702119e68L },
|
|
{ 0xc4d0c7d323e2ec51L,0xbc821f217143d613L,0x8f41251a673e203dL,
|
|
0xfa32c06aac2ca4c3L,0xf4343f2799a7c431L,0x8f7d489e6b96d959L } },
|
|
/* 59 << 308 */
|
|
{ { 0x183311763f6278f9L,0x4fcc5b653593cdd5L,0xb09b5880e643f83dL,
|
|
0x0f130a3d2c78466eL,0x926d7c3d2b1c1ebcL,0x7217f875662ed4ecL },
|
|
{ 0x2d3be028d81cdad3L,0xb2a04e3507a38019L,0x8da8cddfc9a3097eL,
|
|
0xbaa67f60ddb20228L,0x698fc1c407f04de8L,0x6f0e1d6d7e86db6dL } },
|
|
/* 60 << 308 */
|
|
{ { 0x54a01e60936c3ebaL,0xf326fe96ec01b12cL,0xcdfaf00366e4de2eL,
|
|
0xc53dba07392fd0a8L,0x00d9b80f6ec46004L,0x84d59be83ba63f8dL },
|
|
{ 0xbac4ea439dea6062L,0xb4b4845badd568caL,0xa6ca3d34d225e2d0L,
|
|
0xce72955db50070a2L,0x56e5c91321c78b68L,0x888eb198999488a3L } },
|
|
/* 61 << 308 */
|
|
{ { 0x65bead3c1c2de335L,0x0ecdc057b18a6778L,0x821b836983e57ea8L,
|
|
0x84c80b574a5c11dcL,0x0b6432822ac9ad27L,0x8e09a7f344fe943fL },
|
|
{ 0xe510f47daa92dc94L,0x8bb0b5cc6a1666a3L,0x55315bcc24645380L,
|
|
0xe3acbed113dcf7a1L,0xff99c90e3c9a1610L,0xfbe9aa1bc326e1f5L } },
|
|
/* 62 << 308 */
|
|
{ { 0x5040bea56827b6e3L,0x1049e004d935eb24L,0xa15f9a07ba9bde68L,
|
|
0xda430c55e6087e70L,0x30ed69af8e84b7c8L,0x8498514eac9d6a72L },
|
|
{ 0x69c783d64cb27e79L,0xe55d31a09647a572L,0x0479e8b2fbfb82e8L,
|
|
0x3e845922b52f08c0L,0x252f755f0dbca622L,0x6219778389ddfee8L } },
|
|
/* 63 << 308 */
|
|
{ { 0x175264893ca1461fL,0x54c432f92b6476bfL,0x0e0be36a530795f9L,
|
|
0xb9896dacca583429L,0xe4af98239d4e6085L,0xa38b7c4b4a7422ddL },
|
|
{ 0x74643ef47163e421L,0x74c28314895ee61aL,0x637c79c20d62b657L,
|
|
0xb232ec619bf2b3afL,0x27bdbfb4b2d5992eL,0xcc6e424c49afb181L } },
|
|
/* 64 << 308 */
|
|
{ { 0x5255508c11c92f34L,0x9a346cf3a294d382L,0xd9765eea3095205bL,
|
|
0xfea2ed702c470ef7L,0xf5e8a0fc9c40bf0aL,0xb572390ee4137a16L },
|
|
{ 0xb91753712bf2f545L,0x2c2d0f4c58cd9cc7L,0xbea6bce902385486L,
|
|
0x46208408a8bc3a94L,0x64a87a2a3ac45044L,0xe40da33c7df70151L } },
|
|
/* 0 << 315 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 315 */
|
|
{ { 0xee9e25d939161b8aL,0x8763f2a2e2eead91L,0xd2fc1157d2d91300L,
|
|
0xe7597e2fffcbe50fL,0x4be3814fe11d376eL,0x1eab3d7edbf14562L },
|
|
{ 0x38a107c0c0ad183aL,0x829766267c753bbfL,0x18014e09caebd481L,
|
|
0xb28c331bf9ace60dL,0xe8fba04f211cb8e7L,0x41c4b797e42dc65eL } },
|
|
/* 2 << 315 */
|
|
{ { 0x009dc2f4c3e88580L,0x4a405be899db1fb5L,0xc89bfaa2ec5d91feL,
|
|
0x461be9a0f160afcbL,0xfdd084bb7d7566b5L,0x795275e8e48099a2L },
|
|
{ 0x1b461fc9fe9815dbL,0x576214cd73627bbcL,0x3246332d9f09a206L,
|
|
0xbde4c0c36941d6efL,0x44ef03fdf387f5f6L,0x99c8ac0157b63400L } },
|
|
/* 3 << 315 */
|
|
{ { 0xaa512f202f6e4301L,0xef668a5fbf94a1ccL,0x08713c3015861b88L,
|
|
0x49d47551c99bb2b6L,0x6db5f812e2f0258eL,0x70c9b299998d7435L },
|
|
{ 0x46168e1c5d176ae0L,0xec3306e4f730ec30L,0x49439df3ab69c15dL,
|
|
0x1040408bea0143e4L,0xb48ab8eabc549b0aL,0x4aa38bbf10f89223L } },
|
|
/* 4 << 315 */
|
|
{ { 0x7e4851599598f49aL,0xbdac3d5e9629305bL,0x20de0dafa6fbabfbL,
|
|
0x04f015838f09fff7L,0x5a0562976a06994fL,0xf51dac8f6e3ccd33L },
|
|
{ 0xc087ef9c3af507b8L,0x525ab76e6a5c6663L,0x4fc04814d916ee93L,
|
|
0x3369c978d23d140bL,0xb0fcd70f1662028fL,0x2ca77de2e1e28adbL } },
|
|
/* 5 << 315 */
|
|
{ { 0x838acd1bc512bc71L,0xac06d6bddc18afd0L,0xc991c1e39ec45f4bL,
|
|
0x667c5e89cc27c68eL,0x0e059b04ed07f829L,0xceccf1d4cec4b3a7L },
|
|
{ 0x3d9c2dc9b953f9a1L,0x4be2f7e72d599b16L,0x1a2054b197256c26L,
|
|
0xcf66fa478b4fdfebL,0x896cc1b38134d7efL,0xa17264cad41dadbcL } },
|
|
/* 6 << 315 */
|
|
{ { 0xe3ccfe8e37627e56L,0x00733a867b6b21a6L,0x3f13e2cbb605c427L,
|
|
0x5ee12395b0d80992L,0x4dcaea94b9991381L,0x4cfed7ee8c4c4b6eL },
|
|
{ 0xd7aad54b7f7f45dfL,0x2229407fb3809bf8L,0x6eb31eee68048fd9L,
|
|
0x693842dfd57225fcL,0x3e62cd85a88dfd3fL,0xc6307d53d5462cf1L } },
|
|
/* 7 << 315 */
|
|
{ { 0x2d15615ef344f5fdL,0xe0ba6a8aa7f23989L,0xbbfc58041c84e3f2L,
|
|
0x22ffeaae6f4ba826L,0x1e9bf27494292682L,0xc768f89146c02af9L },
|
|
{ 0x894127d6177cdafaL,0x8d0523da2acdc791L,0x71ada9aedc78c3c4L,
|
|
0xf21dbbb92c532a01L,0x0c797d5eacb20fdaL,0x1ff99d7616cf57b0L } },
|
|
/* 8 << 315 */
|
|
{ { 0x99b5f150493c1d64L,0x3422b656fb74075eL,0xe7493900ff19bf24L,
|
|
0xc82e5b80260925edL,0x3398d340c0ea1eafL,0xe7de2ba11287121eL },
|
|
{ 0xea6dfb0b87847031L,0x73bed0a1566af2f2L,0xe26678bf12012999L,
|
|
0xb5369e4d32e5cebcL,0x2304eac86d181e32L,0xafdbd9543d364addL } },
|
|
/* 9 << 315 */
|
|
{ { 0x5b1a53ca75da4189L,0xa90485802eb4862bL,0x319424092783ad6aL,
|
|
0x15a4c5e11a9e025eL,0x841bc53313837199L,0x6e9d3e14e642954aL },
|
|
{ 0xf4a02bbdd436ec5cL,0x62fe177bc6d6ad53L,0xedbf1e4eac86425aL,
|
|
0xff9359c8d9f752f5L,0x79c685d92d7ad656L,0x8d82c0c4fdde9052L } },
|
|
/* 10 << 315 */
|
|
{ { 0xf55f868e702f640dL,0xe459aa9b1dedda11L,0xbec0ff9bbb5ba193L,
|
|
0xf7325c4957724703L,0x5ab8f06323e0e4fbL,0xfbf02e91ecb0fd7cL },
|
|
{ 0xcc72e8daa2e5fa31L,0x47de252832cb53cfL,0xbfa646e64252763cL,
|
|
0x7a769efeb8d81de3L,0xf5ec70031e772f00L,0x049bea9a2729aa5eL } },
|
|
/* 11 << 315 */
|
|
{ { 0xe987ba54759090d6L,0x904d6901619ef08bL,0x9e16d1382024a6fcL,
|
|
0xb6f0459ba9f3b7e4L,0x1f2a530817ee069aL,0x99403b2e2be31049L },
|
|
{ 0xba1663c6bfb2f288L,0xf829195cc7a92b41L,0x89b915ee8ae621b1L,
|
|
0x3fbbb1e150f8ea92L,0xb1fe7f978c901ddcL,0x16d1f62cbbc69ca4L } },
|
|
/* 12 << 315 */
|
|
{ { 0x51f19bb3fda072dbL,0xa815459fe3f7e0a2L,0x5f7cde2f987112caL,
|
|
0xdc51d948759de2cbL,0x9d05c410ed49bd98L,0xf063ab99364341fdL },
|
|
{ 0xd7869d68d1aa0a11L,0xc20291065d862d01L,0x7f258180c2591073L,
|
|
0x7b90fc7a6ebc4ebcL,0x5565390f3dda1d68L,0xae77fca8a44e4493L } },
|
|
/* 13 << 315 */
|
|
{ { 0x97564e4847c49ee8L,0xc56bb5a9ab4ebef5L,0x80d969417b4f86bcL,
|
|
0xa594b4e541026cf0L,0xd56c89965a89ece9L,0xbcf609316a0f922bL },
|
|
{ 0x702596161103475cL,0xb1224fb58a2a2abbL,0x0a437a03715cd61bL,
|
|
0xcbe2d2b2739921edL,0xf3b1b5e9385541c4L,0x5d0984f4ae010520L } },
|
|
/* 14 << 315 */
|
|
{ { 0xb4a2742dcfd9295eL,0x9cd36774ae929cd0L,0xb15fadccdd7fcf4fL,
|
|
0x0b1fa2b337d4fcc6L,0x242c7b26f01c7ab7L,0x2be8131b50574cc9L },
|
|
{ 0x6ee50f42bd89a03cL,0xc7f6ff8f005e7765L,0x04d13af18420501bL,
|
|
0xc22e092b1b6e7d2aL,0xa393be7ee9516f80L,0xa2593652b80bb5b5L } },
|
|
/* 15 << 315 */
|
|
{ { 0x5caa5da68b23bebbL,0xa1ad33e81fdbbdf4L,0x18dc93cf4e5c1de0L,
|
|
0xc3e6addb5bd9e178L,0xf30d517e7cb8cd03L,0xbb84ce54f1abc417L },
|
|
{ 0x0774b64c67699659L,0x228005b9b7d4a401L,0xd8c2ec5b80b2d3d2L,
|
|
0x419c4cd93450ba7fL,0x520ae681789286a6L,0x24b67ea9aa8bcfbbL } },
|
|
/* 16 << 315 */
|
|
{ { 0x9e41b9b70f74808fL,0x2d835dae0c061bdbL,0x67e50c8cf272346cL,
|
|
0xc98a5ef5def57493L,0xc2dea8afa02676fcL,0x59508de26ace4659L },
|
|
{ 0xc2b707aada6cd733L,0x6c1f226a4be7bfb9L,0x5b580fa2a778c20bL,
|
|
0x272c3a1d57af166bL,0xe47a64a9ca78ce62L,0xd12db7d771d35087L } },
|
|
/* 17 << 315 */
|
|
{ { 0x6a37ac5a2ada7e64L,0x664594de04e35dbdL,0x3a82f748ffdbf300L,
|
|
0x4525ddf155975f5dL,0xcfe5a76bbdf2035fL,0x1693a99f0fcbda84L },
|
|
{ 0x5bdb76856a297cdeL,0xdb9ad0cef1d1009aL,0x9e9dae1caf902a00L,
|
|
0x7e36f79f271a0a50L,0x688a0f41a2a2f652L,0x33d2178613722e40L } },
|
|
/* 18 << 315 */
|
|
{ { 0x2f4abaff356f4ca1L,0xa2e419422d13be2bL,0x58d72e2f3d7db731L,
|
|
0xafc2f505cd455649L,0x8a0794cd1583705cL,0x4a43066288ffe8e7L },
|
|
{ 0x2c0c031d135c8e7cL,0x8ecd9ed76b371b41L,0x17cc1ad9563843eaL,
|
|
0x9603987cfc6b810fL,0x6e291ed7f0d9498dL,0x8c69ae62e1a4058dL } },
|
|
/* 19 << 315 */
|
|
{ { 0x934666dd40680b5aL,0x37a9c6ac91e762f6L,0xa0a10533e4d26e7eL,
|
|
0xd811d558ade18237L,0x6e2918ed411b121fL,0xbd9352b93c24a52eL },
|
|
{ 0xe31569ccb811ec4fL,0x3b5b977553f7d097L,0xa0d9ebfd7198e959L,
|
|
0x63e10ab13f0a942cL,0x65b8b87f8ea55897L,0x935ea3c129aa0212L } },
|
|
/* 20 << 315 */
|
|
{ { 0xe14dd3708ba8a3dfL,0x49c1fc3750a645b6L,0x3f0db6a32252ff87L,
|
|
0xea2ac3c4a34ad040L,0x97a37936decf9f0fL,0x810f02326f7f92ffL },
|
|
{ 0xd96c2641184e9c88L,0x08c4cd333d5ab12eL,0xa938d8c3eda80fdfL,
|
|
0xf2dded68bfccc054L,0x4b3da61ede36ac9cL,0x2c266df8347ef904L } },
|
|
/* 21 << 315 */
|
|
{ { 0x4653cbfbe3443739L,0x53ea14dd8dd85382L,0x2f6d0513f26ba2fbL,
|
|
0x374d9bee51269be1L,0xf976cdb243f1f612L,0x68b47bf7b5f171b8L },
|
|
{ 0x726e93dc7095f377L,0xe6f18c57b59fcfb8L,0xffb56a4023d9eb60L,
|
|
0x678c9508447caf79L,0x4cec83e459740ce0L,0x820ab7eff4d7d58cL } },
|
|
/* 22 << 315 */
|
|
{ { 0x88eac51c8e376fe4L,0x096e70c49ef465b6L,0xb35265852004969eL,
|
|
0xbd581669d29cc63dL,0x88094298745b6919L,0x317e386c12e7d67fL },
|
|
{ 0x33848bb2e3d6f4daL,0xbace887f2a0ca785L,0x83b32feb197e67a7L,
|
|
0x2b58535ade9c851bL,0x3e428b19c38beaa9L,0x784aa3d174f26de1L } },
|
|
/* 23 << 315 */
|
|
{ { 0x10c5f1e5b292efd6L,0x47d92b88ddc96103L,0xc8743717e5e802e0L,
|
|
0x47781ba8008dbb2dL,0x7abcd3acf02360fdL,0x673e2b05e9142308L },
|
|
{ 0x501db7c76db93818L,0x285ced71f33dbda3L,0x30aa5fb5cdba4b44L,
|
|
0x93d536c2df0445b0L,0x28a77bfa10196091L,0x26b9f668e38c4c7fL } },
|
|
/* 24 << 315 */
|
|
{ { 0x98c3a697c0909659L,0x35c3b0f297d847aeL,0x67d9f71273a7a5a8L,
|
|
0x28e83651b47bed08L,0xfca9e849567b3410L,0x5fa9a6ded291fe1fL },
|
|
{ 0xd79682421976a995L,0xcff5bb36a0261383L,0x34166ef962e9922bL,
|
|
0xd816b0342d433139L,0x3b62d3589c4b99c3L,0x8521f917104f7cc4L } },
|
|
/* 25 << 315 */
|
|
{ { 0xc35a5c7874e09962L,0x1c340269e1690418L,0x2ed61ab4dca0de49L,
|
|
0x2570d29ede2534ffL,0x9077691bc5143c88L,0xaa249a4a346f3ec1L },
|
|
{ 0x57e4f1e104de76b3L,0x206859c3f415b99dL,0xdac6f415f9a15eb1L,
|
|
0x2bf456d00a9501bcL,0x1ceb7dc41ef91323L,0x19c1fa8c3cb8afb0L } },
|
|
/* 26 << 315 */
|
|
{ { 0x7761d8fc6f7b6eafL,0xdc439bfdcc0575e5L,0x33853d91f1ff4383L,
|
|
0x6da20e4b75dc1254L,0x25a53b581969a1d3L,0xb40df56723311968L },
|
|
{ 0xac150a297dd6aaebL,0xfe6865ce2a3ba337L,0xea05d97cf71013feL,
|
|
0x0ab3cf008053c65aL,0x7cd38b647bab4869L,0x788cb867204cc6a5L } },
|
|
/* 27 << 315 */
|
|
{ { 0x253a041e36e88e48L,0x1610f836b86297fdL,0x379d3da109334bb9L,
|
|
0x62de4308777fa7a9L,0x604a46bd6dfefd1dL,0x9e4740ae314eed76L },
|
|
{ 0x40ec32e12efde5ccL,0xa5b841bdd92c1faeL,0x01852e23dec68e16L,
|
|
0xc76173b88b55b2c2L,0x4609f350377d5e77L,0xe9c4167ffd67c6b2L } },
|
|
/* 28 << 315 */
|
|
{ { 0x52732a0a4b0fc112L,0xe654744e9d125dddL,0x9f76cf7e269beee7L,
|
|
0x2fb8bf32ff80a2f0L,0x1bcef16262b7153bL,0xdedc255a43a4201eL },
|
|
{ 0xb1b30b91acbd8a37L,0x147fae6f240adc8fL,0x5558702cb39bf39bL,
|
|
0x171e58803e1eb997L,0x095bf301ed7c79b4L,0x29f1dbffeef752f4L } },
|
|
/* 29 << 315 */
|
|
{ { 0xcbb2506e7535c370L,0x40ee37ec7ab20106L,0x74f502d4caca3675L,
|
|
0x167e778db57c0364L,0x7726715b13fa3dccL,0x76097791f42e0c3aL },
|
|
{ 0xe1d990c3379dd41aL,0x432454d785c8f5e2L,0x1f90c59562ac45e4L,
|
|
0x63e156998ffe0c09L,0xc3bb8c29d42bf0a6L,0x027d5a86ecca4cfcL } },
|
|
/* 30 << 315 */
|
|
{ { 0xaf8ca08b20492da0L,0x37b1fa1547508667L,0xc9fc925b96077958L,
|
|
0xb78c83c19ecac8b4L,0xd9d953a17c05a67fL,0x970ee229b9ebcaaaL },
|
|
{ 0x689cad7f55dc989eL,0xf02f05bc66c941fcL,0x8d00516281e23d8bL,
|
|
0xfe603ffc8caebcc3L,0x592860bff303153bL,0x9ec1d5ab3344e524L } },
|
|
/* 31 << 315 */
|
|
{ { 0x7e374b7b0f922941L,0x44b3f00174466c92L,0xcb3eb28c3c2fe678L,
|
|
0x91079467bb9bf05bL,0x0d268749de2dcbe3L,0xb6383ba4c5204680L },
|
|
{ 0xd50269f4951d3c71L,0x9209a2d53ffbf2e0L,0x2f6496258110f811L,
|
|
0x08fc9fbb0b31e275L,0x697960ea1faec287L,0xae95e4a8c5420ad4L } },
|
|
/* 32 << 315 */
|
|
{ { 0xc20fb9111a42e5e7L,0x075a678b81d12863L,0x12bcbc6a5cc0aa89L,
|
|
0x5279c6ab4fb9f01eL,0xbc8e178911ae1b89L,0xae74a706c290003cL },
|
|
{ 0x9949d6ec79df3f45L,0xba18e26296c8d37fL,0x68de6ee2dd2275bfL,
|
|
0xa9e4fff8c419f1d5L,0xbc759ca4a52b5a40L,0xff18cbd863b0996dL } },
|
|
/* 33 << 315 */
|
|
{ { 0x1304bd65ff0e8fbfL,0xa249adb53343deecL,0x20635fa9826e1293L,
|
|
0x6283f098b7bddaadL,0x0d0a7820bc96fed6L,0xcd7605d47de0b9bdL },
|
|
{ 0x4f0a9751586f9eb6L,0x2f6dde5556b2521bL,0xb7efccbd76264c6fL,
|
|
0x7df9cd35b2613621L,0xc334c8f924a2ff4fL,0x914f472a0b13b604L } },
|
|
/* 34 << 315 */
|
|
{ { 0x89092cbc5f6bb241L,0x8b4dadacca123b83L,0x9ba420eecd2dbaa2L,
|
|
0xf269d1982dd6ef2fL,0x29f68d03809b338dL,0x18cf8675958ae927L },
|
|
{ 0xc179d4b2bffac33aL,0x5356ffc1522695e1L,0x453474986d039c90L,
|
|
0xcba0e0fc5a675530L,0xf369b7ab98a0c70cL,0x51f82173d508c254L } },
|
|
/* 35 << 315 */
|
|
{ { 0x5f98e5aae8490374L,0xdd84a7506ca52a68L,0xb6904ff8a9244f56L,
|
|
0x4c908c0362a5502fL,0x70ff1e01a8df73b3L,0x573a37f20df382caL },
|
|
{ 0x5df73cf8c7dd1209L,0x965ad402abfbcd79L,0x61a633a59e67af24L,
|
|
0x0953c83cc64203f7L,0xe14f58f9a1fd8dcdL,0xb5ea722887a5fadeL } },
|
|
/* 36 << 315 */
|
|
{ { 0x55466aa1d896c2f9L,0xd03ade059831fb31L,0xc46711547d968dfbL,
|
|
0x8ade0c97bce2fdb9L,0xb408c7457f6d843eL,0xb1bbe028a709cf63L },
|
|
{ 0x1dbd25383ba4fe36L,0x1438d322dc1f2720L,0x1c3c46b9c37694deL,
|
|
0xe57133dc3997e650L,0x754c171e422b95bcL,0x29c47f0da209c7bbL } },
|
|
/* 37 << 315 */
|
|
{ { 0xe520480823822d0dL,0x745fe7aae3eab177L,0x6f0f4a7e808500edL,
|
|
0x9383c632200c2bf0L,0x6f3130d7be22d432L,0xed7713d465511061L },
|
|
{ 0xff84bc04049067acL,0x33c2be61d56210e1L,0x57d63f885ac04f01L,
|
|
0xc2fbb773284fb49dL,0x46422426e1f349adL,0x3cb627c465863455L } },
|
|
/* 38 << 315 */
|
|
{ { 0xea06cbe9a1edcfccL,0xb0438e198aff46ecL,0xa93fb88ba450240dL,
|
|
0xfc4a370021b6b45dL,0x2503aa5d82a21241L,0x7533f1d7f540d3b7L },
|
|
{ 0xd7a58a679277538aL,0x466d981a539c347dL,0x46f1682bf26488c2L,
|
|
0xee2b4976318282e4L,0x8fe5e5b85a94409dL,0x40ca43a7b1a4fc28L } },
|
|
/* 39 << 315 */
|
|
{ { 0x0ed4414c901e48d7L,0xdcabb46418340890L,0xd50bf12f20998781L,
|
|
0x498a90232a596ffdL,0xcc877212b43f456cL,0x98d9d531f796c4fcL },
|
|
{ 0x061e3b31977c11b9L,0xe56bc6f00a00c822L,0x756e62c96887ea43L,
|
|
0x29129d53859ec944L,0x42342589146c1fbeL,0x2f2cd4bdd1884196L } },
|
|
/* 40 << 315 */
|
|
{ { 0x3d3815d645d94a24L,0x4cd9fe1139f3e6e2L,0x8c7b8dae8e7eb572L,
|
|
0x7e69faf40f7deecdL,0x0e54b3c0387e97ddL,0xd12e473175a1b6b1L },
|
|
{ 0xb7163632c664f92aL,0x86ab4ea88d94e55bL,0x37212aef1133dcbdL,
|
|
0x0c6c7fc6dfc0d47aL,0xacbcb077aa9e1ccaL,0x43cf50a726ef7fb6L } },
|
|
/* 41 << 315 */
|
|
{ { 0xc0eb003c54d7bac5L,0x89780aea2b770baeL,0x13a194e8076bb29cL,
|
|
0xb863585046f8aa90L,0x79ebc6066df515f0L,0x25ea422dd1ead000L },
|
|
{ 0x16b03b8106c89b71L,0xa964da878ad9fff7L,0x2c96dc6b2e7b9072L,
|
|
0xf71788978c93f6bfL,0x4c7ecef912688648L,0xed7b4a577c663be0L } },
|
|
/* 42 << 315 */
|
|
{ { 0x5b7cdd0ad74a20d2L,0x273184f48bcdd2f5L,0x4d8d3b4ce3ac03f7L,
|
|
0x0e2ff518a02cc60cL,0x9c006ad8b6fa606fL,0x401606caccf627a0L },
|
|
{ 0xe7429a6f7b967844L,0xe4e5d1c1bc8ac8beL,0xc050f89ff4f46638L,
|
|
0xd23a3eb452f918c9L,0x4528e4e202944b49L,0xeb345a689268719dL } },
|
|
/* 43 << 315 */
|
|
{ { 0xf4fbd190ccec4c27L,0x7e042c8722674e8fL,0xbc79835ae8b33439L,
|
|
0xc7923b8fad2124d1L,0x0ece42272c72542aL,0x02d638e2b9264875L },
|
|
{ 0xbdf9fba1904e7683L,0xcbbc0e0aac934377L,0xea154d99459ec213L,
|
|
0x87db3f66c3023e2eL,0x7f9262d518de83a8L,0x432fef4f3524400aL } },
|
|
/* 44 << 315 */
|
|
{ { 0x3b5566d7938a395bL,0x920dc1111f256c82L,0xcee7f231a059c8f8L,
|
|
0xdc3da434d48b3179L,0xb1e819e913f78de6L,0x94a21bb01f9819deL },
|
|
{ 0x8ef14a96f302a94dL,0x9f897e1a079fff9eL,0xff9a4e0e54122af0L,
|
|
0xac6a6cbef0b7f1c7L,0xfd15d9756401df3dL,0x500531a323a0b7b6L } },
|
|
/* 45 << 315 */
|
|
{ { 0x12e22a012da0c724L,0xa0a837f3b80cba90L,0x89df9a3e2a9b5434L,
|
|
0xf3299f64925840acL,0x0cc78a3a125b3dc1L,0xa4ea6203c723d647L },
|
|
{ 0x5cee8068d369522cL,0x3e479803432d5e87L,0x86e809363ad8126bL,
|
|
0x93e871c9cf89d85dL,0x892e4710286c9010L,0xa075a6d3ec3a1792L } },
|
|
/* 46 << 315 */
|
|
{ { 0x095768bc7dfddf6eL,0xc4e331b4e63c4e60L,0x1179808104f28a2aL,
|
|
0x415e33e1bee48983L,0x7fe8050144af7eb7L,0xdf6c423b2f28fbfdL },
|
|
{ 0xd10886db007a2b56L,0xea578b286613f26dL,0xd18a9d1c2b90a815L,
|
|
0xd4c6e8b2675c2c8dL,0xff973df5788bf2d6L,0x4fbeb6210d7e611bL } },
|
|
/* 47 << 315 */
|
|
{ { 0xcfab317671674fa8L,0x78038a1afef7089eL,0x3109736aa27b5b55L,
|
|
0x1b31325fc0193518L,0x3afd21a8be19b5f0L,0x548196a2d8028eabL },
|
|
{ 0x15b0d6d2a94e6be0L,0x1552ffb67afd5dd6L,0x49b1150d89bed9eeL,
|
|
0x2c59b0bfb0d1444cL,0xab265d7eb695a900L,0xa24d0788a1dd1ef4L } },
|
|
/* 48 << 315 */
|
|
{ { 0x4e913e1131e325ccL,0xe92f7c8f2a65fe01L,0x8e61a80d5857aae9L,
|
|
0x2c36923d53104397L,0x5b0911d6b36d5379L,0x76eb9b56b1207ae0L },
|
|
{ 0xb5cd11646723c4aaL,0xa6bec13b98891a11L,0x09af8be29d806056L,
|
|
0x7da8d29ecc1fc0e6L,0x231cc00e2aa8791dL,0x2ded362c042171c2L } },
|
|
/* 49 << 315 */
|
|
{ { 0x26eb2ac96afa51d2L,0x83485eff13c04ce8L,0xdedb48718072d8dcL,
|
|
0x4da1771d8ac3d411L,0x2d8f99ef849c6c0bL,0xea65f6bc2b5882e4L },
|
|
{ 0x60a90f58fd671216L,0xb9f3e2058af33bedL,0x29c41ec92bf02916L,
|
|
0xcdf15b1de5ddeae8L,0x67f9ad163109e99dL,0xb9b5585f517d25e1L } },
|
|
/* 50 << 315 */
|
|
{ { 0xae016b4811b3e20bL,0x5ccf3cf1e5164179L,0x1281ff8efe9fd47cL,
|
|
0xb85438038e61bdf2L,0x694e42feba5856a0L,0x53f7e09759b32aa1L },
|
|
{ 0x5b9848e9c341a531L,0x9a5fb85025952b73L,0x9d5fe0dea6f82c5eL,
|
|
0x9216a8ca44090933L,0x3e986d4bc3272875L,0xc20534f8f3512e42L } },
|
|
/* 51 << 315 */
|
|
{ { 0x718124a1033495a6L,0xc4f28a746834851fL,0x91186d80e1baaa77L,
|
|
0xca4e13222a761e95L,0x7b6b8322582ddee2L,0x75d396c6c3c70c6bL },
|
|
{ 0x075dcd6b54c75102L,0x3669b97c0b92622cL,0x621154e6f0cd45adL,
|
|
0x7ff0029ff381a6d3L,0x3d37e750a726f84bL,0xc4f79202874de604L } },
|
|
/* 52 << 315 */
|
|
{ { 0x215018fdec26297dL,0xaa06fd0bbf35d225L,0xe5fb438cab40bc17L,
|
|
0x6a0ab335acb7f4c5L,0xbe1f4de4187a8e6cL,0x651deba961f7e842L },
|
|
{ 0x2b30b0046f629aedL,0x63bdbf8e2218f107L,0x21a21aa5f9ca8bbdL,
|
|
0xa88cd9138304f7e1L,0x23594fc6c5e6f9d4L,0x4d4db41a6682fc06L } },
|
|
/* 53 << 315 */
|
|
{ { 0xca2317b0428dcb40L,0x9a7bd387288b5eeeL,0xd62da6d0a060584bL,
|
|
0x601a3d6ce8f10251L,0x65718f0584885319L,0x5a87b1c2a1bc252dL },
|
|
{ 0x27ae8015a37b05d5L,0xa624af9c98394605L,0x988220050ba4565dL,
|
|
0xb93395c9da2613deL,0xcef9a880edcaa74eL,0x7b2ef0fe0976687eL } },
|
|
/* 54 << 315 */
|
|
{ { 0x094f20588e5c6b80L,0x6e5a5f52846eabebL,0x9eaef2d7370a9345L,
|
|
0x12d6f20687c19719L,0x0d2494ab9c44076cL,0x15ccc737de9309a6L },
|
|
{ 0x8eeb8faf94ca6587L,0x7dc9a4fe3fe363f5L,0xf02f6e03b3b08270L,
|
|
0x31adbe77daf15507L,0xc0fb2814343bb4efL,0x724007519bdc1d91L } },
|
|
/* 55 << 315 */
|
|
{ { 0xd301525c1677fcb7L,0x11b7141bfb6b0dc1L,0x01f4950eb2163b70L,
|
|
0x34c758c6ed3c0025L,0xd1b1c7573a5196cbL,0x7926f0a42fa19c66L },
|
|
{ 0x107e5d32b1c47233L,0x0fe50b00cacbdaa0L,0xf45dd7e8e213397aL,
|
|
0xca6b2de9eaa1db7dL,0xbf234b55dd09c2eeL,0x10db87d1a1db37f3L } },
|
|
/* 56 << 315 */
|
|
{ { 0xaff57c87de0572ecL,0xc0745250826246c4L,0x523910fc700ef250L,
|
|
0x8c23aa5793faa067L,0x87f7c7198e7dcf75L,0x45ef4adb46695227L },
|
|
{ 0x0ffe09d196ceb1e0L,0xfb72a05790f3383aL,0x62d26e5e07c220d9L,
|
|
0x03e19605766b1e64L,0xa774669458c17fb7L,0x9a851d828e7acfa9L } },
|
|
/* 57 << 315 */
|
|
{ { 0x150e936f4baea8efL,0xeb5328d68239dfe4L,0xe064fd95b5f987adL,
|
|
0x13d3803d52e7313dL,0x0e9738f5b215317dL,0xb6dd60a7974be106L },
|
|
{ 0x00fa92bd6bac81d0L,0xdee050f9e7cb2338L,0xd7943d4f9075745eL,
|
|
0x07cc4170819cfd9aL,0x21b7e0b04aef1468L,0xd7520b77aef07b1dL } },
|
|
/* 58 << 315 */
|
|
{ { 0x126c012681097c49L,0x95339f9475c02669L,0xec3fc15b100115ecL,
|
|
0xea5c8e9c49fb787eL,0x63168108bd3fbc19L,0xdbf2430541573590L },
|
|
{ 0xcaa3a69686dbc847L,0x2c464fcb70d76739L,0xdd9e0bcd69e2fd74L,
|
|
0x4ae92cc01652728dL,0xafe3e24812b060cdL,0xf3776c6ff951a38dL } },
|
|
/* 59 << 315 */
|
|
{ { 0xe4ab1c417af22e76L,0x35a8addf038840dbL,0x95ba3e3dafd0d7b2L,
|
|
0x2a7bf827f84417a3L,0x0bc177c729bf5a83L,0x29ef7f8bd09905a3L },
|
|
{ 0x1df34fb1385e6c69L,0x079bc0fcf99e0d19L,0xcd2dbbc4f30eb5c7L,
|
|
0x2d364701afa7447bL,0x3c7bfa087a791ef9L,0xe21508c8e71166d0L } },
|
|
/* 60 << 315 */
|
|
{ { 0x0b204c9ac746ec60L,0xdd5efe2718b93b24L,0x484474e0ce15332eL,
|
|
0x690be23d05a308b7L,0xeea3abfcb0f7081aL,0xaff69f36cd8e8720L },
|
|
{ 0x5dadd080d951329cL,0x060c379c8cae67c2L,0x8e284705b20851baL,
|
|
0xacc8d8a0e5df0e85L,0x8c024e789463544dL,0x15a9a3f08003076cL } },
|
|
/* 61 << 315 */
|
|
{ { 0x095e284899e0ecb5L,0x61e9d5893415c1bfL,0xb1207d3017f5c585L,
|
|
0x75f73f1d04e97243L,0x868551aa77bd50d8L,0xd530e0cc197f7d84L },
|
|
{ 0xdd6ab731ea9fb71bL,0x26e5b52e2cf9510cL,0x4fba03ff11a88911L,
|
|
0x6608b634e921e323L,0x4baf22f836d46a1fL,0xb8bced501bc7ace0L } },
|
|
/* 62 << 315 */
|
|
{ { 0xaee397fa327d9bbaL,0x9a45e7a2d832e3dbL,0xccb43a730582ae33L,
|
|
0x457b3271d4093b12L,0x409caea6370bd663L,0xa5019f25657f693aL },
|
|
{ 0x5851c78a16478fe7L,0x5e09ace7ddf17dd5L,0x89ca68da0763656cL,
|
|
0xb92d3321e2bad2d0L,0xdd5642098422f6bcL,0x4a6ea69946c04923L } },
|
|
/* 63 << 315 */
|
|
{ { 0x7ba1f48579120405L,0x6c136597898be69cL,0x1e75e1586dcacc38L,
|
|
0x3d3cb58b65ee4cbeL,0xbccee7a308db0caeL,0xee8bff34e77edfb7L },
|
|
{ 0x123bc3f036f60cf7L,0x3b1dc9e779bb4c78L,0x036a8049fe5f0d85L,
|
|
0xc4de23d318f66f39L,0x593cf51e3c436c16L,0xd4d40e906769584eL } },
|
|
/* 64 << 315 */
|
|
{ { 0xf6827150844eefc5L,0x002e82c44515ef68L,0xa46c8f55c51916c4L,
|
|
0x98c3524b61ee081fL,0x5ab7f2c2ad64872aL,0x0b503ff07e555faaL },
|
|
{ 0x802e0d23b4c58d29L,0x122890402fd917feL,0xb56d19087af20d26L,
|
|
0x8d619e216be50784L,0x10fdbb721372b851L,0xf2c1673e4935576eL } },
|
|
/* 0 << 322 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 322 */
|
|
{ { 0xd97a9b1451a135f6L,0x6d16aaf597b4df14L,0xc57160c254818818L,
|
|
0x4dbdeab61d59be44L,0xb93a9dad81f2b247L,0xe2868cf5ecbcab33L },
|
|
{ 0x5e1ce82883a86711L,0x29a9ca2f29c55428L,0xe716273a2d82b0dfL,
|
|
0xb017f5f6ac8ff52fL,0x7563e79970ea7ccdL,0x5fedf0a63f0e674bL } },
|
|
/* 2 << 322 */
|
|
{ { 0xa7f8501488d7b3fbL,0x3b5ec513ec78386eL,0xc6586b8a2ad5053dL,
|
|
0x88c09a43fbcebe43L,0xde7f2a4a20054f16L,0x63daba80bbbb147fL },
|
|
{ 0x087e48f37d352b55L,0x997e32a08317ab79L,0x8ae802ff7f27cac7L,
|
|
0xb01a131c37b1f6e1L,0x3f0d4c2e9a6d1deaL,0xe06114fce7ceef80L } },
|
|
/* 3 << 322 */
|
|
{ { 0x311df84c359590bfL,0xf907d69ddf6ca4b4L,0x876fd36782f22c64L,
|
|
0x64c4d14d9713e68cL,0xd431858d6b07f539L,0x39dfea3384990283L },
|
|
{ 0x6afb8cf080cf6498L,0x327056bcde060e9eL,0x5103ce4a49a71086L,
|
|
0xfc94be75cdf853abL,0x2bfb105f8ca579cdL,0x02d19c3a50454b41L } },
|
|
/* 4 << 322 */
|
|
{ { 0xaa03b474cde121c7L,0x74a648cb55e52c76L,0xb286ef86f37b57bcL,
|
|
0x95b797eb2a6371d2L,0xa489ef894077ccbdL,0xf46ade048e99ca6dL },
|
|
{ 0x5cf9e23723242d03L,0x33c7d32acb708390L,0x329523b6ba7ba477L,
|
|
0xd406ab8757de30bfL,0xaa10e4a21536ca01L,0xdcec94f4dfa7aac5L } },
|
|
/* 5 << 322 */
|
|
{ { 0xb5839fa424700097L,0x82fe2251759eb8beL,0xec5f34bd5f104a39L,
|
|
0x7f3da509ed1cf49eL,0x62fe425244621c76L,0x2118b68dc7bba926L },
|
|
{ 0xb0ac18009ea4b7e7L,0x33b21ca1fcc83f56L,0x1856161208458096L,
|
|
0xba0e6aa95650f3feL,0x918d427231006f05L,0x955f3951b1066473L } },
|
|
/* 6 << 322 */
|
|
{ { 0x0cb41ada3c59ee1fL,0x38b2465861d1633dL,0xde863b47d03e9452L,
|
|
0x2bfab5b41548d45bL,0x580af6272ccb7528L,0x6744c7cb13c04327L },
|
|
{ 0x5eca3ab339cc5075L,0x51dbfc7b6d243f62L,0xd64d84b7981ee3ceL,
|
|
0xf639a03db4f2bc63L,0x8a411c36a317a1b6L,0x51edc4c0ed34eb3aL } },
|
|
/* 7 << 322 */
|
|
{ { 0x01511b8a9d6fce5eL,0xb5c7b33f89a2875cL,0xa88e720e2fd79b67L,
|
|
0x5337034404229e94L,0x40bb7e7ec94af25cL,0xc11501b99183a7b3L },
|
|
{ 0x29a4d81fcec3cc7bL,0x143976fdd75b8febL,0xac8dad2cfa261ad0L,
|
|
0xb14793006a2db8a8L,0xd4981293929c4a12L,0x5703506fb6eef856L } },
|
|
/* 8 << 322 */
|
|
{ { 0x762a5eec1f5a9609L,0xfe4f5f6a765b337fL,0x0fd534aeaa4f964aL,
|
|
0xcf46648ed6526f01L,0xbc62a54a18d71d72L,0x48d94f2a4f8488eaL },
|
|
{ 0x62c40de7a0c72a86L,0xd73ac51a725dd2efL,0x3a51d7466ab19096L,
|
|
0xf07bea4b2dd1ad3dL,0x2a0ec4672ef88078L,0x92598cb3664e435dL } },
|
|
/* 9 << 322 */
|
|
{ { 0xd49f753012fbc44aL,0x769a4fc941c51d91L,0xeb1ed485981fd6a9L,
|
|
0x90a4b3cad7daf430L,0x4bbffd5c75d07405L,0xd998a096da671888L },
|
|
{ 0x0514ad4b6e10976cL,0x5d40328aab11d9ecL,0x86de976bfa180702L,
|
|
0x259ca429f6f8a4b7L,0xe08970f05772eb4fL,0xca428fa1b5feb7a7L } },
|
|
/* 10 << 322 */
|
|
{ { 0x9f3d76ae35af4a88L,0x0b92f48a242af3e6L,0xd4f8a37b7165d261L,
|
|
0x30e1fa8b2b917832L,0xd26f821f8fdfc06aL,0x75359bcf3669d1a2L },
|
|
{ 0x0ba3bcebb638331aL,0x8d02c0996c73b62bL,0x2a8c078d8c4f63a5L,
|
|
0x55458ccaa312c282L,0x901ea0ea5eaaad9dL,0x03665da20e39eba1L } },
|
|
/* 11 << 322 */
|
|
{ { 0x79a30b82da9affceL,0xafb188567204a29dL,0x2e64e6105a8ed24aL,
|
|
0x6bf3695a9e44aa24L,0xc22320690c77fa6cL,0x20b3c69531524429L },
|
|
{ 0x91e60caad6e0f847L,0xf0fa30c4542d6b57L,0x56a3a66bff98ceffL,
|
|
0xec44f0b72c9507a2L,0x4ef13008c37e17e4L,0xc819ae81cda21355L } },
|
|
/* 12 << 322 */
|
|
{ { 0x17c563be1cac0b58L,0x889cfcecb8491347L,0x591d49ac4cd1bfc0L,
|
|
0xd4465510d4e53d3bL,0xca95ccf6ad079a6eL,0xce391389b5ea6eb4L },
|
|
{ 0x600ccc9ca48b6447L,0x20d0c7dbc20d56a8L,0x5f27edc569c6c6e7L,
|
|
0xb3fc0f4a586abcdcL,0xdbfdf3f985dbc5b6L,0xfba1cf254ea80fe0L } },
|
|
/* 13 << 322 */
|
|
{ { 0x38d6267e427a9075L,0xd1df12006d63ea4cL,0x9887a99881407b57L,
|
|
0x41accae4688e9f0eL,0x33c63c9e10886dc3L,0xf8332ac57574a033L },
|
|
{ 0x7d77d41f4c636d00L,0xf6f4ca28add70d4bL,0xbe496330c0ee111dL,
|
|
0xa4de7670b74bc69dL,0x683a93d369e5eabdL,0x4c5461c710963bd5L } },
|
|
/* 14 << 322 */
|
|
{ { 0x9bbc99b59310424cL,0x6f4bce534568e290L,0x21373f5bc1572fd6L,
|
|
0xe5ecd5b6a28b4394L,0xd56968f646ef7bacL,0xcbce8614726cc043L },
|
|
{ 0xb2fa6101d0a49bd8L,0x65eaa7725a7b41c3L,0x10d7515296e5ae18L,
|
|
0xec8f4639af389838L,0xac660d81bccaff25L,0x3c546ba931734025L } },
|
|
/* 15 << 322 */
|
|
{ { 0x81b13d3ee098c584L,0xf8eb4e41fa3460caL,0x1bb889d1f0b905e3L,
|
|
0xd158ebe939a3faafL,0x7ad0f829cf09735eL,0xc89611963aa8b3beL },
|
|
{ 0x522327781be516cbL,0x9118d851ee88d911L,0x35ad130f0bf2a62cL,
|
|
0xf35bcf1b39c05087L,0x73b992c3bce42949L,0x93ce50b95b42744dL } },
|
|
/* 16 << 322 */
|
|
{ { 0xee6e7006b515fff5L,0xaedf6e3913258ed5L,0x373adf7dfc45111bL,
|
|
0x0c7535b1875c23c8L,0x2a7e04f897039d49L,0xd76787ae9afd1a06L },
|
|
{ 0x049dd38591b6dc89L,0x8f0c8ad0932dab78L,0xdce057b9925498c2L,
|
|
0x7b9c9bd2da25daa3L,0x6d0b70a3d4decb7dL,0x099a218303df76efL } },
|
|
/* 17 << 322 */
|
|
{ { 0xbfaf4b848c5520a2L,0x36fa343fc6741e50L,0xadcc36dcbd5211c4L,
|
|
0x2cae5a8514bf0578L,0x8fee4d403fe4171eL,0x2acd2756624d0daeL },
|
|
{ 0xaf99a323623aa9cbL,0x120cd2038c8191e2L,0x2073e8884068d993L,
|
|
0x144851ac579bbf88L,0x54d458a4ee29fa34L,0xb7704255e5e5d676L } },
|
|
/* 18 << 322 */
|
|
{ { 0x02f6e396617dc4bdL,0xbc48c42961497feeL,0xb27487fe0b4d22d7L,
|
|
0x33d6b1161d0b0aabL,0x5e21cebad31278e5L,0xf7119a50dacd8f27L },
|
|
{ 0xe47eff2cc8ab54acL,0x7c7ccd3bbbe16c9cL,0xc056d817c584bafcL,
|
|
0x868ead2b97790d9cL,0x8fea6eea1a58126aL,0x67d323640fab2640L } },
|
|
/* 19 << 322 */
|
|
{ { 0xee1a958ffa14b58eL,0x900644f9760b54e3L,0x97fa6fa451579d09L,
|
|
0xa7351c3b26e7f95aL,0xc3546595aadfd139L,0x07b7ef48f14f1e6dL },
|
|
{ 0xc8d100ec4d139608L,0xf98609b2d8741228L,0xf0890d9d33030d3eL,
|
|
0x893b874fe28ed106L,0x5439b7aff7bb558aL,0xe68a3adba71a2261L } },
|
|
/* 20 << 322 */
|
|
{ { 0xff54e8bc8acd597bL,0xdae781e94682b8c6L,0xb2265bc4ed1fae2dL,
|
|
0xa5e23c29ea983db1L,0x4af5f55909851454L,0xffe9538836eb4506L },
|
|
{ 0x4c72b2d1c2247b8fL,0xb179573331a67505L,0xb1aa8ad4e19c9c25L,
|
|
0xb9cfea953e8b8004L,0x07782d788ac747fdL,0xe23e547fce9d9e41L } },
|
|
/* 21 << 322 */
|
|
{ { 0xbc6b0088fd9e8e72L,0x7e51aa5dc6453462L,0xe8615fb9c8b1725bL,
|
|
0x031f0d2a5a371c9bL,0xb9db0a647441d8aeL,0x0dd0446e9d5783c5L },
|
|
{ 0xb3b7be2381720779L,0x49a8ecbb6cc5a610L,0x165c626152cd016cL,
|
|
0x5fcd657da3f6ae6aL,0x30497fbc9f6988dbL,0xd734927936a73fe7L } },
|
|
/* 22 << 322 */
|
|
{ { 0xb30ddd0e388562b4L,0xc485506b1f61067fL,0xf0da517684947c84L,
|
|
0x04830cedeb067f33L,0x05084c8262404b76L,0xe7e7efad7996707cL },
|
|
{ 0xc2a6a57fc78b9a7eL,0x4e55fd8c7bfbf308L,0x204e7c44d1386117L,
|
|
0x979ecd5a4e56595eL,0x3bfc790853707b85L,0x2c3a41c59fcc5b7aL } },
|
|
/* 23 << 322 */
|
|
{ { 0xcdbfd951ed6e2671L,0xb72c42ee135f6b96L,0x38c8d1ca40bbb789L,
|
|
0xf6fa984cda03f270L,0x76dc5a19ed88deb9L,0xa8c88f2a9985bcd7L },
|
|
{ 0x2b0d3b66c6628a44L,0xdf679b6a2b311954L,0x30a363c25f851b07L,
|
|
0x78a5d242aecdb9cdL,0x42d7ca82a968b4e6L,0xb188e99af2efb94fL } },
|
|
/* 24 << 322 */
|
|
{ { 0x779905b6d8948f95L,0x3c7085b591cd0206L,0xce9af0aa679096dbL,
|
|
0xfdf04f10f558913cL,0x05300cb06f24a2e2L,0xf9d9a2f25d581b35L },
|
|
{ 0x855c8de96a713751L,0xc9ac24bc0e0c0dfbL,0x67612a4197740d65L,
|
|
0x7588a52744c9360dL,0x928ac910325cc880L,0xa74abdafacdd3188L } },
|
|
/* 25 << 322 */
|
|
{ { 0x98d80359e7c5fbc7L,0x6abc82b7047c61d5L,0x8d8f5fbd58f2fd49L,
|
|
0x321f2426ccb0a4dfL,0x379f10e2e96cac24L,0x34c0444130666763L },
|
|
{ 0x8dd3972043632c61L,0xb2bbe2eec19f98eeL,0x00d5a467c464dfa3L,
|
|
0xa44ceb19a85b6fecL,0x88bf80ddc9b1fa77L,0x7e5123c8e6dda98fL } },
|
|
/* 26 << 322 */
|
|
{ { 0xf73ad540b75a6b88L,0x57bcf1cc08487cc1L,0x00358de735cd0c27L,
|
|
0x86d469a2573df808L,0x4884cd5684716abfL,0x0157687fa7da61d7L },
|
|
{ 0x8efd8acda732c2cfL,0xb6c9bf7198677236L,0x3d1f01826d46c473L,
|
|
0xafa65fd82f497476L,0x535ee757e54f17daL,0x432b5878fe7aaef6L } },
|
|
/* 27 << 322 */
|
|
{ { 0xf091c4ff3370e118L,0xabf011ee118d4b8eL,0xb489c4b7a13c7279L,
|
|
0xc2dd44e93bfb19feL,0x10b68e92c5d859dcL,0x57935fc39249205eL },
|
|
{ 0xb97e63b06c929bf4L,0x98cb08a739a25097L,0xb13f17c15eeedf15L,
|
|
0x1e27a85c240884feL,0xda1515ad9b601298L,0xe01251fd4ce36c3eL } },
|
|
/* 28 << 322 */
|
|
{ { 0x3774af36ba6aca8aL,0x562fcfb1340e6a03L,0xde45205ec1187539L,
|
|
0xf3b114418799c22eL,0xfd53f681e8b0842eL,0x45a0039066d36d64L },
|
|
{ 0xa2c3391d353eb1e7L,0xf9d9fcc55840eddaL,0x4df1fa4a6ab8ab4aL,
|
|
0x2b0cd34bd841a623L,0x52441d79b10b189aL,0xfd86d3c2fa025da7L } },
|
|
/* 29 << 322 */
|
|
{ { 0xe28f3bab5872204bL,0x6f87cbaf0ba35c66L,0x783e85c03d877c60L,
|
|
0x376e5e2df132df52L,0x213d53a9bc2cd6faL,0x2e2a573008a13174L },
|
|
{ 0xc0988fa9ba15290fL,0x51d81b9485456f81L,0xfe371f32a0ef5b80L,
|
|
0x9aca060ff129171bL,0x0b02b39e0e402e65L,0x8e6bce1eae9c209cL } },
|
|
/* 30 << 322 */
|
|
{ { 0xb0cb0f0c532f78c8L,0x83113e752d133635L,0x3f64aad5123dc64bL,
|
|
0x4d3201c85aee8c59L,0x265905dbe75e8642L,0x9d1d277805f9a759L },
|
|
{ 0x84778aead9e2a07eL,0xc747cc3a9c0aed31L,0x10d1b4e87af2dc61L,
|
|
0xf58a6bd8af0bf23cL,0x83836c2352e1ee75L,0x88c4d1c6d899062dL } },
|
|
/* 31 << 322 */
|
|
{ { 0x27eb26a3f3842d98L,0x90f712b69da68159L,0xd11177052676f05bL,
|
|
0xdf603446073bf994L,0x28ad2b498bfcbb7cL,0x6916c6e2e5e1266cL },
|
|
{ 0x37d516996e98d62bL,0x155d8ef749634968L,0x0676ea286a1b2222L,
|
|
0x1dc3f8d71566cb3bL,0x95fb3f177dc6aecbL,0x092f4c8120807b13L } },
|
|
/* 32 << 322 */
|
|
{ { 0x3c6c5618b9d926c2L,0x7e14c3ae4a9099f9L,0xb3259c90ae2fb830L,
|
|
0xf7cc6e43ec31a504L,0x83bb13c6126230bdL,0x5a1f4313ff1dae3aL },
|
|
{ 0x0cc6c1a549b0b65bL,0x67fa836a274a84c2L,0xd454c75fe604a58dL,
|
|
0xceadfd912491f872L,0x6c5575da9ce116a5L,0xfaa4903fb24a4481L } },
|
|
/* 33 << 322 */
|
|
{ { 0xc9ade1497c4579f8L,0xdad7eff3be316db0L,0x4ff3abc613fce23dL,
|
|
0x09103a75da708e56L,0x4cf139fa8ab52827L,0x0f82219b8f251a68L },
|
|
{ 0xd19719c7dea33388L,0xa482548423085413L,0xbb63cb43f8eb4b18L,
|
|
0xeec33735f3b88079L,0xee79d331de3ddb97L,0x56fc93090e5acf8aL } },
|
|
/* 34 << 322 */
|
|
{ { 0x951a780bcef9c5bbL,0xc37d442ddb35bf11L,0x8e2a0e7d64a776b0L,
|
|
0xbf461becc652cf34L,0x3970eb603194f918L,0x2768daedb3bda869L },
|
|
{ 0x8e81257557b24bf2L,0xae05e2db38dd69cbL,0x0adab288cee2f522L,
|
|
0xc7a0e1f148234f13L,0x285f6ee36728c9e9L,0xb9ae7b9fc4541e19L } },
|
|
/* 35 << 322 */
|
|
{ { 0xfd90c5c1f6422b56L,0xd9fc8cce4dfdb947L,0xf3566dc4d088588eL,
|
|
0x25dd9e27f22682e6L,0xb077392119b0a532L,0x54da228c0d05a9f9L },
|
|
{ 0x0f7fda40986f60d4L,0xb6dafff6c9b112feL,0x7eb99e1a4abfdfcaL,
|
|
0xed499eb9389611caL,0xf230d6d6f251477bL,0xc09d328c227ecc92L } },
|
|
/* 36 << 322 */
|
|
{ { 0x9b21ef6c16cdcfeaL,0x233be0c3694edecfL,0x110243df7c49c931L,
|
|
0x03a59a2ea3113ed1L,0x6470f721023c9a77L,0x7d1640c88e9ff099L },
|
|
{ 0xc21488316f2c7b37L,0x9e1c9e1dac6eebc7L,0x6af65a671109ca9cL,
|
|
0x8379fdd9cc6f80d9L,0x33f74ade7e666a4fL,0x07ac728b7be081a5L } },
|
|
/* 37 << 322 */
|
|
{ { 0xa3df31a312354705L,0xffc8fdfc1aec1bd7L,0xd9dd39c112cc342cL,
|
|
0x8077a57e37bf43fcL,0x0f037ce49cb8751eL,0x5740f6b5b805b530L },
|
|
{ 0xd26422704e2b5b93L,0x114bb1f02dc158efL,0x71881767a9bec3d1L,
|
|
0x1174386d266d95cfL,0xa373d7ea7cdd4461L,0xaf4f7b40d814a33eL } },
|
|
/* 38 << 322 */
|
|
{ { 0x0db94a18f79761beL,0x263e2acb5717b98cL,0x78c28d8182567b0eL,
|
|
0xce1b366b893c35b4L,0x1e20b1bc0d6907a7L,0xd6f123474b973588L },
|
|
{ 0xfb945471f717e91bL,0xef85653cb027bd4dL,0x048e9e1df07dc0e1L,
|
|
0xc494aa9cc163b83dL,0xfaec72d3021b4fa5L,0x5c63c30fc9869fe6L } },
|
|
/* 39 << 322 */
|
|
{ { 0x2dfa058d510d8d86L,0x772fad416a89aa0cL,0xdf55d15cd586f23dL,
|
|
0x7d96b7a989b604f6L,0x352fe049a38d821bL,0xfc56b8df4fbb5795L },
|
|
{ 0x264122b4b3d5dd0bL,0x89317f4a980177d9L,0xc060ab4a13e2aeecL,
|
|
0xc2676725e2cafc87L,0x78863cf45eb1df3cL,0x2e1572dc0ab1a715L } },
|
|
/* 40 << 322 */
|
|
{ { 0x7a8a898d5a4703aaL,0xc59933ea1cd6f9d6L,0x703265f5d28124cdL,
|
|
0xe1c1bee10178d1feL,0x9ff31cd4241262e9L,0x9174a939a3c9f80fL },
|
|
{ 0x0f7a3d2dbc2a62eeL,0x0454051c62f1b3acL,0x83502c9ea2421254L,
|
|
0xb4fa51fcb684199bL,0x257e9e2bc5e36a44L,0x14efeed597d8647fL } },
|
|
/* 41 << 322 */
|
|
{ { 0x09bddbc28f2b12baL,0x8af83a779b7f1c14L,0x88f9b4d3bcc934bbL,
|
|
0x8d8312df8d072340L,0x2ee105bc615989dcL,0x6044fa00de3bab08L },
|
|
{ 0x98c499d603cc86ffL,0xf0b48aa7c5068033L,0xdaa536d2c96606d8L,
|
|
0xef905aa2bc6a843eL,0xb6f108ee8ac620ecL,0x0dec7dfbb6dd66f9L } },
|
|
/* 42 << 322 */
|
|
{ { 0xb9157d4ab0fe18a8L,0x139bbcbc68cc7a70L,0xd546a06d7dea2914L,
|
|
0x8db142d4a01cc59aL,0x127ce2d9aa09fcdfL,0x3950a5a63bfef8deL },
|
|
{ 0xf41ef6d42527522aL,0x4b4e6f107e6fb19cL,0x2a2735d1345788c5L,
|
|
0x87963e1ee72a7ae3L,0xb58d8934fc443360L,0x93552692b16b6f2eL } },
|
|
/* 43 << 322 */
|
|
{ { 0x70591a849518f0c7L,0x5c282b6fc67c438fL,0xdbf61b6b100facc1L,
|
|
0x3c5d969f2bf2a5beL,0xe1a0c6cbab980c70L,0x70f4981c680619fdL },
|
|
{ 0xc6905d7cc65be256L,0xde3340fbb5c27acdL,0x17be9d182c1b3fbcL,
|
|
0xd584e4f96fb00b1dL,0xac5dc14eb819646fL,0xf5c3279a3242935bL } },
|
|
/* 44 << 322 */
|
|
{ { 0xfdb13b31be970ebaL,0x119b1c08b0bfadc2L,0xed62f35e21875542L,
|
|
0x73c8f9b0349a6d12L,0x8c35d8f8bd1622c0L,0x501b9d288b6521a0L },
|
|
{ 0x377f8fa1c918b2d5L,0xe2a9580cd0239ef9L,0xee24f4f0371d7bebL,
|
|
0x4cc697a669231b47L,0xa55193c8dc4c5a07L,0xd4e51e1db0ab8507L } },
|
|
/* 45 << 322 */
|
|
{ { 0xcb811c27265f267fL,0xb85593aa9e2688f4L,0x57a1969dd76bf364L,
|
|
0xc29946c9014483a2L,0x5bdd72490915bddeL,0xba6d13ff22746ae4L },
|
|
{ 0x524121e0d25f6b7bL,0x9011309e0d68a3f9L,0xf25e89ccdb91c66cL,
|
|
0xae79cad781df593aL,0xef8c6bec4f103231L,0x832659c3e038f02eL } },
|
|
/* 46 << 322 */
|
|
{ { 0xd58eeece37761959L,0xba6d8ab5b328f084L,0x3911e6ae324a6706L,
|
|
0x299921c8ad139296L,0xb81a3fe4f6b8d9e1L,0x2680c46f5ef06a6cL },
|
|
{ 0xab9cdf368611d63cL,0x6c9fa5b3cc0a5da8L,0x712356a3da4d4412L,
|
|
0xc1707a10cd3f550dL,0x5c25b2f3ce468303L,0xe4be20bffa546b6aL } },
|
|
/* 47 << 322 */
|
|
{ { 0x797a2919515ee1dfL,0x65dd5991119dc9d3L,0x82e8201b41e4c5ffL,
|
|
0xd27b35130d3dd45aL,0x9ba590c5b13b2dd7L,0x0f15b35282992935L },
|
|
{ 0xef39971e227e4e46L,0xb74c524b2786fd6dL,0xe09c28ec71b1579eL,
|
|
0x0d1418e285f6a935L,0x173265448719fbe7L,0xfe3b1d831200b35dL } },
|
|
/* 48 << 322 */
|
|
{ { 0x6e96a8195cecb21fL,0x3a58d8b2d8beecaeL,0x93c3cbb0c0c715a8L,
|
|
0xfb06f977541759b7L,0xf25ba095771c3d2cL,0x7560446ea3bfd322L },
|
|
{ 0x7cd99f35a015cb4fL,0xa0e541960786f235L,0x0f868f768b8e291aL,
|
|
0xc8260b0b2f95050bL,0xaf38376ef4c0a462L,0x2b3c0f3b98a3395dL } },
|
|
/* 49 << 322 */
|
|
{ { 0x99d4529efed6a724L,0xc6f1b084071d8d31L,0x6c48062ba097da1fL,
|
|
0x1dd10493301c1d74L,0x5288f194f554cbccL,0x77b1b81f39dd42c7L },
|
|
{ 0xeb1f2d53a007a6d8L,0x43bed54e05648d75L,0x1a85326f29801a1eL,
|
|
0xcb9a91a4f564d78aL,0x4f38fc7893f071deL,0x920117d8aeeeb5adL } },
|
|
/* 50 << 322 */
|
|
{ { 0x709b5904b35cba78L,0xef0c321021b11d3dL,0x38f07eec46844b18L,
|
|
0x2e79f99934870a55L,0x9e9df80400d7b924L,0x857a95625cafba4bL },
|
|
{ 0xef8ab68f4adfea6fL,0x4a83bfc16ea764e1L,0x21f4c75475e8d874L,
|
|
0xa3597f526ecdf5d1L,0x9d3a4766eff2e1e6L,0x9872db39e5e6ae81L } },
|
|
/* 51 << 322 */
|
|
{ { 0x42d9f39e99bb9a10L,0xe617263ce35e4852L,0xb3f8ace1a06b71d0L,
|
|
0x861520de6419d9d1L,0xc2c521cf37b1fe38L,0xd537001b9edf9936L },
|
|
{ 0x92614b9f39af94e7L,0xd2003f2e25286664L,0x249d04aeb836d4b1L,
|
|
0x3c6c192ab26df88cL,0x6e0b25442c72ec0eL,0x69d7f6d7497f03dcL } },
|
|
/* 52 << 322 */
|
|
{ { 0xbb5a95f6293cc00fL,0xb202a82a65fb729eL,0x819c26aa12e35774L,
|
|
0x70cd5237c2b3f0b2L,0xa752224a89b2c5ccL,0x71c09cbd0ec89df5L },
|
|
{ 0xb849e352bab45d24L,0x290f0307d313f461L,0xf083031cee885e9dL,
|
|
0xdf42a973a60bf2faL,0xe39f2118d4842999L,0x8b54cf1d0508febeL } },
|
|
/* 53 << 322 */
|
|
{ { 0x8942b4df0d846a3cL,0x18db708662b6605cL,0x6549e019fafa6508L,
|
|
0x85d97fce43ef9443L,0xe9f13da373485de4L,0x5743297bb0f46e8dL },
|
|
{ 0xc52781bb70908255L,0xcd88a48a6bc6e666L,0xf857caa5eb4f54d1L,
|
|
0x32dc925320974dfaL,0x6dc79fad965146e6L,0x24e3a8d2edc1f747L } },
|
|
/* 54 << 322 */
|
|
{ { 0x1993fa650e81671fL,0xc6acd9f3dd1a1e4fL,0x227edd1a7bf36f1cL,
|
|
0x4ad2478370867ca3L,0xed0254f758b9a7c2L,0x63fe279a7013a5a4L },
|
|
{ 0xa65787ee232e6a88L,0x5faceda487161d5cL,0x36e351b603d64c37L,
|
|
0xaa265f1de9e30871L,0xbf3432f521e6f66bL,0x69d68c068621289dL } },
|
|
/* 55 << 322 */
|
|
{ { 0xd2bd143ea0807eeaL,0x474ad99582568efeL,0x0fcd6bba7d482c5fL,
|
|
0xf83e6f15e2628f4eL,0x314508252210e41cL,0x8f0a9402f47de776L },
|
|
{ 0x7f20bc562ee4d1e0L,0xed4157de791aa7a7L,0xbe443399be2dee9aL,
|
|
0xb461643371625f13L,0x1be21ba8771f55c6L,0x04b3035a300fc187L } },
|
|
/* 56 << 322 */
|
|
{ { 0x0952b888b9d0bdf0L,0x3973763c8ce32fb7L,0x221f0ba56dd860c7L,
|
|
0xbb7a27feb16ac501L,0xf113b194bc8fe58fL,0x18f3297a65839ffbL },
|
|
{ 0xa2d4eb7c8dc30003L,0x3fb4b4878e334479L,0xa4f32c651a8310e3L,
|
|
0x944cd644f78f46acL,0x14e40c4af96fb91fL,0xc31402bd4ddf6e72L } },
|
|
/* 57 << 322 */
|
|
{ { 0x9eb2c9e51ff0ab88L,0x0a29fc0695cc3436L,0x3f4b4ebdbd298127L,
|
|
0xeb8ad8b52ef56848L,0x6159700f5b211ff6L,0x8fb98f2fc3a67bc0L },
|
|
{ 0x5c5998ffbd195b66L,0xea99d6767e44a64bL,0x314316e4bafd1471L,
|
|
0xb5f48757cc8c0e77L,0x922a91d15b259ac8L,0x2458279cf9fc4e4eL } },
|
|
/* 58 << 322 */
|
|
{ { 0x945c5a3c6aac3e97L,0x5cbdfad9a266ad50L,0xa3e38114fe59f5ceL,
|
|
0x1ca1cfdace3ae206L,0xbe1f15e12a84cfdcL,0x682514726a12ec3fL },
|
|
{ 0x48409f871f57341aL,0x632c369e8461bf7fL,0x1c96fc87d8865ed4L,
|
|
0x1727934ae1ffc51aL,0xa60f0ebb6d71f51dL,0xb6c354052e411888L } },
|
|
/* 59 << 322 */
|
|
{ { 0xc7b3d3bb72a77726L,0x04b9bdfbbdb03d78L,0xdbdbaa7e2fe88db4L,
|
|
0xc5848e58564710b6L,0x7bbd84863ec55713L,0x1b5aea5670183191L },
|
|
{ 0x95d91bb25340d9b7L,0x9a1462e4187a3252L,0x5cee9b8cec352fedL,
|
|
0x7db8350137049284L,0xa1d2822cd3b714f3L,0xe4cf6d53c2e51da6L } },
|
|
/* 60 << 322 */
|
|
{ { 0xdb2a2ac9a63f6f62L,0x4c0d2da695f20639L,0xa485a6adb475e177L,
|
|
0xf6dad8b5aa93055fL,0xafcc1e954974bc52L,0x6686940224fcf32fL },
|
|
{ 0x10c138bfc103b013L,0xe74ea82bc6faba1bL,0xddb399c581824de5L,
|
|
0xae797b70cdaad079L,0xc648e7ad6ea955e2L,0xd07c5c919be79db6L } },
|
|
/* 61 << 322 */
|
|
{ { 0xf4b7a33b39d93befL,0x4be176f9659da9f0L,0xbf57d975f36642cdL,
|
|
0xe10b452d16d5528cL,0x7c062421a6bdd74bL,0xc093e346e7aa1d9eL },
|
|
{ 0xb7cc38cc2f5c19ddL,0x9fc7f69b230c8790L,0x9b667acd5e3c5282L,
|
|
0x1cade31144cd22ebL,0x53a0d702bb43a1e4L,0xb25868777906519eL } },
|
|
/* 62 << 322 */
|
|
{ { 0x46e2415deb5003acL,0x05aee8855e8a6a0aL,0xbda9f162bbaf343dL,
|
|
0x658b350b21853341L,0xaf6b4948ced47246L,0x1d454740723cd3bfL },
|
|
{ 0xc4b7ce3fe1aaef54L,0x619420daa35c9e24L,0x65d455b14eb7a52cL,
|
|
0x2f9b700a4c961515L,0xa5b7b962d3aed448L,0x4e32a6d937851d3fL } },
|
|
/* 63 << 322 */
|
|
{ { 0x2c4c1b2ed00f8cb9L,0xbf83ba500fd305aeL,0xb75bcf9f801a8e64L,
|
|
0xd8ab465ccba76b29L,0xf5a2bcd74ea718f4L,0x81501d563b592ae0L },
|
|
{ 0x9734e4e26ae6bac5L,0xc4860b0eee304e5eL,0x8bd59b7b1d59f1acL,
|
|
0x7c9497e8e799594dL,0x4bc6634c08292918L,0xc45583aa92619229L } },
|
|
/* 64 << 322 */
|
|
{ { 0xc5ad791eb45a8002L,0x4a23fd68ba2d7a40L,0x673b9e4998544bc4L,
|
|
0x934d8f55d273c360L,0x7fb48d0768a75a8cL,0x2e6201055e0fac97L },
|
|
{ 0xbe01655ff10ed580L,0xd21d52ae9e96731fL,0x74f830de53325138L,
|
|
0xa7240331de9f3fc5L,0x96b25206a7e01fa5L,0x3fcfedee07eda4b4L } },
|
|
/* 0 << 329 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 329 */
|
|
{ { 0x3e6e93818d5c039fL,0x809494228a8d2cc9L,0xf2d7c8b4b843ec06L,
|
|
0x0055d882af8a23f1L,0xe848010ed3792335L,0x9b41a55f55e08e74L },
|
|
{ 0x956ea8e95de83059L,0xf159a9973263678eL,0x5f7b9271cca1b548L,
|
|
0xd41d2281f1d0b7f1L,0xb187047b5c9963fbL,0x213ff6af02536cd8L } },
|
|
/* 2 << 329 */
|
|
{ { 0xe51a95700d0fa76cL,0x67c7890e4d2e9c8eL,0xc6160fa2f974d2cbL,
|
|
0xe00474f74c6a78deL,0xee916e510ac89d11L,0x1adad97af826f133L },
|
|
{ 0x3fc65d3f8d2d77f3L,0xda9420750ba6c300L,0x5237a82e0b9196b1L,
|
|
0x4975e680a572b6f5L,0x41ea8b92b9bed2bcL,0xbe0ad7109826825eL } },
|
|
/* 3 << 329 */
|
|
{ { 0x06f721d30a9ec81fL,0xf0359222034f3e78L,0xc5ca6b7a5a44ffd9L,
|
|
0xc53e328915764390L,0x7f16917459747d7dL,0xc3a9981461f79122L },
|
|
{ 0x099f4e3a97aa46f7L,0xcb0570c9d70458a6L,0x270a43576b72f327L,
|
|
0x9d6bb26cc33695bdL,0x60f9202126224902L,0x8eb0e108e1b0a51fL } },
|
|
/* 4 << 329 */
|
|
{ { 0x8a390dca9fcaba39L,0x3879f0b4278d22b3L,0x77bbea69bc5e82f1L,
|
|
0x71f02e2d4628d6f1L,0x6260790cf968e240L,0x1c7f3df5665270eeL },
|
|
{ 0x336395451a87b1c8L,0x2011fd214ffd9fb8L,0x69060f867807ed55L,
|
|
0x1b0ac0119dfa452cL,0xbbdb25fe06d27c0dL,0x5c25d23aa60ef90cL } },
|
|
/* 5 << 329 */
|
|
{ { 0xc08dc153d9f75d6bL,0x5c1f07e7a0330237L,0xb3e6fb677d67a5c9L,
|
|
0xca949ed098f9faddL,0x48b16b2dd7720835L,0xfdb1b735fee4d341L },
|
|
{ 0x1a6b37b1debf3207L,0x5b3eeb1e3218c63aL,0xc19b57b504c23b30L,
|
|
0x178bd3bb40669e2dL,0x74e57b26fb6b162cL,0xc3626931a0932b58L } },
|
|
/* 6 << 329 */
|
|
{ { 0xd3eb69e4734b2e9cL,0x1c2754e2c35ff1b3L,0xa26681e69f3e8c51L,
|
|
0x7892ad11a2cae737L,0x88b1da43cbd8bda6L,0x8a576942419d21c4L },
|
|
{ 0x7c124343c90f4545L,0xa5a8d93b26453baeL,0x9a4c08fd76ae72e8L,
|
|
0xa08b82d97b064e94L,0x4f803ba083725330L,0x33672455865235f3L } },
|
|
/* 7 << 329 */
|
|
{ { 0xf7a5e2f0a51e695fL,0x3099bf9484adf10bL,0xb2a03c0f22a3ff04L,
|
|
0x30303a910acec674L,0xaccb2f3ca59522f8L,0x00ff4d88f273ba94L },
|
|
{ 0xf0056b4210e735ebL,0x3337279a7786e93bL,0xfecc77c44bb3c31dL,
|
|
0x3385bf5be0e26a05L,0xa9454ab85f45fcbfL,0x41a4158346edb553L } },
|
|
/* 8 << 329 */
|
|
{ { 0x1877dfd0c8110f1fL,0xea88f59d18db27c2L,0x9d089536c78e295eL,
|
|
0xcbb5d55374a04cc5L,0xe3666006827f75edL,0x8557b81a61e7378cL },
|
|
{ 0x74170170ed223f48L,0x84197a6ed86ee829L,0xd75a30f8ac1c4a0fL,
|
|
0xd7e7be0d3cd92824L,0x5ea0abdb1b5e86d4L,0x41146ae1b3b615efL } },
|
|
/* 9 << 329 */
|
|
{ { 0x6d340fd3fabd376bL,0xb5066b1ccc169cb3L,0xa4148142d20ef8f1L,
|
|
0x0c5d66fb461544d0L,0x84c7a232d67043d2L,0x4c0e77867e609af4L },
|
|
{ 0xb1e83f1af4619e4eL,0x40fca1a0b225d174L,0x39bb3a882e42fa4dL,
|
|
0x04dfe833d2682205L,0x49016d9d685296f8L,0x2da587198b735155L } },
|
|
/* 10 << 329 */
|
|
{ { 0x570deceb1ae5e9daL,0x5c079c70b73ead01L,0x522a30a6d2ce6639L,
|
|
0x71dc5c3ff4056ac9L,0xd93c7a2dbaac149fL,0x5c3298b8f1844cebL },
|
|
{ 0x282adf408c23c0dcL,0xbe4981899b646f86L,0xe77c1950628da9e5L,
|
|
0x38cc27baa1fd5a18L,0xb5579728aacdca52L,0x8d34fdb4c8e1ecbdL } },
|
|
/* 11 << 329 */
|
|
{ { 0x563e0b8a7a7fa597L,0x6697c375bb7dd079L,0x95758ff6c6233951L,
|
|
0xca07993fa2059c40L,0xc3065507ce2aaefcL,0x9faed33c6ea927d5L },
|
|
{ 0x0f8b48241207247eL,0x0044f6115eb2263aL,0xd7c9ce7c851596fcL,
|
|
0x54729d523c69d424L,0x42cbdcca45876770L,0xc1e0e6ceeff2adcbL } },
|
|
/* 12 << 329 */
|
|
{ { 0x323f2102adea7d6aL,0x035b354eb694b253L,0x66dc4e4a5b8a36c2L,
|
|
0xb609222471795ca4L,0xd8c6d7eed300d80fL,0xf31f258db3b94954L },
|
|
{ 0x0f2eb679277ced5bL,0x0b16efa3eba40e3fL,0x400035070dca4f36L,
|
|
0xd34c91cb59a9a3a1L,0x5e8fea3286da6408L,0xf237959f03f31728L } },
|
|
/* 13 << 329 */
|
|
{ { 0x1d3173653412e8d3L,0x1d14cd1b09695abbL,0x9044adf2a2cda00cL,
|
|
0x60a6ccd60b7ba011L,0x614b100417284b46L,0xfb3d84b9cf840203L },
|
|
{ 0xd65b3566532b068dL,0xc8c03996c2465150L,0xc9035c2df71c35f4L,
|
|
0x350231a752222e21L,0x59440020451935b1L,0xd723a55cccfdd206L } },
|
|
/* 14 << 329 */
|
|
{ { 0x1b5bc630bbaaedc6L,0xe7d25088b49cbb3bL,0x5622cbf70deb8cf0L,
|
|
0x3b20803cd309c3baL,0x64c2e7deff45e2fcL,0xfa730ffb9aab84a5L },
|
|
{ 0xba83cc514edfb52eL,0xe05c0140748bbd69L,0x27bbb5f52254ec43L,
|
|
0xca740989324c8c40L,0xa21488b1d26491b4L,0xe2753a1f69d8626bL } },
|
|
/* 15 << 329 */
|
|
{ { 0xea04908f64dab001L,0x8ea1f127b4debb2eL,0x87adb69534f155a0L,
|
|
0x41595cfcca8afe0bL,0xffef042f8763ba08L,0xb7b4865decd3e667L },
|
|
{ 0x2c46c97070c4c8a3L,0x1ab18c080403d206L,0x08b2d3c94b3df379L,
|
|
0xc6a4c268a87a7166L,0x449bc61f5323b1f0L,0x8d4b7ced489ada74L } },
|
|
/* 16 << 329 */
|
|
{ { 0x618ca06b8956146cL,0xd51f1e6f552cdecfL,0x981372cca3b6ce7dL,
|
|
0xb44a68ee5f14bb57L,0xfc1167e96373abbbL,0x3d621f8b767d4c0aL },
|
|
{ 0xc6dcdfebf6ecc778L,0xddda926282d1fbddL,0x477501aabfcbf2f7L,
|
|
0x0be7228a67aa8277L,0x5de7b8331daab9cdL,0xb88a4f9a262feb4aL } },
|
|
/* 17 << 329 */
|
|
{ { 0x203a666c608fea53L,0xbf71f8fde8979c08L,0x3bd58feba22a3d2cL,
|
|
0x596bfcf521f178a1L,0x6f207d89f84beffcL,0x8a7c6dbb18097607L },
|
|
{ 0x208f5e64a1c5c927L,0xd7d0e33478dc83c3L,0x5e9397261d4e30f5L,
|
|
0xf3877242fa09a36cL,0x68e4338ae6a7b0feL,0xcf8cd131ac47b369L } },
|
|
/* 18 << 329 */
|
|
{ { 0x28f18586936fb33fL,0x9809b2ab381bf7bbL,0xf6e16931eac3c252L,
|
|
0x366d18335e151187L,0xe5b4c2357a3b6460L,0x693a9fa50a68bc91L },
|
|
{ 0xa35f104a6a7f8b6eL,0x3e5d6981688676c4L,0xc0c081b10651a609L,
|
|
0x6df5da2dd77057c9L,0x8bb271bbc4602847L,0x322547b3c4bd07d8L } },
|
|
/* 19 << 329 */
|
|
{ { 0x9b56b9444deb8158L,0x5f4b15a6da5eb70fL,0x120afa9514cb0126L,
|
|
0x01f6d00d6bdd0d78L,0x73dd7c5c463b1ce6L,0xc770cf35df00a133L },
|
|
{ 0xb5db93a1247ff879L,0x1c12f3f0c70ecea1L,0x10168c4e5b59cc9cL,
|
|
0x1e9e0f8a0e19efe5L,0x43987dc1cfd44b62L,0xb1d265c204814e2dL } },
|
|
/* 20 << 329 */
|
|
{ { 0x8c283529233d39e4L,0x96300796c6092096L,0x2c549de55dde766cL,
|
|
0x27e0b444b4151002L,0x802e5fc3f2f88f1bL,0x2af579c28ba1956dL },
|
|
{ 0x52edd04ed68196c7L,0x2e22e71474a202b0L,0x338948248bf66459L,
|
|
0x8f0d8c259e39df55L,0xee4f109e6c5276d9L,0xc0c893f0c5dc0bf0L } },
|
|
/* 21 << 329 */
|
|
{ { 0xa3081bc75b3f17e5L,0x299e7a0222e46b9dL,0x36184c98a9afa278L,
|
|
0xee2043319095a8a1L,0xf5e54622cd5ac080L,0x08d649013fa844a4L },
|
|
{ 0xb20ddfc6d7fbb42bL,0x15130bdbd868a81eL,0x25e5fd2f32ff1a03L,
|
|
0x907e3c01ca5288d3L,0x2f2f7496a1f6f96cL,0x831feefd38ab83d9L } },
|
|
/* 22 << 329 */
|
|
{ { 0x06054c76f8482849L,0xc24b4a6a5fcca65dL,0x71c27e01a17ebda3L,
|
|
0x1ffce0281be9dfb8L,0x3784c950ebc43854L,0xcf0ecc2dd5086510L },
|
|
{ 0x86d0fc3cbe24d8ebL,0x5bad01911f21788eL,0xe2c3bcb9c49b3a12L,
|
|
0x66f82433f7d5992dL,0xf7cc5eb913969246L,0xe52defd48660a6daL } },
|
|
/* 23 << 329 */
|
|
{ { 0xd6d6a42b102490deL,0x9e6532acf40d27d7L,0xcd1591cdf2a08bbeL,
|
|
0x973e09f234eb47ccL,0xb3a5915add4fa316L,0xb36ca6ceac38218dL },
|
|
{ 0x73d370b3e58a0cafL,0xbc8fd39f07766be2L,0x3d5d9ef7c2ea7997L,
|
|
0x22877500bbfcc1a7L,0xc54d0c6406e0547aL,0xf7bc1d2d564e9ef1L } },
|
|
/* 24 << 329 */
|
|
{ { 0x7a9623b653fd1a04L,0x13bd35bf3a3b8500L,0xf8a5dec9e0f8e530L,
|
|
0x88bcbe291d65dcd4L,0x09fe38036739541cL,0xebd04b7fe716a97aL },
|
|
{ 0xbd8e34df1e5ef7cbL,0xddfc4243d7c4fd6cL,0x0183d9053519411fL,
|
|
0x63450996f7a3c483L,0x18283cea01355739L,0x8c1d72cf9aaa72f7L } },
|
|
/* 25 << 329 */
|
|
{ { 0xffcd4b6f9be9ff57L,0x0bff01bb939327efL,0xde596626b5ed90e3L,
|
|
0xc07464ff4379e17cL,0xefd3e2c470d31340L,0x78b2192f4e7df61bL },
|
|
{ 0x7cfe28def3faf2fcL,0xd2d1a994dd642f87L,0xa5d4fb1410b3377eL,
|
|
0x2cb4978ead6fa00aL,0x5b6fe7a765fb3688L,0xc26c1b3336d5acdeL } },
|
|
/* 26 << 329 */
|
|
{ { 0x551e1b4e8dc72468L,0x8a926cb2a7b2f1acL,0xb873e83b0fd12fadL,
|
|
0xb6cde14fa4e7fb13L,0x81ae41415befc256L,0xffb0c636b4c7631cL },
|
|
{ 0x80f1408f8a2478feL,0xde6d051d44fa7605L,0x5a15b1f84d44a1e4L,
|
|
0x1a0031c5a0daafe3L,0x304338dd597652a7L,0x6830dcc7f257f17aL } },
|
|
/* 27 << 329 */
|
|
{ { 0x62fae4072fdc8ea4L,0xff77522fcbe76ee3L,0x5fa03a454fd2bae6L,
|
|
0x774c635e8dc90431L,0x718081b62ddc4376L,0xf4901a2c03e7aec7L },
|
|
{ 0x5339a3109eb023d7L,0x15dd4f96366e35f7L,0x1f802d4a0e2d2e95L,
|
|
0x8e5e9cb2fe1b1226L,0x175806f623a0de5cL,0x115a97db068c7bbdL } },
|
|
/* 28 << 329 */
|
|
{ { 0x4a67ec76193aabbcL,0x3da6dec6d74761f9L,0x751720c90b35bb70L,
|
|
0xe5e049058d9e0f8bL,0x3cd37c840858f29cL,0x7ff1abfbb881733eL },
|
|
{ 0xa0c2698b0c4f7694L,0xc736419296b95e4eL,0xcfa55c5537ece651L,
|
|
0xa2bbd6ae7cb1e9e1L,0xcd2292b9a0eb0e8aL,0x8aba99e18d5030d0L } },
|
|
/* 29 << 329 */
|
|
{ { 0xa3f508a498fa3d8cL,0x4d894cbf45bcff40L,0xbcdac17d0c095cc4L,
|
|
0x397caa6f407c2ed8L,0x2195056b5f97b4a9L,0x41eb6e0e97434508L },
|
|
{ 0xbb5e4e4a73f211f8L,0x5e8e638f720a451cL,0x8470bc9e4974252dL,
|
|
0xc487aae29f6a9a96L,0xaa66417101165deaL,0xc8af7172b603771bL } },
|
|
/* 30 << 329 */
|
|
{ { 0xb7c74c58dc4a1d3eL,0xe3ec30160331ea39L,0x83afb271023c8712L,
|
|
0xc2670d56c9c82680L,0xd426f350feca1061L,0xe8aee692ba6edc01L },
|
|
{ 0xc916fbe546e801d9L,0xcb001c377097286eL,0xfcf79d2678ee1328L,
|
|
0xb05b0634b6a4afb3L,0x2ab327bb306da14fL,0xc11a0294ba5ff534L } },
|
|
/* 31 << 329 */
|
|
{ { 0xcaa287c30f00dfcaL,0x9ca672930601cc7eL,0x435e883fb105d00fL,
|
|
0xf9cddbf91238536aL,0xda604ccb45f558c3L,0x7e51d9d182f48366L },
|
|
{ 0xc1e8d50d7e8396c3L,0x58638b85edbb75e3L,0xe926aabe9b088d2eL,
|
|
0x8103a34a428c41e3L,0x03e5e35d089deeedL,0x64969c6d93bb0b99L } },
|
|
/* 32 << 329 */
|
|
{ { 0x7b7da028e19763ddL,0x662f54df8b98ff78L,0xc056d83c51f3dbd9L,
|
|
0xe2f4d46fa91d085aL,0x31759c9ceb35262dL,0x624d0cf20c9dd29eL },
|
|
{ 0x108cf9bb1624b02dL,0xa241444e345531d6L,0xf69816b273d372b2L,
|
|
0x126575a7d5415e53L,0x546bb4c1306b8b0eL,0x82bb0c124d54ea5eL } },
|
|
/* 33 << 329 */
|
|
{ { 0x85b355304c397362L,0x218a3b0eeda72e19L,0xd8eae54461729c56L,
|
|
0x3d9b4a62735b571dL,0x12f3ee775629e437L,0xa72f9809095e5378L },
|
|
{ 0x5420a641bbe6dd1eL,0x8121eb3d02f41fe9L,0x5698eaf945e7acbaL,
|
|
0x8a5e1a89469c2f12L,0x801740e25b434e0fL,0xa4dbe1cc670f58bcL } },
|
|
/* 34 << 329 */
|
|
{ { 0x2f1919df5819e9f2L,0x156489e7a62287a9L,0xed038deb20a0c2caL,
|
|
0xf63ac2d5c5ab4fdcL,0xca2b648ce391ec06L,0x8258e3f45b047d2eL },
|
|
{ 0xb7dcff56fd17b40aL,0xa8ace11f4bed747eL,0x542d70d175018429L,
|
|
0x6c568967951bb2e2L,0xce420f73bb0e089cL,0xdae9623ed13f8eb5L } },
|
|
/* 35 << 329 */
|
|
{ { 0x2d561034009a41d3L,0xf078204f5734d3a1L,0x2b8973ff7408e71fL,
|
|
0x07cb9f95aab9c533L,0x376c1f59d0b35fffL,0x4a756c7fe851b313L },
|
|
{ 0xdc690e9874dedeaaL,0x625b082f70cf3f5cL,0x44839b5803dfc301L,
|
|
0x5835a6c3c520f618L,0x695425e3afdb68d5L,0xc04ce4c62db97ee7L } },
|
|
/* 36 << 329 */
|
|
{ { 0xc1d9b27ecb5833e7L,0x9911909567a8a669L,0x9317f8c30ab9ee27L,
|
|
0xfad65eb9f34551e6L,0x7725ec2e016504f6L,0xca492cb47ebbdfc1L },
|
|
{ 0x6d2a3c962706aa66L,0x53e6d650836d8ee2L,0x109496434bc84bf3L,
|
|
0x8442ee826df7c0f1L,0x7ab2eb9918fe80c5L,0x6a8579b35cd2ea35L } },
|
|
/* 37 << 329 */
|
|
{ { 0x96adba7706e80e68L,0xa8839d6a0fe580e1L,0x755227e337a31a9bL,
|
|
0x40b5fc70e27ec051L,0xb900a11b29af222aL,0x8fea2e509dd84811L },
|
|
{ 0x4f844c8861b59ab3L,0x26739874560c0948L,0xb39f85ba0cc08828L,
|
|
0xcdce2fca829082edL,0xbd17998eb4555dceL,0x827eae97a3608a9fL } },
|
|
/* 38 << 329 */
|
|
{ { 0xa77087f4c98e17c4L,0x9fa12dadbe2985a5L,0xa68cabc94bdce4e2L,
|
|
0x222a6fb6d3500913L,0x15e28fd5a9c0904eL,0xed31c63f7a91f825L },
|
|
{ 0x9cd9f3e56f2f35b0L,0xa2b14261923cab8dL,0x71a780516d8ccbeaL,
|
|
0xf1fe532bdfa937b4L,0x6e3d7252539d0a74L,0x27ef2720814cd797L } },
|
|
/* 39 << 329 */
|
|
{ { 0x8bd8341e6899b9bfL,0xc2ea111680865aedL,0x0cabb5cf13fed0e6L,
|
|
0xa11e82c1e4ce70c0L,0xefe3d4eb99aba16aL,0xd774db4dd8df10c3L },
|
|
{ 0x72ee5c98bae14dbaL,0x9161d0b179b86e02L,0x1ba8b84585e5ba90L,
|
|
0x3830148f17228bdfL,0x222499e2ba89b2a5L,0x5d50922cccd4f87eL } },
|
|
/* 40 << 329 */
|
|
{ { 0x81dd074e4398751eL,0x87b11b480a3f3ebcL,0xb5afe1f0352b58f5L,
|
|
0x6d2d94829c390eefL,0xd073f9a0f36a8d23L,0xa7c5abec466ebbe5L },
|
|
{ 0x968c04a60539f145L,0x52a3ad0c93f4d3d3L,0x98e196bb15c0970bL,
|
|
0x2af28ea370ab8ddaL,0xb912fbda7a039fa9L,0x3dd8d87acbd02ff6L } },
|
|
/* 41 << 329 */
|
|
{ { 0x849b2f0b4ee5ebb7L,0xfd1b015158bea2f9L,0x260a6b5bfbc530f9L,
|
|
0x2b6c198d06776366L,0x6540793f8074c6d2L,0x1c722c259871be11L },
|
|
{ 0x8ce5241ce0560ce9L,0x3574db548096df0cL,0x1d9dd078b0fb8c98L,
|
|
0x6049c7f25625a023L,0xd2c0853cb18d0dd0L,0x5e57bd71cd645f78L } },
|
|
/* 42 << 329 */
|
|
{ { 0x8da9b831361ce377L,0x6496515b7dc06076L,0x870e7df3b8cba83eL,
|
|
0x315ac0049f8f495bL,0x1a09dee576fe0978L,0xae7af621c18059a2L },
|
|
{ 0x2bc9dea404fac2afL,0xc630bd5021b90a79L,0xbded6b8628c0f9a1L,
|
|
0x709d72c7be4fe93cL,0x3d1e2eed74b22303L,0xcdaf6b1d0e81dfcaL } },
|
|
/* 43 << 329 */
|
|
{ { 0x42d004f3be8ec138L,0x5379a3063d617cfeL,0xcbbd274ec1a87d06L,
|
|
0xb9967c5284c9df0dL,0x0238d715c421e288L,0x787ee6abd239639fL },
|
|
{ 0x746e4071adace009L,0x2e2545db61377666L,0x47cc241cf07deb1fL,
|
|
0x0a0742f1847dee19L,0x50175dd06e59b0acL,0x95ce3065d2333a87L } },
|
|
/* 44 << 329 */
|
|
{ { 0x65c33cf4ca5eba6eL,0xbc48b22e12c2f19aL,0x6c5bbde461fbdcb0L,
|
|
0xe086202bbc503a00L,0xa9483799deecbb11L,0x9b2c0216279aff50L },
|
|
{ 0xc10fce1069f99456L,0x2b0051d5b7820d55L,0xd2de9cc32129b5a4L,
|
|
0x711166d9e4f565d6L,0x7a8c3dfb88075f30L,0x6914edda224ac45fL } },
|
|
/* 45 << 329 */
|
|
{ { 0xca481b6e4e1e3cabL,0xf390ed5f7e12d8b5L,0xcda82616dcd06247L,
|
|
0xf7d791422cec8917L,0x0c2ea9fe2364e5deL,0x471b71ed21f98e3fL },
|
|
{ 0xbebd6a753b9aae94L,0xf9914c0b45f5d5a5L,0x07c823ca4b3dd18fL,
|
|
0x0b8c09ab74ad2bafL,0x21048cf7c7376302L,0x080e4a00efb16ac2L } },
|
|
/* 46 << 329 */
|
|
{ { 0x1699d711379e6c77L,0x9126d88c7427418eL,0xbb05797d825210acL,
|
|
0xc0b611df315cb277L,0x90f82a9d61f69206L,0x39a79014f517228fL },
|
|
{ 0xd9f2def450e8a693L,0x88c1104381e9d71aL,0x28e20b56451f8a9dL,
|
|
0xeaa794763e101231L,0x3f1ba0c56423e8c3L,0x2fe7ce4e3c6c558dL } },
|
|
/* 47 << 329 */
|
|
{ { 0xd706ab9cc55b1a3cL,0x99c453663aa386f6L,0x348c8f743617676aL,
|
|
0x5f3c49092b9ef7bcL,0x26969963ff5d4864L,0x1f952e03f5b490ffL },
|
|
{ 0x4007914e30cd5518L,0x3b38fd1e0b0e6513L,0xb25e0a81decbba43L,
|
|
0xb7e77345a7d78431L,0xbb7bc23062467d4aL,0x616c1724598ad852L } },
|
|
/* 48 << 329 */
|
|
{ { 0x5bcf287864e60ac2L,0xf70e78a455d53345L,0x88685de6707a7138L,
|
|
0xa77646dcfb2041a4L,0x8608695289db3060L,0x08b7c4d8e27a1690L },
|
|
{ 0x4148d9373ca7fd81L,0x58c7440bff7698a8L,0x9d722d4db0391d14L,
|
|
0x5683112462b0373fL,0x87b0363be9a9992cL,0x51870cd18853db84L } },
|
|
/* 49 << 329 */
|
|
{ { 0x775086f481eb73b1L,0xddf02d0e4db4d236L,0xab3d637445b09e54L,
|
|
0xb7ef92657e883a2eL,0x20e6ae8f7f42b4b3L,0x26a14629bc49d85cL },
|
|
{ 0xf0ee4e5ca4ed9ba3L,0x288c5b0793b0b721L,0x9c767a59e9917114L,
|
|
0x3dde322015085ec5L,0x3176507f7ece24dbL,0x71e1995686cc47fcL } },
|
|
/* 50 << 329 */
|
|
{ { 0x86dedf2e9b1ab85eL,0xf3330387c2d0593eL,0xf5e6143997e907a5L,
|
|
0x1992569d8cd66e4aL,0x836b215e0869329eL,0x8b5c4891153ff215L },
|
|
{ 0xf6c52f1b609dcc15L,0xa3a5258c085722c3L,0x0a4e81501c378dfcL,
|
|
0xa8997ddc739040aeL,0xb1c4417a7180a073L,0x618009bff1dbab34L } },
|
|
/* 51 << 329 */
|
|
{ { 0xc276e23733ec753fL,0x196a1ccee112da60L,0xcc049e2b953211efL,
|
|
0xa60e1aa711dcc43cL,0x091ceb49cdfed2ddL,0x8fe1c52e72c69037L },
|
|
{ 0xf66eac87a986ba11L,0x4917f822b273d90dL,0xf7ef04cc957befacL,
|
|
0xf8a7ac1320b8aeebL,0x71f0db3dbe6af428L,0xcb0bf8ba566429c8L } },
|
|
/* 52 << 329 */
|
|
{ { 0xf617674d2cbb40a8L,0x446ad46b4d11399aL,0x4d4246943076b6b3L,
|
|
0x1b9e7d881c33ea9eL,0x8e1aa6716954589cL,0xf1099b26e221722cL },
|
|
{ 0xb18904f94917576eL,0x0512b21bb549058bL,0x12c89a64a209ad3cL,
|
|
0x421f5e575557cc67L,0xb42e17371b5a17edL,0x427c6a621ff3230cL } },
|
|
/* 53 << 329 */
|
|
{ { 0x74e75db02bfb49e4L,0x7685588d58cf18dfL,0xfbfe8f56398e27a9L,
|
|
0xd2711ec365666b9fL,0x1df7714d2c59b787L,0x0f2c4b4c486f8fc0L },
|
|
{ 0x098ed315f847b688L,0x60c367e332a20ae2L,0x58f48cd6bba6dd13L,
|
|
0xc41e31960616128aL,0x7f90dd69a3205005L,0x8e6ce9d23581c177L } },
|
|
/* 54 << 329 */
|
|
{ { 0xcf2da6044a3b3618L,0xcfd27cc6b83f1814L,0x8cb45c0a6b9369a6L,
|
|
0x1f11501633976ef1L,0x2654a1574afc708cL,0xb47f423860970498L },
|
|
{ 0x548be9389fd8536bL,0x454fde1673ff1ecfL,0x44657efae96be82dL,
|
|
0xc8e7e96b555df813L,0x2a0b3f4a4fccb822L,0x2e0f36b114b6dfdaL } },
|
|
/* 55 << 329 */
|
|
{ { 0x227ba88551cefcb8L,0x81e8f52e00071a19L,0x4afd5a5d170fee3eL,
|
|
0xc8864e274e17ff05L,0x1d8c2083710ffa4dL,0x22529baa9839c46fL },
|
|
{ 0xad771341825a0a87L,0x34a3049edad7c56cL,0xf1f14e1712f3625fL,
|
|
0x6103d1fabcd36dfbL,0x9f5ce7a949a7cf78L,0xa5a4e38a333cf634L } },
|
|
/* 56 << 329 */
|
|
{ { 0x6c8e5a261d99492cL,0x6e5bab8e77f916a3L,0x9b014aad50ad6f39L,
|
|
0x2a3933c51f107e26L,0x4b04395cc951bf73L,0xf8f683b4b0ef56dfL },
|
|
{ 0x28c9fcdd1905c84fL,0xb03604f14141feacL,0xb546f58e53ace23dL,
|
|
0xee5fec4efe688f02L,0xd8b43f6d2e91406dL,0x75e44b21261764d9L } },
|
|
/* 57 << 329 */
|
|
{ { 0x56905026e84e6549L,0x1dc1958c5b84b0b7L,0xcb477afba55d3c52L,
|
|
0x6c67cf7bc1434094L,0x739da94d2ecb03edL,0x8c45e5ee778ca2fdL },
|
|
{ 0x66084f9712e2fe43L,0xee6a89e66c3289d1L,0x623b73abc5d1a215L,
|
|
0xb0edfa31cbf45830L,0x8024dffbd7de3b1fL,0x2ddf805a27f25caaL } },
|
|
/* 58 << 329 */
|
|
{ { 0xb4e5a5d5605d7341L,0xe7a7a4069a1d3465L,0x234783d66c60b1b0L,
|
|
0xdd7ee2fb3b480129L,0xfd183240dbb7032fL,0xba2a97accaedc8c1L },
|
|
{ 0x1a1824d3b0185c9bL,0xddc0f82cd36edae3L,0xaf7bbcc03116b17dL,
|
|
0xefc9095985f6e8e4L,0xc6bde428acb9c328L,0x69d80732cbf991a7L } },
|
|
/* 59 << 329 */
|
|
{ { 0x455a23a465ecec1dL,0xcf0b2a221d9e9887L,0x0b43131e3fbb1cc9L,
|
|
0xd4ece789bdad49b9L,0x370c2f9aedfa4d17L,0x7f6855be15163f17L },
|
|
{ 0x868a16f3735ecbd1L,0xd84527db08897c01L,0xcdbf5b18f2df294aL,
|
|
0x8c500b1f12b99a2fL,0x929c58df2591e3b9L,0x314cb13714eae6cbL } },
|
|
/* 60 << 329 */
|
|
{ { 0xd014cc6deda2479bL,0xd2586003f1a85fb5L,0xceb0611153cd207cL,
|
|
0xe8c9fbfa647b3c16L,0x1f53e8e6ab7d6738L,0x06dcceabb060b5f3L },
|
|
{ 0x80e023b2ab770ccbL,0x83ca0a5f4cda70d2L,0x19f7f5dfea1caa2cL,
|
|
0x769041414ffe884eL,0xfa4d93a3fca3c05bL,0xd381f527e88e1169L } },
|
|
/* 61 << 329 */
|
|
{ { 0xa4553b3534914b85L,0x03968ddddc176f80L,0x095fb9531f258fa3L,
|
|
0xda9d2df7a554bb6dL,0x012a30ed84926864L,0x3fea37b12aa219d2L },
|
|
{ 0x730d2c6d81cc6036L,0x96ea83c9ddd81991L,0xfab080dcef1678dfL,
|
|
0x16e25c6bfb2fe230L,0xf083a2b298ef2fb5L,0x0c0d0767581feac0L } },
|
|
/* 62 << 329 */
|
|
{ { 0xd464a6525bc81cc8L,0x513353adebfa99d0L,0xd1aa97c0be51245bL,
|
|
0x0d37e590e4d20201L,0x7afc95cbb45c5c19L,0xdbd640cfb6a4ea8cL },
|
|
{ 0xffcc3ff2be9c5b78L,0x61cb76ac1b2865d1L,0xb145bb0011352d21L,
|
|
0x69568e5ce550ac6dL,0x454a33043bf7ee0bL,0xa2fcf9b45dad3642L } },
|
|
/* 63 << 329 */
|
|
{ { 0x2e2c8fb3f33eaca6L,0xae1c78b265f75366L,0xbdc601092280d2b4L,
|
|
0xed8409b7b6f472f0L,0x69eafa4f439e09afL,0x3b9ca2ecaa2b1531L },
|
|
{ 0x59b2e8eb336e484bL,0x93ec3ecac5f0481aL,0xb01e690ad575157bL,
|
|
0x811aebc262e9d767L,0x1b26c0e49a9065eaL,0x5712d2c969a18827L } },
|
|
/* 64 << 329 */
|
|
{ { 0xdaa7fcc9f9474bb7L,0x3c82e74bafa5db2aL,0xfbf918c59894edceL,
|
|
0x470c45eda9ac29a7L,0xdfd44f6fbc372f2cL,0x73a4790aa1e38d3fL },
|
|
{ 0x23d2400ba9674837L,0x3dad71bc136a92daL,0xc76a488148baa4abL,
|
|
0x73227e4ebc26e6b0L,0xe732edcfe8ef5662L,0xfe96aa5f0c5662bbL } },
|
|
/* 0 << 336 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 336 */
|
|
{ { 0x87c7dd7d139b3239L,0x8b57824e4d833baeL,0xbcbc48789fff0015L,
|
|
0x8ffcef8b909eaf1aL,0x9905f4eef1443a78L,0x020dd4a2e15cbfedL },
|
|
{ 0xca2969eca306d695L,0xdf940cadb93caf60L,0x67f7fab787ea6e39L,
|
|
0x0d0ee10ff98c4fe5L,0xc646879ac19cb91eL,0x4b4ea50c7d1d7ab4L } },
|
|
/* 2 << 336 */
|
|
{ { 0xcfbcbc4a7db62b5aL,0x2919bf514ab45ddeL,0x735de05622322f91L,
|
|
0xd2590bda7662ae23L,0x63d468fed82be7a6L,0xc84d0435695ea172L },
|
|
{ 0xc50f494120a6fccdL,0x2d613990620f44f1L,0x680ccd041fd25778L,
|
|
0x25ddac444a3d0808L,0x41d8b738c4684cbaL,0x2611645f53963888L } },
|
|
/* 3 << 336 */
|
|
{ { 0xb05cb834b0279be5L,0x2de7d0ebf08c5f93L,0xf023b5aaefa9e4f0L,
|
|
0xb8061e5d9bd075ecL,0x7d2ba50f1aa41bfbL,0x8963f3e390865d96L },
|
|
{ 0x7f221a794713ec7aL,0xc83bc5178500b4c3L,0x085feb6af6ab1540L,
|
|
0xfd141024dc87cd93L,0x3e196fdb3239dbf6L,0xb7cf3e16dbcd5364L } },
|
|
/* 4 << 336 */
|
|
{ { 0x1466c9f5e03a2fb4L,0xb866c006862a58a2L,0x291e8c75b5865550L,
|
|
0x1ddb7154e65862ccL,0x285153bc2b997167L,0xe2fce0e7954b6c19L },
|
|
{ 0x985d450616dc2937L,0xf7f14216ee41d9c3L,0x39e098dafa5fe5e5L,
|
|
0x3fc26046f90f231dL,0xde5d5ced32afd0b5L,0xad688b1d60c09c18L } },
|
|
/* 5 << 336 */
|
|
{ { 0x3720b1720f806b59L,0x1f696d47f224597bL,0x03c46e315b54eefcL,
|
|
0x387e466472b0edaaL,0xfc59b03dee77476eL,0x86854e54607a7259L },
|
|
{ 0x1478bcee3e9320dcL,0x4aa825a88c9d87e4L,0x71272f72cf272ee0L,
|
|
0x19e3a4a38bd885cdL,0x9af6415b376ba31cL,0x6394b5a7807b2b36L } },
|
|
/* 6 << 336 */
|
|
{ { 0xdbfcfa75e572e06dL,0xafa019d08b7d5653L,0xcc6c851d67a19b60L,
|
|
0xace88bf431ae1a67L,0x74554a6193d1e135L,0x51ba2cdd4211890aL },
|
|
{ 0x7cb326899e8d1f02L,0x29a6b8258b66ab99L,0x0a672c21766e72f3L,
|
|
0x24bb718a880642e3L,0x425dc41d184d2b36L,0x96a1468e891024abL } },
|
|
/* 7 << 336 */
|
|
{ { 0x3180789c26df7050L,0xe375a43e96cdfd31L,0x7951b895e99e922dL,
|
|
0x987ea2503d0bbe80L,0x6d2f49f0e2fe79c0L,0xc9c2c636c2b18d2aL },
|
|
{ 0x707798f3d8c8620cL,0xc2d603dad5c6a0eeL,0x46cf1e32bc447940L,
|
|
0x4dfc145938a845f3L,0x210083fe455e5d92L,0x6be989eaa1fedc3fL } },
|
|
/* 8 << 336 */
|
|
{ { 0x72fc8198dacc038cL,0x5fdae1d9f1077bbdL,0x369198bbd99e3036L,
|
|
0x6b68390a0efddfcaL,0x8c35f3e4f0914741L,0xd2bc54ecca7d7807L },
|
|
{ 0x564d991e3a8695d1L,0x5e1e14c81b0d937dL,0x51f30dab5d635893L,
|
|
0x0427e346f944e49aL,0x1e0bf1b56a233bc0L,0x75b0ee6c617bf93eL } },
|
|
/* 9 << 336 */
|
|
{ { 0xcd2db6797b1bbd75L,0x1ce5acecaac388b1L,0x715ab9f634c1fa9cL,
|
|
0xa531e1b8e0815643L,0xa64511c692de769bL,0x8425126b785b8bc0L },
|
|
{ 0xc8d9320de72e155bL,0x9cf36dcd5600a04bL,0xbea8b0f4c6e1f7fdL,
|
|
0x6f9af6349767d85bL,0xc3ea9fa4c403ecb8L,0x0af7be1ed60a0e70L } },
|
|
/* 10 << 336 */
|
|
{ { 0x180afdcc20928729L,0xec2e90f436bce72bL,0xa8a8c54d8f48e48cL,
|
|
0x9d0c6a355248109bL,0x8bdd819baa6c3ae3L,0x95e221a6dc0bebc1L },
|
|
{ 0x83e568eceb113737L,0xaa6d29c8a1a3a0a8L,0x0ebd5015c54fbda4L,
|
|
0x692a84832a5c8b17L,0xa08e384b51836490L,0xf1904bfc37ded786L } },
|
|
/* 11 << 336 */
|
|
{ { 0x2093335463919940L,0x34e4f27397ea3359L,0xbe64c5584d4156a5L,
|
|
0x368a6c980497cf92L,0x59931a502288b8cfL,0x67d70ff8c36cf906L },
|
|
{ 0x4175562a8886126fL,0x46ecdd1d55114ffeL,0xd12876f94efde702L,
|
|
0xb0c9333fc046d908L,0x8358b04a2cd6c180L,0xcbaf4612336d3c84L } },
|
|
/* 12 << 336 */
|
|
{ { 0xd77d9cd4fe8dee55L,0x7a0f60c12e43fc84L,0xecc5cd746d5da126L,
|
|
0xb5ac6fee2382a984L,0xd9db83e26ccd0feeL,0xaa4dbcba350717d4L },
|
|
{ 0xb3c0562c812ead77L,0xf7a995eea96cdd07L,0xd5419bf1ffeb4e67L,
|
|
0xba0aa22e1226df29L,0xb8d0d7f4c1e333d1L,0x86fecca60a27388cL } },
|
|
/* 13 << 336 */
|
|
{ { 0x9ea1d715dc579084L,0xc1e715dd0b1cf2a4L,0x624fa6e4926bf7d5L,
|
|
0x5034c9d34f7b4e51L,0xc1b0ed7aba3a42a6L,0xd1847c28b73cdb77L },
|
|
{ 0xa4794bc36ae49ff0L,0x50b2d908b9144fa5L,0xad112c778f073479L,
|
|
0x040499dd4b98f590L,0xd415d273152b5e30L,0xd3f4ff3f39054cabL } },
|
|
/* 14 << 336 */
|
|
{ { 0x1e0318d5fff93451L,0x40b91fa9283e197eL,0xdebc5a28089ac579L,
|
|
0xcf25f527e9d98537L,0x73f7818d4ae08f51L,0x397f2cb6a956c875L },
|
|
{ 0xb7d74ac57515436dL,0xc29a2ffd830664abL,0x02e273563cabe01bL,
|
|
0x418417c103c78924L,0xd12994116535005eL,0x53fc391258f66295L } },
|
|
/* 15 << 336 */
|
|
{ { 0x6b1fceac4d87dff4L,0xd31aef70f262f722L,0x894361782612da01L,
|
|
0x1d3bdfa9963bc230L,0x9a46505ba7afa565L,0x662c2fc7a31db4ffL },
|
|
{ 0x33983a9ae5ef30c0L,0xb8c874ee723f085aL,0xfb5fbc860f279c05L,
|
|
0xcd9cc376ad0a380cL,0xcb19d881fdfad736L,0x1c3d9734585167ddL } },
|
|
/* 16 << 336 */
|
|
{ { 0xd23658c8d2e15a8cL,0x23f93df716ba28caL,0x6dab10ec082210f1L,
|
|
0xfb1add91bfc36490L,0xeda8b02f9a4f2d14L,0x9060318c56560443L },
|
|
{ 0x6c01479e64711ab2L,0x41446fc7e337eb85L,0x4dcf3c1d71888397L,
|
|
0x87a9c04e13c34fd2L,0xfe0e08ec510c15acL,0xfc0d0413c0f495d2L } },
|
|
/* 17 << 336 */
|
|
{ { 0xf791c8196726ae9cL,0xc95c53f13cee0ca7L,0x816b37ae601b0802L,
|
|
0xcf28a2371b854925L,0xdc4f6bc111d5d9f2L,0x222d6102df6862aaL },
|
|
{ 0x93d3fcc5c0053ee2L,0x1d30937fdf873eb7L,0x925a2c2527d098b9L,
|
|
0x8564c199001cf28aL,0x87cb85ed748b8479L,0xd12d6b2b184c1020L } },
|
|
/* 18 << 336 */
|
|
{ { 0xeaf36b865bddb3c8L,0xa4bab6e0099f18ecL,0xe22839208addee4cL,
|
|
0x485307e053bb454eL,0xf981c80d362db12aL,0x012190355cb4b460L },
|
|
{ 0x62824680c78bd110L,0xf3e0b963d87df5f5L,0xd96de5e2758da525L,
|
|
0xc6a810faa60956abL,0x913d5a7b8e3eb6dbL,0x27c581fbbc9e8c3cL } },
|
|
/* 19 << 336 */
|
|
{ { 0x5edcd7dcb0c55d75L,0xaeb0b5c727838c23L,0x13d65db758c3fea0L,
|
|
0xe821d853b36f1f15L,0x3435a4bc365e7703L,0xb890e52f3a04d292L },
|
|
{ 0x6a96ae92e7a823f3L,0x3960ecb0ca611036L,0x81638aff210cb460L,
|
|
0x5f95793ce6b983d1L,0x0d5029ffa3ae1a8dL,0x54f749b492ca1229L } },
|
|
/* 20 << 336 */
|
|
{ { 0xefe0a702537c4a5fL,0x322ff89c151d0e69L,0xcee88b48491b757cL,
|
|
0x8e92cc15b5da77c0L,0x3138b90bf6af039dL,0xeb73edd2f3748d35L },
|
|
{ 0xf29f06435b8bb06cL,0x91ea9643560e4966L,0x013c274875acbcc8L,
|
|
0xdb2d1d9703f1d40dL,0xed7aeef1fcac606eL,0x91395dcabff4b849L } },
|
|
/* 21 << 336 */
|
|
{ { 0x952e4e21c8967f37L,0xdc9f71994bf85ec3L,0x6b01f3d00c141bd4L,
|
|
0xc6601dec06c9ba55L,0x7d884fc0c4a5945eL,0xcab1de947e19d3baL },
|
|
{ 0x9ca6aff02e3c9c5eL,0x01e828a1445e4a8bL,0xf97165ae80d065c1L,
|
|
0xe2195895881978a2L,0x4834501fc6b77acbL,0xbcf7545445d99f5fL } },
|
|
/* 22 << 336 */
|
|
{ { 0xbfc9c5071e434ba6L,0x30768f646f2634adL,0xee3a7cec1caf9c0bL,
|
|
0x27c4fd0bc232910fL,0x5c5813ee24ff4510L,0xe5e731af901f2ce6L },
|
|
{ 0x440ca2cf68f9aef3L,0x54ff9e837fa17587L,0x4d792db7982acc0bL,
|
|
0x73c3863834846c98L,0x76cff95f8d6243d9L,0x5fa573399d015583L } },
|
|
/* 23 << 336 */
|
|
{ { 0xe0419a6fb007e4cdL,0xc44ac4961f613529L,0x3408e15af18f82eaL,
|
|
0x66bebd87d92d3b39L,0x1c563ee4f85d0c1eL,0xb31a8c891f7eb37dL },
|
|
{ 0x65c7bf8c458a056dL,0x9d2ba592f25b6f73L,0x1ac4f0bc94eeb39dL,
|
|
0xa008b562d9a9ac29L,0xe7de714589d1c354L,0x420f5cf04c2e45d2L } },
|
|
/* 24 << 336 */
|
|
{ { 0xe11cc2e117cc0d20L,0x9b4cc698d406fabfL,0x6f6e9b0cb8567c18L,
|
|
0xa0dcda9c61b22b83L,0x4c8683fa79ee53abL,0x7d46b3f82f11f0c4L },
|
|
{ 0x91e74e482740aed8L,0x75afb62a056466e3L,0xc60bb430e8d0c16fL,
|
|
0x36cf252522b4aae9L,0x3713f254aceb6dd2L,0xc2906379eb8c6fd9L } },
|
|
/* 25 << 336 */
|
|
{ { 0x440da0369eb8b2deL,0x6c4d1a38462fbb19L,0xfd86930fb050f995L,
|
|
0x2e5f1a8c954823a0L,0xe9122aefcb9f8e9aL,0xc9e923f2794be14eL },
|
|
{ 0xdaa5663dbf740c2aL,0xf3a7ecd6df75c915L,0xa047a07efa80015aL,
|
|
0x846b4d27ea4a720bL,0x2389717e295845f4L,0xf56f77f6cbf2eabaL } },
|
|
/* 26 << 336 */
|
|
{ { 0xaac4f6a7e67b6dcbL,0x59ccb836d51c5183L,0x78d19f452b7ccb20L,
|
|
0xb32d4ffd5a619a1dL,0x86b11dbe5c4bd17eL,0xd983e839a9b52073L },
|
|
{ 0xfe9c0b92993455c1L,0x3a156676ea36006eL,0x578217fea907ca7aL,
|
|
0xaa3c5489440a251fL,0x6760a166d7fdf3fbL,0x4a2fc54b4415c6fbL } },
|
|
/* 27 << 336 */
|
|
{ { 0xaedf171dbe18bc16L,0x00febab2b2d026ffL,0x82b6d8890cdcca4aL,
|
|
0x1b1e4c53445bc877L,0xc2174e10ed74285eL,0xced66cc02b243f6bL },
|
|
{ 0x73e9ff69c7b9a66eL,0xc4fe5caad5e4d121L,0xaef80d67402c5d1fL,
|
|
0xd3b95a0f2f3dcaf9L,0x00cb6e798ceeea00L,0x1ee2ca8c436f35e1L } },
|
|
/* 28 << 336 */
|
|
{ { 0x0b21c764a6db111fL,0x7c36dfde24c5721eL,0x53a0b6db66e2d428L,
|
|
0x6f37bf728169d776L,0x9baf6385a68511c8L,0xeaef9c919b218151L },
|
|
{ 0x712cdd5bdd58d201L,0x50bcd0988d3f78c3L,0xfb6427b571fcb05eL,
|
|
0x6245fe7cc4675aebL,0xb5b75b50fb767bdaL,0xc1d8b76ddd7a18fdL } },
|
|
/* 29 << 336 */
|
|
{ { 0x6392686cbb52f636L,0xf10df7c41c46a5c1L,0xab7f88acc504a122L,
|
|
0x2a179193fdb6a9d5L,0x2a7c7e4e2901f29cL,0x3ab41b80a2cc726eL },
|
|
{ 0x8f577fc31fb5e412L,0x65cba0aeff7c47faL,0xa79191697f45c04dL,
|
|
0x2712fcaeb29a4c06L,0xf2a879e4099f76e3L,0xd333fabd98a22a04L } },
|
|
/* 30 << 336 */
|
|
{ { 0x87a905e056ddf14cL,0xd36289cb95a1c633L,0x2fb251aa57f8f0f2L,
|
|
0xbf9c72a9fb7907a4L,0xb4f9b6f3f771333dL,0x7b5ed437469ea10bL },
|
|
{ 0xe8cfa847fa5a8f93L,0x456395c945a4c9a9L,0xe20ffc39f7fac5a6L,
|
|
0x8b07c9ff287a3c78L,0x117f306f67e66d0eL,0x97c8a6388b331e09L } },
|
|
/* 31 << 336 */
|
|
{ { 0x1b3e04c26a98318fL,0x04d5ed5dd5a63b2bL,0x4098d09f3cebabecL,
|
|
0x226bb70565a14306L,0x5bdce76fd962a94fL,0x47a66e96c40dedbcL },
|
|
{ 0xd514ae5bbedcfbb0L,0xa8c0fe40892f07e7L,0xcf78e224c9186f1cL,
|
|
0x2499f68fe94329e0L,0x3ea3fae5ebbe3d2fL,0x681fca8bbc631de3L } },
|
|
/* 32 << 336 */
|
|
{ { 0xb097b2c5c4e81268L,0x7ef175521d50ca8cL,0x638266e942099644L,
|
|
0x43d059deff729073L,0xeebb5fe1148c3940L,0xb82e73d1daa8e925L },
|
|
{ 0xf43c78d8254380fdL,0x2beabc58fce37fa0L,0xcdd5a7d66b636357L,
|
|
0x8b70a2ebe096a954L,0x011d5419d0afa2fcL,0x3e49eb6704fb095aL } },
|
|
/* 33 << 336 */
|
|
{ { 0x5c73f69fb99abd8eL,0x0a7c36aacc1ed636L,0x9d2fe67e7f69a6cdL,
|
|
0x04d015fd48c34b1fL,0xc50f88c17f84915fL,0xeee3e105a706fb24L },
|
|
{ 0xbd42861c734d0513L,0x544b6ef495408b60L,0x4526e680d40179beL,
|
|
0x9f984c4140ab740bL,0xbed7baee67a02ab3L,0x09e3446862a9fb2eL } },
|
|
/* 34 << 336 */
|
|
{ { 0xdf64ebcf28eedf59L,0x435531be73b5d9f4L,0x1990df01cf35d981L,
|
|
0xa34d4fa9a2cc41b0L,0x9f643bd6b5a10b37L,0x90cae11158a6cd14L },
|
|
{ 0x2b0490701943d2f3L,0x2c9f8af4eda3fc20L,0x48c245c5f96e72f3L,
|
|
0xb4505a3a861355deL,0x4dfab1b9be032112L,0x69c1a9195942de24L } },
|
|
/* 35 << 336 */
|
|
{ { 0x761c2c356efcc891L,0xd06710d1fa376241L,0xc83a491c8a78b0fcL,
|
|
0x0c0ee8d8af75b3eaL,0xe6d9d92e4532b587L,0xcb3b652d64eba138L },
|
|
{ 0x1cc504ca34ff5d2aL,0x207e7443d0eae0baL,0x94ad1676428382b1L,
|
|
0xfcb5909992ec17c5L,0x7f99e1b5ce3b2e48L,0xa8c38c0fac9bc921L } },
|
|
/* 36 << 336 */
|
|
{ { 0x5763ff1af4ba4711L,0x6aac1315bfaae662L,0x51b9c30ede4b5505L,
|
|
0x50e63d1891b25d3eL,0x41938349e65ea695L,0x11260360f514dd15L },
|
|
{ 0x231f7f574a086eecL,0xa2c3237f55bd9ee1L,0x8afafa043e0705bbL,
|
|
0x44607900e9fc754fL,0x7250929678519ce3L,0xe751c3a74d17708eL } },
|
|
/* 37 << 336 */
|
|
{ { 0x0098a3254611d3dbL,0xbee52036dde82f67L,0xec432a62cdd50282L,
|
|
0xae8a144e52f994f2L,0x027e9e60aa5c03fdL,0x1a49ce47821f55f7L },
|
|
{ 0x46fbbd6c4d10c0ffL,0xe14c82ff8c461df3L,0x95570f44aef902b8L,
|
|
0xacaa04ec0eb7eb26L,0x3c8c86a8e738570fL,0xb87d47ccb77cc59cL } },
|
|
/* 38 << 336 */
|
|
{ { 0x2f4f68377bbf7168L,0xd5b67947f03f7145L,0x2c6ca74d4cecfe22L,
|
|
0x0e559b9f0a7d6fadL,0xdbcd039ff6b37f98L,0xaaf1f6edfa7a3877L },
|
|
{ 0x97b779f0f607316fL,0xe2185ccc72b99fd4L,0xd3f696bf2bdfe399L,
|
|
0x20d9baf15e6c403cL,0xe5bbc1cb4c4f1216L,0xd1c0761a428838fcL } },
|
|
/* 39 << 336 */
|
|
{ { 0x4f433b8abd08dd65L,0x27849a72773bd3c0L,0x62351b911854502eL,
|
|
0x836580ffca24ce7dL,0xa5c224a39355258aL,0x8d33fb43e65db7f0L },
|
|
{ 0xe44d391edf49a825L,0xc28e0d9bd2f5d4bbL,0xf7208342efb61ae9L,
|
|
0x43686b414dbce055L,0x7f7562d01800c062L,0x5031bd7c8b8ace99L } },
|
|
/* 40 << 336 */
|
|
{ { 0xc183199375476a4fL,0xa6383a0055fc4367L,0x23a72dea98bf90c4L,
|
|
0x67ee6f451045a947L,0x4e6518836920d0a2L,0x49132c9ac8042a04L },
|
|
{ 0xe249e46d5dfa9fc8L,0x6ff9eba1c60d1a11L,0xa4d9362d43490335L,
|
|
0xe8fad79ade504480L,0x519e8d1bac43c951L,0x7e688047952d6f54L } },
|
|
/* 41 << 336 */
|
|
{ { 0x135d677342e27f9eL,0xd58b98fb8fcc77e0L,0xf3bb847d7f64928bL,
|
|
0x15ec841663176905L,0x83e75b6a0f755173L,0x4c3eff5c7a24de69L },
|
|
{ 0x289e9a45313bf61eL,0x01b15aadeafa2733L,0xae7fafe1d2cf501dL,
|
|
0xd6fba525d5ac0b3eL,0x4bf48be0689bb20aL,0xa591843255bf610eL } },
|
|
/* 42 << 336 */
|
|
{ { 0x0f019b64c5f8df0bL,0x112f06a979307310L,0x91dc57276d16102eL,
|
|
0x34070a5be2651248L,0x0b9f35dbd3423044L,0xf29bb4a072b10ed1L },
|
|
{ 0x87071a9a07fb6388L,0x4246d532b7dbdb1eL,0x87db3d2285a039c9L,
|
|
0x76620a5d42b030cdL,0xc798e3816a42d8ebL,0xdd97441ac441ef9bL } },
|
|
/* 43 << 336 */
|
|
{ { 0xa9b004a0f08592c3L,0x984d17e5d069c54dL,0xc96f2132ccb87e81L,
|
|
0x67fd082f3b1f9eccL,0xcdd0827ac4ff9feeL,0x9d1025070e04b7a6L },
|
|
{ 0x4ff3424177c67935L,0x4f2246f58efea5b9L,0x128085b12fbf7615L,
|
|
0x9f111f65174b0575L,0x0b27d8e2f455cba5L,0xda20626b536054eaL } },
|
|
/* 44 << 336 */
|
|
{ { 0x4a3df6de3761fa82L,0xb839d6babc56eb6cL,0xe41afc5e13977a26L,
|
|
0x64022937fc0686d5L,0xa5d6dc19e2d681a2L,0x81afab3128f411b0L },
|
|
{ 0xc089aff74321a117L,0x32b0ae2657d18f89L,0x650aacd5f66aacd0L,
|
|
0x7b317bf6b8d3f677L,0x2cd5789777ea82dfL,0x935be0f3c74e7509L } },
|
|
/* 45 << 336 */
|
|
{ { 0x4387f8f602de9e59L,0x529c06f337589811L,0x6dbaab60bc9f06b4L,
|
|
0x0063bc3db5f181faL,0x7bcb289969b906b3L,0xdca70d1331d1ea3eL },
|
|
{ 0xca65e546ee373e94L,0x13cd365c779f415fL,0x4183460e9d71cb08L,
|
|
0x60f312726e35eaf7L,0x3d0c265f14bc5e0eL,0xe7a1b9af39ce618bL } },
|
|
/* 46 << 336 */
|
|
{ { 0xc234c892f46aac36L,0x213076ada55983a9L,0x81f96142dcf335a1L,
|
|
0xf21ceb724b22e311L,0xa12d6333dc053e1dL,0xe7808925a930732bL },
|
|
{ 0xb5a9eb81b1f1075aL,0xd13739c0f0a3e623L,0xbcd842e9ff2f24d5L,
|
|
0x200cda381b16ff0fL,0x0a85ea521d6a6c54L,0xe1c0dc8756785463L } },
|
|
/* 47 << 336 */
|
|
{ { 0x3287c8d39100f769L,0xb349ce8c052e8bcfL,0x5fdb952dd0d3e44bL,
|
|
0x68715110d0639cc4L,0xc9a5fbaac8efc67eL,0x14ebb97da009aec5L },
|
|
{ 0xf0684e1ca1423e1eL,0xb282f2f56357fa17L,0xc2e79d3c5af78041L,
|
|
0xe0ca9f4bd7d2ba8bL,0x20629f1e04dd84bfL,0x274ebccc3ee73228L } },
|
|
/* 48 << 336 */
|
|
{ { 0xeb05c516156636c2L,0x2f613aba090e93fcL,0xcfd573cd489576f5L,
|
|
0xe6535380535a8d57L,0x13947314671436c4L,0x1172fb0c5f0a122dL },
|
|
{ 0xaecc7ec1c12f58f6L,0xfe42f9578e41afd2L,0xdf96f6523d4221aaL,
|
|
0xfef5649f2851996bL,0x46fb9f26d5cfb67eL,0xb047bfc7ef5c4052L } },
|
|
/* 49 << 336 */
|
|
{ { 0xeadd123d385f2b36L,0xe3b14829ddf58569L,0xa4fdf0ec47c7e485L,
|
|
0x93c0d8380623ea5fL,0xeb9c0a2c9e2661deL,0x8046fc69e72e0ca6L },
|
|
{ 0x6f439e5c7be1c918L,0xcd8fd2f92a9ffcdcL,0x7f134747420e939cL,
|
|
0x8e880ef05ae283f9L,0x502c5c99f780a249L,0x68a529ab94bf9d68L } },
|
|
/* 50 << 336 */
|
|
{ { 0x3cf994ed88c9d290L,0x9209f5610bb34d46L,0x8170b567b2bfa21eL,
|
|
0xae87b6f7c62f86d4L,0xac6fc431d71bccebL,0x5f3a62ba83cf2970L },
|
|
{ 0x390262d1d943b10aL,0x8fc9a27f28aec573L,0xe59beb203e3069f9L,
|
|
0xf3e7bd365e0812a7L,0xc29c8a433aceffa4L,0x015feecb41c25e2dL } },
|
|
/* 51 << 336 */
|
|
{ { 0x5b6a4d6ca8e61f40L,0x35825d762f9a6e70L,0xd48f6d8d346a8b94L,
|
|
0x12bea60889801a40L,0x5182192ad57115f6L,0xb5a8dc6b954c1b47L },
|
|
{ 0x084a5c71793b427eL,0xeb66d699f8de2a03L,0x9835b2fb8eb6d905L,
|
|
0xb4229923c79dfe40L,0xa7c8aedddee34c0aL,0x12a00675337b0658L } },
|
|
/* 52 << 336 */
|
|
{ { 0x38ca9f61d44aee32L,0xb2cd0f505484905aL,0x23ecb3a4d812e727L,
|
|
0x9be645b874a3ac5dL,0xaa4a1d114bfa93b9L,0x5be5277d147072caL },
|
|
{ 0x623a4bd9ba0a6d93L,0x03419661dcf3d9b1L,0x9bffbe8231de1cf4L,
|
|
0xbadfa2ab56a6af06L,0x9103f7256746f09cL,0x0cd5e956344a2688L } },
|
|
/* 53 << 336 */
|
|
{ { 0x50a18ab1f40b0edeL,0xf963b76736e01032L,0xba2029b4d4f9a6deL,
|
|
0x8baec9b85a8446b9L,0x7a4107e766fa8a92L,0x06e78bf99f6543d9L },
|
|
{ 0xdaa894b3a5043e86L,0x172858a8f4e6fe37L,0xff0265cc0844608dL,
|
|
0x5db1a8f1d5def174L,0xdf9f8a698874fbedL,0xdd2292a977a274d6L } },
|
|
/* 54 << 336 */
|
|
{ { 0x46f522196ad8d03dL,0xb63e0eaadaf8b0d3L,0xd667f0a66e29df38L,
|
|
0x6e77432f96ef3b57L,0x78fe0872139ca180L,0x300a0c78d1e4af21L },
|
|
{ 0x650f32462148816aL,0x31ef1e883b4301a2L,0xa2222b25f18442fdL,
|
|
0xb26b63066884291fL,0x977b6f7d713d88daL,0x3e8173248cd5f7f7L } },
|
|
/* 55 << 336 */
|
|
{ { 0xd5687c9a9684771aL,0x797808e396cf65d4L,0x793d4eb6ea9ee562L,
|
|
0x2359b991fd94defcL,0x4e75cdf03a8959adL,0x7a08566900ce7815L },
|
|
{ 0x5c61df5da699fc46L,0x02b62d4868da56d5L,0x8a6972d1eaea27d5L,
|
|
0x727582b3c8e5d04fL,0x0ab2e6c2de87c408L,0xaa9a62e47b9ed157L } },
|
|
/* 56 << 336 */
|
|
{ { 0x9c6247d631af03e4L,0xe5a59ad075f9ee90L,0x1da1d64f6ac4b5a6L,
|
|
0xd2fbd169c521ec7dL,0x6d168015dfaa39f7L,0xe9bcf5b59c69d9d7L },
|
|
{ 0x3d1d3e6693ae2925L,0xcda60beae4bc73a3L,0xb2456adc954e2f3bL,
|
|
0x5d312fdc02a8fe08L,0x7b37c00e0e497a0cL,0xbd1f3aafc2f8b148L } },
|
|
/* 57 << 336 */
|
|
{ { 0x60f3bb27bc00d150L,0x159c5af42448affbL,0x4492b6bd2cfa563dL,
|
|
0x7e58219683c833b8L,0x9f9ebdb20edfafa2L,0x93a7048f31a39a8aL },
|
|
{ 0x4172f74d50149d01L,0xff38fceec58b7588L,0x2e71ba9099f25353L,
|
|
0xdf50fb440604e555L,0x7effa7ca8f3b5969L,0x3bbe8d49b836b8bfL } },
|
|
/* 58 << 336 */
|
|
{ { 0xc18c375c29d08d49L,0xb04c0c29c1a681bbL,0x0c4acce9e74dd458L,
|
|
0x1d6da95c85c920a1L,0xc67280d285387462L,0xeba99725e7e804adL },
|
|
{ 0x08f80e5a8811a138L,0x26f442138f2136e3L,0xf67f157c2d028cc9L,
|
|
0xb436356d14cd7cbaL,0x1c9c610290281895L,0xf67f16ea48598bdbL } },
|
|
/* 59 << 336 */
|
|
{ { 0xbf926a077a326266L,0x4045c18bef43cfc6L,0x6fad4cf56ce45553L,
|
|
0x613ad2dc45a9abc8L,0x7b086ace8836eed8L,0x855857c213ad51d7L },
|
|
{ 0xa3b19c2d167664adL,0x422c548abbd2c452L,0x8cd3681f85928ef0L,
|
|
0xe969e45c3ed435ecL,0xf76f2cce746c9aacL,0x514df58d1dd90e35L } },
|
|
/* 60 << 336 */
|
|
{ { 0x9b66219c4d09cd36L,0x6c6fa570b54f0853L,0x95c268bcf29a8fffL,
|
|
0xc8cf84bf5420c324L,0x5bfc975ebb61617aL,0x935cfe24e78f1bbaL },
|
|
{ 0xa6e2afe919d71ea1L,0x8a321e568c9b950eL,0x42dd9e28ec097826L,
|
|
0xf06e600ef391633aL,0x94e5512b46acbe2eL,0xb0bca2cc61cc7a08L } },
|
|
/* 61 << 336 */
|
|
{ { 0xcd361103e8b2d41dL,0x2d0d982cab0b5f13L,0x8158129618d55aecL,
|
|
0xf1c28a71579caa03L,0x5ddedfd7e50b83faL,0x932d2c03222105d0L },
|
|
{ 0x48fd0ead75ada3f4L,0x29209d988c533a40L,0xc2acc587f2acf0c8L,
|
|
0x05a8703ef689912fL,0x8f28953b9182995aL,0x1cbba2f20fb3eeeaL } },
|
|
/* 62 << 336 */
|
|
{ { 0xa1472574180e5eb2L,0xde27569b93fc7b21L,0x3bb956816b9af8aeL,
|
|
0x8a25fc0ee155f89bL,0x8aff018d825126b2L,0x6eda2f31906f0bdcL },
|
|
{ 0x19cbbecc4e8fbe4eL,0x04e0a4a40568d248L,0x6de2c002ff07b863L,
|
|
0x6d388447e8d1595dL,0x6a193b70c2cfd10fL,0x00bd826ee6f6bf96L } },
|
|
/* 63 << 336 */
|
|
{ { 0x2a0165a40a5b4d1dL,0x49c85ee904f12309L,0xc2d221031ded788dL,
|
|
0x510ccbb3735bd89fL,0x92d2eaebd8eb0e1dL,0x6bda8e346e428c11L },
|
|
{ 0x44c01a1d361f7495L,0xddda8e97cc7a95bdL,0x95cbae30524a53baL,
|
|
0x266d7192dacad45bL,0x8a42793f22fa4b99L,0xbb393cb5ed204904L } },
|
|
/* 64 << 336 */
|
|
{ { 0x88e7ac8e168d5e60L,0x53abd5696188a98fL,0x3b96d52918be419aL,
|
|
0x7e75e354c057621cL,0xcb1b709f5ce57e59L,0xe78befa2844f2463L },
|
|
{ 0x536081993276d4a0L,0x92636ade157f2024L,0x6dd0d348e0411414L,
|
|
0x5b28e9504d73eeaeL,0x08439232690ed85eL,0xdde1a3496da14b58L } },
|
|
/* 0 << 343 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 343 */
|
|
{ { 0x6cbd275739ed9ec9L,0x5db68a68fe5d4aa8L,0x177eaa0be4c58c7bL,
|
|
0x603551ef0e488784L,0xc8eba131df916b0fL,0xd0dbceda159732e2L },
|
|
{ 0x55acca84b0834afaL,0xdbe98440b59ffbf5L,0x162a2c703bd3b202L,
|
|
0x4c5e5d256ddd8ebaL,0x66e7844a77b1d93dL,0x1292bc0e110b9dcfL } },
|
|
/* 2 << 343 */
|
|
{ { 0x1b66faabf9e89beaL,0xc81c5ddc3a441284L,0x1a82f3a0a675f7c8L,
|
|
0x82884a2f30313a71L,0x7ac5d7b058aea9e6L,0x1954f075cd5ff05dL },
|
|
{ 0x7c29638d6178d270L,0x6af7f8ba19381929L,0xe85e3c47a17ae3a7L,
|
|
0x91b107c77009e38aL,0xf3b777d8f1f9c52eL,0x5b7b74ff11b688a0L } },
|
|
/* 3 << 343 */
|
|
{ { 0xe1e5b76914b87b2aL,0xee187f5d143a4ae1L,0xa9a38728908cb988L,
|
|
0x2027b2ed4443d8daL,0x1c6b4813c0c98675L,0x509ea7d1323bd978L },
|
|
{ 0x43b16a587f4dc19eL,0x385f8be812940ae9L,0xa4ed64e57d59acadL,
|
|
0x47e7abed51ca7f14L,0xead594b82bcce6b8L,0xa2bff60cfc03cf06L } },
|
|
/* 4 << 343 */
|
|
{ { 0x4ae3d232c0385874L,0x83bda9e6cbf96d2aL,0xba73c769ec62fd6aL,
|
|
0xd586ba7f62a4720cL,0x6497cd140cc1f491L,0x8b012b707b2ac571L },
|
|
{ 0xa65eabb6268fd705L,0x8caf100a1431873dL,0x25b31b84231457d7L,
|
|
0xcab62f75901645c5L,0x2377d74db2f7b656L,0x4008277c2d33c95cL } },
|
|
/* 5 << 343 */
|
|
{ { 0xa7be70c04bfeb784L,0x4633ddadc222ab44L,0x00e397d30f5924bdL,
|
|
0x5446db3ae25b7b9eL,0x433ea2c4fa1dd048L,0xbb9ae36a1421321aL },
|
|
{ 0xf879069dc59fe8f6L,0xe0f2b8b4820bfee2L,0xcc6cf7c49cf239e4L,
|
|
0x0e3545c207dc3122L,0x23b0f48b1d2c737bL,0x1c6b6d9cfc1137d4L } },
|
|
/* 6 << 343 */
|
|
{ { 0x10105dfd101d2433L,0x64e009b58ab6d664L,0x122e68324e80fc07L,
|
|
0x3b26e76287dc7da6L,0x7bc183de6d4728cfL,0xebfecf4f8bcdc129L },
|
|
{ 0x8b995cec265c66f5L,0x080572d7c4b0e942L,0x612e9e6b4da5b77dL,
|
|
0x8ec048a96caf9161L,0xe3628ee2c7f45eb6L,0x0190b71bd85650e9L } },
|
|
/* 7 << 343 */
|
|
{ { 0xccf79a81017fbd3fL,0xa852ca29c875bc66L,0xbb4cd90c0592f8e2L,
|
|
0x2ee786f455b05c79L,0xe1a2b6baf382e6e7L,0xf2d6cf6e6d2e952eL },
|
|
{ 0x2f0b534abc9304fcL,0x1d63fd80795629a3L,0x42e70cd9322d8e03L,
|
|
0x8a282cdfb057e36cL,0xd18a0c313ceb177bL,0x270e31569c58b890L } },
|
|
/* 8 << 343 */
|
|
{ { 0xaae2f448ed001c43L,0x08ad1d9bcf4be493L,0x3262b2f482c1f372L,
|
|
0x5521febd351a5f7fL,0xf8ec9190916c75a8L,0xf3c258c72728dfb8L },
|
|
{ 0x5dd4ff4f8af19574L,0xefddf5795d076b1cL,0x318b5b98ba8b777aL,
|
|
0xd971d426fb7f8409L,0xed1465e8b0fd31dbL,0x80d24d4300f66347L } },
|
|
/* 9 << 343 */
|
|
{ { 0xe8263e8012eb6baaL,0xc452c7581dde8c37L,0x5112af2840baa45dL,
|
|
0x949b8a740793703aL,0x8ba78382e60e007eL,0x38cd110412823c99L },
|
|
{ 0xdeb0d555f86cf04bL,0xb2f20bfdfd9f6320L,0xff1d399d17c39502L,
|
|
0x1340aedd1bdf0760L,0x36b2b43c88cc0c09L,0x5f3dba7e9ce285edL } },
|
|
/* 10 << 343 */
|
|
{ { 0xcea0374a69ca5051L,0x19e060ad5294ae7aL,0xf6ce02361bb01f47L,
|
|
0x2a5b28ba8c328b8bL,0x6991b1d8b253d630L,0x360afd40859455d8L },
|
|
{ 0xf5c6e1427c1f5946L,0x1eab83084cc8c391L,0x4eb4032f67e76ecdL,
|
|
0x5bf14aa233898059L,0x0804a7c00e001b76L,0xe3866a93734cd134L } },
|
|
/* 11 << 343 */
|
|
{ { 0xbe85177db72e5eadL,0x47c15fad59fd2463L,0x2cf5f07f4bd51f8eL,
|
|
0x82f48288c2898713L,0xdb08aab4c8f753e8L,0x18a1f5c510f58eddL },
|
|
{ 0xaeb7bde366d0b94cL,0x04539620079fb6dfL,0x64d1aff2ebe8c4b9L,
|
|
0x08d9ef431a10a101L,0xe326c7ec6c602789L,0xd8b1b3e7f6efc3d1L } },
|
|
/* 12 << 343 */
|
|
{ { 0x5ba5288c1ae586a2L,0x044f1fc61b715821L,0xc1a9a997602f3c65L,
|
|
0xc5c7512fe08c0223L,0x48a19c3c367e6f1dL,0xa9f2195dfb241597L },
|
|
{ 0x9f674a5fb5ba32a6L,0x275a060f0a312742L,0x5aeb8c4303d6f13eL,
|
|
0x0fed575d917433fbL,0xe4a5ef9a59f53490L,0xa9f86145f315e616L } },
|
|
/* 13 << 343 */
|
|
{ { 0x770d01ab2c1deef8L,0xca72f761f61b2a4eL,0xff686a4ceff9ee49L,
|
|
0xd6b338d30d07000aL,0x885b4e8ce1050b10L,0xd6326179b2364b01L },
|
|
{ 0xceb2bafc672b298aL,0x7df8941aba628946L,0x9c94004ebc56b115L,
|
|
0xde09cc2d7b12cdd2L,0x9c2dda163833ce43L,0x88da691a6265b59eL } },
|
|
/* 14 << 343 */
|
|
{ { 0x7059c58669a03980L,0x91f2dfe4e88e1287L,0x96dcd9318d9633ccL,
|
|
0xb2abc44f37bda148L,0xe31adb3feb8964dcL,0x7b07e015e316876cL },
|
|
{ 0x31732880ababd240L,0x5c37a667e95854a1L,0xb5b334c91d6f69adL,
|
|
0xe613e5622c34e118L,0x8bbdbf5c5f5984edL,0x82ecfd95cf4f63a1L } },
|
|
/* 15 << 343 */
|
|
{ { 0x813caa72ade4e3bfL,0x29055be8600c93c4L,0xcb346967e6e4ec1bL,
|
|
0x39c1152d50ce992fL,0x4682c20e5ce62852L,0x04e9dcb7f4e45ed4L },
|
|
{ 0xda75355d7c0fa5bdL,0xe80f29b078949d91L,0x6214610130fb9e33L,
|
|
0xe70cda8f325eececL,0x49217f74efca3e14L,0xd3c890b36bd7246aL } },
|
|
/* 16 << 343 */
|
|
{ { 0x315ad7a47e5a59f4L,0x1c615bfc543c8b00L,0xe12f97a8baa56473L,
|
|
0xf263db4446edcfcbL,0x47cf91d53c1a968eL,0x1a1165b4c15db875L },
|
|
{ 0x5d35e53a3479616aL,0x649f87b45c59958fL,0x5d3d11ea246da3d3L,
|
|
0xc1ddfcc653f06820L,0x8169d7116610c00fL,0x15f16ba54bddc8c7L } },
|
|
/* 17 << 343 */
|
|
{ { 0x307b040d9977713eL,0xc03f7787dee9e016L,0x761a5d03e12c354fL,
|
|
0x8fa1a4141cc88904L,0x2e079008b7675e71L,0x649c789591d68d60L },
|
|
{ 0x63467e93c98f1c9eL,0x81931ac7fcc52703L,0x2060c89538e59af3L,
|
|
0x8c12e002a87024c4L,0xfc881e69b3b8496aL,0x2b4e482e1e827081L } },
|
|
/* 18 << 343 */
|
|
{ { 0xf80ed61a30fa7e86L,0xf2e5f324a15ec5d9L,0x139ca085ecba2d64L,
|
|
0xd164ee5ff3f5cfd1L,0x758c0008e5cc3cc5L,0xd180c463ce8fa1f9L },
|
|
{ 0xe5dd27054adc6e61L,0x061e0c3c592c39e5L,0xec5a8d4a4e437781L,
|
|
0x9e4c6f461e6d4540L,0x33ab232e2526e6eeL,0x3c551685ea282d9cL } },
|
|
/* 19 << 343 */
|
|
{ { 0x59507a2162ce1459L,0x88b465d1c6a2cb30L,0xa5ef8b2b5c8ef7d4L,
|
|
0x73145f4c4dc9a457L,0xabad3390d19186f2L,0x7036b424f9b78a7aL },
|
|
{ 0xf76f51bb16e04046L,0xecd1ece92b2b71efL,0xda8d82011900f2b9L,
|
|
0xc2d3291b268d1bfbL,0xa6c1c79a2d176459L,0xb27e5d5885ee1b7bL } },
|
|
/* 20 << 343 */
|
|
{ { 0xcf19fb2a1e548ef0L,0x8bb6dfa0cc694171L,0xeb1668ca5c5e390fL,
|
|
0xf5a3485be1975263L,0x4edfc596442cc850L,0x9901f447f9627d74L },
|
|
{ 0x3a6b85c984d0413aL,0x1466366167de639cL,0x9fc9fdcf11705bbbL,
|
|
0x6d066e2bbff2cf80L,0x38dedc2fdc3026fdL,0xad533a981b828538L } },
|
|
/* 21 << 343 */
|
|
{ { 0xa7d51d862222dcb3L,0x52e2531cd1a6c525L,0x742b1234532126d8L,
|
|
0x226043f24e9e77acL,0x02f270afb3a75b2bL,0x7ede5714d4a8dc0aL },
|
|
{ 0x24699e16b34fd97dL,0x4e5d785e8d417ad1L,0x273f5dd1ec307ecdL,
|
|
0x742373863186955aL,0xf46805fde6afd38dL,0xae100ba424562906L } },
|
|
/* 22 << 343 */
|
|
{ { 0xed9f434e5216636cL,0x242bd09bc5c1668fL,0x8bb747bd804f3d6eL,
|
|
0xd66d8753c7c83dd2L,0xa71016c2584540b8L,0xd8b16210fdd41a90L },
|
|
{ 0x5eb5947e1b65be60L,0x1bf995e7616dbdc2L,0x71b7099abb7dbdd8L,
|
|
0x53650d29079eec24L,0x6bdd1b0e8ebd86c8L,0x0a9658ed9a31624aL } },
|
|
/* 23 << 343 */
|
|
{ { 0x3be2ce89b8cf4d55L,0xf9b3c501822cdcd9L,0x0cc8423010e12f3aL,
|
|
0xee09031a3c580ec7L,0xf4c256a812f4b48bL,0x71a8323104018d0cL },
|
|
{ 0x69ad6d7babfcf13fL,0xfa79b457af658743L,0x249f32816001af58L,
|
|
0x158430fcea127a64L,0x25a3e4549a9be713L,0x68ba3f0fcc6b5bb5L } },
|
|
/* 24 << 343 */
|
|
{ { 0x6c75bc93b7bfa29eL,0xf86f22b218ef6d69L,0x90ce6a1536dcadf2L,
|
|
0xf11f711c7ce50921L,0x0739ceda38a479e3L,0x840b825e6ec3dbc6L },
|
|
{ 0x7c36c0a59fa23481L,0xceb61fd170cb186dL,0xac6f7d3c26e4754dL,
|
|
0x4076d3b5f317b385L,0x52f1bd723fd9e9c7L,0x6649d8b6bf316043L } },
|
|
/* 25 << 343 */
|
|
{ { 0x5f03dcdcceb1e25cL,0xafff6561d50ff864L,0x17208b6f3a6bb787L,
|
|
0x61d96c978e15abf2L,0xb1beb427991107b1L,0x436328475008aa3fL },
|
|
{ 0x8a326eeb3595febdL,0xa8e5a037ec60dc0dL,0x762ebd2a3159f062L,
|
|
0x8ea005adbd1b0bd5L,0xd4d863cf696d4121L,0x2a07a637eacc9b9eL } },
|
|
/* 26 << 343 */
|
|
{ { 0xf352e28b54a8ffaaL,0xa8317f089ce68b6eL,0x7deb148770cad820L,
|
|
0x2411b382b2c3579dL,0x20b21ed214d36e66L,0xe7331bec353b9ff5L },
|
|
{ 0x5692636840dff0b3L,0x13356f7b646eff07L,0x1e6e6e4508c64091L,
|
|
0x913b83f2ea0b920eL,0xb69e5f839f713aa1L,0x8e59d3794632a60dL } },
|
|
/* 27 << 343 */
|
|
{ { 0x3594c0d3cdefc3dfL,0x9d850e2fd21cf9e7L,0x245322944e38263bL,
|
|
0x597964610e43acb7L,0x13fad563bca9408aL,0xe52983dba985390cL },
|
|
{ 0x9c5e71e08c000a9dL,0xde6b0b2f800949e2L,0xc58032d131d94108L,
|
|
0x36cd4099b31811e6L,0xa8d9bdeb3981d619L,0x06f644e03d4760c2L } },
|
|
/* 28 << 343 */
|
|
{ { 0xdc2870f8243cfbd5L,0x000b71b31ab496f3L,0x53511a3f708f4507L,
|
|
0xbd7bd0381949d835L,0x723a007d938f4db6L,0x5bc8679e2d04e9fdL },
|
|
{ 0x51ca5fd176ec7fc4L,0x86c4205c988f354eL,0x9042e76b2a0a4a90L,
|
|
0x368f52a84ad44d2dL,0xddc2cab8912edfb7L,0xde74ccf5cde80199L } },
|
|
/* 29 << 343 */
|
|
{ { 0x91b31fcbcaa3f1d2L,0xb8a29af1bcc99f53L,0xc5842b2695662f80L,
|
|
0x13954262a4b4b396L,0xc1fac956a6acfdffL,0xbe37fa4dcf60b88bL },
|
|
{ 0xc7715493dffff3deL,0x06dfaceda1274350L,0x9dfcaffd7460fa94L,
|
|
0x5f1d3a351e9c317dL,0x2fbf393d377b84ceL,0xb4d9bc8404b83635L } },
|
|
/* 30 << 343 */
|
|
{ { 0x29871ce22855a74eL,0x5418f0dc98696474L,0xd8bc07d6b90d0498L,
|
|
0x391012a79fdc0ea2L,0x271396949b09f60aL,0xa0a43dbf3371f0d7L },
|
|
{ 0xab5849422af8d992L,0x64cbd121409eb3faL,0xd36faf01766864fcL,
|
|
0x69189faea2a83417L,0x3c24d85e3733b772L,0x125a915d2ee497adL } },
|
|
/* 31 << 343 */
|
|
{ { 0xa8f9eb2abab3fa8cL,0x484584f654ab1e16L,0xee74e5aab21b34edL,
|
|
0x3ce626ff4eb689f0L,0xd757f22b0006e5bcL,0x611505d024a25e65L },
|
|
{ 0x212df14c46382659L,0xd17898d78c73da0aL,0x5604a93e51421c2cL,
|
|
0x76147f7603a580a1L,0x325b5c8ae5c34d09L,0x6ff28848db857152L } },
|
|
/* 32 << 343 */
|
|
{ { 0x8002f4583e455a61L,0xafbafd375bea205aL,0xa8ced112fb93f735L,
|
|
0x27cb6292196e3084L,0x72395bdd77e8c744L,0x02e018d8ee71f5ffL },
|
|
{ 0x7cfc14d9c1337a1dL,0x94e14c0ad7b4d86eL,0x66e50129d213738eL,
|
|
0x7a905d91bc0b5ea3L,0x92cb630afca06700L,0x65e06d5cbf3a0821L } },
|
|
/* 33 << 343 */
|
|
{ { 0x769ff9191e1cde66L,0x6ef257d1944a8786L,0x881437da4f75233eL,
|
|
0x15266f3768665eafL,0x21fcccafc1777505L,0xe9513e1ab7fea0ddL },
|
|
{ 0x67806e9c53c8a735L,0x24be9a769b11ae2eL,0x928c1455045d2065L,
|
|
0xea0395b53557f62eL,0x910d7cb4c7d3a450L,0xe849c853c634443dL } },
|
|
/* 34 << 343 */
|
|
{ { 0x76c6e48d3b476f69L,0x28195cdffe694ee4L,0xa3a9a99e2d3aacc9L,
|
|
0x0f68fe36b7f320d8L,0xca84a6c9889ce762L,0xc1eafac94901907dL },
|
|
{ 0xa28b9916208c9770L,0x6846e639f8403e57L,0x12fdf9fa1d179e3eL,
|
|
0xb81e47c843d046dbL,0x700ad19468c14491L,0x136395cebbac51d7L } },
|
|
/* 35 << 343 */
|
|
{ { 0x7452dfd4f775003bL,0xb38a2031f1a4765dL,0xef36c513a2888c68L,
|
|
0x2039b168a2339fd3L,0xf74c24be2cc498e9L,0xbeeaca157b622e31L },
|
|
{ 0xda72e5a005f2fb8fL,0xab4a98f0568d5811L,0x231aa495fcb15e1eL,
|
|
0xf981bd7f537023f1L,0x29d6eb2db367e5fbL,0x15247194b8cd452dL } },
|
|
/* 36 << 343 */
|
|
{ { 0xa81e4a4e55c2369dL,0x394de01b60a0f544L,0x22acfd07a8906e17L,
|
|
0xf59b37a6cc9bc4d0L,0xdd16a22c7ffec12fL,0x07decc2ad5976455L },
|
|
{ 0xc5019463abe1d122L,0x2bf0ac0ce318c92cL,0xfa50280ab2bfc47bL,
|
|
0x53354fc5c7cf8bffL,0xaea1d293e20ca341L,0xec25ecda8b626244L } },
|
|
/* 37 << 343 */
|
|
{ { 0x05c6f1c99a2f572bL,0xf13f8c7747987918L,0xccb406d74101fdffL,
|
|
0x93cea27bee1abcf4L,0x32703ada8f5adca8L,0xceaecb5f76313a1eL },
|
|
{ 0xf1c558980b9620cfL,0x942c28b51046c388L,0xbed4e9dc5a07cf8cL,
|
|
0x423b695a6c734b85L,0x1ce0a2392ac87737L,0x40f126ac4d1cc7d8L } },
|
|
/* 38 << 343 */
|
|
{ { 0x63e3bb09ad9e132dL,0xaa2880c5c9e84778L,0x23de89ea06049834L,
|
|
0x442d1df3554e23bbL,0x87214f9f08c5f124L,0x305d967a6beb4996L },
|
|
{ 0x01676f804409f827L,0x16992f73a50147f9L,0x77ee56796081b38aL,
|
|
0x8c75d293290afd9bL,0xf9578bca813f0aceL,0x395212dd0e786ed6L } },
|
|
/* 39 << 343 */
|
|
{ { 0x63475e65c21b0f48L,0x114f9af5326c2c63L,0xa897bc01310f768aL,
|
|
0xcaf47a8fc1bf3f5aL,0xc023bb3718cb887aL,0x3572f633685652a2L },
|
|
{ 0x2dc4ea0d7523287cL,0xafd60b92a121a141L,0xb6b4bf6e085ca490L,
|
|
0xf599f8f2e5351ecbL,0xe38c8eacddba3d60L,0x2540585f5be9e748L } },
|
|
/* 40 << 343 */
|
|
{ { 0x313b66cafd8ba33eL,0x10bdb130fabe27ddL,0x1181334c125e2b8cL,
|
|
0x0f4f198fdb6f94baL,0xf7000076ac3f5de9L,0x1a78813d9d6402aeL },
|
|
{ 0x3427f75dc8a9e758L,0xcdac8b34b01f791fL,0x922c36d12a9ebaf5L,
|
|
0x195ea05fb0487cc4L,0xe33de901a808baecL,0x15e1d5ac57291d89L } },
|
|
/* 41 << 343 */
|
|
{ { 0xfe52cd9cfdc7e2deL,0x3947e578da6dccf1L,0x0548d4b5738751e7L,
|
|
0xc73fc23f4b52a5ffL,0xf38eb8ff1b066accL,0xe9a40d37a27b40f5L },
|
|
{ 0x723b0752a264ad77L,0xe5d0c4efdea83bf8L,0xf7301e3fafad27a0L,
|
|
0x336b0d86298d09b3L,0x462766bdb2ef2fb7L,0xa5311241141a7607L } },
|
|
/* 42 << 343 */
|
|
{ { 0x10adb987ee1f44a1L,0xd6ebd1c3e51c0152L,0x0cf1303f4dd3b9eaL,
|
|
0xd06351b837a33a3aL,0xb5ce1d941cff1f0fL,0x326b3e055476e2bcL },
|
|
{ 0x90f76b5d3426b8ddL,0x77497380648042f1L,0x48684604f9f83902L,
|
|
0x00275191180f197aL,0x36fd84ecde7ce932L,0x52b428e65391a268L } },
|
|
/* 43 << 343 */
|
|
{ { 0xd2c1ccb0695c2851L,0xd722b84ff1c78f17L,0xaaa53d26fe52f2a4L,
|
|
0x3057f4ed24742143L,0x951332a4a2aea258L,0xe5e4db6091096878L },
|
|
{ 0x71db9e48f0b9ef38L,0x7e4b25c1ac542c26L,0xb7250394dd021df5L,
|
|
0xcdcc6118ee48e711L,0xbc324af1fcdd5db9L,0x71a664ef3e6de57fL } },
|
|
/* 44 << 343 */
|
|
{ { 0x4e2a05c1c21cdd1fL,0x8a232097dd46e76aL,0x8b55313cd871b1d6L,
|
|
0x976ce5f6af396bc4L,0xeb91527dafd381b1L,0x6cfd449014455ee2L },
|
|
{ 0x8723be9e1f274d1eL,0x1c63fd011999fa9fL,0x5f1726258049b6f8L,
|
|
0xe18a3ecd99a51b4dL,0x329fc2c1b13d4e65L,0x94da252b0f18f300L } },
|
|
/* 45 << 343 */
|
|
{ { 0x583adeb8b893316aL,0x69dce1efee5122deL,0xc5cacdf319b77627L,
|
|
0x061fedee5e8aedd8L,0xd53fce220257dce1L,0x0e4124bdc781e069L },
|
|
{ 0xf097c697d44ed517L,0x7704e33e9a4e9019L,0xac245dc23e0088dfL,
|
|
0x70e1176bb76102a3L,0x55261ab235e4dcaeL,0xc2ba59230ede3501L } },
|
|
/* 46 << 343 */
|
|
{ { 0x6edf35f3af073b6dL,0x7ab4118107376eb0L,0x4ef3e65be7ff1c9aL,
|
|
0x654ea359d2ac6d70L,0x2b41a7f67ffcd91fL,0xe5da0511e0a60e8cL },
|
|
{ 0x97fefd9756701b93L,0x7a4a827dd34afe15L,0x8bd6c2299090536cL,
|
|
0x110156f217e510a0L,0xce62a26ec801ca6aL,0xa786e9b05522b64aL } },
|
|
/* 47 << 343 */
|
|
{ { 0x3c73c2868f02f70bL,0x744a580d0eeca325L,0x58b7ca1733534669L,
|
|
0xd7d17d77800b0270L,0x864e3509538b116aL,0xc7eda5dce4797818L },
|
|
{ 0xd6c00fbaf741f023L,0x718ed11131d022bcL,0x4586baf2f2ce39efL,
|
|
0x1095729dcd9a09f8L,0xf5ff3f2d7652f5ddL,0x29d95a09dbb72722L } },
|
|
/* 48 << 343 */
|
|
{ { 0x7b151b98e28fd10dL,0x8fc01ce81dd884cfL,0x1f0ffb5098d56c2cL,
|
|
0xf9df1fa2b084606dL,0xf86232bfdc7d2008L,0xeae5cb8fd8751699L },
|
|
{ 0x70f0229883ed54fdL,0xb575283a86087697L,0xad2191350302e2c3L,
|
|
0x1c09a0d6c4b57e01L,0x0f65e1e1c541b9fbL,0x85493d9bf4fe76c0L } },
|
|
/* 49 << 343 */
|
|
{ { 0xecf595d6bc19db89L,0x32cdf31bd607e09bL,0xfaf93c636217e9faL,
|
|
0xa9a1619884d37c72L,0xa2688a33bd929e8eL,0x2ce3442e2842b31bL },
|
|
{ 0x906ac09ab37184daL,0x93a1a54492587ea0L,0x1acfab1ec5b4ce7eL,
|
|
0xd4788cac7131e80bL,0xb463d67bc8cf0e18L,0xa754ffb81f24067fL } },
|
|
/* 50 << 343 */
|
|
{ { 0x634f8d6db04ea518L,0xe8c424b4c60108a7L,0x3553b6d11ef6f4bdL,
|
|
0x1fe850dfbc0a8e1cL,0xa077055473a66e4aL,0x5417bd50da985b55L },
|
|
{ 0x3f99edcaed53259aL,0xd243f2d1b3d5ae6cL,0x70f404b8cb49e74eL,
|
|
0xf6893edc51fec8f0L,0x3f3ac23871521335L,0x127c055436e39048L } },
|
|
/* 51 << 343 */
|
|
{ { 0x459a96595ab6a5b5L,0x14ec172bb5ac2238L,0xe556f7061642ba57L,
|
|
0xe18d92d2da35bad6L,0xe64f9bcdd5805c1fL,0xabb4e0243b297094L },
|
|
{ 0x95429e14b8b876f3L,0x27961a7d9c04bad0L,0x81c74cf57fa32b6aL,
|
|
0xb035259ebb0f1f24L,0x828c42da2e773f8bL,0x06c996366ea73c24L } },
|
|
/* 52 << 343 */
|
|
{ { 0x353718ce191c21ccL,0x08e6edf64ad6bd18L,0xc2bb0d6e4dc5b572L,
|
|
0x328e19df88193daaL,0xccc9f6ab7211c958L,0x377d99ef58aae5c5L },
|
|
{ 0x40e2ecc91c823442L,0x036d6d528b0d36abL,0x2fe0cd7eda4d0ad3L,
|
|
0xb8fc3c7ffc8af791L,0xdb7e44a42b201b20L,0xa5176004ebcf527dL } },
|
|
/* 53 << 343 */
|
|
{ { 0x24d19ca6fed20bb6L,0x0c02db9841d634aeL,0xfb55998930310b8fL,
|
|
0xf9d0818506c00c8bL,0x2b9983fb4742362cL,0x16ae9bfbdce1b6f3L },
|
|
{ 0x679057e6a161a419L,0xe1e80fe04db28bbaL,0x2ca0c869f06c9a98L,
|
|
0x7b80c43bc448ffa4L,0x100f205cb7ef73f7L,0x29565a93a938bea7L } },
|
|
/* 54 << 343 */
|
|
{ { 0x4d00c613e1e7a831L,0xc90021dc56d9ddf2L,0xbb80b8385286ccccL,
|
|
0x156b05b771f5f09dL,0x120f47f47bc921f7L,0x6ea1715f8a65c50aL },
|
|
{ 0xa070c9f695aa8348L,0x96120fe273171f56L,0x10c7d592ebc69e4eL,
|
|
0x73f6ba27c1c7ef52L,0x10f5b9cef8bb536dL,0x8bc82b225ce0220eL } },
|
|
/* 55 << 343 */
|
|
{ { 0xac25749af4f3fa3bL,0x2376bcd76f50e4a0L,0x9c68fd1028b2332dL,
|
|
0x130ed4d12130b66bL,0x91842d58038dfc9fL,0x4111e4cbc401a53dL },
|
|
{ 0x85532deafb5d9b16L,0x0c5657503025e3b1L,0x1340aa49b6cc0c31L,
|
|
0x1cfdd7d68b7f71a0L,0xee911d7e8b6e548fL,0xcddf07f021456ebdL } },
|
|
/* 56 << 343 */
|
|
{ { 0xe19b7576fa5256d2L,0x418d5425db3f8bfdL,0x00424869951a1719L,
|
|
0x2383c7a8533b69b0L,0x166a38e2e67a86fdL,0xa6baa01c5876c435L },
|
|
{ 0x574ddc4584a208f5L,0x8cee30b826b18dbbL,0xeced99c1e9f6b30dL,
|
|
0xb638d88da7d34beaL,0xa4836806069adedfL,0x62beb7ee7a07c593L } },
|
|
/* 57 << 343 */
|
|
{ { 0xffc89d6de16d63b2L,0x4da3b04f5df40d2fL,0x3437da2ab48706d8L,
|
|
0xc35290a1d677df03L,0xe54fc6567c5b6c8aL,0x84f052ff2c77314eL },
|
|
{ 0x59c33a99d968b4eeL,0x2424c5d0facce444L,0x022d7bfbf505307dL,
|
|
0x5372518d00c142ffL,0xcc82d21aeefa787aL,0x3517f3c0473ef630L } },
|
|
/* 58 << 343 */
|
|
{ { 0xaf576c307a8a437cL,0x15852131de3f2cc9L,0x96bbff4371759da5L,
|
|
0x106934ec66f5257dL,0x712e7d0ba9cedae6L,0x5b0b876ddabf131bL },
|
|
{ 0x1605f3a8b741f94fL,0xe5d961c109305b04L,0x3fb97996346266c6L,
|
|
0xaf4eafc0b3ec7458L,0x0aefa01abcd90b0cL,0x2b7723e3505ea305L } },
|
|
/* 59 << 343 */
|
|
{ { 0xe5c6f37b43d12de3L,0xdc34fdad642baf26L,0x89d716d647268e1bL,
|
|
0x50047b391df8d657L,0x40da6352c64470a7L,0x406e3bc97879824eL },
|
|
{ 0x9677b4c38b9ecc36L,0xc82bf16fd246788cL,0xbc9fa99cef5dda3dL,
|
|
0x3050febf0e7b676aL,0xfbb1301a53e448afL,0x3239f20267c84d67L } },
|
|
/* 60 << 343 */
|
|
{ { 0x5093950b724fb94dL,0x107822718117ff50L,0xdc9e34b59f5961d7L,
|
|
0xfaa2fc012351a33eL,0xb9e0f1d9d5fc462eL,0x276a5b3bdd9c6914L },
|
|
{ 0xe6136d1775365ca5L,0x228b77e2a91eed68L,0x5cd6a269411e4770L,
|
|
0xd8857b0e17590390L,0xe7094f3aa0d45fafL,0xe52d11dcf40693e4L } },
|
|
/* 61 << 343 */
|
|
{ { 0xc873fdf565a0d2bbL,0x848244dbaa42c6cbL,0xa5d2d766ac50ba78L,
|
|
0xc650cf4343f38ad7L,0x901cf122ea895d06L,0x3ec1b583cbf46321L },
|
|
{ 0x863dce6193c3db94L,0x902459202445bb4fL,0xae716052673385dbL,
|
|
0x9266b0bfff830253L,0xd201095844375610L,0x9e008b9712cf8d71L } },
|
|
/* 62 << 343 */
|
|
{ { 0x2b1b2a551448e73bL,0xa8486146b5f97da2L,0xcf24d8636c848202L,
|
|
0xa3d6431c5e483407L,0x47a33db852edb78bL,0xb09256a37dad3826L },
|
|
{ 0x740222a74dfa2b26L,0x23f43bec2a8ebe04L,0x4081e512a8072f18L,
|
|
0xe53f0d05751ad7e8L,0x100d0a17332361ecL,0x8a2122e9e0c3a152L } },
|
|
/* 63 << 343 */
|
|
{ { 0x28be8affe7e6417aL,0x4e18b452d6a30763L,0x73ae410310d0d5f2L,
|
|
0x5151fe80003625caL,0x45ebb636ba7a91ccL,0x50f4b49d994e7e31L },
|
|
{ 0x02eaeaa93ebac455L,0x7632c7dac830fb1cL,0x06fe1dde3bb0d765L,
|
|
0x0d2f7623a6789d20L,0xabba46de01a43e9dL,0x2e822e08f27917f9L } },
|
|
/* 64 << 343 */
|
|
{ { 0xe96c4aebe5f5b545L,0x10a85a002d4c43b0L,0xf86ad2f632f9151dL,
|
|
0x05daf874302b99e2L,0x4299dbfa14fd3171L,0x27cbedd6812cfc62L },
|
|
{ 0x42e61536b8772164L,0x52eecef76a5423efL,0xc34c6c70548fffa3L,
|
|
0x1fbed7777b6db825L,0x850bded44ef2989eL,0x3b8a542c815463eeL } },
|
|
/* 0 << 350 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 350 */
|
|
{ { 0x9decf2173079fe2fL,0xc32ec5707c817f6dL,0xd5649ce8aeb36b92L,
|
|
0xab9f77d158fb4dc8L,0x66b11fb6b52d60cfL,0xe217941deaaa4619L },
|
|
{ 0xf3522a9a1607c412L,0xea2eba4fc2a3d8c9L,0x267997c625e38722L,
|
|
0xed5047b72d4595eeL,0xaaa41e5f55e5456cL,0x891e3d1278cfc6feL } },
|
|
/* 2 << 350 */
|
|
{ { 0xa438634ed7357a51L,0x918f14cd18c04d59L,0x2ab4dedfac40dd56L,
|
|
0x758e95ee4956a5deL,0xfc11e3945113f84dL,0x6d71b6736059f16cL },
|
|
{ 0xfd8e2236fb357c3fL,0xd7c8681232dca873L,0x02aeb1538ea13b44L,
|
|
0xde1275d3013d3827L,0x470a7b7e659ca201L,0x862c83c55c77b351L } },
|
|
/* 3 << 350 */
|
|
{ { 0xfc9b800f05084cfbL,0x1c4d4510496f23fcL,0xfea0003cc1d08465L,
|
|
0xf0281da09af48a41L,0xa5c0d97144d32eedL,0x2613b73e023a2e31L },
|
|
{ 0x455013c87dc8ac1aL,0x581b13195958b3daL,0xd293f2f22290aaeaL,
|
|
0xa068256496f6223bL,0x38fd18fa69410ef6L,0x74eaf35f2b2cf629L } },
|
|
/* 4 << 350 */
|
|
{ { 0x281f6e58c7ff5b50L,0xbc67791ecf9cd114L,0xe29fa41afd89abd8L,
|
|
0xfcb0b0b07984feefL,0x0b0928a6d9d20a64L,0x2fd385c46979ccd5L },
|
|
{ 0xce9c34c81fbe72e4L,0x69364344aad0135fL,0xd464635250946a5bL,
|
|
0xb09a97c6f39f53b9L,0x1d47bc20dcbc8b64L,0xcda5c7bdd458b0d6L } },
|
|
/* 5 << 350 */
|
|
{ { 0xad5b8c2887eff3b3L,0xa8a3917d9937833aL,0xbafdc493200c3b49L,
|
|
0x9e27aac5972c6fbfL,0xfd292bb20518c97dL,0xa62126db33515a63L },
|
|
{ 0x9892a8bb1bcfc875L,0x93b066b7e0b674d1L,0xcde9b0087fd3d080L,
|
|
0x1e285a8859401ae8L,0x4679e32982cfea96L,0x52406ea023e615d3L } },
|
|
/* 6 << 350 */
|
|
{ { 0x27de61138b6e9462L,0xb8ade1dc473464bfL,0x911ad49394dacc08L,
|
|
0xd036f28e44252cb1L,0x3865abf6d13dc20dL,0xcea487cdd528f0baL },
|
|
{ 0x14d77eaf4fc290feL,0x5106533bc5084101L,0x11001dc7cda9eccdL,
|
|
0xb79ad4bc49fc4a78L,0x4f6369f54567f8a9L,0x64050aa2df7ab817L } },
|
|
/* 7 << 350 */
|
|
{ { 0xffe057aade07f615L,0xf3f91b55342700bdL,0x294761e127a839f9L,
|
|
0x6411a2b480eafe1cL,0x4900eb120737b80aL,0xa1134d10bb73264cL },
|
|
{ 0x0ebfad730ddbf7f1L,0x57bbe692cd1f73ecL,0x675931fca20f8944L,
|
|
0x1950eefffad2ad19L,0x60d304029cdf88a0L,0x121af89e33fd2c6eL } },
|
|
/* 8 << 350 */
|
|
{ { 0x763e3664295c4db2L,0x632fd676dbbaa92dL,0x62ab11a8c66b40e9L,
|
|
0x06244698f384b708L,0xe7cdf3bd69197876L,0x9cc79c48064f8837L },
|
|
{ 0x95900a229486589eL,0x7953f6e72ff01639L,0x3f65fbbddd3e6e46L,
|
|
0x84f52e06baa2e2a0L,0x1dc462a8e3852824L,0x9be69c3f7e4c032cL } },
|
|
/* 9 << 350 */
|
|
{ { 0xa40afc3670977e01L,0x965f110da6c3b289L,0xc4952f87805a8491L,
|
|
0xb36804b80b65e2d3L,0xd3f6f5ace8cf2b2bL,0x0f37a79da4b71938L },
|
|
{ 0xb2f810d9489ef671L,0x1feae0262df23cd8L,0x7412eee321a14e4fL,
|
|
0x1458b8ad179d51faL,0x2156a90ee201509cL,0x39f29fca72605867L } },
|
|
/* 10 << 350 */
|
|
{ { 0x231f70adb2e066e3L,0xf09db880bb477a19L,0xdfa0e503907e5c63L,
|
|
0x12fe09f4f97022adL,0xdbf06f3620bce7ddL,0x0140e197f1371cbaL },
|
|
{ 0x917b6da464b0b4b0L,0x9a6f4d9b20fe3320L,0x0981d60ed66bdf87L,
|
|
0xb430e4e062d3487cL,0xc3440fb934dc4a94L,0xe7972dda09a5e3c9L } },
|
|
/* 11 << 350 */
|
|
{ { 0x29d6394093f47052L,0xadf04e70847e5937L,0xa0ef4fee731bab6fL,
|
|
0x21de31956ee7d7bdL,0x99af4a8dbd716777L,0x9e15c983df4c569eL },
|
|
{ 0x2ec7bc0ce94401eaL,0xda1835ad85727722L,0x2b5862ce5dad81daL,
|
|
0xb2be508188dddc2eL,0xa02482101414286bL,0xc52c436d8ea33f3fL } },
|
|
/* 12 << 350 */
|
|
{ { 0xcc580ea73b24e776L,0x0f3a8b189d721d6eL,0x8665604fb23480cfL,
|
|
0x95787cba34414689L,0x425d7c6f4d10a945L,0xb5ec2626b2f1cc78L },
|
|
{ 0x55da88858658de6bL,0xb50919d1e9aba03eL,0xc64881d7d99e417eL,
|
|
0x1eeba5aabf28fba2L,0x20feb7b3504eff80L,0x9f5f9db650debfb7L } },
|
|
/* 13 << 350 */
|
|
{ { 0x4eb94584230923dbL,0xba8611287b3a6929L,0x5aa7faa3ab1d6b31L,
|
|
0x95c1e23916ae0966L,0x98674fd3a2fe2297L,0xa8da0ee53c42d488L },
|
|
{ 0x103cabace0740db0L,0xf0b860d45bf16882L,0x03cb0cdc289e48ceL,
|
|
0x3c15d3759e52c7d5L,0x524f731998103ca2L,0x828ed65cc609ffebL } },
|
|
/* 14 << 350 */
|
|
{ { 0x518f231b83dfb993L,0x4b0987db37c0826cL,0x0c34961cd5177eadL,
|
|
0x9d882d3e452c92daL,0xbfeaf5588765bcedL,0x83957b62b9962295L },
|
|
{ 0x2d1d01757bb084cfL,0x04c4cfcde8cffcfcL,0x2f35e33d8d4536c1L,
|
|
0xbebb31cbd83124cfL,0xe342bed2abb29019L,0x2af0fcde2692a0d3L } },
|
|
/* 15 << 350 */
|
|
{ { 0xece5d865c7e3b29fL,0xe58106a4622839ddL,0xf5272d43f2969d76L,
|
|
0x90c72c1b2a1a240fL,0x1e2aa0acaf15e14fL,0xfa2f1c7bf1b6b5a0L },
|
|
{ 0xfb5d343d880224a5L,0x47b88a84f91881c5L,0x140f5ee9dd142fe7L,
|
|
0x4e76982e24b37c44L,0x6aaf61e9578b482bL,0x01950e22765bc4e2L } },
|
|
/* 16 << 350 */
|
|
{ { 0x20ebf79ce8a2e8f0L,0xec040d0daca418a2L,0x016c07e78d630d2aL,
|
|
0x20021d57fa605dcbL,0x6190f3e942d04705L,0x4e000df58974b7e6L },
|
|
{ 0x6710da6c5abcedacL,0xf31aa4965f95d37cL,0x192c4b8ba5830899L,
|
|
0x171ab8c4ea7dbcddL,0x715f60818cdf1097L,0x0e0135bf205d10edL } },
|
|
/* 17 << 350 */
|
|
{ { 0x070fbbe1687645c4L,0x4dd859c8c7e0261eL,0x749fa1e9fad54b60L,
|
|
0xb35942f483cdc91fL,0xcef26d0018eeb83cL,0x4dddd5787462064fL },
|
|
{ 0x0420ed6e703e8740L,0x9087d805c180c7d3L,0x93807412828424f2L,
|
|
0x8bcea69a6dcae236L,0x22aed9a2d1973c78L,0xe3d0f6f83328d690L } },
|
|
/* 18 << 350 */
|
|
{ { 0x5ce5bc6da85a13acL,0x868f385c7f1dd71bL,0x15aa63a420c376c6L,
|
|
0x7802fc9e749127dcL,0xfad59f8e67a98935L,0x6bc97b1d60c0fdf3L },
|
|
{ 0xd24caa7ebce87ee6L,0x8aa08bc27ba511f8L,0xe5ba94f47ba61c1cL,
|
|
0x9fe9c343364d2d75L,0x8ee0468161273932L,0xab2f0dbe5e8c4861L } },
|
|
/* 19 << 350 */
|
|
{ { 0x13239c0a8254ded6L,0x594182e61762f9cdL,0x6326369d480efa21L,
|
|
0x7fee5afd33101382L,0x9e1ea59c4688bc0bL,0x7a3b1b8eae19c17aL },
|
|
{ 0xa8f8f8e5777aedf3L,0xe2d018bfc6bbdeacL,0x3625b03b54328db4L,
|
|
0xda7540c8711ab8caL,0x7faa19fc46930a99L,0x61a5d1845b59a973L } },
|
|
/* 20 << 350 */
|
|
{ { 0x4a6226f9f7092423L,0xfe6b7a6dec945231L,0xb44e2e60a1193cabL,
|
|
0x2ce6393543dda270L,0x1a9e8a2138d64738L,0x863d151a9d843675L },
|
|
{ 0x98a1222ee2b14443L,0xbf8b32712826846fL,0x80475be555508801L,
|
|
0xc39ccd917b38f064L,0xea31304de8e249f5L,0xa3b6891b4d42db74L } },
|
|
/* 21 << 350 */
|
|
{ { 0xc0f1627a147e0f32L,0x59fb7f2f5e8822d8L,0x21d8be6371097441L,
|
|
0xa6169f1b855543f5L,0x188c420645102ae3L,0x4c20a136131b674fL },
|
|
{ 0x05487c4d15999699L,0x8a82a130e6ba5542L,0x93a2119519ec0de9L,
|
|
0x634d644cc8d0538aL,0xa90c5eeb3b6bbd60L,0xd59105125e4db926L } },
|
|
/* 22 << 350 */
|
|
{ { 0x5140a7172119e821L,0xe5a2ca8cbc370a14L,0x0c17ad48a6db3398L,
|
|
0xd7094545ed6fc82aL,0xcf32984dedb976d1L,0xcf04ac16cdf83a9bL },
|
|
{ 0x9bbea16b49775502L,0xb4855286452a6f35L,0x45cbc3b7a86f445dL,
|
|
0x5972ec64763f5990L,0x14d0b9c0b780b2f0L,0xb120273456e707feL } },
|
|
/* 23 << 350 */
|
|
{ { 0xbf6b76e1e41c43c6L,0x64ea1824db033acdL,0x7fc0399987c9406cL,
|
|
0x9427585a51b371d3L,0x464f3559c9705e0aL,0x6639797ac8cb6ff6L },
|
|
{ 0x5104a72e842fbf01L,0x7cabb009fea7af74L,0xe42aa69b19a1db1cL,
|
|
0xca9599a3a6a7ab69L,0xf31e4aaa1a70d770L,0x0fcc7f1b8a5ef098L } },
|
|
/* 24 << 350 */
|
|
{ { 0x39a689bc281548baL,0x11aacfca138eabbeL,0xcf33108a8d29457bL,
|
|
0x312612e014ed4b4dL,0xcbb21f345115625fL,0x4e7217de303a363bL },
|
|
{ 0xaeb0c8c0d137f67bL,0x4ff84a937bf78dfeL,0x7a022604683b37dcL,
|
|
0xfa4ced77862b0847L,0x5a49bdc136d69390L,0x6d9dff06c0215314L } },
|
|
/* 25 << 350 */
|
|
{ { 0xcb116e787b1320bbL,0x6310206258ed15fcL,0x1a7891a082c13108L,
|
|
0x203d73d939eb4c93L,0x0485b8493c78c65aL,0x663897e93c935525L },
|
|
{ 0x9b79708088b41afbL,0xbd34d5134f2b649dL,0x0b4c156f62f6b652L,
|
|
0x24125d1d6863dca7L,0x726a8bb2edb6638bL,0x2ec5deaf82aea7a2L } },
|
|
/* 26 << 350 */
|
|
{ { 0x9fb22ca52a3706f1L,0x5a265b5279f5203eL,0xc8844f096fcbd426L,
|
|
0x52a165f0ed8a3267L,0xff0b3a00dfdfcac5L,0x80167cf52de9e1c6L },
|
|
{ 0x9e9c4391b0b969c7L,0x279440c41e0dabf6L,0xaa535b8f85133e39L,
|
|
0xef61e22234660228L,0x8ea81a41c386528bL,0xd0bb1f6e71a8c66aL } },
|
|
/* 27 << 350 */
|
|
{ { 0x75a689bfa67ab0ecL,0x53eaad3e54843363L,0xdb71f81619a3ba98L,
|
|
0x817257fdc244f33dL,0x8181c028c0fb3720L,0xc813c4651cb7bb39L },
|
|
{ 0xbc44c1e71b189585L,0xaedef8701eea3a29L,0xcdd828d7ccb5dc90L,
|
|
0xd224f1774fd2e0f1L,0x2a4723b0e78883e6L,0x33bb05473128e260L } },
|
|
/* 28 << 350 */
|
|
{ { 0x544874b71477473cL,0x253a455a3907385fL,0xb303afd631411ba1L,
|
|
0x30047aa0466d6415L,0x3a1b676594d4c2deL,0xc265f1912860c7b1L },
|
|
{ 0xfe140a73688e7975L,0xf08a652bf37ce7deL,0x6c9f6df9f46f144eL,
|
|
0xf7e7b95bc0defbc4L,0xfbc9a9697824c075L,0x9745d768d7773c39L } },
|
|
/* 29 << 350 */
|
|
{ { 0x7170ab4699873dabL,0x765eb89b8952bc0fL,0xbe3fe2c4f78fd020L,
|
|
0xde51f8579f194b70L,0xa625839e7cc68fbbL,0x50e59b49f7105097L },
|
|
{ 0x625294f3b82e287dL,0x98daa85288ca9d10L,0xfa0eb790b499d9bfL,
|
|
0xe280de610382dba8L,0x3fd350e0e76a7d70L,0x1e5c2bebece5ba7aL } },
|
|
/* 30 << 350 */
|
|
{ { 0x73e187e000ce469bL,0x21dc6268dbd717ceL,0xe9d63224ee564ef2L,
|
|
0xa7553c854c4c444bL,0xdd409398f6a9b713L,0x902c9cff72f94d6fL },
|
|
{ 0x944edb33f50a36eaL,0xa48a5ae4cfb65a8aL,0xcb9a83b9ed82fddfL,
|
|
0x9476090c209aa829L,0x66cd0cb1c7e2347bL,0x0f1fe07c86fa005bL } },
|
|
/* 31 << 350 */
|
|
{ { 0x7c17a2e0c65e52b9L,0xa987f030615b8325L,0xa39b78aaa3d4dba8L,
|
|
0x738ce26396e96e82L,0x313f7bb7f08f99cdL,0x29571b3cd1a1b7c1L },
|
|
{ 0x00c0e66c89ead6e5L,0x231de4ff19b9874dL,0xc9445296a4137755L,
|
|
0x7b95f3ea336ea724L,0x7c0a222c49bfe5a0L,0xa265c41d782f8d4fL } },
|
|
/* 32 << 350 */
|
|
{ { 0xd2db4d35c8d2bf7bL,0x52105d0981571d06L,0x447565cc723a57bfL,
|
|
0xd98c3597d8ded62cL,0x0aeac6d9de2f1a9eL,0xd363b0b70a98d3b2L },
|
|
{ 0xd9708f0702ad9933L,0x9334677564f5809dL,0x499332cf49cda010L,
|
|
0x546df74a858467e2L,0x8b84a55093748e8eL,0x9e88ef9706f09073L } },
|
|
/* 33 << 350 */
|
|
{ { 0x1cdc6b4f673d9c55L,0x4300148a0c11743eL,0x2f924ce4c38b8c99L,
|
|
0x5300ecc925f32459L,0xb9cd815004473c2cL,0xffee15498eebdcabL },
|
|
{ 0x42c292d54c537dbcL,0x32f6d8a293a133d0L,0x4da3a50c35dc41a6L,
|
|
0xc16dee6a102f9ea4L,0x69a017a1f00d0bd6L,0x6a95ee1527acbc5eL } },
|
|
/* 34 << 350 */
|
|
{ { 0x6c02c17adcb73b47L,0x10073a3454b70b07L,0x417ca218a7fe7a73L,
|
|
0x6f81a38e4ab64b0aL,0x4e25301f8fa7fc44L,0x180f3e1b27d41e1eL },
|
|
{ 0x88925649ce1cfbf5L,0xae279fff2eedaeb9L,0xeac9b033eed426cfL,
|
|
0xa8488f8aa1740d49L,0x6f748bc3711b5da7L,0xbb1c46fd23bbe135L } },
|
|
/* 35 << 350 */
|
|
{ { 0x6b2f317b9da70c21L,0xebddc2b5c99dc82dL,0xf4a85d4c5c807d1eL,
|
|
0x47a79b298a15ad6eL,0x02afb05befbda553L,0x34f3998e6941a669L },
|
|
{ 0xa4a413fb72deac14L,0x2bd9306c1941b899L,0xae023fa5788c1db8L,
|
|
0x38cd6c42e1012bb6L,0x77ae298c13bd860bL,0x6312af9d63bb40cbL } },
|
|
/* 36 << 350 */
|
|
{ { 0xbb7742f370fcad48L,0x6dcce7ff57d444acL,0xfc338485b6abc122L,
|
|
0x03c1118caaf9060bL,0x095dc123cb997905L,0x2dfe24453dd9bee4L },
|
|
{ 0x9bffbbf9d45cdcdfL,0xc5b50babb4b26fe5L,0xe985754e87d31873L,
|
|
0xb5b007f5a503d2e0L,0xe25c4eb620bb8357L,0xb6f00e50803fa8ddL } },
|
|
/* 37 << 350 */
|
|
{ { 0x21cab682b8035f01L,0xec82f6ae301c96c1L,0xf25d6a0c1539a503L,
|
|
0x94180ece1e35b449L,0x13fbc96f1ede3c57L,0xe4a63eac01d8e678L },
|
|
{ 0x3d1a745c068c6886L,0x0659d6ff233be378L,0x493d7a6f3244a214L,
|
|
0xfa852b1b772bd953L,0xbf05cc0ce87db547L,0x28f497ccb30aacf9L } },
|
|
/* 38 << 350 */
|
|
{ { 0xa92f28b88ea312ecL,0x9c702e953a3b5f1eL,0xf0a2f787583053edL,
|
|
0xf99506f29cb41eceL,0x4c3b00b5c2b5c214L,0x59bb943717b8d5caL },
|
|
{ 0x9ccc7869af5e6b94L,0x6eb795a7f340d02cL,0x7fc613c80a09eca5L,
|
|
0xdac14e61d155f16eL,0xda25c7fcccadb39eL,0x160fda8c9c7fe2b3L } },
|
|
/* 39 << 350 */
|
|
{ { 0x8aa83310312ee9dcL,0x702ad7bc2af291bfL,0x3940f883ec915c5dL,
|
|
0xdfb7e44f6fe07c64L,0xa7af875c72d09357L,0xb5df04f4f70b766fL },
|
|
{ 0x738af1bb96f8b10bL,0xab27b86735563f8eL,0x18fccbec2ebaf570L,
|
|
0x94e9066dc1d7d59dL,0xa1e3518dc63373e4L,0x0722fd0f22d8306fL } },
|
|
/* 40 << 350 */
|
|
{ { 0xcd42d2391be93e28L,0x93c11fcae2ea0d1cL,0x8acd0b17345984efL,
|
|
0x3e3feaf350905d0dL,0x4124e89a6f35b49cL,0xafdd8d27a2bae979L },
|
|
{ 0xce1e814015ad5661L,0xb0f9296dde281bc6L,0x11e93935c31ea529L,
|
|
0x1c4c3bd7ebb898ffL,0x7cb73fc76ccc32c2L,0x69e5307da3ac9b8bL } },
|
|
/* 41 << 350 */
|
|
{ { 0x37bec50c8e5a9a8fL,0x7f0daba5055a1aa3L,0xa56bc577a1c00a74L,
|
|
0x0656b6aeab88258eL,0x2959237fb88f0f0fL,0xffff63bb9ef15ca9L },
|
|
{ 0xd9a2909eb94ae6c0L,0x2506a1779b304c76L,0x5658fed3abdf17c8L,
|
|
0x9c95765e0f90cc53L,0x80ffd7b38e74dc97L,0x97e032e6b8c73479L } },
|
|
/* 42 << 350 */
|
|
{ { 0x7073ada11780b0c7L,0x6d4ce321f35f07d8L,0x27b26ee589f35e5fL,
|
|
0x5af10ecd324349d4L,0xf9a0a9071b9bd956L,0x5dde968571350ba0L },
|
|
{ 0x678158f5b6400a5eL,0x93764a022842e0deL,0x71a17724057c9ff8L,
|
|
0x04c4313c72f58c63L,0x07fdf15cc4e81260L,0xd6c25e82a509f1acL } },
|
|
/* 43 << 350 */
|
|
{ { 0x4f8a719ae3cf3138L,0x7aac7f0d9b1a2e30L,0x3fe8dcb88c0c76d0L,
|
|
0x34afed4ade0b5be0L,0x824e043cfdf7c28eL,0x5b700afce708e71bL },
|
|
{ 0x6c7fa728eeffc50dL,0x2488eee97ca62450L,0x25490cb59d969f4eL,
|
|
0x8bbbac3d8bd629aeL,0x7e5213b56e75e171L,0x1385bff25324b23bL } },
|
|
/* 44 << 350 */
|
|
{ { 0x364e7371c7d996d5L,0x053390bf8cc483aaL,0x69c23cf281e948d1L,
|
|
0x65e45d618e822ec6L,0x9240ee412ed94568L,0xe0f33912510a84cbL },
|
|
{ 0xad42eb0f6ecabdadL,0xb35afdb4bc7e39f6L,0x4ee63cb10cb50316L,
|
|
0x7ccfa14a2a27dc3fL,0x584328f0b4141347L,0x361b2614a23cd89fL } },
|
|
/* 45 << 350 */
|
|
{ { 0xe70edc42ee93ec36L,0xec773e52bccc99efL,0x9b0367a0ce0816e2L,
|
|
0x43baad458c6757e4L,0x5d25fa821fb7b01aL,0x65913e86bb6bc3fbL },
|
|
{ 0xb1f1fcab67fafef2L,0xe5ffd89c9e9261cbL,0x86f7b89ff29bb205L,
|
|
0xa76ed6722db408b5L,0xd6f1ce5cf83f53a5L,0x9cb5cd26c2882d51L } },
|
|
/* 46 << 350 */
|
|
{ { 0x03f6ca364b2582d0L,0x70345ae80f8116e4L,0xc2612cbfc562aba3L,
|
|
0x9cdd127789898142L,0xea7f202c02d762ccL,0xa00c15da33662a74L },
|
|
{ 0xcb5cc621aa430b63L,0x6dd1482fb1550d67L,0xb27e7df46216f063L,
|
|
0xfffe57408f49403aL,0x9403206cfc2bc9f9L,0x132504014593a578L } },
|
|
/* 47 << 350 */
|
|
{ { 0x6b9c67e6076b2d5bL,0x54509f61883d31d1L,0x25905831fe051be5L,
|
|
0xe6633c1be93608f5L,0x284afa7697480e6aL,0xb124e6063a06cc65L },
|
|
{ 0xcbcb2c2e2c608edaL,0x07a39d8f813795a2L,0xf27742a8bd108bbeL,
|
|
0x7425519005b4e5b6L,0xa27620b2b0145a3bL,0x6e3d1210c0f42782L } },
|
|
/* 48 << 350 */
|
|
{ { 0x0eeb9dc702ed3c24L,0xe7cb624dfb39fc44L,0xded105f581d4cceeL,
|
|
0xaa675d0c46465cc3L,0x313f4fc99af0a81bL,0xd129819f227e6a72L },
|
|
{ 0xaa6b690340b16103L,0x3dba75b2fb4c2fdfL,0xc9feeea1e7c79c2aL,
|
|
0x14f503104e024e75L,0x3704aaa8b5729449L,0x39ac6b0c24b86accL } },
|
|
/* 49 << 350 */
|
|
{ { 0x7e25860735214575L,0x3baa75cb068c68c2L,0x93b6a33f10be8d33L,
|
|
0xa88f3cc11ba06b10L,0xe70e7ec2a4f8fe72L,0x32fed39fd4835710L },
|
|
{ 0x16137edf3e6059b5L,0x57b1bb9fbb064775L,0x68d3f26dac98cfccL,
|
|
0x89339bce7f9fd53fL,0x15b32212825e946fL,0x55b0a89bf92a0ef1L } },
|
|
/* 50 << 350 */
|
|
{ { 0xf419d9becd3eed01L,0x851b31659851492fL,0xa9ac81a9c9b0a402L,
|
|
0xf67bdf20122c09acL,0x9b26b131f442a030L,0xf7a548f517e72d1bL },
|
|
{ 0x9e0dbf852a7f505eL,0xaa8e7348c7e93ff2L,0x4efa7877134d8017L,
|
|
0x48f476fc13e5fb0eL,0x552d0447154f4040L,0x8d5b166569b18f6aL } },
|
|
/* 51 << 350 */
|
|
{ { 0x65ef443e63c90cfcL,0x3a0dfb8194ed3ad4L,0x75570ba710b5547dL,
|
|
0x5e161fa498e84064L,0xf55dc5003c576f89L,0xe46bd28c7f530eabL },
|
|
{ 0x367607400109f9c1L,0xde7a997bb15e9598L,0x25386f307593c3d7L,
|
|
0x680e3639def120b7L,0x43fab687aa6e213eL,0xce48861daa99cf3bL } },
|
|
/* 52 << 350 */
|
|
{ { 0x93c2cf3e53ead820L,0xfca3b3564f4444e1L,0xeb6d82bfaac7a37dL,
|
|
0x9c0915d4cf49947cL,0x771f9f7cc7edadaaL,0x51418e487b2df679L },
|
|
{ 0xad1b249173f28cf8L,0x8fe4fb7baecacd2aL,0x539764bdb20d0b77L,
|
|
0xb0073685a6a4f808L,0x4c6f5602cf909196L,0x1ae89342d45e9e7dL } },
|
|
/* 53 << 350 */
|
|
{ { 0xcf8aa4e5f007985eL,0x833ea882c325d2dfL,0xc1cbaaf5f9f326e8L,
|
|
0xe779a4a9bf906c20L,0x29f475bbc923cf15L,0x6598d52a54055b74L },
|
|
{ 0x1001a5f1e4fbd4f9L,0xb4933d56cc74cc71L,0x45c04a50fed802baL,
|
|
0xda140558052bd04cL,0x71c127d63dfbd563L,0xef2b85ba42ebaafcL } },
|
|
/* 54 << 350 */
|
|
{ { 0x76569e44bc325891L,0x8f8a1487fa2604afL,0x07a8bacdbc90be04L,
|
|
0xeb53b1087b2c9bb7L,0xcfdc78aaad3c7943L,0xd74807da3bfcd779L },
|
|
{ 0x642552417189257eL,0x28138e8d23cb9584L,0x0ce0b331476b888dL,
|
|
0x6d9ceaa0f2a9bbe5L,0xb4f1185653b872efL,0xfa9e6fb222d06df6L } },
|
|
/* 55 << 350 */
|
|
{ { 0x0d45565ce6eabd52L,0xaca75463f41a4559L,0xc3e4064a846eb291L,
|
|
0x22ac04bc8613d2f2L,0x74cf6fac2364ce2cL,0x61bbaca8be4fce3cL },
|
|
{ 0x302e8117b24dc7b4L,0xa72ae24dd89a053fL,0x75b2023967de96e1L,
|
|
0xbe51cfd2a9e6d1bdL,0x807a8e3d07c9259dL,0xcf3cd92e43cf6384L } },
|
|
/* 56 << 350 */
|
|
{ { 0xc040412c754b8669L,0xbda7e0cde2c1d3b4L,0x2ac3b3d5ba29b9beL,
|
|
0x98a415e3f63bf3abL,0x25aee93ed1776a16L,0x46db7347ec3bc968L },
|
|
{ 0x8e44180a02612d2bL,0x4e3dc4e82db990ffL,0x2050f58f5f7705dfL,
|
|
0x7b41f5892672d845L,0xeb301603c96e4fecL,0x66ecd24e6cb16a6eL } },
|
|
/* 57 << 350 */
|
|
{ { 0xd428e7e3d01edc1fL,0xef608062873fadf8L,0x05e7c80d5606965eL,
|
|
0xb818d0c6a979f826L,0xe9b4c5c7c4793537L,0x7ef637225e83bb66L },
|
|
{ 0x825d89499fbb3a85L,0x557abf0396e34cabL,0xfc3db05b8040ad0cL,
|
|
0xbdc8e907e305204eL,0xdfc1628d1c1637e1L,0x10841d2a947a78deL } },
|
|
/* 58 << 350 */
|
|
{ { 0x99432df309c7b138L,0x288eef14593b1fc1L,0xf47f9fb21b55f0b4L,
|
|
0x5cc20dd46788b9a5L,0x2e87fb4605e43a77L,0x08cf86be849c700aL },
|
|
{ 0x467ec61374680ce7L,0x44e5c8d45884aff8L,0x549f2ea86b33a1a9L,
|
|
0x2ebf696a8b4a815dL,0xc1705b152a74323aL,0x930a9fde69745934L } },
|
|
/* 59 << 350 */
|
|
{ { 0xbb11fe102d168ee9L,0xba4aea667f39e124L,0x139364b6fca2841fL,
|
|
0x6feef5b13d359df1L,0x4fe89fe19787be92L,0xd4cea92e0f6b6aa9L },
|
|
{ 0x794006c0039bd8f5L,0xdce0eb5b0be647abL,0xf4a97f7d4e40c1d3L,
|
|
0x78d19059d5f7254eL,0x464ddc1d0df22d8bL,0x990b0a39e0fc7628L } },
|
|
/* 60 << 350 */
|
|
{ { 0x72f5a0f70ad3bb67L,0xabb15e3dce6396d8L,0x2ae94788463efba7L,
|
|
0xe77b53b41fd4c512L,0x09921a1ca88606cdL,0x1b86b75608e980eaL },
|
|
{ 0x2def667af3d22731L,0xadebd3a39641b175L,0xc0f35509045da920L,
|
|
0x8fbf85e4952b7ca9L,0x4ee7565023517a65L,0xd31eeea30e75a4a4L } },
|
|
/* 61 << 350 */
|
|
{ { 0x6d9a5d3cc4508650L,0xe71fcf32d1a2ac1bL,0x784b9148d62ec2dbL,
|
|
0x9a3d5d572088946aL,0xc488178757848c00L,0x2f50a62e0875c1e9L },
|
|
{ 0xbd23d4aedec0f2dfL,0xc9c28dd5188dad0eL,0xf87ef6460977ba29L,
|
|
0x89ce8330ab03e4d7L,0x7dbec90dbcf1a5a9L,0x3ddc39c1f6c2a4d4L } },
|
|
/* 62 << 350 */
|
|
{ { 0x8c0518c7618b787eL,0x6f226212b95734feL,0x3e6cab90c66e138bL,
|
|
0x6e56d68037a7c0b8L,0x67a3c7df16f6acbbL,0x43df95107921bb92L },
|
|
{ 0x967846f6a0887d25L,0xf717017766908fcbL,0x1a8ec350267430d8L,
|
|
0xebb46f1a25855c90L,0x73eb78cb396c1714L,0xf766957cdc081e43L } },
|
|
/* 63 << 350 */
|
|
{ { 0x0700da846de27e73L,0xfac9dcfd78c35563L,0x01af330ccd073b09L,
|
|
0x0bf5c3b1bb784ceeL,0xd3d9a9ff5d465498L,0x4836b065bde8bafbL },
|
|
{ 0xf5bf3316329b4cf5L,0x387388fc54a5275fL,0x73e880d8254af26eL,
|
|
0x07ebcddc8d05311dL,0xe8b9965a4f46cec2L,0x4f07a4fa01b06069L } },
|
|
/* 64 << 350 */
|
|
{ { 0xc0a40cac52133095L,0xfe1b22fd93c162bbL,0x8625898c34018741L,
|
|
0x69c9f3f636d9e57aL,0x69d9d7f3378aa211L,0x6b03f897e7dca168L },
|
|
{ 0x24d49aebf997a48fL,0x1d984c67c149ac40L,0x667c1d01576f533fL,
|
|
0x372eee199ef82eceL,0x577723c0c207c14dL,0x4225907a0eed37f6L } },
|
|
/* 0 << 357 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 357 */
|
|
{ { 0xc61db977bc0e0903L,0xbaf6e4da645c32fbL,0xce89b8ca060b1adbL,
|
|
0x41db448188e2c178L,0xba6339f3923bdd3cL,0xff25b818d29db42cL },
|
|
{ 0x3521116ee6d6b35dL,0x4e1bd283b22f16acL,0x9357c984bd79fe5dL,
|
|
0x2eda73be9d45eee4L,0x1a50c59f6288e01fL,0x37baf64975018873L } },
|
|
/* 2 << 357 */
|
|
{ { 0xc552c6c6097f322fL,0xdf59a3028bc06287L,0xc9ed375c19610b0cL,
|
|
0xf0e7b4ebb051dad5L,0x7267a304c6556643L,0x0044f6d8c96dc1d8L },
|
|
{ 0xf0ed5f9af4fc3725L,0xbbaf9f2c9de8e1ffL,0xef5d66f4af5a4b4bL,
|
|
0x0b5bed3d20644cf2L,0xf7e4543a75ae23c0L,0x696f60dc41325b66L } },
|
|
/* 3 << 357 */
|
|
{ { 0x9949b33d2c20f868L,0xdb3aa790b5706250L,0x88ce71e788e17f2bL,
|
|
0xd851baf2da9c0881L,0xe869c5ba86d8c9e9L,0x1af68d65a01425b6L },
|
|
{ 0xeae8b1c69bbd3963L,0xf34900b1ec087425L,0x14942910c374bb96L,
|
|
0x3e13c45705487483L,0xe0e6fad435bc6ee1L,0xc7c38dc7b54d247bL } },
|
|
/* 4 << 357 */
|
|
{ { 0x6d34bdf6ab463fa6L,0x7bb127b60093b9cbL,0x61d051135a3bfdd0L,
|
|
0x4abab575f1296bddL,0x72da68494d2e9a7cL,0x90267bca8d11f03dL },
|
|
{ 0x478111223e9b310bL,0x8ffe91d31b1920cdL,0xec293ec67521898eL,
|
|
0xf0cf026996c1da75L,0xb0dbd4c380f2c7b3L,0xe528175534e4baf8L } },
|
|
/* 5 << 357 */
|
|
{ { 0x7ce1ce36189e2f1bL,0x36ca8fe3fa84ca41L,0x54cc2c13a6a568e4L,
|
|
0x1967d9ed25a6d223L,0xf8d20c88537252afL,0x5a58936cac3d697cL },
|
|
{ 0xa2659671b0084ffeL,0x08a9e041ec25bb0eL,0x6bd405ed4074ccedL,
|
|
0xaeebb470dacb5503L,0x6f18e32bd5448d3eL,0x0412973ba94cd45dL } },
|
|
/* 6 << 357 */
|
|
{ { 0xd72fcc3742fb1cd7L,0xadfb8967c49c359dL,0x6dc988a55935bb0dL,
|
|
0x3fb10981e3080802L,0x12c4494f3be161ceL,0x5a0e22d44b649dd0L },
|
|
{ 0x5c57cbfd62a85259L,0x7ad55b3c0e5ab7a2L,0xcd53564928de30e7L,
|
|
0xce35e6e76867e6a7L,0x626810562f6716fbL,0xd8b4ff26a88d3bf8L } },
|
|
/* 7 << 357 */
|
|
{ { 0x5949ddfa53abe7a9L,0x944a2ae0716f63a6L,0x90961922675d1f43L,
|
|
0x36c41c12f5b55722L,0x85b8250f7782775eL,0x89a3a733748663beL },
|
|
{ 0xd4358450475d2d88L,0x4183f45e1beef8adL,0xee3bfe8b06ec8d58L,
|
|
0x2e462b1609cc4d82L,0xf9cc307ec6148e1dL,0x70d3b2f77b1281a3L } },
|
|
/* 8 << 357 */
|
|
{ { 0xc32730e8dd14d47eL,0xcdc1fd42c0f01e0fL,0x2bacfdbf3f5cd846L,
|
|
0x45f364167272d4ddL,0xdd813a795eb75776L,0xb57885e450997be2L },
|
|
{ 0xda054e2bdb8c9829L,0x4161d820aab5a594L,0x4c428f31026116a3L,
|
|
0x372af9a0dcd85e91L,0xfda6e903673adc2dL,0x4526b8aca8db59e6L } },
|
|
/* 9 << 357 */
|
|
{ { 0xf0467111e854f886L,0xe228021d8dc6117fL,0x07ff954cac432e28L,
|
|
0x373be2ef31d9b69bL,0xaa214d016fd61f0aL,0x27bb7932f950b029L },
|
|
{ 0x1caa914f967c97f0L,0xfb133ec0d548897dL,0x598514173cfad251L,
|
|
0xd41d1da432d14208L,0x446c79f2cee424ceL,0x8b5272a175e839a5L } },
|
|
/* 10 << 357 */
|
|
{ { 0x26b5e85d62f50c12L,0x8418cecf5ff562d5L,0x0d35b4d459be698eL,
|
|
0xd79ca9ee93730d2eL,0x2414d99325627fe5L,0xe31dc5293fc64803L },
|
|
{ 0x5c9100d60d027a12L,0x9004ee36f2208db5L,0xe734b13b135d02bdL,
|
|
0xf905c01a7bc09b60L,0x4eb51557b21b68fdL,0xe6e98bea8c583359L } },
|
|
/* 11 << 357 */
|
|
{ { 0x14dbcf1a61dae7e6L,0x559a7b52ea0da075L,0x7391545d439d10d6L,
|
|
0x187e00e675e617abL,0x453b546b5142355dL,0x9bdbddbc84bca97aL },
|
|
{ 0x742a699591e5035dL,0xcf86d3e1831209ddL,0x6fb66757f5f2a999L,
|
|
0x2e360aeff0e71f2dL,0x6c6f71f2dc97114aL,0xef686b8b17c3a3dcL } },
|
|
/* 12 << 357 */
|
|
{ { 0x7d07a61d13b5ea74L,0x7f4b7157c8afecd9L,0xefce9c89820b0298L,
|
|
0xe85c4510e3888d59L,0x9cd3352001234b9cL,0xba2692c0fef767e8L },
|
|
{ 0xd2bea3d45b3ca353L,0x9ad478e5b51a704aL,0x1fc9bd0d9426f25bL,
|
|
0x52f930bf864a1ba4L,0x559f36353765ff27L,0x548c7f0dae28479fL } },
|
|
/* 13 << 357 */
|
|
{ { 0x6296d54f68b0df62L,0xace420ee9e6afdd4L,0xa20a510dfcd1812fL,
|
|
0x488f113a8cd04a29L,0x1bee07640765cb70L,0x50bb5c446d0f44e5L },
|
|
{ 0x5ea842cb7e320ebfL,0xa6e0c1e6e795a7fbL,0x89cd1f765e7e79c9L,
|
|
0x7436ec1e87ce6c5dL,0x1376222de28309f9L,0x9ed7d6fb7f01548aL } },
|
|
/* 14 << 357 */
|
|
{ { 0x32e9740ae2fb0467L,0x3a7a32b3ec039d67L,0x630d8d346a425a7cL,
|
|
0xc9af74ae418a7dd0L,0xc903576daf502870L,0x7e02b3b7e98cce5dL },
|
|
{ 0x0bfdee7a158f005bL,0x88eff4a363b91d59L,0xf23079728bfe3ed3L,
|
|
0xc75536bce6b1fb4cL,0xf61a82e1a04d46fbL,0x771a8fedfddd52a5L } },
|
|
/* 15 << 357 */
|
|
{ { 0xf5efc82065af5b94L,0xd618a9e8ce5535a2L,0x70cfb112cda6249cL,
|
|
0x6986f00f9f217280L,0x41e46ce605faa951L,0x2abb39f3a3ad613cL },
|
|
{ 0x3e04b28b07671c94L,0x61d323ac53cdaf80L,0x2389875cbb9580f8L,
|
|
0x64800835febb0b34L,0xdaebba99d0d21027L,0x0f1cebfc23288a7fL } },
|
|
/* 16 << 357 */
|
|
{ { 0x51a033a5cecb916fL,0x2ac62f638d7de61cL,0x92eece49a42a266eL,
|
|
0x87e037db82c4d11eL,0x875be1416fbae08aL,0xf348fe26c539478cL },
|
|
{ 0x51f8b907ff94c01eL,0xc46cc0e019695a9dL,0x2c74bd666c51b9c2L,
|
|
0x635d3d24ee565de8L,0x6bd656638982c8c3L,0x5c345b79daf6a93cL } },
|
|
/* 17 << 357 */
|
|
{ { 0xee7265ee93f081dcL,0xe8f90a6be03493f4L,0x4e8d10275328b0b8L,
|
|
0x13bb82bb96fa0930L,0x764c2915d1f7d5a7L,0x1896c78f73476481L },
|
|
{ 0xe9a34ff267873b76L,0x8a9a719cfa0afda4L,0xce93d4cc9ccb715aL,
|
|
0x9ba00f011495d1ffL,0x3131e6666df0e119L,0xe68e1815c902ac6bL } },
|
|
/* 18 << 357 */
|
|
{ { 0x0ce4ae1044f4a2dbL,0xa8645e2310bcc5c6L,0x6d9728b5e489762fL,
|
|
0xd365c12a9d46ad88L,0xedf484fee1a527aeL,0xfdf5c519e5be2bb1L },
|
|
{ 0x4706cc2870a3d4e3L,0x07c60129065f1506L,0x42e2e16478298553L,
|
|
0xa56a2bd5bae646dbL,0x893bf45c61437e62L,0x97dbf9266c525900L } },
|
|
/* 19 << 357 */
|
|
{ { 0x65c56764b52213c3L,0xa171ba9d97aefe9aL,0x5904e8c934336916L,
|
|
0x727209b6ff187f05L,0xaf4e50525cb68a5bL,0xb46a6abadc4319feL },
|
|
{ 0xfd48d0d57890cd90L,0x5b0b68c7252942daL,0xc41023352b01887bL,
|
|
0x582251eb5ad09a7dL,0xbd79b557e1312726L,0x9f5ee3788057db5cL } },
|
|
/* 20 << 357 */
|
|
{ { 0xa30486a6666fdcc5L,0x5cb7f7ce84056f89L,0x0f8a6b96505636a5L,
|
|
0xfeafdf97c6624ce2L,0x9dade91c55b8a7d6L,0x3d009219ca2b459fL },
|
|
{ 0x483549845a969337L,0x37d57cbd323c09adL,0x32a91e91e74b9e74L,
|
|
0xdb4f18ff1c317c24L,0xf9f0daf342418667L,0x735a1eb946946667L } },
|
|
/* 21 << 357 */
|
|
{ { 0xb395bfd1c8eaa54bL,0x8181d6262ee25219L,0xf4bf437b38d912f1L,
|
|
0xf9f1161228a8b32eL,0xe359adacc2be5c61L,0x71557ea2971b60c9L },
|
|
{ 0xf071404b1b00cf1eL,0xb163c3608da3141fL,0xd9dedc07a8d51d98L,
|
|
0x29e89ac5ac827b74L,0xc38cef633ef35dfbL,0x9abd281097d477f1L } },
|
|
/* 22 << 357 */
|
|
{ { 0xb34e560f0e6d9646L,0x4fc05a0dc0ba033fL,0xc9f5e040ddc1bcc8L,
|
|
0xf723b78ab92068cbL,0xd558f5912b5c7030L,0xb16bdec774ed778bL },
|
|
{ 0xc12aacc3b32980e0L,0x856e90411daaa32cL,0x34f7a28596429db4L,
|
|
0xcc2c61ea415dcd04L,0xa0e192cb46b7d996L,0x5b7c845d55d87ce9L } },
|
|
/* 23 << 357 */
|
|
{ { 0x9ba0a26fc0ee684eL,0x1b871ac353573254L,0x76a094bc5783e706L,
|
|
0xe78bea66dcc01e8fL,0x7e20c5aedfb74e56L,0xbdc5314a8710f0e6L },
|
|
{ 0x2bcc7a0085f2233aL,0xc58dd45b8aba1575L,0xdd1c6b78e411b6d8L,
|
|
0xbb8d19529d23d2eaL,0x5293f3cc0066c9cbL,0xb7d0d7b0249c6d93L } },
|
|
/* 24 << 357 */
|
|
{ { 0x68fe359de23a8472L,0x43eb12bd4ce3c101L,0x0ec652c3fc704935L,
|
|
0x1eeff1f952e4e22dL,0xba6777cb083e3adaL,0xab52d7dc8befc871L },
|
|
{ 0x4ede689f497cbd59L,0xc8ae42b927577dd9L,0xe0f080517ab83c27L,
|
|
0x1f3d5f252c8c1f48L,0x57991607af241aacL,0xc4458b0ab8a337e0L } },
|
|
/* 25 << 357 */
|
|
{ { 0x614c4bc273041ddfL,0x4fef1cf6364135aaL,0x2c9ac204ecf0e610L,
|
|
0x75a302a991a6dce1L,0xa5899c96651ec9f9L,0x6c5384f64bcad1a6L },
|
|
{ 0xa41012e560f705ebL,0xfcf6512235e85d67L,0x2fdcfc235ced3638L,
|
|
0xf834fac02deac34aL,0xf5a64ec510a8ad80L,0x843855e1a412c4feL } },
|
|
/* 26 << 357 */
|
|
{ { 0x440dfebd76ca517aL,0x79924057c577eb59L,0xf1aea290d038a921L,
|
|
0x77afb37fb0c95974L,0x48a5b9a715763d44L,0x713de85155c8683eL },
|
|
{ 0x250e8f8239d7e1deL,0xc5f1f61c8a2c846bL,0xf26ea6f9faafd017L,
|
|
0x8ad26055f9d7cd35L,0xc980ba773b2df598L,0xe23b7eabd5e299a3L } },
|
|
/* 27 << 357 */
|
|
{ { 0x5d37811464744605L,0xfab096990278c1f0L,0xc4d32b208448c344L,
|
|
0x767a24d2d7d1df17L,0x842de148773ea0fdL,0x73d7dfbdff6e40b4L },
|
|
{ 0x3d61439283576d1cL,0x4820c435ec865519L,0xf99e84dd6bfa5e48L,
|
|
0xeb18687a9d0d2adcL,0xc3b7369da7fd75d2L,0x7e332b5739f5f093L } },
|
|
/* 28 << 357 */
|
|
{ { 0x0796a8b6ec13d2acL,0x19036c255677347dL,0x2f0d36eef527c827L,
|
|
0x7c8a3d17ca61ed60L,0x3920bc68748cf7c2L,0x61835bdf9018b300L },
|
|
{ 0x9cf595c1689d5826L,0xdc547999fb51aea5L,0x11bb04120fc297c6L,
|
|
0x88770df2b2f9fe0eL,0x99e031f5f6856a85L,0xbb59e8c7afe29c50L } },
|
|
/* 29 << 357 */
|
|
{ { 0x714e784820dfc5f8L,0x35cde8ae2a2265bcL,0xf6b29ce4bfc32fecL,
|
|
0xbd5e91f1918043a5L,0xd3766f8b60f8c218L,0x273c41935298904cL },
|
|
{ 0x0a76492d5d441fb5L,0x99cb3b1d164d9275L,0xb2be87c80ac7935eL,
|
|
0xbd1a1b3f0962981bL,0x8a0c207b96d0df2dL,0x1bb1e505929752d9L } },
|
|
/* 30 << 357 */
|
|
{ { 0xa574de94621b2705L,0x0d0ca1b73e3f2227L,0xbdc9ddf2e49bc2d8L,
|
|
0xfbc7254309d314f0L,0xf5900cbb827e0b1dL,0x3994eadd8a7e8164L },
|
|
{ 0x2e7949793046f170L,0xde21ddc3c6883cc6L,0x9ea19d34bcd40da7L,
|
|
0xb4334df8f01a9ae5L,0x801496ebce8c53c7L,0xc2a5e8527a4b0601L } },
|
|
/* 31 << 357 */
|
|
{ { 0x435a6c512ecf62d2L,0x757cd8f6559a6a0cL,0x47833f815e4c0d40L,
|
|
0x2d0b48047d960c6aL,0xf5474833473d5eb3L,0x70264154bf756b52L },
|
|
{ 0xcc46e58d940bfb7cL,0x2e0dd3a69c89d48aL,0x483f3ee19387df66L,
|
|
0xb3097da4585d3600L,0x82d64b4d76411ef9L,0x0df7d95719682e87L } },
|
|
/* 32 << 357 */
|
|
{ { 0x179c59cf210c3144L,0xfb613c5733eebbc4L,0xdda75cfdba0cf384L,
|
|
0x94081a5b3a8fbafaL,0xb91de90a33384e0bL,0x7d1f8f4027aa2a45L },
|
|
{ 0x0747bcc162031148L,0xd2db8e39f324160bL,0x9c1ce3e9722484f0L,
|
|
0x13a7ee5da62d1ddaL,0x77fd79343a963bceL,0xcd3d871783d2f21bL } },
|
|
/* 33 << 357 */
|
|
{ { 0xc7c8eedc93a27196L,0x0832b0dfa8abe585L,0x31fe11e8d8adfb86L,
|
|
0x1091601e9d50e4c7L,0x7931a284ac3d2ca4L,0x0f1464b6f3fc6641L },
|
|
{ 0x2ead94f3260f29a7L,0x914b8396d88a7696L,0x950be4bbe73d807dL,
|
|
0x26d0115e5b3ad83dL,0x3de8a73146c22525L,0xe50825dac5fffff1L } },
|
|
/* 34 << 357 */
|
|
{ { 0x716378cae4b98aa8L,0xacf8d67b59b746a9L,0x78f0b5eca65ce8ebL,
|
|
0xe5997983523cfa35L,0x85bf5badbeba89e3L,0xc8052bbfcfd73b41L },
|
|
{ 0x0b3d77139fb311a3L,0x821a20e2d96f696fL,0x0f087e5744657c9aL,
|
|
0x72031f281ecfea36L,0xd0765f333f32b010L,0x0412c69929c48643L } },
|
|
/* 35 << 357 */
|
|
{ { 0x53d361b89f501481L,0x8970937717153c6fL,0xb52280b916bb8d8cL,
|
|
0x5985cdc0b33dabd6L,0x35ba0cd9dca8ae72L,0xf55c6e7301bc4efdL },
|
|
{ 0x2106ed2f269577c4L,0x4cc34291bfe765b4L,0x9f4168ea812eb958L,
|
|
0x02869228999ba5cdL,0xff91540d3ab27498L,0x9020e6e158e55a79L } },
|
|
/* 36 << 357 */
|
|
{ { 0x1a5b15377f1c7cbdL,0x5b31930b7cc17c56L,0x5b91e1a492cc8cf5L,
|
|
0x970e43deeca08bdeL,0x36424bfe0e2e963bL,0x2e49534968b1a489L },
|
|
{ 0xe350ca52d8e85a9aL,0x3cb9f599ae2cdd7cL,0x0ff35a0aa83215ecL,
|
|
0x64cf57b81973a966L,0x128be6cd36b26702L,0x8067afbd5f65f7bdL } },
|
|
/* 37 << 357 */
|
|
{ { 0x23d1f49215876c71L,0xafb21c1d41e7495bL,0xdb3ab62c2705885dL,
|
|
0x20ff803f7ba216cdL,0x26cb190699c9ee55L,0x8280dc9c0fb05389L },
|
|
{ 0xadf55171df1020dfL,0xc044e9bcbd011b5cL,0xe21aaa60cbed2430L,
|
|
0x5939fe583336df4dL,0xfa306816ff78c665L,0xba92ca8243eb18f2L } },
|
|
/* 38 << 357 */
|
|
{ { 0x6f05e6241b7edb64L,0xc280105b6681f48fL,0xd1b94413f993dc9eL,
|
|
0x84f24c01e46de412L,0x092017d54abbf7dbL,0xb73193a56f7b1b08L },
|
|
{ 0x22a7c5765195ae46L,0x81dd6b12610c28efL,0x61959874ad7bfcc1L,
|
|
0x3ade0a77d15f8cf9L,0x124cef4d954db624L,0x0733bd7a5c247650L } },
|
|
/* 39 << 357 */
|
|
{ { 0x52d7f9ddf1cee098L,0x538b7fa17a6a2ad1L,0x5f2294312911e75aL,
|
|
0x71c337b7e6ef0271L,0x5e278a1267ee72d1L,0x7b348c756f33fea9L },
|
|
{ 0x7bb59f1a694bb928L,0x5783e43f292b258aL,0xe3b53ca77181f1d2L,
|
|
0x028ba90e051c7d2eL,0x4bb06f9364789d76L,0xcf97fc4da228a7a7L } },
|
|
/* 40 << 357 */
|
|
{ { 0x3dbb3fa651dd1ba9L,0xe53c1c4d545e960bL,0x35ac6574793ce803L,
|
|
0xb2697dc783dbce4fL,0xe35c5bf2e13cf6b0L,0x35034280b0c4a164L },
|
|
{ 0xaa490908d9c0d3c1L,0x2cce614dcb4d2e90L,0xf646e96c54d504e4L,
|
|
0xd74e7541b73310a3L,0xead7159618bde5daL,0x96e7f4a8aa09aef7L } },
|
|
/* 41 << 357 */
|
|
{ { 0xdf5c2fa79111caacL,0x493ada25b04d2b3aL,0x5c4850bfa39a7872L,
|
|
0xbeae16c067e07e93L,0x63bd7d390178358dL,0x7a7e56a1cfe0bcd0L },
|
|
{ 0x9ba7a4500816b666L,0xea6c70c8dae070dfL,0x84013756832c2b35L,
|
|
0xa28e5dd08d3e9fc3L,0xd67665aac653c08fL,0xee54d7b6aa6bdff8L } },
|
|
/* 42 << 357 */
|
|
{ { 0x99b870afadbd24baL,0xb34fa9083bee289fL,0x4a20f29bae836fa4L,
|
|
0x4188ed5024b464c3L,0xfb93f48fc6c00297L,0x334b8689736186ecL },
|
|
{ 0xbf7f1c424e1016f1L,0xf95e6e59413ca088L,0x5878156c288912d8L,
|
|
0x9e99199704c7ce69L,0x0f0c185d5d6520d1L,0x1ed2ece33fe6f498L } },
|
|
/* 43 << 357 */
|
|
{ { 0x319fb249607cfd40L,0x5920056f62b40e28L,0x9ab4528058631ab5L,
|
|
0xb527738f413452d2L,0xb2885e46b296e602L,0xb1dcf41a74824807L },
|
|
{ 0xca9d2b06b2ad2fc6L,0x500c5f11ad05eeceL,0xca94160f21f3db6aL,
|
|
0x693adf4e262470d6L,0x1f4c62c5480b0cffL,0xb3ebf11f54c748e4L } },
|
|
/* 44 << 357 */
|
|
{ { 0xc8ae4d2bb4ef93b3L,0x4967da7b99758d99L,0xd1483a1fe04db9baL,
|
|
0xf5e657df3033474dL,0xdd9371c89db4b96fL,0xb5f288956044b259L },
|
|
{ 0xe8987a43b2ec27bdL,0xaabb1ae68fce67bcL,0x4518fa3eb2b97680L,
|
|
0xa0142a13748591e1L,0xf9148ab96c2db557L,0x65592253e0e4f9e7L } },
|
|
/* 45 << 357 */
|
|
{ { 0x21163809bccf41d8L,0x0eafed515b3f09d1L,0x3b5360d9d84b27f6L,
|
|
0xee752fd04411d37aL,0x1cea3b5c6a3f5027L,0xb206e74d9454d9f6L },
|
|
{ 0x710715dab52af43dL,0x8175ca136e6c6463L,0xbdb123d39689144dL,
|
|
0x569e6edd4d9c459fL,0x070f09a4f02e5b25L,0x691c23ef3d79a7b9L } },
|
|
/* 46 << 357 */
|
|
{ { 0xc0c94165781356cbL,0xcb9fb705876a839bL,0xfe23f07e89db25feL,
|
|
0x710f0fa3a52cec3bL,0xb0ab363073e0f037L,0x3b79a8167c9aa037L },
|
|
{ 0xdbc7f83ca1f13fe1L,0x8bd910c63d653a81L,0x2e54ad408c78d003L,
|
|
0x0de02157a3e9ccf0L,0xe9081e8bf7670dfbL,0x6a2ad476c8647bc8L } },
|
|
/* 47 << 357 */
|
|
{ { 0xaf58106ebf047836L,0xadc3245e195e5675L,0x75612e175290e051L,
|
|
0x27b81bd869d46bb9L,0x9d4dad5b5417b5faL,0x19850d70fd024259L },
|
|
{ 0x987daa604b0a86b5L,0x5d5a5f9c0358a944L,0x9008682f48d2ff67L,
|
|
0xc9db4d4b89e81cf9L,0x133516bc850eaae4L,0x0b5bfdc81da8bd19L } },
|
|
/* 48 << 357 */
|
|
{ { 0x609deb162d8bcd6eL,0xe42f23a92591750dL,0x4a9f3132b378305cL,
|
|
0xf101799869275f5eL,0x14be746761b089b5L,0x05f620d20c81b0c5L },
|
|
{ 0xca90a9c06cb8412eL,0xfe0f6a8915b1b0d5L,0x1b25ac9620c71988L,
|
|
0xb971b61a390aedd0L,0x995214d779d8cd39L,0xd7fa135b65c6e11aL } },
|
|
/* 49 << 357 */
|
|
{ { 0x5aaa98f875330325L,0xc900a7781f3541a6L,0x69bcf864174a3200L,
|
|
0x3abc5ef71c46b3e2L,0xa53c9e4e47851b97L,0xc166a4e22acdc42eL },
|
|
{ 0x49e4e6fdb19b4678L,0x4fe02cb162b7da19L,0x575c61a6633153feL,
|
|
0x49578b28a4f83b70L,0xc6840d063737532cL,0x93047d40480f55b9L } },
|
|
/* 50 << 357 */
|
|
{ { 0x835be7417d930332L,0xa4d001bb2cd86fc4L,0xef141e30a6e3a24dL,
|
|
0x4047620adc328d2eL,0x5c80a3bc9a5f1f12L,0x6cde5e4ca19b423cL },
|
|
{ 0xcdd5d7773ba0fa5cL,0xb96dbe62ea85c28eL,0x963c02245c804896L,
|
|
0xb2a581abe5dd6b98L,0x28a908a2abc8dac4L,0x5834b212985fd18fL } },
|
|
/* 51 << 357 */
|
|
{ { 0x02757b1f0fbe0c5dL,0x2d0d05a854ef99e2L,0x2bda526d0377ffa0L,
|
|
0x58ca8b08925985afL,0x1fb7dbe727b69722L,0x322d7db5f1c57fe5L },
|
|
{ 0x4049c8bcfdf111f3L,0x0b4712974148b027L,0x34fcb1e58782dab0L,
|
|
0x697dc9431665557cL,0x3ae30e2844659ba2L,0x479dbc2f118e7417L } },
|
|
/* 52 << 357 */
|
|
{ { 0x10b10d86227e8607L,0xe83536281d1be36aL,0xe34068f9d952b0e9L,
|
|
0x148eeb38fdb6ea99L,0x82657d605547e7ebL,0x9c35dc82a86155eeL },
|
|
{ 0x408f79262060a81aL,0xf2a79205a6282e8aL,0x10dbb58526e70e7cL,
|
|
0xd636f8225df85d6cL,0x03202c027682b922L,0x31323940baf18500L } },
|
|
/* 53 << 357 */
|
|
{ { 0x5882374401879796L,0x068943ccd1249281L,0x20dec1c12e1d6effL,
|
|
0x5f4c2c070bdddecdL,0xc56d52b37ee724c3L,0x93bc2c7a559e25ddL },
|
|
{ 0x0c95d2e5f98a9940L,0xc570e96ada60a809L,0x94c4a964076233eeL,
|
|
0x843c99627dbbc526L,0xe4075129d4cdc652L,0x0afff70561cb2698L } },
|
|
/* 54 << 357 */
|
|
{ { 0x3ec1e3a5f607f893L,0xd476dd24054aaa8cL,0x2cb92280a93488abL,
|
|
0xc8d1207710d1dc68L,0x564839b9bfb494e6L,0x7a13930ceabdfe56L },
|
|
{ 0x52f72a9724f9b183L,0x30ae4bc87e9c6fc3L,0x3d7d2765f35b8e6cL,
|
|
0x701f3d89a665ba55L,0x98f2fe85c466111bL,0x338073600c1c0dadL } },
|
|
/* 55 << 357 */
|
|
{ { 0x7dd106bab3a48d42L,0x7eac4690ebfc75aeL,0xdbf3547e68ef4ea3L,
|
|
0x3629c438a1a5faa2L,0xac2aa55e653bfd97L,0xae5cc39752c3b8f9L },
|
|
{ 0x117380552853b626L,0xd5a955f224a0dfe2L,0xc4356ca25940233eL,
|
|
0x73f7eda97994aedfL,0x2bfa76c693b185d9L,0x091cef91a0327108L } },
|
|
/* 56 << 357 */
|
|
{ { 0xa8393a245d6e5f48L,0x2c8d7ea2f9175ce8L,0xd8824e0255a20268L,
|
|
0x9dd9a272a446bcc6L,0xc929cded5351499bL,0xea5ad9eccfe76535L },
|
|
{ 0x26f3d7d9dc32d001L,0x51c3be8343eb9689L,0x91fdcc06759e6ddbL,
|
|
0xac2e1904e302b891L,0xad25c645c207e1f7L,0x28a70f0dab3deb4aL } },
|
|
/* 57 << 357 */
|
|
{ { 0xf5dafec85f102704L,0x2f3b6b6929f5b946L,0x84472c029d4c9979L,
|
|
0xed49f3e6341f0150L,0x3ee3432eb3bb085fL,0x84c553183cbac42eL },
|
|
{ 0xbb358bd9dc4c7ffaL,0x0713917d2db356ccL,0xc73e9fd0670c7139L,
|
|
0x87600c4c3581108eL,0x2ae731d7586af51dL,0x30630ad6614c126eL } },
|
|
/* 58 << 357 */
|
|
{ { 0x15f8fba7712c0edfL,0x4a1f93baa2c363ceL,0xfabca37e8f2948a4L,
|
|
0x652922e4dd765560L,0x2da78559220cb98bL,0xb797746a54b940c4L },
|
|
{ 0x8535fcfc591bb7faL,0x58857815c25376e3L,0xcd8db789da627557L,
|
|
0x718072ca318512b7L,0x92266469813efd94L,0x3217649aafa85382L } },
|
|
/* 59 << 357 */
|
|
{ { 0xd517b39e51c4bf28L,0x6614c16261f583a3L,0x79c72f414739ea59L,
|
|
0x597e1c2ff76e80f8L,0x3a72b05e7b846f3aL,0x1849e5126c0a45a2L },
|
|
{ 0x79a6ea5b9d506d83L,0xc48e570219b7f46eL,0xc89c5047c524bb48L,
|
|
0xafc1fdd99cb88cfdL,0xb07eaaa0b82056e6L,0x60f6544f05885df8L } },
|
|
/* 60 << 357 */
|
|
{ { 0x9894ef75f39e2738L,0xac585d07b40db6ecL,0x07d9e938c4cfdb92L,
|
|
0xda174933737f1a7fL,0xa4f1fb65484031a6L,0xa96d9f612c21b546L },
|
|
{ 0xaf981519d24ccee0L,0x238de6de9d53b571L,0x09afc481fd78c3ffL,
|
|
0x4351715d9ea7f6fbL,0x91a02325b14a7320L,0xcd8958d8bbb6346aL } },
|
|
/* 61 << 357 */
|
|
{ { 0x22ef4217452ae6a0L,0x3192309d9ced837aL,0x773585ed2ba43ee9L,
|
|
0xa9b29d94f3379e81L,0x43838b3aa6835e44L,0x1afe27ab0c7b2336L },
|
|
{ 0xca1dc61683ecd230L,0xc9e8b95e6d235df5L,0x9667829b2af11adeL,
|
|
0x27254b0fbe532148L,0xb50bc3c86d233f14L,0x30e0e450bb35d985L } },
|
|
/* 62 << 357 */
|
|
{ { 0x8b3f79087b95cf32L,0x67c654b06272c619L,0x61160a9d22c0f46eL,
|
|
0x1cce95721d2e36ccL,0x62bd951d3990db3cL,0xcf0005c8d9700d14L },
|
|
{ 0x304aff9c70116120L,0x1c919dd2b08d57ceL,0x841b058ec0c0c0b0L,
|
|
0x7cfd4deb7af05aa2L,0x4fbd13c57b11ce5bL,0x03e07dc9f8259bebL } },
|
|
/* 63 << 357 */
|
|
{ { 0xe9b37f569d0703e0L,0x7b5e0df5f83c215bL,0x7fbb40f0d3c21efcL,
|
|
0x87a2ff119fb33620L,0x208b062bd1176635L,0x806bc549950d30efL },
|
|
{ 0x862de3a4ae2bf355L,0x917b06bacf9ef6e8L,0x55f1ec4cadacc178L,
|
|
0xbcd679fc81d752fbL,0x9404d6ce65a00270L,0x25ce99e6000c6e1fL } },
|
|
/* 64 << 357 */
|
|
{ { 0xa13f19b40f3ff12dL,0x57ee08b1019564aaL,0x00ec0c997044a6f4L,
|
|
0xaf5665f8dca1075cL,0xded5ca3f0620ab0cL,0x9b2cb8c7a896deffL },
|
|
{ 0x032ab2b307df2345L,0x964d109ef1da3f88L,0x2286b6f725133304L,
|
|
0x0d16d531977a4567L,0x00a66036f1abae4fL,0x5debab1d95f0103bL } },
|
|
/* 0 << 364 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 364 */
|
|
{ { 0xf2cdae3196230a58L,0x47cf36b4f304e1eaL,0x9d14f25ad750b29bL,
|
|
0x931b9c65dba15f3eL,0x34db169ebf9fe2ddL,0x8a89e47c52663433L },
|
|
{ 0x8859a4f8026ec31fL,0xeeb703eaa913ceeaL,0x74638d6a67ac4db7L,
|
|
0x5c8ea7b2be25d755L,0x8a0f0a8738db10eeL,0x96a26bace890bcd3L } },
|
|
/* 2 << 364 */
|
|
{ { 0x883533af64a5e869L,0xaaa778c26973ec23L,0x8f0b5fb546d0fcf3L,
|
|
0x7e6b0a0a4ab05da7L,0xcd91a869c67b6614L,0x7de9f2ff6c6f7cf2L },
|
|
{ 0xc072a106d1ec14c3L,0x3f4b960642a128eeL,0x7378192c8f0ce946L,
|
|
0xdf2e7b9fd1149441L,0x4fa17cb614ccf45aL,0x575680e945f03568L } },
|
|
/* 3 << 364 */
|
|
{ { 0x0f4ca7803374f910L,0x5948ae98fedc5b5bL,0x4873625b4ef805afL,
|
|
0xbddba22fc015c586L,0x7091b50aa41a8c93L,0x721dd3384c005f42L },
|
|
{ 0xf43d37462065f41dL,0xd16bae3e172512b3L,0x3efca10c8277068fL,
|
|
0xd0c25d7b77513f00L,0xc0015cc12dc3af9bL,0xdf11a4ec94c6cadaL } },
|
|
/* 4 << 364 */
|
|
{ { 0x8b70e94f8f458c68L,0x292726544160ecc7L,0xe22219ba4d3ef22fL,
|
|
0x7f8a712a1999f948L,0x25575e96abfe7302L,0x21c6ffc6564a1af0L },
|
|
{ 0x045e9c667e8500daL,0xef7c3cf704ef8ea6L,0xdd23b825c3db161aL,
|
|
0x05fb173aba33a906L,0x9a8b5ecb870e41f2L,0xf3d9db0bccc30d1dL } },
|
|
/* 5 << 364 */
|
|
{ { 0xbed7d94ca1bf2c8cL,0xbb7f437cb8b719ddL,0x65416af6106834bfL,
|
|
0xdade8a144c4f7448L,0x62227a1d881dfc06L,0x37bc7de58dc2b7bcL },
|
|
{ 0x4f11541712ce030bL,0x72439d8ac2a9e0d6L,0x98cc53aba0f1b961L,
|
|
0x2f68011d48b0ec8eL,0x4bbc34679c72d034L,0x0320c1469c576e38L } },
|
|
/* 6 << 364 */
|
|
{ { 0xd9243926e873ff0fL,0x2e2a5ab6f20b0e49L,0xa1bcfeee0e35f201L,
|
|
0xd25be5f3196f23f3L,0x298c67f2ffc1d068L,0x77dae55c0c3d950bL },
|
|
{ 0x5e15ab998822c996L,0x52de2e6d83f60a98L,0xa9f82ec947a7e269L,
|
|
0xf02af9a22ac22e49L,0xdfb3103fa706f090L,0x125599623cf8dcb0L } },
|
|
/* 7 << 364 */
|
|
{ { 0x9f5f44fa666e278fL,0x53c88803f5582c78L,0xd7e8f258f9627f9cL,
|
|
0x22499dc938fd51bdL,0xa9d7497c846a4a79L,0x791b8ead026ae250L },
|
|
{ 0x84d47d19db15ff63L,0xb58a82c0267b44b5L,0x9b2f138806a52e30L,
|
|
0x3fc8da027f08953fL,0x22d074d292fcac08L,0xb9c7c3db701d73fcL } },
|
|
/* 8 << 364 */
|
|
{ { 0xb7b8562588ad12b2L,0x81f5958b1e44b254L,0xb4ebddd5c91b8ffdL,
|
|
0xef815ae155d38511L,0x98587d551b0da525L,0x1d41817734a9ebbdL },
|
|
{ 0x844811fb1e6057d7L,0x0c16977176e5976dL,0x4b268bb4f623789bL,
|
|
0xb26ae5be40498058L,0xb47a5ded3c2b435aL,0xe15a684b8fceceb3L } },
|
|
/* 9 << 364 */
|
|
{ { 0xd55407583353db48L,0x0e334ccac0c0b5e9L,0x679a935f270c48d3L,
|
|
0x170693e436ef0e90L,0xc72fb12f9de59023L,0xaae13a0e9371697cL },
|
|
{ 0xe98ed704d8d56e4dL,0xc6de5384eb71f091L,0xba63adccc6d905a8L,
|
|
0xc84e614d66e40dd4L,0x15dcf1a3fa0f55e3L,0x4e26ee3af157c7a1L } },
|
|
/* 10 << 364 */
|
|
{ { 0x122a3eedd09dc3c8L,0x6a19907faefe0819L,0x057aafa1da325339L,
|
|
0x138033bdd42a5345L,0x8ac206af1a065ebeL,0x0a46f5ae25c31ed6L },
|
|
{ 0x7fc577a9d7e379dbL,0xc6df694369dcee54L,0x4c167ba2a8336bc1L,
|
|
0x0fbd9708f3a1339cL,0xc6b8c01f226f612fL,0x5d4ed789d51332e1L } },
|
|
/* 11 << 364 */
|
|
{ { 0x67ead4e0f6a40814L,0x42fe051ca2ec9ae1L,0xc09f84395eba62cdL,
|
|
0x7bb5ba0c9d8e7305L,0x85962d0db46f81abL,0xc7183752628b18ebL },
|
|
{ 0x7a1f023edf58ec0cL,0xf21bfdbaab6535dfL,0x12add590801d2481L,
|
|
0x1fccd1e37a11520aL,0xf83caddd6fa8f8e2L,0x99e7256c24e58433L } },
|
|
/* 12 << 364 */
|
|
{ { 0x26aa2c2e5a1abcd8L,0x2b16a12e9609d9d8L,0xe485a551a2bee00cL,
|
|
0xfa28c30bf4f2292eL,0x99abef78b7358f1bL,0xda6b3cdf10a276a1L },
|
|
{ 0xbd3858b747c03f71L,0x4f0bf5f0b22d05d1L,0x2d80f5d28250f760L,
|
|
0x060f9b278cd9666cL,0x6a6c40b0b1b014a9L,0x44537af38c440a9eL } },
|
|
/* 13 << 364 */
|
|
{ { 0xce1c070a2275263dL,0x2723b3d149cea971L,0xedca02f5817001b6L,
|
|
0x5c160e9349c946e4L,0x273b4952458a5265L,0xc7bcd7c610385173L },
|
|
{ 0x22cddfd17fb08b14L,0x959d5dfe10f73d01L,0x900f5f348e387351L,
|
|
0x6d7381dfdadb8695L,0x8dff2b193aeafba6L,0xe4a8d6bd8adadc36L } },
|
|
/* 14 << 364 */
|
|
{ { 0xb564cfd676faaca5L,0x8a6e3925920dd223L,0xee59a140a590a383L,
|
|
0x9e29b552a1922ad9L,0x604367de60a0da63L,0xc498aca592c35fd0L },
|
|
{ 0x74135082250ed8a0L,0x5d109d1a6c7c3e77L,0xf9e2d84dc63dff94L,
|
|
0xca50f5e4f7aa2b0eL,0x7cba9e87d543d389L,0xaf5fbbefd8fd1292L } },
|
|
/* 15 << 364 */
|
|
{ { 0x3163e2e895bcc345L,0x4ceaaf2d80d9a931L,0x4d2dc44b2f621612L,
|
|
0x2a5f60b86cc8ffd0L,0xf49038cf7e8c9434L,0xb580b8c508015b8fL },
|
|
{ 0x4283ec01d52af80bL,0xac9dc35f99076245L,0x38785f7bd64c3dd8L,
|
|
0xca19c17623bf8915L,0xd778291370478260L,0xc1e48e6816e34149L } },
|
|
/* 16 << 364 */
|
|
{ { 0x707656834fc11c3aL,0x53a9403166aac4d1L,0x2a935ef0a6db6169L,
|
|
0x002927612032d599L,0xb5babb2d3a6f1316L,0x601a7dfadb26af51L },
|
|
{ 0x00c340131322d983L,0x45b062ec2bb507c5L,0xa1bbe2ed0f9b3656L,
|
|
0xe17a5d4934031d18L,0xe3661047f8fe1224L,0x0e4f3b3d623c6cf5L } },
|
|
/* 17 << 364 */
|
|
{ { 0xb335d83c7c3b8c3cL,0x01eb94f059359a67L,0x3a8359a6aef3ffa0L,
|
|
0xb0270076ecd2d862L,0xc946b1610377e30eL,0x9a5506c282bd6ae1L },
|
|
{ 0x737bdad0218512dbL,0x449238633487fb13L,0x36026dd12a8e7907L,
|
|
0xb67bdc80784811eeL,0x9f92cc2405c90646L,0x02c551554c370746L } },
|
|
/* 18 << 364 */
|
|
{ { 0xffaac084ca45cccfL,0xaea5cc3d061ffe3cL,0x7c5d7c60b355f387L,
|
|
0x4bbb2a0c99cba92dL,0x6b4ba3ef2f7768d6L,0xc7484ed2cc5f9c40L },
|
|
{ 0x5d4e92fc52b57a7eL,0xba9f16c4ca2c200bL,0xebe02a8a3797ccbaL,
|
|
0xb6b3f42138c4133aL,0xad5d85b68153d033L,0x782d6ee85714f269L } },
|
|
/* 19 << 364 */
|
|
{ { 0x4654991087f226ccL,0x97894d5fc7bfffcbL,0x94f67786b3cabb83L,
|
|
0xa6abaa960d788dc4L,0x08ae72d61723738dL,0x5003f41d86704dfeL },
|
|
{ 0x67687c3d40fb0a3cL,0x6fdc98c9b43320aeL,0x0f22572fdeb08964L,
|
|
0x05bb02a4c8002624L,0x4c5adb7f987c2991L,0x3f1c6dddef4e60cdL } },
|
|
/* 20 << 364 */
|
|
{ { 0x7845b6969c0cf752L,0xb82d052b5a732acfL,0x7760564c1262877bL,
|
|
0x29b3c57a8ecc7aa5L,0xb58eccb0df1ebbedL,0x86fc15443c3a3303L },
|
|
{ 0x44761ddf13060f0eL,0x5a3dacfd7371a5a8L,0x846f6faaf7cbc2bcL,
|
|
0xf5e098b0368caabfL,0xe23ea10710c08769L,0xbc5df1db1563fcdaL } },
|
|
/* 21 << 364 */
|
|
{ { 0x75647f6476638edbL,0xb76ceb04aad6e25bL,0x33c73367d9393a41L,
|
|
0x8396726dc55f0feeL,0xe1cbd48e751b3d43L,0xb779c5bdf47141a3L },
|
|
{ 0x122b85434eab6097L,0xeabacf45e08c6fa4L,0xdb32eab7769f49cfL,
|
|
0xf956976a04ac2cb4L,0xf55c6fcb5ea8e71aL,0xd72940dfbad47ea9L } },
|
|
/* 22 << 364 */
|
|
{ { 0x65c3a54e142d8955L,0x5c6583cce7814f25L,0xbd5a07d8d924dc7dL,
|
|
0x9f717bd9c28f6e8eL,0xa0c4ec4e3b6540a7L,0x3153bb2b142b3283L },
|
|
{ 0x53bf403c9b296946L,0x659a828ab1cdb6d2L,0xe9517d811369af19L,
|
|
0xd8c7a0998990e7a0L,0xbaa9f59de535cd04L,0xbb0cc68e0f269551L } },
|
|
/* 23 << 364 */
|
|
{ { 0x2b4a0e69d0cd5fc2L,0xeb8dd25981167a94L,0x356198ae61b73503L,
|
|
0xb159ca12e5289d45L,0x99d71c97991765b5L,0xce3a3b6c198e10b0L },
|
|
{ 0xcf6ee0bcafbb512eL,0x4aadd1381e19b49aL,0xcf6a9cf3b4806f0aL,
|
|
0x6aff0386ad688bb4L,0xea487c6e4f2e5065L,0xec200f4b56573b51L } },
|
|
/* 24 << 364 */
|
|
{ { 0x3c00ac526a78c6e5L,0x9c61aca6defaa52cL,0x0034128939794a09L,
|
|
0xe08910d141cd7c0aL,0xa58ffbb6a732e3bcL,0x87bf51ab91fe8fd8L },
|
|
{ 0xc4f4f2674a59e2beL,0xdeb512c7438071c8L,0xddf82842e9cd290bL,
|
|
0x3e17311d6ae85fe0L,0x6e9236a9b41be881L,0xbb9ddf9853555ebfL } },
|
|
/* 25 << 364 */
|
|
{ { 0x07d2df1162bb0e3aL,0xe74ce211ce469affL,0x9629d7d4756b5a83L,
|
|
0x61d2a633aefd449eL,0xd39a6afe491e503bL,0x0f1568d14d2b2ed7L },
|
|
{ 0x8216304cd19611bbL,0x6df99bbeb27388daL,0x2b0f60c0b7a3b4beL,
|
|
0xcff84c1c7dadf840L,0x470201e28a9f8a49L,0xcda3693c21afc717L } },
|
|
/* 26 << 364 */
|
|
{ { 0xccc163ea09f3f0beL,0x9932b56f6a5b0a63L,0xf89fae919c69668eL,
|
|
0x555f98215ce13021L,0x4b02693f37037aa9L,0xc4afee79bde50f35L },
|
|
{ 0x4b0919c202aa6c7aL,0x3166de2a991e15e9L,0x284baa3e7077fb38L,
|
|
0xbb7a6416a116ddecL,0xe8c89547b7636772L,0xff9403620ef92c54L } },
|
|
/* 27 << 364 */
|
|
{ { 0xcd183e8bd3ea4c3cL,0xc8ce2f2154b7ac32L,0x75387e04be960826L,
|
|
0xaf878400f2e39f5dL,0x7fcefcd94fa628f7L,0x76eb621c34582cbbL },
|
|
{ 0x44e1f848f29d2496L,0x42aa36174ab4eb21L,0x43cead840c08b50aL,
|
|
0xfa4ecf60dd44f7c2L,0x5ac9ffd59f817546L,0xec11567eabcc594dL } },
|
|
/* 28 << 364 */
|
|
{ { 0xd5d81275e2ce6008L,0xc45bdf250b3b9d10L,0x15ab5da36cbc83e2L,
|
|
0x85a18cf8c52a66cbL,0x77e202b8b042c047L,0xc4dc3de2e7e7997eL },
|
|
{ 0xfe9335b1995fa67aL,0x809e161d75b96a00L,0xfb03c2a5a0c3baeaL,
|
|
0x5c7e0523888c2f77L,0xa8fda1c887ad10e2L,0x90484f78858a3577L } },
|
|
/* 29 << 364 */
|
|
{ { 0xefc5aa2681bf26c9L,0xdbe91f606bf105bcL,0x0d70c4d4369dd3aaL,
|
|
0x2b357b847af9bf66L,0x4293e9a01f27f163L,0xc846f67cb3eaeddeL },
|
|
{ 0x4556bb787da305dfL,0x4ecebf83a5a26bf9L,0x8e05af924c1bc430L,
|
|
0x4f3bdaba70f80402L,0xccaccfd3cf204577L,0x8fdee135a0c42d1aL } },
|
|
/* 30 << 364 */
|
|
{ { 0x49e41f0af9fde126L,0xec9600443613d3c2L,0x2c62a49d10421d3bL,
|
|
0xe24024648131a0d8L,0x8a7ce188bdf794fcL,0x704dea7d4665b1b6L },
|
|
{ 0xbdb9c18e4d57c6baL,0x5288a053f669b3c0L,0xbf7d01b878a5e252L,
|
|
0xb26cccf926b9cb7dL,0x14191a3284326c47L,0x460ff74791f8425bL } },
|
|
/* 31 << 364 */
|
|
{ { 0xb9958c5397698b9bL,0xe1f74292c27f96ffL,0x172b0d50806da6bfL,
|
|
0xaf3d889ddd38b97eL,0xe7a75ea409c688daL,0x1f0951b85c631b2aL },
|
|
{ 0xdad8b2adda1c111eL,0xbacb9cc832813338L,0x30b8336b10582abaL,
|
|
0x0ff3d7549494e71cL,0x8d99be5cd663ed6dL,0x8eb412cf7073a941L } },
|
|
/* 32 << 364 */
|
|
{ { 0x59367582bd27be7bL,0x92bf5bbc1ab2c596L,0x5d96351af6a27741L,
|
|
0xeab94db87f929e0dL,0x865ba011043f1afbL,0x43acea125fb631ddL },
|
|
{ 0x192e0652b2fd1436L,0x44f22ff17b38d121L,0x7bcc228db7cae5f6L,
|
|
0x02eaeccd6a828b03L,0x7c48a2ea91f301aaL,0x1e090717f5eb1a07L } },
|
|
/* 33 << 364 */
|
|
{ { 0x4c7f41b4609c6818L,0x978c2a561c82b3c4L,0x68404f1d7f6ba836L,
|
|
0x91e056d0c863aa7cL,0x0b24599ba2261804L,0x16e9060dcdd7596fL },
|
|
{ 0x42aa49434eff004eL,0xb99408690438f1e4L,0x28299e8581775712L,
|
|
0x498998eb83be6877L,0x84273d9e91328a67L,0xb7e9076e9a87bc8cL } },
|
|
/* 34 << 364 */
|
|
{ { 0xe8d204865e5aea08L,0xaa946076addc7ba0L,0xc0153a9bb6a5cabdL,
|
|
0x622271bd4fbe43e0L,0x44de159cbd62e5cfL,0xefca41112b9b63f8L },
|
|
{ 0x30774d3cf5269928L,0x4fbb7ff84ac0c8b6L,0xe0611f1f8839106aL,
|
|
0x5d4121204ffa4a64L,0x9552c123e86251c0L,0x57d029680efbdb14L } },
|
|
/* 35 << 364 */
|
|
{ { 0xdf3f8e06d7aeacd2L,0x725b25fe4d0e7af3L,0x1794f0da5c17392dL,
|
|
0xabc807dac977ff46L,0xd90e6c8f0d5ca66fL,0xaf8eb526c2d26d49L },
|
|
{ 0x4661962e8a8efa37L,0x2a2cbeade87ad53aL,0xa57d34b1ce3ff40fL,
|
|
0x1190437dc6aa3067L,0x92c31e779db66b47L,0x86a8ee0f8e8a70d4L } },
|
|
/* 36 << 364 */
|
|
{ { 0x7b65bb14de97229eL,0xad6e3fee4c6d35b8L,0xfcbbf6afbee3f5d8L,
|
|
0xb51549ca4a438fe3L,0xe66e615d437d531dL,0x9ee793eabf168624L },
|
|
{ 0x796789b0f8878a84L,0x3d38950dd32ec2ecL,0x74c37196a638d45bL,
|
|
0x35d318327aeedaf0L,0x082c44f046a001e5L,0x93fae5cf89886220L } },
|
|
/* 37 << 364 */
|
|
{ { 0x8e585fea499b635cL,0x60afcb3566781e83L,0x06594d9267482257L,
|
|
0xb9f6101128773448L,0xba9ef7102817fd2aL,0x494e05b2aad046c8L },
|
|
{ 0x65d804fc1614e265L,0x1b0884c6d97fe002L,0xd7d34f60875bcc2dL,
|
|
0xf34725444b440852L,0x49386bfb95591325L,0xe3966f4ccf68a142L } },
|
|
/* 38 << 364 */
|
|
{ { 0xa5f3bc6cea06320dL,0x1bf855c637ad6e7eL,0xce7ff06ec58befadL,
|
|
0xcf0d22cf1c2c0478L,0xf53e473e75616621L,0x00539f8700829986L },
|
|
{ 0x45398355844866d3L,0xbade46a2d710bc63L,0x6b3da567d4e2641fL,
|
|
0xff70185978fd963cL,0x2eefaabaa5bc18a6L,0x61eeca92eb64cd49L } },
|
|
/* 39 << 364 */
|
|
{ { 0xdf7c7c0b4cd4c82fL,0x67a26a97188ab9dcL,0x58c5bd74dd189cebL,
|
|
0x3e1e93a9bb6409f2L,0x0d18a8bca6bb744bL,0xad3eafb45328dcf0L },
|
|
{ 0xacd15db5e311dfe8L,0x13a1c10ac1e849bdL,0xfaaa7227e1e73aa5L,
|
|
0xa4cd2400e33d4665L,0xb9be68d9d6d527b4L,0xfe282bc05efbfc40L } },
|
|
/* 40 << 364 */
|
|
{ { 0x159b38e17f8fd522L,0xf3ea27b5755e2bd8L,0xfaa52efebf11ac90L,
|
|
0xc2014b892cb9f6dfL,0xa711c179d8baa5d6L,0x5474c1ceb22c2f27L },
|
|
{ 0x3cbc74cb031d05d9L,0xddd97ca6c44e469aL,0x21b386a647db83e5L,
|
|
0xd1431c7b7abc0595L,0xbc05d009a416a325L,0x1c29eb709da53e92L } },
|
|
/* 41 << 364 */
|
|
{ { 0x7f1aaf98181ce8a0L,0xa890cd3b6caa5b6cL,0x5d78dfaa5fbeac66L,
|
|
0x36c63cef3d3d4594L,0x6f89ac3ec36d117aL,0xce9095640fc90e27L },
|
|
{ 0xaa356b1ac127aa76L,0xfa42cc119d181455L,0xbe4622fcd27f5ab7L,
|
|
0x58d924542c3d54f7L,0x78a84f6b07e93c24L,0x5bf7cd278bce9a46L } },
|
|
/* 42 << 364 */
|
|
{ { 0x4bde9ce5f810db3bL,0xec4a74b7281552edL,0xf5b4fa5fee085bb0L,
|
|
0xb07a62936192c8b2L,0x163ff0d1fb18d219L,0x8d4b5e1d8e0ce753L },
|
|
{ 0xbfa6211baebcbf50L,0x1ed6d4b4fecc19eeL,0xbf6d514b82393e94L,
|
|
0x90b356c1711e7d6fL,0x87b28dc2f975139bL,0xc41900648d8bebe9L } },
|
|
/* 43 << 364 */
|
|
{ { 0x3468af53e8d49368L,0xa0a07369ff825262L,0xfad134fd662958f7L,
|
|
0x5be79c00ce900822L,0x4909a56c44bde5abL,0xc2e8c4df4862e335L },
|
|
{ 0xd5e9b9386e7e41f5L,0xd3828d424fe474afL,0x058b2723cef44adaL,
|
|
0xc74ac74617eebe66L,0xc3e6e014bca4416cL,0x2e30bc88167c2e86L } },
|
|
/* 44 << 364 */
|
|
{ { 0x68211ba4969c2c58L,0x7a34733977f218e4L,0x0237eb3696ea1d64L,
|
|
0xdc97f94b7416f3caL,0x63aa82e476bf9e52L,0x4b88a32d388465baL },
|
|
{ 0x7322d9f44adc7579L,0x70c01c7fb24d28f6L,0xdf7f4213c7517ecaL,
|
|
0x42c027f0a8db6d56L,0x2708360eb6c2f8baL,0xf20690d1c2dde09eL } },
|
|
/* 45 << 364 */
|
|
{ { 0xf139c3e3bc6158ceL,0x19207b6a4c86b780L,0x55af3eb977c036b1L,
|
|
0xd192686abd563ebdL,0x8bd0afb05550266dL,0xaaa7376d83bf81bfL },
|
|
{ 0x26aa74ae4a114541L,0xd92549dfbb6745ecL,0x6ad6a14ec6bbfbd0L,
|
|
0x63fee75b411771f3L,0x111ae3101938e8b5L,0xce3e5e346c363756L } },
|
|
/* 46 << 364 */
|
|
{ { 0x2a53c88ae0a45b56L,0x26367466da72228fL,0xdd65516edfdbb135L,
|
|
0x5fe254e82d7e37bfL,0xc0f5cbe433ef39e3L,0x249b7e3ece85effeL },
|
|
{ 0x85951a5391ffba8aL,0x41117672c8dd5ec6L,0x7a74538d9dbb0761L,
|
|
0x0b35fba0cfb06ddcL,0x8c36be4d1a0aca2aL,0xbf884a8e45848e1dL } },
|
|
/* 47 << 364 */
|
|
{ { 0x191eef31788596c8L,0xa7413be65a2d0ef8L,0x30894fcc5c3c09e1L,
|
|
0x6b0e429b2f72a333L,0xceea52a1e70470e2L,0xfc638b316b682db2L },
|
|
{ 0x31af73cd615f7f21L,0xb31663760094996eL,0x7ec37e33dfff756dL,
|
|
0x38c50101d9b63a4cL,0xa517c6df192f18e4L,0xd674c53a841fb337L } },
|
|
/* 48 << 364 */
|
|
{ { 0x4dd3bd842446fc6aL,0x4654b82ef25ab510L,0x1ad46998ba066896L,
|
|
0xb7c679acad713bbdL,0xef9389aff7ca4fa5L,0x1b864105d68b6a1cL },
|
|
{ 0x3acfff604b6f5ea4L,0x81ef58f7b9e5a475L,0x5e2f6441c66ad734L,
|
|
0x49f144c42fd3eb16L,0xbd7f22082e4e2117L,0x30865994417911a3L } },
|
|
/* 49 << 364 */
|
|
{ { 0xc2f25d9e80d2adb5L,0xa0e77dc5242430feL,0x7f30e54b4f504e97L,
|
|
0xdc114db4680ca2cbL,0xf76fae57adec4d89L,0x06f892eff313535fL },
|
|
{ 0x50af729a9a266407L,0xb0cbc4f0764dffd1L,0x153ff8f8d20c2e19L,
|
|
0x27fa845a7388d22fL,0x26e08ef5d784e057L,0xccbe49ee53b5dfc0L } },
|
|
/* 50 << 364 */
|
|
{ { 0x6fa8e5ff3082ceb5L,0x81f4dd02ef4850ccL,0x626b324456483f9aL,
|
|
0xc0acbd8782e65652L,0xf9bef3117e23f93eL,0xc2474777c2310f6fL },
|
|
{ 0x6b4617704379fd64L,0x2f8fc599f18c3b14L,0x2287f1d0bd076aedL,
|
|
0x9f8eac0fef366016L,0x517cd2e371fd845dL,0x0fc2f219a30c371dL } },
|
|
/* 51 << 364 */
|
|
{ { 0xfea0464721c56ce8L,0x4f7b055b6a32a26bL,0xf8c8d93e487ed396L,
|
|
0xe620b440855f4df9L,0xa3f6f21dea870c14L,0x0518225207dad127L },
|
|
{ 0xbdfb7b12c68ab5f6L,0x5f58bdd7fc68f296L,0x2df9cfc505e4fdc2L,
|
|
0xed12a102379c282cL,0xd388362654d8de77L,0xaefb0f7fb01065afL } },
|
|
/* 52 << 364 */
|
|
{ { 0xdc64f8d23d80d738L,0x7ae74ab1d95a1c6dL,0x4dba93a8dd46de0dL,
|
|
0x271aeb870fddbd1dL,0x1bab6546e9e7ed31L,0xe6445d22efec8f37L },
|
|
{ 0xd927df1797a718a7L,0x738c2450351b1ceaL,0x3809e595d51a7422L,
|
|
0x4f8d5ea58969456cL,0x74d9168421c9ad95L,0x59a69f8f4f796a11L } },
|
|
/* 53 << 364 */
|
|
{ { 0x2542fcf1f07717aaL,0x032abb3f405a7717L,0xc757e6e294cade8cL,
|
|
0xad4776adf2e84dd1L,0xb7e277243d5e397bL,0x173894a605f8921cL },
|
|
{ 0x0e3a78531f6afc3fL,0xf33732b8ad62482fL,0xa6b4e0f03e4cb6e9L,
|
|
0x51ba565eda02264aL,0xd0afaa4600f3f376L,0xf5506a1e35252e93L } },
|
|
/* 54 << 364 */
|
|
{ { 0x3574783b5ea1c662L,0x675894e514fadc8dL,0x64dd63935ac6ea7fL,
|
|
0xa76c00dc77f16c96L,0xf73ef2c62eb9574cL,0xdd39a89a2e408008L },
|
|
{ 0xbef8c8c72bafa10bL,0xa31f030a074733f8L,0x5620dda5445b4b6dL,
|
|
0x4e08fb0173040ab8L,0x0a279f38598ad48aL,0x03e8b55e2d40d775L } },
|
|
/* 55 << 364 */
|
|
{ { 0xf49d4d54c20c8610L,0x1b1d70bbc0d62b65L,0x524d3a0c16285ce2L,
|
|
0x0be553b08a0785b4L,0x9b93e5093c84975aL,0xbeac761160769465L },
|
|
{ 0xffaaffcb3331dd0aL,0xad0f01542d70fcf1L,0x65aaabab66fe24bcL,
|
|
0x283edb562cab253eL,0x1659deca80383c87L,0x06de45fd83fc6d7cL } },
|
|
/* 56 << 364 */
|
|
{ { 0x7bcb055d5f76c311L,0xdb2d05878e293aaaL,0xb15036e7207360b4L,
|
|
0xbc38cc9f163f0ae4L,0x5a942f85a44d0a0eL,0xee8633a23f553a88L },
|
|
{ 0xf66b65c5c9bd4ee7L,0x7a4ca96a80b8ceefL,0x7b71cc55f6f08036L,
|
|
0xc0408b198c41be7cL,0x885fd72f80860d93L,0x338a567be7f68b7bL } },
|
|
/* 57 << 364 */
|
|
{ { 0xcba302e939d99b60L,0x2557b3d903b8faa0L,0x2a99cd6e9efc4461L,
|
|
0x03ce3e08268f14a3L,0x59226a83b1c68a01L,0x81a18c69fe379976L },
|
|
{ 0xfdfc9f148af62557L,0x0cdf327140b2d4ebL,0xf99ff3ded26c6085L,
|
|
0x2c138ffdf9b0273cL,0x393d6de6888dfbd3L,0x75903c68e5cc102bL } },
|
|
/* 58 << 364 */
|
|
{ { 0x0c56d477b78a7b91L,0xbedff933c7c3ecf4L,0xe02da64223ead65aL,
|
|
0xf7e7cc19a8162300L,0x3719fb8f2f3dbd03L,0x4f150cb8cff88c59L },
|
|
{ 0xa564c5eda7fcb233L,0x9b042870b6a41ca7L,0xf253b65ac1615f1aL,
|
|
0x9ccb49a7b8aaff46L,0x38bbc5f7af0086fdL,0x688f7c2054a6d8a9L } },
|
|
/* 59 << 364 */
|
|
{ { 0x3702c5e5d22a0892L,0xf17510a28d510809L,0x5c36dc68bfdab4e7L,
|
|
0xf72c9357623a98e4L,0xc660fc5146624a0cL,0xf0b4983d3e64dd4cL },
|
|
{ 0x5cb98cc9a5ecf45eL,0x79759acdf5082a78L,0xfd0daf366e7321dfL,
|
|
0xf61c54f7f1ebcacaL,0x782e5e74b8f665c4L,0xb1d54c2145d78c08L } },
|
|
/* 60 << 364 */
|
|
{ { 0xb64f3b9bef1af123L,0xc86dc5ffe1b75401L,0xc3a76d81d928e989L,
|
|
0x075005abff8ca002L,0xca6226325c3cd8b1L,0x017a97b2bd8f772aL },
|
|
{ 0x187eb635039c4757L,0x9eb7a9d1e905c6e5L,0xdacb98bfbc251cceL,
|
|
0xe357c60e8704c639L,0x50563b8558fd987aL,0xb2f89c864cea5d4bL } },
|
|
/* 61 << 364 */
|
|
{ { 0x3d13c0bfd32233faL,0x997c424145aceb7cL,0x77ff5a75ed2e9df0L,
|
|
0xc4279aa23c91d085L,0x5a11a276ca0392c7L,0x928e06032daae653L },
|
|
{ 0x21fe225fc4046f85L,0x591fa82f512dbfb4L,0xb5b01a3f51aa53feL,
|
|
0x900012ef7133befbL,0x24609da17130c15dL,0x3c4a09b33d2549faL } },
|
|
/* 62 << 364 */
|
|
{ { 0xcdd3073d3ceabe32L,0x56e155bc5a848977L,0x07f4c7c6da48eef6L,
|
|
0x00a2f9f79e021b38L,0xeb683e17ffc4bd6bL,0xa7d6b87592b7e240L },
|
|
{ 0x651d21de7e48836eL,0xf9c9ede775de3c75L,0x72cea748d90f2634L,
|
|
0x29d8022283fc524aL,0x1e412b510dd044faL,0x1b9b332a76a04fdfL } },
|
|
/* 63 << 364 */
|
|
{ { 0x4dc8421f06f49d8cL,0x6a3fd9a83f979e4cL,0x50b0e3760b51bd69L,
|
|
0xec22f486a592313eL,0x5e4663ff8e8904d4L,0xde7b9e23f3362548L },
|
|
{ 0xa1ad270d1ab757abL,0xb91fd935a3089f6aL,0x1d6b1524a635f996L,
|
|
0x8673f8e29c718c6dL,0x0e04360725932b9fL,0xb5d0447222ac239fL } },
|
|
/* 64 << 364 */
|
|
{ { 0xdf0ae8df941948e3L,0x123fee901d010bcdL,0xde3717ca1dd28691L,
|
|
0x0c1db879709b678eL,0x0288959a400acdc6L,0x66c691815ca2d03aL },
|
|
{ 0xe52534b3dbbb75deL,0xe914938c3de927cfL,0x1a9a34f873eece30L,
|
|
0x0fb0c7bd642a6799L,0x375cc0cfeaa7e8a8L,0x75fb9eb5d00ec238L } },
|
|
/* 0 << 371 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 371 */
|
|
{ { 0x9ca8cc9db72958ebL,0x3c8cd0db1014f562L,0x72115d53059b2bbaL,
|
|
0x8fe7ac30730e5dc3L,0x4e67ef69841d8998L,0xfb6439ffc8ed37a5L },
|
|
{ 0x48164b3e26df84c4L,0x37d492ad365bc99eL,0xb7fd4643beed38ceL,
|
|
0x993cfa9fa3e30b3dL,0xdcc5e7af01ddd484L,0x5edf3ac06840175dL } },
|
|
/* 2 << 371 */
|
|
{ { 0x79768e9f51d33c11L,0xeec34505a4b24889L,0xc194821bbe0c67d7L,
|
|
0x537a6a4a6909fdfcL,0xae6d705195ccdda7L,0xed4b722292b3926cL },
|
|
{ 0x2c5dd6af6b24a3d4L,0x9282ec39e4386095L,0xdd3c7388397a3bd3L,
|
|
0x9d176c6a8baf59c2L,0xd5c6219e380ec958L,0x194fc11654e8e315L } },
|
|
/* 3 << 371 */
|
|
{ { 0x0b7576f901ec1432L,0x84b30eecabc5f603L,0xdaaf7ba9f4a84b7aL,
|
|
0x9e3a5daa3bb37a99L,0x56bd964880378cffL,0x2fdeeeb78e6ed856L },
|
|
{ 0x079014a73c81ac34L,0xf8de4004b4211c27L,0x0cee3df97fe4391eL,
|
|
0x441aa7fb2fd2fc38L,0xeba7be864d1b575aL,0xca2fb5b7231c2d01L } },
|
|
/* 4 << 371 */
|
|
{ { 0x0683349e463a8251L,0x97dc4f475103e72cL,0x47c7181050663b9eL,
|
|
0xf327d1499733dac6L,0x03f55e4a292137c5L,0xccc6232ada59e1c7L },
|
|
{ 0xbaa8b4ddadc59cb8L,0x45370d35fe7486e4L,0x99a88c1db0322df9L,
|
|
0x394440a7fd69954fL,0x9060473da5a29889L,0xc8ca43e32f04864aL } },
|
|
/* 5 << 371 */
|
|
{ { 0xd5c7241add8b9644L,0x45a5f2d1993116d2L,0xbacacd4a823048dfL,
|
|
0xa278fa042568547aL,0x3a4f2482bff72820L,0x1305d1a713e4314aL },
|
|
{ 0x9d84c33334ba28e3L,0x9995b5bb6a32fb41L,0xb0f75f3c520946d8L,
|
|
0xd7c4b8b7de98aa63L,0xee5efcf3ba856b6bL,0x36af33683324ed66L } },
|
|
/* 6 << 371 */
|
|
{ { 0x90762c1f5827fe2cL,0x20160f7aeaffda88L,0x7420849f5c47c645L,
|
|
0xb08231956d72e748L,0xaeac683b8ee11773L,0x8c2a0a79fb5c550eL },
|
|
{ 0x6d986d696c07cc1eL,0x57269140ba8398b9L,0xd13e136fd94d5223L,
|
|
0x1aa75419ed5b01c6L,0x7c2014b1408fcdccL,0x0680a985cffde5eeL } },
|
|
/* 7 << 371 */
|
|
{ { 0x92fc9a3342c5a7eeL,0x8768614af9f0ed71L,0x1ea5f7ed87ebfb66L,
|
|
0x296852ded361069cL,0x1cec6f1a0192498eL,0xbfd4858fa9cca3aaL },
|
|
{ 0xfba98c242ef240e8L,0xc8b500e4ab635d9fL,0x9f49c572913a3eddL,
|
|
0xe6181f93d42b2d4dL,0xf96b5db26aa77fa3L,0xdfb2241fe43558d8L } },
|
|
/* 8 << 371 */
|
|
{ { 0xc7d0abb2edee15a5L,0x72dc0105228cc4a1L,0xeb67defca80767deL,
|
|
0x6fa174d871820908L,0x3215df485674d19aL,0xf944531a960a081aL },
|
|
{ 0x93ed7180ef2cce62L,0xb318edbfc8bcfc0dL,0x0909d56efe787e58L,
|
|
0x5ae74fc98fe8b96fL,0x8fc342c435ab6811L,0x6fc6cc5c0b991e0cL } },
|
|
/* 9 << 371 */
|
|
{ { 0xa8eaba6e291f689dL,0xfbfa9a2cdea0cba9L,0x5b1b4a21727bfa11L,
|
|
0x3b69505fac59c8c4L,0xb06290c89368ddb2L,0x4181abc294bcc14aL },
|
|
{ 0xa19f65813e29d997L,0xab1ae8408864aac2L,0xb04a24300fcc9ae8L,
|
|
0x3ca2428e1059e4dbL,0xe288731117e1e01dL,0x1f5d4164be56238fL } },
|
|
/* 10 << 371 */
|
|
{ { 0xc600dd57354416d9L,0x6f5840991f829d6bL,0x2d7b0a27de43c1d6L,
|
|
0x21bf3a9e616bdb16L,0x33ce767c96297953L,0x99bf97b69e4398b2L },
|
|
{ 0x4069cced8d441287L,0x52e0edd6bf01017dL,0x9981bf89c5394236L,
|
|
0x07d9c079acb24e38L,0xd2e5e904a2da4735L,0x4c3c12162f1b6cd9L } },
|
|
/* 11 << 371 */
|
|
{ { 0x1f28bd0de6f1c85cL,0x4a49d0864e6f3db6L,0xc9a8e70c4ef7d981L,
|
|
0xde8abcf2682bc68eL,0xd0ef89a4a66cbee3L,0xfa03108432df7f0fL },
|
|
{ 0xe361e0f803594856L,0x1f423bafc985c77fL,0x50397b67010ee4acL,
|
|
0x502f4a20c0a48e96L,0x260bed875435539eL,0xdae03cefa0391250L } },
|
|
/* 12 << 371 */
|
|
{ { 0xfeecc6e83be5ba68L,0x3293dbda40445158L,0x48454e20e81879caL,
|
|
0xd0ea9cb89c4a2712L,0xba8b6f33540749c3L,0x95e6d6e3e971df93L },
|
|
{ 0x4c2a1b13478a2eb5L,0x8b5f9af330b92170L,0xe6c60b5343573986L,
|
|
0xb9f56a6a57040c00L,0x6de6489f6291a7b4L,0xa9a7784653bc3246L } },
|
|
/* 13 << 371 */
|
|
{ { 0x0dd4172f9025411fL,0x978e952ac6129de8L,0x9afa974bc7ab7609L,
|
|
0x7bd29a644e42f223L,0xc0232f5f3deb639bL,0xacce69d05f39a264L },
|
|
{ 0xdaee07cb3070b24cL,0xe3adc8556b532246L,0xae5935ce1e6ee4f6L,
|
|
0xba9c4329ea018a45L,0xa1a4002e6b97ee9dL,0x98390aab8a9460cbL } },
|
|
/* 14 << 371 */
|
|
{ { 0x828a9dbe67154a02L,0x57a3af981866aadfL,0x1558428089faa581L,
|
|
0x2da092202dba2a1dL,0xa225f631df197ae6L,0x0abff5cf8f4ebabbL },
|
|
{ 0xbbadc9b3b98e5e4eL,0x7c7cc36e4509f98fL,0x072a6cc2759413f6L,
|
|
0x7b39ea4121dd1222L,0xd6baf9e196ac2c73L,0xee38818c75d46296L } },
|
|
/* 15 << 371 */
|
|
{ { 0x19befeacfa37c53fL,0x32c29b361f95c29aL,0x1d282db40d5aeafdL,
|
|
0x8812b6c8f102a97eL,0x1cd4a23c8402f481L,0xbfdf7b6b8eddec81L },
|
|
{ 0xc8039ae0616b2654L,0xdc6f38acabd23a57L,0x2431c763f147dd44L,
|
|
0x7c45ed50d795bc37L,0xdbc30ab9842022aeL,0x568f7d4ba1f05a43L } },
|
|
/* 16 << 371 */
|
|
{ { 0x55671129542f4e90L,0x43bedccf0623d4cdL,0x7e21207ce99ca16bL,
|
|
0x785fa1057c7a26b9L,0x33c28658c2c3ab00L,0xcce42a48d79cd59fL },
|
|
{ 0x9a674db4b8c3bc75L,0xea701d156904e3feL,0x990e722166bf2c6cL,
|
|
0xba29affabd4c3791L,0xd98510cf20696ee1L,0x722ed471f93d26a5L } },
|
|
/* 17 << 371 */
|
|
{ { 0x74e6c2624ba40f04L,0xf7ad1f159a63b3c2L,0xa89e8490ef75d482L,
|
|
0xaf8e79b83bb5f5c4L,0xb094f8660c624d8aL,0xb571ce6613c69a60L },
|
|
{ 0xcbf9722d53787457L,0x97e24cf5c15d097fL,0xdba98bede99e034bL,
|
|
0x8b6c171a57773590L,0x5d2b441cfe822efbL,0xb8c6dc57fc74ef1aL } },
|
|
/* 18 << 371 */
|
|
{ { 0x37c70bdf7db1c03fL,0xd9368612964632abL,0xcf6368d742530338L,
|
|
0xe56beecbb1d9522eL,0xb1caaf16bb6fba3aL,0xb7bd485ac8384d26L },
|
|
{ 0x4ba13818528d4372L,0x95c469bab9c5e8f6L,0x4e5cef0c4a370695L,
|
|
0xb87c97ca663f9b07L,0xa9e1b388e5f3b79aL,0xc0416bb84c845a1bL } },
|
|
/* 19 << 371 */
|
|
{ { 0x4483db00e4634d8dL,0x4d8d623d0a268bd8L,0x296f179c64e6d10aL,
|
|
0x048f3a1cb6c7ff95L,0x60f8ad62c60c76d1L,0xa0a497610d028845L },
|
|
{ 0x10128387aea1b714L,0x81e5c75ca18bd98cL,0xac30d7361dac4200L,
|
|
0xb83c1c12821380f1L,0xc8ca7c6afaaeb726L,0x13fb870dfead4cfbL } },
|
|
/* 20 << 371 */
|
|
{ { 0x3921332a6b393648L,0x49ec6df649584f38L,0xa0fc013dce243a6cL,
|
|
0xde5b16b5f8da8a00L,0xabcd0c0471ab1c9aL,0xff6594bc78b83305L },
|
|
{ 0x3546004b76c1900bL,0x87428fa236fb3186L,0xd2e464ce59cdeb49L,
|
|
0x1260bd28faf6ec08L,0x1ada2f08d0c9d098L,0xe0b66299dea06396L } },
|
|
/* 21 << 371 */
|
|
{ { 0x603d58167c1212e8L,0x95bb823fa4590144L,0xf239058a4bc3ba48L,
|
|
0x21f2aa610db724b3L,0x29c706e8cd6792a2L,0xb143a84a634f01e6L },
|
|
{ 0x68f37382626ee80eL,0x56daa0e51fcd8c4aL,0xe01b52b39e5299a5L,
|
|
0x2224513c3accdac7L,0xbb21c7d74acd435fL,0x039bc010bbcb948aL } },
|
|
/* 22 << 371 */
|
|
{ { 0x5006c3a00848d6b7L,0x726b8648b28285aeL,0x7162e3c0277c5a87L,
|
|
0x567f7ab02019c20aL,0x490c858fa551d5efL,0x0029a108d134a2bbL },
|
|
{ 0xa9e19284ef0aca3cL,0xbc399dc16e414f83L,0x5bdf85f86efa5a8eL,
|
|
0x5291e1a674fe7c5fL,0x249ddf2acd7091dfL,0x71d4cb4c2e29fcf6L } },
|
|
/* 23 << 371 */
|
|
{ { 0xc374acf4c1ded13cL,0x300d96132b69132cL,0x909ce34b055622d2L,
|
|
0x26f033f6bad97809L,0x30987ebed1f7a220L,0x23147226db775b8cL },
|
|
{ 0x8d45c2c28d05ecfdL,0xeee0c679f0c1b419L,0x9f7df70d8c380da2L,
|
|
0x4d49f3d130212a25L,0xa9602e8c64491ff3L,0x5ab91d223a254c49L } },
|
|
/* 24 << 371 */
|
|
{ { 0xedd3291c9dac47a9L,0x02d64634fb5d396dL,0x2ce21bf163264c51L,
|
|
0x0fdcc68e092c4724L,0x653acb286e3e4c2fL,0x2f9c77f12f1fa1edL },
|
|
{ 0xd91d4c3aa58afea2L,0x5a91b2ba7b0d8092L,0xd47e0f61f10a15fdL,
|
|
0x01652d86f9c86edeL,0x1cc1b668d6006daeL,0x2763e36d24af68beL } },
|
|
/* 25 << 371 */
|
|
{ { 0xaa5f387c2314a1adL,0xb8c00105e2647c74L,0x1f950dd8d6719178L,
|
|
0xb7dae31de79881efL,0xf2d49aa2e45a615eL,0xb22dc098f17352afL },
|
|
{ 0xa4c438728ac23ba4L,0xedd6e4092c55e588L,0x1956b199022f5632L,
|
|
0x18adcaa58c11bc50L,0xa0c11f6458b1cbf5L,0xd1204377f961ce1fL } },
|
|
/* 26 << 371 */
|
|
{ { 0x35a2685bbb77f5dcL,0x1b5b79bbc08efa67L,0x4ebec6e6ea5f411eL,
|
|
0x1800a21988c57793L,0x8d7397f2cbb13c96L,0xbc13ac35dc0327f4L },
|
|
{ 0x53ac05a6fd94b150L,0xd898fa600423e787L,0x802aad2c2a66b97fL,
|
|
0xb604ac0692c62b03L,0x9f395d3a45911e7dL,0x5d38164128ae56b6L } },
|
|
/* 27 << 371 */
|
|
{ { 0xa7d5a3afa5fb0decL,0x0d11c0cd5b27e02dL,0x8d854b53366c6cc9L,
|
|
0x87ef4c140ad9a5f5L,0xaf7c2e6b0c5f8acfL,0x81fc22b69f010f1aL },
|
|
{ 0xe49e0c7e4e25ddb3L,0xd30bc860ef233d23L,0x0b63afb89fa41205L,
|
|
0xd14b326c702fea93L,0x10ab93662c2a5fc8L,0xab35bab356cfff28L } },
|
|
/* 28 << 371 */
|
|
{ { 0xdf0f79524130138bL,0x117e4628934c58afL,0x227be6867b6a4087L,
|
|
0xe73fb2f3b8d298a3L,0xe32e89fda9bacb9dL,0xdd3be6130e9ea7e3L },
|
|
{ 0xd3d655ead4da2d1eL,0x153cce647833bb3dL,0x4a32a9f0b36da20cL,
|
|
0x025768e5a69c4b27L,0xb0b5da379cf1fcecL,0xd0ecaba23aa3b99eL } },
|
|
/* 29 << 371 */
|
|
{ { 0x9ab6dae0aaf6b398L,0x2d50f46b4f8e270cL,0x46c1e676fd7b7005L,
|
|
0x4b8b203e32cf8be9L,0x0253ec899451bca9L,0xc3a7eab7f512b7a5L },
|
|
{ 0xf3bed3fdc5bd61a6L,0x5c0eb52f0a37ef8aL,0xb61aee11140894dfL,
|
|
0x690607f9bec928f6L,0xba2b1db65148b45cL,0xbd309bf56619b652L } },
|
|
/* 30 << 371 */
|
|
{ { 0x79d624c7a7b92932L,0xcd086bd7cc75e7a8L,0x3cddc1bbb48eab26L,
|
|
0x10282df1f6791cfdL,0xffedb4fb1048f114L,0x937ed0e7c092d899L },
|
|
{ 0x045e4f60b84b6d20L,0xdd67bd36877ed915L,0x9bf8fede97617aa9L,
|
|
0xa7ff9b0789cb8e1aL,0xc49e310e74f4e7d6L,0x12dde0fb3f62eafeL } },
|
|
/* 31 << 371 */
|
|
{ { 0xe2e3dc4d50ba6e73L,0x31c19ebce6114f87L,0x8df0ffb01ffa99b5L,
|
|
0x305142f1bfcf7fbdL,0x39931954ab88b782L,0x1952bbab43de3650L },
|
|
{ 0xb32ed678aa09e528L,0xa5150011acee68ffL,0x0307716a97b98b23L,
|
|
0xb60c3edd4fc8d2b7L,0x91c81725b2b2f887L,0xf1dfc70ab9fb0288L } },
|
|
/* 32 << 371 */
|
|
{ { 0xe7cf5bacbc579793L,0x11db7ddfd73f881cL,0x9c1a531d04fa8473L,
|
|
0x399e84845780efdaL,0x6e9c12be4f62cb5aL,0xf21bdc4994a5df3bL },
|
|
{ 0x3c15fe1211da2a4fL,0xdea123bb23e631d1L,0x3ef76da4be294c90L,
|
|
0x5cf21d5aa99b8398L,0x50679cf8751b9f6aL,0x4b3f3b9c54d0b7bfL } },
|
|
/* 33 << 371 */
|
|
{ { 0x442dc0fd27174604L,0x5aa056efebc95895L,0xbb8cf9b54c96a2dfL,
|
|
0xf43342d440f8618bL,0x58b0d00a8f89a8bcL,0x74d32dbc81f69f20L },
|
|
{ 0x5caf0910ab22a49eL,0xa0e9a677ff372f3cL,0xec90b5aef5c05066L,
|
|
0xe2d98821b663f0e1L,0x388804bf50c7abc2L,0x2fbab16e97ba64d3L } },
|
|
/* 34 << 371 */
|
|
{ { 0x09138c6071ed8d4eL,0x994d0fa991ef82b1L,0xe6089dbb931f3193L,
|
|
0xb3b229d0aac23611L,0x52cf03fdacb8affeL,0xf64f9872bd99d6e2L },
|
|
{ 0x52ebb8b40186279dL,0x36a2349fb09efd7aL,0xa85b5d802225772aL,
|
|
0xd2dc3c1547522562L,0x659297a666471319L,0x65913b608c8e7b68L } },
|
|
/* 35 << 371 */
|
|
{ { 0xd54591f9a713f82eL,0x0ecfcffc6fae64b7L,0x7df9d7ea7287e218L,
|
|
0x8b260162abe71460L,0xf75097efb12d48beL,0x82d5902482581904L },
|
|
{ 0xc5c0b5dc400d4288L,0xf6493c78190f768cL,0x1844b5f895bc9fccL,
|
|
0x24afb04ba615bff9L,0x6c9638ee8bf51197L,0x38bce012b9ab9fcaL } },
|
|
/* 36 << 371 */
|
|
{ { 0x087a2790494efdc0L,0x0b5f23c9e1645cb8L,0xa6e1d1e8193a99baL,
|
|
0x0d324e67c0e0c026L,0xa86d993820d608b5L,0x48ddfbfd8d6944dfL },
|
|
{ 0x6aa07f90d371864eL,0x5cf727eef2060df5L,0x7694e02c9a7cf2d0L,
|
|
0xe091982f6260f63cL,0xd2d481a72cae5da6L,0x045e3685ebcb4172L } },
|
|
/* 37 << 371 */
|
|
{ { 0x1765632323c82633L,0x5de90578d590cdd3L,0x5cc5e7b9525caf0aL,
|
|
0xdd9be80dd53e825aL,0x9ed28b29949073f3L,0xd15024156a6ce0bcL },
|
|
{ 0xbc34beeabf355f49L,0x73724878d2b210ccL,0xe47b7af911e8122dL,
|
|
0x381a4cccdf53a9eaL,0xaa22c9b229e8a466L,0x7a05e2081a4fa093L } },
|
|
/* 38 << 371 */
|
|
{ { 0x3dfb53521830d848L,0xea183d5cd2820590L,0xc83a65bcabbeb376L,
|
|
0x5d9ca4d189bb9ac9L,0xb32217be137c900aL,0xcc40daebb0827afdL },
|
|
{ 0xc76130060c58b0afL,0x39f4ed8adf32389dL,0x04a586e2bc1fe9f6L,
|
|
0xcf018c2abb50450eL,0x5072b8f016d55d0dL,0xc3c72e90d59e1dbdL } },
|
|
/* 39 << 371 */
|
|
{ { 0xb3291b4e50b4e9f4L,0x79a2e8121b7b9e08L,0x81855db1ddd5f0adL,
|
|
0x91fa12fc884392e5L,0x6373de02291c5694L,0x15c77432a7171428L },
|
|
{ 0x6016a06c1132df9eL,0xa4286939a0c21c8fL,0x70c5ebe26dca3f37L,
|
|
0xc5278c510f115497L,0x8f5b07a35ce1953cL,0x4d75c1dc41f6ac0dL } },
|
|
/* 40 << 371 */
|
|
{ { 0xfeac8e8ac24002e7L,0xa43892076643fa6aL,0x06e7ed63daa68b52L,
|
|
0x8580bbd5d8c7b952L,0xb17ce22410c8fe9dL,0x40266bd379b88ceaL },
|
|
{ 0x32afc840dd63ffa5L,0xb4a3eb27a2280b83L,0x90528bf685897e28L,
|
|
0xe4612391d231f941L,0xa7b3a2ccacb5c909L,0x2606844e5558d57aL } },
|
|
/* 41 << 371 */
|
|
{ { 0x49ad52380519dd66L,0xe1b0b03b3c1470f4L,0x15e42792cd3a4852L,
|
|
0x91c954b7388ba040L,0xe9fd8c7f857711f1L,0x8552d3d44b63a36dL },
|
|
{ 0xbf867fde230ffab0L,0x362a32a0793f885dL,0x687802cba11e0225L,
|
|
0xd95b073b308c1972L,0x13b104aa6b3e5120L,0x60bef12333673f57L } },
|
|
/* 42 << 371 */
|
|
{ { 0x4c4cc5561c8a5d9fL,0x5c6e1fd52b8a42c9L,0x73fd66c44ccfa024L,
|
|
0x73c777563c50d038L,0x26964a68a5076758L,0xb14cdbfa7484d080L },
|
|
{ 0x24c499cf3f4b92ccL,0x40c8c0d84682daa1L,0xaa156edf785561beL,
|
|
0x36718fb6de75af0aL,0x4d391cee03f5b180L,0xcf28d08a3100efc8L } },
|
|
/* 43 << 371 */
|
|
{ { 0xbf1fc9fdd113a97bL,0x19cee87f5ff5ff3cL,0xfc140acf8f8213a3L,
|
|
0xe70d50d546127d5cL,0x78cd24032faa7ac9L,0x409675f1c1808096L },
|
|
{ 0xaa7b6cd91765da93L,0xc0755b924f508d86L,0x09b8fb7640169a6eL,
|
|
0x9ca977e52e7da664L,0xee1aab6c9a9616daL,0x54d740391ca0f4fdL } },
|
|
/* 44 << 371 */
|
|
{ { 0xfe011830c37c7fc5L,0x0b2b965b2ee958c7L,0x99fd253588a43cf6L,
|
|
0x6a73d62dbf8dc33aL,0xd53c0241a99247deL,0xb8186dccb4127f94L },
|
|
{ 0x86c4c274964cc3d3L,0x2f3f2742cbfa9429L,0x5b4bd23c5391abd3L,
|
|
0x030b211bc5838fe2L,0xd2263dc4ae2e36fbL,0x45583a3ca0bf7280L } },
|
|
/* 45 << 371 */
|
|
{ { 0x9ce7f43f1ed3f49aL,0xd8094c4afcdce20cL,0xd8b423d12b37b162L,
|
|
0x332ce47c53d90a7dL,0xc686fc0c94a38ff2L,0xb44938d6c33d842eL },
|
|
{ 0x5ed14772cd9b0002L,0xffa5d063e800c655L,0x4511ec79ffcb6120L,
|
|
0xb8c9de3f9da8e70dL,0x4d0759ca952b0ef7L,0x685f7005dfd88f4cL } },
|
|
/* 46 << 371 */
|
|
{ { 0xcbdb755f1dbdc85dL,0x63d0d7047961be6aL,0xf65af35d8220a1b3L,
|
|
0x8dcea7df77db51b3L,0x8cb2c5d14bfe8fbeL,0x740579bdee2f03e0L },
|
|
{ 0xa7eeea4ed3f0181fL,0xedbdfaa3c12ef399L,0xee3cc40f1c332118L,
|
|
0xdae0995e731ef93fL,0x05165c6c0f24d954L,0xcbcc014219fca63aL } },
|
|
/* 47 << 371 */
|
|
{ { 0xff24bcd842c7c110L,0xa5ddfffc56dc10c6L,0xb9937fcdaa1a09c5L,
|
|
0x8e18ed5b852dd22fL,0xf24e43c7826fb5a7L,0x13989a43415c2c63L },
|
|
{ 0x71ad7c21d36ffe0bL,0x68b77701129df418L,0x1c5324cd9a8d424aL,
|
|
0x2e2a2b1ba9bf46abL,0x7d0c04d19cd0ea12L,0x8b4186bf2f9869e8L } },
|
|
/* 48 << 371 */
|
|
{ { 0x6c8d97e075a46271L,0x0fa0c4cd9dbed39fL,0xfb6da5e2de74ac6cL,
|
|
0x041ce886c17c1ec5L,0xb42941a8d7419105L,0x79768eee002fdfd5L },
|
|
{ 0x64849afd88c8111fL,0xf425fe14814192d6L,0xe916e8640448fd7eL,
|
|
0x31e224ad72ed351fL,0x73e6e6ac7c0183c1L,0x375657c621bf7cebL } },
|
|
/* 49 << 371 */
|
|
{ { 0x093d8039114fd7b9L,0xb6bed3eb45c5e1c7L,0xb73ab7fe50fdbf14L,
|
|
0x68d95e57af0cd23dL,0x5c260eacc7b750fbL,0x79bb142bb5358c26L },
|
|
{ 0x5aa9845158ace251L,0x04b2388637dbfef5L,0x1051172dc0532263L,
|
|
0x686ee9e6294890d9L,0x092617b3bffd1609L,0xb4a50e50ea3836a4L } },
|
|
/* 50 << 371 */
|
|
{ { 0x8bdb3886cdf950abL,0xe2bdc8d3d595dbd5L,0xd28211254ecc49f1L,
|
|
0x946566081d3c2f24L,0x8124ad390c87df6dL,0x6020c322d16272baL },
|
|
{ 0x2150f7e694af134bL,0x38512401a1a14e33L,0x39a54386b1ff7304L,
|
|
0xfaf1ffea078d8f0fL,0x7739ea99dea995bfL,0x3252e815c020816eL } },
|
|
/* 51 << 371 */
|
|
{ { 0x1609832322f1bd8dL,0x6b02533cd4df163fL,0x25108619a8296363L,
|
|
0x373bf9988f8c755cL,0xebfbc5b23b32542dL,0x7ada597688b9d360L },
|
|
{ 0x3914406ebd605f01L,0xe245ba48cb3a40b2L,0x11a1dc4ed3171f32L,
|
|
0x4a10d5d26ffb5915L,0x9326b23e997460b6L,0x53ddfee92aa0c77cL } },
|
|
/* 52 << 371 */
|
|
{ { 0x44f51dd51104ed7fL,0xfca4773e270f6135L,0xe36c8b266bc757f4L,
|
|
0x2cf0515d6941c7a0L,0xdeab655d5fb16e2aL,0x75c28116cff7be07L },
|
|
{ 0xb24ca428abbbca02L,0x6aaeca9b1e7f8116L,0x4252f4c3510f0c81L,
|
|
0x01462d856f3ff7fcL,0x4df702879d1c25e3L,0xddd47a1dbebd1559L } },
|
|
/* 53 << 371 */
|
|
{ { 0xdffaef2c6f2e2611L,0xc2c2e6a41f29efa2L,0xa29bc3b75ebb40c9L,
|
|
0x8473594bac31a2c4L,0x100d7d6a8604447aL,0x80318670794bbab9L },
|
|
{ 0x78979f72054dfc75L,0x94b4c17e55232511L,0xac44836b78b883c3L,
|
|
0xc1f7e98168422328L,0x34fcdee68266747cL,0x18533b3f0475c011L } },
|
|
/* 54 << 371 */
|
|
{ { 0xede6728e3bab17f0L,0xfcd9c96879b94302L,0x6410ae37544a677bL,
|
|
0xeacbf6de1dcd0fdeL,0xdae70841e2f3ac0fL,0xeea2a9b6e41ba13bL },
|
|
{ 0x1b06aeae9349cdf0L,0x28571e3d33c0ea87L,0xceaf9dd46043e874L,
|
|
0x32cbcc69fa6fea15L,0x7db75664e135aa11L,0x588d4458f816929aL } },
|
|
/* 55 << 371 */
|
|
{ { 0xf70797d02b014160L,0x1ddf312d8d7c3263L,0x3bdd58f3c78beacbL,
|
|
0x8bccd90101c71f77L,0x3c637f58166c1486L,0xb62c0aa45fd1a307L },
|
|
{ 0xa68db7b05f2544d4L,0xb9727946f860585aL,0x91565060a068412eL,
|
|
0x1283d6d1ab536c42L,0x86c2a11c79caa387L,0x2687309b62bd7797L } },
|
|
/* 56 << 371 */
|
|
{ { 0x525cd8849b711a38L,0xd413d82b8c95bf61L,0x19ecc14a36b82970L,
|
|
0x65190ee6e3416342L,0xde9834c93066fcf7L,0x3b87b15e8302cd85L },
|
|
{ 0xec6f67a785268eb2L,0x5ab08b5af95aef07L,0xb5257f70adda86a5L,
|
|
0x53e95ec4b934400aL,0x9611a632c33b870bL,0xd27929522723a3d5L } },
|
|
/* 57 << 371 */
|
|
{ { 0xcd203b542c95b469L,0x89b140e768713ca6L,0x451646a165701050L,
|
|
0xb97a582575e54715L,0x070fabaa93bb6a91L,0xe517e07a196421b3L },
|
|
{ 0xc8d741235f46e495L,0x920ee94fdf60eb8dL,0x885b86dd19564c3eL,
|
|
0x6c9e973231670005L,0xb52eed1fe4893763L,0xa8f9fbd759157417L } },
|
|
/* 58 << 371 */
|
|
{ { 0x0c41f2eb56517cafL,0x47778a92798cf8b0L,0x4232ab390dc60cecL,
|
|
0x5de0b7e39e3eb6f1L,0xa2569d8571562511L,0x37b3c62a1ce1cec9L },
|
|
{ 0x312caccd8b3391aeL,0x6b22c9447dcbe533L,0xc890d22f4fefd4edL,
|
|
0xd1504f7df007a64eL,0x117e4e595845d5bcL,0x999386c7723584e1L } },
|
|
/* 59 << 371 */
|
|
{ { 0x02c396533bdadbd5L,0xc07325fda1fe704aL,0xf78d7e23350aa0c4L,
|
|
0x9f09cf22ce50784cL,0xcdea9a6a1a6e8abcL,0x245fba06ee5a5e06L },
|
|
{ 0xf1fd3b9b4a3d0d7cL,0x24c65a131a4952c4L,0x40ea3ef37236b6f4L,
|
|
0x60aa573d8f7addcfL,0xdd5ec47b0305577dL,0xd92dc5035deacea5L } },
|
|
/* 60 << 371 */
|
|
{ { 0xc666f8f3fac2de80L,0xabb2b8aba8fa36a6L,0x1bd0ec8f12202b09L,
|
|
0x88b184be6d17a3c5L,0x00d501fc670a77c1L,0xe1f94f1db3de1c7eL },
|
|
{ 0x953179cd2d6de8caL,0xa8873a5bb9263791L,0xd76433098d7ac5d1L,
|
|
0x3d751cab4d2f8224L,0x7417b8262e5458eaL,0xf4eb3c669e454a8cL } },
|
|
/* 61 << 371 */
|
|
{ { 0x65b0d7e9ae3284a2L,0x3d4770bb1e3cbb18L,0x217a0cdb808ea164L,
|
|
0x9ed6d0f689810270L,0x62d9cc95f14139e1L,0x4d39eeef6a2c82a0L },
|
|
{ 0xecf319f40dcf14afL,0x62c95df6ab0fd145L,0xfe85014d22db0105L,
|
|
0xc37756e6a652168cL,0x6ba9f6b370a67e9dL,0xe453fd0af18d8058L } },
|
|
/* 62 << 371 */
|
|
{ { 0x265798acfe3bf4f8L,0xc1603abdc1183f63L,0x14e3952f1063e086L,
|
|
0xdcb106d2910f0a78L,0x27c2aee2f454f625L,0xf16d83e60f463fe9L },
|
|
{ 0xaa5547207f5ae172L,0x42ea8fea9a2133eaL,0x9f3b33f6e9253e7eL,
|
|
0x6224ef75d67af0afL,0x06f0ddfbb92d6cc9L,0x12e66e32656e9e9aL } },
|
|
/* 63 << 371 */
|
|
{ { 0x1a93be3424ace7f0L,0xb993bcb9a56be2eaL,0x3b054afac33608d7L,
|
|
0x36e782c3aea3d7e9L,0x54f1dda950e9b3adL,0x04dd021f55f51bb4L },
|
|
{ 0x9c76f7c0347bb352L,0x3d9a04ee2f1dc5fbL,0xea5e582ae80e06f0L,
|
|
0xe523aab927e1e818L,0xe2f1960252d4904cL,0x1bfa8b03adecc51fL } },
|
|
/* 64 << 371 */
|
|
{ { 0xc84f917203bdf6d6L,0xcfc4718769f60e03L,0xcdc4753ba05068eaL,
|
|
0xa177ad14077777efL,0x0b7f54eb7e4cf44aL,0x4ee443f91860144eL },
|
|
{ 0x1279ed4d42bb6a93L,0x511137d7436c1b54L,0xebc958fab8cdb6ceL,
|
|
0xbc4f93f4a0c7614aL,0xc5bd6cde7b2c6d8eL,0xecff7dd78d65f38aL } },
|
|
/* 0 << 378 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 << 378 */
|
|
{ { 0xffec6674f65de0f5L,0x4043079cd23ad193L,0x31811365ee61bc95L,
|
|
0x358bbd6e8948b6e2L,0x1cd9c342e31644beL,0xbab3aa8c60a8a7a7L },
|
|
{ 0xe065519fa375beb6L,0xf7d0b0414439990cL,0x8957c03b8517ae8aL,
|
|
0xc96a040173750d6eL,0x4eb2e364b2aee6d7L,0x813054feed099114L } },
|
|
/* 2 << 378 */
|
|
{ { 0xbb39a17a7c34f095L,0x7be330a822fbbe61L,0x6be6abe3b91f1482L,
|
|
0xf972804fbd39a2bcL,0x06737e54f91d813eL,0xbd6066681a87cd4aL },
|
|
{ 0xbf88b2e5f538d56eL,0xb8206a8134afd68fL,0x7a93aedfa58af042L,
|
|
0x8853cdf6ac0511b0L,0x9d7f416d067e2c19L,0x5d0bc923f9671d8aL } },
|
|
/* 3 << 378 */
|
|
{ { 0xf3b6fd79dd3532a7L,0xf60262b5dbbb9e4cL,0xbf75bb57da4d6ac4L,
|
|
0xf016adf1c094b38cL,0x9114cdd012def474L,0xdc74d638c785f143L },
|
|
{ 0xdea060d6a8d90bbbL,0x1f141878cbcd0d4cL,0x552685b79ddee1f5L,
|
|
0x381dfc0c636ea6b6L,0x8c601615cb08f34fL,0x5b843830271041eeL } },
|
|
/* 4 << 378 */
|
|
{ { 0x2e7d0a16204be028L,0x4f1d082ed0e41851L,0x15f1ddc63eb317f9L,
|
|
0xf02750715adf71d7L,0x2ce33c2eee858bc3L,0xa24c76d1da73b71aL },
|
|
{ 0x9ef6a70a6c70c483L,0xefcf170505cf9612L,0x9f5bf5a67502de64L,
|
|
0xd11122a1a4701973L,0x82cfaac2a2ea7b24L,0x6cad67cc0a4582e1L } },
|
|
/* 5 << 378 */
|
|
{ { 0x139d9fef6bfc08e4L,0x4399615939ffcb3bL,0xaa299008a84ace07L,
|
|
0xfce43e873cbb2b3fL,0x07b3e8b9191a320eL,0x3ec851d706c4d485L },
|
|
{ 0x03d8a672a4bb8477L,0xb6a5dcb213c31d5cL,0x58b79d01c439ab23L,
|
|
0xdd6f8b5134f66137L,0xccb178a0b29be48cL,0x4c71b7aa4df8a1b2L } },
|
|
/* 6 << 378 */
|
|
{ { 0x92bf8c4508359896L,0x77253434ae2c30f2L,0xf05086ec827e6cf8L,
|
|
0x46d4729f1771c5d3L,0x92587306f37f0bedL,0xb82c99d2e7c30180L },
|
|
{ 0xee0141dcb1684841L,0x7fa984be994ddaf5L,0x5c583347165c238cL,
|
|
0x1a1ad3eea5d78204L,0xcfed795f2736bce6L,0xa7a413318961204eL } },
|
|
/* 7 << 378 */
|
|
{ { 0x87451ca71400851dL,0x3aace28e3573ecf6L,0x3a5902cee85717c5L,
|
|
0xe4b51dd0c9f57944L,0x33cf684789a9d8aeL,0x2f6fb08031e6e769L },
|
|
{ 0x4bf3da323b78dad1L,0x2d73fef4e7809638L,0x84d76151965109abL,
|
|
0xa2c932c9a2098f46L,0xb8c457c3bc17d1fcL,0x5ef2562d0c8012a4L } },
|
|
/* 8 << 378 */
|
|
{ { 0x96a1e74f51e4de5eL,0x72913696e37f5006L,0x12449c4fbe35109cL,
|
|
0x1fad8b304521d7e6L,0xc85eb23d57d00293L,0x4ebd334b35f68229L },
|
|
{ 0x7c5b86682df5acf1L,0xc2b4da6e5463de2eL,0x067b0456757cd570L,
|
|
0xeaab81be3a1c866bL,0x72a6af75bbba88c0L,0xaed4dbde0ef567dcL } },
|
|
/* 9 << 378 */
|
|
{ { 0x085e33cd9273818aL,0x8fb9294a8cf4e306L,0xaed46bbc35052bd1L,
|
|
0x031febb3374661eaL,0x9386a35d4868dbb2L,0x381e5b521d3f2dddL },
|
|
{ 0xa938a3a5179617edL,0xb0fc99f49dc95af1L,0xf446dfa92b9dacbcL,
|
|
0xbae262ae490c1969L,0x042707ffa7443354L,0x8dc0511f267d5c14L } },
|
|
/* 10 << 378 */
|
|
{ { 0x8f0e1908fac2674dL,0xd86e85a483e43c26L,0x1f719f7036fb5a4eL,
|
|
0x7ad61b8ca57dbcbcL,0xcf6ba7db0f63dc79L,0xb4315ab11afe8540L },
|
|
{ 0x0448e852425c4df3L,0xf51969ef8838a51dL,0xce98589b9eab87deL,
|
|
0x55867b5645149689L,0x9b70bc8c60d2a624L,0xc158a2710b6dbd45L } },
|
|
/* 11 << 378 */
|
|
{ { 0x0b262f808f1915f2L,0x64ba3bc73d501e01L,0x8ce2db1f4645152cL,
|
|
0xf4a4f3afab047cdbL,0x1a7c4af600d31e7fL,0x0005bca678d1c0ecL },
|
|
{ 0xf5ed135f6fe5ebb0L,0xa299b1002ea9abdfL,0x4fa387e5fccb58f5L,
|
|
0x105b9dd2fc657b72L,0x1494c6050dc3c22cL,0xf7468e8a92d281c7L } },
|
|
/* 12 << 378 */
|
|
{ { 0x597a26ffb4dc8600L,0x264a09f3f9288555L,0x0b06aff65c27f5f6L,
|
|
0xce5ab665d8d544e6L,0x92f031be99275c32L,0xaf51c5bbf42e0e7cL },
|
|
{ 0x5bb28b061e37b36dL,0x583fba6a8473543aL,0xe73fd299f93fb7dcL,
|
|
0xfcd999a86e2ccad9L,0xb8c8a6df334d4f57L,0x5adb28dd9a2acc9bL } },
|
|
/* 13 << 378 */
|
|
{ { 0xc760823646dd14f3L,0xc6d97d37e7a97f33L,0x05037f26de2f444aL,
|
|
0x5267ded09aa9a5c0L,0xd1ef46340be2d841L,0x308b37a8d48b9574L },
|
|
{ 0x102f7878487bad5bL,0x1d5169d938b7c1efL,0x2d8adde62c39c75aL,
|
|
0x71bfb8bc0b80f3bbL,0x126505999bff252fL,0xf99e952f24f8bd3bL } },
|
|
/* 14 << 378 */
|
|
{ { 0x24496a8b7a8a6d47L,0x9fc75c0aec6afe43L,0x4200e00670744f15L,
|
|
0xe2f87d5e2973be1dL,0x0f6c5993c82e2013L,0xe9ecf6ce198c99f0L },
|
|
{ 0xcbdf72058b37d828L,0xbef4b8c8325d1d93L,0x8e962ffbd0fbb134L,
|
|
0xe4273a124bcffc61L,0x4f24ba23f3d93d73L,0x8f02df83bcfcb930L } },
|
|
/* 15 << 378 */
|
|
{ { 0x985c8f4b0614348aL,0xca4ca7cd5a03c014L,0x5bdd4382a7b62effL,
|
|
0x623d44b9e4a0bb42L,0x1f28862ef23931d5L,0x30568303868326beL },
|
|
{ 0x850d2a0d82e76f04L,0xf4dc02330ac4a153L,0x62b74879b1e70a9aL,
|
|
0x7b32249baf3f0dbbL,0x2f50395d155eae92L,0x6d990c16f6f5c9a4L } },
|
|
/* 16 << 378 */
|
|
{ { 0x3afdee277d221ab6L,0xecf10abc47bb619eL,0x340c8ee3ba4a3301L,
|
|
0x1a6ea51a2a883b7fL,0x64f27976d5d7412bL,0x7fcf0ecc91251b6eL },
|
|
{ 0x5f3f8f41365b18b7L,0x38e48b96e2e13e58L,0xde3b73d6ad61b2cbL,
|
|
0xf08398d5d542676dL,0xd373931e8e7d712bL,0x89325d7a7f96e023L } },
|
|
/* 17 << 378 */
|
|
{ { 0xeb2e48c10bf4e94dL,0x00614bf206b7e166L,0x536c999ce295c451L,
|
|
0x951f92186359cf06L,0xe2a938890afc827fL,0x63102e93ff029787L },
|
|
{ 0xab297c7d2ac89645L,0x7354df74928742bfL,0xc0934ca6c8604304L,
|
|
0x36b7e9711cc2f3b4L,0x487ce890e10ee837L,0xe6aa9eabae2ae9e3L } },
|
|
/* 18 << 378 */
|
|
{ { 0x6e7a578340517347L,0x7db868f3a950dfa2L,0x7fd7fd8eb3c2eff7L,
|
|
0xae7b59c5fbe10a47L,0x5239b5c4109797d6L,0x3838356a53264b8aL },
|
|
{ 0x8df8454c320a8c5aL,0x67c86ef46958fa2cL,0xfe1aad846241a50aL,
|
|
0x3df64ef5a06f3cf3L,0xde6af0ff83282fbdL,0x25ca45046cdbe5feL } },
|
|
/* 19 << 378 */
|
|
{ { 0xa319340d6e6c0debL,0x101f055acb1b1cd5L,0x4bea31ad623e7e55L,
|
|
0xc0c88af6aec23cd2L,0xca98c4364aaf2f73L,0x1969eca437dd1341L },
|
|
{ 0x6b03989f97866dc3L,0xafdc99532eaf5b08L,0x199ec0e93d6ea9c4L,
|
|
0xc3d1069474f262e9L,0xa7e5670079911cf9L,0xc0213ec56844da05L } },
|
|
/* 20 << 378 */
|
|
{ { 0x5adf3d9a111792b9L,0x1c77a3054f1e0d09L,0xf9fbce33a82d3736L,
|
|
0xf307823e718c8aa3L,0x860578cf416ccf69L,0xb942add81ef8465bL },
|
|
{ 0x9ee0cf97cd9472e1L,0xe6792eefb01528a8L,0xf99b9a8dc09da90bL,
|
|
0x1f521c2dcbf3ccb8L,0x6bf6694891a62632L,0xcc7a9ceb854fe9daL } },
|
|
/* 21 << 378 */
|
|
{ { 0xfc9660a3c8808373L,0x84c5d6a71a50c560L,0x13fe0588ba057fe2L,
|
|
0x29b0341dafb73ad1L,0x37b11137f15f0cd2L,0x84422ba89c2d7eb0L },
|
|
{ 0x0b595ac52554ef7fL,0xd7a8303f08b37a84L,0x908895a9e02d77fcL,
|
|
0x70cdeb0c9f242a42L,0x535e8540116e2db8L,0xc88f0cf685c54d31L } },
|
|
/* 22 << 378 */
|
|
{ { 0xf534f145e2290ebaL,0x3d081c0d7f15c9e3L,0x716574c5e9ae3da0L,
|
|
0xbe6bd7b92c078aa8L,0xab8802bab8da8e68L,0x0c5be4a1ab204fb0L },
|
|
{ 0xad25c5ee0d3f12b3L,0x3929d0d78fc9b7a5L,0x9c6e2ce0bb5cd2fdL,
|
|
0x855367c4924ec2d2L,0x6b532891e6550d3cL,0xab2bc89575ba5c99L } },
|
|
/* 23 << 378 */
|
|
{ { 0xb56b035e2a0349adL,0xcfa41da6f89ce836L,0x9d86bcac8b5c43fcL,
|
|
0xc77375da47644b07L,0x9e9c222607f4b670L,0x71d663c80482a61bL },
|
|
{ 0xb423e739ef237431L,0xf1cedf7e48832b5bL,0x09e0cb2a7ca7548bL,
|
|
0x9b463559631b9850L,0x8a2bd7fed4dd03deL,0x46115292ae0c97d3L } },
|
|
/* 24 << 378 */
|
|
{ { 0xe44e3f864b3759cfL,0x90cab0eb9d74e3f6L,0x1004254501c4e171L,
|
|
0xc12df68cce52defbL,0xb1fae2fbf363100aL,0x5016c8533573235fL },
|
|
{ 0x8d4deb661d922e9bL,0x8a20d42317f84ef2L,0x324985835a4e118eL,
|
|
0x5abfa961308772e9L,0x41c7611ff54e4876L,0xc1da40d31f5867b2L } },
|
|
/* 25 << 378 */
|
|
{ { 0x4df02a7d3088aebcL,0x7dea27ea12487485L,0x2a773270df98069eL,
|
|
0xea435fa0e9ceaf44L,0x08e952e365e5ebabL,0x972877d5c3511480L },
|
|
{ 0xef5685f859a04cd0L,0xe50abe68b8c7c796L,0xbbb792e2c3225f20L,
|
|
0x7d9878e811c89153L,0x4b72a1e619354751L,0x7d5f05a3faa1be22L } },
|
|
/* 26 << 378 */
|
|
{ { 0x61dd7692f27eed54L,0x8540213ea7a3f2f7L,0xe659cbd6ace07e13L,
|
|
0x3a998cdcc8995cacL,0x0accb4a7922d3b25L,0x762b3406c6577d81L },
|
|
{ 0xa09db4f57e043740L,0x7f78e02d8cc9bc5fL,0x080a522673b98cd3L,
|
|
0xb6d72f7ce6490808L,0x36815de2c724284aL,0xc27d13df98b867b5L } },
|
|
/* 27 << 378 */
|
|
{ { 0xbfeffd5356adb6e4L,0xb5e8876c499a1455L,0x4771281390833f18L,
|
|
0x5f49ef880115b9a5L,0xb041ec67cf575de5L,0x490753350b7e4afcL },
|
|
{ 0xad4dc4a15f0b9f24L,0x9dbb181edafad9a5L,0xa84431a6e6ed5198L,
|
|
0x33ee16e27993eed6L,0xfdf76899c1e4f8b4L,0x868d06baff60e943L } },
|
|
/* 28 << 378 */
|
|
{ { 0x46303171491ccb92L,0xa80a8c0d2771235bL,0xd8e497fff172c7cfL,
|
|
0x7f7009d735b193cfL,0x6b9fd3f7f19df4bcL,0xada548c3b46f1e37L },
|
|
{ 0x87c6eaa9c7a20270L,0xef2245d6ae78ef99L,0x2a121042539eab95L,
|
|
0x29a6d5d779b8f5ccL,0x33803a10b77840dcL,0xfedd3a7011a6a30fL } },
|
|
/* 29 << 378 */
|
|
{ { 0x5d782a0778664144L,0xc1413da46682c779L,0x937a15f52a67b12bL,
|
|
0x8ec00d9fc04d8cd5L,0x3f16d1ed3b5fe8d6L,0x24ad6b0ca28c8067L },
|
|
{ 0xdd1eecc532732b19L,0x62c4c2beab2fa785L,0x7d863f5b2ac0c238L,
|
|
0xd686eb7239384e15L,0x3770e54d16bd75b2L,0xdcd9e4e8120b3881L } },
|
|
/* 30 << 378 */
|
|
{ { 0xe3052838df5147e1L,0x87bc4d75b1baaa7cL,0x49b13eb95acc5572L,
|
|
0x919081881990c13cL,0x5d43a4a6191cc808L,0x20b358444182aa55L },
|
|
{ 0x70d49a4a670b1fd1L,0xc6e6e061722e91e7L,0x8d130b3900c5ae9eL,
|
|
0x5db7d06920f68ec5L,0x85b6c505470fbe13L,0x14101ec7326c4d38L } },
|
|
/* 31 << 378 */
|
|
{ { 0xeef03450e10e8018L,0x75921e487576c3ddL,0x6c8e22676e97f5afL,
|
|
0xd7323e01a856ae6bL,0x43a195425fed884fL,0x010865380377ba8fL },
|
|
{ 0x7cdbd06ac82a8f67L,0xc6fce58bf0fd4281L,0xae098b7f9e67bed0L,
|
|
0x0c8d328bdd918524L,0xddf723ec0a11fb83L,0x210d6016e25a2073L } },
|
|
/* 32 << 378 */
|
|
{ { 0x3c90a59f85adde98L,0x35414174e5269140L,0x9aca885c1a0d58e2L,
|
|
0x77b9b6dd6816b009L,0x8e5c12139ee4718fL,0x60ad991e4e4eac45L },
|
|
{ 0xc00c35694d71f624L,0xacbf4eb25bc5fd2aL,0xcba1ffc75eaf3eaaL,
|
|
0x5f99092d42a87e32L,0x2e7b49c76f7a882fL,0x5e9bfc5c29040512L } },
|
|
/* 33 << 378 */
|
|
{ { 0xa31d3524b295958dL,0x9713a5e04894f486L,0xe8804ab3329a0b9aL,
|
|
0xd4447c1b20eefa54L,0xf5b944c9040b7ad4L,0x9db0ee0b907f2cfdL },
|
|
{ 0x0b1a1f3a5384a999L,0x3137241ea8351764L,0xe0663b5ab29c3cffL,
|
|
0x2b47ca0622d4deefL,0x4f952109f1172bcdL,0x1e7a7fca9b447bd4L } },
|
|
/* 34 << 378 */
|
|
{ { 0xc9898355ecf2a473L,0x20d0c4740dcd66f6L,0x6459720f8eeefff5L,
|
|
0xd9b625dcf9ce0cdeL,0xed3a6508ea56be90L,0x6847c20de211c90eL },
|
|
{ 0x36d86bed71a73ceeL,0x9222eab23023d16eL,0x3155874750209b4dL,
|
|
0xcac8f277d145b831L,0x49cedc634470e754L,0x6c7c065add370f77L } },
|
|
/* 35 << 378 */
|
|
{ { 0x46a95735f8171804L,0x1ff2549ec4c93476L,0xfb8a08285bb5202dL,
|
|
0xaff5505f1070737aL,0x162aaad842f412c5L,0x02a37213fac8a477L },
|
|
{ 0x05ff9238932f08e2L,0x9be6a0b29fc66787L,0x373a9039db1e5a40L,
|
|
0xe657e8c782d04913L,0xa2006f207e6ee867L,0xd7aa1d2378d82f9aL } },
|
|
/* 36 << 378 */
|
|
{ { 0xfa070e22142403d1L,0x68ff316015c6f7f5L,0xe09f04e6223a0ce8L,
|
|
0x22bbd01853e14183L,0x35d9fafccf45b75bL,0x3a34819d7eceec88L },
|
|
{ 0xd9cf7568d33262d2L,0x431036d5841d1505L,0x0c8005659eb2a79aL,
|
|
0x8e77d9f05f7edc6aL,0x19e12d0565e800aaL,0x335c8d36b7784e7cL } },
|
|
/* 37 << 378 */
|
|
{ { 0xdcac39d87c1d9f4dL,0x88322d8bc225ce6eL,0x5c240cefa3ef5202L,
|
|
0xf60ce5d991f1d487L,0x8e857069e462cfa8L,0xa6e5585e996d2033L },
|
|
{ 0x709675a556281e6aL,0xcd90c140f907ebf0L,0x5343a0a2a3231eecL,
|
|
0x74b1443214892291L,0xf8cb9c26a5325b8cL,0x1bb28be140089be5L } },
|
|
/* 38 << 378 */
|
|
{ { 0x2bb6e7ec3092d0b2L,0xc7c9e5f1d27d1f31L,0xbac785aeac0939e3L,
|
|
0x186d3d934f810d8fL,0xda296dacfe7d778fL,0x6189f5e41a991ea2L },
|
|
{ 0x098f794e9634363eL,0x04aaf59a88a4dccaL,0x09d718487196dfa8L,
|
|
0xa447a31ed83044a6L,0x720cd3908d1363fdL,0x6f670479e22efa03L } },
|
|
/* 39 << 378 */
|
|
{ { 0xaa452e81cdf60f9aL,0xf3dc472a8e2c58e9L,0x16ddefa50589fd01L,
|
|
0xd56ec8f223a1656eL,0xcccb784f77921ca4L,0x9bace7adf8a7c0baL },
|
|
{ 0xc94ef3ef51f052e2L,0xa70c0579c34e7cb5L,0x3599817883ce8674L,
|
|
0x033647c392a20951L,0xc828fcc77a21add6L,0x5a446de871ba27a5L } },
|
|
/* 40 << 378 */
|
|
{ { 0x75cba9d530a3ada1L,0xb69e308bf8ae9565L,0x990e3425ca7b8369L,
|
|
0x9f67567fe0a7ad0bL,0x76ed6fe718bd01b7L,0x282358aa2ff95cfeL },
|
|
{ 0x28d2ea41410f8841L,0x89d1533fccd67c81L,0x969bb272b6a7b8f9L,
|
|
0x54f8664c26330782L,0xb89f3ae81dcd9164L,0x54d845b93d962c14L } },
|
|
/* 41 << 378 */
|
|
{ { 0x08ba5b61fde4ca03L,0x39b1a9c697b17ee6L,0x885253779336b2b9L,
|
|
0xe964dc9c9aabc3fcL,0x6aed101a5295e728L,0x30369ea0ee12356aL },
|
|
{ 0xe081e022c8e80e5eL,0x3a769ef0df9f47c0L,0x3b2f7aab5590750cL,
|
|
0xd16c7a85a1a5e504L,0x9e528623e854d7cfL,0xaca079354468e419L } },
|
|
/* 42 << 378 */
|
|
{ { 0xee521c0af93098bfL,0xf517c925b79aa0ebL,0x17779f5e7bbc58feL,
|
|
0x093c3dc2769de891L,0xafbf32372a69ad0dL,0x33a95de702001e8cL },
|
|
{ 0x3b30afc73410a2b0L,0xb379a3f425bc7d9aL,0xf1c069251604a646L,
|
|
0x04f0bb334fca052fL,0xe5cd9c39cab33871L,0xf259795816fa1b16L } },
|
|
/* 43 << 378 */
|
|
{ { 0x291d65c801189d9aL,0xb16ca18bd8e94e49L,0x55f7680599440d4bL,
|
|
0x55d40c1b2eb7f0fdL,0x752d98f6018d7c64L,0xa1cae78c7b491c4dL },
|
|
{ 0x898fc8c78f66b8d3L,0xbb48956a3ceecd27L,0xb8f9498dfaa9451fL,
|
|
0x583b336aa5683ef8L,0x0deaa373e92656f4L,0x7f87b4412a9a0272L } },
|
|
/* 44 << 378 */
|
|
{ { 0x8b2fc4e96484fd40L,0xee702764a35d24eaL,0x15b28ac7b871c3f3L,
|
|
0x805b4048e097047fL,0xd6f1b8df647cad2fL,0xf1d5b458dc7dd67fL },
|
|
{ 0x324c529c25148803L,0xf6185ebe21274fafL,0xaf14751e95148b55L,
|
|
0x283ed89d28f284f4L,0x93ad20e74cbebf1aL,0x5f6ec65d882935e1L } },
|
|
/* 45 << 378 */
|
|
{ { 0x4b0c7d0c69c284cbL,0x907e4f38199c5176L,0x4ebfbda7cf3dab12L,
|
|
0x675f12cca4fa74a9L,0x86628102bdf579e6L,0xf08cbfe771c4d061L },
|
|
{ 0x9dde390e03bc1cb9L,0xb6d0d48b4c727915L,0x7cad28c370c0b7bfL,
|
|
0x8d978a8110d1e881L,0x1c071597924baeb1L,0x83c09192eb103fe0L } },
|
|
/* 46 << 378 */
|
|
{ { 0x494dbd2665925506L,0xe239b1d404b6fc45L,0x38a1ec5ce16b874dL,
|
|
0x1588c4712a3f012dL,0x5bd45adcdc6938b9L,0xe4c35c2244ab2fccL },
|
|
{ 0x87cbd9ff887108a2L,0x92a9c3b2144fd3eeL,0x3a0e55c7982a4928L,
|
|
0xcaf679765bb0fddfL,0x04616318263ea256L,0x56eb022838caa901L } },
|
|
/* 47 << 378 */
|
|
{ { 0x2f7de141a48da000L,0x323bd638835a4edfL,0xd2d9da967e155bd5L,
|
|
0x717c302a766b69daL,0x5927968beb0f6ca5L,0xfd96bd168940c766L },
|
|
{ 0xf89f7539a334fd71L,0x4ba9cd8bd870954fL,0x7e639523a3d57aa8L,
|
|
0x88f31e162314c0ceL,0xa836a6ad53b7e6e9L,0xd35a825190e43169L } },
|
|
/* 48 << 378 */
|
|
{ { 0xb3984b176c0f3509L,0xf9fa4483d8b4d6bcL,0xf4ac2b677dec20d2L,
|
|
0x67ef024eb3dbe034L,0x2dcc51180f94f4d7L,0x024cdcfd74a51393L },
|
|
{ 0xf1c0fead20e7abcbL,0xffc18f81d3a7414fL,0xb00ce5567062cb0bL,
|
|
0xeccb0521817bc8d1L,0xa0c0fe6040411c15L,0x053113221defbe00L } },
|
|
/* 49 << 378 */
|
|
{ { 0x74faca8a6af7e742L,0x6f206002d878a97aL,0xd69b7c83177305ffL,
|
|
0x605e7a32d2e2bcf1L,0x65bd03584590bf03L,0xab3ae700d1a378c5L },
|
|
{ 0x037e79028a929b0dL,0x83625ae0a7c451c6L,0x82a18f03492b01d4L,
|
|
0x12c6d168e67756b1L,0x1e704c3bd7924df1L,0x7708617f1989244eL } },
|
|
/* 50 << 378 */
|
|
{ { 0x4c98c61d097bde48L,0x6a55edf1c354f433L,0x1ceee947c3f39212L,
|
|
0x162cf27f36ba3cebL,0xd9f3982e3ec5f7ffL,0xd363e435d58d42d2L },
|
|
{ 0x2ee90d7bad36681dL,0xd916df56ebfbf51cL,0x61d94ed8d7c27fe7L,
|
|
0x5010582e923c1acdL,0x89d23e8b6de52994L,0x0a4f9c10525dbccfL } },
|
|
/* 51 << 378 */
|
|
{ { 0x7778fad7e65573e2L,0xa4af7a2d74986210L,0xd78ecebfec57d967L,
|
|
0x9be8a33f67d61b2eL,0x6888444f98a9add7L,0x218e7fb1b71a25a4L },
|
|
{ 0xf75a6b795f46323bL,0x2f8610ad11a52cd9L,0x23692f85fc6837caL,
|
|
0x3a37965f71fe847bL,0x29c25cc3fe3bdeeeL,0x68fefc83f624665aL } },
|
|
/* 52 << 378 */
|
|
{ { 0xe222eba4a4dcefe9L,0x63ad235fec1ceb74L,0x2e0bf749e05b18e7L,
|
|
0x547bd050b48bdd87L,0x0490c970f5aa2fc4L,0xced5e4cf2b431390L },
|
|
{ 0x07d8270451d2898eL,0x44b72442083b57d4L,0xa4ada2305037fce8L,
|
|
0x55f7905e50510da6L,0xd8ee724f8d890a98L,0x925a8e7c11b85640L } },
|
|
/* 53 << 378 */
|
|
{ { 0x8357d8bb460e77b2L,0xc749a6a77709a52bL,0x94035a1f0c82ab81L,
|
|
0x15245ac616c11ef4L,0xbf3cd96c034d021bL,0xf79e2d39b2e8fac1L },
|
|
{ 0x387015194b6cf1bdL,0x341f9b53b3143bf7L,0xb2584aabdda9acf2L,
|
|
0x16f34bdd553a8e68L,0x89d0c4c5da7830b3L,0x6cfe44c63f488c2eL } },
|
|
/* 54 << 378 */
|
|
{ { 0xee536a26d4bcaa59L,0x5ea6a57c699397bfL,0xb28f476b59a7eb99L,
|
|
0xa901f2551406ec90L,0x7b6e3e4d1f54ef38L,0x058ff1904c89c9a8L },
|
|
{ 0x5690fa10fca546ccL,0xfe98793145e14268L,0x6181fa1675362f5dL,
|
|
0x3ebe84466964b9aeL,0x3e1957812ce0f969L,0xb33ea619b0195852L } },
|
|
/* 55 << 378 */
|
|
{ { 0xeef402410ec537acL,0x1f72c1f8911316f6L,0xab4bb08268cc6678L,
|
|
0x031fc087255e8c5eL,0x99c2ff0b948ac53bL,0x13db3201919c1870L },
|
|
{ 0xdec81fd312057a3cL,0xbdffa226ff7a44cbL,0x748d2e93d97167e2L,
|
|
0x33a9fe40bd21effeL,0xe08e4213817ea560L,0x2221798b9f4337d5L } },
|
|
/* 56 << 378 */
|
|
{ { 0xda828fe556467257L,0x5e9abf67d640c2a1L,0x0eed233cc25c696aL,
|
|
0x72483dc5b3e1d84fL,0x30bf1ee34f114abcL,0xf58b321ed1f9bce8L },
|
|
{ 0xcb26564c97524f33L,0xdc2f105e1e453229L,0x9da43ceb72a982ddL,
|
|
0xecf5649dfeef8862L,0xd8afda341fa2f06dL,0xf0d0ced355035432L } },
|
|
/* 57 << 378 */
|
|
{ { 0xec22bb32205a5301L,0xe4d168e75b0b727bL,0x91217a6be34fe2e0L,
|
|
0x03c6831675f0f139L,0xb21e275d8b991b29L,0x7f517c9c01f3f401L },
|
|
{ 0xbbe95d19e55e49faL,0xc5470808504514b1L,0xb88be15c7cc1367dL,
|
|
0x242cb06bbfd24bacL,0x08647a158d2ab0baL,0x8f1fd1bd5716ed9bL } },
|
|
/* 58 << 378 */
|
|
{ { 0xe787054518ba5236L,0x243622f9e8a47507L,0xe7d94f4697b97d7cL,
|
|
0xb120589021649255L,0x8b5101310dd4e1d4L,0x1690687e164c44baL },
|
|
{ 0x65bb4d8cf100fef5L,0xfffffee70a684c3dL,0x2aa11707c463a975L,
|
|
0xccaddeaf391ad03dL,0x4d2cda1c81cca7deL,0x9d3eaa58c5b0f8e7L } },
|
|
/* 59 << 378 */
|
|
{ { 0x3d92ecc18f8802dfL,0x3024ce311a719461L,0x6bdf53fc46c1f31bL,
|
|
0x4f4576a12c9c7744L,0xe1ee7508c3ff7356L,0xd4b25ed3883ebf03L },
|
|
{ 0x1dc46052420c3ac9L,0x376ebbfa11ecefa9L,0x36e175265e9693f5L,
|
|
0xeb82b33740ed3143L,0x6960312ff19fa66aL,0xc7edb5db6c742e1bL } },
|
|
/* 60 << 378 */
|
|
{ { 0x5bfa10cd1ca459edL,0x593f085a6dcf56bfL,0xe6f0ad9bc0579c3eL,
|
|
0xc11c95a22527c1adL,0x7cfa71e1cf1cb8b3L,0xedcff8331d6dc79dL },
|
|
{ 0x581c4bbe432521c9L,0xbf620096144e11a0L,0x54c38b71be3a107bL,
|
|
0xed555e37e2606ec0L,0x3fb148b8d721d034L,0x79d53dad0091bc90L } },
|
|
/* 61 << 378 */
|
|
{ { 0x4b98cb69c5c8a182L,0x887071bbcac96dabL,0x03d42e96afc190c3L,
|
|
0xbc2c3b8d7a813820L,0x1ee7797f6590d0ecL,0x4a95f7f3ad4777a4L },
|
|
{ 0x7a36de4e2a8d2736L,0x7f8c6751ad78dab6L,0xf9874bf6974c0a8eL,
|
|
0x759fee1c8b53025aL,0x1b00fb28a2171c8bL,0xdf206f19be8f2e7eL } },
|
|
/* 62 << 378 */
|
|
{ { 0xe6bbcf0bf8ed6302L,0x7734dc91f8fe7a42L,0x840210ee61ff9d1eL,
|
|
0xbbf2d5477007f2e9L,0x0f17d421a6542ac0L,0x0b2d3d2ee01df4e9L },
|
|
{ 0x520e4fbb84f3703fL,0x8362f7b1431106b7L,0xdcfc96ae6e50d836L,
|
|
0x2dfa176cc44153bbL,0xeef1c6710b09ffe2L,0x633a2ac888531d81L } },
|
|
/* 63 << 378 */
|
|
{ { 0x29262b6d7636a78dL,0xdc504f01d3ce2967L,0xa441e5035bcf0e19L,
|
|
0x8025224f7ad39d9aL,0x780ec65de871b792L,0x977b4bce597694b4L },
|
|
{ 0xe05eaeb87fe3ef11L,0x1cff87ac9748b10eL,0xb669c1d60c34153aL,
|
|
0xf5da63e0f8f90368L,0x6f7f2fc47d31bf61L,0x37e9158235c16a0fL } },
|
|
/* 64 << 378 */
|
|
{ { 0xcf17f9dc08d1be5dL,0xb55de4c8afdfeb23L,0xa69454ffe437b29cL,
|
|
0x6628d789e27ee9e2L,0x56e3b975ee3af03bL,0x0083fe9c2f532d62L },
|
|
{ 0xcae15213e63e7511L,0xdb5384f386ed849cL,0x902ba959fa4d825fL,
|
|
0xbad700d55ae17566L,0x16b2c5dc14c82eb4L,0xa4b057a736708ea7L } },
|
|
};
|
|
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Pre-computed table containing multiples of g times powers of 2.
|
|
* Width between powers is 7 bits.
|
|
* Accumulate into the result.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to scalar multiply.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table of points.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_add_only_6(sp_point_384* r, const sp_point_384* g,
|
|
const sp_table_entry_384* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* rt = NULL;
|
|
sp_digit* tmp = NULL;
|
|
#else
|
|
sp_point_384 rt[2];
|
|
sp_digit tmp[2 * 6 * 6];
|
|
#endif
|
|
sp_point_384* p = NULL;
|
|
sp_digit* negy = NULL;
|
|
int i;
|
|
ecc_recode_384 v[55];
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
negy = tmp;
|
|
p = rt + 1;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_ecc_recode_7_6(k, v);
|
|
|
|
XMEMCPY(p->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
XMEMCPY(rt->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
|
|
i = 54;
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_65_6(rt, &table[i * 65], v[i].i);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(rt->x, table[i * 65 + v[i].i].x, sizeof(table->x));
|
|
XMEMCPY(rt->y, table[i * 65 + v[i].i].y, sizeof(table->y));
|
|
}
|
|
rt->infinity = !v[i].i;
|
|
for (--i; i>=0; i--) {
|
|
#ifndef WC_NO_CACHE_RESISTANT
|
|
if (ct) {
|
|
sp_384_get_entry_65_6(p, &table[i * 65], v[i].i);
|
|
}
|
|
else
|
|
#endif
|
|
{
|
|
XMEMCPY(p->x, table[i * 65 + v[i].i].x, sizeof(table->x));
|
|
XMEMCPY(p->y, table[i * 65 + v[i].i].y, sizeof(table->y));
|
|
}
|
|
p->infinity = !v[i].i;
|
|
sp_384_sub_6(negy, p384_mod, p->y);
|
|
sp_384_norm_6(negy);
|
|
sp_384_cond_copy_6(p->y, negy, 0 - v[i].neg);
|
|
sp_384_proj_point_add_qz1_6(rt, rt, p, tmp);
|
|
}
|
|
if (map != 0) {
|
|
sp_384_map_6(r, rt, tmp);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_384));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(tmp, sizeof(sp_digit) * 2 * 6 * 6);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(tmp, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_mulmod_base_6(sp_point_384* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_384_ecc_mulmod_add_only_6(r, NULL, p384_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Multiply the base point of P384 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_384(const mp_int* km, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_384 point[1];
|
|
sp_digit k[6];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(k, 6, km);
|
|
|
|
err = sp_384_ecc_mulmod_base_6(point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_point_to_ecc_point_6(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply the base point of P384 by the scalar, add point a and return
|
|
* the result. If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* am Point to add to scalar mulitply result.
|
|
* inMont Point to add is in montgomery form.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_add_384(const mp_int* km, const ecc_point* am,
|
|
int inMont, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_384 point[2];
|
|
sp_digit k[6 + 6 * 2 * 6];
|
|
#endif
|
|
sp_point_384* addP = NULL;
|
|
sp_digit* tmp = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(
|
|
sizeof(sp_digit) * (6 + 6 * 2 * 6),
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
addP = point + 1;
|
|
tmp = k + 6;
|
|
|
|
sp_384_from_mp(k, 6, km);
|
|
sp_384_point_from_ecc_point_6(addP, am);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->x, addP->x, p384_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->y, addP->y, p384_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_384_mod_mul_norm_6(addP->z, addP->z, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_base_6(point, k, 0, 0, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_proj_point_add_6(point, point, addP, tmp);
|
|
|
|
if (map) {
|
|
sp_384_map_6(point, point, tmp);
|
|
}
|
|
|
|
err = sp_384_point_to_ecc_point_6(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#if defined(WOLFSSL_VALIDATE_ECC_KEYGEN) || defined(HAVE_ECC_SIGN) || \
|
|
defined(HAVE_ECC_VERIFY)
|
|
/* Returns 1 if the number of zero.
|
|
* Implementation is constant time.
|
|
*
|
|
* a Number to check.
|
|
* returns 1 if the number is zero and 0 otherwise.
|
|
*/
|
|
static int sp_384_iszero_6(const sp_digit* a)
|
|
{
|
|
return (a[0] | a[1] | a[2] | a[3] | a[4] | a[5]) == 0;
|
|
}
|
|
|
|
#endif /* WOLFSSL_VALIDATE_ECC_KEYGEN | HAVE_ECC_SIGN | HAVE_ECC_VERIFY */
|
|
/* Add 1 to a. (a = a + 1)
|
|
*
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_384_add_one_6(sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x1, x2, [%[a], 0]\n\t"
|
|
"adds x1, x1, #1\n\t"
|
|
"ldr x3, [%[a], 16]\n\t"
|
|
"adcs x2, x2, xzr\n\t"
|
|
"ldr x4, [%[a], 24]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"stp x1, x2, [%[a], 0]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"stp x3, x4, [%[a], 16]\n\t"
|
|
"ldp x1, x2, [%[a], 32]\n\t"
|
|
"adcs x1, x1, xzr\n\t"
|
|
"adcs x2, x2, xzr\n\t"
|
|
"stp x1, x2, [%[a], 32]\n\t"
|
|
:
|
|
: [a] "r" (a)
|
|
: "memory", "x1", "x2", "x3", "x4"
|
|
);
|
|
}
|
|
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_384_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Generates a scalar that is in the range 1..order-1.
|
|
*
|
|
* rng Random number generator.
|
|
* k Scalar value.
|
|
* returns RNG failures, MEMORY_E when memory allocation fails and
|
|
* MP_OKAY on success.
|
|
*/
|
|
static int sp_384_ecc_gen_k_6(WC_RNG* rng, sp_digit* k)
|
|
{
|
|
int err;
|
|
byte buf[48];
|
|
|
|
do {
|
|
err = wc_RNG_GenerateBlock(rng, buf, sizeof(buf));
|
|
if (err == 0) {
|
|
sp_384_from_bin(k, 6, buf, (int)sizeof(buf));
|
|
if (sp_384_cmp_6(k, p384_order2) <= 0) {
|
|
sp_384_add_one_6(k);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
while (err == 0);
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Makes a random EC key pair.
|
|
*
|
|
* rng Random number generator.
|
|
* priv Generated private value.
|
|
* pub Generated public point.
|
|
* heap Heap to use for allocation.
|
|
* returns ECC_INF_E when the point does not have the correct order, RNG
|
|
* failures, MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_make_key_384(WC_RNG* rng, mp_int* priv, ecc_point* pub, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
sp_point_384 point[2];
|
|
#else
|
|
sp_point_384 point[1];
|
|
#endif
|
|
sp_digit k[6];
|
|
#endif
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
sp_point_384* infinity = NULL;
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap, DYNAMIC_TYPE_ECC);
|
|
#else
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384), heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
infinity = point + 1;
|
|
#endif
|
|
|
|
err = sp_384_ecc_gen_k_6(rng, k);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_base_6(point, k, 1, 1, NULL);
|
|
}
|
|
|
|
#ifdef WOLFSSL_VALIDATE_ECC_KEYGEN
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_6(infinity, point, p384_order, 1, 1, NULL);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
if (sp_384_iszero_6(point->x) || sp_384_iszero_6(point->y)) {
|
|
err = ECC_INF_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(k, priv);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_point_to_ecc_point_6(point, pub);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL) {
|
|
/* point is not sensitive, so no need to zeroize */
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
}
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef HAVE_ECC_DHE
|
|
/* Write r as big endian to byte array.
|
|
* Fixed length number of bytes written: 48
|
|
*
|
|
* r A single precision integer.
|
|
* a Byte array.
|
|
*/
|
|
static void sp_384_to_bin_6(sp_digit* r, byte* a)
|
|
{
|
|
int i;
|
|
int j;
|
|
|
|
for (i = 5, j = 0; i >= 0; i--) {
|
|
a[j++] = r[i] >> 56;
|
|
a[j++] = r[i] >> 48;
|
|
a[j++] = r[i] >> 40;
|
|
a[j++] = r[i] >> 32;
|
|
a[j++] = r[i] >> 24;
|
|
a[j++] = r[i] >> 16;
|
|
a[j++] = r[i] >> 8;
|
|
a[j++] = r[i] >> 0;
|
|
}
|
|
}
|
|
|
|
/* Multiply the point by the scalar and serialize the X ordinate.
|
|
* The number is 0 padded to maximum size on output.
|
|
*
|
|
* priv Scalar to multiply the point by.
|
|
* pub Point to multiply.
|
|
* out Buffer to hold X ordinate.
|
|
* outLen On entry, size of the buffer in bytes.
|
|
* On exit, length of data in buffer in bytes.
|
|
* heap Heap to use for allocation.
|
|
* returns BUFFER_E if the buffer is to small for output size,
|
|
* MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_secret_gen_384(const mp_int* priv, const ecc_point* pub, byte* out,
|
|
word32* outLen, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_384 point[1];
|
|
sp_digit k[6];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
if (*outLen < 48U) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(k, 6, priv);
|
|
sp_384_point_from_ecc_point_6(point, pub);
|
|
err = sp_384_ecc_mulmod_6(point, point, k, 1, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_to_bin_6(point->x, out);
|
|
*outLen = 48;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_DHE */
|
|
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_384_sub_in_place_6(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldr x2, [%[a], 32]\n\t"
|
|
"ldr x3, [%[a], 40]\n\t"
|
|
"ldr x6, [%[b], 32]\n\t"
|
|
"ldr x7, [%[b], 40]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"str x2, [%[a], 32]\n\t"
|
|
"str x3, [%[a], 40]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_384_mul_d_6(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 48\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"stp x5, x3, [%[r], 40]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_384_word_6(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_384_mask_6(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<6; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
r[0] = a[0] & m;
|
|
r[1] = a[1] & m;
|
|
r[2] = a[2] & m;
|
|
r[3] = a[3] & m;
|
|
r[4] = a[4] & m;
|
|
r[5] = a[5] & m;
|
|
#endif
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_384_div_6(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[12], t2[7];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[5];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 6);
|
|
for (i=5; i>=0; i--) {
|
|
sp_digit hi = t1[6 + i] - (t1[6 + i] == div);
|
|
r1 = div_384_word_6(hi, t1[6 + i - 1], div);
|
|
|
|
sp_384_mul_d_6(t2, d, r1);
|
|
t1[6 + i] += sp_384_sub_in_place_6(&t1[i], t2);
|
|
t1[6 + i] -= t2[6];
|
|
sp_384_mask_6(t2, d, t1[6 + i]);
|
|
t1[6 + i] += sp_384_add_6(&t1[i], &t1[i], t2);
|
|
sp_384_mask_6(t2, d, t1[6 + i]);
|
|
t1[6 + i] += sp_384_add_6(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_384_cmp_6(t1, d) >= 0;
|
|
sp_384_cond_sub_6(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_384_mod_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_384_div_6(a, m, NULL, r);
|
|
}
|
|
|
|
#endif
|
|
#if defined(HAVE_ECC_SIGN) || defined(HAVE_ECC_VERIFY)
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Order-2 for the P384 curve. */
|
|
static const uint64_t p384_order_minus_2[6] = {
|
|
0xecec196accc52971U,0x581a0db248b0a77aU,0xc7634d81f4372ddfU,
|
|
0xffffffffffffffffU,0xffffffffffffffffU,0xffffffffffffffffU
|
|
};
|
|
#else
|
|
/* The low half of the order-2 of the P384 curve. */
|
|
static const uint64_t p384_order_low[3] = {
|
|
0xecec196accc52971U,0x581a0db248b0a77aU,0xc7634d81f4372ddfU
|
|
};
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
/* Multiply two number mod the order of P384 curve. (r = a * b mod order)
|
|
*
|
|
* r Result of the multiplication.
|
|
* a First operand of the multiplication.
|
|
* b Second operand of the multiplication.
|
|
*/
|
|
static void sp_384_mont_mul_order_6(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_384_mul_6(r, a, b);
|
|
sp_384_mont_reduce_order_6(r, p384_order, p384_mp_order);
|
|
}
|
|
|
|
/* Square number mod the order of P384 curve. (r = a * a mod order)
|
|
*
|
|
* r Result of the squaring.
|
|
* a Number to square.
|
|
*/
|
|
static void sp_384_mont_sqr_order_6(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_384_sqr_6(r, a);
|
|
sp_384_mont_reduce_order_6(r, p384_order, p384_mp_order);
|
|
}
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Square number mod the order of P384 curve a number of times.
|
|
* (r = a ^ n mod order)
|
|
*
|
|
* r Result of the squaring.
|
|
* a Number to square.
|
|
*/
|
|
static void sp_384_mont_sqr_n_order_6(sp_digit* r, const sp_digit* a, int n)
|
|
{
|
|
int i;
|
|
|
|
sp_384_mont_sqr_order_6(r, a);
|
|
for (i=1; i<n; i++) {
|
|
sp_384_mont_sqr_order_6(r, r);
|
|
}
|
|
}
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
|
|
/* Invert the number, in Montgomery form, modulo the order of the P384 curve.
|
|
* (r = 1 / a mod order)
|
|
*
|
|
* r Inverse result.
|
|
* a Number to invert.
|
|
* td Temporary data.
|
|
*/
|
|
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_384_mont_inv_order_6_ctx {
|
|
int state;
|
|
int i;
|
|
} sp_384_mont_inv_order_6_ctx;
|
|
static int sp_384_mont_inv_order_6_nb(sp_ecc_ctx_t* sp_ctx, sp_digit* r, const sp_digit* a,
|
|
sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_384_mont_inv_order_6_ctx* ctx = (sp_384_mont_inv_order_6_ctx*)sp_ctx;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_384_mont_inv_order_6_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0:
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 6);
|
|
ctx->i = 382;
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
sp_384_mont_sqr_order_6(t, t);
|
|
ctx->state = 2;
|
|
break;
|
|
case 2:
|
|
if ((p384_order_minus_2[ctx->i / 64] & ((sp_int_digit)1 << (ctx->i % 64))) != 0) {
|
|
sp_384_mont_mul_order_6(t, t, a);
|
|
}
|
|
ctx->i--;
|
|
ctx->state = (ctx->i == 0) ? 3 : 1;
|
|
break;
|
|
case 3:
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 6U);
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_384_mont_inv_order_6(sp_digit* r, const sp_digit* a,
|
|
sp_digit* td)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit* t = td;
|
|
int i;
|
|
|
|
XMEMCPY(t, a, sizeof(sp_digit) * 6);
|
|
for (i=382; i>=0; i--) {
|
|
sp_384_mont_sqr_order_6(t, t);
|
|
if ((p384_order_minus_2[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_384_mont_mul_order_6(t, t, a);
|
|
}
|
|
}
|
|
XMEMCPY(r, t, sizeof(sp_digit) * 6U);
|
|
#else
|
|
sp_digit* t = td;
|
|
sp_digit* t2 = td + 2 * 6;
|
|
sp_digit* t3 = td + 4 * 6;
|
|
int i;
|
|
|
|
/* t = a^2 */
|
|
sp_384_mont_sqr_order_6(t, a);
|
|
/* t = a^3 = t * a */
|
|
sp_384_mont_mul_order_6(t, t, a);
|
|
/* t2= a^c = t ^ 2 ^ 2 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 2);
|
|
/* t = a^f = t2 * t */
|
|
sp_384_mont_mul_order_6(t, t2, t);
|
|
/* t2= a^f0 = t ^ 2 ^ 4 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 4);
|
|
/* t = a^ff = t2 * t */
|
|
sp_384_mont_mul_order_6(t, t2, t);
|
|
/* t2= a^ff00 = t ^ 2 ^ 8 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 8);
|
|
/* t3= a^ffff = t2 * t */
|
|
sp_384_mont_mul_order_6(t3, t2, t);
|
|
/* t2= a^ffff0000 = t3 ^ 2 ^ 16 */
|
|
sp_384_mont_sqr_n_order_6(t2, t3, 16);
|
|
/* t = a^ffffffff = t2 * t3 */
|
|
sp_384_mont_mul_order_6(t, t2, t3);
|
|
/* t2= a^ffffffff0000 = t ^ 2 ^ 16 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 16);
|
|
/* t = a^ffffffffffff = t2 * t3 */
|
|
sp_384_mont_mul_order_6(t, t2, t3);
|
|
/* t2= a^ffffffffffff000000000000 = t ^ 2 ^ 48 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 48);
|
|
/* t= a^fffffffffffffffffffffffff = t2 * t */
|
|
sp_384_mont_mul_order_6(t, t2, t);
|
|
/* t2= a^ffffffffffffffffffffffff000000000000000000000000 */
|
|
sp_384_mont_sqr_n_order_6(t2, t, 96);
|
|
/* t2= a^ffffffffffffffffffffffffffffffffffffffffffffffff = t2 * t */
|
|
sp_384_mont_mul_order_6(t2, t2, t);
|
|
for (i=191; i>=1; i--) {
|
|
sp_384_mont_sqr_order_6(t2, t2);
|
|
if ((p384_order_low[i / 64] & ((sp_int_digit)1 << (i % 64))) != 0) {
|
|
sp_384_mont_mul_order_6(t2, t2, a);
|
|
}
|
|
}
|
|
sp_384_mont_sqr_order_6(t2, t2);
|
|
sp_384_mont_mul_order_6(r, t2, a);
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
#endif /* HAVE_ECC_SIGN | HAVE_ECC_VERIFY */
|
|
#ifdef HAVE_ECC_SIGN
|
|
#ifndef SP_ECC_MAX_SIG_GEN
|
|
#define SP_ECC_MAX_SIG_GEN 64
|
|
#endif
|
|
|
|
/* Calculate second signature value S from R, k and private value.
|
|
*
|
|
* s = (r * x + e) / k
|
|
*
|
|
* s Signature value.
|
|
* r First signature value.
|
|
* k Ephemeral private key.
|
|
* x Private key as a number.
|
|
* e Hash of message as a number.
|
|
* tmp Temporary storage for intermediate numbers.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_calc_s_6(sp_digit* s, const sp_digit* r, sp_digit* k,
|
|
sp_digit* x, const sp_digit* e, sp_digit* tmp)
|
|
{
|
|
int err;
|
|
sp_digit carry;
|
|
sp_int64 c;
|
|
sp_digit* kInv = k;
|
|
|
|
/* Conv k to Montgomery form (mod order) */
|
|
sp_384_mul_6(k, k, p384_norm_order);
|
|
err = sp_384_mod_6(k, k, p384_order);
|
|
if (err == MP_OKAY) {
|
|
sp_384_norm_6(k);
|
|
|
|
/* kInv = 1/k mod order */
|
|
sp_384_mont_inv_order_6(kInv, k, tmp);
|
|
sp_384_norm_6(kInv);
|
|
|
|
/* s = r * x + e */
|
|
sp_384_mul_6(x, x, r);
|
|
err = sp_384_mod_6(x, x, p384_order);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_norm_6(x);
|
|
carry = sp_384_add_6(s, e, x);
|
|
sp_384_cond_sub_6(s, s, p384_order, 0 - carry);
|
|
sp_384_norm_6(s);
|
|
c = sp_384_cmp_6(s, p384_order);
|
|
sp_384_cond_sub_6(s, s, p384_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_384_norm_6(s);
|
|
|
|
/* s = s * k^-1 mod order */
|
|
sp_384_mont_mul_order_6(s, s, kInv);
|
|
sp_384_norm_6(s);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Sign the hash using the private key.
|
|
* e = [hash, 384 bits] from binary
|
|
* r = (k.G)->x mod order
|
|
* s = (r * x + e) / k mod order
|
|
* The hash is truncated to the first 384 bits.
|
|
*
|
|
* hash Hash to sign.
|
|
* hashLen Length of the hash data.
|
|
* rng Random number generator.
|
|
* priv Private part of key - scalar.
|
|
* rm First part of result as an mp_int.
|
|
* sm Sirst part of result as an mp_int.
|
|
* heap Heap to use for allocation.
|
|
* returns RNG failures, MEMORY_E when memory allocation fails and
|
|
* MP_OKAY on success.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_ecc_sign_384_ctx {
|
|
int state;
|
|
union {
|
|
sp_384_ecc_mulmod_6_ctx mulmod_ctx;
|
|
sp_384_mont_inv_order_6_ctx mont_inv_order_ctx;
|
|
};
|
|
sp_digit e[2*6];
|
|
sp_digit x[2*6];
|
|
sp_digit k[2*6];
|
|
sp_digit r[2*6];
|
|
sp_digit tmp[3 * 2*6];
|
|
sp_point_384 point;
|
|
sp_digit* s;
|
|
sp_digit* kInv;
|
|
int i;
|
|
} sp_ecc_sign_384_ctx;
|
|
|
|
int sp_ecc_sign_384_nb(sp_ecc_ctx_t* sp_ctx, const byte* hash, word32 hashLen, WC_RNG* rng,
|
|
mp_int* priv, mp_int* rm, mp_int* sm, mp_int* km, void* heap)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_ecc_sign_384_ctx* ctx = (sp_ecc_sign_384_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_ecc_sign_384_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
(void)heap;
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
ctx->s = ctx->e;
|
|
ctx->kInv = ctx->k;
|
|
if (hashLen > 48U) {
|
|
hashLen = 48U;
|
|
}
|
|
|
|
ctx->i = SP_ECC_MAX_SIG_GEN;
|
|
ctx->state = 1;
|
|
break;
|
|
case 1: /* GEN */
|
|
/* New random point. */
|
|
if (km == NULL || mp_iszero(km)) {
|
|
err = sp_384_ecc_gen_k_6(rng, ctx->k);
|
|
}
|
|
else {
|
|
sp_384_from_mp(ctx->k, 6, km);
|
|
mp_zero(km);
|
|
}
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 2;
|
|
break;
|
|
case 2: /* MULMOD */
|
|
err = sp_384_ecc_mulmod_6_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx,
|
|
&ctx->point, &p384_base, ctx->k, 1, 1, heap);
|
|
if (err == MP_OKAY) {
|
|
ctx->state = 3;
|
|
}
|
|
break;
|
|
case 3: /* MODORDER */
|
|
{
|
|
sp_int64 c;
|
|
/* r = point->x mod order */
|
|
XMEMCPY(ctx->r, ctx->point.x, sizeof(sp_digit) * 6U);
|
|
sp_384_norm_6(ctx->r);
|
|
c = sp_384_cmp_6(ctx->r, p384_order);
|
|
sp_384_cond_sub_6(ctx->r, ctx->r, p384_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_384_norm_6(ctx->r);
|
|
|
|
sp_384_from_mp(ctx->x, 6, priv);
|
|
sp_384_from_bin(ctx->e, 6, hash, (int)hashLen);
|
|
ctx->state = 4;
|
|
break;
|
|
}
|
|
case 4: /* KMODORDER */
|
|
/* Conv k to Montgomery form (mod order) */
|
|
sp_384_mul_6(ctx->k, ctx->k, p384_norm_order);
|
|
err = sp_384_mod_6(ctx->k, ctx->k, p384_order);
|
|
if (err == MP_OKAY) {
|
|
sp_384_norm_6(ctx->k);
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 5;
|
|
}
|
|
break;
|
|
case 5: /* KINV */
|
|
/* kInv = 1/k mod order */
|
|
err = sp_384_mont_inv_order_6_nb((sp_ecc_ctx_t*)&ctx->mont_inv_order_ctx, ctx->kInv, ctx->k, ctx->tmp);
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 6;
|
|
}
|
|
break;
|
|
case 6: /* KINVNORM */
|
|
sp_384_norm_6(ctx->kInv);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7: /* R */
|
|
/* s = r * x + e */
|
|
sp_384_mul_6(ctx->x, ctx->x, ctx->r);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8: /* S1 */
|
|
err = sp_384_mod_6(ctx->x, ctx->x, p384_order);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 9;
|
|
break;
|
|
case 9: /* S2 */
|
|
{
|
|
sp_digit carry;
|
|
sp_int64 c;
|
|
sp_384_norm_6(ctx->x);
|
|
carry = sp_384_add_6(ctx->s, ctx->e, ctx->x);
|
|
sp_384_cond_sub_6(ctx->s, ctx->s,
|
|
p384_order, 0 - carry);
|
|
sp_384_norm_6(ctx->s);
|
|
c = sp_384_cmp_6(ctx->s, p384_order);
|
|
sp_384_cond_sub_6(ctx->s, ctx->s, p384_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_384_norm_6(ctx->s);
|
|
|
|
/* s = s * k^-1 mod order */
|
|
sp_384_mont_mul_order_6(ctx->s, ctx->s, ctx->kInv);
|
|
sp_384_norm_6(ctx->s);
|
|
|
|
/* Check that signature is usable. */
|
|
if (sp_384_iszero_6(ctx->s) == 0) {
|
|
ctx->state = 10;
|
|
break;
|
|
}
|
|
#ifdef WOLFSSL_ECDSA_SET_K_ONE_LOOP
|
|
ctx->i = 1;
|
|
#endif
|
|
|
|
/* not usable gen, try again */
|
|
ctx->i--;
|
|
if (ctx->i == 0) {
|
|
err = RNG_FAILURE_E;
|
|
}
|
|
ctx->state = 1;
|
|
break;
|
|
}
|
|
case 10: /* RES */
|
|
err = sp_384_to_mp(ctx->r, rm);
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(ctx->s, sm);
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 10) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
if (err != FP_WOULDBLOCK) {
|
|
XMEMSET(ctx->e, 0, sizeof(sp_digit) * 2U * 6U);
|
|
XMEMSET(ctx->x, 0, sizeof(sp_digit) * 2U * 6U);
|
|
XMEMSET(ctx->k, 0, sizeof(sp_digit) * 2U * 6U);
|
|
XMEMSET(ctx->r, 0, sizeof(sp_digit) * 2U * 6U);
|
|
XMEMSET(ctx->tmp, 0, sizeof(sp_digit) * 3U * 2U * 6U);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
int sp_ecc_sign_384(const byte* hash, word32 hashLen, WC_RNG* rng,
|
|
const mp_int* priv, mp_int* rm, mp_int* sm, mp_int* km, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* e = NULL;
|
|
sp_point_384* point = NULL;
|
|
#else
|
|
sp_digit e[7 * 2 * 6];
|
|
sp_point_384 point[1];
|
|
#endif
|
|
sp_digit* x = NULL;
|
|
sp_digit* k = NULL;
|
|
sp_digit* r = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_digit* s = NULL;
|
|
sp_int64 c;
|
|
int err = MP_OKAY;
|
|
int i;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
point = (sp_point_384*)XMALLOC(sizeof(sp_point_384), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
e = (sp_digit*)XMALLOC(sizeof(sp_digit) * 7 * 2 * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (e == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
x = e + 2 * 6;
|
|
k = e + 4 * 6;
|
|
r = e + 6 * 6;
|
|
tmp = e + 8 * 6;
|
|
s = e;
|
|
|
|
if (hashLen > 48U) {
|
|
hashLen = 48U;
|
|
}
|
|
}
|
|
|
|
for (i = SP_ECC_MAX_SIG_GEN; err == MP_OKAY && i > 0; i--) {
|
|
/* New random point. */
|
|
if (km == NULL || mp_iszero(km)) {
|
|
err = sp_384_ecc_gen_k_6(rng, k);
|
|
}
|
|
else {
|
|
sp_384_from_mp(k, 6, km);
|
|
mp_zero(km);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_base_6(point, k, 1, 1, heap);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* r = point->x mod order */
|
|
XMEMCPY(r, point->x, sizeof(sp_digit) * 6U);
|
|
sp_384_norm_6(r);
|
|
c = sp_384_cmp_6(r, p384_order);
|
|
sp_384_cond_sub_6(r, r, p384_order,
|
|
(sp_digit)0 - (sp_digit)(c >= 0));
|
|
sp_384_norm_6(r);
|
|
|
|
sp_384_from_mp(x, 6, priv);
|
|
sp_384_from_bin(e, 6, hash, (int)hashLen);
|
|
|
|
err = sp_384_calc_s_6(s, r, k, x, e, tmp);
|
|
}
|
|
|
|
/* Check that signature is usable. */
|
|
if ((err == MP_OKAY) && (sp_384_iszero_6(s) == 0)) {
|
|
break;
|
|
}
|
|
#ifdef WOLFSSL_ECDSA_SET_K_ONE_LOOP
|
|
i = 1;
|
|
#endif
|
|
}
|
|
|
|
if (i == 0) {
|
|
err = RNG_FAILURE_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(r, rm);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(s, sm);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (e != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(e, sizeof(sp_digit) * 7 * 2 * 6);
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(e, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (point != NULL)
|
|
#endif
|
|
{
|
|
ForceZero(point, sizeof(sp_point_384));
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_SIGN */
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Divide the number by 2 mod the modulus. (r = a / 2 % m)
|
|
*
|
|
* r Result of division by 2.
|
|
* a Number to divide.
|
|
* m Modulus.
|
|
*/
|
|
static void sp_384_div2_mod_6(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldr x3, [%[a], 0]\n\t"
|
|
"ldr x4, [%[a], 8]\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"ldr x7, [%[a], 32]\n\t"
|
|
"ldr x8, [%[a], 40]\n\t"
|
|
"ldr x9, [%[m], 0]\n\t"
|
|
"ldr x10, [%[m], 8]\n\t"
|
|
"ldr x11, [%[m], 16]\n\t"
|
|
"ldr x12, [%[m], 24]\n\t"
|
|
"ldr x13, [%[m], 32]\n\t"
|
|
"ldr x14, [%[m], 40]\n\t"
|
|
"ands x15, x3, 1\n\t"
|
|
"b.eq 1f\n\t"
|
|
"adds x3, x3, x9\n\t"
|
|
"adcs x4, x4, x10\n\t"
|
|
"adcs x5, x5, x11\n\t"
|
|
"adcs x6, x6, x12\n\t"
|
|
"adcs x7, x7, x13\n\t"
|
|
"adcs x8, x8, x14\n\t"
|
|
"cset x15, cs\n\t"
|
|
"\n1:\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"lsr x10, x4, 1\n\t"
|
|
"lsr x11, x5, 1\n\t"
|
|
"lsr x12, x6, 1\n\t"
|
|
"lsr x13, x7, 1\n\t"
|
|
"lsr x14, x8, 1\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"orr x4, x10, x5, lsl 63\n\t"
|
|
"orr x5, x11, x6, lsl 63\n\t"
|
|
"orr x6, x12, x7, lsl 63\n\t"
|
|
"orr x7, x13, x8, lsl 63\n\t"
|
|
"orr x8, x14, x15, lsl 63\n\t"
|
|
"str x3, [%[r], 0]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"str x6, [%[r], 24]\n\t"
|
|
"str x7, [%[r], 32]\n\t"
|
|
"str x8, [%[r], 40]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15"
|
|
);
|
|
}
|
|
|
|
static int sp_384_num_bits_64_6(sp_digit n)
|
|
{
|
|
int64_t r = -1;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x1, 64\n\t"
|
|
"clz %[r], %[n]\n\t"
|
|
"sub %[r], x1, %[r]"
|
|
: [r] "+r" (r)
|
|
: [n] "r" (n)
|
|
: "x1"
|
|
);
|
|
|
|
return r + 1;
|
|
}
|
|
|
|
static int sp_384_num_bits_6(const sp_digit* a)
|
|
{
|
|
int i;
|
|
int r = 0;
|
|
|
|
for (i=5; i>=0; i--) {
|
|
if (a[i] != 0) {
|
|
r = sp_384_num_bits_64_6(a[i]);
|
|
r += i * 64;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return r;
|
|
}
|
|
|
|
/* Non-constant time modular inversion.
|
|
*
|
|
* @param [out] r Resulting number.
|
|
* @param [in] a Number to invert.
|
|
* @param [in] m Modulus.
|
|
* @return MP_OKAY on success.
|
|
*/
|
|
static int sp_384_mod_inv_6(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
sp_digit u[6];
|
|
sp_digit v[6];
|
|
sp_digit b[6];
|
|
sp_digit d[6];
|
|
int ut, vt;
|
|
sp_digit o;
|
|
|
|
XMEMCPY(u, m, sizeof(u));
|
|
XMEMCPY(v, a, sizeof(v));
|
|
|
|
ut = sp_384_num_bits_6(u);
|
|
vt = sp_384_num_bits_6(v);
|
|
|
|
XMEMSET(b, 0, sizeof(b));
|
|
if ((v[0] & 1) == 0) {
|
|
sp_384_rshift1_6(v, v);
|
|
XMEMCPY(d, m, sizeof(u));
|
|
d[0] += 1;
|
|
sp_384_rshift1_6(d, d);
|
|
vt--;
|
|
|
|
while ((v[0] & 1) == 0) {
|
|
sp_384_rshift1_6(v, v);
|
|
sp_384_div2_mod_6(d, d, m);
|
|
vt--;
|
|
}
|
|
}
|
|
else {
|
|
XMEMSET(d+1, 0, sizeof(d)-sizeof(sp_digit));
|
|
d[0] = 1;
|
|
}
|
|
|
|
while (ut > 1 && vt > 1) {
|
|
if (ut > vt || (ut == vt && sp_384_cmp_6(u, v) >= 0)) {
|
|
sp_384_sub_6(u, u, v);
|
|
o = sp_384_sub_6(b, b, d);
|
|
if (o != 0)
|
|
sp_384_add_6(b, b, m);
|
|
ut = sp_384_num_bits_6(u);
|
|
|
|
do {
|
|
sp_384_rshift1_6(u, u);
|
|
sp_384_div2_mod_6(b, b, m);
|
|
ut--;
|
|
}
|
|
while (ut > 0 && (u[0] & 1) == 0);
|
|
}
|
|
else {
|
|
sp_384_sub_6(v, v, u);
|
|
o = sp_384_sub_6(d, d, b);
|
|
if (o != 0)
|
|
sp_384_add_6(d, d, m);
|
|
vt = sp_384_num_bits_6(v);
|
|
|
|
do {
|
|
sp_384_rshift1_6(v, v);
|
|
sp_384_div2_mod_6(d, d, m);
|
|
vt--;
|
|
}
|
|
while (vt > 0 && (v[0] & 1) == 0);
|
|
}
|
|
}
|
|
|
|
if (ut == 1)
|
|
XMEMCPY(r, b, sizeof(b));
|
|
else
|
|
XMEMCPY(r, d, sizeof(d));
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
|
|
/* Add point p1 into point p2. Handles p1 == p2 and result at infinity.
|
|
*
|
|
* p1 First point to add and holds result.
|
|
* p2 Second point to add.
|
|
* tmp Temporary storage for intermediate numbers.
|
|
*/
|
|
static void sp_384_add_points_6(sp_point_384* p1, const sp_point_384* p2,
|
|
sp_digit* tmp)
|
|
{
|
|
|
|
sp_384_proj_point_add_6(p1, p1, p2, tmp);
|
|
if (sp_384_iszero_6(p1->z)) {
|
|
if (sp_384_iszero_6(p1->x) && sp_384_iszero_6(p1->y)) {
|
|
sp_384_proj_point_dbl_6(p1, p2, tmp);
|
|
}
|
|
else {
|
|
/* Y ordinate is not used from here - don't set. */
|
|
p1->x[0] = 0;
|
|
p1->x[1] = 0;
|
|
p1->x[2] = 0;
|
|
p1->x[3] = 0;
|
|
p1->x[4] = 0;
|
|
p1->x[5] = 0;
|
|
XMEMCPY(p1->z, p384_norm_mod, sizeof(p384_norm_mod));
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Calculate the verification point: [e/s]G + [r/s]Q
|
|
*
|
|
* p1 Calculated point.
|
|
* p2 Public point and temporary.
|
|
* s Second part of signature as a number.
|
|
* u1 Temporary number.
|
|
* u2 Temproray number.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_384_calc_vfy_point_6(sp_point_384* p1, sp_point_384* p2,
|
|
sp_digit* s, sp_digit* u1, sp_digit* u2, sp_digit* tmp, void* heap)
|
|
{
|
|
int err;
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
err = sp_384_mod_inv_6(s, s, p384_order);
|
|
if (err == MP_OKAY)
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
{
|
|
sp_384_mul_6(s, s, p384_norm_order);
|
|
err = sp_384_mod_6(s, s, p384_order);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_norm_6(s);
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
{
|
|
sp_384_mont_inv_order_6(s, s, tmp);
|
|
sp_384_mont_mul_order_6(u1, u1, s);
|
|
sp_384_mont_mul_order_6(u2, u2, s);
|
|
}
|
|
#else
|
|
{
|
|
sp_384_mont_mul_order_6(u1, u1, s);
|
|
sp_384_mont_mul_order_6(u2, u2, s);
|
|
}
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
{
|
|
err = sp_384_ecc_mulmod_base_6(p1, u1, 0, 0, heap);
|
|
}
|
|
}
|
|
if ((err == MP_OKAY) && sp_384_iszero_6(p1->z)) {
|
|
p1->infinity = 1;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_ecc_mulmod_6(p2, p2, u2, 0, 0, heap);
|
|
}
|
|
if ((err == MP_OKAY) && sp_384_iszero_6(p2->z)) {
|
|
p2->infinity = 1;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_add_points_6(p1, p2, tmp);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef HAVE_ECC_VERIFY
|
|
/* Verify the signature values with the hash and public key.
|
|
* e = Truncate(hash, 384)
|
|
* u1 = e/s mod order
|
|
* u2 = r/s mod order
|
|
* r == (u1.G + u2.Q)->x mod order
|
|
* Optimization: Leave point in projective form.
|
|
* (x, y, 1) == (x' / z'*z', y' / z'*z'*z', z' / z')
|
|
* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x'
|
|
* The hash is truncated to the first 384 bits.
|
|
*
|
|
* hash Hash to sign.
|
|
* hashLen Length of the hash data.
|
|
* rng Random number generator.
|
|
* priv Private part of key - scalar.
|
|
* rm First part of result as an mp_int.
|
|
* sm Sirst part of result as an mp_int.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_ecc_verify_384_ctx {
|
|
int state;
|
|
union {
|
|
sp_384_ecc_mulmod_6_ctx mulmod_ctx;
|
|
sp_384_mont_inv_order_6_ctx mont_inv_order_ctx;
|
|
sp_384_proj_point_dbl_6_ctx dbl_ctx;
|
|
sp_384_proj_point_add_6_ctx add_ctx;
|
|
};
|
|
sp_digit u1[2*6];
|
|
sp_digit u2[2*6];
|
|
sp_digit s[2*6];
|
|
sp_digit tmp[2*6 * 5];
|
|
sp_point_384 p1;
|
|
sp_point_384 p2;
|
|
} sp_ecc_verify_384_ctx;
|
|
|
|
int sp_ecc_verify_384_nb(sp_ecc_ctx_t* sp_ctx, const byte* hash,
|
|
word32 hashLen, const mp_int* pX, const mp_int* pY, const mp_int* pZ,
|
|
const mp_int* rm, const mp_int* sm, int* res, void* heap)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_ecc_verify_384_ctx* ctx = (sp_ecc_verify_384_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_ecc_verify_384_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
if (hashLen > 48U) {
|
|
hashLen = 48U;
|
|
}
|
|
|
|
sp_384_from_bin(ctx->u1, 6, hash, (int)hashLen);
|
|
sp_384_from_mp(ctx->u2, 6, rm);
|
|
sp_384_from_mp(ctx->s, 6, sm);
|
|
sp_384_from_mp(ctx->p2.x, 6, pX);
|
|
sp_384_from_mp(ctx->p2.y, 6, pY);
|
|
sp_384_from_mp(ctx->p2.z, 6, pZ);
|
|
ctx->state = 1;
|
|
break;
|
|
case 1: /* NORMS0 */
|
|
sp_384_mul_6(ctx->s, ctx->s, p384_norm_order);
|
|
err = sp_384_mod_6(ctx->s, ctx->s, p384_order);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 2;
|
|
break;
|
|
case 2: /* NORMS1 */
|
|
sp_384_norm_6(ctx->s);
|
|
XMEMSET(&ctx->mont_inv_order_ctx, 0, sizeof(ctx->mont_inv_order_ctx));
|
|
ctx->state = 3;
|
|
break;
|
|
case 3: /* NORMS2 */
|
|
err = sp_384_mont_inv_order_6_nb((sp_ecc_ctx_t*)&ctx->mont_inv_order_ctx, ctx->s, ctx->s, ctx->tmp);
|
|
if (err == MP_OKAY) {
|
|
ctx->state = 4;
|
|
}
|
|
break;
|
|
case 4: /* NORMS3 */
|
|
sp_384_mont_mul_order_6(ctx->u1, ctx->u1, ctx->s);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5: /* NORMS4 */
|
|
sp_384_mont_mul_order_6(ctx->u2, ctx->u2, ctx->s);
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 6;
|
|
break;
|
|
case 6: /* MULBASE */
|
|
err = sp_384_ecc_mulmod_6_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx, &ctx->p1, &p384_base, ctx->u1, 0, 0, heap);
|
|
if (err == MP_OKAY) {
|
|
if (sp_384_iszero_6(ctx->p1.z)) {
|
|
ctx->p1.infinity = 1;
|
|
}
|
|
XMEMSET(&ctx->mulmod_ctx, 0, sizeof(ctx->mulmod_ctx));
|
|
ctx->state = 7;
|
|
}
|
|
break;
|
|
case 7: /* MULMOD */
|
|
err = sp_384_ecc_mulmod_6_nb((sp_ecc_ctx_t*)&ctx->mulmod_ctx, &ctx->p2, &ctx->p2, ctx->u2, 0, 0, heap);
|
|
if (err == MP_OKAY) {
|
|
if (sp_384_iszero_6(ctx->p2.z)) {
|
|
ctx->p2.infinity = 1;
|
|
}
|
|
XMEMSET(&ctx->add_ctx, 0, sizeof(ctx->add_ctx));
|
|
ctx->state = 8;
|
|
}
|
|
break;
|
|
case 8: /* ADD */
|
|
err = sp_384_proj_point_add_6_nb((sp_ecc_ctx_t*)&ctx->add_ctx, &ctx->p1, &ctx->p1, &ctx->p2, ctx->tmp);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 9;
|
|
break;
|
|
case 9: /* MONT */
|
|
/* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x' */
|
|
/* Reload r and convert to Montgomery form. */
|
|
sp_384_from_mp(ctx->u2, 6, rm);
|
|
err = sp_384_mod_mul_norm_6(ctx->u2, ctx->u2, p384_mod);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 10;
|
|
break;
|
|
case 10: /* SQR */
|
|
/* u1 = r.z'.z' mod prime */
|
|
sp_384_mont_sqr_6(ctx->p1.z, ctx->p1.z, p384_mod, p384_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11: /* MUL */
|
|
sp_384_mont_mul_6(ctx->u1, ctx->u2, ctx->p1.z, p384_mod, p384_mp_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12: /* RES */
|
|
{
|
|
sp_int64 c = 0;
|
|
err = MP_OKAY; /* math okay, now check result */
|
|
*res = (int)(sp_384_cmp_6(ctx->p1.x, ctx->u1) == 0);
|
|
if (*res == 0) {
|
|
sp_digit carry;
|
|
|
|
/* Reload r and add order. */
|
|
sp_384_from_mp(ctx->u2, 6, rm);
|
|
carry = sp_384_add_6(ctx->u2, ctx->u2, p384_order);
|
|
/* Carry means result is greater than mod and is not valid. */
|
|
if (carry == 0) {
|
|
sp_384_norm_6(ctx->u2);
|
|
|
|
/* Compare with mod and if greater or equal then not valid. */
|
|
c = sp_384_cmp_6(ctx->u2, p384_mod);
|
|
}
|
|
}
|
|
if ((*res == 0) && (c < 0)) {
|
|
/* Convert to Montogomery form */
|
|
err = sp_384_mod_mul_norm_6(ctx->u2, ctx->u2, p384_mod);
|
|
if (err == MP_OKAY) {
|
|
/* u1 = (r + 1*order).z'.z' mod prime */
|
|
sp_384_mont_mul_6(ctx->u1, ctx->u2, ctx->p1.z, p384_mod,
|
|
p384_mp_mod);
|
|
*res = (int)(sp_384_cmp_6(ctx->p1.x, ctx->u1) == 0);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
} /* switch */
|
|
|
|
if (err == MP_OKAY && ctx->state != 12) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
int sp_ecc_verify_384(const byte* hash, word32 hashLen, const mp_int* pX,
|
|
const mp_int* pY, const mp_int* pZ, const mp_int* rm, const mp_int* sm,
|
|
int* res, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* u1 = NULL;
|
|
sp_point_384* p1 = NULL;
|
|
#else
|
|
sp_digit u1[16 * 6];
|
|
sp_point_384 p1[2];
|
|
#endif
|
|
sp_digit* u2 = NULL;
|
|
sp_digit* s = NULL;
|
|
sp_digit* tmp = NULL;
|
|
sp_point_384* p2 = NULL;
|
|
sp_digit carry;
|
|
sp_int64 c = 0;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p1 = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p1 == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
u1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16 * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (u1 == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
u2 = u1 + 2 * 6;
|
|
s = u1 + 4 * 6;
|
|
tmp = u1 + 6 * 6;
|
|
p2 = p1 + 1;
|
|
|
|
if (hashLen > 48U) {
|
|
hashLen = 48U;
|
|
}
|
|
|
|
sp_384_from_bin(u1, 6, hash, (int)hashLen);
|
|
sp_384_from_mp(u2, 6, rm);
|
|
sp_384_from_mp(s, 6, sm);
|
|
sp_384_from_mp(p2->x, 6, pX);
|
|
sp_384_from_mp(p2->y, 6, pY);
|
|
sp_384_from_mp(p2->z, 6, pZ);
|
|
|
|
err = sp_384_calc_vfy_point_6(p1, p2, s, u1, u2, tmp, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* (r + n*order).z'.z' mod prime == (u1.G + u2.Q)->x' */
|
|
/* Reload r and convert to Montgomery form. */
|
|
sp_384_from_mp(u2, 6, rm);
|
|
err = sp_384_mod_mul_norm_6(u2, u2, p384_mod);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* u1 = r.z'.z' mod prime */
|
|
sp_384_mont_sqr_6(p1->z, p1->z, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(u1, u2, p1->z, p384_mod, p384_mp_mod);
|
|
*res = (int)(sp_384_cmp_6(p1->x, u1) == 0);
|
|
if (*res == 0) {
|
|
/* Reload r and add order. */
|
|
sp_384_from_mp(u2, 6, rm);
|
|
carry = sp_384_add_6(u2, u2, p384_order);
|
|
/* Carry means result is greater than mod and is not valid. */
|
|
if (carry == 0) {
|
|
sp_384_norm_6(u2);
|
|
|
|
/* Compare with mod and if greater or equal then not valid. */
|
|
c = sp_384_cmp_6(u2, p384_mod);
|
|
}
|
|
}
|
|
if ((*res == 0) && (c < 0)) {
|
|
/* Convert to Montogomery form */
|
|
err = sp_384_mod_mul_norm_6(u2, u2, p384_mod);
|
|
if (err == MP_OKAY) {
|
|
/* u1 = (r + 1*order).z'.z' mod prime */
|
|
sp_384_mont_mul_6(u1, u2, p1->z, p384_mod,
|
|
p384_mp_mod);
|
|
*res = (sp_384_cmp_6(p1->x, u1) == 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (u1 != NULL)
|
|
XFREE(u1, heap, DYNAMIC_TYPE_ECC);
|
|
if (p1 != NULL)
|
|
XFREE(p1, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* HAVE_ECC_VERIFY */
|
|
|
|
#ifdef HAVE_ECC_CHECK_KEY
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* point EC point.
|
|
* heap Heap to use if dynamically allocating.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_384_ecc_is_point_6(const sp_point_384* point,
|
|
void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* t1 = NULL;
|
|
#else
|
|
sp_digit t1[6 * 4];
|
|
#endif
|
|
sp_digit* t2 = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6 * 4, heap, DYNAMIC_TYPE_ECC);
|
|
if (t1 == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
(void)heap;
|
|
|
|
if (err == MP_OKAY) {
|
|
t2 = t1 + 2 * 6;
|
|
|
|
sp_384_sqr_6(t1, point->y);
|
|
(void)sp_384_mod_6(t1, t1, p384_mod);
|
|
sp_384_sqr_6(t2, point->x);
|
|
(void)sp_384_mod_6(t2, t2, p384_mod);
|
|
sp_384_mul_6(t2, t2, point->x);
|
|
(void)sp_384_mod_6(t2, t2, p384_mod);
|
|
(void)sp_384_sub_6(t2, p384_mod, t2);
|
|
sp_384_mont_add_6(t1, t1, t2, p384_mod);
|
|
|
|
sp_384_mont_add_6(t1, t1, point->x, p384_mod);
|
|
sp_384_mont_add_6(t1, t1, point->x, p384_mod);
|
|
sp_384_mont_add_6(t1, t1, point->x, p384_mod);
|
|
|
|
if (sp_384_cmp_6(t1, p384_b) != 0) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t1 != NULL)
|
|
XFREE(t1, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_is_point_384(const mp_int* pX, const mp_int* pY)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_384* pub = NULL;
|
|
#else
|
|
sp_point_384 pub[1];
|
|
#endif
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
pub = (sp_point_384*)XMALLOC(sizeof(sp_point_384), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(pub->x, 6, pX);
|
|
sp_384_from_mp(pub->y, 6, pY);
|
|
sp_384_from_bin(pub->z, 6, one, (int)sizeof(one));
|
|
|
|
err = sp_384_ecc_is_point_6(pub, NULL);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the private scalar generates the EC point (px, py), the point is
|
|
* on the curve and the point has the correct order.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* privm Private scalar that generates EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve, ECC_INF_E if the point does not have the correct order,
|
|
* ECC_PRIV_KEY_E when the private scalar doesn't generate the EC point and
|
|
* MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_check_key_384(const mp_int* pX, const mp_int* pY,
|
|
const mp_int* privm, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* priv = NULL;
|
|
sp_point_384* pub = NULL;
|
|
#else
|
|
sp_digit priv[6];
|
|
sp_point_384 pub[2];
|
|
#endif
|
|
sp_point_384* p = NULL;
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
|
|
/* Quick check the lengs of public key ordinates and private key are in
|
|
* range. Proper check later.
|
|
*/
|
|
if (((mp_count_bits(pX) > 384) ||
|
|
(mp_count_bits(pY) > 384) ||
|
|
((privm != NULL) && (mp_count_bits(privm) > 384)))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
pub = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY && privm) {
|
|
priv = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (priv == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = pub + 1;
|
|
|
|
sp_384_from_mp(pub->x, 6, pX);
|
|
sp_384_from_mp(pub->y, 6, pY);
|
|
sp_384_from_bin(pub->z, 6, one, (int)sizeof(one));
|
|
if (privm)
|
|
sp_384_from_mp(priv, 6, privm);
|
|
|
|
/* Check point at infinitiy. */
|
|
if ((sp_384_iszero_6(pub->x) != 0) &&
|
|
(sp_384_iszero_6(pub->y) != 0)) {
|
|
err = ECC_INF_E;
|
|
}
|
|
}
|
|
|
|
/* Check range of X and Y */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_384_cmp_6(pub->x, p384_mod) >= 0) ||
|
|
(sp_384_cmp_6(pub->y, p384_mod) >= 0))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Check point is on curve */
|
|
err = sp_384_ecc_is_point_6(pub, heap);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Point * order = infinity */
|
|
err = sp_384_ecc_mulmod_6(p, pub, p384_order, 1, 1, heap);
|
|
}
|
|
/* Check result is infinity */
|
|
if ((err == MP_OKAY) && ((sp_384_iszero_6(p->x) == 0) ||
|
|
(sp_384_iszero_6(p->y) == 0))) {
|
|
err = ECC_INF_E;
|
|
}
|
|
|
|
if (privm) {
|
|
if (err == MP_OKAY) {
|
|
/* Base * private = point */
|
|
err = sp_384_ecc_mulmod_base_6(p, priv, 1, 1, heap);
|
|
}
|
|
/* Check result is public key */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_384_cmp_6(p->x, pub->x) != 0) ||
|
|
(sp_384_cmp_6(p->y, pub->y) != 0))) {
|
|
err = ECC_PRIV_KEY_E;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, heap, DYNAMIC_TYPE_ECC);
|
|
if (priv != NULL)
|
|
XFREE(priv, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
#ifdef WOLFSSL_PUBLIC_ECC_ADD_DBL
|
|
/* Add two projective EC points together.
|
|
* (pX, pY, pZ) + (qX, qY, qZ) = (rX, rY, rZ)
|
|
*
|
|
* pX First EC point's X ordinate.
|
|
* pY First EC point's Y ordinate.
|
|
* pZ First EC point's Z ordinate.
|
|
* qX Second EC point's X ordinate.
|
|
* qY Second EC point's Y ordinate.
|
|
* qZ Second EC point's Z ordinate.
|
|
* rX Resultant EC point's X ordinate.
|
|
* rY Resultant EC point's Y ordinate.
|
|
* rZ Resultant EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ,
|
|
mp_int* qX, mp_int* qY, mp_int* qZ,
|
|
mp_int* rX, mp_int* rY, mp_int* rZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_384* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 6 * 5];
|
|
sp_point_384 p[2];
|
|
#endif
|
|
sp_point_384* q = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_384*)XMALLOC(sizeof(sp_point_384) * 2, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 5, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
q = p + 1;
|
|
|
|
sp_384_from_mp(p->x, 6, pX);
|
|
sp_384_from_mp(p->y, 6, pY);
|
|
sp_384_from_mp(p->z, 6, pZ);
|
|
sp_384_from_mp(q->x, 6, qX);
|
|
sp_384_from_mp(q->y, 6, qY);
|
|
sp_384_from_mp(q->z, 6, qZ);
|
|
p->infinity = sp_384_iszero_6(p->x) &
|
|
sp_384_iszero_6(p->y);
|
|
q->infinity = sp_384_iszero_6(q->x) &
|
|
sp_384_iszero_6(q->y);
|
|
|
|
sp_384_proj_point_add_6(p, p, q, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->x, rX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->y, rY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->z, rZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Double a projective EC point.
|
|
* (pX, pY, pZ) + (pX, pY, pZ) = (rX, rY, rZ)
|
|
*
|
|
* pX EC point's X ordinate.
|
|
* pY EC point's Y ordinate.
|
|
* pZ EC point's Z ordinate.
|
|
* rX Resultant EC point's X ordinate.
|
|
* rY Resultant EC point's Y ordinate.
|
|
* rZ Resultant EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ,
|
|
mp_int* rX, mp_int* rY, mp_int* rZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_384* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 6 * 2];
|
|
sp_point_384 p[1];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_384*)XMALLOC(sizeof(sp_point_384), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 2, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(p->x, 6, pX);
|
|
sp_384_from_mp(p->y, 6, pY);
|
|
sp_384_from_mp(p->z, 6, pZ);
|
|
p->infinity = sp_384_iszero_6(p->x) &
|
|
sp_384_iszero_6(p->y);
|
|
|
|
sp_384_proj_point_dbl_6(p, p, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->x, rX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->y, rY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->z, rZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Map a projective EC point to affine in place.
|
|
* pZ will be one.
|
|
*
|
|
* pX EC point's X ordinate.
|
|
* pY EC point's Y ordinate.
|
|
* pZ EC point's Z ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* tmp = NULL;
|
|
sp_point_384* p = NULL;
|
|
#else
|
|
sp_digit tmp[2 * 6 * 6];
|
|
sp_point_384 p[1];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
p = (sp_point_384*)XMALLOC(sizeof(sp_point_384), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (p == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 6 * 6, NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
if (err == MP_OKAY) {
|
|
sp_384_from_mp(p->x, 6, pX);
|
|
sp_384_from_mp(p->y, 6, pY);
|
|
sp_384_from_mp(p->z, 6, pZ);
|
|
p->infinity = sp_384_iszero_6(p->x) &
|
|
sp_384_iszero_6(p->y);
|
|
|
|
sp_384_map_6(p, p, tmp);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->x, pX);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->y, pY);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_384_to_mp(p->z, pZ);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (tmp != NULL)
|
|
XFREE(tmp, NULL, DYNAMIC_TYPE_ECC);
|
|
if (p != NULL)
|
|
XFREE(p, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_PUBLIC_ECC_ADD_DBL */
|
|
#ifdef HAVE_COMP_KEY
|
|
/* Find the square root of a number mod the prime of the curve.
|
|
*
|
|
* y The number to operate on and the result.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_384_mont_sqrt_6(sp_digit* y)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* t1 = NULL;
|
|
#else
|
|
sp_digit t1[5 * 2 * 6];
|
|
#endif
|
|
sp_digit* t2 = NULL;
|
|
sp_digit* t3 = NULL;
|
|
sp_digit* t4 = NULL;
|
|
sp_digit* t5 = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 5 * 2 * 6, NULL, DYNAMIC_TYPE_ECC);
|
|
if (t1 == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
t2 = t1 + 2 * 6;
|
|
t3 = t1 + 4 * 6;
|
|
t4 = t1 + 6 * 6;
|
|
t5 = t1 + 8 * 6;
|
|
|
|
{
|
|
/* t2 = y ^ 0x2 */
|
|
sp_384_mont_sqr_6(t2, y, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0x3 */
|
|
sp_384_mont_mul_6(t1, t2, y, p384_mod, p384_mp_mod);
|
|
/* t5 = y ^ 0xc */
|
|
sp_384_mont_sqr_n_6(t5, t1, 2, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0xf */
|
|
sp_384_mont_mul_6(t1, t1, t5, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x1e */
|
|
sp_384_mont_sqr_6(t2, t1, p384_mod, p384_mp_mod);
|
|
/* t3 = y ^ 0x1f */
|
|
sp_384_mont_mul_6(t3, t2, y, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x3e0 */
|
|
sp_384_mont_sqr_n_6(t2, t3, 5, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0x3ff */
|
|
sp_384_mont_mul_6(t1, t3, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x7fe0 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 5, p384_mod, p384_mp_mod);
|
|
/* t3 = y ^ 0x7fff */
|
|
sp_384_mont_mul_6(t3, t3, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x3fff800 */
|
|
sp_384_mont_sqr_n_6(t2, t3, 15, p384_mod, p384_mp_mod);
|
|
/* t4 = y ^ 0x3ffffff */
|
|
sp_384_mont_mul_6(t4, t3, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0xffffffc000000 */
|
|
sp_384_mont_sqr_n_6(t2, t4, 30, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0xfffffffffffff */
|
|
sp_384_mont_mul_6(t1, t4, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0xfffffffffffffff000000000000000 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 60, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0xffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t1, t1, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0xffffffffffffffffffffffffffffff000000000000000000000000000000 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 120, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t1, t1, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 15, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff */
|
|
sp_384_mont_mul_6(t1, t3, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000000 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 31, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffff */
|
|
sp_384_mont_mul_6(t1, t4, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffff0 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 4, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffc */
|
|
sp_384_mont_mul_6(t1, t5, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000 */
|
|
sp_384_mont_sqr_n_6(t2, t1, 62, p384_mod, p384_mp_mod);
|
|
/* t1 = y ^ 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000001 */
|
|
sp_384_mont_mul_6(t1, y, t2, p384_mod, p384_mp_mod);
|
|
/* t2 = y ^ 0x3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffc00000000000000040000000 */
|
|
sp_384_mont_sqr_n_6(y, t1, 30, p384_mod, p384_mp_mod);
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t1 != NULL)
|
|
XFREE(t1, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
|
|
/* Uncompress the point given the X ordinate.
|
|
*
|
|
* xm X ordinate.
|
|
* odd Whether the Y ordinate is odd.
|
|
* ym Calculated Y ordinate.
|
|
* returns MEMORY_E if dynamic memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_uncompress_384(mp_int* xm, int odd, mp_int* ym)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* x = NULL;
|
|
#else
|
|
sp_digit x[4 * 6];
|
|
#endif
|
|
sp_digit* y = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
x = (sp_digit*)XMALLOC(sizeof(sp_digit) * 4 * 6, NULL, DYNAMIC_TYPE_ECC);
|
|
if (x == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
y = x + 2 * 6;
|
|
|
|
sp_384_from_mp(x, 6, xm);
|
|
err = sp_384_mod_mul_norm_6(x, x, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* y = x^3 */
|
|
{
|
|
sp_384_mont_sqr_6(y, x, p384_mod, p384_mp_mod);
|
|
sp_384_mont_mul_6(y, y, x, p384_mod, p384_mp_mod);
|
|
}
|
|
/* y = x^3 - 3x */
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
sp_384_mont_sub_6(y, y, x, p384_mod);
|
|
/* y = x^3 - 3x + b */
|
|
err = sp_384_mod_mul_norm_6(x, p384_b, p384_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_384_mont_add_6(y, y, x, p384_mod);
|
|
/* y = sqrt(x^3 - 3x + b) */
|
|
err = sp_384_mont_sqrt_6(y);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
XMEMSET(y + 6, 0, 6U * sizeof(sp_digit));
|
|
sp_384_mont_reduce_6(y, p384_mod, p384_mp_mod);
|
|
if ((((word32)y[0] ^ (word32)odd) & 1U) != 0U) {
|
|
sp_384_mont_sub_6(y, p384_mod, y, p384_mod);
|
|
}
|
|
|
|
err = sp_384_to_mp(y, ym);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (x != NULL)
|
|
XFREE(x, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
#endif /* WOLFSSL_SP_384 */
|
|
#ifdef WOLFSSL_SP_1024
|
|
|
|
/* Point structure to use. */
|
|
typedef struct sp_point_1024 {
|
|
/* X ordinate of point. */
|
|
sp_digit x[2 * 16];
|
|
/* Y ordinate of point. */
|
|
sp_digit y[2 * 16];
|
|
/* Z ordinate of point. */
|
|
sp_digit z[2 * 16];
|
|
/* Indicates point is at infinity. */
|
|
int infinity;
|
|
} sp_point_1024;
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_1024_mul_8(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x8, x9, [%[a], 0]\n\t"
|
|
"ldp x10, x11, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [%[a], 32]\n\t"
|
|
"ldp x14, x15, [%[a], 48]\n\t"
|
|
"ldp x16, x17, [%[b], 0]\n\t"
|
|
"ldp x19, x20, [%[b], 16]\n\t"
|
|
"ldp x21, x22, [%[b], 32]\n\t"
|
|
"ldp x23, x24, [%[b], 48]\n\t"
|
|
"# A[0] * B[0]\n\t"
|
|
"mul x3, x8, x16\n\t"
|
|
"umulh x4, x8, x16\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"# A[0] * B[1]\n\t"
|
|
"mul x6, x8, x17\n\t"
|
|
"umulh x7, x8, x17\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[0]\n\t"
|
|
"mul x6, x9, x16\n\t"
|
|
"adc x5, xzr, x7\n\t"
|
|
"umulh x7, x9, x16\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"# A[0] * B[2]\n\t"
|
|
"mul x6, x8, x19\n\t"
|
|
"umulh x7, x8, x19\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[1]\n\t"
|
|
"mul x6, x9, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x17\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[0]\n\t"
|
|
"mul x6, x10, x16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x16\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[3]\n\t"
|
|
"mul x6, x8, x20\n\t"
|
|
"umulh x7, x8, x20\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[1] * B[2]\n\t"
|
|
"mul x6, x9, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x9, x19\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[1]\n\t"
|
|
"mul x6, x10, x17\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x17\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[0]\n\t"
|
|
"mul x6, x11, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x16\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[4]\n\t"
|
|
"mul x6, x8, x21\n\t"
|
|
"umulh x7, x8, x21\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[3]\n\t"
|
|
"mul x6, x9, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x9, x20\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B[2]\n\t"
|
|
"mul x6, x10, x19\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x10, x19\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[1]\n\t"
|
|
"mul x6, x11, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x17\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[0]\n\t"
|
|
"mul x6, x12, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[0] * B[5]\n\t"
|
|
"mul x6, x8, x22\n\t"
|
|
"umulh x7, x8, x22\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[1] * B[4]\n\t"
|
|
"mul x6, x9, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x9, x21\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[3]\n\t"
|
|
"mul x6, x10, x20\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x20\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B[2]\n\t"
|
|
"mul x6, x11, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x11, x19\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[1]\n\t"
|
|
"mul x6, x12, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[0]\n\t"
|
|
"mul x6, x13, x16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x16\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[0] * B[6]\n\t"
|
|
"mul x6, x8, x23\n\t"
|
|
"umulh x7, x8, x23\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[1] * B[5]\n\t"
|
|
"mul x6, x9, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x9, x22\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[2] * B[4]\n\t"
|
|
"mul x6, x10, x21\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x10, x21\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[3]\n\t"
|
|
"mul x6, x11, x20\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x20\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B[2]\n\t"
|
|
"mul x6, x12, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x12, x19\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[1]\n\t"
|
|
"mul x6, x13, x17\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x17\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[0]\n\t"
|
|
"mul x6, x14, x16\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x16\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[0] * B[7]\n\t"
|
|
"mul x6, x8, x24\n\t"
|
|
"umulh x7, x8, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[1] * B[6]\n\t"
|
|
"mul x6, x9, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x9, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B[5]\n\t"
|
|
"mul x6, x10, x22\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x10, x22\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[3] * B[4]\n\t"
|
|
"mul x6, x11, x21\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x11, x21\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[3]\n\t"
|
|
"mul x6, x12, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x20\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B[2]\n\t"
|
|
"mul x6, x13, x19\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x13, x19\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[6] * B[1]\n\t"
|
|
"mul x6, x14, x17\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x14, x17\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[0]\n\t"
|
|
"mul x6, x15, x16\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x16\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[1] * B[7]\n\t"
|
|
"mul x6, x9, x24\n\t"
|
|
"umulh x7, x9, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[2] * B[6]\n\t"
|
|
"mul x6, x10, x23\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x10, x23\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B[5]\n\t"
|
|
"mul x6, x11, x22\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x11, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[4] * B[4]\n\t"
|
|
"mul x6, x12, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x12, x21\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[3]\n\t"
|
|
"mul x6, x13, x20\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x20\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B[2]\n\t"
|
|
"mul x6, x14, x19\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x14, x19\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[7] * B[1]\n\t"
|
|
"mul x6, x15, x17\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x15, x17\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[2] * B[7]\n\t"
|
|
"mul x6, x10, x24\n\t"
|
|
"umulh x7, x10, x24\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[3] * B[6]\n\t"
|
|
"mul x6, x11, x23\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x11, x23\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B[5]\n\t"
|
|
"mul x6, x12, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x12, x22\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[5] * B[4]\n\t"
|
|
"mul x6, x13, x21\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x13, x21\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[3]\n\t"
|
|
"mul x6, x14, x20\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x20\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B[2]\n\t"
|
|
"mul x6, x15, x19\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x15, x19\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[3] * B[7]\n\t"
|
|
"mul x6, x11, x24\n\t"
|
|
"umulh x7, x11, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[4] * B[6]\n\t"
|
|
"mul x6, x12, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x12, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B[5]\n\t"
|
|
"mul x6, x13, x22\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x13, x22\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[6] * B[4]\n\t"
|
|
"mul x6, x14, x21\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x14, x21\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[3]\n\t"
|
|
"mul x6, x15, x20\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x20\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[4] * B[7]\n\t"
|
|
"mul x6, x12, x24\n\t"
|
|
"umulh x7, x12, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[5] * B[6]\n\t"
|
|
"mul x6, x13, x23\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x13, x23\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B[5]\n\t"
|
|
"mul x6, x14, x22\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x14, x22\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[7] * B[4]\n\t"
|
|
"mul x6, x15, x21\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, x15, x21\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"adc x4, x4, xzr\n\t"
|
|
"# A[5] * B[7]\n\t"
|
|
"mul x6, x13, x24\n\t"
|
|
"umulh x7, x13, x24\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[6] * B[6]\n\t"
|
|
"mul x6, x14, x23\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x14, x23\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B[5]\n\t"
|
|
"mul x6, x15, x22\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, x15, x22\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"# A[6] * B[7]\n\t"
|
|
"mul x6, x14, x24\n\t"
|
|
"umulh x7, x14, x24\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[7] * B[6]\n\t"
|
|
"mul x6, x15, x23\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, x15, x23\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"# A[7] * B[7]\n\t"
|
|
"mul x6, x15, x24\n\t"
|
|
"umulh x7, x15, x24\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"adc x3, x3, x7\n\t"
|
|
"stp x5, x3, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24"
|
|
);
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* All registers version.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_1024_sqr_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x21, x22, [%[a], 0]\n\t"
|
|
"ldp x23, x24, [%[a], 16]\n\t"
|
|
"ldp x25, x26, [%[a], 32]\n\t"
|
|
"ldp x27, x28, [%[a], 48]\n\t"
|
|
"# A[0] * A[1]\n\t"
|
|
"mul x6, x21, x22\n\t"
|
|
"umulh x7, x21, x22\n\t"
|
|
"# A[0] * A[2]\n\t"
|
|
"mul x4, x21, x23\n\t"
|
|
"umulh x5, x21, x23\n\t"
|
|
"adds x7, x7, x4\n\t"
|
|
"# A[0] * A[3]\n\t"
|
|
"mul x4, x21, x24\n\t"
|
|
"adc x8, xzr, x5\n\t"
|
|
"umulh x5, x21, x24\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[1] * A[2]\n\t"
|
|
"mul x4, x22, x23\n\t"
|
|
"adc x9, xzr, x5\n\t"
|
|
"umulh x5, x22, x23\n\t"
|
|
"adds x8, x8, x4\n\t"
|
|
"# A[0] * A[4]\n\t"
|
|
"mul x4, x21, x25\n\t"
|
|
"adcs x9, x9, x5\n\t"
|
|
"umulh x5, x21, x25\n\t"
|
|
"adc x10, xzr, xzr\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[1] * A[3]\n\t"
|
|
"mul x4, x22, x24\n\t"
|
|
"adc x10, x10, x5\n\t"
|
|
"umulh x5, x22, x24\n\t"
|
|
"adds x9, x9, x4\n\t"
|
|
"# A[0] * A[5]\n\t"
|
|
"mul x4, x21, x26\n\t"
|
|
"adcs x10, x10, x5\n\t"
|
|
"umulh x5, x21, x26\n\t"
|
|
"adc x11, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[1] * A[4]\n\t"
|
|
"mul x4, x22, x25\n\t"
|
|
"adc x11, x11, x5\n\t"
|
|
"umulh x5, x22, x25\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[2] * A[3]\n\t"
|
|
"mul x4, x23, x24\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x23, x24\n\t"
|
|
"adc x12, xzr, xzr\n\t"
|
|
"adds x10, x10, x4\n\t"
|
|
"# A[0] * A[6]\n\t"
|
|
"mul x4, x21, x27\n\t"
|
|
"adcs x11, x11, x5\n\t"
|
|
"umulh x5, x21, x27\n\t"
|
|
"adc x12, x12, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[1] * A[5]\n\t"
|
|
"mul x4, x22, x26\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x22, x26\n\t"
|
|
"adc x13, xzr, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[2] * A[4]\n\t"
|
|
"mul x4, x23, x25\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x23, x25\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x11, x11, x4\n\t"
|
|
"# A[0] * A[7]\n\t"
|
|
"mul x4, x21, x28\n\t"
|
|
"adcs x12, x12, x5\n\t"
|
|
"umulh x5, x21, x28\n\t"
|
|
"adc x13, x13, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[1] * A[6]\n\t"
|
|
"mul x4, x22, x27\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x22, x27\n\t"
|
|
"adc x14, xzr, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[2] * A[5]\n\t"
|
|
"mul x4, x23, x26\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x23, x26\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[3] * A[4]\n\t"
|
|
"mul x4, x24, x25\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x24, x25\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x12, x12, x4\n\t"
|
|
"# A[1] * A[7]\n\t"
|
|
"mul x4, x22, x28\n\t"
|
|
"adcs x13, x13, x5\n\t"
|
|
"umulh x5, x22, x28\n\t"
|
|
"adc x14, x14, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[2] * A[6]\n\t"
|
|
"mul x4, x23, x27\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x23, x27\n\t"
|
|
"adc x15, xzr, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[3] * A[5]\n\t"
|
|
"mul x4, x24, x26\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x24, x26\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x13, x13, x4\n\t"
|
|
"# A[2] * A[7]\n\t"
|
|
"mul x4, x23, x28\n\t"
|
|
"adcs x14, x14, x5\n\t"
|
|
"umulh x5, x23, x28\n\t"
|
|
"adc x15, x15, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[3] * A[6]\n\t"
|
|
"mul x4, x24, x27\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x24, x27\n\t"
|
|
"adc x16, xzr, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[4] * A[5]\n\t"
|
|
"mul x4, x25, x26\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x25, x26\n\t"
|
|
"adc x16, x16, xzr\n\t"
|
|
"adds x14, x14, x4\n\t"
|
|
"# A[3] * A[7]\n\t"
|
|
"mul x4, x24, x28\n\t"
|
|
"adcs x15, x15, x5\n\t"
|
|
"umulh x5, x24, x28\n\t"
|
|
"adc x16, x16, xzr\n\t"
|
|
"adds x15, x15, x4\n\t"
|
|
"# A[4] * A[6]\n\t"
|
|
"mul x4, x25, x27\n\t"
|
|
"adcs x16, x16, x5\n\t"
|
|
"umulh x5, x25, x27\n\t"
|
|
"adc x17, xzr, xzr\n\t"
|
|
"adds x15, x15, x4\n\t"
|
|
"# A[4] * A[7]\n\t"
|
|
"mul x4, x25, x28\n\t"
|
|
"adcs x16, x16, x5\n\t"
|
|
"umulh x5, x25, x28\n\t"
|
|
"adc x17, x17, xzr\n\t"
|
|
"adds x16, x16, x4\n\t"
|
|
"# A[5] * A[6]\n\t"
|
|
"mul x4, x26, x27\n\t"
|
|
"adcs x17, x17, x5\n\t"
|
|
"umulh x5, x26, x27\n\t"
|
|
"adc x19, xzr, xzr\n\t"
|
|
"adds x16, x16, x4\n\t"
|
|
"# A[5] * A[7]\n\t"
|
|
"mul x4, x26, x28\n\t"
|
|
"adcs x17, x17, x5\n\t"
|
|
"umulh x5, x26, x28\n\t"
|
|
"adc x19, x19, xzr\n\t"
|
|
"adds x17, x17, x4\n\t"
|
|
"# A[6] * A[7]\n\t"
|
|
"mul x4, x27, x28\n\t"
|
|
"adcs x19, x19, x5\n\t"
|
|
"umulh x5, x27, x28\n\t"
|
|
"adc x20, xzr, xzr\n\t"
|
|
"adds x19, x19, x4\n\t"
|
|
"adc x20, x20, x5\n\t"
|
|
"# Double\n\t"
|
|
"adds x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"adcs x8, x8, x8\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"adcs x15, x15, x15\n\t"
|
|
"adcs x16, x16, x16\n\t"
|
|
"adcs x17, x17, x17\n\t"
|
|
"adcs x19, x19, x19\n\t"
|
|
"# A[0] * A[0]\n\t"
|
|
"mul x5, x21, x21\n\t"
|
|
"adcs x20, x20, x20\n\t"
|
|
"umulh x2, x21, x21\n\t"
|
|
"cset x21, cs\n\t"
|
|
"# A[1] * A[1]\n\t"
|
|
"mul x3, x22, x22\n\t"
|
|
"adds x6, x6, x2\n\t"
|
|
"umulh x4, x22, x22\n\t"
|
|
"adcs x7, x7, x3\n\t"
|
|
"# A[2] * A[2]\n\t"
|
|
"mul x2, x23, x23\n\t"
|
|
"adcs x8, x8, x4\n\t"
|
|
"umulh x3, x23, x23\n\t"
|
|
"adcs x9, x9, x2\n\t"
|
|
"# A[3] * A[3]\n\t"
|
|
"mul x4, x24, x24\n\t"
|
|
"adcs x10, x10, x3\n\t"
|
|
"umulh x2, x24, x24\n\t"
|
|
"adcs x11, x11, x4\n\t"
|
|
"# A[4] * A[4]\n\t"
|
|
"mul x3, x25, x25\n\t"
|
|
"adcs x12, x12, x2\n\t"
|
|
"umulh x4, x25, x25\n\t"
|
|
"adcs x13, x13, x3\n\t"
|
|
"# A[5] * A[5]\n\t"
|
|
"mul x2, x26, x26\n\t"
|
|
"adcs x14, x14, x4\n\t"
|
|
"umulh x3, x26, x26\n\t"
|
|
"adcs x15, x15, x2\n\t"
|
|
"# A[6] * A[6]\n\t"
|
|
"mul x4, x27, x27\n\t"
|
|
"adcs x16, x16, x3\n\t"
|
|
"umulh x2, x27, x27\n\t"
|
|
"adcs x17, x17, x4\n\t"
|
|
"# A[7] * A[7]\n\t"
|
|
"mul x3, x28, x28\n\t"
|
|
"adcs x19, x19, x2\n\t"
|
|
"umulh x4, x28, x28\n\t"
|
|
"adcs x20, x20, x3\n\t"
|
|
"stp x5, x6, [%[r], 0]\n\t"
|
|
"adc x21, x21, x4\n\t"
|
|
"stp x7, x8, [%[r], 16]\n\t"
|
|
"stp x9, x10, [%[r], 32]\n\t"
|
|
"stp x11, x12, [%[r], 48]\n\t"
|
|
"stp x13, x14, [%[r], 64]\n\t"
|
|
"stp x15, x16, [%[r], 80]\n\t"
|
|
"stp x17, x19, [%[r], 96]\n\t"
|
|
"stp x20, x21, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_add_8(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer and result.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_sub_in_place_16(sp_digit* a, const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x2, x3, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[b], 0]\n\t"
|
|
"subs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 16]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 0]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 16]\n\t"
|
|
"ldp x2, x3, [%[a], 32]\n\t"
|
|
"ldp x6, x7, [%[b], 32]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 48]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 32]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 48]\n\t"
|
|
"ldp x2, x3, [%[a], 64]\n\t"
|
|
"ldp x6, x7, [%[b], 64]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 80]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 64]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 80]\n\t"
|
|
"ldp x2, x3, [%[a], 96]\n\t"
|
|
"ldp x6, x7, [%[b], 96]\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x4, x5, [%[a], 112]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x8, x9, [%[b], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a], 96]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a], 112]\n\t"
|
|
"csetm %[a], cc\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
|
|
return (sp_digit)a;
|
|
}
|
|
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_add_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"adds x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_1024_mask_8(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<8; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
r[0] = a[0] & m;
|
|
r[1] = a[1] & m;
|
|
r[2] = a[2] & m;
|
|
r[3] = a[3] & m;
|
|
r[4] = a[4] & m;
|
|
r[5] = a[5] & m;
|
|
r[6] = a[6] & m;
|
|
r[7] = a[7] & m;
|
|
#endif
|
|
}
|
|
|
|
/* Add digit to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_1024_add_zero_8(sp_digit* r, const sp_digit* a,
|
|
const sp_digit d)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"adds x3, x3, %[d]\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"adcs x3, x3, xzr\n\t"
|
|
"adcs x4, x4, xzr\n\t"
|
|
"adcs x5, x5, xzr\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, xzr\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [d] "r" (d)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_1024_mul_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z1[16];
|
|
sp_digit a1[8];
|
|
sp_digit b1[8];
|
|
sp_digit z2[16];
|
|
sp_digit u, ca, cb;
|
|
|
|
ca = sp_1024_add_8(a1, a, &a[8]);
|
|
cb = sp_1024_add_8(b1, b, &b[8]);
|
|
u = ca & cb;
|
|
sp_1024_mul_8(z1, a1, b1);
|
|
sp_1024_mul_8(z2, &a[8], &b[8]);
|
|
sp_1024_mul_8(z0, a, b);
|
|
sp_1024_mask_8(r + 16, a1, 0 - cb);
|
|
sp_1024_mask_8(b1, b1, 0 - ca);
|
|
u += sp_1024_add_8(r + 16, r + 16, b1);
|
|
u += sp_1024_sub_in_place_16(z1, z2);
|
|
u += sp_1024_sub_in_place_16(z1, z0);
|
|
u += sp_1024_add_16(r + 8, r + 8, z1);
|
|
u += sp_1024_add_8(r + 16, r + 16, z2);
|
|
sp_1024_add_zero_8(r + 24, z2 + 8, u);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_dbl_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 64\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Double a into r. (r = a + a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_dbl_8(sp_digit* r, const sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"adds x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 16]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 24]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"adcs x3, x3, x3\n\t"
|
|
"ldr x5, [%[a], 48]\n\t"
|
|
"adcs x4, x4, x4\n\t"
|
|
"ldr x6, [%[a], 56]\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
SP_NOINLINE static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit* z0 = r;
|
|
sp_digit z2[16];
|
|
sp_digit z1[16];
|
|
sp_digit a1[8];
|
|
sp_digit u;
|
|
|
|
u = sp_1024_add_8(a1, a, &a[8]);
|
|
sp_1024_sqr_8(z1, a1);
|
|
sp_1024_sqr_8(z2, &a[8]);
|
|
sp_1024_sqr_8(z0, a);
|
|
sp_1024_mask_8(r + 16, a1, 0 - u);
|
|
u += sp_1024_dbl_8(r + 16, r + 16);
|
|
u += sp_1024_sub_in_place_16(z1, z2);
|
|
u += sp_1024_sub_in_place_16(z1, z0);
|
|
u += sp_1024_add_16(r + 8, r + 8, z1);
|
|
u += sp_1024_add_8(r + 16, r + 16, z2);
|
|
sp_1024_add_zero_8(r + 24, z2 + 8, u);
|
|
}
|
|
|
|
#else
|
|
/* Multiply a and b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static void sp_1024_mul_16(sp_digit* r, const sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit tmp[32];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x5, 0\n\t"
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 120\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[b], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 128\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 240\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
/* Square a and put result in r. (r = a * a)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
*/
|
|
static void sp_1024_sqr_16(sp_digit* r, const sp_digit* a)
|
|
{
|
|
sp_digit tmp[32];
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x6, 0\n\t"
|
|
"mov x7, 0\n\t"
|
|
"mov x8, 0\n\t"
|
|
"mov x5, 0\n\t"
|
|
"\n1:\n\t"
|
|
"subs x3, x5, 120\n\t"
|
|
"csel x3, xzr, x3, cc\n\t"
|
|
"sub x4, x5, x3\n\t"
|
|
"\n2:\n\t"
|
|
"cmp x4, x3\n\t"
|
|
"b.eq 4f\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"ldr x11, [%[a], x4]\n\t"
|
|
"mul x9, x10, x11\n\t"
|
|
"umulh x10, x10, x11\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"b.al 5f\n\t"
|
|
"\n4:\n\t"
|
|
"ldr x10, [%[a], x3]\n\t"
|
|
"mul x9, x10, x10\n\t"
|
|
"umulh x10, x10, x10\n\t"
|
|
"adds x6, x6, x9\n\t"
|
|
"adcs x7, x7, x10\n\t"
|
|
"adc x8, x8, xzr\n\t"
|
|
"\n5:\n\t"
|
|
"add x3, x3, #8\n\t"
|
|
"sub x4, x4, #8\n\t"
|
|
"cmp x3, 128\n\t"
|
|
"b.eq 3f\n\t"
|
|
"cmp x3, x4\n\t"
|
|
"b.gt 3f\n\t"
|
|
"cmp x3, x5\n\t"
|
|
"b.le 2b\n\t"
|
|
"\n3:\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
"mov x6, x7\n\t"
|
|
"mov x7, x8\n\t"
|
|
"mov x8, #0\n\t"
|
|
"add x5, x5, #8\n\t"
|
|
"cmp x5, 240\n\t"
|
|
"b.le 1b\n\t"
|
|
"str x6, [%[r], x5]\n\t"
|
|
:
|
|
: [r] "r" (tmp), [a] "r" (a)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
XMEMCPY(r, tmp, sizeof(tmp));
|
|
}
|
|
|
|
#endif /* !WOLFSSL_SP_SMALL */
|
|
/* The modulus (prime) of the curve P1024. */
|
|
static const sp_digit p1024_mod[16] = {
|
|
0x666d807afea85febL,0x80c5df10ac7ace87L,0xfce3e82389857db0L,
|
|
0x9f94d6af56971f1fL,0xa7cf3c521c3c09aaL,0xb6aff4a831852a82L,
|
|
0x512ac5cd65681ce1L,0xe26c6487326b4cd4L,0x356d27f4a666a6d0L,
|
|
0xe791b39ff7c88a19L,0x228730d531a59cb0L,0xf40aab27e2fc0f1bL,
|
|
0xbe9ae358b3e01a2eL,0x416c0ce19cb48261L,0x65c61198dad0657aL,
|
|
0x997abb1f0a563fdaL
|
|
};
|
|
/* The Montgomery normalizer for modulus of the curve P1024. */
|
|
static const sp_digit p1024_norm_mod[16] = {
|
|
0x99927f850157a015L,0x7f3a20ef53853178L,0x031c17dc767a824fL,
|
|
0x606b2950a968e0e0L,0x5830c3ade3c3f655L,0x49500b57ce7ad57dL,
|
|
0xaed53a329a97e31eL,0x1d939b78cd94b32bL,0xca92d80b5999592fL,
|
|
0x186e4c60083775e6L,0xdd78cf2ace5a634fL,0x0bf554d81d03f0e4L,
|
|
0x41651ca74c1fe5d1L,0xbe93f31e634b7d9eL,0x9a39ee67252f9a85L,
|
|
0x668544e0f5a9c025L
|
|
};
|
|
/* The Montgomery multiplier for modulus of the curve P1024. */
|
|
static sp_digit p1024_mp_mod = 0x290420077c8f2f3d;
|
|
#if defined(WOLFSSL_SP_SMALL) || defined(HAVE_ECC_CHECK_KEY)
|
|
/* The order of the curve P1024. */
|
|
static const sp_digit p1024_order[16] = {
|
|
0xd99b601ebfaa17fbL,0x203177c42b1eb3a1L,0xff38fa08e2615f6cL,
|
|
0xa7e535abd5a5c7c7L,0xa9f3cf14870f026aL,0x6dabfd2a0c614aa0L,
|
|
0x144ab173595a0738L,0x389b1921cc9ad335L,0x4d5b49fd2999a9b4L,
|
|
0x39e46ce7fdf22286L,0xc8a1cc354c69672cL,0xbd02aac9f8bf03c6L,
|
|
0x6fa6b8d62cf8068bL,0x905b0338672d2098L,0x9971846636b4195eL,
|
|
0x265eaec7c2958ff6L
|
|
};
|
|
#endif
|
|
/* The base point of curve P1024. */
|
|
static const sp_point_1024 p1024_base = {
|
|
/* X ordinate */
|
|
{
|
|
0x880dc8abeae63895L,0x80ec46c4967e0979L,0xee9163a5b63f73ecL,
|
|
0xd5cfb4cc80728d87L,0xa7c1514dba66910dL,0xa702c3397a60de74L,
|
|
0x337c86548b72f2e1L,0x9760af765dd5bccbL,0x718bd9e7406ce890L,
|
|
0x43d5f22cdb9dfa55L,0xab10db9030b09e10L,0xb5edb6c0f6ce2308L,
|
|
0x98b2f204b6ff7cbfL,0x2b1a2fd60aec69c6L,0x0a7990053ed9b52aL,
|
|
0x53fc09ee332c29adL,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* Y ordinate */
|
|
{
|
|
0x75573fd71bef16d7L,0xadb9b5706a67dcdeL,0x80bdad5ad5bb4636L,
|
|
0x13515ad7e9cb99a9L,0x492d979fc5a4d5f2L,0xac6f1e80164aa989L,
|
|
0xcad696b5b7652fe0L,0x70dae117ad547c6cL,0x416cff0ca9e032b9L,
|
|
0x6b598ccf9a140b2eL,0xe7f7f5e5f0de55f6L,0xf5ea69f4654ec2b9L,
|
|
0x3d778d821e141178L,0xd3e8201602990696L,0xf9f1f0533634a135L,
|
|
0x0a8249063f6009f1L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* Z ordinate */
|
|
{
|
|
0x0000000000000001L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,
|
|
0x0000000000000000L,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0, (sp_digit)0,
|
|
(sp_digit)0
|
|
},
|
|
/* infinity */
|
|
0
|
|
};
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into a. (a -= b)
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_sub_in_place_16(sp_digit* a, const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x10, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x2, x3, [%[a]]\n\t"
|
|
"ldp x4, x5, [%[a], #16]\n\t"
|
|
"ldp x6, x7, [%[b]], #16\n\t"
|
|
"sbcs x2, x2, x6\n\t"
|
|
"ldp x8, x9, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"stp x2, x3, [%[a]], #16\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x4, x5, [%[a]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x10\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Conditionally subtract b from a using the mask m.
|
|
* m is -1 to subtract and 0 when not copying.
|
|
*
|
|
* r A single precision number representing condition subtract result.
|
|
* a A single precision number to subtract from.
|
|
* b A single precision number to subtract.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_1024_cond_sub_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"subs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"sbcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"sbcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"sbcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"sbcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Add b to a into r. (r = a + b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_add_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"adcs x4, x4, x8\n\t"
|
|
"adcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"adcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Mul a by digit b into r. (r = a * b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision digit.
|
|
*/
|
|
static void sp_1024_mul_d_16(sp_digit* r, const sp_digit* a,
|
|
sp_digit b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldr x8, [%[a]]\n\t"
|
|
"mul x5, %[b], x8\n\t"
|
|
"umulh x3, %[b], x8\n\t"
|
|
"mov x4, 0\n\t"
|
|
"str x5, [%[r]]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mov x9, #8\n\t"
|
|
"1:\n\t"
|
|
"ldr x8, [%[a], x9]\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"str x3, [%[r], x9]\n\t"
|
|
"mov x3, x4\n\t"
|
|
"mov x4, x5\n\t"
|
|
"mov x5, #0\n\t"
|
|
"add x9, x9, #8\n\t"
|
|
"cmp x9, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
"str x3, [%[r], 128]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"# A[0] * B\n\t"
|
|
"ldp x8, x9, [%[a]]\n\t"
|
|
"mul x3, %[b], x8\n\t"
|
|
"umulh x4, %[b], x8\n\t"
|
|
"mov x5, 0\n\t"
|
|
"# A[1] * B\n\t"
|
|
"str x3, [%[r]]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[2] * B\n\t"
|
|
"ldp x8, x9, [%[a], 16]\n\t"
|
|
"str x4, [%[r], 8]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[3] * B\n\t"
|
|
"str x5, [%[r], 16]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[4] * B\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"str x3, [%[r], 24]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[5] * B\n\t"
|
|
"str x4, [%[r], 32]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[6] * B\n\t"
|
|
"ldp x8, x9, [%[a], 48]\n\t"
|
|
"str x5, [%[r], 40]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[7] * B\n\t"
|
|
"str x3, [%[r], 48]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[8] * B\n\t"
|
|
"ldp x8, x9, [%[a], 64]\n\t"
|
|
"str x4, [%[r], 56]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[9] * B\n\t"
|
|
"str x5, [%[r], 64]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[10] * B\n\t"
|
|
"ldp x8, x9, [%[a], 80]\n\t"
|
|
"str x3, [%[r], 72]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[11] * B\n\t"
|
|
"str x4, [%[r], 80]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[12] * B\n\t"
|
|
"ldp x8, x9, [%[a], 96]\n\t"
|
|
"str x5, [%[r], 88]\n\t"
|
|
"mov x5, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"# A[13] * B\n\t"
|
|
"str x3, [%[r], 96]\n\t"
|
|
"mov x3, 0\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x4, x4, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x5, xzr, xzr\n\t"
|
|
"adds x4, x4, x6\n\t"
|
|
"# A[14] * B\n\t"
|
|
"ldp x8, x9, [%[a], 112]\n\t"
|
|
"str x4, [%[r], 104]\n\t"
|
|
"mov x4, 0\n\t"
|
|
"mul x6, %[b], x8\n\t"
|
|
"adcs x5, x5, x7\n\t"
|
|
"umulh x7, %[b], x8\n\t"
|
|
"adc x3, xzr, xzr\n\t"
|
|
"adds x5, x5, x6\n\t"
|
|
"# A[15] * B\n\t"
|
|
"str x5, [%[r], 112]\n\t"
|
|
"mul x6, %[b], x9\n\t"
|
|
"adcs x3, x3, x7\n\t"
|
|
"umulh x7, %[b], x9\n\t"
|
|
"adc x4, xzr, xzr\n\t"
|
|
"adds x3, x3, x6\n\t"
|
|
"adc x4, x4, x7\n\t"
|
|
"stp x3, x4, [%[r], 120]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9"
|
|
);
|
|
#endif
|
|
}
|
|
|
|
/* Divide the double width number (d1|d0) by the dividend. (d1|d0 / div)
|
|
*
|
|
* d1 The high order half of the number to divide.
|
|
* d0 The low order half of the number to divide.
|
|
* div The dividend.
|
|
* returns the result of the division.
|
|
*/
|
|
static sp_digit div_1024_word_16(sp_digit d1, sp_digit d0, sp_digit div)
|
|
{
|
|
sp_digit r;
|
|
|
|
__asm__ __volatile__ (
|
|
"lsr x5, %[div], 32\n\t"
|
|
"add x5, x5, 1\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x6, x3, 32\n\t"
|
|
"mul x4, %[div], x6\n\t"
|
|
"umulh x3, %[div], x6\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"udiv x3, %[d1], x5\n\t"
|
|
"lsl x3, x3, 32\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"umulh x3, %[div], x3\n\t"
|
|
"subs %[d0], %[d0], x4\n\t"
|
|
"sbc %[d1], %[d1], x3\n\t"
|
|
|
|
"lsr x3, %[d0], 32\n\t"
|
|
"orr x3, x3, %[d1], lsl 32\n\t"
|
|
|
|
"udiv x3, x3, x5\n\t"
|
|
"add x6, x6, x3\n\t"
|
|
"mul x4, %[div], x3\n\t"
|
|
"sub %[d0], %[d0], x4\n\t"
|
|
|
|
"udiv x3, %[d0], %[div]\n\t"
|
|
"add %[r], x6, x3\n\t"
|
|
|
|
: [r] "=r" (r)
|
|
: [d1] "r" (d1), [d0] "r" (d0), [div] "r" (div)
|
|
: "x3", "x4", "x5", "x6"
|
|
);
|
|
|
|
return r;
|
|
}
|
|
|
|
/* AND m into each word of a and store in r.
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* m Mask to AND against each digit.
|
|
*/
|
|
static void sp_1024_mask_16(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
int i;
|
|
|
|
for (i=0; i<16; i++) {
|
|
r[i] = a[i] & m;
|
|
}
|
|
#else
|
|
int i;
|
|
|
|
for (i = 0; i < 16; i += 8) {
|
|
r[i+0] = a[i+0] & m;
|
|
r[i+1] = a[i+1] & m;
|
|
r[i+2] = a[i+2] & m;
|
|
r[i+3] = a[i+3] & m;
|
|
r[i+4] = a[i+4] & m;
|
|
r[i+5] = a[i+5] & m;
|
|
r[i+6] = a[i+6] & m;
|
|
r[i+7] = a[i+7] & m;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Compare a with b in constant time.
|
|
*
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
* return -ve, 0 or +ve if a is less than, equal to or greater than b
|
|
* respectively.
|
|
*/
|
|
static sp_int64 sp_1024_cmp_16(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"mov x5, 120\n\t"
|
|
"1:\n\t"
|
|
"ldr x6, [%[a], x5]\n\t"
|
|
"ldr x7, [%[b], x5]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x6, x6, x7\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"subs x5, x5, #8\n\t"
|
|
"b.cs 1b\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#else
|
|
__asm__ __volatile__ (
|
|
"mov x2, -1\n\t"
|
|
"mov x3, 1\n\t"
|
|
"mov x4, -1\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"ldp x7, x8, [%[b], 112]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[b], 80]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"ldp x7, x8, [%[b], 48]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"ldp x7, x8, [%[b], 16]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"and x6, x6, x4\n\t"
|
|
"and x8, x8, x4\n\t"
|
|
"subs x6, x6, x8\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"and x5, x5, x4\n\t"
|
|
"and x7, x7, x4\n\t"
|
|
"subs x5, x5, x7\n\t"
|
|
"csel x2, x4, x2, lo\n\t"
|
|
"csel x4, x4, xzr, eq\n\t"
|
|
"csel x2, x3, x2, hi\n\t"
|
|
"eor %[a], x2, x4\n\t"
|
|
: [a] "+r" (a)
|
|
: [b] "r" (b)
|
|
: "x2", "x3", "x4", "x5", "x6", "x7", "x8"
|
|
);
|
|
#endif
|
|
|
|
return (sp_int64)a;
|
|
}
|
|
|
|
/* Divide d in a and put remainder into r (m*d + r = a)
|
|
* m is not calculated as it is not needed at this time.
|
|
*
|
|
* a Number to be divided.
|
|
* d Number to divide with.
|
|
* m Multiplier result.
|
|
* r Remainder from the division.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_1024_div_16(const sp_digit* a, const sp_digit* d, sp_digit* m,
|
|
sp_digit* r)
|
|
{
|
|
sp_digit t1[32], t2[17];
|
|
sp_digit div, r1;
|
|
int i;
|
|
|
|
(void)m;
|
|
|
|
div = d[15];
|
|
XMEMCPY(t1, a, sizeof(*t1) * 2 * 16);
|
|
for (i=15; i>=0; i--) {
|
|
sp_digit hi = t1[16 + i] - (t1[16 + i] == div);
|
|
r1 = div_1024_word_16(hi, t1[16 + i - 1], div);
|
|
|
|
sp_1024_mul_d_16(t2, d, r1);
|
|
t1[16 + i] += sp_1024_sub_in_place_16(&t1[i], t2);
|
|
t1[16 + i] -= t2[16];
|
|
sp_1024_mask_16(t2, d, t1[16 + i]);
|
|
t1[16 + i] += sp_1024_add_16(&t1[i], &t1[i], t2);
|
|
sp_1024_mask_16(t2, d, t1[16 + i]);
|
|
t1[16 + i] += sp_1024_add_16(&t1[i], &t1[i], t2);
|
|
}
|
|
|
|
r1 = sp_1024_cmp_16(t1, d) >= 0;
|
|
sp_1024_cond_sub_16(r, t1, d, (sp_digit)0 - r1);
|
|
|
|
return MP_OKAY;
|
|
}
|
|
|
|
/* Reduce a modulo m into r. (r = a mod m)
|
|
*
|
|
* r A single precision number that is the reduced result.
|
|
* a A single precision number that is to be reduced.
|
|
* m A single precision number that is the modulus to reduce with.
|
|
* returns MP_OKAY indicating success.
|
|
*/
|
|
static WC_INLINE int sp_1024_mod_16(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
return sp_1024_div_16(a, m, NULL, r);
|
|
}
|
|
|
|
/* Multiply a number by Montgomery normalizer mod modulus (prime).
|
|
*
|
|
* r The resulting Montgomery form number.
|
|
* a The number to convert.
|
|
* m The modulus (prime).
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_1024_mod_mul_norm_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m)
|
|
{
|
|
sp_1024_mul_16(r, a, p1024_norm_mod);
|
|
return sp_1024_mod_16(r, r, m);
|
|
}
|
|
|
|
|
|
#ifdef WOLFCRYPT_HAVE_SAKKE
|
|
/* Create a new point.
|
|
*
|
|
* heap [in] Buffer to allocate dynamic memory from.
|
|
* sp [in] Data for point - only if not allocating.
|
|
* p [out] New point.
|
|
* returns MEMORY_E when dynamic memory allocation fails and 0 otherwise.
|
|
*/
|
|
static int sp_1024_point_new_ex_16(void* heap, sp_point_1024* sp,
|
|
sp_point_1024** p)
|
|
{
|
|
int ret = MP_OKAY;
|
|
(void)heap;
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
(void)sp;
|
|
*p = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), heap, DYNAMIC_TYPE_ECC);
|
|
#else
|
|
*p = sp;
|
|
#endif
|
|
if (*p == NULL) {
|
|
ret = MEMORY_E;
|
|
}
|
|
return ret;
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
/* Allocate memory for point and return error. */
|
|
#define sp_1024_point_new_16(heap, sp, p) sp_1024_point_new_ex_16((heap), NULL, &(p))
|
|
#else
|
|
/* Set pointer to data and return no error. */
|
|
#define sp_1024_point_new_16(heap, sp, p) sp_1024_point_new_ex_16((heap), &(sp), &(p))
|
|
#endif
|
|
#endif /* WOLFCRYPT_HAVE_SAKKE */
|
|
#ifdef WOLFCRYPT_HAVE_SAKKE
|
|
/* Free the point.
|
|
*
|
|
* p [in,out] Point to free.
|
|
* clear [in] Indicates whether to zeroize point.
|
|
* heap [in] Buffer from which dynamic memory was allocate from.
|
|
*/
|
|
static void sp_1024_point_free_16(sp_point_1024* p, int clear, void* heap)
|
|
{
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
/* If valid pointer then clear point data if requested and free data. */
|
|
if (p != NULL) {
|
|
if (clear != 0) {
|
|
XMEMSET(p, 0, sizeof(*p));
|
|
}
|
|
XFREE(p, heap, DYNAMIC_TYPE_ECC);
|
|
}
|
|
#else
|
|
/* Clear point data if requested. */
|
|
if ((p != NULL) && (clear != 0)) {
|
|
XMEMSET(p, 0, sizeof(*p));
|
|
}
|
|
#endif
|
|
(void)heap;
|
|
}
|
|
#endif /* WOLFCRYPT_HAVE_SAKKE */
|
|
|
|
/* Convert an mp_int to an array of sp_digit.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a A multi-precision integer.
|
|
*/
|
|
static void sp_1024_from_mp(sp_digit* r, int size, const mp_int* a)
|
|
{
|
|
#if DIGIT_BIT == 64
|
|
int j;
|
|
|
|
XMEMCPY(r, a->dp, sizeof(sp_digit) * a->used);
|
|
|
|
for (j = a->used; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#elif DIGIT_BIT > 64
|
|
int i;
|
|
int j = 0;
|
|
word32 s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i] << s);
|
|
r[j] &= 0xffffffffffffffffl;
|
|
s = 64U - s;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
while ((s + 64U) <= (word32)DIGIT_BIT) {
|
|
s += 64U;
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
if (s < (word32)DIGIT_BIT) {
|
|
/* lint allow cast of mismatch word32 and mp_digit */
|
|
r[++j] = (sp_digit)(a->dp[i] >> s); /*lint !e9033*/
|
|
}
|
|
else {
|
|
r[++j] = (sp_digit)0;
|
|
}
|
|
}
|
|
s = (word32)DIGIT_BIT - s;
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r[0] = 0;
|
|
for (i = 0; i < a->used && j < size; i++) {
|
|
r[j] |= ((sp_digit)a->dp[i]) << s;
|
|
if (s + DIGIT_BIT >= 64) {
|
|
r[j] &= 0xffffffffffffffffl;
|
|
if (j + 1 >= size) {
|
|
break;
|
|
}
|
|
s = 64 - s;
|
|
if (s == DIGIT_BIT) {
|
|
r[++j] = 0;
|
|
s = 0;
|
|
}
|
|
else {
|
|
r[++j] = a->dp[i] >> s;
|
|
s = DIGIT_BIT - s;
|
|
}
|
|
}
|
|
else {
|
|
s += DIGIT_BIT;
|
|
}
|
|
}
|
|
|
|
for (j++; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
#endif
|
|
}
|
|
|
|
/* Convert a point of type ecc_point to type sp_point_1024.
|
|
*
|
|
* p Point of type sp_point_1024 (result).
|
|
* pm Point of type ecc_point.
|
|
*/
|
|
static void sp_1024_point_from_ecc_point_16(sp_point_1024* p,
|
|
const ecc_point* pm)
|
|
{
|
|
XMEMSET(p->x, 0, sizeof(p->x));
|
|
XMEMSET(p->y, 0, sizeof(p->y));
|
|
XMEMSET(p->z, 0, sizeof(p->z));
|
|
sp_1024_from_mp(p->x, 16, pm->x);
|
|
sp_1024_from_mp(p->y, 16, pm->y);
|
|
sp_1024_from_mp(p->z, 16, pm->z);
|
|
p->infinity = 0;
|
|
}
|
|
|
|
/* Convert an array of sp_digit to an mp_int.
|
|
*
|
|
* a A single precision integer.
|
|
* r A multi-precision integer.
|
|
*/
|
|
static int sp_1024_to_mp(const sp_digit* a, mp_int* r)
|
|
{
|
|
int err;
|
|
|
|
err = mp_grow(r, (1024 + DIGIT_BIT - 1) / DIGIT_BIT);
|
|
if (err == MP_OKAY) { /*lint !e774 case where err is always MP_OKAY*/
|
|
#if DIGIT_BIT == 64
|
|
XMEMCPY(r->dp, a, sizeof(sp_digit) * 16);
|
|
r->used = 16;
|
|
mp_clamp(r);
|
|
#elif DIGIT_BIT < 64
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 16; i++) {
|
|
r->dp[j] |= (mp_digit)(a[i] << s);
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = (mp_digit)(a[i] >> s);
|
|
while (s + DIGIT_BIT <= 64) {
|
|
s += DIGIT_BIT;
|
|
r->dp[j++] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
if (s == SP_WORD_SIZE) {
|
|
r->dp[j] = 0;
|
|
}
|
|
else {
|
|
r->dp[j] = (mp_digit)(a[i] >> s);
|
|
}
|
|
}
|
|
s = 64 - s;
|
|
}
|
|
r->used = (1024 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#else
|
|
int i;
|
|
int j = 0;
|
|
int s = 0;
|
|
|
|
r->dp[0] = 0;
|
|
for (i = 0; i < 16; i++) {
|
|
r->dp[j] |= ((mp_digit)a[i]) << s;
|
|
if (s + 64 >= DIGIT_BIT) {
|
|
#if DIGIT_BIT != 32 && DIGIT_BIT != 64
|
|
r->dp[j] &= ((sp_digit)1 << DIGIT_BIT) - 1;
|
|
#endif
|
|
s = DIGIT_BIT - s;
|
|
r->dp[++j] = a[i] >> s;
|
|
s = 64 - s;
|
|
}
|
|
else {
|
|
s += 64;
|
|
}
|
|
}
|
|
r->used = (1024 + DIGIT_BIT - 1) / DIGIT_BIT;
|
|
mp_clamp(r);
|
|
#endif
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Convert a point of type sp_point_1024 to type ecc_point.
|
|
*
|
|
* p Point of type sp_point_1024.
|
|
* pm Point of type ecc_point (result).
|
|
* returns MEMORY_E when allocation of memory in ecc_point fails otherwise
|
|
* MP_OKAY.
|
|
*/
|
|
static int sp_1024_point_to_ecc_point_16(const sp_point_1024* p, ecc_point* pm)
|
|
{
|
|
int err;
|
|
|
|
err = sp_1024_to_mp(p->x, pm->x);
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_to_mp(p->y, pm->y);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_to_mp(p->z, pm->z);
|
|
}
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Conditionally copy a into r using the mask m.
|
|
* m is -1 to copy and 0 when not.
|
|
*
|
|
* r A single precision number to copy over.
|
|
* a A single precision number to copy.
|
|
* m Mask value to apply.
|
|
*/
|
|
static void sp_1024_cond_copy_16(sp_digit* r, const sp_digit* a, sp_digit m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[r], 0]\n\t"
|
|
"ldp x5, x6, [%[a], 0]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"ldp x3, x4, [%[r], 16]\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[r], 32]\n\t"
|
|
"ldp x5, x6, [%[a], 32]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"ldp x3, x4, [%[r], 48]\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[r], 64]\n\t"
|
|
"ldp x5, x6, [%[a], 64]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"ldp x3, x4, [%[r], 80]\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[r], 96]\n\t"
|
|
"ldp x5, x6, [%[a], 96]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"ldp x3, x4, [%[r], 112]\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"eor x5, x5, x3\n\t"
|
|
"eor x6, x6, x4\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"and x6, x6, %[m]\n\t"
|
|
"eor x3, x3, x5\n\t"
|
|
"eor x4, x4, x6\n\t"
|
|
"stp x3, x4, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x3", "x4", "x5", "x6"
|
|
);
|
|
}
|
|
|
|
/* Reduce the number back to 1024 bits using Montgomery reduction.
|
|
*
|
|
* a A single precision number to reduce in place.
|
|
* m The single precision number representing the modulus.
|
|
* mp The digit representing the negative inverse of m mod 2^n.
|
|
*/
|
|
SP_NOINLINE static void sp_1024_mont_reduce_16(sp_digit* a, const sp_digit* m,
|
|
sp_digit mp)
|
|
{
|
|
|
|
__asm__ __volatile__ (
|
|
"ldp x14, x15, [%[m], 0]\n\t"
|
|
"ldp x16, x17, [%[m], 16]\n\t"
|
|
"ldp x19, x20, [%[m], 32]\n\t"
|
|
"ldp x21, x22, [%[m], 48]\n\t"
|
|
"ldp x23, x24, [%[m], 64]\n\t"
|
|
"ldp x25, x26, [%[m], 80]\n\t"
|
|
"ldp x27, x28, [%[m], 96]\n\t"
|
|
"mov x3, xzr\n\t"
|
|
"# i = 16\n\t"
|
|
"mov x4, 16\n\t"
|
|
"ldp x12, x13, [%[a], 0]\n\t"
|
|
"\n1:\n\t"
|
|
"# mu = a[i] * mp\n\t"
|
|
"mul x9, %[mp], x12\n\t"
|
|
"# a[i+0] += m[0] * mu\n\t"
|
|
"mul x7, x14, x9\n\t"
|
|
"umulh x8, x14, x9\n\t"
|
|
"adds x12, x12, x7\n\t"
|
|
"# a[i+1] += m[1] * mu\n\t"
|
|
"mul x7, x15, x9\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"umulh x8, x15, x9\n\t"
|
|
"adds x12, x13, x7\n\t"
|
|
"# a[i+2] += m[2] * mu\n\t"
|
|
"ldr x13, [%[a], 16]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"mul x7, x16, x9\n\t"
|
|
"adds x12, x12, x6\n\t"
|
|
"umulh x8, x16, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"adds x13, x13, x7\n\t"
|
|
"# a[i+3] += m[3] * mu\n\t"
|
|
"ldr x10, [%[a], 24]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"mul x7, x17, x9\n\t"
|
|
"adds x13, x13, x5\n\t"
|
|
"umulh x8, x17, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+4] += m[4] * mu\n\t"
|
|
"ldr x11, [%[a], 32]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x19, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x19, x9\n\t"
|
|
"str x10, [%[a], 24]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+5] += m[5] * mu\n\t"
|
|
"ldr x10, [%[a], 40]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x20, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x20, x9\n\t"
|
|
"str x11, [%[a], 32]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+6] += m[6] * mu\n\t"
|
|
"ldr x11, [%[a], 48]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x21, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x21, x9\n\t"
|
|
"str x10, [%[a], 40]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+7] += m[7] * mu\n\t"
|
|
"ldr x10, [%[a], 56]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x22, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x22, x9\n\t"
|
|
"str x11, [%[a], 48]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+8] += m[8] * mu\n\t"
|
|
"ldr x11, [%[a], 64]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x23, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x23, x9\n\t"
|
|
"str x10, [%[a], 56]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+9] += m[9] * mu\n\t"
|
|
"ldr x10, [%[a], 72]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x24, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x24, x9\n\t"
|
|
"str x11, [%[a], 64]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+10] += m[10] * mu\n\t"
|
|
"ldr x11, [%[a], 80]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x25, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x25, x9\n\t"
|
|
"str x10, [%[a], 72]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+11] += m[11] * mu\n\t"
|
|
"ldr x10, [%[a], 88]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x26, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x26, x9\n\t"
|
|
"str x11, [%[a], 80]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+12] += m[12] * mu\n\t"
|
|
"ldr x11, [%[a], 96]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x27, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x27, x9\n\t"
|
|
"str x10, [%[a], 88]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+13] += m[13] * mu\n\t"
|
|
"ldr x10, [%[a], 104]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x28, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x28, x9\n\t"
|
|
"str x11, [%[a], 96]\n\t"
|
|
"adds x10, x10, x7\n\t"
|
|
"# a[i+14] += m[14] * mu\n\t"
|
|
"ldr x11, [%[a], 112]\n\t"
|
|
"adc x5, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 112]\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x5, x5, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"str x10, [%[a], 104]\n\t"
|
|
"adds x11, x11, x7\n\t"
|
|
"# a[i+15] += m[15] * mu\n\t"
|
|
"ldr x10, [%[a], 120]\n\t"
|
|
"adc x6, x8, xzr\n\t"
|
|
"ldr x8, [%[m], 120]\n\t"
|
|
"adds x11, x11, x5\n\t"
|
|
"mul x7, x8, x9\n\t"
|
|
"adc x6, x6, xzr\n\t"
|
|
"umulh x8, x8, x9\n\t"
|
|
"adds x6, x6, x7\n\t"
|
|
"adcs x8, x8, x3\n\t"
|
|
"str x11, [%[a], 112]\n\t"
|
|
"cset x3, cs\n\t"
|
|
"adds x10, x10, x6\n\t"
|
|
"ldr x11, [%[a], 128]\n\t"
|
|
"str x10, [%[a], 120]\n\t"
|
|
"adcs x11, x11, x8\n\t"
|
|
"str x11, [%[a], 128]\n\t"
|
|
"adc x3, x3, xzr\n\t"
|
|
"subs x4, x4, 1\n\t"
|
|
"add %[a], %[a], 8\n\t"
|
|
"bne 1b\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"# Create mask\n\t"
|
|
"ldr x9, [%[m], 120]\n\t"
|
|
"subs x11, x9, x11\n\t"
|
|
"neg x3, x3\n\t"
|
|
"sbc x11, x11, x11\n\t"
|
|
"orr x3, x3, x11\n\t"
|
|
"mov x9, %[a]\n\t"
|
|
"sub %[a], %[a], 128\n\t"
|
|
"# Subtract masked modulus\n\t"
|
|
"# x12 and x13 hold a[0] and a[1]\n\t"
|
|
"and x14, x14, x3\n\t"
|
|
"ldp x11, x10, [x9, 16]\n\t"
|
|
"and x15, x15, x3\n\t"
|
|
"subs x12, x12, x14\n\t"
|
|
"and x16, x16, x3\n\t"
|
|
"sbcs x13, x13, x15\n\t"
|
|
"and x17, x17, x3\n\t"
|
|
"sbcs x11, x11, x16\n\t"
|
|
"stp x12, x13, [%[a], 0]\n\t"
|
|
"sbcs x10, x10, x17\n\t"
|
|
"stp x11, x10, [%[a], 16]\n\t"
|
|
"ldp x12, x13, [x9, 32]\n\t"
|
|
"and x19, x19, x3\n\t"
|
|
"ldp x11, x10, [x9, 48]\n\t"
|
|
"and x20, x20, x3\n\t"
|
|
"sbcs x12, x12, x19\n\t"
|
|
"and x21, x21, x3\n\t"
|
|
"sbcs x13, x13, x20\n\t"
|
|
"and x22, x22, x3\n\t"
|
|
"sbcs x11, x11, x21\n\t"
|
|
"stp x12, x13, [%[a], 32]\n\t"
|
|
"sbcs x10, x10, x22\n\t"
|
|
"stp x11, x10, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [x9, 64]\n\t"
|
|
"and x23, x23, x3\n\t"
|
|
"ldp x11, x10, [x9, 80]\n\t"
|
|
"and x24, x24, x3\n\t"
|
|
"sbcs x12, x12, x23\n\t"
|
|
"and x25, x25, x3\n\t"
|
|
"sbcs x13, x13, x24\n\t"
|
|
"and x26, x26, x3\n\t"
|
|
"sbcs x11, x11, x25\n\t"
|
|
"stp x12, x13, [%[a], 64]\n\t"
|
|
"sbcs x10, x10, x26\n\t"
|
|
"stp x11, x10, [%[a], 80]\n\t"
|
|
"ldp x7, x8, [%[m], 112]\n\t"
|
|
"ldp x12, x13, [x9, 96]\n\t"
|
|
"and x27, x27, x3\n\t"
|
|
"ldp x11, x10, [x9, 112]\n\t"
|
|
"and x28, x28, x3\n\t"
|
|
"sbcs x12, x12, x27\n\t"
|
|
"and x7, x7, x3\n\t"
|
|
"sbcs x13, x13, x28\n\t"
|
|
"and x8, x8, x3\n\t"
|
|
"sbcs x11, x11, x7\n\t"
|
|
"stp x12, x13, [%[a], 96]\n\t"
|
|
"sbcs x10, x10, x8\n\t"
|
|
"stp x11, x10, [%[a], 112]\n\t"
|
|
: [a] "+r" (a)
|
|
: [m] "r" (m), [mp] "r" (mp)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25", "x26", "x27", "x28"
|
|
);
|
|
|
|
}
|
|
|
|
/* Multiply two Montgomery form numbers mod the modulus (prime).
|
|
* (r = a * b mod m)
|
|
*
|
|
* r Result of multiplication.
|
|
* a First number to multiply in Montgomery form.
|
|
* b Second number to multiply in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_1024_mont_mul_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b, const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_1024_mul_16(r, a, b);
|
|
sp_1024_mont_reduce_16(r, m, mp);
|
|
}
|
|
|
|
/* Square the Montgomery form number. (r = a * a mod m)
|
|
*
|
|
* r Result of squaring.
|
|
* a Number to square in Montgomery form.
|
|
* m Modulus (prime).
|
|
* mp Montgomery mulitplier.
|
|
*/
|
|
static void sp_1024_mont_sqr_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* m, sp_digit mp)
|
|
{
|
|
sp_1024_sqr_16(r, a);
|
|
sp_1024_mont_reduce_16(r, m, mp);
|
|
}
|
|
|
|
/* Mod-2 for the P1024 curve. */
|
|
static const uint8_t p1024_mod_minus_2[] = {
|
|
6,0x06, 7,0x0f, 7,0x0b, 6,0x0c, 7,0x1e, 9,0x09, 7,0x0c, 7,0x1f,
|
|
6,0x16, 6,0x06, 7,0x0e, 8,0x10, 6,0x03, 8,0x11, 6,0x0d, 7,0x14,
|
|
9,0x12, 6,0x0f, 7,0x04, 9,0x0d, 6,0x00, 7,0x13, 6,0x01, 6,0x07,
|
|
8,0x0d, 8,0x00, 6,0x06, 9,0x17, 6,0x14, 6,0x15, 6,0x11, 6,0x0b,
|
|
9,0x0c, 6,0x1e, 13,0x14, 7,0x0e, 6,0x1d, 12,0x0a, 6,0x0b, 8,0x07,
|
|
6,0x18, 6,0x0f, 6,0x10, 8,0x1c, 7,0x16, 7,0x02, 6,0x01, 6,0x13,
|
|
10,0x15, 7,0x06, 8,0x14, 6,0x0c, 6,0x19, 7,0x10, 6,0x19, 6,0x19,
|
|
9,0x16, 7,0x19, 6,0x1f, 6,0x17, 6,0x12, 8,0x02, 6,0x01, 6,0x04,
|
|
6,0x15, 7,0x16, 6,0x04, 6,0x1f, 6,0x09, 7,0x06, 7,0x13, 7,0x09,
|
|
6,0x0d, 10,0x18, 6,0x06, 6,0x11, 6,0x04, 6,0x01, 6,0x13, 8,0x06,
|
|
6,0x0d, 8,0x13, 7,0x08, 6,0x08, 6,0x05, 7,0x0c, 7,0x0e, 7,0x15,
|
|
6,0x05, 7,0x14, 10,0x19, 6,0x10, 6,0x16, 6,0x15, 7,0x1f, 6,0x14,
|
|
6,0x0a, 10,0x11, 6,0x01, 7,0x05, 7,0x08, 8,0x0a, 7,0x1e, 7,0x1c,
|
|
6,0x1c, 7,0x09, 10,0x18, 7,0x1c, 10,0x06, 6,0x0a, 6,0x07, 6,0x19,
|
|
7,0x06, 6,0x0d, 7,0x0f, 7,0x0b, 7,0x05, 6,0x11, 6,0x1c, 7,0x1f,
|
|
6,0x1e, 7,0x18, 6,0x1e, 6,0x00, 6,0x03, 6,0x02, 7,0x10, 6,0x0b,
|
|
6,0x1b, 7,0x10, 6,0x00, 8,0x11, 7,0x1b, 6,0x18, 6,0x01, 7,0x0c,
|
|
7,0x1d, 7,0x13, 6,0x08, 7,0x1b, 8,0x13, 7,0x16, 13,0x1d, 7,0x1f,
|
|
6,0x0a, 6,0x01, 7,0x1f, 6,0x14, 1,0x01
|
|
};
|
|
|
|
/* Invert the number, in Montgomery form, modulo the modulus (prime) of the
|
|
* P1024 curve. (r = 1 / a mod m)
|
|
*
|
|
* r Inverse result.
|
|
* a Number to invert.
|
|
* td Temporary data.
|
|
*/
|
|
static void sp_1024_mont_inv_16(sp_digit* r, const sp_digit* a,
|
|
sp_digit* td)
|
|
{
|
|
sp_digit* t = td;
|
|
int i;
|
|
int j;
|
|
sp_digit table[32][2 * 16];
|
|
|
|
XMEMCPY(table[0], a, sizeof(sp_digit) * 16);
|
|
for (i = 1; i < 6; i++) {
|
|
sp_1024_mont_sqr_16(table[0], table[0], p1024_mod, p1024_mp_mod);
|
|
}
|
|
for (i = 1; i < 32; i++) {
|
|
sp_1024_mont_mul_16(table[i], table[i-1], a, p1024_mod, p1024_mp_mod);
|
|
}
|
|
|
|
XMEMCPY(t, table[p1024_mod_minus_2[1]], sizeof(sp_digit) * 16);
|
|
for (i = 2; i < (int)sizeof(p1024_mod_minus_2) - 2; i += 2) {
|
|
for (j = 0; j < p1024_mod_minus_2[i]; j++) {
|
|
sp_1024_mont_sqr_16(t, t, p1024_mod, p1024_mp_mod);
|
|
}
|
|
sp_1024_mont_mul_16(t, t, table[p1024_mod_minus_2[i+1]], p1024_mod,
|
|
p1024_mp_mod);
|
|
}
|
|
sp_1024_mont_sqr_16(t, t, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(r, t, a, p1024_mod, p1024_mp_mod);
|
|
}
|
|
|
|
/* Normalize the values in each word to 64.
|
|
*
|
|
* a Array of sp_digit to normalize.
|
|
*/
|
|
#define sp_1024_norm_16(a)
|
|
|
|
/* Map the Montgomery form projective coordinate point to an affine point.
|
|
*
|
|
* r Resulting affine coordinate point.
|
|
* p Montgomery form projective coordinate point.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_1024_map_16(sp_point_1024* r, const sp_point_1024* p,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*16;
|
|
sp_int64 n;
|
|
|
|
sp_1024_mont_inv_16(t1, p->z, t + 2*16);
|
|
|
|
sp_1024_mont_sqr_16(t2, t1, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t1, t2, t1, p1024_mod, p1024_mp_mod);
|
|
|
|
/* x /= z^2 */
|
|
sp_1024_mont_mul_16(r->x, p->x, t2, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r->x + 16, 0, sizeof(r->x) / 2U);
|
|
sp_1024_mont_reduce_16(r->x, p1024_mod, p1024_mp_mod);
|
|
/* Reduce x to less than modulus */
|
|
n = sp_1024_cmp_16(r->x, p1024_mod);
|
|
sp_1024_cond_sub_16(r->x, r->x, p1024_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_1024_norm_16(r->x);
|
|
|
|
/* y /= z^3 */
|
|
sp_1024_mont_mul_16(r->y, p->y, t1, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r->y + 16, 0, sizeof(r->y) / 2U);
|
|
sp_1024_mont_reduce_16(r->y, p1024_mod, p1024_mp_mod);
|
|
/* Reduce y to less than modulus */
|
|
n = sp_1024_cmp_16(r->y, p1024_mod);
|
|
sp_1024_cond_sub_16(r->y, r->y, p1024_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_1024_norm_16(r->y);
|
|
|
|
XMEMSET(r->z, 0, sizeof(r->z));
|
|
r->z[0] = 1;
|
|
|
|
}
|
|
|
|
/* Add two Montgomery form numbers (r = a + b % m).
|
|
*
|
|
* r Result of addition.
|
|
* a First number to add in Montgomery form.
|
|
* b Second number to add in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_1024_mont_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"ldp x10, x11, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [%[a], 64]\n\t"
|
|
"ldp x14, x15, [%[a], 80]\n\t"
|
|
"ldp x16, x17, [%[a], 96]\n\t"
|
|
"ldp x19, x20, [%[a], 112]\n\t"
|
|
"ldp x21, x22, [%[b], 0]\n\t"
|
|
"ldp x23, x24, [%[b], 16]\n\t"
|
|
"adds x4, x4, x21\n\t"
|
|
"adcs x5, x5, x22\n\t"
|
|
"adcs x6, x6, x23\n\t"
|
|
"adcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[b], 32]\n\t"
|
|
"ldp x23, x24, [%[b], 48]\n\t"
|
|
"adcs x8, x8, x21\n\t"
|
|
"adcs x9, x9, x22\n\t"
|
|
"adcs x10, x10, x23\n\t"
|
|
"adcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[b], 64]\n\t"
|
|
"ldp x23, x24, [%[b], 80]\n\t"
|
|
"adcs x12, x12, x21\n\t"
|
|
"adcs x13, x13, x22\n\t"
|
|
"adcs x14, x14, x23\n\t"
|
|
"adcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[b], 96]\n\t"
|
|
"ldp x23, x24, [%[b], 112]\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adcs x19, x19, x23\n\t"
|
|
"adcs x20, x20, x24\n\t"
|
|
"csetm x25, cs\n\t"
|
|
"ldr x21, [%[m], 120]\n\t"
|
|
"subs x21, x21, x20\n\t"
|
|
"csetm x21, cc\n\t"
|
|
"orr x25, x25, x21\n\t"
|
|
"ldp x21, x22, [%[m], 0]\n\t"
|
|
"ldp x23, x24, [%[m], 16]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"subs x4, x4, x21\n\t"
|
|
"sbcs x5, x5, x22\n\t"
|
|
"sbcs x6, x6, x23\n\t"
|
|
"sbcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[m], 32]\n\t"
|
|
"ldp x23, x24, [%[m], 48]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x8, x8, x21\n\t"
|
|
"sbcs x9, x9, x22\n\t"
|
|
"sbcs x10, x10, x23\n\t"
|
|
"sbcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[m], 64]\n\t"
|
|
"ldp x23, x24, [%[m], 80]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x12, x12, x21\n\t"
|
|
"sbcs x13, x13, x22\n\t"
|
|
"sbcs x14, x14, x23\n\t"
|
|
"sbcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[m], 96]\n\t"
|
|
"ldp x23, x24, [%[m], 112]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x16, x16, x21\n\t"
|
|
"sbcs x17, x17, x22\n\t"
|
|
"sbcs x19, x19, x23\n\t"
|
|
"sbc x20, x20, x24\n\t"
|
|
"stp x4, x5, [%[r], 0]\n\t"
|
|
"stp x6, x7, [%[r], 16]\n\t"
|
|
"stp x8, x9, [%[r], 32]\n\t"
|
|
"stp x10, x11, [%[r], 48]\n\t"
|
|
"stp x12, x13, [%[r], 64]\n\t"
|
|
"stp x14, x15, [%[r], 80]\n\t"
|
|
"stp x16, x17, [%[r], 96]\n\t"
|
|
"stp x19, x20, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25"
|
|
);
|
|
}
|
|
|
|
/* Double a Montgomery form number (r = a + a % m).
|
|
*
|
|
* r Result of doubling.
|
|
* a Number to double in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_1024_mont_dbl_16(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"ldp x10, x11, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [%[a], 64]\n\t"
|
|
"ldp x14, x15, [%[a], 80]\n\t"
|
|
"ldp x16, x17, [%[a], 96]\n\t"
|
|
"ldp x19, x20, [%[a], 112]\n\t"
|
|
"adds x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"adcs x8, x8, x8\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"adcs x15, x15, x15\n\t"
|
|
"adcs x16, x16, x16\n\t"
|
|
"adcs x17, x17, x17\n\t"
|
|
"adcs x19, x19, x19\n\t"
|
|
"adcs x20, x20, x20\n\t"
|
|
"csetm x25, cs\n\t"
|
|
"ldr x21, [%[m], 120]\n\t"
|
|
"subs x21, x21, x20\n\t"
|
|
"csetm x21, cc\n\t"
|
|
"orr x25, x25, x21\n\t"
|
|
"ldp x21, x22, [%[m], 0]\n\t"
|
|
"ldp x23, x24, [%[m], 16]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"subs x4, x4, x21\n\t"
|
|
"sbcs x5, x5, x22\n\t"
|
|
"sbcs x6, x6, x23\n\t"
|
|
"sbcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[m], 32]\n\t"
|
|
"ldp x23, x24, [%[m], 48]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x8, x8, x21\n\t"
|
|
"sbcs x9, x9, x22\n\t"
|
|
"sbcs x10, x10, x23\n\t"
|
|
"sbcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[m], 64]\n\t"
|
|
"ldp x23, x24, [%[m], 80]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x12, x12, x21\n\t"
|
|
"sbcs x13, x13, x22\n\t"
|
|
"sbcs x14, x14, x23\n\t"
|
|
"sbcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[m], 96]\n\t"
|
|
"ldp x23, x24, [%[m], 112]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x16, x16, x21\n\t"
|
|
"sbcs x17, x17, x22\n\t"
|
|
"sbcs x19, x19, x23\n\t"
|
|
"sbc x20, x20, x24\n\t"
|
|
"stp x4, x5, [%[r], 0]\n\t"
|
|
"stp x6, x7, [%[r], 16]\n\t"
|
|
"stp x8, x9, [%[r], 32]\n\t"
|
|
"stp x10, x11, [%[r], 48]\n\t"
|
|
"stp x12, x13, [%[r], 64]\n\t"
|
|
"stp x14, x15, [%[r], 80]\n\t"
|
|
"stp x16, x17, [%[r], 96]\n\t"
|
|
"stp x19, x20, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25"
|
|
);
|
|
}
|
|
|
|
/* Triple a Montgomery form number (r = a + a + a % m).
|
|
*
|
|
* r Result of Tripling.
|
|
* a Number to triple in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_1024_mont_tpl_16(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"ldp x10, x11, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [%[a], 64]\n\t"
|
|
"ldp x14, x15, [%[a], 80]\n\t"
|
|
"ldp x16, x17, [%[a], 96]\n\t"
|
|
"ldp x19, x20, [%[a], 112]\n\t"
|
|
"adds x4, x4, x4\n\t"
|
|
"adcs x5, x5, x5\n\t"
|
|
"adcs x6, x6, x6\n\t"
|
|
"adcs x7, x7, x7\n\t"
|
|
"adcs x8, x8, x8\n\t"
|
|
"adcs x9, x9, x9\n\t"
|
|
"adcs x10, x10, x10\n\t"
|
|
"adcs x11, x11, x11\n\t"
|
|
"adcs x12, x12, x12\n\t"
|
|
"adcs x13, x13, x13\n\t"
|
|
"adcs x14, x14, x14\n\t"
|
|
"adcs x15, x15, x15\n\t"
|
|
"adcs x16, x16, x16\n\t"
|
|
"adcs x17, x17, x17\n\t"
|
|
"adcs x19, x19, x19\n\t"
|
|
"adcs x20, x20, x20\n\t"
|
|
"csetm x25, cs\n\t"
|
|
"ldr x21, [%[m], 120]\n\t"
|
|
"subs x21, x21, x20\n\t"
|
|
"csetm x21, cc\n\t"
|
|
"orr x25, x25, x21\n\t"
|
|
"ldp x21, x22, [%[m], 0]\n\t"
|
|
"ldp x23, x24, [%[m], 16]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"subs x4, x4, x21\n\t"
|
|
"sbcs x5, x5, x22\n\t"
|
|
"sbcs x6, x6, x23\n\t"
|
|
"sbcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[m], 32]\n\t"
|
|
"ldp x23, x24, [%[m], 48]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x8, x8, x21\n\t"
|
|
"sbcs x9, x9, x22\n\t"
|
|
"sbcs x10, x10, x23\n\t"
|
|
"sbcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[m], 64]\n\t"
|
|
"ldp x23, x24, [%[m], 80]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x12, x12, x21\n\t"
|
|
"sbcs x13, x13, x22\n\t"
|
|
"sbcs x14, x14, x23\n\t"
|
|
"sbcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[m], 96]\n\t"
|
|
"ldp x23, x24, [%[m], 112]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x16, x16, x21\n\t"
|
|
"sbcs x17, x17, x22\n\t"
|
|
"sbcs x19, x19, x23\n\t"
|
|
"sbc x20, x20, x24\n\t"
|
|
"ldp x21, x22, [%[a], 0]\n\t"
|
|
"ldp x23, x24, [%[a], 16]\n\t"
|
|
"adds x4, x4, x21\n\t"
|
|
"adcs x5, x5, x22\n\t"
|
|
"adcs x6, x6, x23\n\t"
|
|
"adcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[a], 32]\n\t"
|
|
"ldp x23, x24, [%[a], 48]\n\t"
|
|
"adcs x8, x8, x21\n\t"
|
|
"adcs x9, x9, x22\n\t"
|
|
"adcs x10, x10, x23\n\t"
|
|
"adcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[a], 64]\n\t"
|
|
"ldp x23, x24, [%[a], 80]\n\t"
|
|
"adcs x12, x12, x21\n\t"
|
|
"adcs x13, x13, x22\n\t"
|
|
"adcs x14, x14, x23\n\t"
|
|
"adcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[a], 96]\n\t"
|
|
"ldp x23, x24, [%[a], 112]\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adcs x19, x19, x23\n\t"
|
|
"adcs x20, x20, x24\n\t"
|
|
"csetm x25, cs\n\t"
|
|
"ldr x21, [%[m], 120]\n\t"
|
|
"subs x21, x21, x20\n\t"
|
|
"csetm x21, cc\n\t"
|
|
"orr x25, x25, x21\n\t"
|
|
"ldp x21, x22, [%[m], 0]\n\t"
|
|
"ldp x23, x24, [%[m], 16]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"subs x4, x4, x21\n\t"
|
|
"sbcs x5, x5, x22\n\t"
|
|
"sbcs x6, x6, x23\n\t"
|
|
"sbcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[m], 32]\n\t"
|
|
"ldp x23, x24, [%[m], 48]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x8, x8, x21\n\t"
|
|
"sbcs x9, x9, x22\n\t"
|
|
"sbcs x10, x10, x23\n\t"
|
|
"sbcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[m], 64]\n\t"
|
|
"ldp x23, x24, [%[m], 80]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x12, x12, x21\n\t"
|
|
"sbcs x13, x13, x22\n\t"
|
|
"sbcs x14, x14, x23\n\t"
|
|
"sbcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[m], 96]\n\t"
|
|
"ldp x23, x24, [%[m], 112]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"sbcs x16, x16, x21\n\t"
|
|
"sbcs x17, x17, x22\n\t"
|
|
"sbcs x19, x19, x23\n\t"
|
|
"sbc x20, x20, x24\n\t"
|
|
"stp x4, x5, [%[r], 0]\n\t"
|
|
"stp x6, x7, [%[r], 16]\n\t"
|
|
"stp x8, x9, [%[r], 32]\n\t"
|
|
"stp x10, x11, [%[r], 48]\n\t"
|
|
"stp x12, x13, [%[r], 64]\n\t"
|
|
"stp x14, x15, [%[r], 80]\n\t"
|
|
"stp x16, x17, [%[r], 96]\n\t"
|
|
"stp x19, x20, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25"
|
|
);
|
|
}
|
|
|
|
/* Subtract two Montgomery form numbers (r = a - b % m).
|
|
*
|
|
* r Result of subtration.
|
|
* a Number to subtract from in Montgomery form.
|
|
* b Number to subtract with in Montgomery form.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_1024_mont_sub_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
const sp_digit* m)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x4, x5, [%[a], 0]\n\t"
|
|
"ldp x6, x7, [%[a], 16]\n\t"
|
|
"ldp x8, x9, [%[a], 32]\n\t"
|
|
"ldp x10, x11, [%[a], 48]\n\t"
|
|
"ldp x12, x13, [%[a], 64]\n\t"
|
|
"ldp x14, x15, [%[a], 80]\n\t"
|
|
"ldp x16, x17, [%[a], 96]\n\t"
|
|
"ldp x19, x20, [%[a], 112]\n\t"
|
|
"ldp x21, x22, [%[b], 0]\n\t"
|
|
"ldp x23, x24, [%[b], 16]\n\t"
|
|
"subs x4, x4, x21\n\t"
|
|
"sbcs x5, x5, x22\n\t"
|
|
"sbcs x6, x6, x23\n\t"
|
|
"sbcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[b], 32]\n\t"
|
|
"ldp x23, x24, [%[b], 48]\n\t"
|
|
"sbcs x8, x8, x21\n\t"
|
|
"sbcs x9, x9, x22\n\t"
|
|
"sbcs x10, x10, x23\n\t"
|
|
"sbcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[b], 64]\n\t"
|
|
"ldp x23, x24, [%[b], 80]\n\t"
|
|
"sbcs x12, x12, x21\n\t"
|
|
"sbcs x13, x13, x22\n\t"
|
|
"sbcs x14, x14, x23\n\t"
|
|
"sbcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[b], 96]\n\t"
|
|
"ldp x23, x24, [%[b], 112]\n\t"
|
|
"sbcs x16, x16, x21\n\t"
|
|
"sbcs x17, x17, x22\n\t"
|
|
"sbcs x19, x19, x23\n\t"
|
|
"sbcs x20, x20, x24\n\t"
|
|
"csetm x25, cc\n\t"
|
|
"ldp x21, x22, [%[m], 0]\n\t"
|
|
"ldp x23, x24, [%[m], 16]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"adds x4, x4, x21\n\t"
|
|
"adcs x5, x5, x22\n\t"
|
|
"adcs x6, x6, x23\n\t"
|
|
"adcs x7, x7, x24\n\t"
|
|
"ldp x21, x22, [%[m], 32]\n\t"
|
|
"ldp x23, x24, [%[m], 48]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"adcs x8, x8, x21\n\t"
|
|
"adcs x9, x9, x22\n\t"
|
|
"adcs x10, x10, x23\n\t"
|
|
"adcs x11, x11, x24\n\t"
|
|
"ldp x21, x22, [%[m], 64]\n\t"
|
|
"ldp x23, x24, [%[m], 80]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"adcs x12, x12, x21\n\t"
|
|
"adcs x13, x13, x22\n\t"
|
|
"adcs x14, x14, x23\n\t"
|
|
"adcs x15, x15, x24\n\t"
|
|
"ldp x21, x22, [%[m], 96]\n\t"
|
|
"ldp x23, x24, [%[m], 112]\n\t"
|
|
"and x21, x21, x25\n\t"
|
|
"and x22, x22, x25\n\t"
|
|
"and x23, x23, x25\n\t"
|
|
"and x24, x24, x25\n\t"
|
|
"adcs x16, x16, x21\n\t"
|
|
"adcs x17, x17, x22\n\t"
|
|
"adcs x19, x19, x23\n\t"
|
|
"adc x20, x20, x24\n\t"
|
|
"stp x4, x5, [%[r], 0]\n\t"
|
|
"stp x6, x7, [%[r], 16]\n\t"
|
|
"stp x8, x9, [%[r], 32]\n\t"
|
|
"stp x10, x11, [%[r], 48]\n\t"
|
|
"stp x12, x13, [%[r], 64]\n\t"
|
|
"stp x14, x15, [%[r], 80]\n\t"
|
|
"stp x16, x17, [%[r], 96]\n\t"
|
|
"stp x19, x20, [%[r], 112]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x19", "x20", "x21", "x22", "x23", "x24", "x25"
|
|
);
|
|
}
|
|
|
|
/* Conditionally add a and b using the mask m.
|
|
* m is -1 to add and 0 when not.
|
|
*
|
|
* r A single precision number representing conditional add result.
|
|
* a A single precision number to add with.
|
|
* b A single precision number to add.
|
|
* m Mask value to apply.
|
|
*/
|
|
static sp_digit sp_1024_cond_add_16(sp_digit* r, const sp_digit* a, const sp_digit* b,
|
|
sp_digit m)
|
|
{
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"mov x8, #0\n\t"
|
|
"1:\n\t"
|
|
"adds %[c], %[c], #-1\n\t"
|
|
"ldr x4, [%[a], x8]\n\t"
|
|
"ldr x5, [%[b], x8]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"cset %[c], cs\n\t"
|
|
"str x4, [%[r], x8]\n\t"
|
|
"add x8, x8, #8\n\t"
|
|
"cmp x8, 128\n\t"
|
|
"b.lt 1b\n\t"
|
|
: [c] "+r" (c)
|
|
: [r] "r" (r), [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return c;
|
|
#else
|
|
__asm__ __volatile__ (
|
|
|
|
"ldp x5, x7, [%[b], 0]\n\t"
|
|
"ldp x11, x12, [%[b], 16]\n\t"
|
|
"ldp x4, x6, [%[a], 0]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 16]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adds x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 0]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 16]\n\t"
|
|
"ldp x5, x7, [%[b], 32]\n\t"
|
|
"ldp x11, x12, [%[b], 48]\n\t"
|
|
"ldp x4, x6, [%[a], 32]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 48]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 32]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 48]\n\t"
|
|
"ldp x5, x7, [%[b], 64]\n\t"
|
|
"ldp x11, x12, [%[b], 80]\n\t"
|
|
"ldp x4, x6, [%[a], 64]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 80]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 64]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 80]\n\t"
|
|
"ldp x5, x7, [%[b], 96]\n\t"
|
|
"ldp x11, x12, [%[b], 112]\n\t"
|
|
"ldp x4, x6, [%[a], 96]\n\t"
|
|
"and x5, x5, %[m]\n\t"
|
|
"ldp x9, x10, [%[a], 112]\n\t"
|
|
"and x7, x7, %[m]\n\t"
|
|
"adcs x4, x4, x5\n\t"
|
|
"and x11, x11, %[m]\n\t"
|
|
"adcs x6, x6, x7\n\t"
|
|
"and x12, x12, %[m]\n\t"
|
|
"adcs x9, x9, x11\n\t"
|
|
"stp x4, x6, [%[r], 96]\n\t"
|
|
"adcs x10, x10, x12\n\t"
|
|
"stp x9, x10, [%[r], 112]\n\t"
|
|
"cset %[r], cs\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b), [m] "r" (m)
|
|
: "memory", "x4", "x6", "x5", "x7", "x8", "x9", "x10", "x11", "x12"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
}
|
|
|
|
static void sp_1024_rshift1_16(sp_digit* r, sp_digit* a)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldr x2, [%[a]]\n\t"
|
|
"ldr x3, [%[a], 8]\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"ldr x4, [%[a], 16]\n\t"
|
|
"str x2, [%[r], 0]\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"lsr x4, x4, 1\n\t"
|
|
"ldr x2, [%[a], 24]\n\t"
|
|
"str x3, [%[r], 8]\n\t"
|
|
"orr x4, x4, x2, lsl 63\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"ldr x3, [%[a], 32]\n\t"
|
|
"str x4, [%[r], 16]\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"ldr x4, [%[a], 40]\n\t"
|
|
"str x2, [%[r], 24]\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"lsr x4, x4, 1\n\t"
|
|
"ldr x2, [%[a], 48]\n\t"
|
|
"str x3, [%[r], 32]\n\t"
|
|
"orr x4, x4, x2, lsl 63\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"ldr x3, [%[a], 56]\n\t"
|
|
"str x4, [%[r], 40]\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"ldr x4, [%[a], 64]\n\t"
|
|
"str x2, [%[r], 48]\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"lsr x4, x4, 1\n\t"
|
|
"ldr x2, [%[a], 72]\n\t"
|
|
"str x3, [%[r], 56]\n\t"
|
|
"orr x4, x4, x2, lsl 63\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"ldr x3, [%[a], 80]\n\t"
|
|
"str x4, [%[r], 64]\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"ldr x4, [%[a], 88]\n\t"
|
|
"str x2, [%[r], 72]\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"lsr x4, x4, 1\n\t"
|
|
"ldr x2, [%[a], 96]\n\t"
|
|
"str x3, [%[r], 80]\n\t"
|
|
"orr x4, x4, x2, lsl 63\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"ldr x3, [%[a], 104]\n\t"
|
|
"str x4, [%[r], 88]\n\t"
|
|
"orr x2, x2, x3, lsl 63\n\t"
|
|
"lsr x3, x3, 1\n\t"
|
|
"ldr x4, [%[a], 112]\n\t"
|
|
"str x2, [%[r], 96]\n\t"
|
|
"orr x3, x3, x4, lsl 63\n\t"
|
|
"lsr x4, x4, 1\n\t"
|
|
"ldr x2, [%[a], 120]\n\t"
|
|
"str x3, [%[r], 104]\n\t"
|
|
"orr x4, x4, x2, lsl 63\n\t"
|
|
"lsr x2, x2, 1\n\t"
|
|
"str x4, [%[r], 112]\n\t"
|
|
"str x2, [%[r], 120]\n\t"
|
|
:
|
|
: [r] "r" (r), [a] "r" (a)
|
|
: "memory", "x2", "x3", "x4"
|
|
);
|
|
}
|
|
|
|
/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m)
|
|
*
|
|
* r Result of division by 2.
|
|
* a Number to divide.
|
|
* m Modulus (prime).
|
|
*/
|
|
static void sp_1024_div2_16(sp_digit* r, const sp_digit* a, const sp_digit* m)
|
|
{
|
|
sp_digit o;
|
|
|
|
o = sp_1024_cond_add_16(r, a, m, 0 - (a[0] & 1));
|
|
sp_1024_rshift1_16(r, r);
|
|
r[15] |= o << 63;
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p.
|
|
*
|
|
* r Result of doubling point.
|
|
* p Point to double.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_1024_proj_point_dbl_16_ctx {
|
|
int state;
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_1024_proj_point_dbl_16_ctx;
|
|
|
|
static int sp_1024_proj_point_dbl_16_nb(sp_ecc_ctx_t* sp_ctx, sp_point_1024* r, const sp_point_1024* p, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_1024_proj_point_dbl_16_ctx* ctx = (sp_1024_proj_point_dbl_16_ctx*)sp_ctx->data;
|
|
|
|
typedef char ctx_size_test[sizeof(sp_1024_proj_point_dbl_16_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0:
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*16;
|
|
ctx->x = r->x;
|
|
ctx->y = r->y;
|
|
ctx->z = r->z;
|
|
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* T1 = Z * Z */
|
|
sp_1024_mont_sqr_16(ctx->t1, p->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 2;
|
|
break;
|
|
case 2:
|
|
/* Z = Y * Z */
|
|
sp_1024_mont_mul_16(ctx->z, p->y, p->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 3;
|
|
break;
|
|
case 3:
|
|
/* Z = 2Z */
|
|
sp_1024_mont_dbl_16(ctx->z, ctx->z, p1024_mod);
|
|
ctx->state = 4;
|
|
break;
|
|
case 4:
|
|
/* T2 = X - T1 */
|
|
sp_1024_mont_sub_16(ctx->t2, p->x, ctx->t1, p1024_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
/* T1 = X + T1 */
|
|
sp_1024_mont_add_16(ctx->t1, p->x, ctx->t1, p1024_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
/* T2 = T1 * T2 */
|
|
sp_1024_mont_mul_16(ctx->t2, ctx->t1, ctx->t2, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* T1 = 3T2 */
|
|
sp_1024_mont_tpl_16(ctx->t1, ctx->t2, p1024_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
/* Y = 2Y */
|
|
sp_1024_mont_dbl_16(ctx->y, p->y, p1024_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
/* Y = Y * Y */
|
|
sp_1024_mont_sqr_16(ctx->y, ctx->y, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* T2 = Y * Y */
|
|
sp_1024_mont_sqr_16(ctx->t2, ctx->y, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* T2 = T2/2 */
|
|
sp_1024_div2_16(ctx->t2, ctx->t2, p1024_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* Y = Y * X */
|
|
sp_1024_mont_mul_16(ctx->y, ctx->y, p->x, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* X = T1 * T1 */
|
|
sp_1024_mont_sqr_16(ctx->x, ctx->t1, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* X = X - Y */
|
|
sp_1024_mont_sub_16(ctx->x, ctx->x, ctx->y, p1024_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
/* X = X - Y */
|
|
sp_1024_mont_sub_16(ctx->x, ctx->x, ctx->y, p1024_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* Y = Y - X */
|
|
sp_1024_mont_sub_16(ctx->y, ctx->y, ctx->x, p1024_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
/* Y = Y * T1 */
|
|
sp_1024_mont_mul_16(ctx->y, ctx->y, ctx->t1, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
/* Y = Y - T2 */
|
|
sp_1024_mont_sub_16(ctx->y, ctx->y, ctx->t2, p1024_mod);
|
|
ctx->state = 19;
|
|
/* fall-through */
|
|
case 19:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 19) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_1024_proj_point_dbl_16(sp_point_1024* r, const sp_point_1024* p, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*16;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = r->x;
|
|
y = r->y;
|
|
z = r->z;
|
|
/* Put infinity into result. */
|
|
if (r != p) {
|
|
r->infinity = p->infinity;
|
|
}
|
|
|
|
/* T1 = Z * Z */
|
|
sp_1024_mont_sqr_16(t1, p->z, p1024_mod, p1024_mp_mod);
|
|
/* Z = Y * Z */
|
|
sp_1024_mont_mul_16(z, p->y, p->z, p1024_mod, p1024_mp_mod);
|
|
/* Z = 2Z */
|
|
sp_1024_mont_dbl_16(z, z, p1024_mod);
|
|
/* T2 = X - T1 */
|
|
sp_1024_mont_sub_16(t2, p->x, t1, p1024_mod);
|
|
/* T1 = X + T1 */
|
|
sp_1024_mont_add_16(t1, p->x, t1, p1024_mod);
|
|
/* T2 = T1 * T2 */
|
|
sp_1024_mont_mul_16(t2, t1, t2, p1024_mod, p1024_mp_mod);
|
|
/* T1 = 3T2 */
|
|
sp_1024_mont_tpl_16(t1, t2, p1024_mod);
|
|
/* Y = 2Y */
|
|
sp_1024_mont_dbl_16(y, p->y, p1024_mod);
|
|
/* Y = Y * Y */
|
|
sp_1024_mont_sqr_16(y, y, p1024_mod, p1024_mp_mod);
|
|
/* T2 = Y * Y */
|
|
sp_1024_mont_sqr_16(t2, y, p1024_mod, p1024_mp_mod);
|
|
/* T2 = T2/2 */
|
|
sp_1024_div2_16(t2, t2, p1024_mod);
|
|
/* Y = Y * X */
|
|
sp_1024_mont_mul_16(y, y, p->x, p1024_mod, p1024_mp_mod);
|
|
/* X = T1 * T1 */
|
|
sp_1024_mont_sqr_16(x, t1, p1024_mod, p1024_mp_mod);
|
|
/* X = X - Y */
|
|
sp_1024_mont_sub_16(x, x, y, p1024_mod);
|
|
/* X = X - Y */
|
|
sp_1024_mont_sub_16(x, x, y, p1024_mod);
|
|
/* Y = Y - X */
|
|
sp_1024_mont_sub_16(y, y, x, p1024_mod);
|
|
/* Y = Y * T1 */
|
|
sp_1024_mont_mul_16(y, y, t1, p1024_mod, p1024_mp_mod);
|
|
/* Y = Y - T2 */
|
|
sp_1024_mont_sub_16(y, y, t2, p1024_mod);
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_1024_proj_point_dbl_n_16(sp_point_1024* p, int n,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*16;
|
|
sp_digit* b = t + 4*16;
|
|
sp_digit* t1 = t + 6*16;
|
|
sp_digit* t2 = t + 8*16;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
|
|
x = p->x;
|
|
y = p->y;
|
|
z = p->z;
|
|
|
|
/* Y = 2*Y */
|
|
sp_1024_mont_dbl_16(y, y, p1024_mod);
|
|
/* W = Z^4 */
|
|
sp_1024_mont_sqr_16(w, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(w, w, p1024_mod, p1024_mp_mod);
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
while (--n > 0)
|
|
#else
|
|
while (--n >= 0)
|
|
#endif
|
|
{
|
|
/* A = 3*(X^2 - W) */
|
|
sp_1024_mont_sqr_16(t1, x, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(t1, t1, w, p1024_mod);
|
|
sp_1024_mont_tpl_16(a, t1, p1024_mod);
|
|
/* B = X*Y^2 */
|
|
sp_1024_mont_sqr_16(t1, y, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(b, t1, x, p1024_mod, p1024_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_1024_mont_sqr_16(x, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(t2, b, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t2, p1024_mod);
|
|
/* Z = Z*Y */
|
|
sp_1024_mont_mul_16(z, z, y, p1024_mod, p1024_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_1024_mont_sqr_16(t1, t1, p1024_mod, p1024_mp_mod);
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
if (n != 0)
|
|
#endif
|
|
{
|
|
/* W = W*Y^4 */
|
|
sp_1024_mont_mul_16(w, w, t1, p1024_mod, p1024_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_1024_mont_sub_16(y, b, x, p1024_mod);
|
|
sp_1024_mont_mul_16(y, y, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(y, y, p1024_mod);
|
|
sp_1024_mont_sub_16(y, y, t1, p1024_mod);
|
|
}
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* A = 3*(X^2 - W) */
|
|
sp_1024_mont_sqr_16(t1, x, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(t1, t1, w, p1024_mod);
|
|
sp_1024_mont_tpl_16(a, t1, p1024_mod);
|
|
/* B = X*Y^2 */
|
|
sp_1024_mont_sqr_16(t1, y, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(b, t1, x, p1024_mod, p1024_mp_mod);
|
|
/* X = A^2 - 2B */
|
|
sp_1024_mont_sqr_16(x, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(t2, b, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t2, p1024_mod);
|
|
/* Z = Z*Y */
|
|
sp_1024_mont_mul_16(z, z, y, p1024_mod, p1024_mp_mod);
|
|
/* t2 = Y^4 */
|
|
sp_1024_mont_sqr_16(t1, t1, p1024_mod, p1024_mp_mod);
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_1024_mont_sub_16(y, b, x, p1024_mod);
|
|
sp_1024_mont_mul_16(y, y, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(y, y, p1024_mod);
|
|
sp_1024_mont_sub_16(y, y, t1, p1024_mod);
|
|
#endif
|
|
/* Y = Y/2 */
|
|
sp_1024_div2_16(y, y, p1024_mod);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_sub_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
sp_digit c = 0;
|
|
|
|
__asm__ __volatile__ (
|
|
"add x11, %[a], 128\n\t"
|
|
"\n1:\n\t"
|
|
"subs %[c], xzr, %[c]\n\t"
|
|
"ldp x3, x4, [%[a]], #16\n\t"
|
|
"ldp x5, x6, [%[a]], #16\n\t"
|
|
"ldp x7, x8, [%[b]], #16\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x9, x10, [%[b]], #16\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r]], #16\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r]], #16\n\t"
|
|
"csetm %[c], cc\n\t"
|
|
"cmp %[a], x11\n\t"
|
|
"b.ne 1b\n\t"
|
|
: [c] "+r" (c), [r] "+r" (r), [a] "+r" (a), [b] "+r" (b)
|
|
:
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10", "x11"
|
|
);
|
|
|
|
return c;
|
|
}
|
|
|
|
#else
|
|
/* Sub b from a into r. (r = a - b)
|
|
*
|
|
* r A single precision integer.
|
|
* a A single precision integer.
|
|
* b A single precision integer.
|
|
*/
|
|
static sp_digit sp_1024_sub_16(sp_digit* r, const sp_digit* a,
|
|
const sp_digit* b)
|
|
{
|
|
__asm__ __volatile__ (
|
|
"ldp x3, x4, [%[a], 0]\n\t"
|
|
"ldp x7, x8, [%[b], 0]\n\t"
|
|
"subs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 16]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 16]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 0]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 16]\n\t"
|
|
"ldp x3, x4, [%[a], 32]\n\t"
|
|
"ldp x7, x8, [%[b], 32]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 48]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 48]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 32]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 48]\n\t"
|
|
"ldp x3, x4, [%[a], 64]\n\t"
|
|
"ldp x7, x8, [%[b], 64]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 80]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 80]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 64]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 80]\n\t"
|
|
"ldp x3, x4, [%[a], 96]\n\t"
|
|
"ldp x7, x8, [%[b], 96]\n\t"
|
|
"sbcs x3, x3, x7\n\t"
|
|
"ldp x5, x6, [%[a], 112]\n\t"
|
|
"sbcs x4, x4, x8\n\t"
|
|
"ldp x9, x10, [%[b], 112]\n\t"
|
|
"sbcs x5, x5, x9\n\t"
|
|
"stp x3, x4, [%[r], 96]\n\t"
|
|
"sbcs x6, x6, x10\n\t"
|
|
"stp x5, x6, [%[r], 112]\n\t"
|
|
"csetm %[r], cc\n\t"
|
|
: [r] "+r" (r)
|
|
: [a] "r" (a), [b] "r" (b)
|
|
: "memory", "x3", "x4", "x5", "x6", "x7", "x8", "x9", "x10"
|
|
);
|
|
|
|
return (sp_digit)r;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Compare two numbers to determine if they are equal.
|
|
* Constant time implementation.
|
|
*
|
|
* a First number to compare.
|
|
* b Second number to compare.
|
|
* returns 1 when equal and 0 otherwise.
|
|
*/
|
|
static int sp_1024_cmp_equal_16(const sp_digit* a, const sp_digit* b)
|
|
{
|
|
return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2]) |
|
|
(a[3] ^ b[3]) | (a[4] ^ b[4]) | (a[5] ^ b[5]) |
|
|
(a[6] ^ b[6]) | (a[7] ^ b[7]) | (a[8] ^ b[8]) |
|
|
(a[9] ^ b[9]) | (a[10] ^ b[10]) | (a[11] ^ b[11]) |
|
|
(a[12] ^ b[12]) | (a[13] ^ b[13]) | (a[14] ^ b[14]) |
|
|
(a[15] ^ b[15])) == 0;
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
|
|
#ifdef WOLFSSL_SP_NONBLOCK
|
|
typedef struct sp_1024_proj_point_add_16_ctx {
|
|
int state;
|
|
sp_1024_proj_point_dbl_16_ctx dbl_ctx;
|
|
const sp_point_1024* ap[2];
|
|
sp_point_1024* rp[2];
|
|
sp_digit* t1;
|
|
sp_digit* t2;
|
|
sp_digit* t3;
|
|
sp_digit* t4;
|
|
sp_digit* t5;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
} sp_1024_proj_point_add_16_ctx;
|
|
|
|
static int sp_1024_proj_point_add_16_nb(sp_ecc_ctx_t* sp_ctx, sp_point_1024* r,
|
|
const sp_point_1024* p, const sp_point_1024* q, sp_digit* t)
|
|
{
|
|
int err = FP_WOULDBLOCK;
|
|
sp_1024_proj_point_add_16_ctx* ctx = (sp_1024_proj_point_add_16_ctx*)sp_ctx->data;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_1024* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
typedef char ctx_size_test[sizeof(sp_1024_proj_point_add_16_ctx) >= sizeof(*sp_ctx) ? -1 : 1];
|
|
(void)sizeof(ctx_size_test);
|
|
|
|
switch (ctx->state) {
|
|
case 0: /* INIT */
|
|
ctx->t1 = t;
|
|
ctx->t2 = t + 2*16;
|
|
ctx->t3 = t + 4*16;
|
|
ctx->t4 = t + 6*16;
|
|
ctx->t5 = t + 8*16;
|
|
|
|
ctx->state = 1;
|
|
break;
|
|
case 1:
|
|
/* Check double */
|
|
(void)sp_1024_sub_16(ctx->t1, p1024_mod, q->y);
|
|
sp_1024_norm_16(ctx->t1);
|
|
if ((sp_1024_cmp_equal_16(p->x, q->x) & sp_1024_cmp_equal_16(p->z, q->z) &
|
|
(sp_1024_cmp_equal_16(p->y, q->y) | sp_1024_cmp_equal_16(p->y, ctx->t1))) != 0)
|
|
{
|
|
XMEMSET(&ctx->dbl_ctx, 0, sizeof(ctx->dbl_ctx));
|
|
ctx->state = 2;
|
|
}
|
|
else {
|
|
ctx->state = 3;
|
|
}
|
|
break;
|
|
case 2:
|
|
err = sp_1024_proj_point_dbl_16_nb((sp_ecc_ctx_t*)&ctx->dbl_ctx, r, p, t);
|
|
if (err == MP_OKAY)
|
|
ctx->state = 27; /* done */
|
|
break;
|
|
case 3:
|
|
{
|
|
int i;
|
|
ctx->rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
ctx->rp[1] = (sp_point_1024*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(ctx->rp[1], 0, sizeof(sp_point_1024));
|
|
ctx->x = ctx->rp[p->infinity | q->infinity]->x;
|
|
ctx->y = ctx->rp[p->infinity | q->infinity]->y;
|
|
ctx->z = ctx->rp[p->infinity | q->infinity]->z;
|
|
|
|
ctx->ap[0] = p;
|
|
ctx->ap[1] = q;
|
|
for (i=0; i<16; i++) {
|
|
r->x[i] = ctx->ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->y[i] = ctx->ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->z[i] = ctx->ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ctx->ap[p->infinity]->infinity;
|
|
|
|
ctx->state = 4;
|
|
break;
|
|
}
|
|
case 4:
|
|
/* U1 = X1*Z2^2 */
|
|
sp_1024_mont_sqr_16(ctx->t1, q->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 5;
|
|
break;
|
|
case 5:
|
|
sp_1024_mont_mul_16(ctx->t3, ctx->t1, q->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 6;
|
|
break;
|
|
case 6:
|
|
sp_1024_mont_mul_16(ctx->t1, ctx->t1, ctx->x, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 7;
|
|
break;
|
|
case 7:
|
|
/* U2 = X2*Z1^2 */
|
|
sp_1024_mont_sqr_16(ctx->t2, ctx->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 8;
|
|
break;
|
|
case 8:
|
|
sp_1024_mont_mul_16(ctx->t4, ctx->t2, ctx->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 9;
|
|
break;
|
|
case 9:
|
|
sp_1024_mont_mul_16(ctx->t2, ctx->t2, q->x, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 10;
|
|
break;
|
|
case 10:
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_1024_mont_mul_16(ctx->t3, ctx->t3, ctx->y, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 11;
|
|
break;
|
|
case 11:
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_1024_mont_mul_16(ctx->t4, ctx->t4, q->y, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 12;
|
|
break;
|
|
case 12:
|
|
/* H = U2 - U1 */
|
|
sp_1024_mont_sub_16(ctx->t2, ctx->t2, ctx->t1, p1024_mod);
|
|
ctx->state = 13;
|
|
break;
|
|
case 13:
|
|
/* R = S2 - S1 */
|
|
sp_1024_mont_sub_16(ctx->t4, ctx->t4, ctx->t3, p1024_mod);
|
|
ctx->state = 14;
|
|
break;
|
|
case 14:
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_1024_mont_mul_16(ctx->z, ctx->z, q->z, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 15;
|
|
break;
|
|
case 15:
|
|
sp_1024_mont_mul_16(ctx->z, ctx->z, ctx->t2, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 16;
|
|
break;
|
|
case 16:
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_1024_mont_sqr_16(ctx->x, ctx->t4, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 17;
|
|
break;
|
|
case 17:
|
|
sp_1024_mont_sqr_16(ctx->t5, ctx->t2, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 18;
|
|
break;
|
|
case 18:
|
|
sp_1024_mont_mul_16(ctx->y, ctx->t1, ctx->t5, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 19;
|
|
break;
|
|
case 19:
|
|
sp_1024_mont_mul_16(ctx->t5, ctx->t5, ctx->t2, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 20;
|
|
break;
|
|
case 20:
|
|
sp_1024_mont_sub_16(ctx->x, ctx->x, ctx->t5, p1024_mod);
|
|
ctx->state = 21;
|
|
break;
|
|
case 21:
|
|
sp_1024_mont_dbl_16(ctx->t1, ctx->y, p1024_mod);
|
|
ctx->state = 22;
|
|
break;
|
|
case 22:
|
|
sp_1024_mont_sub_16(ctx->x, ctx->x, ctx->t1, p1024_mod);
|
|
ctx->state = 23;
|
|
break;
|
|
case 23:
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_1024_mont_sub_16(ctx->y, ctx->y, ctx->x, p1024_mod);
|
|
ctx->state = 24;
|
|
break;
|
|
case 24:
|
|
sp_1024_mont_mul_16(ctx->y, ctx->y, ctx->t4, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 25;
|
|
break;
|
|
case 25:
|
|
sp_1024_mont_mul_16(ctx->t5, ctx->t5, ctx->t3, p1024_mod, p1024_mp_mod);
|
|
ctx->state = 26;
|
|
break;
|
|
case 26:
|
|
sp_1024_mont_sub_16(ctx->y, ctx->y, ctx->t5, p1024_mod);
|
|
ctx->state = 27;
|
|
/* fall-through */
|
|
case 27:
|
|
err = MP_OKAY;
|
|
break;
|
|
}
|
|
|
|
if (err == MP_OKAY && ctx->state != 27) {
|
|
err = FP_WOULDBLOCK;
|
|
}
|
|
return err;
|
|
}
|
|
#endif /* WOLFSSL_SP_NONBLOCK */
|
|
|
|
static void sp_1024_proj_point_add_16(sp_point_1024* r,
|
|
const sp_point_1024* p, const sp_point_1024* q, sp_digit* t)
|
|
{
|
|
const sp_point_1024* ap[2];
|
|
sp_point_1024* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*16;
|
|
sp_digit* t3 = t + 4*16;
|
|
sp_digit* t4 = t + 6*16;
|
|
sp_digit* t5 = t + 8*16;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Ensure only the first point is the same as the result. */
|
|
if (q == r) {
|
|
const sp_point_1024* a = p;
|
|
p = q;
|
|
q = a;
|
|
}
|
|
|
|
/* Check double */
|
|
(void)sp_1024_mont_sub_16(t1, p1024_mod, q->y, p1024_mod);
|
|
sp_1024_norm_16(t1);
|
|
if ((sp_1024_cmp_equal_16(p->x, q->x) & sp_1024_cmp_equal_16(p->z, q->z) &
|
|
(sp_1024_cmp_equal_16(p->y, q->y) | sp_1024_cmp_equal_16(p->y, t1))) != 0) {
|
|
sp_1024_proj_point_dbl_16(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_1024*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_1024));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<16; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_1024_mont_sqr_16(t1, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t3, t1, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t1, t1, x, p1024_mod, p1024_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_1024_mont_sqr_16(t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t4, t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t2, t2, q->x, p1024_mod, p1024_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_1024_mont_mul_16(t3, t3, y, p1024_mod, p1024_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_1024_mont_mul_16(t4, t4, q->y, p1024_mod, p1024_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_1024_mont_sub_16(t2, t2, t1, p1024_mod);
|
|
/* R = S2 - S1 */
|
|
sp_1024_mont_sub_16(t4, t4, t3, p1024_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
sp_1024_mont_mul_16(z, z, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(z, z, t2, p1024_mod, p1024_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
sp_1024_mont_sqr_16(x, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(y, t1, t5, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(x, x, t5, p1024_mod);
|
|
sp_1024_mont_dbl_16(t1, y, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t1, p1024_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
sp_1024_mont_sub_16(y, y, x, p1024_mod);
|
|
sp_1024_mont_mul_16(y, y, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, t3, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(y, y, t5, p1024_mod);
|
|
}
|
|
}
|
|
|
|
/* Double the Montgomery form projective point p a number of times.
|
|
*
|
|
* r Result of repeated doubling of point.
|
|
* p Point to double.
|
|
* n Number of times to double
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_1024_proj_point_dbl_n_store_16(sp_point_1024* r,
|
|
const sp_point_1024* p, int n, int m, sp_digit* t)
|
|
{
|
|
sp_digit* w = t;
|
|
sp_digit* a = t + 2*16;
|
|
sp_digit* b = t + 4*16;
|
|
sp_digit* t1 = t + 6*16;
|
|
sp_digit* t2 = t + 8*16;
|
|
sp_digit* x = r[2*m].x;
|
|
sp_digit* y = r[(1<<n)*m].y;
|
|
sp_digit* z = r[2*m].z;
|
|
int i;
|
|
int j;
|
|
|
|
for (i=0; i<16; i++) {
|
|
x[i] = p->x[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
y[i] = p->y[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
z[i] = p->z[i];
|
|
}
|
|
|
|
/* Y = 2*Y */
|
|
sp_1024_mont_dbl_16(y, y, p1024_mod);
|
|
/* W = Z^4 */
|
|
sp_1024_mont_sqr_16(w, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(w, w, p1024_mod, p1024_mp_mod);
|
|
j = m;
|
|
for (i=1; i<=n; i++) {
|
|
j *= 2;
|
|
|
|
/* A = 3*(X^2 - W) */
|
|
sp_1024_mont_sqr_16(t1, x, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(t1, t1, w, p1024_mod);
|
|
sp_1024_mont_tpl_16(a, t1, p1024_mod);
|
|
/* B = X*Y^2 */
|
|
sp_1024_mont_sqr_16(t2, y, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(b, t2, x, p1024_mod, p1024_mp_mod);
|
|
x = r[j].x;
|
|
/* X = A^2 - 2B */
|
|
sp_1024_mont_sqr_16(x, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(t1, b, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t1, p1024_mod);
|
|
/* Z = Z*Y */
|
|
sp_1024_mont_mul_16(r[j].z, z, y, p1024_mod, p1024_mp_mod);
|
|
z = r[j].z;
|
|
/* t2 = Y^4 */
|
|
sp_1024_mont_sqr_16(t2, t2, p1024_mod, p1024_mp_mod);
|
|
if (i != n) {
|
|
/* W = W*Y^4 */
|
|
sp_1024_mont_mul_16(w, w, t2, p1024_mod, p1024_mp_mod);
|
|
}
|
|
/* y = 2*A*(B - X) - Y^4 */
|
|
sp_1024_mont_sub_16(y, b, x, p1024_mod);
|
|
sp_1024_mont_mul_16(y, y, a, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_dbl_16(y, y, p1024_mod);
|
|
sp_1024_mont_sub_16(y, y, t2, p1024_mod);
|
|
|
|
/* Y = Y/2 */
|
|
sp_1024_div2_16(r[j].y, y, p1024_mod);
|
|
r[j].infinity = 0;
|
|
}
|
|
}
|
|
|
|
/* Add two Montgomery form projective points.
|
|
*
|
|
* ra Result of addition.
|
|
* rs Result of subtraction.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_1024_proj_point_add_sub_16(sp_point_1024* ra,
|
|
sp_point_1024* rs, const sp_point_1024* p, const sp_point_1024* q,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*16;
|
|
sp_digit* t3 = t + 4*16;
|
|
sp_digit* t4 = t + 6*16;
|
|
sp_digit* t5 = t + 8*16;
|
|
sp_digit* t6 = t + 10*16;
|
|
sp_digit* x = ra->x;
|
|
sp_digit* y = ra->y;
|
|
sp_digit* z = ra->z;
|
|
sp_digit* xs = rs->x;
|
|
sp_digit* ys = rs->y;
|
|
sp_digit* zs = rs->z;
|
|
|
|
|
|
XMEMCPY(x, p->x, sizeof(p->x) / 2);
|
|
XMEMCPY(y, p->y, sizeof(p->y) / 2);
|
|
XMEMCPY(z, p->z, sizeof(p->z) / 2);
|
|
ra->infinity = 0;
|
|
rs->infinity = 0;
|
|
|
|
/* U1 = X1*Z2^2 */
|
|
sp_1024_mont_sqr_16(t1, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t3, t1, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t1, t1, x, p1024_mod, p1024_mp_mod);
|
|
/* U2 = X2*Z1^2 */
|
|
sp_1024_mont_sqr_16(t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t4, t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t2, t2, q->x, p1024_mod, p1024_mp_mod);
|
|
/* S1 = Y1*Z2^3 */
|
|
sp_1024_mont_mul_16(t3, t3, y, p1024_mod, p1024_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_1024_mont_mul_16(t4, t4, q->y, p1024_mod, p1024_mp_mod);
|
|
/* H = U2 - U1 */
|
|
sp_1024_mont_sub_16(t2, t2, t1, p1024_mod);
|
|
/* RS = S2 + S1 */
|
|
sp_1024_mont_add_16(t6, t4, t3, p1024_mod);
|
|
/* R = S2 - S1 */
|
|
sp_1024_mont_sub_16(t4, t4, t3, p1024_mod);
|
|
/* Z3 = H*Z1*Z2 */
|
|
/* ZS = H*Z1*Z2 */
|
|
sp_1024_mont_mul_16(z, z, q->z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(z, z, t2, p1024_mod, p1024_mp_mod);
|
|
XMEMCPY(zs, z, sizeof(p->z)/2);
|
|
/* X3 = R^2 - H^3 - 2*U1*H^2 */
|
|
/* XS = RS^2 - H^3 - 2*U1*H^2 */
|
|
sp_1024_mont_sqr_16(x, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(xs, t6, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(y, t1, t5, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(x, x, t5, p1024_mod);
|
|
sp_1024_mont_sub_16(xs, xs, t5, p1024_mod);
|
|
sp_1024_mont_dbl_16(t1, y, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t1, p1024_mod);
|
|
sp_1024_mont_sub_16(xs, xs, t1, p1024_mod);
|
|
/* Y3 = R*(U1*H^2 - X3) - S1*H^3 */
|
|
/* YS = -RS*(U1*H^2 - XS) - S1*H^3 */
|
|
sp_1024_mont_sub_16(ys, y, xs, p1024_mod);
|
|
sp_1024_mont_sub_16(y, y, x, p1024_mod);
|
|
sp_1024_mont_mul_16(y, y, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(t6, p1024_mod, t6, p1024_mod);
|
|
sp_1024_mont_mul_16(ys, ys, t6, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, t3, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(y, y, t5, p1024_mod);
|
|
sp_1024_mont_sub_16(ys, ys, t5, p1024_mod);
|
|
}
|
|
|
|
/* Structure used to describe recoding of scalar multiplication. */
|
|
typedef struct ecc_recode_1024 {
|
|
/* Index into pre-computation table. */
|
|
uint8_t i;
|
|
/* Use the negative of the point. */
|
|
uint8_t neg;
|
|
} ecc_recode_1024;
|
|
|
|
/* The index into pre-computation table to use. */
|
|
static const uint8_t recode_index_16_7[130] = {
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
|
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
|
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
|
|
48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
|
|
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
|
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1,
|
|
0, 1,
|
|
};
|
|
|
|
/* Whether to negate y-ordinate. */
|
|
static const uint8_t recode_neg_16_7[130] = {
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
0, 0,
|
|
};
|
|
|
|
/* Recode the scalar for multiplication using pre-computed values and
|
|
* subtraction.
|
|
*
|
|
* k Scalar to multiply by.
|
|
* v Vector of operations to perform.
|
|
*/
|
|
static void sp_1024_ecc_recode_7_16(const sp_digit* k, ecc_recode_1024* v)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint8_t y;
|
|
int carry = 0;
|
|
int o;
|
|
sp_digit n;
|
|
|
|
j = 0;
|
|
n = k[j];
|
|
o = 0;
|
|
for (i=0; i<147; i++) {
|
|
y = (int8_t)n;
|
|
if (o + 7 < 64) {
|
|
y &= 0x7f;
|
|
n >>= 7;
|
|
o += 7;
|
|
}
|
|
else if (o + 7 == 64) {
|
|
n >>= 7;
|
|
if (++j < 16)
|
|
n = k[j];
|
|
o = 0;
|
|
}
|
|
else if (++j < 16) {
|
|
n = k[j];
|
|
y |= (uint8_t)((n << (64 - o)) & 0x7f);
|
|
o -= 57;
|
|
n >>= o;
|
|
}
|
|
|
|
y += (uint8_t)carry;
|
|
v[i].i = recode_index_16_7[y];
|
|
v[i].neg = recode_neg_16_7[y];
|
|
carry = (y >> 7) + v[i].neg;
|
|
}
|
|
}
|
|
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Window technique of 7 bits. (Add-Sub variation.)
|
|
* Calculate 0..64 times the point. Use function that adds and
|
|
* subtracts the same two points.
|
|
* Recode to add or subtract one of the computed points.
|
|
* Double to push up.
|
|
* NOT a sliding window.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_1024_ecc_mulmod_win_add_sub_16(sp_point_1024* r, const sp_point_1024* g,
|
|
const sp_digit* k, int map, int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* t = NULL;
|
|
sp_digit* tmp = NULL;
|
|
#else
|
|
sp_point_1024 t[65+2];
|
|
sp_digit tmp[2 * 16 * 6];
|
|
#endif
|
|
sp_point_1024* rt = NULL;
|
|
sp_point_1024* p = NULL;
|
|
sp_digit* negy;
|
|
int i;
|
|
ecc_recode_1024 v[147];
|
|
int err = MP_OKAY;
|
|
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024) *
|
|
(65+2), heap, DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
tmp = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 16 * 6,
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
rt = t + 65;
|
|
p = t + 65+1;
|
|
|
|
/* t[0] = {0, 0, 1} * norm */
|
|
XMEMSET(&t[0], 0, sizeof(t[0]));
|
|
t[0].infinity = 1;
|
|
/* t[1] = {g->x, g->y, g->z} * norm */
|
|
err = sp_1024_mod_mul_norm_16(t[1].x, g->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(t[1].y, g->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(t[1].z, g->z, p1024_mod);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
t[1].infinity = 0;
|
|
/* t[2] ... t[64] */
|
|
sp_1024_proj_point_dbl_n_store_16(t, &t[ 1], 6, 1, tmp);
|
|
sp_1024_proj_point_add_16(&t[ 3], &t[ 2], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[ 6], &t[ 3], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[ 7], &t[ 5], &t[ 6], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[10], &t[ 5], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[11], &t[ 9], &t[10], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[12], &t[ 6], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[14], &t[ 7], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[15], &t[13], &t[14], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[18], &t[ 9], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[19], &t[17], &t[18], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[20], &t[10], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[22], &t[11], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[23], &t[21], &t[22], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[24], &t[12], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[26], &t[13], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[27], &t[25], &t[26], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[28], &t[14], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[30], &t[15], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[31], &t[29], &t[30], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[34], &t[17], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[35], &t[33], &t[34], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[36], &t[18], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[38], &t[19], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[39], &t[37], &t[38], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[40], &t[20], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[42], &t[21], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[43], &t[41], &t[42], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[44], &t[22], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[46], &t[23], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[47], &t[45], &t[46], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[48], &t[24], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[50], &t[25], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[51], &t[49], &t[50], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[52], &t[26], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[54], &t[27], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[55], &t[53], &t[54], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[56], &t[28], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[58], &t[29], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[59], &t[57], &t[58], &t[ 1], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[60], &t[30], tmp);
|
|
sp_1024_proj_point_dbl_16(&t[62], &t[31], tmp);
|
|
sp_1024_proj_point_add_sub_16(&t[63], &t[61], &t[62], &t[ 1], tmp);
|
|
|
|
negy = t[0].y;
|
|
|
|
sp_1024_ecc_recode_7_16(k, v);
|
|
|
|
i = 146;
|
|
XMEMCPY(rt, &t[v[i].i], sizeof(sp_point_1024));
|
|
for (--i; i>=0; i--) {
|
|
sp_1024_proj_point_dbl_n_16(rt, 7, tmp);
|
|
XMEMCPY(p, &t[v[i].i], sizeof(sp_point_1024));
|
|
sp_1024_mont_sub_16(negy, p1024_mod, p->y, p1024_mod);
|
|
sp_1024_norm_16(negy);
|
|
sp_1024_cond_copy_16(p->y, negy, (sp_digit)0 - v[i].neg);
|
|
sp_1024_proj_point_add_16(rt, rt, p, tmp);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_1024_map_16(r, rt, tmp);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_1024));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (tmp != NULL)
|
|
XFREE(tmp, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* A table entry for pre-computed points. */
|
|
typedef struct sp_table_entry_1024 {
|
|
sp_digit x[16];
|
|
sp_digit y[16];
|
|
} sp_table_entry_1024;
|
|
|
|
#ifdef FP_ECC
|
|
#endif /* FP_ECC */
|
|
/* Add two Montgomery form projective points. The second point has a q value of
|
|
* one.
|
|
* Only the first point can be the same pointer as the result point.
|
|
*
|
|
* r Result of addition.
|
|
* p First point to add.
|
|
* q Second point to add.
|
|
* t Temporary ordinate data.
|
|
*/
|
|
static void sp_1024_proj_point_add_qz1_16(sp_point_1024* r, const sp_point_1024* p,
|
|
const sp_point_1024* q, sp_digit* t)
|
|
{
|
|
const sp_point_1024* ap[2];
|
|
sp_point_1024* rp[2];
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2*16;
|
|
sp_digit* t3 = t + 4*16;
|
|
sp_digit* t4 = t + 6*16;
|
|
sp_digit* t5 = t + 8*16;
|
|
sp_digit* x;
|
|
sp_digit* y;
|
|
sp_digit* z;
|
|
int i;
|
|
|
|
/* Check double */
|
|
(void)sp_1024_mont_sub_16(t1, p1024_mod, q->y, p1024_mod);
|
|
sp_1024_norm_16(t1);
|
|
if ((sp_1024_cmp_equal_16(p->x, q->x) & sp_1024_cmp_equal_16(p->z, q->z) &
|
|
(sp_1024_cmp_equal_16(p->y, q->y) | sp_1024_cmp_equal_16(p->y, t1))) != 0) {
|
|
sp_1024_proj_point_dbl_16(r, p, t);
|
|
}
|
|
else {
|
|
rp[0] = r;
|
|
|
|
/*lint allow cast to different type of pointer*/
|
|
rp[1] = (sp_point_1024*)t; /*lint !e9087 !e740*/
|
|
XMEMSET(rp[1], 0, sizeof(sp_point_1024));
|
|
x = rp[p->infinity | q->infinity]->x;
|
|
y = rp[p->infinity | q->infinity]->y;
|
|
z = rp[p->infinity | q->infinity]->z;
|
|
|
|
ap[0] = p;
|
|
ap[1] = q;
|
|
for (i=0; i<16; i++) {
|
|
r->x[i] = ap[p->infinity]->x[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->y[i] = ap[p->infinity]->y[i];
|
|
}
|
|
for (i=0; i<16; i++) {
|
|
r->z[i] = ap[p->infinity]->z[i];
|
|
}
|
|
r->infinity = ap[p->infinity]->infinity;
|
|
|
|
/* U2 = X2*Z1^2 */
|
|
sp_1024_mont_sqr_16(t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t4, t2, z, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t2, t2, q->x, p1024_mod, p1024_mp_mod);
|
|
/* S2 = Y2*Z1^3 */
|
|
sp_1024_mont_mul_16(t4, t4, q->y, p1024_mod, p1024_mp_mod);
|
|
/* H = U2 - X1 */
|
|
sp_1024_mont_sub_16(t2, t2, x, p1024_mod);
|
|
/* R = S2 - Y1 */
|
|
sp_1024_mont_sub_16(t4, t4, y, p1024_mod);
|
|
/* Z3 = H*Z1 */
|
|
sp_1024_mont_mul_16(z, z, t2, p1024_mod, p1024_mp_mod);
|
|
/* X3 = R^2 - H^3 - 2*X1*H^2 */
|
|
sp_1024_mont_sqr_16(t1, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sqr_16(t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t3, x, t5, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(x, t1, t5, p1024_mod);
|
|
sp_1024_mont_dbl_16(t1, t3, p1024_mod);
|
|
sp_1024_mont_sub_16(x, x, t1, p1024_mod);
|
|
/* Y3 = R*(X1*H^2 - X3) - Y1*H^3 */
|
|
sp_1024_mont_sub_16(t3, t3, x, p1024_mod);
|
|
sp_1024_mont_mul_16(t3, t3, t4, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t5, t5, y, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_sub_16(y, t3, t5, p1024_mod);
|
|
}
|
|
}
|
|
|
|
#if defined(FP_ECC) || !defined(WOLFSSL_SP_SMALL)
|
|
/* Convert the projective point to affine.
|
|
* Ordinates are in Montgomery form.
|
|
*
|
|
* a Point to convert.
|
|
* t Temporary data.
|
|
*/
|
|
static void sp_1024_proj_to_affine_16(sp_point_1024* a, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
sp_digit* tmp = t + 4 * 16;
|
|
|
|
sp_1024_mont_inv_16(t1, a->z, tmp);
|
|
|
|
sp_1024_mont_sqr_16(t2, t1, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t1, t2, t1, p1024_mod, p1024_mp_mod);
|
|
|
|
sp_1024_mont_mul_16(a->x, a->x, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(a->y, a->y, t1, p1024_mod, p1024_mp_mod);
|
|
XMEMCPY(a->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
}
|
|
|
|
/* Generate the pre-computed table of points for the base point.
|
|
*
|
|
* width = 8
|
|
* 256 entries
|
|
* 128 bits between
|
|
*
|
|
* a The base point.
|
|
* table Place to store generated point data.
|
|
* tmp Temporary data.
|
|
* heap Heap to use for allocation.
|
|
*/
|
|
static int sp_1024_gen_stripe_table_16(const sp_point_1024* a,
|
|
sp_table_entry_1024* table, sp_digit* tmp, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* t = NULL;
|
|
#else
|
|
sp_point_1024 t[3];
|
|
#endif
|
|
sp_point_1024* s1 = NULL;
|
|
sp_point_1024* s2 = NULL;
|
|
int i;
|
|
int j;
|
|
int err = MP_OKAY;
|
|
|
|
(void)heap;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024) * 3, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
s1 = t + 1;
|
|
s2 = t + 2;
|
|
|
|
err = sp_1024_mod_mul_norm_16(t->x, a->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(t->y, a->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(t->z, a->z, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t->infinity = 0;
|
|
sp_1024_proj_to_affine_16(t, tmp);
|
|
|
|
XMEMCPY(s1->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
s1->infinity = 0;
|
|
XMEMCPY(s2->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
s2->infinity = 0;
|
|
|
|
/* table[0] = {0, 0, infinity} */
|
|
XMEMSET(&table[0], 0, sizeof(sp_table_entry_1024));
|
|
/* table[1] = Affine version of 'a' in Montgomery form */
|
|
XMEMCPY(table[1].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1].y, t->y, sizeof(table->y));
|
|
|
|
for (i=1; i<8; i++) {
|
|
sp_1024_proj_point_dbl_n_16(t, 128, tmp);
|
|
sp_1024_proj_to_affine_16(t, tmp);
|
|
XMEMCPY(table[1<<i].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[1<<i].y, t->y, sizeof(table->y));
|
|
}
|
|
|
|
for (i=1; i<8; i++) {
|
|
XMEMCPY(s1->x, table[1<<i].x, sizeof(table->x));
|
|
XMEMCPY(s1->y, table[1<<i].y, sizeof(table->y));
|
|
for (j=(1<<i)+1; j<(1<<(i+1)); j++) {
|
|
XMEMCPY(s2->x, table[j-(1<<i)].x, sizeof(table->x));
|
|
XMEMCPY(s2->y, table[j-(1<<i)].y, sizeof(table->y));
|
|
sp_1024_proj_point_add_qz1_16(t, s1, s2, tmp);
|
|
sp_1024_proj_to_affine_16(t, tmp);
|
|
XMEMCPY(table[j].x, t->x, sizeof(table->x));
|
|
XMEMCPY(table[j].y, t->y, sizeof(table->y));
|
|
}
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#endif /* FP_ECC | !WOLFSSL_SP_SMALL */
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^128, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* table Pre-computed table.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_1024_ecc_mulmod_stripe_16(sp_point_1024* r, const sp_point_1024* g,
|
|
const sp_table_entry_1024* table, const sp_digit* k, int map,
|
|
int ct, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* rt = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_1024 rt[2];
|
|
sp_digit t[2 * 16 * 5];
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
int i;
|
|
int j;
|
|
int y;
|
|
int x;
|
|
int err = MP_OKAY;
|
|
|
|
(void)g;
|
|
/* Constant time used for cache attack resistance implementation. */
|
|
(void)ct;
|
|
(void)heap;
|
|
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
rt = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (rt == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 2 * 16 * 5, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = rt + 1;
|
|
|
|
XMEMCPY(p->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
XMEMCPY(rt->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
|
|
y = 0;
|
|
x = 127;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 128;
|
|
}
|
|
XMEMCPY(rt->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(rt->y, table[y].y, sizeof(table[y].y));
|
|
rt->infinity = !y;
|
|
for (i=126; i>=0; i--) {
|
|
y = 0;
|
|
x = i;
|
|
for (j=0; j<8; j++) {
|
|
y |= (int)(((k[x / 64] >> (x % 64)) & 1) << j);
|
|
x += 128;
|
|
}
|
|
|
|
sp_1024_proj_point_dbl_16(rt, rt, t);
|
|
XMEMCPY(p->x, table[y].x, sizeof(table[y].x));
|
|
XMEMCPY(p->y, table[y].y, sizeof(table[y].y));
|
|
p->infinity = !y;
|
|
sp_1024_proj_point_add_qz1_16(rt, rt, p, t);
|
|
}
|
|
|
|
if (map != 0) {
|
|
sp_1024_map_16(r, rt, t);
|
|
}
|
|
else {
|
|
XMEMCPY(r, rt, sizeof(sp_point_1024));
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (rt != NULL)
|
|
XFREE(rt, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifdef FP_ECC
|
|
#ifndef FP_ENTRIES
|
|
#define FP_ENTRIES 16
|
|
#endif
|
|
|
|
/* Cache entry - holds precomputation tables for a point. */
|
|
typedef struct sp_cache_1024_t {
|
|
/* X ordinate of point that table was generated from. */
|
|
sp_digit x[16];
|
|
/* Y ordinate of point that table was generated from. */
|
|
sp_digit y[16];
|
|
/* Precomputation table for point. */
|
|
sp_table_entry_1024 table[256];
|
|
/* Count of entries in table. */
|
|
uint32_t cnt;
|
|
/* Point and table set in entry. */
|
|
int set;
|
|
} sp_cache_1024_t;
|
|
|
|
/* Cache of tables. */
|
|
static THREAD_LS_T sp_cache_1024_t sp_cache_1024[FP_ENTRIES];
|
|
/* Index of last entry in cache. */
|
|
static THREAD_LS_T int sp_cache_1024_last = -1;
|
|
/* Cache has been initialized. */
|
|
static THREAD_LS_T int sp_cache_1024_inited = 0;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
static volatile int initCacheMutex_1024 = 0;
|
|
static wolfSSL_Mutex sp_cache_1024_lock;
|
|
#endif
|
|
|
|
/* Get the cache entry for the point.
|
|
*
|
|
* g [in] Point scalar multipling.
|
|
* cache [out] Cache table to use.
|
|
*/
|
|
static void sp_ecc_get_cache_1024(const sp_point_1024* g, sp_cache_1024_t** cache)
|
|
{
|
|
int i;
|
|
int j;
|
|
uint32_t least;
|
|
|
|
if (sp_cache_1024_inited == 0) {
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
sp_cache_1024[i].set = 0;
|
|
}
|
|
sp_cache_1024_inited = 1;
|
|
}
|
|
|
|
/* Compare point with those in cache. */
|
|
for (i=0; i<FP_ENTRIES; i++) {
|
|
if (!sp_cache_1024[i].set)
|
|
continue;
|
|
|
|
if (sp_1024_cmp_equal_16(g->x, sp_cache_1024[i].x) &
|
|
sp_1024_cmp_equal_16(g->y, sp_cache_1024[i].y)) {
|
|
sp_cache_1024[i].cnt++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* No match. */
|
|
if (i == FP_ENTRIES) {
|
|
/* Find empty entry. */
|
|
i = (sp_cache_1024_last + 1) % FP_ENTRIES;
|
|
for (; i != sp_cache_1024_last; i=(i+1)%FP_ENTRIES) {
|
|
if (!sp_cache_1024[i].set) {
|
|
break;
|
|
}
|
|
}
|
|
|
|
/* Evict least used. */
|
|
if (i == sp_cache_1024_last) {
|
|
least = sp_cache_1024[0].cnt;
|
|
for (j=1; j<FP_ENTRIES; j++) {
|
|
if (sp_cache_1024[j].cnt < least) {
|
|
i = j;
|
|
least = sp_cache_1024[i].cnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
XMEMCPY(sp_cache_1024[i].x, g->x, sizeof(sp_cache_1024[i].x));
|
|
XMEMCPY(sp_cache_1024[i].y, g->y, sizeof(sp_cache_1024[i].y));
|
|
sp_cache_1024[i].set = 1;
|
|
sp_cache_1024[i].cnt = 1;
|
|
}
|
|
|
|
*cache = &sp_cache_1024[i];
|
|
sp_cache_1024_last = i;
|
|
}
|
|
#endif /* FP_ECC */
|
|
|
|
/* Multiply the base point of P1024 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* r Resulting point.
|
|
* g Point to multiply.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_1024_ecc_mulmod_16(sp_point_1024* r, const sp_point_1024* g, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
#ifndef FP_ECC
|
|
return sp_1024_ecc_mulmod_win_add_sub_16(r, g, k, map, ct, heap);
|
|
#else
|
|
sp_digit tmp[2 * 16 * 5];
|
|
sp_cache_1024_t* cache;
|
|
int err = MP_OKAY;
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
if (initCacheMutex_1024 == 0) {
|
|
wc_InitMutex(&sp_cache_1024_lock);
|
|
initCacheMutex_1024 = 1;
|
|
}
|
|
if (wc_LockMutex(&sp_cache_1024_lock) != 0)
|
|
err = BAD_MUTEX_E;
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_ecc_get_cache_1024(g, &cache);
|
|
if (cache->cnt == 2)
|
|
sp_1024_gen_stripe_table_16(g, cache->table, tmp, heap);
|
|
|
|
#ifndef HAVE_THREAD_LS
|
|
wc_UnLockMutex(&sp_cache_1024_lock);
|
|
#endif /* HAVE_THREAD_LS */
|
|
|
|
if (cache->cnt < 2) {
|
|
err = sp_1024_ecc_mulmod_win_add_sub_16(r, g, k, map, ct, heap);
|
|
}
|
|
else {
|
|
err = sp_1024_ecc_mulmod_stripe_16(r, g, cache->table, k,
|
|
map, ct, heap);
|
|
}
|
|
}
|
|
|
|
return err;
|
|
#endif
|
|
}
|
|
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* p Point to multiply.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_1024(const mp_int* km, const ecc_point* gm, ecc_point* r,
|
|
int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_1024 point[1];
|
|
sp_digit k[16];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_from_mp(k, 16, km);
|
|
sp_1024_point_from_ecc_point_16(point, gm);
|
|
|
|
err = sp_1024_ecc_mulmod_16(point, point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_to_ecc_point_16(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Striping precomputation table.
|
|
* 8 points combined into a table of 256 points.
|
|
* Distance of 128 between points.
|
|
*/
|
|
static const sp_table_entry_1024 p1024_table[256] = {
|
|
/* 0 */
|
|
{ { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00 },
|
|
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00 } },
|
|
/* 1 */
|
|
{ { 0xbf9c7ec6e0162bc2L,0xddecc6e310a89289L,0x5d599df09e499d81L,
|
|
0x9a96ea286d358218L,0x01aec7d370c5f8dbL,0xe72e49958cf5d066L,
|
|
0xc2e7297d3e91d7f8L,0x8621db92da9f2f5aL,0x4b26c8675a5679edL,
|
|
0x233385df2c56aac1L,0xb88e74d4c6a13f99L,0x1214b173ffa8ec11L,
|
|
0xa0386a271f3f9fefL,0xbd9b1b4ec0e7b44eL,0xafe528dceecd3496L,
|
|
0x8dfff96a1c49f80bL },
|
|
{ 0xb4a4753ac03c0c83L,0x68e69d18abcdcd75L,0xe3839b88f775b649L,
|
|
0x803f949abf58f352L,0x5f702679bd0bc15cL,0x85bf5d168ff298c2L,
|
|
0x3f6ebd98c6c7976eL,0x20618af445e3e1b4L,0x67d5598e54e64093L,
|
|
0xb047283b504fed9eL,0x450cabfd70d87517L,0x47d628bf3f5addbeL,
|
|
0x0037ef3078cb4ccaL,0x4e148d3c6b1c4908L,0xe256d3294fcfd837L,
|
|
0x2aa1207bde3c01f3L } },
|
|
/* 2 */
|
|
{ { 0xa95b6dae01900955L,0xa5dc9cc1ceb4656dL,0x50c78907e72fe95bL,
|
|
0xa1ae5447a040c334L,0x911913707952ea6eL,0x54ff73436d097305L,
|
|
0xa4db0074bda4d10fL,0xfd5306f191644070L,0x14b9fe738b24522cL,
|
|
0x1468dad67849f762L,0x87b29a18b0dcd2e4L,0xadd7f1a15e1ad492L,
|
|
0x9ac63a81dbba2a1aL,0x01379c5b81223379L,0xf402b2f0b0e53bc8L,
|
|
0x8c3eb27f0bf13b61L },
|
|
{ 0x9a4ad3e1e513696fL,0x0350ba5c18c81ffaL,0x1e2fc1363c033d13L,
|
|
0x53da6e7117a531bcL,0x42ec64901aed610dL,0xd33e8df7e99ff567L,
|
|
0xe4aad73e3deed12aL,0xd983b465180f4debL,0x99365269502f30b4L,
|
|
0x7e2799aba8918d7fL,0x0ffe84b6700fc79aL,0x7b4400d640bfd8c2L,
|
|
0xc3a21d215d2641bdL,0x79839442c32621cbL,0xace6500bb1401e83L,
|
|
0x7bf4163e251c4310L } },
|
|
/* 3 */
|
|
{ { 0x1c174f88e3fd589eL,0xdb501790df974a03L,0xd09623e33e70549fL,
|
|
0x8d091eff15924f34L,0xeef79cadf9b65ac5L,0xd2cc42623f69c2cfL,
|
|
0x817d903252cd82bcL,0xacf4f4d9a5f1ddddL,0xd06126355011b6bdL,
|
|
0x9f74490d2ed140c9L,0x64092e8c4db686d2L,0x225eef16776b0fccL,
|
|
0x0e8c01e9df16aeb6L,0x6283674184bbd82aL,0x757574e28956e337L,
|
|
0x9871edc6705a7f07L },
|
|
{ 0xbd0b76d5776535f7L,0x5214d6022635b3b8L,0xc0c25ad99d216f64L,
|
|
0xfd4df3a75515bf75L,0x24a625bc5e9f1675L,0x3c35efb7406873e7L,
|
|
0xef5c9a33bb2e5c4aL,0xa971b35e806b198aL,0x9f5c0ca5a3c690edL,
|
|
0xa8d5dd898e1e2341L,0x4cecbcce955ad9e4L,0x2ecf4407248d3416L,
|
|
0x1abb381145c0af6eL,0x3f4bee821c780fffL,0xd14df768c272ed57L,
|
|
0x397ed10a371637adL } },
|
|
/* 4 */
|
|
{ { 0xcf3e0bb2755c2a27L,0xd38e42f959585c44L,0x46b13e0f19285e60L,
|
|
0xc3ecd0c076273d0fL,0x7800f085193c569aL,0xf04e74ab4351818aL,
|
|
0x9258aa388496363bL,0x8456617cb8c894feL,0x8bc62aaa2af969a0L,
|
|
0x66c2280b5a4668d9L,0xbc9df58ea992f4faL,0x5db0b7d93f401e99L,
|
|
0xe0614fe1c4c38c0eL,0xd531151c2ccdf6b3L,0x1c7575ece143b618L,
|
|
0x40247985df9398a4L },
|
|
{ 0xfba251788f055746L,0xc5ba00400ab1e6e0L,0xe1b194fbac292697L,
|
|
0x771521195b4f4740L,0x250091d09bb7ba54L,0x7a674861b9a139a4L,
|
|
0xba8413b3f353aa7eL,0xafe771922443ceeeL,0x14468d363847bbd0L,
|
|
0x61f79ff63da4942dL,0x1563a1c1d425b456L,0x3c270fcd75ff4630L,
|
|
0x42072090eb2802c9L,0x68f0cdcbc85c7004L,0xca4372fbfa032e74L,
|
|
0x1a6fd1e6c8b79d80L } },
|
|
/* 5 */
|
|
{ { 0x967a901a8d5116a3L,0x0b844394b2f5f47fL,0xe39ad45260ebaf3bL,
|
|
0x1e1be61760ccfc0cL,0xac07e3d2cc3f53f2L,0xdd838e0e1ed11bb6L,
|
|
0x454753071c15b0c2L,0x70dd4748920fe5b8L,0x1a20be2de471896dL,
|
|
0x3c3fad8a59276c7cL,0x026a1cc3c886ee07L,0x9fdb6f376e831ac4L,
|
|
0x26a35d1aac501d65L,0x0ae9890540da8574L,0x65dde0a4abd734e5L,
|
|
0x29b7d4dc15614750L },
|
|
{ 0x44b3c2cbcbf4e20bL,0x1c3f548f58cc44c5L,0x39809b545b0cac1fL,
|
|
0x0c0f02b500f80621L,0xe612b890066905e0L,0x8f158ed78350188cL,
|
|
0xc01dc4583f5576b2L,0x29803272a45492e0L,0x77a5623a0ff92443L,
|
|
0xd12a2b0029d0dc41L,0xb41254592780e87aL,0x1ebcf9030d53f272L,
|
|
0xbae6ea4024301e8dL,0x1e5f3f2fa37d0798L,0x9342c31022b4126cL,
|
|
0x5d0928025382497eL } },
|
|
/* 6 */
|
|
{ { 0x583a2b7eff2f780dL,0x34d26820d7d76b1dL,0xe3c3284786f74aecL,
|
|
0x0fd4221210823febL,0x227e417efb5e7bf4L,0x510d49b6a568f8cdL,
|
|
0x53bce7d61781bbecL,0x9cfe3f222f3718b7L,0x7f44e89fd9de6c1fL,
|
|
0xf1cc553f3fac9b55L,0x9d2d0846e6f300bcL,0x976c82a29f0ae6b1L,
|
|
0xe63dbf5e24b8bbe0L,0x4cac7f45973a5aa7L,0xc6eb623784dd33c7L,
|
|
0x0a26e434142fee5dL },
|
|
{ 0x8081339facaa9a08L,0x40f311055246ece1L,0x892c817061393747L,
|
|
0x8d8d4103242f02e1L,0x482bfd203b5de98aL,0x89ef946b5abbe952L,
|
|
0xb8d218b937698249L,0xd5268e8966617c7aL,0x962e75518b7d2b91L,
|
|
0x2c5c7973fe8d67c3L,0x42e3150a2b017c51L,0x6f4e5ebcc1a29469L,
|
|
0xa39910ce531c7083L,0xaf4f6eb4b77b9e50L,0x68cbb175da120ad0L,
|
|
0x19497c61b92636ecL } },
|
|
/* 7 */
|
|
{ { 0x6920b0c6417659a8L,0xc77ab9c792cb28ffL,0x55b67180b687797fL,
|
|
0x4caf58c1e7759363L,0x5155bdb65561b186L,0x2e64e355780f4946L,
|
|
0xeb0ac9b7229a8b20L,0x88594d782571bd60L,0x5dcc0939e3fa78f9L,
|
|
0x7b8b48302ac2d379L,0x505fbf60b90f1444L,0xac610e813ce4b3c1L,
|
|
0x39a4f27ad59b5c18L,0x5fa339737cea0222L,0xe578730b8dff1c7bL,
|
|
0x96b91b8b517bf7a6L },
|
|
{ 0xc1a991f49aac087cL,0xce62f74e6cfdb28dL,0x08d6ff9a5f7600d6L,
|
|
0xd781cd04f917f9c9L,0x7796f5f63de52dbfL,0xe7db64e02ed72180L,
|
|
0x0f0876f66fa4137dL,0x3271ee643ca1f716L,0xcb9b20587c4ab8a3L,
|
|
0xcba1710739481047L,0xdf9a190d598c5c37L,0x0cb6e72a6f20e125L,
|
|
0xa3142204f4f2902dL,0x42d28cb97ce2dcfbL,0xdf261b8aa3d3c351L,
|
|
0x73f3d315cffc249dL } },
|
|
/* 8 */
|
|
{ { 0x5d86855be6fd3673L,0x309b70af9d214b7bL,0x8d332f90dcc46cd3L,
|
|
0xe553c015595510deL,0x5746a09638c1251cL,0xcd7cea5b85cc1bc9L,
|
|
0x4ffa1468002eba8fL,0x10a3cb7022fcd77cL,0xb6999dfbc4ea05e3L,
|
|
0x3375a0d04efa756eL,0x4d90279edced5fd8L,0x48192403251fd56eL,
|
|
0xe87633a482a4c5f1L,0x3170d1301b34105bL,0x93998b0f7247e578L,
|
|
0x88934f64436ba1faL },
|
|
{ 0xf09f43b04713eabcL,0x4ca7dd91accdc517L,0x27daa63bef13ca7cL,
|
|
0x8b2e5a7a2588184bL,0x0a8cb612d95dc269L,0x346975a2e1f2f14cL,
|
|
0x1f29b8ede172935cL,0xc3cbfd6ed40bc1e3L,0xd3f46b3f132623daL,
|
|
0xc115be6dfb0b7681L,0x5e31c34556da4344L,0xa7c63f18a8e43d98L,
|
|
0x55cb20834bddb4eaL,0xb16a0c384a54f58cL,0x74eacca246fd69d9L,
|
|
0x0d1898bb153548e1L } },
|
|
/* 9 */
|
|
{ { 0x4ea73461e35ef043L,0x107b67d93496b564L,0xd62c173bd0f83a3cL,
|
|
0xfad4b03851d29c35L,0x3f42882a71b1c1a4L,0x5d2bcf6654b43b9eL,
|
|
0xc77b15aa2abdf543L,0x5cb38a80dabe3dc1L,0x15fda0aea481673bL,
|
|
0x86996b4de7b90ebeL,0x84f87e252bc8f3d8L,0xaded03d637c4e424L,
|
|
0xe5ede666d7a7afd8L,0x80dd95a2a1ccb93aL,0xa55cfd2546fba391L,
|
|
0x2bdab1dc46f82e60L },
|
|
{ 0x7a4de22bfa6fed61L,0xca458aa5cc8dd94eL,0x3e372df1071222f5L,
|
|
0x06a4b44fe5aff377L,0xbc2d0ba74a738e6dL,0x1a470e1d5f31f136L,
|
|
0x77ff933ae102a911L,0x8b380a50310c7885L,0x9f3c0228783fc5acL,
|
|
0xec66892544725d06L,0x878f0e165ac84221L,0x9a3af1afcfda6e8aL,
|
|
0x0183ed3778cd2abaL,0x32cdbd60826d0eaeL,0xb3234661cbee6415L,
|
|
0x353eb892b9c10120L } },
|
|
/* 10 */
|
|
{ { 0xc8fdcad610b5521eL,0x1a11b44052e702f0L,0x6302680d8ffda49cL,
|
|
0xcdb9654acbf36badL,0x7b58ce114c10a2d7L,0x1e5d1f7de630e7e0L,
|
|
0x8cbe3d7d6760a813L,0xeb35866b6480d77fL,0x58728cf37f036219L,
|
|
0xdd5865ed42a8a757L,0x283f1f1d906a2870L,0x79e23fa4a51f906bL,
|
|
0xf2ac6e83543b20a8L,0x4f0b6379b81e7754L,0x57fbc0d4840016eeL,
|
|
0x8da20771e621b67dL },
|
|
{ 0x3c855004ecce65ecL,0x76d10d1fb748185eL,0x64be7bca78797ad2L,
|
|
0x43444db077e54aadL,0x17b6b0c9be0df0ffL,0x8fc4256c055086a4L,
|
|
0xf952c43bfd74d5a3L,0x501e005a01c4edb8L,0xd5172dfc4a57e328L,
|
|
0xdb40ce4e535d6ee3L,0xbaef1e5c0c650918L,0xe85145e7857561fcL,
|
|
0xe468536a34a224c6L,0x69a8e2270ec0e0a2L,0xb3f52247242b03fcL,
|
|
0x862f55e2c3bebd5fL } },
|
|
/* 11 */
|
|
{ { 0x2d6a390f226049feL,0xcc92a578dcbbc9fbL,0xa52feca497634fb7L,
|
|
0x2b340cb63dea5893L,0xa39f338a2a49e916L,0x26b2df3d949e41f3L,
|
|
0xc71c7cdb065a7e40L,0x4a9b84a0468281a2L,0x63eeb503731eeecaL,
|
|
0xe6d0913476cbb725L,0x0cf979a9b94a678cL,0xb44d8c3b808fd9f1L,
|
|
0xe60da613e0afc5b9L,0x52dce7de3ea5be69L,0x3a5d6864dc1ee74fL,
|
|
0x71ab28913bc80790L },
|
|
{ 0xcf618fc43b5b60adL,0x0afb5e304a0c3184L,0xd22381ccbc403302L,
|
|
0x33cf8953db1c0c66L,0x9c994e4da6112a8dL,0xd7aae2c3d1967a86L,
|
|
0xc28d54935b7acd29L,0x8075bd136c9a57fbL,0xc9c0373e9c8427f9L,
|
|
0x2cbca18d193225f5L,0x73777d13442c018cL,0xebe5ed47fbb3a727L,
|
|
0x70437d491962dc18L,0xf39c1e092dc08806L,0x03e9c6f715fff35cL,
|
|
0x8d087bb65e360a65L } },
|
|
/* 12 */
|
|
{ { 0xbe2123023fdc1844L,0x6eca27ef105eac56L,0x2183a606f168a348L,
|
|
0x295f807de1d7a4cbL,0x7246a6327ef5d43eL,0xae143205c77025c7L,
|
|
0x4bdfc7caf3484e3eL,0xec939895df52c075L,0x82e655f6d7a9cac0L,
|
|
0x985dfe208baeddb0L,0x79c817e4527de731L,0x30ce0fbc313de1eaL,
|
|
0x9df95b89cc4f6cbbL,0xf2aedf1ef5bb20cdL,0xfc1e0a891a8cfb01L,
|
|
0x225ed34a63edb7ecL },
|
|
{ 0x3e13154dbabb1a85L,0xd3d8dae71e6a565aL,0xd3217d56ab4b100fL,
|
|
0xd44d934eebc78e1aL,0x0215321b48e73d37L,0xbbc90bfa201e43cbL,
|
|
0x3c23f1d027500905L,0x2a2e5000c86691a1L,0x08b2bad26065841cL,
|
|
0x15d41caf30026b60L,0x1712c2f45276ce61L,0x01c4c3e715932ffbL,
|
|
0x7894e13d6a74caf2L,0x02d6f5df0c0537a4L,0xa8fb7602c2b1c97eL,
|
|
0x612b60e5d0887c7bL } },
|
|
/* 13 */
|
|
{ { 0xefd495cfba245d6bL,0x5cf0cbb7a2ce3ff6L,0x24da2ac0dff5feeeL,
|
|
0x90c914f8cf28c6a3L,0x72fdb50d4308a56bL,0x03dbf77913d72034L,
|
|
0xcfa5ec91822ac9e9L,0x0dde73c83aea3e81L,0x545ba96266289139L,
|
|
0xa52f648bca6acbd3L,0xff6f276e98a0683aL,0x2536d3aca378ed52L,
|
|
0x353c2c54885ac1d9L,0xcaff52da00bc84a7L,0x3971f81c37684167L,
|
|
0x0f7334e1d2d7986eL },
|
|
{ 0xafbb5c836596067eL,0x33e54e1938c19806L,0x8285d96739cb0dccL,
|
|
0x2b53f43d424035f9L,0x38c531f8dfef9095L,0x90fbe8e4db0f571aL,
|
|
0x9a0c1ed2a39ca787L,0x2fecc1d6606f2620L,0x9dc890b172b7cb4aL,
|
|
0xc33ca6fbccbb7868L,0xd1b11082fe73ee49L,0x590b7d17fcb66c48L,
|
|
0x9356b0a686e14573L,0x75d682c4053ead85L,0xb2ae55fac54d30fbL,
|
|
0x67636a72f8aee949L } },
|
|
/* 14 */
|
|
{ { 0x638063bcb91d6beaL,0xae263a2e923ecb96L,0x9d7b0992c627aca6L,
|
|
0xc6ed001a77af9e7eL,0x9214accf24aafebbL,0xa3564b9678055a90L,
|
|
0x00999b1ce027499dL,0xe413a4e1e46a06a5L,0xa05d13f62e51efe7L,
|
|
0x35e87d349ba843beL,0x0a6338253183159eL,0x6023e8ba54601923L,
|
|
0x9b107721b7fd1cf2L,0x46b5542bfdf2fd53L,0xb314f4f81c18af38L,
|
|
0x086f987660ac8965L },
|
|
{ 0x767019548cbb9850L,0x6210b730a20d2c8cL,0x4084d0575335670cL,
|
|
0x3ecdc5950324baeaL,0x607fc5f2c76ee9b4L,0xf393d00f440ffa64L,
|
|
0xe01117962dc1463cL,0xf00b82519c7725e7L,0x35e607365bd1d186L,
|
|
0xf3d8554c2cf72aacL,0xb4dd0fdeefa3497dL,0xd712268cf646ad11L,
|
|
0x07c20afb9f7b8eadL,0x630969d4fc06dfe5L,0x76b7df1c7245549aL,
|
|
0x681f9403e61ae810L } },
|
|
/* 15 */
|
|
{ { 0x7cad5163c9a0623bL,0xdbf8295767fab8d4L,0x2ccab0ec81af7c7cL,
|
|
0x469e38c8e966d5c2L,0x34430d52f0d4e41cL,0x426075a2a52b359cL,
|
|
0x242dd3e333bd0127L,0xcda3f6359fed2341L,0x4df33730d7d52ffaL,
|
|
0x5fff56f07640c3efL,0x4783c21c1bbde57cL,0xd8784a2aeb8bb336L,
|
|
0x1ec7c533ead08405L,0x4b7f1423f9b62bd4L,0x5543145c7075d4afL,
|
|
0x0c9de94aba60590aL },
|
|
{ 0x8ed7273595d5682bL,0x711c42832ec276edL,0xd1f4aed58b36a0d2L,
|
|
0x62ab40c48498a88fL,0x58c8fc624480f451L,0x8bc8ca4bb79cffe2L,
|
|
0x90ab583c701a359dL,0xaee31a733fd5d15dL,0x02a5597bc912333cL,
|
|
0x1019cae4b6c3e3c2L,0xe513042c29938088L,0x0e00283df47c8199L,
|
|
0x90d68e58f2a00e92L,0x69e2df41a775ae3bL,0xb8d2eca5871c30b2L,
|
|
0x733dca0ebb1de396L } },
|
|
/* 16 */
|
|
{ { 0xf5b495d04b59213aL,0xca6720398d70200eL,0x4bcb09a62b6771c1L,
|
|
0x26adeed42b9eb0cbL,0xeb5447548cdba212L,0x0e1abfcdf08890d1L,
|
|
0x52509963698e46b4L,0xe1bff0b082e9c138L,0xa189e4cd51099a71L,
|
|
0x2360c9bcc9b91cc7L,0x9bd4d7dc137ec4beL,0xd0356521d1519f6eL,
|
|
0xbf5f6d78cf832503L,0xe43010318deea2b4L,0xc3132494ef4c319cL,
|
|
0x2ab3bd470f1fa7d7L },
|
|
{ 0x5753b680922c9fbbL,0x869e7dc80f16c6d1L,0x83445135bac16efcL,
|
|
0x4326a3b4846d1d9bL,0xb517fee3b2d62c21L,0x6905afa20b292ad5L,
|
|
0x2a57131a2cadac13L,0xcd904d8febdbca8dL,0xdfeda86f3f365fb2L,
|
|
0x7097b208dc7eaa1cL,0x89a35a84a45e77c0L,0x417a062ccf5d118eL,
|
|
0x3c0c04a81f6e99e8L,0xc44704b0ba7a087dL,0x6f8a27d13ea22ad2L,
|
|
0x93a4b4164c27d229L } },
|
|
/* 17 */
|
|
{ { 0xd4271bc11f1efb7aL,0xae4e68e633fccc0dL,0x9d9bc8f1b11f50a8L,
|
|
0x5430398faf076089L,0x45e242fb443d0e03L,0x73ec2519f6e3d4c1L,
|
|
0xab70f790ba9bad09L,0xde612ad5f9add10fL,0xb837e54e14e942b4L,
|
|
0x175a56d3ddb8b68aL,0xe85b233c1ac2a408L,0xf8ff6c30f0c80f94L,
|
|
0x4b7f3fb7898db4f9L,0xa2c6044f45a7dcddL,0xf3abb2f6fe3d3895L,
|
|
0x342ce0d732ee7763L },
|
|
{ 0xeb261394cf491b1fL,0xdcaaeed71909e395L,0xdcc4055a9fe4dbeaL,
|
|
0x17a6611d493d604dL,0xba445a3a1ce5ebefL,0xe82e2858e3989cb5L,
|
|
0xb96f428283f58406L,0x99877b99a156cf55L,0xaf906a664e166a0eL,
|
|
0xcea1d353b2976d13L,0xefc16f2736c61a01L,0xdb04c433b0f55d86L,
|
|
0x3cb4b2698eb34c01L,0x38d07f782ae60280L,0x43ac3bcb43be3ec5L,
|
|
0x455f4af3e156fd20L } },
|
|
/* 18 */
|
|
{ { 0xc057f262754ec21cL,0x3eacd4c9e3a1ba38L,0x3a0210d1116c1fe9L,
|
|
0xe4ea4e94eacc8ab6L,0x31c00c9aea6f32caL,0x5cb6239d86b975ceL,
|
|
0x654d5d8ca14ea1e9L,0x230d31f45067fc8bL,0x48bb90cb6355fecbL,
|
|
0x78f81ecedc172e8eL,0x288380a8cb006737L,0x19b02e01e162d012L,
|
|
0x0e087a06c5af145cL,0xf04dc8b7b72dc354L,0xf70ef2148de3c066L,
|
|
0x4f14824313009fb7L },
|
|
{ 0x5e004fce6e2055e2L,0x89e247ea86c32067L,0x4ebcbd955f9daaa2L,
|
|
0xd15f212fceb7f63bL,0x5ecc5c1f863784a0L,0x53b3800b75760251L,
|
|
0xeb9301c38a6a2954L,0x0f16ba18a13cdd19L,0x8313d251887c2d24L,
|
|
0xf99235859a9413f6L,0x423405e6fe3fd7c5L,0x678aeb3416e0ee05L,
|
|
0x1f3be7bb3fadaab0L,0x7901fa2c82884471L,0xc950db304d662ff6L,
|
|
0x74d5d2d43c01170bL } },
|
|
/* 19 */
|
|
{ { 0xa3002dc02b5bfe11L,0x0733410d52d321e7L,0x15920f659679ba89L,
|
|
0x0e248c14685b236eL,0x8cfab594346f6040L,0x9f57afb740c717f0L,
|
|
0x0dbab28c66044576L,0x0fa099689cdc3247L,0x41e02ae2c230ed05L,
|
|
0x0d961554e45bef74L,0x9688a982ce4d7b6fL,0xfadefac75e62d22eL,
|
|
0xaf1512a6bd2cba28L,0x78868e62be7c749fL,0x88048d81ae9f5a6bL,
|
|
0x6b1a5442c5857a29L },
|
|
{ 0x9f5ab9ad43242066L,0x0afef1b52ccca2aeL,0xb1b43ec7988edc4eL,
|
|
0x0d0c00f10341b0d5L,0x4d68b8f7b50aab37L,0x9a8e4e6ff3a64a99L,
|
|
0x198338fb7f1a684eL,0x8bc0e748351a0f5cL,0x2cacf2cddac44515L,
|
|
0xc14d39995e9ff76bL,0x54a01b3f16393055L,0x6ac3eea5888d8376L,
|
|
0xb84d9a9a723277b1L,0x99132691e11dbbbfL,0x597717aeabb67178L,
|
|
0x4c2135268bb14ac8L } },
|
|
/* 20 */
|
|
{ { 0x2e6fe0a695532833L,0xabca228ed626d067L,0x22aef3d9649e73bdL,
|
|
0x2083a87af03c4c0cL,0xe954e75d35169b45L,0x577509ee74506a89L,
|
|
0x49cb276e2aeacf90L,0x08275d77fa409f91L,0x61eb6f3df0bbd6b9L,
|
|
0x948202cbe4132704L,0x35f3fc21b1c498b1L,0x76c68ba8361fee59L,
|
|
0xa18cbbd950e051f3L,0x2384a879318e7042L,0x292abead80dd1e8bL,
|
|
0x65713c295c37c334L },
|
|
{ 0xdccca8e9ceb77b9aL,0x2f97e72723b69469L,0xc76abee6a01d6b28L,
|
|
0x3925203d5abecdfeL,0x8944808229290d70L,0xf9931424b0314438L,
|
|
0x04209df17cd447c3L,0x7c6f2059c855c827L,0xd97d786256c0e069L,
|
|
0x5a9db6fe412d94c4L,0x19a64591994c41ddL,0x12348aa1c89e21a3L,
|
|
0xd6904b50c6a03f0eL,0x55c15156a616feacL,0x4e36d1b57cc7693bL,
|
|
0x6b0e996c3bae3c38L } },
|
|
/* 21 */
|
|
{ { 0x32789fabcceced00L,0x3237e71ae5b7aa66L,0x87b2e2692ddebcdfL,
|
|
0xb7245120b61dad8fL,0xe11e5e48d35f803cL,0xfb4df5d798e50f0dL,
|
|
0x60ee68b4bcd2ab92L,0x98ab2f5c1ce3363dL,0x15ba39da7cd42647L,
|
|
0x1a6572eb83f4fb3fL,0x0f77de88e56f08dbL,0x1743761e172562c2L,
|
|
0xbe349ff88a58f0f4L,0xe04da71b84d1d6e2L,0x368f03429e9ff3b4L,
|
|
0x4022a205678223f8L },
|
|
{ 0x527bbd0583847375L,0x3ae56b623f451af0L,0x6198f24d4b2c7f18L,
|
|
0xee323f5b4525b98dL,0xa9d8d39a0e0884b5L,0xd005d7f6fb12c776L,
|
|
0xd71c483e708bc154L,0x8ca6fd28742541bcL,0x0af3dccdf8397ddbL,
|
|
0xb80d31253eccf243L,0xc743a10858d81b8dL,0x3f48eb2171391f68L,
|
|
0x493aff8833bb657fL,0x1d15ed6607e47e31L,0x10159b11e08279f6L,
|
|
0x312179cb24a6a956L } },
|
|
/* 22 */
|
|
{ { 0xa94cc3ca07615ac2L,0x85865e64121ad581L,0xae47616fa7986b79L,
|
|
0x395a40eb9d5e0f1dL,0xa91432643d9457eaL,0x8de6d6a3fa2865d9L,
|
|
0x0771db961014ae8cL,0x77a7cce6976a87cbL,0xa7de42e1143a0f60L,
|
|
0xe203cc09d993d934L,0x9201869398ec4c3dL,0xd77546d83a25df4bL,
|
|
0x0ad9eb4762b02d6bL,0xfaaaf208d05a7189L,0x5238181f431221bbL,
|
|
0x417d6c78733511eaL },
|
|
{ 0x3cbd81b70e91e9a8L,0x73340418c370d6b3L,0x825db10a8eaa2373L,
|
|
0x8f2b09e46c7d6756L,0xe288ee9b94c33dedL,0xcd8426bb1695e3fbL,
|
|
0xa6176c86dce9e888L,0x3f4c89226165e362L,0x514e411f6063fb09L,
|
|
0x6907ac20c8f9e04cL,0xcef7469cdfd2ad61L,0xba30bae48452199aL,
|
|
0x3068129312ac3462L,0x011be873c92d482dL,0xff4cbf89e8330995L,
|
|
0x02189d52d1470a0aL } },
|
|
/* 23 */
|
|
{ { 0x73e419dd92599c69L,0x5b94221b7fec32caL,0xb2bf9bd209bbfbfdL,
|
|
0x61ea97a463ed895bL,0x6609146b3f486f79L,0xbd1c7a05fd141a39L,
|
|
0xc79ec8cf83d64135L,0x7f8fd42f9883507bL,0xafcb53b717b3d027L,
|
|
0x86658dcd67ca5a21L,0xa6a6c0accd149786L,0x16f3d70e34b95067L,
|
|
0x371208e3df44958cL,0xd2dd64e6ec280212L,0x33b2c4ab30782c71L,
|
|
0x7bbf8abd521176faL },
|
|
{ 0xbe9e4aafa78b981aL,0x788b4e36304ec828L,0x0c45cf393959dea3L,
|
|
0x70a9bdd3240b39c7L,0x499cd7dd28383b7dL,0x30690b2e307a1026L,
|
|
0x2262d598ee92f1b3L,0xc62d77deb4725a48L,0xa16f25bc7bc3aa0eL,
|
|
0x62dd8b65d15ef7faL,0xd979221d0b96d68fL,0xb92885c3a00f1906L,
|
|
0xfa476b9beb74c740L,0x217ddbb5c7576222L,0xc2782c305788504fL,
|
|
0x860d096cf812716bL } },
|
|
/* 24 */
|
|
{ { 0xfebc337d4d79bbf9L,0x5d53eab869f74f80L,0xff36a09533104d53L,
|
|
0x2ab820da196f8b97L,0x961d3d1f75ce6909L,0xb197ec0404683754L,
|
|
0xa68ce1bf93a6cb9bL,0x503456ffc5f021a3L,0xb50a2db18940ffdbL,
|
|
0x77c50f8fef004209L,0xd635d17704965875L,0x725766d98bb8770aL,
|
|
0x8e19b028a078e53eL,0x364d4ccaf9fc8378L,0x1a3df411f0dd39a0L,
|
|
0x7e80e44203adf920L },
|
|
{ 0x4b5f8a57539a1ddfL,0xd248e7aeee486562L,0x1c7b491d816021e1L,
|
|
0x2e7b871bfd36d2c4L,0xda38b5040aec00d9L,0xf28276126193f1b3L,
|
|
0x69c3fe86fb1f78d6L,0x56c8b786e827ac33L,0x1687f6c73487c8f7L,
|
|
0xab8f221719dee5bcL,0x04e8473fff399418L,0xf384c014a9027c80L,
|
|
0x9967be9aaa1d2e28L,0x869686d3e065eef1L,0x737c6b08c7bd837cL,
|
|
0x5dcab5d19e8bd863L } },
|
|
/* 25 */
|
|
{ { 0x0784283a9a7d772bL,0x6b49e525e540959bL,0x546bb00886414ab5L,
|
|
0xd44481629d74b2a9L,0x267890ad203b0b1bL,0x1e7a82bcc8d3f86bL,
|
|
0x1352bfb5d85a83c7L,0xf29f16e3fad07ccfL,0xc02a63b841e0c43fL,
|
|
0x904f22c56b379fefL,0x19d8a653b1244f26L,0x6635b6df3a28bdeaL,
|
|
0x18b68851f6d455ceL,0x74ac28189cff3735L,0xad40f9df8b2cbdabL,
|
|
0x08cc2d9eadc9d498L },
|
|
{ 0x2e6a6866c170c84bL,0xbb989e8b5a49a484L,0x7b0e00e0d04c8992L,
|
|
0x55ad347861b3a423L,0x3c952450b0d01899L,0xe3922155e3100cb3L,
|
|
0x19265b6ef03276d0L,0x0fe8595a76d42b53L,0x0a96dee0fc6353b6L,
|
|
0x761e0dc8246f893eL,0x4ec902bef0a74cbaL,0x610086843fdfad9bL,
|
|
0x5d6a60e44fdb6975L,0x3f53aac87ef7590aL,0xd29e6be012870a37L,
|
|
0x991fadc155aa55b0L } },
|
|
/* 26 */
|
|
{ { 0x82bc4b0fb4844ffeL,0x7392271460f8b871L,0x8ac000e24ce3f1f3L,
|
|
0xf0d548b4163519ecL,0x7aaf842b88288b5fL,0x9e8b0c4c2bdc9a70L,
|
|
0xa06d51524ba5fd67L,0xd0b1afa0f93cdec3L,0x280955badf89f8f0L,
|
|
0x86cbe92deea32c92L,0x0cae3f993fe05be4L,0xf2607095fa6919aaL,
|
|
0x0f54741e6e0f1b8bL,0x2aed1f7430ecf988L,0x9296f76b734991d7L,
|
|
0x66cf8d28259f0fe9L },
|
|
{ 0x9b01905b226f5868L,0xc102e88c16909e9eL,0x2bd089164a37eb54L,
|
|
0xf72253e8c9816323L,0x37f84e9d86bac53cL,0x2e352454afeaaaf7L,
|
|
0x67c86f772ca0046eL,0x86bce50e6663372eL,0xf6a3a960b6950a04L,
|
|
0x61f994d7fc1aba93L,0x1957c12bc1326e6eL,0x9b658fe42e56b005L,
|
|
0x9cd297fc8592740cL,0x7654ce9b177f26a5L,0xaaa699dba79d2ebbL,
|
|
0x5fca0c5a0ecb6448L } },
|
|
/* 27 */
|
|
{ { 0xe26e25f3569a6663L,0x09597ee7e6aa4ca7L,0x25a4cda68d18b80cL,
|
|
0x450602b522926730L,0x9af5f65007387209L,0xfeeedb3426733a53L,
|
|
0x0f5ce76886572951L,0x872a360b8398ae9aL,0x60347a802b30f6c3L,
|
|
0xd2113b231a162158L,0x6fd9cf92ee6c6decL,0x85f0a5a85cbcf9e6L,
|
|
0xd7a5a6e42ba3fe84L,0xaafe672051ecd727L,0xe09c6bb2a2081a10L,
|
|
0x657acbf0b973b0b4L },
|
|
{ 0x3130466fc274c8d4L,0x4276517630a994d1L,0x217258ca7079435fL,
|
|
0x44850406eb897a06L,0xf38dfeee561ee130L,0x11f4facfaa1778bbL,
|
|
0x765c6617b9abb9e9L,0xb135499bd8f10932L,0xc0eb6337a73b9159L,
|
|
0xf2c1ccf16f7e8b6aL,0x5b32c03a187def53L,0x89ad1d49830b9c62L,
|
|
0x1735eae32f10e538L,0xb1cbd9c29d5f55bcL,0x42428c47e539db0dL,
|
|
0x3d2da412c852b3bbL } },
|
|
/* 28 */
|
|
{ { 0x97702b6e871f2865L,0x56cb639f142920d6L,0x328522a045b58611L,
|
|
0xf3943ad1f3b13812L,0xe6c2200a712206e8L,0xc2890e5aa34d59eaL,
|
|
0xab52fd40f6b7f759L,0xf522c8de180bf567L,0x181e97b2accee396L,
|
|
0xe0375819c4ea5cbbL,0x0d9985e8ab51d3efL,0xe26c96cabcb50fd8L,
|
|
0xfb9d6b1397e1c80dL,0x582b1814f796357dL,0x89a7822107f4c7fbL,
|
|
0x02aeef2dc0357e61L },
|
|
{ 0x2ba7926f2c7ec9beL,0x292f307e7258b201L,0x74e62a10c6fa6b4aL,
|
|
0x80c08549e2bcc5abL,0xb4160db87bb8c073L,0xd5ef0529329f194dL,
|
|
0x0eb8da146dda4a9cL,0x0b5d43d215ea23d1L,0x6cebef02fc34bfaeL,
|
|
0xacd364d0848757a7L,0xc14013682d34cca3L,0x09ca67421d2d95e2L,
|
|
0xc3fd1d6e786eaa28L,0x9eb1136da2965fecL,0x48871baac0779203L,
|
|
0x6b446c014b15aeb0L } },
|
|
/* 29 */
|
|
{ { 0xc819eb2e25e8fe80L,0x2b5f790698238a17L,0xd6f1e99681e41849L,
|
|
0x58ad8ad698ea6d45L,0x5bae5ad4bfd02e40L,0x016dc327a812416dL,
|
|
0x8b31a985a3347ca1L,0x0b4da61082a65391L,0x1cb91b2db48c35fbL,
|
|
0x9e96817cd2aaf8c4L,0x1a630483cdfdcdc0L,0x7055936112b69254L,
|
|
0x5fdcd712f8a2a097L,0x59ab623a35cc5281L,0x30c8ebe0932b6095L,
|
|
0x8613424bb08e052fL },
|
|
{ 0x28902063b2231d8aL,0xb0f62329d9a61667L,0xaafa0fe7071a9f27L,
|
|
0x6bcd8960603f047eL,0x118cca76fd92a1c3L,0x3414e62b71d483b6L,
|
|
0xa123ccddba705262L,0x1a576437fd9b5c5aL,0xa5301bc24c8d0fa3L,
|
|
0x96f0ad44102427cdL,0x0e6fb5e0d3aa6c02L,0xcd8c4880072a3996L,
|
|
0x4dafca12840d3fadL,0x29f4ca3dde91d541L,0x0037c5988441734dL,
|
|
0x86333a999ccfe57cL } },
|
|
/* 30 */
|
|
{ { 0xd213a751ecf53b40L,0xcff2c6f22f78a542L,0x0f59f0e2f13ae56dL,
|
|
0x91f8ccbf0e61748eL,0x0aadecb9d72c4145L,0x6b2ed8524c9cdcb7L,
|
|
0x8e00b72c1eaffc70L,0x89b24285aa728102L,0xaa7ea7e0b679cafaL,
|
|
0x5d2b8c264f0a6f6fL,0x7ed7b1730e804397L,0x5a93eb45c8573049L,
|
|
0xc92bf5d40986e93eL,0x526b5a9c6a20c0afL,0x0adf47c9b99dc3afL,
|
|
0x12b25fe2ba202cc9L },
|
|
{ 0x09b8d78a33eea395L,0xc7a93618f633fc5cL,0x7e821629270eceefL,
|
|
0x524779b8c628ed0cL,0x91db5ca1a1d68939L,0x8626e18e586edc90L,
|
|
0xfe023e8bfeb3f3bfL,0x6279fde10250171cL,0xe52ec7dc55e172deL,
|
|
0x445e8695c6d4ca45L,0x42de3878bdbc10f1L,0x2b114de86fc3835eL,
|
|
0x9faba4567e10b652L,0x4111d82a390e78feL,0x576b61c2aedf0acaL,
|
|
0x216279a974accb74L } },
|
|
/* 31 */
|
|
{ { 0xc14cdabf4047f747L,0x03ca233dc1315a1eL,0x59e7cbd340e5d0a7L,
|
|
0x1fd0c4e9bb413869L,0x189d08b10f01fbd8L,0x50449c42a76b823dL,
|
|
0x81c224a1398b00a1L,0x08084e4f8e8179e4L,0xfd8af994698e41e9L,
|
|
0x1e30e37c5610bf2eL,0x4e6a043fa7d2790fL,0x9d96e60cb3195388L,
|
|
0xe75f986d03799dfdL,0x3b4a8f11f8ff902fL,0xfa9453787588416eL,
|
|
0x20683e3f9827535eL },
|
|
{ 0xcb582e26d0378878L,0x9e214c23a7945787L,0x13d000bf8f6688b3L,
|
|
0x7548d4f540515270L,0x7113c15d40111f5dL,0x3bf5a526a8bff902L,
|
|
0xbda6b0109b4945ccL,0x83dcc74ebc2f3a05L,0x2aef628443efdfa1L,
|
|
0xd2e60ee9565c5bf4L,0x4f0fa10d592f243aL,0x6ae58b321bc3bf51L,
|
|
0x813b086860576a74L,0x0bc023f84d73081aL,0x9fd03aa032dcee59L,
|
|
0x5e416bf527d6c795L } },
|
|
/* 32 */
|
|
{ { 0x24313760026cc23cL,0xf819aaeeb5b29058L,0xa92272f8c5d2ee17L,
|
|
0x8048e7cbee5cc402L,0xdbc7d6ee77def07dL,0x61d69244f6af821eL,
|
|
0x5f7966ed996cbb89L,0xf81b17ea96a155a4L,0xb2d9ef7003f3ed56L,
|
|
0x5e6e5906e882a5b2L,0x86fa1072ae947180L,0x34d9fc51658c76f4L,
|
|
0x9f603dc0cb035aa0L,0xb7b39feb75be6481L,0xca87554acf04a9efL,
|
|
0x4ff682ec87b4fde3L },
|
|
{ 0x3125627fd0a10ad5L,0x7fd45c72968e6f45L,0x2981bd6b806a1163L,
|
|
0xb92de1cdde5033e3L,0x3b44b45ebf4f8988L,0xca1b9896dae7e1dcL,
|
|
0x52166e5a0778d878L,0x82d472bea5116847L,0xfbdd382af2895445L,
|
|
0x22ed16025d6ec4c9L,0x3614eb1cb6552b02L,0x63c5df73a1e6210fL,
|
|
0xe9160285021a74a7L,0xa44ca400c65cbd4dL,0x48cb187e0f15e299L,
|
|
0x51eb818e3402507cL } },
|
|
/* 33 */
|
|
{ { 0x1fc1d178b92100abL,0xdf2e3d609605b839L,0x12a7c255b71e59d0L,
|
|
0x3f8b667514fcbe04L,0x0e8a393559fd06afL,0x5632650212020d07L,
|
|
0x6696fcd1528e7be5L,0x6588514b0c7b7654L,0x0cd80f8c5912a5b5L,
|
|
0x8bafef04f324cb7fL,0x6b53eecfc6da3d75L,0xedef48d831d1df2fL,
|
|
0xf336b96573812b6dL,0xc82eae4aee626031L,0x300abd32d244f09bL,
|
|
0x8b0af95531d9647fL },
|
|
{ 0xb770180a2e603544L,0x2b573ac3221acd9eL,0x3a17f66562407032L,
|
|
0xad3e74adb89abc3dL,0x8a3d2e3ad793225aL,0x457bba04ef02564bL,
|
|
0x8875652ffc2dd2b5L,0xd2905d15e67143e8L,0x6d884b4202e48d70L,
|
|
0x06f99219c7636a57L,0xa8dc342135e378dfL,0x95c1d73d10c64a02L,
|
|
0xcd6a4ececc157a66L,0xbadcc1c88e24a354L,0x8024f1b29839329dL,
|
|
0x5363e5494da48ad0L } },
|
|
/* 34 */
|
|
{ { 0x1f5523b7e23fc641L,0xfe54e72f86667063L,0x294a15f58e009d2fL,
|
|
0xf203997f8c57f5e1L,0xa229724cb16d64dcL,0x697be4fd4baa2ffbL,
|
|
0x3f507e460a6e8ed6L,0x0afe3a5d78508536L,0xeeef6cdd95408208L,
|
|
0x701fd889f2c4237cL,0x496d883a5c385253L,0xe25c67ed72a212f1L,
|
|
0x4b4167831ff78fcdL,0xe9967004c16f4146L,0xfa45c3a1c45b0697L,
|
|
0x633340183fbd30c3L },
|
|
{ 0x39c9a0cca2fbbbceL,0x876f6e5caa0cb744L,0x9ce6010e3438ece3L,
|
|
0x0aad148e13802d82L,0x9c3e5c609cd45a1bL,0x875cb8597bcfc1e0L,
|
|
0xb19ff790d8584dd0L,0x2598b81ed81c2a2bL,0x118bdf2f02be07e3L,
|
|
0x074fc8eeb9765ce9L,0x125e9d88b24f95aeL,0x3bb12cdc0c98f09dL,
|
|
0x4a6aee07a0b74b27L,0x4723d2f9c08077ceL,0x959447d6bea8026fL,
|
|
0x93a7075c16280b73L } },
|
|
/* 35 */
|
|
{ { 0x26bbefe2715b27f9L,0xa935a5e22a280923L,0x5ddf23affd58a26aL,
|
|
0x54c83e167c138694L,0x44799bc9892a2153L,0x4e6e47109b8d09f5L,
|
|
0xc63af616d588ea68L,0x5e896706883ab1b6L,0x3c1393a03d209336L,
|
|
0xd02f292192c23ddaL,0xab70cb7adcf6ea43L,0x12434ea8791559e1L,
|
|
0x040680db6d70ff0bL,0x1a10fe522832ba45L,0xd69f9c08e5f0cb8fL,
|
|
0x1a7422ac44b141fdL },
|
|
{ 0xc3a9dd2e9f40b675L,0x2a7c6603fcc71f39L,0x18939a611948e342L,
|
|
0x8f3b6158ed0ab484L,0xa3aa7d97ee31ca6bL,0xbc1e865ef7a8db63L,
|
|
0x315f8c092c7c62e4L,0xa260788f9f5c6d0fL,0xb18331294b6f3ec5L,
|
|
0x73adbcd636b4d849L,0x66e14890bc699a9bL,0xbf3790d82a1175e7L,
|
|
0x7f43605afc53ca4fL,0x577f6c4787ff6091L,0x827c7552600c82b6L,
|
|
0x0944d6309d25599cL } },
|
|
/* 36 */
|
|
{ { 0xcfdeb63ee6ab9620L,0xdff4fa6d786cd808L,0x145edd82456320b3L,
|
|
0x2ae5f862c4943915L,0x9508e813b73b3f87L,0x3bd805f3e52f97a9L,
|
|
0xf71b5c28c9829b62L,0xb394c70e86e0cefcL,0x534fb1a923bdb36eL,
|
|
0xd64f5862dbe27e5aL,0xbae23df383ab6169L,0xdd6df1b127c828cbL,
|
|
0x1901899f3a307a8aL,0x36cc8659811ddf66L,0xa3cb777479943b77L,
|
|
0x7d89f3836fd86576L },
|
|
{ 0xf8564242c9f92b2bL,0x700c6a75c46e32bdL,0x93e768b77f99a5c5L,
|
|
0xb6efe85803149568L,0xbbfe8a19c2ce6709L,0x721a3b1bee6ec493L,
|
|
0x26eeeea9c371c28dL,0xd798115e15177e1dL,0xd7bf3bceb068a5a5L,
|
|
0xdf8da22046d2b4b2L,0x3df0995b59be9dfcL,0xc96897bc77640b79L,
|
|
0xce0cf4c25a2bd3c5L,0x16f45d6e89afe744L,0xb53f3acb3a8509bbL,
|
|
0x449af81f63f2a6e6L } },
|
|
/* 37 */
|
|
{ { 0xc2fcf132a16d9377L,0x9ab377b37e1a2f9eL,0x72e1a12e86d19ae5L,
|
|
0xd2b12e66d013bbb1L,0x0972e055cb5f66baL,0xd11de1c0399eab50L,
|
|
0xc1f314fdc65f5ec2L,0xfc3118418a9ff593L,0xdf73c1ece05246e6L,
|
|
0xc28d13631625056dL,0x30a9dbd76fb25e19L,0x049ed244845cd2d7L,
|
|
0xc779b83fd36e852dL,0x85a35fc7f68c8a83L,0x299bf1e1c95e8033L,
|
|
0x0e8617c320891af5L },
|
|
{ 0x5372060267c81b5cL,0x2fa89dcde737873cL,0x2a7430b0a8144fd0L,
|
|
0x3006c5a726208c83L,0x4e066660d8ea40f5L,0x9dd025f9896413a4L,
|
|
0xbdf380cc46b9149fL,0x801566190a125cc2L,0x04d6a3b752793c37L,
|
|
0xb60013746b7a62f2L,0xa9cfe268585d5978L,0xdcad0cb88395fe66L,
|
|
0xbab468fc46b261f6L,0xca0ef5ef9d9d9218L,0xc507d4a85e452402L,
|
|
0x6f4404f1326cf687L } },
|
|
/* 38 */
|
|
{ { 0xa3e1920b4febd3ffL,0xca6234d8fdfd2bbaL,0xb7d1af2ae19a9829L,
|
|
0x23de1610c6f5bc20L,0xe204dbf3daa39ca9L,0x2a2de9b86d8c70abL,
|
|
0x272e0c377c9d370bL,0x80914c06e565510eL,0xb611e7a857cbb6b0L,
|
|
0x076fc6efd8266a6eL,0xdfac34ee3095801cL,0x69ff40a2b9e24063L,
|
|
0xa7ba31a9787aa5c5L,0x0e4d1fdf33c70cd2L,0x903e31326895f074L,
|
|
0x905771f87fb671e2L },
|
|
{ 0x5199ba0da4062beeL,0x18e7238c94d7d9f9L,0xf53f29bc1e0922c0L,
|
|
0xde9b2a81b12d855fL,0x649f3eed6d68ca29L,0x64adfc34c50c097fL,
|
|
0x81964ab99db398a0L,0x00d59c477a587224L,0x09fea39674c5903aL,
|
|
0x6aafd8ee15043dd0L,0xc5721a6e5f1ecc20L,0xb6d6a4830db9b7b4L,
|
|
0x06ffc61766c8d52aL,0x3de241d6acc82a27L,0x0605f05227f2f7a8L,
|
|
0x6a22953b6404deccL } },
|
|
/* 39 */
|
|
{ { 0x92452d8f74fce389L,0x059634c02afa5564L,0x9377ccbbf0ed7825L,
|
|
0x89f4045b37718e0dL,0x11074e7d9fa69a4dL,0x5d70bb077295b0baL,
|
|
0xb22d54adf107ede6L,0x5c39a3d8a1a29c7bL,0x37236c02d795e3abL,
|
|
0xf7282d002b589951L,0x5e2265be5790bee2L,0x91e0ea11a8e65ea2L,
|
|
0x0e71a7086001cebdL,0x16900f5a2c1c5402L,0xc3b2d5c0357f6981L,
|
|
0x528c9ea0619e3427L },
|
|
{ 0x1edc86b45f26c577L,0xf80747089438bd45L,0x2dfe1013792582a7L,
|
|
0xe08eaca0de1e569fL,0x5f952efa9a55a356L,0xa4d80b53e4976216L,
|
|
0xd2b65855cd5d71f2L,0x246704bf66cea3f0L,0x193f641f492323caL,
|
|
0xa681855c9adb1325L,0x86d522ce2d19d652L,0x53609f105b82ed7bL,
|
|
0x3b0f00948e150d29L,0x23ad8bfb0b13e891L,0xcbb1556cf794b449L,
|
|
0x200f9093738bcf57L } },
|
|
/* 40 */
|
|
{ { 0xf9b22fc58388387fL,0xcf26f17028e883c5L,0x447cab90d1b7973cL,
|
|
0x8d5d4ea2f6ec9171L,0x2e16f498c30cdbc0L,0xdc92910c48623c2bL,
|
|
0xeb1491b030dbc545L,0x631deb2e14de21b0L,0x04a210662fe830f4L,
|
|
0xa4c6979c379c1f3fL,0x8a732b68fb06a795L,0x3a44327a1619dfa9L,
|
|
0x91a307d38dbe2c9bL,0x939bc8d203989feaL,0x3daabaf20f4a331fL,
|
|
0x5c307e98dd0f55dcL },
|
|
{ 0xbbc4e0c435b233daL,0xe3d2908522f6f985L,0x99dd2d21a8b02468L,
|
|
0x978f40e9a96916e7L,0x0327d86c614bccedL,0x95e95502b290762cL,
|
|
0x0ffd2197a879f2edL,0xc436513750e0bd33L,0x26c3148a0827c4c4L,
|
|
0xc79812a83fcfc0b2L,0xc3d8d17e31928589L,0x8b572cfe8830f42dL,
|
|
0x7cd9ff924b07f83fL,0x331ca9500a51148fL,0xd0c539684c59f9acL,
|
|
0x1df16dfac1434785L } },
|
|
/* 41 */
|
|
{ { 0xcc7bb4ac68bcacc3L,0x06ded34f430f58cfL,0xc59f9f4fd461855aL,
|
|
0xf549199445c9f0bcL,0xdc5f7ec64375c892L,0x1b8708f13c85983aL,
|
|
0xb32a5cc482fcd087L,0xefdcdc352d6b4c0fL,0x4bb24f048ac6fb2dL,
|
|
0x5982d4f533906471L,0x162eb52fb83a3ac4L,0x7130df282337a223L,
|
|
0xdce7b802cbc3dbd3L,0x8b3959592467ac0eL,0x21d3d2e81b56717eL,
|
|
0x729a7f5046512617L },
|
|
{ 0x874ed1aa8420f90aL,0x6368e19e0fe4c855L,0xb62d4aaab0be74afL,
|
|
0x76fcc4808ca60ca9L,0xf310b5a57645a867L,0x131bac9bddb1b24cL,
|
|
0xef77d71d2dea5b44L,0x4706d21072fcc64eL,0x29b92691673d77f0L,
|
|
0x22e00bf3e89e0663L,0x472d0cd374077d40L,0x3e21040d829232e2L,
|
|
0x2f916dfb38dc8533L,0x48bbb59b14b8f667L,0x19de9f4ad44be19dL,
|
|
0x7f6d3649232d9d5cL } },
|
|
/* 42 */
|
|
{ { 0x3bd064de6e794819L,0x5a6b694ef82ebda1L,0x1f017fe0b91e2804L,
|
|
0x190d31f307a43cd2L,0x6c26f226630433e9L,0xba488aa70abfdcb4L,
|
|
0x418d9085a46411c0L,0x1b934fe6bffb5880L,0x75d1e237e200f849L,
|
|
0xdf04d63fa55413dbL,0xe216ed75e23b3f77L,0xa05866cb0f91bd30L,
|
|
0x84c395d97729c509L,0xec97e188452ab2d7L,0x8cb7c1f90093d686L,
|
|
0x2d032395628f086cL },
|
|
{ 0xa81c94074a44b4c5L,0xb9846879cc702c98L,0xcb502287ceb0dc97L,
|
|
0x303011266e3aa321L,0xc0ac8763e4c256c2L,0x65034d20e55b4845L,
|
|
0xaa96a040f240f35bL,0x046d26d37cf7eedcL,0x62a5a8e13b810656L,
|
|
0x86044b9783d70c2bL,0x2fbaff8859e4da8fL,0x929d901a5457f5d1L,
|
|
0xd29e1eb2b531b757L,0x214dabdc9e4e9739L,0x5bd724fc4eaa9bd9L,
|
|
0x734c12b31ef9bb9bL } },
|
|
/* 43 */
|
|
{ { 0x98fe3c2e92f9b086L,0x4641b93eb3fd4544L,0x47ce208b5c02c65cL,
|
|
0x8a52dca1c4f03242L,0xb5ec17d9679d29f6L,0x11d2fed09406f5f4L,
|
|
0x260f63dc0d9ba811L,0xde2b056f15472a3fL,0x1b170d9f007290e6L,
|
|
0xa2e23e8db6b5c8f9L,0x345a2839cf34c3eeL,0x9bdc54611b973ee2L,
|
|
0x65bda6c2bb24d1c5L,0x97d52ba33c6141a1L,0x47bb16129d2eb201L,
|
|
0x7c558a8721fbe49fL },
|
|
{ 0xb9485a523f350fecL,0x016678c56a38d4c0L,0x8ef346a20d5aa64dL,
|
|
0xb85daa02d96da2e4L,0x845ec4ea4f647b3cL,0xc0d1a6ca0d5e946cL,
|
|
0x41d8d1c14fa9f4abL,0x43972cc59c8b1303L,0x67e1f48d434ffbfbL,
|
|
0x350ce93a819d2318L,0x49f530906ddef23fL,0x3c2e6cf9200cf12cL,
|
|
0x42691cc1640432fcL,0xbfff74b472496b52L,0x44527c9f020a97beL,
|
|
0x34cd7dca7b3c4348L } },
|
|
/* 44 */
|
|
{ { 0xf031761a59e7fe87L,0xb1eae31a0047cd72L,0x27902e68fae30f62L,
|
|
0xa666f48db71db143L,0x75ee66780e0038f4L,0x3b45ac6702bdd76dL,
|
|
0x0d2fb828a0d6cd5cL,0x27ce7f1d9d8c5b11L,0x141fe0e4120b5e96L,
|
|
0x95a1b984b9267c37L,0x5206e589d60312cdL,0x1867342eda549356L,
|
|
0x374520b9070c74acL,0x2703cbb59557b0b3L,0xf621f59ca6ed8c14L,
|
|
0x7ceb1cc2abf7b887L },
|
|
{ 0x0647a5bbdb7fd65bL,0xd8d45cc036c9457cL,0xc6da99db9e12718aL,
|
|
0xed1dbbf4e93a7fb1L,0x4512c95cbd1566a1L,0x4861ba00dbc0c919L,
|
|
0x3c6cc2989e7f5269L,0x671961500941aaaeL,0xbfcf5d0fc8c538e3L,
|
|
0xad6e9929a25a551fL,0x9071098517ca0f26L,0x743b78eafa89ef7eL,
|
|
0x39d5ea3171ab4549L,0x7442f3f3e6d1c36dL,0x25a683e0059d568dL,
|
|
0x1f629a99227ced5cL } },
|
|
/* 45 */
|
|
{ { 0x8925ddace45a1c3eL,0x72d2936541f7545fL,0x45622fcb37e7f828L,
|
|
0x882345133e4c79d2L,0x5dffaf849c2645d6L,0x3078f4dd994802b9L,
|
|
0x566927f09d339fa0L,0x9a500a1e9fd91dccL,0xce0081800ab0abd7L,
|
|
0xd97135a38194e5dfL,0x9e87630798adf088L,0x3baf01b89a45a2a7L,
|
|
0x6fed6154788b4399L,0x980e5722e77a997dL,0xaac90ffa2a378eedL,
|
|
0x4a75fda28bd805a2L },
|
|
{ 0xd09a8fbb55e74cbcL,0x737738cefab18f25L,0x0fc23ad69764ec3aL,
|
|
0xc5a7d35be7e0ad31L,0xe75e068ee481cc9bL,0xf0c2ea993d4aec34L,
|
|
0xf1324fe80d4a63c4L,0x5dbb7c1699b0592cL,0x442d674da7e0f46bL,
|
|
0x5a5d66c7a300faeaL,0xe83dc8213333ac83L,0x70ef812e8c408496L,
|
|
0x96e1dcb699ef5fc1L,0x6e2b771b1734e862L,0x04629cdc583507d8L,
|
|
0x5819f9ae23d8179aL } },
|
|
/* 46 */
|
|
{ { 0xd99691216aa78811L,0xf64ee8f42103e7c3L,0xddf0107022b9e698L,
|
|
0xe6001f9e4f582cdeL,0x24a608af2ecfac1aL,0x6ef4c78406393009L,
|
|
0x5262eae6ebf72911L,0xddbd0af58c4ee5a0L,0x875aff90ecd87bc7L,
|
|
0x2fddb34c6f24f114L,0x48104281e865f172L,0x95692426886c1b9aL,
|
|
0x6f5f32089ef4231fL,0xaf587acfd0a7e82eL,0xd65719179ac395c8L,
|
|
0x7459603c1364a750L },
|
|
{ 0x1c2475bff41ae519L,0x34401fb14af8f251L,0x70ddfcd2aefb2c3dL,
|
|
0x9b2d385b51cdaf08L,0x8531c2568208bb19L,0x16c89df64c33f3f6L,
|
|
0xc23cfa9924571769L,0x2339b51e86d010baL,0x08db0e8d22638313L,
|
|
0xf769e17900fedeb7L,0x3fd96dcba3687ef1L,0xcd046b2391476475L,
|
|
0xf3ff20640c45c8ddL,0xefd167bdb8343d78L,0x493ccb6d4b77ee90L,
|
|
0x33025513b3cf7b45L } },
|
|
/* 47 */
|
|
{ { 0x36f0046935eaaca1L,0x0c384b7589119102L,0xcb375665e6d2954cL,
|
|
0xcb9199b9b1e9d6d7L,0x75852349c29c2757L,0x89cbd1bab8e738d0L,
|
|
0x9b8dbe905923a427L,0xa237793e18fe1889L,0xa4271757a742e083L,
|
|
0x8c4979d24eebd613L,0x40325054d4f2cf77L,0xa3b8a091958705deL,
|
|
0x1b191bd933d999baL,0xbafefba43b0fee1eL,0xb3bad1843facdf14L,
|
|
0x9328adb04387561cL },
|
|
{ 0xabe84e80f906b872L,0x705523a078262665L,0xd89c6a7e3398ccf7L,
|
|
0x2fab551df55b5323L,0xa0578eca0554dea8L,0xef26523d375589cdL,
|
|
0xd8fd6242864ad750L,0x93f27fc5178fe1feL,0x7b3e6f309df87422L,
|
|
0x2862e49e3750d054L,0x7d90c6b25dc038a1L,0xc1a1ae2284db682bL,
|
|
0x47f3dab79881930aL,0x30e6bd52baf3e0a4L,0x0680025bf62d25c5L,
|
|
0x0aa1f3cfadd0d5e7L } },
|
|
/* 48 */
|
|
{ { 0xa982219022a10453L,0xdd1eb91c2a03a10bL,0xafbb5d9596646f3bL,
|
|
0xa58de344f38b6fc6L,0xce47c3e5b8cfca1dL,0xfcd8e16d0f70da04L,
|
|
0xac44349bda262ed6L,0x9320d87bc56e2f8eL,0x9ce3ea0819138e58L,
|
|
0xa5862dffa2b236c0L,0x6b0f9a5c8e7efb0dL,0x4b53432b16ac78ebL,
|
|
0x6ff43105709b51afL,0x08e236f88f519628L,0x1f93f176eed403adL,
|
|
0x559337e09636545eL },
|
|
{ 0x30ddf738d8fd807aL,0xf4e0ec9dab131222L,0x14a2f4db625afbc3L,
|
|
0xd5b706049f12f895L,0xb46f3c23ac3044fdL,0x1b232d1ff540148fL,
|
|
0x61b458f539b4e554L,0xf694b24a0dd70b75L,0x0fc64299289581d9L,
|
|
0xc05d49beee5fe22dL,0x7af3447f6a18bf63L,0xe96a1dc27f1929d6L,
|
|
0x6afe6028c1551e8cL,0x27dacaf32b5d4fa2L,0x4a1631bc545c2cb4L,
|
|
0x930070f9b0c914d3L } },
|
|
/* 49 */
|
|
{ { 0xd2f32c5e69a9bc05L,0x0a5c19c6589c4b73L,0x095c9e5e94665f9cL,
|
|
0x8ab0f293bcfb4c39L,0xb90708771ddb7c31L,0x894e965866b38048L,
|
|
0xf19a90cf606bd9bdL,0xcc1d58dfb6fd2d69L,0x886dcc4e461d8a69L,
|
|
0xc455c277f9ce4831L,0x749a5996765f8a82L,0x2ffc668cc3badc8dL,
|
|
0x380183969112cdabL,0xa98795c3b243c7cbL,0x8775f310010a2224L,
|
|
0x043a2141587b5e14L },
|
|
{ 0x7bbe9dbc3a873752L,0xee1493f42f442feeL,0x981ca2c8c18c2181L,
|
|
0x00ce3090e29769e7L,0xb4626ac8de768c5fL,0x33e9ce4634d7677eL,
|
|
0xf89c2cade0fa94e6L,0x04f5cc1141f5b5bfL,0x2565f7362228c12cL,
|
|
0xf1bf706a0c05cce5L,0x5d07ffffbe487c4fL,0x3ec43c09a499f1a4L,
|
|
0x4f4e79bb98d94800L,0x8a335a16073f12f8L,0x4bb5eaf70f970d6dL,
|
|
0x18d0747bf24d0ae8L } },
|
|
/* 50 */
|
|
{ { 0x58d3c77c84601fafL,0xc9465be2af1c1f72L,0xff626798d116d806L,
|
|
0x3996c0c6d5b0d93cL,0x2fa1ad755ec6723aL,0x966a814403ba5349L,
|
|
0xdc4c94222ac34d8aL,0xddf471deed675865L,0xd8aca597953d528fL,
|
|
0xb2e463b524ebf67dL,0x258248717e25b4d3L,0x23c5adba43159daaL,
|
|
0x5458f9c683357540L,0xcf685da7f938b1a6L,0x981a4fdacefed231L,
|
|
0x711093ed08bb5e59L },
|
|
{ 0x12aa3fc6401f161aL,0xf7358560974c5e87L,0x4aa252fb17b5df82L,
|
|
0xb0b82b07a48e6299L,0x0023415729dd847dL,0xf1e54d004529c5a6L,
|
|
0xcc1c539e6d98f538L,0x36162b5328d3abcbL,0x75a379382a84f0cdL,
|
|
0xf717a81b4dee7484L,0x16cf35fb4c23bf1bL,0x7fd1c29f787e8b3eL,
|
|
0xb7da7e6859b79ab0L,0x072100a085f6c60bL,0x31840159e7ed48b5L,
|
|
0x17898bda4d9c97d4L } },
|
|
/* 51 */
|
|
{ { 0xcd8483d8ae1b8cf8L,0x323d4b42e9a28856L,0x7633584f204a4bc2L,
|
|
0x4e0b2228ca7a69faL,0x8afbda8bf757bab2L,0x85b240886cc5f9caL,
|
|
0x47fb4813d41a95c3L,0x3f1bc53cc2aabe6bL,0xf22cda3f1ad1599dL,
|
|
0x1b2ec081c31ea9b1L,0x048f304b01614ac1L,0xce31cee9c6afa7abL,
|
|
0x55af76334140dc3dL,0x84b7ab37dce8abbaL,0x50de7648c7cf3efeL,
|
|
0x73a88dcf15356ab2L },
|
|
{ 0x3f86828806e83b39L,0x477a44139f44037dL,0xf9058b0f17dbc841L,
|
|
0x2db64f4f54d17549L,0xa23cea6af2307ffeL,0x393efd554f126261L,
|
|
0x2f4e658a10f37f26L,0xa4437ce3f4ee1e35L,0x64ef42a7a93cde8bL,
|
|
0x1debc9f4939aa901L,0x44223d6a3d7b5cd4L,0x789a6a11f88a3accL,
|
|
0x56fb9df82c608a2dL,0xe79db8e3bbf56c06L,0x73c56af2668fa300L,
|
|
0x52f32b17ae396a1eL } },
|
|
/* 52 */
|
|
{ { 0x56f524c1e714f71aL,0xc1be12629add8519L,0xad9189d865cadbe3L,
|
|
0xd88bf5c85a0fb649L,0x9efa6a9221d192d9L,0xe3fe83896f724b6fL,
|
|
0xec3fae24b250119cL,0x4b6af9f62ae0d3c0L,0x8fceba0bd619624dL,
|
|
0x7dc3092b2fdb6e3aL,0xc91da3763263cd29L,0x30c0761ef95c43bdL,
|
|
0x89136400cdeb44d9L,0xfd7dce8443c0d31dL,0x78fec3b19871899fL,
|
|
0x79e14d28efdf58c1L },
|
|
{ 0xe38222359bb40c55L,0x0a27202d0ed07a42L,0x48e6c1a94838c1f4L,
|
|
0x2b5f24a7d864a78eL,0x7e7f140a0c6c55c9L,0xe62c104ace12d508L,
|
|
0x9b0a1a7ec11b1e10L,0xfd8a275fafbb3dd5L,0xdff354fe9a3b6b30L,
|
|
0x5a105d9e46602a01L,0x3d371b4d93bb65f7L,0xda5cbf0b0f82fdebL,
|
|
0x4601229bde468545L,0x505e10b9c73d517eL,0x77cfa541672ff492L,
|
|
0x0d8ec28a99566ce2L } },
|
|
/* 53 */
|
|
{ { 0x014cf73ecbeee995L,0xb2eb88bcd491e80cL,0x615a6cadd9aba5d4L,
|
|
0x2f7d46339304c84dL,0xba0501d28ab03c9aL,0xc8f723de91babb94L,
|
|
0xc885f97750405772L,0xb5e1d2b3c7fcb094L,0x61ee7995df96c71aL,
|
|
0xb8c8daab3464499eL,0xdb425ddd5f607932L,0x70251ca1b1243587L,
|
|
0x26d7d3be9fc74340L,0x8c179310c902ac89L,0x72522c154559a74fL,
|
|
0x86001e27c3734afcL },
|
|
{ 0x13b00ba5e7693947L,0x6478641e012c062bL,0xe1a438e0e85490a8L,
|
|
0x5173dbbfd9574d5eL,0x9532eb8c9bd3ba61L,0x1f41bcb85f3ea075L,
|
|
0xac1cc2478cbb92b9L,0x0f34648e1ef901b4L,0xdd929d1ed2b3b2eeL,
|
|
0x470f1eabc3d75bfcL,0x5cdbc6f7139cf4d2L,0xcd86454df0424953L,
|
|
0x1e07981247fcb383L,0xb9f209b417df930cL,0x4225fc31114ebc00L,
|
|
0x020591cb347946c1L } },
|
|
/* 54 */
|
|
{ { 0xe3003721275e0af4L,0x721141efe78a4a4bL,0x666cfcf6d1757485L,
|
|
0x5fa1d737168e659eL,0x263e3e540e2842eeL,0xadecc3d4948bd5f6L,
|
|
0x019de03d246b104aL,0xf8a9e903f343d818L,0xcb57ba4a5b0c0d31L,
|
|
0x8246c50651e2765fL,0x80c5751f6519bf67L,0x5f05c200f2119a01L,
|
|
0x7e6487b87821d4f4L,0x262f94aa261c3a06L,0x56cfe48972146052L,
|
|
0x5119985fa1df05efL },
|
|
{ 0x5819497db18586c0L,0x004415d6c6eeaa62L,0x7c6a46b697cda28bL,
|
|
0x9a149b287c194594L,0xb56369fa4ed3a506L,0x7092aa6643c94cb4L,
|
|
0x55bce73aa9e9eee2L,0x34bb287077893509L,0x8af95fb006eb5326L,
|
|
0x87cd03239638f485L,0x293762685ba75bf8L,0xf32d6f3d9d42d581L,
|
|
0xa4cad57465c6d64dL,0x985f50fbb2cded41L,0xcf34ce0e9006a067L,
|
|
0x59eaf26558a57f9aL } },
|
|
/* 55 */
|
|
{ { 0x7b407efb6ec3876fL,0x780c6123f0f48648L,0x2abb56ffbf893039L,
|
|
0x9592eaa045a91ab0L,0xce5b84d778811b82L,0x86a71a341f9f3fc9L,
|
|
0xc17fdd86f0e7e13bL,0x88ed8297655a0880L,0x75d6dc7481d5e666L,
|
|
0xeffc9df61d171797L,0x36ad4c8de3f79e1fL,0xdb15317d2046192eL,
|
|
0x78c9fa7a274fda62L,0x04ec924f82dd9914L,0x059d1e383a64971cL,
|
|
0x3b4450ea2620bbfbL },
|
|
{ 0x3db7a955c776dcdbL,0x35c4a57c81c8ba47L,0xae285003505760fbL,
|
|
0xe3e80691b3aec353L,0x380335be47117be5L,0xe1c47e3a056ccf61L,
|
|
0x253cfdeb33977916L,0x3decdfbaf5cb7ee1L,0xf3c9794f7cf4b704L,
|
|
0x2401680c9ff81462L,0x4e440e11be3daa9fL,0xc5d0437769f91d8aL,
|
|
0x4106c7a8cb5e9c5dL,0x191909a133b7d24dL,0xe893c8383764b4a2L,
|
|
0x4a7fe30cc429b614L } },
|
|
/* 56 */
|
|
{ { 0xe78f3a702455c7c5L,0x5b7636e870157754L,0xf32c45247623262cL,
|
|
0x2c98b11e1bc780c7L,0xd48eaeac915ed877L,0xbb04d3c0199265f4L,
|
|
0x6b52b19bcfa5200fL,0xc46a098193ea3fe8L,0xd82c733dba758059L,
|
|
0xd324bbd61896aaccL,0xac09a2fcce8ecd51L,0x529918fd02fc44b3L,
|
|
0xf0c45e4aaaa1784bL,0x35626340fe22085cL,0x53cbb676c50c7d61L,
|
|
0x83fa1ea365126b23L },
|
|
{ 0x60ac86da10ccc646L,0x2ce0637f7b0451e9L,0xbbbcf6308a088610L,
|
|
0x23c1901920349982L,0x707fc39cfc0bcda0L,0x7f4d1f151bd4fd7dL,
|
|
0xd6a64e7444713bbbL,0x57bdc676c5ac9e60L,0x456c530337b61169L,
|
|
0xd3451396dcf40a1dL,0xf3edec254997d2c7L,0x534ae9a4c2c4a739L,
|
|
0x1401397e6a6ad2e2L,0x20769d4d23e95f81L,0xcee007c6de98fabfL,
|
|
0x61409779931c51e0L } },
|
|
/* 57 */
|
|
{ { 0x3ddb32db15156623L,0x68137fbcab7a67c2L,0x26011f506f19e3c2L,
|
|
0x34218b0289924c61L,0x492a0b0fc6804c1cL,0xd65be706afaae6a7L,
|
|
0x3b13d23e0d01be61L,0x44545b47f87f4c69L,0xd42236e204dc1aa3L,
|
|
0x6135261d3c5161ecL,0x1eb46a63bd88bc07L,0x78c6d8361599d720L,
|
|
0xf6955fe169baf0f3L,0x467eebd617072820L,0x2f1b8a2a3e3a340aL,
|
|
0x636dac762d0b5f88L },
|
|
{ 0x94280db9b4c80af3L,0x9a189cd14e3892abL,0x26e702e0d1477ddcL,
|
|
0xe91aee3868f9f14fL,0x2864f63a80baa0b2L,0xacd81f738b714a29L,
|
|
0x30e1b870c5fe7cb6L,0x883ea1c3b10837fdL,0x2da279536b20489fL,
|
|
0x3aeb2a6858a2da5fL,0xe2330bf203a8fa14L,0xb5c488b5dc70b1c4L,
|
|
0x0a78c4d9299678f4L,0x233bd09825df675cL,0x37b5c0767b67d368L,
|
|
0x2f6dbdfe4d0bef3fL } },
|
|
/* 58 */
|
|
{ { 0x2f8472fd2e4da7c7L,0x708cfc91ae677932L,0x364af08a3dc268e2L,
|
|
0x0f10dfe0799a2424L,0xef912d5871d58bffL,0x6bf35dfc988962e6L,
|
|
0x28b96fa95f47ea0aL,0x734a79eaaad308c1L,0x957303379f437bbaL,
|
|
0x002cbd8e6cf54f75L,0x47606dcfe7632eecL,0x404b5ecb53193104L,
|
|
0x0ae0897c0acf729dL,0x89628b863bddf1deL,0xeced154ef87d7448L,
|
|
0x5cb6e197458d5d4eL },
|
|
{ 0x98cef197008c75edL,0x7cf49d3ef6eeaaf8L,0x1d6f9e021875e96dL,
|
|
0xfcec2cfedd9b0d8aL,0x38a61cfeb9576daaL,0x10003f3936a7dbb8L,
|
|
0xb37c386823b814f4L,0x9fb66dcbb80e3153L,0x9e7e2eba059847a8L,
|
|
0xa4ec63fd35a72770L,0x311f3d91fc9e0ed0L,0x3c1dc094d515baa4L,
|
|
0x75a06ebca08cd4e3L,0xab6172382ed5eeaaL,0x2e82bbb0e1f52c1fL,
|
|
0x2149d6305175d6e5L } },
|
|
/* 59 */
|
|
{ { 0xee1a8e6f5f9311f6L,0xc97e3c9fbabc1f85L,0x4fa7c52eb494209aL,
|
|
0x04c2f51c19774fe1L,0x5cefd1228555844fL,0xb53862a3b5873ab3L,
|
|
0x768efdd6cbed19fcL,0xcdc12479ee58469aL,0x11237e313d80c09cL,
|
|
0xdd74a290c044c28cL,0x9ee6517abd47e287L,0xc2421228ad0ffeefL,
|
|
0x4273088f818d281fL,0xebc744bc43ec0de1L,0x5b26eccfb415bd73L,
|
|
0x14e2f350cb07c26cL },
|
|
{ 0x548d2a104216946bL,0x6e801f077a4bd92dL,0x5996d0a343695160L,
|
|
0x0f1b5c2f63a197c9L,0x79da3c4f061f77c9L,0x1c1cd63493ff7b22L,
|
|
0x5e61b650a234123fL,0x826b34c5f284033cL,0x718b90e8c2f34214L,
|
|
0xa5f35620ae806ec5L,0xa2fae345e324a9b4L,0x8c0bb95e8b53cb51L,
|
|
0xc94f6ac2f9965778L,0x07ec607d6b9def32L,0x63bf1dbad0ed8f27L,
|
|
0x58537e02dcb61e4fL } },
|
|
/* 60 */
|
|
{ { 0x1f64b06464f80ba2L,0xe8e055e70559a45bL,0xc3262b34f1f4b634L,
|
|
0xef4f7d5fde8c8482L,0x9d55dea0c30c780aL,0x1740afb9cfa1e693L,
|
|
0x2cfe6a667460c34bL,0xf66959411187c1eeL,0x1382f2775f974d94L,
|
|
0x1ca0ace4004549ebL,0xf8244b3fbabded02L,0xc36f4d064e3653eaL,
|
|
0xeab9f0dcc55c5f83L,0xd93b9cefacebce90L,0x16658e7219061425L,
|
|
0x4857835f82d7970dL },
|
|
{ 0xdcd525bcd2576210L,0x9f378aa7d51b5443L,0xfe97bf171bd83994L,
|
|
0x930d0f63f38ac621L,0xaf8f2c17818408ccL,0x2692c87e260f53f6L,
|
|
0x0ee45407db0a75e4L,0x0ec47ae5ffdb1b37L,0x769129dc7aa6a44bL,
|
|
0xb6f932b22e40b75dL,0xe06764d095ef3b77L,0x28fd47f568bc63e8L,
|
|
0xd18104949c0014c0L,0x90e2d3fdd7995d8eL,0xeb39a05d6c2a85afL,
|
|
0x6c0277bda21f3128L } },
|
|
/* 61 */
|
|
{ { 0xe41b7086b509e7efL,0x8842ec7b3d7f9f91L,0xcd285f945526b88bL,
|
|
0x6e44e064051dd0abL,0x90198c10774f1cebL,0x6ecabe98123e661bL,
|
|
0x4481113632f647d9L,0x1dd82b4526c52aeeL,0xd650907f939dc9d5L,
|
|
0xbd5eeef2fcd455bfL,0x7815a4dd8d2e5d7cL,0x5ad4ec9288bc9f2aL,
|
|
0xc6f10d0b57a3b322L,0xe8d0c1e720b9cbdbL,0x5a0b071a9b774ee8L,
|
|
0x3067bc9af22fcf8fL },
|
|
{ 0xe0e589f2b7ca9326L,0x17a106fdb1224f63L,0xb2354521747a57bdL,
|
|
0x2614982d62b0882eL,0x7f3af5444391ffcfL,0x1aaa337ba84e440dL,
|
|
0x28ea37b0941bb071L,0xa957dcb42e4a7f54L,0xe7ab662c1a6ad5fbL,
|
|
0xd135e381f7c36a20L,0x42e7980c9baa0b6bL,0x4237030c94e4671fL,
|
|
0x24cc63ff8b0922e3L,0xd10d5279445a589fL,0xbb99d316a870ff6cL,
|
|
0x390c83caa996c195L } },
|
|
/* 62 */
|
|
{ { 0x50d3fa82ffc4a73fL,0x2665d6353bd53303L,0x80a06f8a264bb77dL,
|
|
0x81c04a6e22d73d84L,0x2409cff50323b8aaL,0x31dce2178c4c4d5aL,
|
|
0x374aa80e0c0f9c19L,0x0b25a38700186bb8L,0xd0b77a10aaf1487fL,
|
|
0x15f39ad5ab498de1L,0x92e32da61aa0c116L,0x228e3dbd96e25ce8L,
|
|
0xb57c88dc5e8646d1L,0x672b1164267b1c68L,0x5d0d807f600bdec5L,
|
|
0x3ea4007d223e573aL },
|
|
{ 0xd76debd0a595d0a3L,0xa6bd76cbaff0b3b4L,0xbf2c154f9b1bdb97L,
|
|
0x62b19ab44c714c71L,0xc9bf33b9221af663L,0x23d87c498c941ef6L,
|
|
0x255804c3d79f0f6dL,0x6f1a10052a7acbc1L,0x5dab79d9550528afL,
|
|
0xfd77a6f0c8d16213L,0x40508b6dde5e1029L,0xd95ac0f2f95da12bL,
|
|
0x8860af71758a8ba1L,0x0b194c837160c8fbL,0xa40e6c80ce004d34L,
|
|
0x09f82a176b14aaa0L } },
|
|
/* 63 */
|
|
{ { 0x60abe588c21366dcL,0x729c0a4faf75daf9L,0x70501fd9acb93ed4L,
|
|
0xb97e744e87a16d70L,0xa42e0a7a98e7361bL,0x1acdaff228b54cf3L,
|
|
0xf087ccbbb7bd9078L,0xda6f3983663250e7L,0x66d693eebaf07c09L,
|
|
0x79baf4c38cbaf157L,0x5a984e07dfca99d0L,0xab4d3247f26d8dabL,
|
|
0x4d0be7017eba36f9L,0x37bb9e650e8dd216L,0x72aa4e24531c4f03L,
|
|
0x77d1e984b753d85aL },
|
|
{ 0xd9373239d8e62367L,0x3361848bb9820cf1L,0x00c7e3445a9c97c4L,
|
|
0x9a0ec9ae14f960fcL,0xcf41f0cf740474b5L,0xa5eede8fece065d5L,
|
|
0xb1de5a4e9e808610L,0x17c44ae4ae0cf75dL,0x2fa563236b148d0bL,
|
|
0x64fa740fd29ff2dcL,0xc605eb8a88cb212eL,0xf2c771ad6a863016L,
|
|
0x6d6112e7607b4c17L,0xfe90ec0740d49785L,0x599be18be256e0e5L,
|
|
0x4e6eabecca54adb0L } },
|
|
/* 64 */
|
|
{ { 0x950323d3fb99cfe6L,0x7b09bc26c9334178L,0x64111e417cbdfb6fL,
|
|
0x9114174489a75760L,0x4c633df910919cb0L,0x715fc7c7396bfd2fL,
|
|
0x8ca195128cab62dbL,0x306724734db81aacL,0xe67a246bb4c4c54aL,
|
|
0xd77ea0fabf229646L,0x5bed15f1fa5b5d70L,0xa5686da5c2f192f3L,
|
|
0xdecac72a7f6690adL,0x0c4af2a2caa50b7dL,0xf44631c16049ad2fL,
|
|
0x325d279604ecf056L },
|
|
{ 0xee11fb554848c144L,0x4e062925b6a7af32L,0x125b68e1369e0f9aL,
|
|
0xad9bdae6ca53b21eL,0xf50d605c2e98ea1bL,0xbdb9e1539f2fa395L,
|
|
0x4570e32de91532f5L,0x810698ae46a250d7L,0x7fd9546cad9d9145L,
|
|
0xabf6772111e97a5eL,0xca29f7d5249f82e9L,0xa9c539a99851df63L,
|
|
0xfd84d54b71d0e3e5L,0xd1e0459c041d2b56L,0xceb3eb6efd80096aL,
|
|
0x19d48546e32a79d3L } },
|
|
/* 65 */
|
|
{ { 0xfe19ee8fb540f5e5L,0x86d2a52f04e68d17L,0xd2320db0adbdc871L,
|
|
0xa83ad5a8d03a7fc8L,0x54bf83c708bcb916L,0x092133ea2e51e840L,
|
|
0xbce38424cb52dddfL,0xd5c7be4031063583L,0xc1ebb9df458e3176L,
|
|
0xafb19639bc4dabbfL,0x36350fe4c05725a8L,0xac4a063484e1cd24L,
|
|
0xadf73154c145b8deL,0x0aa6dd9eb3483237L,0xa3345c3dcbff2720L,
|
|
0x1b3ace6cb4e453b0L },
|
|
{ 0x0343e5e990a8bdc5L,0xa203bf9d6306a089L,0x98489a358e48520eL,
|
|
0xbd17debede7d1d06L,0x8fafa6d75f795d3fL,0xa4ceb630387b0a3fL,
|
|
0xe0166b32ffddeafaL,0xa2fe20547e764e02L,0x55ab9824e871f304L,
|
|
0xa2bd36bb952ec45eL,0x7b4c1484a90d20caL,0x5319f38775bcfb53L,
|
|
0x34238a4a6982c4e5L,0xa2bb61c7a102921dL,0x1e061b64db3ab17eL,
|
|
0x538ec33e192f0a14L } },
|
|
/* 66 */
|
|
{ { 0x193496fea19b56cfL,0x663d77f47bb99acdL,0x8f04afa857d0a881L,
|
|
0xcced3da2082835fdL,0x7e21faed5d82cec7L,0x6e175b99f8009c85L,
|
|
0xd9c6e31b2d05a307L,0x96948d4a81487d82L,0x86ebd3f2d46f6655L,
|
|
0x86851aa8773ccc49L,0x3e220f228b1640a6L,0x9f06e3a841a20b75L,
|
|
0x2cfffe5e90ac0a6fL,0xf5a9b1da8ebeb3fbL,0x2587d9976e08e2c9L,
|
|
0x6fd6029803e9f401L },
|
|
{ 0x54709f8d8eb7516aL,0x83058a74bdc598abL,0xd234dd9887e801ceL,
|
|
0xfd0f9d90d17b8a96L,0xaa1e549f6e90f6abL,0x2496ff805a7ed55bL,
|
|
0x0d9f657a6c254c19L,0x3cdea49cb8962575L,0xb685a3f02dff27deL,
|
|
0x3c50e7fddb8bc04bL,0x904ff0ff987236b0L,0x494298fdbb0d5055L,
|
|
0x34b3386de14be8d0L,0x7ad34e9c7c3d30d6L,0x1f2b32bde159fdd9L,
|
|
0x84cfa23cc761e5c0L } },
|
|
/* 67 */
|
|
{ { 0x13bc11eb8b99b964L,0x8e280c0a58e2fc47L,0x870fbc49d4c9a54bL,
|
|
0x37a334a2bf6e20faL,0xee583d0dd7c88cfaL,0x05e029a8ef4af1daL,
|
|
0x6d55e2340c2ef8a6L,0x61b6fdfe209e9b62L,0x3b1dad26bb8e080fL,
|
|
0x5adbc1629392fc1aL,0x02ac0fe60aae3f4eL,0x8d99801ac2bf4d5bL,
|
|
0x2333f93fc282fed2L,0x16dcb10cb52db33fL,0x09f90f84c55752e7L,
|
|
0x287d4c51c84a0d8eL },
|
|
{ 0x5fa582010e9867daL,0x614589b31a874cdaL,0x005e27c5fbdee22eL,
|
|
0xe357fef5e612bda8L,0x4e0dbedf2d3635f9L,0x62be70e46f125a86L,
|
|
0xa09b98840d94a2e5L,0x7eb99a1528b5e5d1L,0x21b9416e751028b5L,
|
|
0x1b137fd7e06d2cc4L,0x6fa1f517fea09845L,0x3ba1e966ffcecbd7L,
|
|
0xd4c89a4a832f453eL,0x07b1e2afeca68fa1L,0xd0fb44534bd395a3L,
|
|
0x0132a3dcd8ef9e13L } },
|
|
/* 68 */
|
|
{ { 0xe53c7785576374c2L,0xe60526d184727040L,0x8a066dc8228ca044L,
|
|
0x1fe1c1b2f1ce1313L,0x2aeec832cdeb0c5dL,0xa75966999cbf826fL,
|
|
0xcd188e81de77a589L,0xe5ce0fe0118d1254L,0xa142a9840790b86aL,
|
|
0xe28f043f39ac28ceL,0x4eef829087de5804L,0x83c31b32f639a8c5L,
|
|
0xd70454a75887794fL,0xca635d5018b1b391L,0xcefea07631d9c795L,
|
|
0x13cbee76b6f8aa25L },
|
|
{ 0x79cabe0f8d3f34f3L,0xbda9c31ca3617fe3L,0xb26dee23dd9426a1L,
|
|
0xe9dd9627f29c9104L,0x033eb169e2c6cd3bL,0x8a73f492fcba2196L,
|
|
0x92e37e0bb858c83cL,0xe4f2aca623b3fbb7L,0x8101fb1e64be00a2L,
|
|
0x91a7826a948f6448L,0x414067b4907260e7L,0xf774aa50e30bb835L,
|
|
0xf922ca80c999c06eL,0x6b8635b90ba08511L,0xbf936b5c25fa04f0L,
|
|
0x4e0a1adae02e8967L } },
|
|
/* 69 */
|
|
{ { 0x00ca66708ba29c4dL,0xc08240ce22988094L,0x21c5ca6716dda752L,
|
|
0x689c0e45abbbfa34L,0x1d7545fd3ed28b72L,0x5f221198d7c56ab4L,
|
|
0x4b3d8f7438759d65L,0x93490dfb8fe50b89L,0xb641f5d7e80eba16L,
|
|
0x7b0da5eb79acb537L,0xab6b14970c1d5e5eL,0x2338e68da5da429aL,
|
|
0xe010c4372f6d2f25L,0x226f16d26530f3a7L,0xefb0f7b6cbef08bcL,
|
|
0x733e30d99f99c999L },
|
|
{ 0xecfe1582a42a38f9L,0xaec2d58e4730b500L,0x2ee2f2a7de976b2cL,
|
|
0xf0539db5a969c1bbL,0x31954168fcecdb4aL,0xf2f7348ae7a8e902L,
|
|
0x1d58d7cc3121541fL,0x5d25b75c2202ae52L,0xdea9965af40835a7L,
|
|
0x3feb6a41529b4e46L,0x5c97fb6fbd27ad9bL,0xd87554c0261f900bL,
|
|
0xb43031d904d5b19eL,0x33d5e9b8cb219b9cL,0x7a43d4923ee00bcfL,
|
|
0x56facb39b79a5c0cL } },
|
|
/* 70 */
|
|
{ { 0x019165a2a3018bfaL,0x100c6b249ffad984L,0xbbf1b1f655341a9bL,
|
|
0xe6bd1d9725dc4cc9L,0x52850ed52bfffe60L,0x24e992cc7e5509abL,
|
|
0xff6c502e4ceb59f1L,0x2f0b35731aa7d148L,0xe90c1ddde7e3aa46L,
|
|
0xbaec9f45d1142880L,0x475cfd2665be5dd5L,0x83abb14e1febce13L,
|
|
0x6aba482980942d30L,0x1e1b235d297e82c8L,0xb771cdbe50d8218dL,
|
|
0x88599266d94d6cbbL },
|
|
{ 0x08847290155ccaf2L,0x8679ebc77c5b773eL,0xa88b2dd1b2dd08edL,
|
|
0x960a180e87d475dbL,0x80fdb6b76694d02aL,0x3e8758c93f3f9e96L,
|
|
0xbda3f6fa4ad836c4L,0x9400c58132fb387dL,0x25a785422550200fL,
|
|
0x2a97c351776ecf18L,0x03ebf46e566db59aL,0x4743a28026545edaL,
|
|
0xed169d84cf74ab44L,0xbaab931d88cb3f69L,0x70ae932cd8257196L,
|
|
0x797224a6a0c09719L } },
|
|
/* 71 */
|
|
{ { 0x632923f8441f3567L,0xc11c31682e24bf1dL,0x4b97726bb7671fffL,
|
|
0x601746a77a5e1a22L,0x53dddea03addb417L,0x57867a3c7f59b846L,
|
|
0xb012a98756cd7ff7L,0x1bd5fec9f19ba9a8L,0x750379a2f8306748L,
|
|
0x7763445dab8c05d1L,0x5d7f441b7903f42aL,0xc011674da903e46dL,
|
|
0x1b1d3c4dadd126c1L,0xa2752aac61455b40L,0x4da42a68555c356eL,
|
|
0x3ff09c15d820852cL },
|
|
{ 0x4c0a1bcef9cb7784L,0xaec539bc2422f305L,0x5f40f9fd0c414aa7L,
|
|
0xd3aa316cffd42bc4L,0x42f5a4c32f358e15L,0x00bdcd9ed6e27682L,
|
|
0x069f789ff8a5eceeL,0x8078018e05e14f5dL,0x2bb3e4938b40c741L,
|
|
0x5dbc8c1d7917f72dL,0xe0eea664cc57150cL,0xa25ecc5ac3fa8920L,
|
|
0x3c21b0f51c797164L,0x8f09a2f2634ad16bL,0x8e730fc558391d9aL,
|
|
0x47ef18054fdfae4cL } },
|
|
/* 72 */
|
|
{ { 0x9965f3d13da285e4L,0xba7d4dba3a01e3f4L,0x4738413a61214ad0L,
|
|
0xd3b7d53522397549L,0xa53dbdcf5a730b92L,0x3130d92b332d165dL,
|
|
0x44a2854182f97ef4L,0xbf62221c44dce1b6L,0xbba138587e2a0ec9L,
|
|
0x33f32c8dcbfad998L,0x409e5f3fb5fed44bL,0x5c328c65c66217bbL,
|
|
0xb00db69ffcdf71a9L,0xa23c2a21b8920788L,0xf8ab28e63ae6464bL,
|
|
0x1a6b6e9cb8de0861L },
|
|
{ 0xaf6ec2b606af77aaL,0x2e60f5cda887f065L,0x87d214009f498c56L,
|
|
0xdb595b59fcbaaf4bL,0x0fb592a1271ab855L,0xa0ce10e5d4349b0cL,
|
|
0x9d6187d8887d8c9cL,0x03ee95f9154bd6dbL,0x8fe532135d06c999L,
|
|
0xf4a7bc30fb6a64d0L,0x3d22af0d66a4cb60L,0x16952cef5d37367cL,
|
|
0x6f0ea734997d8e55L,0xb447c70f731732d0L,0x00ab3034a9cb3942L,
|
|
0x79dd018028510fd0L } },
|
|
/* 73 */
|
|
{ { 0x04e0033a3ac7424eL,0xdb06b68860fda4d0L,0x236a9766bcb772fbL,
|
|
0x294a8e2bf297cda4L,0x4b0aab85db013c6eL,0x3d2aec988723a3adL,
|
|
0x0cae32cd13c84a6bL,0x21888f5e70ec169eL,0x739633bd42a88262L,
|
|
0x68ac792e7b60d9b8L,0x89f2b72210769fe1L,0x8f3fcfe6d24bed34L,
|
|
0xd35efb88a3eb24aaL,0xddecfa3f484c706bL,0x7cc119a9929ece0dL,
|
|
0x87e5ad458d405436L },
|
|
{ 0xba99aa9d7d1000a7L,0x8b94affcae823833L,0xc8229628dfb83dc5L,
|
|
0x2f59fe11845a418dL,0xa8b970f85d417054L,0x8918c26572b71581L,
|
|
0xe4ef477dc0d1dd17L,0xb50b4cf33afad7c0L,0x21baea7901870a5bL,
|
|
0xc77087f9bb3a2868L,0x7857531e124a59cdL,0xed74c26f57f43239L,
|
|
0xd5f5ae250164c94aL,0x6608b7e2f094bf74L,0xf4cdb5bafdceea32L,
|
|
0x0b712519990cc045L } },
|
|
/* 74 */
|
|
{ { 0x5a290ca188d5c64dL,0x0596d749a7492534L,0xa04b0d3d2a00e925L,
|
|
0x082cd02ccaf7b66bL,0x912b50c2ecdded83L,0x813ce9deff31646eL,
|
|
0x62ae70c7c75fff95L,0x6f6852e07e2a4615L,0x320fd7d003804fd1L,
|
|
0xb1a2a4dd8218e8d9L,0x4918a6fbafc645d7L,0xfb080fa1e8d9fdbeL,
|
|
0x33d4d08a4470b6eeL,0xd2ba20776d974ef7L,0x8ecb95a769dae5d2L,
|
|
0x7a3f423a7d69596dL },
|
|
{ 0x362d2ca69a929387L,0xabdb7581cb1c1fffL,0xd892ec9f7e51b6cbL,
|
|
0xee8d86323a4e131fL,0x4680e3f15bd87561L,0xe3a597e1d4e7e732L,
|
|
0x3cc72b7c5581fefeL,0xf3e77f8aca8cae0bL,0xfcc7d7dc5e2fd4afL,
|
|
0xdd3a455221355b79L,0x546b24f2a2c07177L,0x415b532d0689621fL,
|
|
0x2be9af513f78163eL,0x27d63b9b33d7ed21L,0xab019ef296802943L,
|
|
0x2da5fc551623faf4L } },
|
|
/* 75 */
|
|
{ { 0x62429cf3c8a5c600L,0xa7a80c223fe33e7cL,0x9ffda7400a57ddcbL,
|
|
0xd1ae156d925b0c74L,0x097a43f96b100eb0L,0x169e945cef943c81L,
|
|
0xa1f734e51128cf24L,0x04387c4a419f0133L,0xc007868b01044024L,
|
|
0xe5416abf90359cf2L,0xf9c76fee478d54e3L,0x66219da642a2173eL,
|
|
0x61e031569fe30141L,0xa0ff5ce393ef247eL,0x811792ba072b6592L,
|
|
0x855f021970c854d3L },
|
|
{ 0x61fbfb6c847314c4L,0x97906155eb45b96aL,0x7102e1466ba2afacL,
|
|
0xed51f975ab949781L,0x9d2f5b17c110c4feL,0x7ac8ce70aff57667L,
|
|
0xe7366a216eb244e7L,0xdd1bbcec551c65c7L,0xb525060ae1a859deL,
|
|
0x7a0481748ba7d2e7L,0xe1a2c541ab8ea8c4L,0x6e7824c36fdff078L,
|
|
0x79b49fc714874b04L,0x22ae337f06b1f733L,0x1c3521926f8fe6cfL,
|
|
0x292236cf525d0797L } },
|
|
/* 76 */
|
|
{ { 0xcdb8d80a7d8b29dcL,0xd17a202408ea648aL,0x7db12c5eae92be91L,
|
|
0x1f347d18fda72fbcL,0x11374b409e760c6fL,0x7361e8f1d8e38d91L,
|
|
0x7714be9d739ac1f4L,0xc1f9701cb4df5c4eL,0xd9138ed86f72cae1L,
|
|
0x1c7fe1f76ad180c4L,0xf8c185be9e2dbf9cL,0x835db2697c70c44dL,
|
|
0xf997cfeab0d15b5fL,0x5101445a61e6545eL,0x16b0688425184e5eL,
|
|
0x7cfac3597521e7aaL },
|
|
{ 0x811821673c0bc53aL,0x84b5ede37e751367L,0x3ca255fda3657a18L,
|
|
0x096abbf4ba1fdd98L,0x9ce8369fc5da77d8L,0xf27b9ae7aab342c5L,
|
|
0x06c91bd6972059f1L,0xee0dab30914ecfe9L,0xbb647fbb93f53f12L,
|
|
0x30c38a7affa57e0eL,0x517d06ef9f2ad607L,0x49728d87bb99dcc9L,
|
|
0xb0034af1446080a1L,0xcc810c3f12b9c17dL,0x7225f14f772a22a0L,
|
|
0x6ce3dc7f1ddf82bdL } },
|
|
/* 77 */
|
|
{ { 0xc07cd835a4397830L,0x4dd9290cf4733306L,0xdd35d3a829989e8cL,
|
|
0x79902559563d8152L,0xf278d911e87de61bL,0x9c7340c71024e35cL,
|
|
0x2d4444614a0d0e59L,0x63e7608ff32626a1L,0x627a37e9c4c9baa9L,
|
|
0x0c56dc5176fffd25L,0xcb6defc8cef2a1cdL,0xcbcc0d56efc559d9L,
|
|
0xe45f3fc5041cb692L,0xcd05c239e5161e09L,0x2a731ee95c3b559cL,
|
|
0x85151122a3d0a16dL },
|
|
{ 0x782d033586ff19e2L,0xc2c60daa1da28603L,0xb2e78cfe557c7eedL,
|
|
0xa8f6f9841bc4e8b0L,0xcc1f9b4b3df35c67L,0x96e136034764462aL,
|
|
0xbf910b977c7ae0b0L,0x27c7f30551435956L,0xc14db15cf631eae5L,
|
|
0xa51d61427e69b34cL,0xdec828515fc12ff2L,0xfcceae13fb887162L,
|
|
0xda332ac1de1488bdL,0xa20374e22ee3e74cL,0x597ea1a1f0ae069cL,
|
|
0x8b1159f277bdec04L } },
|
|
/* 78 */
|
|
{ { 0x4af71a442f961d30L,0xbdf968a87ac7248fL,0xd32df87cb1a906cdL,
|
|
0x00c10e2604abf925L,0xb8711759b9f04d4cL,0x00d54e60939705daL,
|
|
0xf7587433c9f80849L,0x2e9abade6a7a2375L,0x5676d47894ac17acL,
|
|
0x4ca0525bc202d99cL,0x95b8bcadabfae73dL,0x2371ed383405991bL,
|
|
0x2b69e47a458a99c3L,0x7cac0b182b78c866L,0x6ceaa79be0232c7cL,
|
|
0x0bd86433588f7459L },
|
|
{ 0xdea1a8b47e734189L,0x52c5ac88cfe5fa17L,0x444a4d4e11437664L,
|
|
0xc2522308af9e9750L,0x78b1d0c3d30c6b3bL,0x2edae5f04c6df477L,
|
|
0x53131d9a2ee88dd7L,0xc4e380eeacc93e34L,0xd499b1aca8db0e8eL,
|
|
0x77348c167f5d49d7L,0xc96632571556ccd7L,0x65ce0e8c2611d13dL,
|
|
0x2c95fe66b5a2fdccL,0x266988328658faa1L,0xda87d1f431c32c98L,
|
|
0x46650598fcd91907L } },
|
|
/* 79 */
|
|
{ { 0x4c6c13cc6b4a5efaL,0xc481989b1d07b265L,0x10b966ce8bdc69c0L,
|
|
0xf54cfaa22c2531d4L,0xcb5f1808cad0a100L,0xbeb52538ee5da449L,
|
|
0xa6240085bedd83ccL,0xe792dacfd6255c78L,0x883719062062058fL,
|
|
0x96615e83ed1658c1L,0x4b549b277d28d542L,0xeaf127db83b75df3L,
|
|
0x4f60df6d17fbb942L,0xd08631dbf6f7c930L,0x17c38f986018789fL,
|
|
0x0c43574ab9a9280cL },
|
|
{ 0x76eb324c1d20cad0L,0x90decb098c61108aL,0xa6e9d39c6f06d36dL,
|
|
0x6cd978babc0da197L,0x5948b1c0507ac5ceL,0x2bd47164c5497eb5L,
|
|
0x2a9c4c0f4d5914e3L,0x772c5046a759f03cL,0xe7d7328a69ac847eL,
|
|
0xa8d57d0c3048b330L,0xe60034e040f7baceL,0x823d9193a85f1790L,
|
|
0xa6e9b66c5c859736L,0x22ca2c7a679e1022L,0x00e7a19c09023fa4L,
|
|
0x324999f12726d5b9L } },
|
|
/* 80 */
|
|
{ { 0x667eaed67c834915L,0x9f77aa6abc5eb64dL,0x729ebcb625d62011L,
|
|
0x0aee24f2699fd9c2L,0xe1eb58742b8d4f6cL,0x7f12710c14c976d6L,
|
|
0x91390335f6d9ea65L,0x668b704906b50064L,0x65969a0e0876ee4fL,
|
|
0xf901bf3f2f9d9360L,0xfb1a8651b499e3ceL,0x80b953fbf2dbcaaaL,
|
|
0x312cc566973b06b6L,0x3534d9c33af36c64L,0xe4463a5210ffd815L,
|
|
0x57ea2b4bf18c2b91L },
|
|
{ 0x00f5e1628aa0f2f2L,0x8c7e75c50e46bcaaL,0x97ab479aa4a2c42dL,
|
|
0xb4f308ea14baa202L,0xa901bd146943cc2eL,0xbb125feeeed58804L,
|
|
0x6502c8f99d180f7cL,0xe53539191580c61cL,0x7e27806927101ee3L,
|
|
0x7a0a40a1faa72717L,0x32edce024c75b153L,0xda23660b538f1c22L,
|
|
0x4d511e98be307d2eL,0x24276e409baee0b4L,0xa78c39277ff1f307L,
|
|
0x60480b46ea7935c9L } },
|
|
/* 81 */
|
|
{ { 0x31087d663872ece3L,0x5f29be7d955b70f8L,0xb50b4fc79cf95bb8L,
|
|
0xbae3b58ddbffa621L,0x0e61d280e022ba5dL,0x78ae51174181449cL,
|
|
0x0b132840cf555485L,0x800ed1b6b8ce0b0eL,0x35dffdd578d5de3dL,
|
|
0xf7e4237469a56b47L,0xd5e323698d910ae7L,0xb6ff52a06313c7c7L,
|
|
0x5a2fe20da92de9e5L,0x41b347d3d12110bbL,0xc5905edb40c16f23L,
|
|
0x0774a0d39a8f88ccL },
|
|
{ 0x3ae181abe3b6c106L,0x4ebe163f8de150b7L,0xcf75b82f6f354836L,
|
|
0xaa0d20633ac7ac16L,0x5c680668291722afL,0x73941e6111545553L,
|
|
0x17127e38bf5de3f7L,0x32cfdf031afb41daL,0xc6893c9187bc8663L,
|
|
0x75046744a62c9c99L,0x96866e2d962c1947L,0x489ec8df378cdf4cL,
|
|
0x3a60709b3407fa32L,0xd37d2159551290d1L,0x9623d303bab92273L,
|
|
0x081519542432014bL } },
|
|
/* 82 */
|
|
{ { 0xf9236d89fb7b2108L,0x3ecc83ccad75f9aaL,0xf7c72b15b4e1da11L,
|
|
0x552aeaef0315c362L,0x11e140edf272fe3fL,0x99d79bf687843ee8L,
|
|
0xce6b54fd1d9bb25bL,0xb20b0e215b1bad74L,0x54a0214f5b84c90dL,
|
|
0x459bbf52fca6cec9L,0xe363c48d9e4df76fL,0x3045f84ed64cf17eL,
|
|
0x8402a167f62ada48L,0x2c9e1bf36a74ca01L,0xe8cf9d41f691c42dL,
|
|
0x5abf2178c2c4b874L },
|
|
{ 0x4777966bf3b3bccdL,0x0047e0f0be3e0caaL,0xcb8383b38c7d5043L,
|
|
0xe77e3baf946fd5fcL,0x79baa785e9ec0e87L,0xd83c557cc8a18d25L,
|
|
0x9b96e5af25befcfeL,0x4f05d15e98c71b61L,0x081f991a77e62da1L,
|
|
0x1c6ec781cbaa3821L,0x7522f65de54d9bfbL,0xf5d0557344ed1430L,
|
|
0x3035b31f95cafddaL,0x47e67f436378f5bfL,0x029f7cad5270b9d9L,
|
|
0x15ad15874d916a48L } },
|
|
/* 83 */
|
|
{ { 0x00de2eceaa588ae4L,0x552ebc58a371a232L,0xd00ea93471230444L,
|
|
0xafbfa67de4b1832dL,0x29216341b689e843L,0x1f96bbbd61f4e2e8L,
|
|
0x9542068404c29dc5L,0xc7fe382742317fd1L,0xe0a0aec663483162L,
|
|
0xfc2b94d10700184fL,0x07219973fe1fbd85L,0x648b6ab1fb074352L,
|
|
0x23bbdaadc46e5392L,0x0db8dd1f00fa56ffL,0x104815eb866725f6L,
|
|
0x3f9c4cca52e81963L },
|
|
{ 0xff36b29732ce637eL,0x81a15f2df5d25cddL,0x1a1d052d8b02ad97L,
|
|
0x2e5f3bbccfbab3e9L,0x60d2cbd7614eeb75L,0xd4491843cd5a793aL,
|
|
0x2242cf75cdba2144L,0xa20705e788b99766L,0x64e12cc0ec77e132L,
|
|
0xb1c14df6b61a9b05L,0x8fd97f0474825b5aL,0x956048213da31223L,
|
|
0xde4867274d30c70dL,0xbcab8f151c12ee69L,0x5dc638b4668d893dL,
|
|
0x6479dad6223f574bL } },
|
|
/* 84 */
|
|
{ { 0x569044f3b05f2b26L,0xb35a294a80b9f76cL,0x8839fe284290f6aeL,
|
|
0x761cfb23026a5877L,0x768926b62e5ff9c3L,0xbae6cd200b11c576L,
|
|
0xdc85775672a03efeL,0x0cae074ae1bad63aL,0x3fe491a1d709d99cL,
|
|
0x76c5ded66501d9c1L,0x1da6eca1c32aeff7L,0x50849d55c57683e8L,
|
|
0x9e392e9cdf98d847L,0xfad7982f64d9a564L,0xf7c3bdb7a37b98b2L,
|
|
0x1fe09f94f0860497L },
|
|
{ 0x49a7eaae7648cc63L,0x13ea251167cfa714L,0xfc8b923c653f4559L,
|
|
0xd957619b81a16e86L,0x0c7e804b3c864674L,0xfc88134a1616599aL,
|
|
0x366ea9690a652328L,0x415329604bc9029eL,0xef9e1994ae2aad2bL,
|
|
0x9e2a8c527f10bef5L,0x73dcb586c67bf860L,0xf61a43fa844cc25dL,
|
|
0xd74e7eea74eb3653L,0xf3356706dd240f02L,0xeec7694cfd83bcb4L,
|
|
0x4de95786db62526aL } },
|
|
/* 85 */
|
|
{ { 0x4867d3153deac2f7L,0xa084778ab61d9a8eL,0xf3b76f960ab7b2d5L,
|
|
0x00b30056cfdf4f79L,0xd0701e1531ab8f4bL,0x07f948d59c779d01L,
|
|
0x7c994ebc82675371L,0x1104d4ee48bad4c0L,0x798ce0b5bfc9d058L,
|
|
0xc7ca898d309fa80bL,0x0244f225acb33eafL,0xd51e8dfc5b2f3175L,
|
|
0x3e49ba6ba4d7be34L,0x1760f4c7bda02b43L,0x37e36a7e4435275aL,
|
|
0x1c94418be636980cL },
|
|
{ 0x43a2131309dc1414L,0x060765fc43c93537L,0x6ff3207adf5f79ceL,
|
|
0x6f18b1fa85d4cfcaL,0xf5c4272e63e995abL,0x121a09e4a82b3002L,
|
|
0x82b65d1b97147f16L,0x4993c20c20a7fe26L,0x99c9cb98e6716726L,
|
|
0x5a02d673feb440a0L,0x3f3fa9e1251b4bc5L,0x75dbc474a05338eaL,
|
|
0x3cb4044b7b09f6cbL,0x6767da1880434609L,0x97851422098ceac2L,
|
|
0x611bfbb2b55235baL } },
|
|
/* 86 */
|
|
{ { 0xbdbaa55ef00ad2a1L,0x29efa85e14a290d7L,0x3b4a4768e92b1694L,
|
|
0x67111bcd11ec8130L,0x0e42570288bd27b2L,0xf28cf2a3d9a03c06L,
|
|
0xbb7c8d2df318884aL,0xe2ea1462e3aaeb20L,0x3353580443b85d77L,
|
|
0x81ee4482554ee9bdL,0xeb2eee9ee6aa198fL,0x7a5aa804c26c5944L,
|
|
0xa0ef2da582ab167cL,0x5a2ab47602fe21a5L,0x169cb3b83370298eL,
|
|
0x86e6c5440eb3aa8dL },
|
|
{ 0xede033210b793d9bL,0xf79fade11ddb5eceL,0xf73fda9268930b64L,
|
|
0x06aad97dfe4fd1b2L,0x073a5b1d92a4dc88L,0x8af8cbd8bc976d75L,
|
|
0x60b4abb163ce26c0L,0x9c8300a9dcb1fb06L,0x335a594cda95b3d3L,
|
|
0x1f97d7d4b37eac87L,0xa3d2eba220eefaabL,0x3258c906f3e828c8L,
|
|
0xc832616f85ab7781L,0x725971928c28b617L,0xcd7196bc3233b82dL,
|
|
0x83867eb919fa126dL } },
|
|
/* 87 */
|
|
{ { 0x774fe73e22474edbL,0x2a7663941a84e1aeL,0x270329ad9c6dd6e3L,
|
|
0x00c4a41514f8bf5dL,0x3ce2ea37d2267b90L,0x1275301511d24faeL,
|
|
0x7c14d854263a1b78L,0x20c8401b1ae0b206L,0xf32a011b081f49fcL,
|
|
0x1e8123fb959c6df8L,0xa328dc7c800e1d06L,0x5876a37824259a9aL,
|
|
0x23ada8b5b7ef6c37L,0x023f6b6ea93d4c9fL,0x89f5414dffb6389fL,
|
|
0x4b26bba2e628b39eL },
|
|
{ 0xd30b1cb45d318454L,0x123b749fd7436cb6L,0x3110c726568a7461L,
|
|
0xc85de1231c84fd1eL,0xa5f8d6e608403d55L,0x395b6e139b1fabf8L,
|
|
0xfe6d68c33cfedce0L,0x1d90381f94b91110L,0xf0a8ea812dcc6eb7L,
|
|
0x59e804137e90ca2bL,0xbeb5fc07c8a25c5aL,0x009c253a5d84663cL,
|
|
0x00b15073910b6a7cL,0x8607da4c4108f8d5L,0x02c3d9c3cb901e65L,
|
|
0x4d697bc52c9615c6L } },
|
|
/* 88 */
|
|
{ { 0xe0db1ef0efa8fb40L,0x29021c5b5ba3989cL,0xa8d6fb15809d19dfL,
|
|
0x6b787b734c1219e1L,0x6417e16814ef05e2L,0x449342db8f9796e2L,
|
|
0x2f878a5ebf84421bL,0xe71916d7e94a4536L,0x9818bba3ae119693L,
|
|
0xec674be95768804eL,0x0a26074cf8424f8aL,0xdbc93b9d466ce6abL,
|
|
0xb3f15a98c920078bL,0x9d10fd0d3870f1a3L,0xa61241d9e4e785a7L,
|
|
0x76ca87a1e6c8cd80L },
|
|
{ 0x4357fb56e02e48b7L,0xfbd14b13cc09e9c6L,0xdb5f243524069cf0L,
|
|
0xf878165c2c3b01a9L,0xe549e7c4e6956dadL,0xf2fe9538bbd60b68L,
|
|
0x952f856b059dc653L,0xd3f60225b377fe9bL,0x6a0c7328bfe908c4L,
|
|
0xce6aa2d3bc8f5f2dL,0xf721344324425050L,0x17e1266a3d3b3ce5L,
|
|
0x75b5e43fc1677512L,0x1592706237fb894aL,0x152607532be3e375L,
|
|
0x27e7f2c66da3b7beL } },
|
|
/* 89 */
|
|
{ { 0x638f65ade6a15883L,0xd4a7e68c66afdb33L,0x6207b6abd3f12de5L,
|
|
0x1c6ff95037b87810L,0xc0d44cb264acf6d3L,0x163ac601f2be78c2L,
|
|
0x1c63cc5a1636980eL,0x3e92cfe895c9349bL,0x7738e0d841ec7220L,
|
|
0x6169d7642d5fa961L,0x2aa776c1c3e028e9L,0x93dc5646b16d5409L,
|
|
0xa0b27fb5706df4d9L,0x9e991170ce9c6b97L,0xea8e42be53c85f40L,
|
|
0x02e9643783246528L },
|
|
{ 0x91540addae78ea1fL,0x51a1b74d7b670e96L,0xf9936441f7006826L,
|
|
0x8f97d6ea7d7520c7L,0x0faa6a0269ce12e1L,0x2590aca879208342L,
|
|
0x7a48386375614436L,0x07c6149ef381408fL,0x733bf584d7853406L,
|
|
0x8761b0109abbb6f7L,0xe4eb249ff528a09aL,0x08781ed82e00ae3cL,
|
|
0x864c1b252178effaL,0xcc1e62a29d513a7eL,0xedb8b94e1919062fL,
|
|
0x739f53da4f16527dL } },
|
|
/* 90 */
|
|
{ { 0x7a5f4a88924adc5fL,0x95646c16a818f56dL,0x0ec491297795f954L,
|
|
0x2b48753dd19c5400L,0x16fa236b205912b4L,0x6b3d65f3e87a4946L,
|
|
0xa7174a01045fd066L,0xb635031312a5e140L,0xa79c4b44a96b8623L,
|
|
0x7a339d659ab003d5L,0xc72f30c63826f31aL,0xb4e7390c6f7090cdL,
|
|
0x59ac6c36906ebe24L,0x39a7f06dbba4505aL,0x839991e1c58c413aL,
|
|
0x020c23ffa20e0e84L },
|
|
{ 0x120e4adaafc74661L,0x37bbcf63277fc065L,0x41049cf6b6dce799L,
|
|
0x5b8d6b537b161ba1L,0x22218431a9610fb2L,0xde9ec9d1dfdde769L,
|
|
0xd32bfa4d42d80630L,0x3885702a6244df4bL,0xcdedd1ed45592dfbL,
|
|
0x0e1df45bfb4e01b8L,0x8f4bded286e215b0L,0x809354876a937e6aL,
|
|
0x415278ba8130f723L,0xc6dc469238a821f8L,0x2207b119fd8b4f8aL,
|
|
0x76e7bf53f9269cefL } },
|
|
/* 91 */
|
|
{ { 0x5f12842827ebd187L,0x8d3320abb65aadbbL,0xb042765a72258695L,
|
|
0xda3f33f98f0986abL,0x411807a7aebff503L,0x25c776ca825f71a5L,
|
|
0xc0de7bedff7df24bL,0xda8b0f42165f1fb4L,0x5f3ff737731f3ae3L,
|
|
0x4cd1d7e7193e0a52L,0x8df84aa3b6b3ba46L,0xba84b897aa1f3782L,
|
|
0x6e7960cce7733ac7L,0x4d46d6ab50981a21L,0x1ec12c257cbb80edL,
|
|
0x79e7ad272b96ef09L },
|
|
{ 0x3cd970dc8f30caaeL,0x85cabcf10a6ebef4L,0x63c1863ec714616dL,
|
|
0x1c50db0b519e3a98L,0xf39b896364cb13d6L,0xdf67d81f22547b69L,
|
|
0x7157abb9d67db0ccL,0xccca25ba889491b7L,0xf689207c7a27e0dcL,
|
|
0x34ae8fbe0fd43281L,0xa5d91f735720ec09L,0xb2f61909cdfd7bedL,
|
|
0x1ec102324a039e32L,0xd3c3d65edb0d8fdcL,0x32c916c84fe5005dL,
|
|
0x7f8c37ac4c0bea94L } },
|
|
/* 92 */
|
|
{ { 0x33ec1e5443ac05e5L,0xda4a4da4cd8d3825L,0x86d88c0b88bf9e2bL,
|
|
0x34d71dd0b53811dcL,0x655040d2a3c3aba4L,0x2bc40949b61611beL,
|
|
0x1c2d426e279a4fa0L,0x535a5aa23b065ac3L,0xdaa8a32fc52ea890L,
|
|
0x5a5deca79fddad22L,0x911f05fd2ab3b26fL,0x5dace7dbf37cd81eL,
|
|
0x0e0e44e790d16b8cL,0x15e68aede4f5894eL,0xafe04999fc92a74fL,
|
|
0x1d7703aa970e7c2fL },
|
|
{ 0xa8a4c81d3f0062a9L,0xe31eb2b8d96a20baL,0x66dd98df864bd101L,
|
|
0xba05f5924413b614L,0x51a67a0de9a555f8L,0xacc2f0972e4b52d1L,
|
|
0xab5daaec7184ab23L,0xce08b43e7c7f691bL,0x520e530b76c427f4L,
|
|
0x7d352069e423ebdcL,0x6b5e39e834df14ceL,0x3dcbf295446305acL,
|
|
0x682cb2e1fe34cdc1L,0xd4ac45d1111f5afbL,0xc5ef63cd47f296f9L,
|
|
0x0a2c40ec93c20871L } },
|
|
/* 93 */
|
|
{ { 0x09bc384faf5747dbL,0x3bad6086c06ab86bL,0xa406882e9e7c1547L,
|
|
0x2d5326d155977abfL,0x063a9a05da81deb0L,0x9a86e4a7524b6111L,
|
|
0x1402f87a4ab2eb90L,0x7d0721d4d5c600baL,0x1a2fd9a9f289fdbfL,
|
|
0xf5dce66decde6f07L,0x62171277dab9fa73L,0x6d2dc49f6c474babL,
|
|
0xdc017e1f76eed033L,0xb97175c04da825d3L,0x6c297e3d54b05e43L,
|
|
0x2efb454656c9c87eL },
|
|
{ 0xa4712b008b21c064L,0xd186fe424a70629eL,0x6435b3409b74f0afL,
|
|
0x6965aa437ec9e629L,0xdda14673c4c60d08L,0x0b656670bf3057aaL,
|
|
0x7f05e8403ce86f60L,0xc05073a904401a16L,0x16b1e638294e607eL,
|
|
0x2078325269cf7046L,0x2941141be8ce7d3aL,0xd38ad8d37577053dL,
|
|
0xdba68fb3caa6630dL,0xecbeaff1e9504350L,0x9f5166d51d2d760bL,
|
|
0x337532ce462891e4L } },
|
|
/* 94 */
|
|
{ { 0x3f1118533a00bb9bL,0x2d2ffbae45f66685L,0x9ae11a85d4aee24dL,
|
|
0x18ba1e1b0341856eL,0xa9ac81782731349fL,0xc13dfd4a545715b5L,
|
|
0xa5f7423c5daad2eaL,0x30a483b9535b76a7L,0x92e9ada4ff873e9bL,
|
|
0x15662d84723a1055L,0xb935497b8edac4e0L,0x61b6441a39d8fa70L,
|
|
0x1541d75640d1589fL,0x62994237f0a05f0aL,0xfd8b00346bb28908L,
|
|
0x192a2b5dd4cd32bfL },
|
|
{ 0x63576628365ced07L,0x029f32fb05de1d1fL,0x6d17b9bcbf40a7aaL,
|
|
0x1b1b2a089bb50a47L,0x9389abbb795a6278L,0x52cff60fb34fc19bL,
|
|
0xf3ab9492387d8739L,0xa8f053e66920ccd6L,0x3ef2dd4b63a9b4f0L,
|
|
0x9ab0ede151e82129L,0xafba0c0b0838bfa1L,0x2bd5a7ac9ffc11beL,
|
|
0x058bfd9595cc0878L,0x686d48a3f8c2f0c6L,0xc33abaaf1d9b31baL,
|
|
0x632e22893bc0c268L } },
|
|
/* 95 */
|
|
{ { 0x1c851d2015a1cccaL,0x4efe290c7e522bc3L,0x0b741d5518eab053L,
|
|
0xae656197bc85e217L,0xae13141e01cf8b29L,0x2e2cb59366948478L,
|
|
0xeb57bb0fc31bd8aeL,0xdecef5d6c264e788L,0x6fa856cc9cb96d86L,
|
|
0x2db16813279183daL,0xf03f3820383d796aL,0x58a456ff1d0c6fedL,
|
|
0x255898058a6abd9bL,0x339f52c583f96f19L,0xcf6ded8fda7e9ea7L,
|
|
0x68c3d9c15d1ccd45L },
|
|
{ 0x67e26265e6b392b7L,0xcec1d9bf775d9509L,0xe16abcd4d76514f7L,
|
|
0xd86f59b20de72e1cL,0xa66e43cd1adfb033L,0xdb34434005e457ccL,
|
|
0xb67a79165681daa2L,0xc32e7babf0114731L,0x066fe16ed3b1e961L,
|
|
0x924e298ef63d26e6L,0x9bea0dd8541add6dL,0xef9500df9982f971L,
|
|
0x5c876e63c5f076acL,0x55e12ae5b23d396bL,0x09efbb362ec6747aL,
|
|
0x8f2055ee233286a5L } },
|
|
/* 96 */
|
|
{ { 0x4a4ab9e3b82c1af0L,0xfc65e9e7f2cae264L,0x4feaac0a60187d46L,
|
|
0x27d3f335e393b363L,0x9c9f7c00819bacceL,0x3f7418b5b8aa6611L,
|
|
0xffa94557372aae95L,0x937d78048db38589L,0xd10c86df6f1fbc1cL,
|
|
0x48aebd89a2f0a0ceL,0xae5d5fa2367439ebL,0x103a6a0b3f17d2d8L,
|
|
0xf233f68a411d9894L,0x7fece8b3218b67a2L,0x0422540f2319bf06L,
|
|
0x1292c8c9340d322eL },
|
|
{ 0xf5eb55870386463dL,0xd4bbc2b20371d97fL,0x1b3645710b819c5aL,
|
|
0x0cbb42d6cf04ad41L,0x5d819c7666939ec1L,0x8745ac13a01847e7L,
|
|
0x4f704b021c7232e4L,0x2c9e58a0acb05780L,0x9523b8b3b561e295L,
|
|
0x3384df0079f9ba35L,0x78231fc21eaa9628L,0xa2eac54f8aea2b90L,
|
|
0x8075ed7730d1c263L,0xacb44ed5fb339000L,0x92546ac2f011293aL,
|
|
0x7c78762beb821764L } },
|
|
/* 97 */
|
|
{ { 0xb8f7d6fb067902b6L,0xb2823a43d1735980L,0x062cfb1259741dddL,
|
|
0x6e391b074033f95cL,0x3831d0a368589b8cL,0xe3474d49522290f2L,
|
|
0x4dab14d6222e1f3aL,0x8f00fcde53f08d39L,0x559917ae707f28f5L,
|
|
0x166aa0ba068e607cL,0x602713e7d7e1f824L,0x7c2555404d6a328fL,
|
|
0x0d2e32649890cd2aL,0xf2207944eca0b20aL,0x5c98dc0752f4e09cL,
|
|
0x69403504d84de81dL },
|
|
{ 0xf8b7b366e5407206L,0x1ecf54cf0d88fa8cL,0x6fefe548f7272e6fL,
|
|
0xd653137281ab4468L,0x52cb5f0e4e474408L,0x9e426b3a6490737fL,
|
|
0x2576c19b4980d071L,0x91f346280f272cafL,0x78e60a4f468f31c9L,
|
|
0x8776a32990844d89L,0x8a55700cb951582bL,0xab1af36514b1adbfL,
|
|
0x22ebff92fbd343efL,0x32f9fb01b7d81f34L,0xad850e06ba6b30e1L,
|
|
0x6da9e027bc5f9546L } },
|
|
/* 98 */
|
|
{ { 0x21eee4c25c9490ceL,0xa96ec4a30df68381L,0xe6c607e0a4a9368eL,
|
|
0xd8b0492a4bc262f3L,0x0846a210460c34ffL,0xf7ff7a6428df33cdL,
|
|
0x10c5504421827612L,0x9d25fce9149bcd01L,0x725611cdcfc613dcL,
|
|
0x159f7e8897f51ce5L,0x3fa3bf314e8c08b5L,0xea15611575e7538fL,
|
|
0xd1e0a95191c84020L,0x0d2268bacf02ad0aL,0xa04c6ac4058b8e5fL,
|
|
0x773b40b9b3515912L },
|
|
{ 0x00ff2cdc3631cfd2L,0x14c4c2d3807737bcL,0xd600616a338a5270L,
|
|
0xd0e3306db32cabdeL,0x336738eaa70b17caL,0xf2f4aa8d79f353eeL,
|
|
0x712f6ad9576f3ad3L,0xe427985289b2bce0L,0x05d8f94dda92ca30L,
|
|
0x9891d475d8492dd9L,0x3e06a5ca4d15e4bdL,0x4725d4eb254eabbdL,
|
|
0x31394acec0ed513cL,0x7e0f9859bbfaae6cL,0xdc125546833fd137L,
|
|
0x12b46385c56c4f75L } },
|
|
/* 99 */
|
|
{ { 0x810dbebd932951deL,0x96959d425aa69c94L,0x5fc49c04ecb2f08dL,
|
|
0xac74f0cc2250b82cL,0x96a439a53aec4e1dL,0xc33cab9a90499acdL,
|
|
0x2fccde6654d9b3afL,0xf4af285c3863ae8bL,0x2373373e46febf88L,
|
|
0x751d672c3c9ab7edL,0xc1c51130fe12020cL,0xad82402f52f3e56eL,
|
|
0x3489ab7aa4a64a81L,0x0a1fb661d9f163f2L,0x17c69be10e553317L,
|
|
0x61c1935e7d88d417L },
|
|
{ 0x2e722d9b3492ae43L,0x1ef89d950538f05aL,0xae77e588200aab63L,
|
|
0x2872c120eba4b117L,0x5c2432c83a461cb8L,0x315b3434cb938f26L,
|
|
0x05bf2ac58c4c7dc0L,0xd2e501dd596b378dL,0xa8506c9fcb890c30L,
|
|
0x3d0af4617c361f0cL,0x21f7b7185a35cbaeL,0xbd1035f1f3fc0138L,
|
|
0x74628af58b248edfL,0x8d6421d048c9cae0L,0x75e3da392ca18773L,
|
|
0x27ad0df271d3db94L } },
|
|
/* 100 */
|
|
{ { 0x9e3bda79305b5aedL,0x2c67d4a45998d6a7L,0xc855e1d30f7eb700L,
|
|
0xc18a7e9e147d1c44L,0x3ea99618c89540edL,0xa53be20a7e6bfd20L,
|
|
0xc9487e64ecc14437L,0x7297920734ef85c6L,0xfa0d4e71d5e1ebd5L,
|
|
0xfda2b1e64d48d6b6L,0x782a1e0566e200d4L,0x2a3c70da5a5366a1L,
|
|
0xfe3fbd2b1a473738L,0xd7ef8c067fe020e8L,0xec686fdeeacfb665L,
|
|
0x5d9b5e276dd1542fL },
|
|
{ 0x3637c5a5cb3e472eL,0x2153d92730a1405eL,0x009992e5b4498558L,
|
|
0x18f00ccdf39a0851L,0x26237c11b5c6c560L,0x418ed4081343540eL,
|
|
0xfef7cbf07e7f3184L,0xecd92366bf48576bL,0x1b75be1abc94c91aL,
|
|
0x8e1778de4a162276L,0xc52e57d3c5c6bcb8L,0x5cc382c75ab71858L,
|
|
0xe12c2c283f6e39f9L,0x4c7e0ef2d62735fcL,0xe071deb1835a5996L,
|
|
0x24f891cdcbb8c766L } },
|
|
/* 101 */
|
|
{ { 0x24ef60bf6778c1e2L,0xff49c03d00d5be5cL,0xec11986e2f01a09fL,
|
|
0x59a728a4ae096e58L,0xaabbcedb7077984cL,0xfb473bd2870ca5a5L,
|
|
0x8c928c614de30e3dL,0x3fae7f9a4f67abcaL,0x83c2b2ebec21a9cfL,
|
|
0xafa70d629cd9b5deL,0xadeaea59c60b18dfL,0xd5fef7be4049b54cL,
|
|
0xfceebc766dd310e3L,0x7748efe38f6321ccL,0xfe9c32b118ee8af5L,
|
|
0x863ac3cfd42df612L },
|
|
{ 0x0a36fca7b85a2fe2L,0xf3e70d08ee429dc6L,0x8c9ba209141c3944L,
|
|
0x306a810667272a0aL,0xe69a1555f968bd06L,0xb86f7e47153c603dL,
|
|
0x9706614aef56e4faL,0xc0dc36b898780b4cL,0x43657fe23a1d3263L,
|
|
0x01f97a86435522c9L,0xd91897f6edfef679L,0xebbe31d46daa17a0L,
|
|
0x6f17910085accfbdL,0xe0da6e328f9fc1deL,0x1c9d53dbe1e7142cL,
|
|
0x3e3f1b1e8b86725aL } },
|
|
/* 102 */
|
|
{ { 0xb7ea15c07b7fbf05L,0x992f11b61f1a3882L,0xc9ddd95ad1dcd1bcL,
|
|
0x31f5b7faad0f7e8bL,0x2936e5ebfca7ab79L,0x30f417dc19a55be6L,
|
|
0x1f6f4e4343cde554L,0x971f5e6582f044bfL,0x73c3b8e44288c408L,
|
|
0x61aac59fb807f575L,0xa64ee2dd818b58f0L,0x6f7a0a6097a3b0d3L,
|
|
0x8b85ecc80394b058L,0x9a059474bfb3517dL,0x89ad5977a79c3f06L,
|
|
0x81208ed8700a8025L },
|
|
{ 0x1093509914c4ce37L,0xf34bb843a1aa48a6L,0x86007024580d58e8L,
|
|
0x6db42c49b375b8baL,0xac365524ed3bde83L,0x5521e1b4649233b6L,
|
|
0xbc7cc5d564dd946fL,0x9c14b035bfb5b6aeL,0x7f22ba180146c1a3L,
|
|
0x0b62fbbc872214f5L,0x3acfd7f7b4921764L,0x5ff10da1cb4d6df1L,
|
|
0x660e262062600a91L,0x7ac7da9d81d9167fL,0x6e8e260cb6e7a199L,
|
|
0x44383fb880deb3c2L } },
|
|
/* 103 */
|
|
{ { 0xe107f01de44f9af6L,0x36381a4d8cb1fa1cL,0xe65be3ecfb7dd493L,
|
|
0xd0b8435a26a8839fL,0xee60f9153ec789d8L,0xe25fea502bcc5e1fL,
|
|
0x0477c0c57e44a81cL,0x349e9f83230ba5b8L,0xdd42f32fde180dd9L,
|
|
0x8b039eaf64a3d11cL,0x80ef884ebeb7083aL,0x288e60c4f12742cbL,
|
|
0x44156cc5720a0262L,0xcd547de67253b77fL,0x9829a6eca6013a59L,
|
|
0x8aee708f0d548445L },
|
|
{ 0x18f22d9c32c54409L,0xa9ebfa4675ebaac4L,0x90e2e92886284981L,
|
|
0xd0201f6f6b3a8e0cL,0xc973016cbd77641eL,0xf926f2f070170575L,
|
|
0x4984048ffec0ce01L,0xbf696211f319d304L,0x74b5c844c91a88c4L,
|
|
0x4c40fbcee0030a82L,0xbed67525e4f6d521L,0xaf7e47cc29d67d1eL,
|
|
0xfa307db8c21d3536L,0x56b6c46abbb29405L,0xf059a7e3033e805fL,
|
|
0x970f61fe6096a5a0L } },
|
|
/* 104 */
|
|
{ { 0x1bc53d231bec8e4aL,0x8809ac1435a6034cL,0x4ee081da509e464dL,
|
|
0x496ae1fd8a488235L,0xa1ae9863325864b6L,0xbaca13e974cd069fL,
|
|
0x3738cc58b1d8a6b4L,0x5fa71f58e76b9da4L,0xc919be88c7eb16fbL,
|
|
0xf5c8f13fad4e429dL,0x4583b6712499f9edL,0xbce20115a10d8bd7L,
|
|
0xf66d76055790bb7eL,0x9316aede482b78ddL,0xe0d8fb2d75f855faL,
|
|
0x404b5b945a7dcca7L },
|
|
{ 0xf9ee682a517a15c7L,0xaae4cfbcef880202L,0xcee2c1395106a354L,
|
|
0x5de60192170febe7L,0x589e39fd73d0c54bL,0x195c71358c9092b7L,
|
|
0xcb7ed53f0a7bfe5fL,0x2bd9242af61cc979L,0x8d2ef16c5395f7d9L,
|
|
0x0d4ac1ca70b32f09L,0xa587526d52d185c1L,0x2932b04a942d6195L,
|
|
0xfe25a979a500b0acL,0x5fa1f4ae562fd230L,0x60f55af220da253cL,
|
|
0x7faa11b583146002L } },
|
|
/* 105 */
|
|
{ { 0xb0ba4f0c6e402149L,0x3584cc1d963cc119L,0x7740dc1aa6527476L,
|
|
0x3f77ff75c95715f2L,0xb2f234ad3f89fb0eL,0x55159032ef9be3ffL,
|
|
0xfc9fb21d04237e82L,0xeb2eff38a153ed93L,0x89d53ae010041d13L,
|
|
0xcf2e545b7f1bd828L,0xdd4a27ce43953ea5L,0x00d2e5d4d85e75c8L,
|
|
0xeb93ed62241be1c3L,0x1e53f25f0242032dL,0xb9957636c3a4e701L,
|
|
0x14b63a52ed98febfL },
|
|
{ 0x7610b55371c43336L,0x19dfd4a623a4824bL,0x7b97a2e00286051bL,
|
|
0x86abbb9c8f5f1edbL,0x67a57d779b67daadL,0x8ace506dcd5ffafbL,
|
|
0x85da9f9589ac3c63L,0x081cbaa875a3d150L,0x03353d8fe9346ed2L,
|
|
0xb2ab61f1a1f9a02dL,0xb0cb09373a659c71L,0xb7e0e30b4f5df8a1L,
|
|
0x77c4c741eb7d5a1dL,0x8f046c9c728e5cf0L,0x32dd0bc7f7c171acL,
|
|
0x02485873836d2655L } },
|
|
/* 106 */
|
|
{ { 0xcd40dd2375a4cd8dL,0x132ca43397bcba78L,0x30c5cd84258d61f5L,
|
|
0x0a7ec059da1e8e68L,0x07a8f1711d65d40aL,0x869e655ef4350d76L,
|
|
0xb98ce6f05983ae42L,0x7b61391d9d8bebd0L,0x3a529e25b1ba5d49L,
|
|
0x46f732e91f6b2cf6L,0xbd66ec6a3fa3b629L,0x397950ecc3ef0ed2L,
|
|
0xee9008cb5f08b476L,0xfd6be425965a0e2eL,0x78ed513c1177bc87L,
|
|
0x6798cedffe512daeL },
|
|
{ 0x49e3f8fd1b97c5c6L,0x39fbab3e78c3b33fL,0x4427441240f595baL,
|
|
0x174225b95d7d4376L,0x880b3fcc79c44777L,0xdc3aca833296b245L,
|
|
0x55913df71734e184L,0xa4db23d39c934472L,0xcebb3733d1420a11L,
|
|
0xb9d20cf9f3608bdcL,0xa618acf630cfe13fL,0x75f06b315f30874cL,
|
|
0x506efe7f9f0005a5L,0x8aaea78c01bfc9dbL,0xf9179255f78e7c41L,
|
|
0x3ea7aed252e96395L } },
|
|
/* 107 */
|
|
{ { 0x98617e045b06ae25L,0xbcac148dcb5750efL,0x91ea2f0e604c2ba2L,
|
|
0x00c19f6b76b78975L,0x79b9b6d0651da181L,0xf3225bebc945705bL,
|
|
0x30b435f35c005bf1L,0x440b4482bc24d86dL,0x2b8f0996d6373777L,
|
|
0x65fd6c561c44b4dcL,0xe9405ee630906999L,0x19ff092408aa1ec1L,
|
|
0xeef3246a3d2f2895L,0x016c3765bc746797L,0x62d2569fd0705f7eL,
|
|
0x6a8ad39c05250044L },
|
|
{ 0xe45f020d46be7282L,0x9405afed21380f12L,0x4cdca5bdd5da6ad0L,
|
|
0xc2d6f1847f8be61eL,0x20132953596b8178L,0x8d3b1e7b7a8df954L,
|
|
0x757c61bb39572b4dL,0xd749b57b80cc3b56L,0x9590ff9337b3ffecL,
|
|
0x39bbb653145dc94dL,0x70c1c6062335e573L,0x9c2e72d7f763febaL,
|
|
0x4768e424cc61b732L,0x777d2fa6aa73f2caL,0xdee4dbaac5cb58cdL,
|
|
0x1a1811799cfae1aaL } },
|
|
/* 108 */
|
|
{ { 0x6f6ff62f77575ed0L,0x18f14fa97d1da99bL,0x2e72aefb69efd7f6L,
|
|
0xc45ab4cbddc28633L,0xb0e20d48586c5834L,0xd397011a39775dd8L,
|
|
0x0130c808f4134498L,0x2d408ebaf5115ed8L,0xc506a05c0260ded9L,
|
|
0x9e5b736219cab911L,0x4cf508c6e8693a86L,0x4e71245fcc773617L,
|
|
0x2f71aa1f95d89ca3L,0x4bba7c6a607bbc98L,0xf3a515e7212b7fd2L,
|
|
0x7d2ddc759230f5a8L },
|
|
{ 0x3d05816d4ed2cae8L,0x4cf6bc7db9c00377L,0xc23e98e6646b08d4L,
|
|
0xf9ee6c614b9c0180L,0xe11c9a13ef9179c1L,0xa5b6147e8ed9688aL,
|
|
0x7afeb648d06670a7L,0xd670333c17685275L,0xa89dd96975f9e8f2L,
|
|
0xbb57228d37a68adeL,0x21a05d5e454cb186L,0x4810158f063dd550L,
|
|
0x92dd4f084cb6caf3L,0x70c4d8527854abe7L,0x845969dc6e729d76L,
|
|
0x5a52f87ab1bf40baL } },
|
|
/* 109 */
|
|
{ { 0xed019e9109ecacbdL,0x6544023d7b89bdeaL,0x7cc51f0b5707371eL,
|
|
0x14832b0416c8e217L,0xb1aa668281259ab5L,0x6e100f9223e361d4L,
|
|
0xe593eee9e3a95c2aL,0x699b6bbd16c10e26L,0xad4878739473a13fL,
|
|
0xf1c14dc5b274987cL,0x57dc00752559e2e9L,0x8449849dc3d47ad2L,
|
|
0x83df278add527793L,0x770e3ec8eefd5b99L,0x2ae5844676bd02a0L,
|
|
0x17f027643e705ffeL },
|
|
{ 0xdda4010d29abea1fL,0x636b96952407ac4cL,0x96a601290433218bL,
|
|
0xf221fc3b163d534aL,0x05ba15beccc20565L,0x1238e54d96285577L,
|
|
0x1b144257878804d3L,0x96fbf304a89a9fe4L,0xc8a7f06c4be642b1L,
|
|
0xdd1a20e86e2b085eL,0x8f7f27c2ff4a591dL,0xc17b0753a4a343b8L,
|
|
0x684b1e88bb173d4dL,0x3accea443dc07bbeL,0xdb15c88d4c441d77L,
|
|
0x0ef0309a53e5957eL } },
|
|
/* 110 */
|
|
{ { 0x4fc25721fa8e5b60L,0x646938ad691c0bb2L,0xe46d4b760b0a2248L,
|
|
0x863f9ac27de16877L,0x503bb6ef2721c630L,0xf8c199df0b67fb02L,
|
|
0x78c1ed72e07abd39L,0xcf9deb7bb32f0ddaL,0xaff726f06c3c89f3L,
|
|
0xb7008b2d1972225aL,0x8f5a61174f145f5cL,0x4e0e6f8c457c4f37L,
|
|
0x8bbdaa441c453c64L,0x57be326da6e92c80L,0xa9bc3fd95d773561L,
|
|
0x3d3b6cc6bb37b72aL },
|
|
{ 0x6e6f12cc9722c880L,0x3a1b6ae7286b6889L,0xba1cc09bad2fafecL,
|
|
0xad64ad7a43bb8befL,0xa5af6a0097c3f4c3L,0x2afcb0d9c353a91bL,
|
|
0xca13fcab69ccbf6bL,0x699a1391f2abc190L,0x2dbd554223a247e5L,
|
|
0xe206180f95488d9aL,0xba9e7bff1244cc3cL,0x29297abe87d3a365L,
|
|
0x4054fa38fa4ca5e2L,0xb390623d67be1b6cL,0x1fa67c5778f41a44L,
|
|
0x2e946e43c7b544e7L } },
|
|
/* 111 */
|
|
{ { 0x2980fddfc60934aeL,0x2c3e7eff164206d1L,0xf75e7f96416ed75aL,
|
|
0xfac60cf35cd0b2dcL,0xddc4bece1faad87bL,0x753fa87c9849e5ddL,
|
|
0xc5d516a32c1bf1aeL,0x565dbea814732b4bL,0x007ebe3ace48696bL,
|
|
0x40ca74d6cdb97694L,0x3f5cd27065e4e7beL,0x74847c013aac4ebcL,
|
|
0x6762e03443d6c3a1L,0x690d8c95467a076aL,0x768d78d61eda677dL,
|
|
0x0997ce550181d8c2L },
|
|
{ 0x9297746c965a0b81L,0x48b58be6e5e12dfaL,0x5573b3c4715f437fL,
|
|
0xe425e907b565c459L,0x4f43f5121582797cL,0xe5dafa6f8ea5474fL,
|
|
0x2aeb8fbe13de04acL,0xed7f95f0e8a07c83L,0x3e012a6e662c09feL,
|
|
0xbf96e9b8c742cf17L,0x8ea5759ae28a1c45L,0x475941b45cf4e2f3L,
|
|
0x7dd3c02df901a019L,0xe7a4deea70916b2eL,0x50b272b52fa9b988L,
|
|
0x96f9f09fd0917fe6L } },
|
|
/* 112 */
|
|
{ { 0x78e8aac42c310a96L,0x32a98303f7a2a734L,0xc46ca83d23962207L,
|
|
0xad131e6ed9541280L,0x5791fc5e2cabe911L,0x50cb77eb841b6c68L,
|
|
0xaff93dea3d3c8878L,0x06541f1df1007bceL,0x4ee729c255cdf1fdL,
|
|
0xe0f71317323e3972L,0xa2de7a41ad4d08c1L,0xa9912abfa35e22bfL,
|
|
0xa050122b89b03325L,0x8b9e51f406514d4eL,0x423c7aad79d3e0abL,
|
|
0x71998e2640b8fea5L },
|
|
{ 0x40140fcdceb6ed78L,0x653cf37718534516L,0x0450b65ae8d60dccL,
|
|
0xce6c1a769dac55f8L,0x8a96a92dae05686cL,0x2fe4476212712562L,
|
|
0x747bcb50a4f39425L,0xf0ec6ff2fc531fc2L,0xc97c344710fe9ff0L,
|
|
0xfb4887839c792cffL,0x552c5248026fb019L,0x4001a29cd804c290L,
|
|
0x742b5ad835c8ca73L,0xc3781f176ee5dfa0L,0xca6b85f03dfa4ab1L,
|
|
0x8389941a0b0d32acL } },
|
|
/* 113 */
|
|
{ { 0xc0f062a2de067dffL,0xd4f32690bcb80162L,0x98cd990d0707a2bdL,
|
|
0x5afc63b8fae4a391L,0x684f1b7bb32ad814L,0xb0a2dce2f199dfb1L,
|
|
0x2260e17f48f25848L,0x7393db00c2d5e862L,0x9e88f854338cf171L,
|
|
0x0067942902acf522L,0x19157cb86835af3dL,0x2faa6f92b8a2614cL,
|
|
0x04ff95f5134ec46cL,0xcf00626efb7a8135L,0x454b3d05b37a4704L,
|
|
0x1fbfda312694ec25L },
|
|
{ 0xfdebb657c8f69c77L,0x92a8278ba3df88faL,0x463b5571c1fb78b4L,
|
|
0xd2066a1a11c71a33L,0x10c88143089958b0L,0xb975c7e0cf9d67a6L,
|
|
0xdaa5d20873037b8fL,0x5ee5005d40bf5861L,0x300e6ce77dba69a9L,
|
|
0x893c3cb3c962cc74L,0x0ac986294cf84055L,0x0a7ef63a225c9d70L,
|
|
0xfe184869b91e47e8L,0x1b9d7deb8c2f84beL,0x67788915c0e278bfL,
|
|
0x4f9488cac426f19eL } },
|
|
/* 114 */
|
|
{ { 0x610dfcd4dd51b8ceL,0x0857927836230e80L,0xedc7ff1c36599562L,
|
|
0x905ead4be2cae877L,0xa1c325d9e7967608L,0x3e39edddbd38926cL,
|
|
0xda92c8685f6f0a4eL,0xe16f800af47a0fa4L,0x50b4db5be5f60aabL,
|
|
0x3665412f983853d3L,0x64b622509b79789cL,0xea5600584e0e72b2L,
|
|
0xabbd4901e555c2bbL,0x378419a717292e11L,0x6e0b5aaae174218fL,
|
|
0x688e06848f796b92L },
|
|
{ 0xcdfef641313b8f64L,0xaef11b7b942c7462L,0x067cfb775c0d8abdL,
|
|
0x608ea5f0af4041a9L,0x23d5bd826935210fL,0x5ab904fc27917a08L,
|
|
0x85dbb1fe45d22d21L,0xc3d5e5094d36159fL,0xaebb528e1d39b8f2L,
|
|
0xdd5ca828f44acef0L,0x24209adf20c57a54L,0x5742b43378f95f44L,
|
|
0xd11fa7d9a9337d37L,0xd66a0c09c64cfdb7L,0x56e55b8f9bb817ecL,
|
|
0x1723c7e3e4c41265L } },
|
|
/* 115 */
|
|
{ { 0x9a6486d8dc8b43f3L,0xfc3e0e6126409e68L,0x1889c437d9b46003L,
|
|
0x3a8503356284ec7bL,0x5a3665c46a9dbaeaL,0x7bf6941de978933cL,
|
|
0x1ed5a51069341490L,0x664a7b7a8cb8002dL,0x603f76e460ed0a59L,
|
|
0xc3e06ba31f4ebf27L,0x296ced41f2c38a7fL,0x2ac18f79cf1db08aL,
|
|
0xc919e882cde7a3b6L,0x15e77d29dbf68b06L,0x21978baa4e947cb5L,
|
|
0x84bf542b7630993aL },
|
|
{ 0xc1decda9e364f21eL,0x0d6cf345012e557eL,0xba246848588f90e1L,
|
|
0x9f6dda4be3b104b8L,0x6bf7a346e3aef57aL,0x210299fee8327ea9L,
|
|
0xaa99f487da95e6c7L,0x24ff813ed2cdf645L,0xd1dbb2d28bd414b8L,
|
|
0x065101afcafa1a61L,0x7d9f4b9a9cdebda4L,0xaf41b395e41039e4L,
|
|
0xe3e9e6bac50adf42L,0x4f2133ae341e9e49L,0x4968c0f3cb157f23L,
|
|
0x383f827bda068153L } },
|
|
/* 116 */
|
|
{ { 0x2ec46a216583ff4cL,0x4e645a294ad709e7L,0xdc66e9cfc04ca12aL,
|
|
0x82f128f49160a7e5L,0xbfb227b1569c762eL,0xf80c7963c2edb8e7L,
|
|
0xa7dafe0649a0f688L,0xb7e417542d14b8ccL,0x3a0c5c5386de40beL,
|
|
0xf0d052861db79331L,0xb902ce69fbfe071bL,0x61e46956210e9903L,
|
|
0xfaef874ef703ebb8L,0xf668947edd5f78b6L,0x6fe865475af5ea3aL,
|
|
0x3b121f1543f94625L },
|
|
{ 0x5b26e847659275e9L,0x47581cfd6d0fce50L,0x55f5cbfd8aa3f1efL,
|
|
0x1e7be315e484e60eL,0xd8f1a20ffe9698e4L,0x25d46da97ab04784L,
|
|
0xa526db75834cdb3eL,0x1fd408d98d08a009L,0xfc004b205b5ca816L,
|
|
0x5b3e3bb365e4bbe8L,0xf50cc125759bb6efL,0xf05fa817c2fac737L,
|
|
0x9ee102d2d273951aL,0x2a8e540bfecb3367L,0x673446fb2a6a515fL,
|
|
0x5505e1d137290c83L } },
|
|
/* 117 */
|
|
{ { 0x0c3014a1d15e68a6L,0x6f9f0b2664dd35e5L,0x18c3742d03ad67f9L,
|
|
0x74818c0ed2c14484L,0xc51811690d41a3cbL,0x65c8c83fc49f3e9eL,
|
|
0x9b260c612c279386L,0xf6086faeced04e9cL,0xa7b2ccebfd7c4758L,
|
|
0x4b3c313390297fd8L,0xca8264e809701ac8L,0x9f976a87508b3762L,
|
|
0x5d582714983a8dfeL,0x350d2669d9d598e9L,0x85cb89cb0f6fd348L,
|
|
0x617d80d4a574317cL },
|
|
{ 0x4cef267e70022b67L,0x80536bb53768b94aL,0x3153a566d2784462L,
|
|
0x49054d4438243919L,0x8d11e1725df78c4aL,0x9b252a71d5a1e35aL,
|
|
0x07866c808171e31dL,0x0a8501db1b38a00eL,0x2ed932b8ce770236L,
|
|
0xa2d776098edaf7d0L,0x3aee5dabb93006e9L,0xfaffc8c4bbfeb036L,
|
|
0x077b96784e21b38bL,0x491fc59fdca8e069L,0x3f624f550e938471L,
|
|
0x5156f5087cd1780bL } },
|
|
/* 118 */
|
|
{ { 0x58234e220206e8d0L,0xf5f6f5d47f15af32L,0xafab7289d638950fL,
|
|
0x66ec4d097d4495f4L,0xad890c5d68da80a9L,0xe4aa092064f8a36bL,
|
|
0x799e257e0f4d5c5fL,0x44c677ae24495e31L,0x720387b3a5b8e352L,
|
|
0x703790f475a287b9L,0x54895cc5c3c1f2f7L,0xb8680f9b41a7fa41L,
|
|
0xfcd47458b00b008bL,0x149cc838ba6473cbL,0x78ed5f7aac9be19aL,
|
|
0x5254599cb33765baL },
|
|
{ 0x08739679a21b54c4L,0x029ece2ab6497d9dL,0xf14f1a92c8488640L,
|
|
0xae48dcffe9fa79d9L,0x14b911c246c208dbL,0x5ab0fbf2dae3f69eL,
|
|
0x180ac87ed1edb838L,0x146fd718188586bbL,0x210eb6545467cbd0L,
|
|
0xaa2394081667cfeeL,0xdb125c1ab73d1a60L,0xde685300881c1cbeL,
|
|
0xfe34c71337c30232L,0xc6c6070e6f3c8d18L,0x07e365bab4af4e83L,
|
|
0x22f0a7eddcf82b45L } },
|
|
/* 119 */
|
|
{ { 0xe262791fea7f1b7fL,0x9c3d8c5ddcff09d4L,0x86c2a9c339c7dc58L,
|
|
0x4dad40174276e8c0L,0x0a918f59e9fe1d56L,0xb8d796702aa810c9L,
|
|
0xeb7a88364aa5cdc4L,0xfc4c23bbe7afa72eL,0x4dbb5c9e4ac86908L,
|
|
0x37e390136a0c7e6fL,0x855d700149c218d2L,0xe475bc6794b324a2L,
|
|
0xc98a8dc66287a071L,0x395a299b5fb4323cL,0xe186c3ee0c0389e9L,
|
|
0x79f81e6f16734c46L },
|
|
{ 0x83f2c1f3364f3c4eL,0x536b2ac51367e14bL,0x44a6dcfc5933e43dL,
|
|
0x34e5947510d961feL,0x08234ece7e3f2aaeL,0xcb92e00abdea7f25L,
|
|
0x1efba4f0a791a124L,0xc2086fd21192d53aL,0xfec0d0fcb51c8af6L,
|
|
0x48d1b2cadc0f1b5fL,0xb07a388f812dbe19L,0x40873a6adedbdd45L,
|
|
0xbc2a1268d702589aL,0xbbf6e3a817e27b64L,0x73ee56636d386e85L,
|
|
0x442ecd379de7c000L } },
|
|
/* 120 */
|
|
{ { 0xb4cd1ae68a2f90a6L,0xf277d41d6f5ad0ccL,0x6a3828c4401d4b8eL,
|
|
0xe817a134d8376631L,0x142b758df5e1124bL,0x25fbc69dfd6b95e4L,
|
|
0xa30c9f5fd74a9e3eL,0x5ac0f163d89663ceL,0x32a9eef70ce6386dL,
|
|
0x7a690ea5d8ed5544L,0x5de23ff09889427aL,0x75ad36a5eaaced58L,
|
|
0x3514a6c1d3e18465L,0x3d9162c37f093910L,0x5c10add9e33d56e8L,
|
|
0x85176b7306aa691eL },
|
|
{ 0xa32110fa28a21e38L,0x97b6379d5773d538L,0xd3697bbf2d020dc4L,
|
|
0x59177593961833cdL,0x6d7045fae5fa8516L,0x3390f29a786ab5d2L,
|
|
0xac0bda30dc4f5b70L,0xcca0240adcc615c6L,0x8e1f1702c5146d91L,
|
|
0xceb472d0a72cef87L,0x848407080b669ba1L,0x79b08f9d7e61aa0aL,
|
|
0x388160be4669560bL,0x23935c2d948eb71eL,0xd7fd83c09431590cL,
|
|
0x8ab154bb6e5768b3L } },
|
|
/* 121 */
|
|
{ { 0x28686003353c4a96L,0x4e5c60e8905cd835L,0xbd5913648f66f8ccL,
|
|
0xb6b80b989faccf9eL,0xbc1c1faee32639e5L,0x2f6396d2278aadebL,
|
|
0x00a796d01898202dL,0x18ab548f3a474835L,0xacd056c3b31b0e3eL,
|
|
0x15ba68dd0164512dL,0x203836d94b03f3bcL,0xd64eca6bd8f206c5L,
|
|
0x931a361e9f1779b6L,0xd82690fc52ab34a8L,0x342bb8e092922e22L,
|
|
0x1bfcdd84e00b02a9L },
|
|
{ 0x310b9a4375a365d9L,0xd4ade15e08d8fb03L,0x9c9753d7d742df83L,
|
|
0xcf7309d4de318742L,0x1228e2123360ace0L,0x1043d238f7669643L,
|
|
0xfc2adbedf90f5a53L,0x41d64cb77b5f9397L,0x5200b30ac446d010L,
|
|
0xc3c8642d231720feL,0xfcc0122db9aa2075L,0x856e3b12041eae47L,
|
|
0x4586445568c876a4L,0x1a1c7842233606b1L,0x9b766d1f227757bfL,
|
|
0x25b78a3bf7b9d4f1L } },
|
|
/* 122 */
|
|
{ { 0x90835718156707ceL,0x9bdc23984314f90aL,0x017c885a8be57dbdL,
|
|
0xd4bba225ad63a4b8L,0x5ce71b8615aacffdL,0x5f26647572954722L,
|
|
0x0a80f1f74f0ad3ddL,0x010538a3fc352ed7L,0xf8a640454203c6caL,
|
|
0x2b2c7a88330c73b4L,0xb3433ee602dcac1bL,0x2e0499cfed2b17c7L,
|
|
0x9f8681a4bd6329c7L,0x3897994636fadc37L,0xdc5650c892b7895bL,
|
|
0x70ab957065a51cf0L },
|
|
{ 0x46778ec47b585d93L,0xca6d3610a633fe4eL,0x21da154e4ea0311aL,
|
|
0xaf22190bbd64002fL,0x9e633ac7d91cb7a9L,0xed13c31fee6837d7L,
|
|
0xda4a07d71616ee8aL,0xd78a27323afcd616L,0xc06696e5ba14d694L,
|
|
0x733754d74df58420L,0xe85e504e2778e3c9L,0x3055aa0c55b5a5c2L,
|
|
0x313df5388a3acb5cL,0x5896acb52a088edaL,0xfc8842a084c85ddeL,
|
|
0x5fec9f7951dde6beL } },
|
|
/* 123 */
|
|
{ { 0x5ebc2c7cfe519f99L,0xe396bd80e5410353L,0xaded94028a3988f3L,
|
|
0x1c03b735d601bda1L,0xfd30203614ce64acL,0x5837ebe901240290L,
|
|
0xcaaea1a3a554097dL,0xdce73d25b0b88139L,0x35ed412becb090b9L,
|
|
0x99029ff7d63dab3cL,0x555437d9062db071L,0x277d2f5642a4c11dL,
|
|
0x477fa64524fc9109L,0x7b12e9b72799254dL,0x7ad2ae22d84c618cL,
|
|
0x0a8d5663ce8ed195L },
|
|
{ 0x43ac51630a21fde1L,0xcfcf5dd66903d849L,0x6d2499ee5fdd6281L,
|
|
0x4dedc6f077a49a34L,0x46bda2c02875c06fL,0xd0e0e0f6347b8046L,
|
|
0x1058169b5e67836fL,0xc961912ade8a8042L,0xdf3fea0aa93b3d32L,
|
|
0x9f138edb0c576bc5L,0x7971ad6ed8d37e47L,0xeab85739cce5e7cbL,
|
|
0x88a4b4341d202b40L,0x5d842557e3a1fd26L,0x872fabd5b3a86f91L,
|
|
0x95b934936aa4629fL } },
|
|
/* 124 */
|
|
{ { 0x9998a70199f951deL,0x8fade596f058db45L,0x4d479c1ef3d03dd3L,
|
|
0x6e928d5d33b141d3L,0x9a465800acfe8a40L,0xd108ad2fc1cefa3dL,
|
|
0x64b96921e013726eL,0xb9b6a6b68e83bb9fL,0x29f1e6dc1242e544L,
|
|
0xd3f8f6762f65966bL,0xa34dd0965e105b41L,0xd4e9139a16011e1cL,
|
|
0xeea4dc682515541bL,0x6f8030acc822166dL,0xbdc7ae1d31d16124L,
|
|
0x2e25ef51621afa7dL },
|
|
{ 0x2533cf8fdd8e7357L,0x333ba218eaceddb8L,0x68e3e31d0784d2acL,
|
|
0x1c927f36f2804ae2L,0x01433d2277e7ad7eL,0x0b401cf0587f78a0L,
|
|
0x9dfcf036aa0027aeL,0xc9e46c8b1d9a46b5L,0xaa6de4861f288d32L,
|
|
0xdd56da2f1b8a043dL,0x346230e5f2d0bb56L,0x19f0b6e419defb56L,
|
|
0x55ec37cd21d2c874L,0x3dbf0397b70e45b3L,0xf0862a8dac7ce852L,
|
|
0x87979ea7e141f3d6L } },
|
|
/* 125 */
|
|
{ { 0x9b7e7b3f7f1c747fL,0x151a4c1dc6e63369L,0x4273ff70b372dba0L,
|
|
0xca6d2234d3ee54feL,0x12fc8e0cd33cae0fL,0x273285385dd6f10cL,
|
|
0xc86f3fbdf01a9cf9L,0x5322677fe36cae91L,0x39a700332fefea44L,
|
|
0x2c9ca328ce8af217L,0xc0256776f6a731f4L,0xc687b3df66a96813L,
|
|
0x194aab128db2eda8L,0xde30dc5aeec4febdL,0xc052236a979241b2L,
|
|
0x3ec98802c23d4c16L },
|
|
{ 0x0f9e760c4072f74dL,0xe78eb0deab594059L,0xdb3dea40c9b009c2L,
|
|
0x47e875f038b59ae5L,0xf40eb4362b4daa06L,0x9a6a4f92090f3788L,
|
|
0xefebe9afedbfaf8bL,0xf87f96a59867e256L,0x1e6fed2375ab6aebL,
|
|
0x17f2782a3fdb13cbL,0x5102c71e70fa2621L,0x5d2b06ecfd4c0dbeL,
|
|
0x537cc26830347297L,0x8dbf5e2b2b67e780L,0x2f633f3aba25da32L,
|
|
0x3e9315e8efaec914L } },
|
|
/* 126 */
|
|
{ { 0x9255cfa5239a9ea9L,0x20f3c6900be33a62L,0x759eeb4b9cb642bdL,
|
|
0x3316c54600bae718L,0x874a76d5f3410f84L,0x123b502e90f129b6L,
|
|
0xadc8f9a812851f1cL,0xf57b764a1b62408cL,0x116ec01f1a80777bL,
|
|
0x746ecef21f0ddc5cL,0x3c49d47ce5a6a5a7L,0x1e15dbe706e955baL,
|
|
0x629c0c79b45d79b0L,0x11278308778d1087L,0x22585dc78c6a22d7L,
|
|
0x2ed02a0d0a682791L },
|
|
{ 0x530434164daa2682L,0x0e26d32b01359625L,0x449c834abd867097L,
|
|
0x11a19d2bee77ae2eL,0x39bd529a3af6c169L,0x36cca5c05cd61054L,
|
|
0x6370a59bdc6c0fe1L,0xca420d27b93d5135L,0xd8730d45554c451aL,
|
|
0xebd258c996cdebf2L,0x0cb1b990a50f9a05L,0x69a8c97a7b0f0151L,
|
|
0x2cc36d3411d217e1L,0xf117688a752f75e8L,0x1db01394a09b2a61L,
|
|
0x14627844a9efd7ddL } },
|
|
/* 127 */
|
|
{ { 0x6bca3aed232803cfL,0xc1e4398b9a96ff34L,0xcaf6757f74ab788bL,
|
|
0xc3a53e007e68c04dL,0x5f969c195cb7cd20L,0xf28b65a6dc068bcaL,
|
|
0xe3ca01d31d863032L,0x9b733b8187808e14L,0xb5d704d9efe618beL,
|
|
0x276f3542b01b946dL,0xe057e19efbedddbfL,0x7d182f2b903275ceL,
|
|
0x3cdc5f77880f7bc6L,0xd6f03d3f78476c14L,0x035f5557a9ba5072L,
|
|
0x7acb57b6b4029628L },
|
|
{ 0xd241356944e6b07cL,0x451c4cc9e1c7345dL,0x407444d8e273b9fbL,
|
|
0xfe496079b88e34fcL,0x77d184cff152776dL,0x6d1033b9c742299cL,
|
|
0x29a0a68477bf2897L,0x59ffdf10ee8f0420L,0x4e17146c44bb56d6L,
|
|
0x831d06c2fb9ae855L,0xb2cb82dbd93e7cd5L,0x83381c463c96b607L,
|
|
0x06aed2517549e2a8L,0xef97891c774a21d4L,0xae9807c78675fbddL,
|
|
0x6a5a05b96363516cL } },
|
|
/* 128 */
|
|
{ { 0x92e71ea66a8f4f33L,0xf2fc6fc64dea8f4aL,0xd356252cfee88461L,
|
|
0x59b0a83e08954d08L,0x5bd68c23468ab766L,0x40281357900f8d04L,
|
|
0x181c19c052b867aeL,0x986a516918764c41L,0xcb01dfae13575d24L,
|
|
0x17269ae5593677b7L,0xf6d1702546dc9b19L,0x8de68499c40097c8L,
|
|
0x76df0032259c407bL,0x4091aad917d29d8bL,0xa7f46d214a7ab5f6L,
|
|
0x688054b470ece48cL },
|
|
{ 0xf0d168aa51a5b86cL,0x2437e4d895777247L,0xae844076f1720329L,
|
|
0x0a7ac87d9647a54eL,0x1e597a4b0405622cL,0xedefe5c6f0a79f2fL,
|
|
0xaf3ef0c24d55156dL,0x917fb04eef047cf6L,0x3792799f54b62137L,
|
|
0x875ea32f314be0b8L,0xe157c65b0c466b0cL,0xd28c90ce7e218978L,
|
|
0xb90fc3bacde587afL,0xdd32d71c8b877bedL,0x3b432200ca8e10cdL,
|
|
0x0021f419d94f6e53L } },
|
|
/* 129 */
|
|
{ { 0x2191122c43519d26L,0xbdafac1d40a51845L,0xcc6f71e9548bb89fL,
|
|
0x9ef3375c16844bf9L,0xe7789f79178e8d55L,0x04f599b61f8be1c5L,
|
|
0x8088c99a2cbbde40L,0x8939a260893206c9L,0xa1ae4bfffcd30851L,
|
|
0x664cb3fee08feafeL,0x61f38099ff14aabcL,0x0d8394cc2a841ef9L,
|
|
0x75fad8ad17f01db6L,0x6fc345766debb773L,0x1e716b05a4252512L,
|
|
0x7985588029e1ed9fL },
|
|
{ 0xa2cb3aaa95106473L,0x95fafa415a61da04L,0xfd3c9362539563c0L,
|
|
0xbaa4809195312b87L,0x6c7e7582bf885c76L,0x70f6dab6230c78d5L,
|
|
0x8ce3051c7747440dL,0x6dbebd14ffdb6186L,0xb0e041fa190e4096L,
|
|
0xba10c4666ee62e2aL,0x93d57e2a74f333d6L,0x006aadc4fe7b9b66L,
|
|
0xfaf72f6c06d2837dL,0x318cc5e6910741eaL,0x9c50260965692477L,
|
|
0x95d823c31d0fb08dL } },
|
|
/* 130 */
|
|
{ { 0x6aeebd86140528a5L,0xf268c2ba53979bc8L,0xb1bc9b8a4ec144abL,
|
|
0x1efabb0d82a7d7edL,0xf12c70d14e0118d8L,0x31607168a1c1558eL,
|
|
0x33e428b7e4b7e73eL,0x6317663783aec9ddL,0x5172ffbee12ac35cL,
|
|
0x37df0bfbbc17b2a4L,0x4212f870741f812aL,0x3dcecbdbe2888f9cL,
|
|
0xa9dc15aa756ca55dL,0xf31918ecb9028e41L,0x7ede02856aeadb03L,
|
|
0x0e2708d578654f54L },
|
|
{ 0x2270cc53cde20f88L,0x9338272c5f5b1039L,0x5042e19e5dcb1dbfL,
|
|
0x4b3de219b72d74c1L,0x16c49a8b2aaaaa55L,0x008443e5bba86ba6L,
|
|
0xee6bcd7220cf1695L,0x59ffac6ba89abd11L,0x2831217bf115639dL,
|
|
0xe4d28af2f34cba52L,0xf27f03e70727a906L,0x6842c79f69017766L,
|
|
0xcb3469bd7a81123eL,0x48c0f346a42973b8L,0xfc5784a623990dbdL,
|
|
0x0d3dab3bfb299678L } },
|
|
/* 131 */
|
|
{ { 0x8f8376e6ce29c3ccL,0xcb0507ecf016cbc6L,0xdebff9965e394ce1L,
|
|
0x24fc526f73c50d41L,0x4edd5a542d16ce3dL,0xbb37bdd991c13141L,
|
|
0xe3442ef2e33a8606L,0x2ae90337c0629da8L,0x57faec64592ab331L,
|
|
0x1a938997d82b857bL,0xad6c8cb9a3373176L,0x82595de29086751fL,
|
|
0xa81e97fb18c17196L,0xe4f48a13bf697357L,0xa1387c2e5cb89f69L,
|
|
0x530b4eeb5874b426L },
|
|
{ 0xe9f275a1bab7b5aeL,0xbb69dc4d03a57bf4L,0xc974dc4aa45c505bL,
|
|
0x726369f3416ac402L,0x735e4e78aed985dcL,0x0548d879cdd446a1L,
|
|
0x84ceb0699e16b02aL,0xf73f6fa4789b11a6L,0x6aa0c41fb2a4e784L,
|
|
0xb1f7690293a9b697L,0x814cce00f03a8ab2L,0x64cb255b844d66c1L,
|
|
0xb794e7d630952201L,0xe052d4e43da32271L,0x5278b2e708b6a4d9L,
|
|
0x9094255280c6577fL } },
|
|
/* 132 */
|
|
{ { 0xd269a14d0d5b4c2fL,0x2b8fc59b5c8a649cL,0x95becb3ab0e37d4aL,
|
|
0xfda1a7689111037eL,0x5810e05a94e35322L,0xa24dcc12a178fafcL,
|
|
0x5c2c63b28e3dce62L,0x995c3f179452c444L,0x35330ec342d45161L,
|
|
0xa025a60ab4ef8129L,0x854932528bae9c13L,0x25d1a606e2e3caf8L,
|
|
0xd44091ab3649bf47L,0xc7d0afbf704ec5f1L,0x27bd1d62bd8b3333L,
|
|
0x50570111cfe616f5L },
|
|
{ 0xd0084acef534356bL,0x9df1de054b4b0fbcL,0x021afe05cee04dc1L,
|
|
0x64bde688361b78e1L,0xa324fcc7ef78d38bL,0xfeb372ceeb0a5e4eL,
|
|
0xef04fcb365811996L,0x7dce5d505eb0ab4eL,0x1e29b588238c586eL,
|
|
0xde5e3197bcd80037L,0x8bf5e4514806b9cfL,0x4330968bd18e67abL,
|
|
0x26a7d04ef9f63fadL,0xa1c7f123b5c18bb4L,0x485b848225dce22cL,
|
|
0x8ff0b36fd540e79fL } },
|
|
/* 133 */
|
|
{ { 0x99f2e2f43ff42cffL,0xa3c19f9d1c35317cL,0xdb749392aba1b545L,
|
|
0x84232b054afa9a32L,0x0b855d46d7dcd436L,0x8ac35e2045cf9915L,
|
|
0xd7cf22c7f001a218L,0x057d35aeed408305L,0x25a4a519553ccfcdL,
|
|
0x5e56579393e2b939L,0xa20332b03422ec27L,0x9b09005e3ac53958L,
|
|
0x628051a379e9b163L,0xb4a0dc09fc6618d6L,0x9e0e857f6748e7afL,
|
|
0x71b28eeec577d63eL },
|
|
{ 0x4942b0cd99726bf8L,0x1290a3b91c208f3cL,0xfd7290e7b0598eaaL,
|
|
0xc6a7791fa25a9128L,0x2d33db24c037d7daL,0xc21efeb070e2837bL,
|
|
0xbf70d96ee3dae2a0L,0x43ed819185076027L,0x4aeb0aa84d4ad7e3L,
|
|
0xbc75101fe8c5b74cL,0xdbfb2a6ead26ebddL,0xba8120686b78aa4eL,
|
|
0xc94aa8f2e1159848L,0x0d10d9db3eba5c4eL,0xce7fec476318295aL,
|
|
0x7294711a330d925aL } },
|
|
/* 134 */
|
|
{ { 0xfce4590432bbd495L,0x330f4dd1be54973fL,0x006bee1d5d9c3f4eL,
|
|
0x40ee607859ba7204L,0xc194fd3f42c2c768L,0xa0e76b12e9fe88beL,
|
|
0x17cddddbec2b0210L,0x689d436b00811ec7L,0xa6a6ba37284be9e4L,
|
|
0xabc395b2007d4114L,0xf8cdf9f30f11e744L,0xc5febec8e9396402L,
|
|
0x8a751743eeb46285L,0x99bf8782c6e0d137L,0x3965e170beb292e3L,
|
|
0x001c39d85801fd5fL },
|
|
{ 0xf4805cb9da4a0912L,0xd27cb76a4410bca4L,0xef3dcb8eec71d65bL,
|
|
0x780fbb2b4816849aL,0xef6a7026a8b24635L,0x15625c8812c44e68L,
|
|
0x624c232c4d7a74a8L,0x81a770374b1631e4L,0x04e4f7f1db917c2eL,
|
|
0x1d0465fd1f61ed95L,0xb1048049cbde6e3dL,0x637ce0c1d7131fcfL,
|
|
0x22e4dbc28ada4715L,0xf7530c5cace99726L,0xa0160dccee287450L,
|
|
0x9132e670bb91af13L } },
|
|
/* 135 */
|
|
{ { 0x8057efe27996099dL,0xb72344dba06e608cL,0xeb4a8740d0958588L,
|
|
0xe53daf0679e5aee9L,0xc9560a9a908a2fadL,0x7f4be131107e706aL,
|
|
0x6d5f3d9b2830246aL,0xa5f8e8da27cca3e6L,0xeb51dca64c28f292L,
|
|
0x4cfa310ef31dfd78L,0x92e0c7c22ca073e5L,0x102f1694a40da683L,
|
|
0x16bb07cc750d38fcL,0x703e83e2badae035L,0xea93c066b4d3c9ddL,
|
|
0x7d0b03e579940ed1L },
|
|
{ 0x5fe7ea304dd94c63L,0x57ef01c5738b0b3aL,0x9534a78ca14e6b4bL,
|
|
0x07622cdea5353276L,0xaf696a077c22d006L,0x733c18867d46b209L,
|
|
0x9654ccbb626c2b4aL,0xa098d3a1a84f3c4cL,0x3596f9ed2d734b74L,
|
|
0xdfd3021a5d551c90L,0xe2ba7d2f1ec5123fL,0xf9726925b2c1aa39L,
|
|
0xd2e75d0ef8eb2927L,0xfaba712e19192a6fL,0xa606b43a9b83e50eL,
|
|
0x31b1782fdab5de60L } },
|
|
/* 136 */
|
|
{ { 0x878dba454034db92L,0xa39779018f34dc4dL,0x8d004f2edf754c33L,
|
|
0xeaa5954acd563a88L,0xa29d6c89bb5ffad1L,0xa8adf655b0d8bdb8L,
|
|
0xf7fb842d8cdbdb47L,0xb72e3a0380d3205bL,0xc335b0b27cac7ca9L,
|
|
0xffc60bcbd8a5475dL,0x736f7719eba4d25fL,0x3d901c380c50fca6L,
|
|
0x1fdacf7b80c01900L,0x75cf658f5681f84dL,0x57a7e6345cefbbc1L,
|
|
0x6fc0fbe53e07ed1fL },
|
|
{ 0x496d116bb81b0e5fL,0xd82dd2a52ac853b8L,0x357e22d4327387f0L,
|
|
0x3e332a84ba912c59L,0x8b71c64349d5dcc1L,0x0c982ee9438d85d3L,
|
|
0x90b9553cbf7fcd4eL,0x2cb39bbc38fed5e3L,0xa2c67c9c5ac42903L,
|
|
0xebf21217bf07da55L,0x55ac05ada0b9e4eeL,0x10bb12c28ee9e0c6L,
|
|
0x5cf3aee548bb6e3fL,0x4ae7269c8b046e91L,0xcb266012aa0e553fL,
|
|
0x701935a1a94c8fc8L } },
|
|
/* 137 */
|
|
{ { 0xde58d41da4626deaL,0x25ef66ca15b9039fL,0x99a810a43164e65bL,
|
|
0x9fe6daad748cfccfL,0x7ab9a6bd2f142fa9L,0xa4cba1685d471796L,
|
|
0x12d30b366bc3a39bL,0x1f46a5dc8bf45076L,0xb868e5291421ac0eL,
|
|
0x7a68620659bba1c4L,0x2b4b552eda698b90L,0x5039dcd4e5453707L,
|
|
0x42a07a9e9e90165fL,0xa838fff3d7d45dfcL,0x41991e5a3b5ceb30L,
|
|
0x6c961ec8969ca600L },
|
|
{ 0x703bdc1bc4e7eb46L,0xd6bac557596c7b48L,0x4f9917cd66afd74dL,
|
|
0x56355105656ce6f3L,0x3d1fb50c32497175L,0xfda6783e63effb2dL,
|
|
0xbd79f1f3eefaa2bdL,0xa4efbe5417af9ef7L,0x6cef64625a55b7a4L,
|
|
0x116f32381a713304L,0xdb2a2a7fb95625a3L,0x6a0aa43a0b027e96L,
|
|
0x458fe5d24832b3bcL,0x523418df5adfaac0L,0xc05a89cbc49e7f9aL,
|
|
0x830883d869e24b53L } },
|
|
/* 138 */
|
|
{ { 0x959b1c6202557389L,0x5fe5ce97adefc0bcL,0x893bbe7f8330f383L,
|
|
0x27e0c6af16cfb81eL,0x6f64e65bd04428fdL,0x53de9245b79e6182L,
|
|
0x08a313c1487e11caL,0x65cec3b9445bce93L,0x33bc0314d67ed49eL,
|
|
0x69f36b2430782352L,0xd78e5daf93ad31d2L,0xf2682b70c780890cL,
|
|
0x7015c34f9e45efe9L,0x135d4ba4e6cbafeaL,0x43a378a47e3fcc6cL,
|
|
0x2376f97f96638f8cL },
|
|
{ 0x0a6e1ec0ae575b99L,0x7e14cb4f81b970dcL,0xf00a3824d3a73947L,
|
|
0x0b4b9c81fb235a9dL,0x8d15115f5bf62944L,0xcfd35b431e165d7aL,
|
|
0x5d12fea2b2ee3e3bL,0x629984a6f5182e7bL,0x4e43e2f3c365d08eL,
|
|
0x9932709130f36e72L,0x698b4a00fd345401L,0x23c4fd0ebaf96dceL,
|
|
0xa60ba0ae23675554L,0x51bdac2db0325784L,0x8ab4190a215464a1L,
|
|
0x8c4616616bf10296L } },
|
|
/* 139 */
|
|
{ { 0xeffca2582d1f36a5L,0x0eded2b2894c5f2dL,0x35a5cdb843ced84fL,
|
|
0x290f8982db0e3b9bL,0xcce0eaf00719a112L,0xd0e657e439a362d6L,
|
|
0x5516a55d62697e47L,0x269e1f778e636514L,0x5e3dedcbd50269bcL,
|
|
0xecec2300441c57c5L,0xdb83f31cc705578dL,0x1bdefb731e489eabL,
|
|
0x20b678cf395fcdb4L,0x908cf91cff9db001L,0xcbebc6f455f52cc8L,
|
|
0x155ea622b4c61162L },
|
|
{ 0x94be2f1f876fa42eL,0xab5e87497fadeee7L,0x692e70f538c865afL,
|
|
0x16e99b84df8059b0L,0x0ceb606e8b5a7ac9L,0xced233572d463d2bL,
|
|
0x2d0f26232a9a09a0L,0x2529998c3861fbdfL,0x711888a7c1be310bL,
|
|
0x9b1229c50d8aade3L,0xdbcf9b783b13533dL,0x3ca746f8ff029708L,
|
|
0xa5a013a1da83ef88L,0x8e904d184ab28444L,0x2fe84b3dbcbd4abaL,
|
|
0x8f570f24259058c3L } },
|
|
/* 140 */
|
|
{ { 0xdeb66c8a2ca9c508L,0x2dc5bec269d6b780L,0x16d6126688ead600L,
|
|
0x61841b9749d72614L,0x41e40e6cce472e6fL,0xada242641fa7a876L,
|
|
0x45b9fd33cc3997a0L,0xb25e8fa97c15dcf4L,0x0124ceb212e9629dL,
|
|
0x3a8c72c67db3d956L,0x8e2ded2b7c1a7844L,0x94ab09c66dd027ffL,
|
|
0xf89a057d7e7a2bc6L,0xad8bf226cf70c763L,0x4cb268e7c8a26212L,
|
|
0x3d171e87b2c44c1dL },
|
|
{ 0x382ac16e8ce49820L,0x24ee45e2c0c44dc9L,0x0ec6791273e858c4L,
|
|
0x918cb25c46327cf9L,0x43e3876bc6159c1fL,0xb6b6e0e037545cb3L,
|
|
0x64b839ab5d12347eL,0x72e09274a300d541L,0x26ab28e6881c1169L,
|
|
0x4a580fffeb75a843L,0x0a5802ca359120dfL,0x7fee82d03209f4a3L,
|
|
0xb518016b8e6a9380L,0xb99c6c70c2ee11caL,0x16105af1ab9d4ec7L,
|
|
0x234e98f834cd9004L } },
|
|
/* 141 */
|
|
{ { 0xff43520814db9cdaL,0x99cfdc4796adec90L,0x843aaa6faf458b6dL,
|
|
0x3f1f7415743eaa31L,0x915e192e61735d81L,0x3441a22d0ac595d5L,
|
|
0x704bbf67c044bc8dL,0x2f960471be23a236L,0xcc32638815d1d557L,
|
|
0x9410230b76b1dd94L,0xf2e5439f0c1c8a67L,0x56b141ac833c910dL,
|
|
0x467c999f865b84dfL,0x1b0251fa21f02b7bL,0xde5b526096216950L,
|
|
0x6a2130e3ce3a1e93L },
|
|
{ 0xd21b67a04b3ca1a7L,0xaf42ed5300c0ce80L,0x22ccd368932cf07aL,
|
|
0x36523a815c25c35aL,0xecdd39588dd04d06L,0x73da3502b2f93a3bL,
|
|
0x4c5e0c3cd5e5b530L,0xef9f548613268777L,0xed87fefc1e742292L,
|
|
0x6d9ac29ea24e5edeL,0x08abc9f033849f1aL,0xb09b229240f23905L,
|
|
0x6791072c7f934353L,0x102a6381e6aeb550L,0x3ee0740996feb870L,
|
|
0x34f06faa9c4d2830L } },
|
|
/* 142 */
|
|
{ { 0x869dc79f2348f005L,0x9b5c5d71df4920b1L,0xfd1b57ca6dee64a4L,
|
|
0x21b7f734e82a4fb4L,0x637cb834b9578366L,0xc934101b7d287d96L,
|
|
0x1590f8ac0392ecabL,0x280dc3737f75f4e3L,0x8b36f50f6a61ac62L,
|
|
0x74f58304a65568daL,0x80d792a9d930870aL,0x6d17b192fc8895ccL,
|
|
0x498392fa4914939fL,0xaf36027dd41d5b9eL,0x452d79e25caa82b5L,
|
|
0x764d47b1f4115d1aL },
|
|
{ 0x5df22303a2ee8b9cL,0x1b9f72d385dfcd48L,0x6b42b98310813a37L,
|
|
0xe28c523b3de741f5L,0x0857625af303bb5bL,0x926f299aac9bf9afL,
|
|
0x21beac080d445b34L,0x6a523a02d6ba2c0eL,0xe302a1b17fce2864L,
|
|
0x4516a235e300c1eaL,0x4543736a7b4a9311L,0xd3c0b9e8c0cc89f7L,
|
|
0x0481904f40ed88deL,0x4f269b563cb7fc70L,0x09a1d53a321b9738L,
|
|
0x1c0dd9c3230a3810L } },
|
|
/* 143 */
|
|
{ { 0xffaa1f67c46a7d9aL,0x64743334bedf91ccL,0x45833a7447a42f2eL,
|
|
0x67980051241ffaa9L,0x70979a84335efe6bL,0x5f0613f5f08b2403L,
|
|
0x6bb22fcd64f211dcL,0xe1b8b2a3a0572cfcL,0x19e0eb417950a14aL,
|
|
0xe634bb293eb6cd4cL,0x31a04b25470a25ffL,0xa41f7ac9a3d15a0aL,
|
|
0xefed85ecbf2fede9L,0x1f581f5f81b94a00L,0xaa3996b09ef4a15cL,
|
|
0x52d8be39b06041bcL },
|
|
{ 0xbd1536f6fd631a2fL,0x91fae7f0b351a8dcL,0xd1a590c79b126212L,
|
|
0x52d4875f2bd0f435L,0x9aedb6d392b0ea70L,0x0bd0abdcb83ab89eL,
|
|
0x827a106289fe192cL,0x6566a960102a0bdaL,0xda083037ce036814L,
|
|
0x30bed79f58639405L,0x972019b6dbca8df9L,0x89201286efdaa3f5L,
|
|
0xb337b9965236b892L,0x11d3e38e28fc2e73L,0x70787f41880e8da3L,
|
|
0x6cff6367dae4a45dL } },
|
|
/* 144 */
|
|
{ { 0xbd3d0433f89a8bb4L,0x42144c3393b98f71L,0x82b616c803470a2dL,
|
|
0x98fcc757e5da089eL,0x542354ef7bf5fda6L,0x1885c2539ebd34ccL,
|
|
0x2e20b285bec5dd0dL,0xe71bbbe1782a1bcaL,0x959ded309b854ef0L,
|
|
0x172499798997fa6aL,0x50cf8fa8d81f3c45L,0xa9a3b51760c11152L,
|
|
0xc9b0ef7decf845eaL,0xc9339e23b9fed11bL,0xc93e9c5c28256080L,
|
|
0x1d2c8217613ec1e7L },
|
|
{ 0x7381347d987cfc93L,0x047603bbf187f810L,0x3fa6bc9d1250ca31L,
|
|
0x480091e0bb055bf3L,0xbdf95f1a3a3af87cL,0xe2687770140540abL,
|
|
0x998df730d7fe045bL,0xb398135fb723bc2dL,0xac230f8c15ebec46L,
|
|
0xe08e18305f5561c0L,0x7c0fbf4cda60a47fL,0x06e95c24e16d4bfcL,
|
|
0x7416349574617e92L,0x397198694ae0c20eL,0xfe2693122131e2b6L,
|
|
0x25486e360a537722L } },
|
|
/* 145 */
|
|
{ { 0x618795ca53572806L,0xb2c89449656968e1L,0x149c2c973fb323aeL,
|
|
0xfb15de26409bc7d6L,0xa90cda72c79121b3L,0x6d2fa14e204cabbbL,
|
|
0xcbcda6f791604125L,0x25086261b435f947L,0xdb686c38c282eb10L,
|
|
0x51016d62f1a791cbL,0x6b1c7ed161a2266cL,0x26780666271d74a6L,
|
|
0xb5ffeda1824287a4L,0xcbe503ffbbe4f0f3L,0xd7f7f0beb9482a74L,
|
|
0x751b2358088493f1L },
|
|
{ 0xd597b9d6e9c9be68L,0x1794b5c467d10c6cL,0xa88cdc3d7762b2f4L,
|
|
0x6d94a63aa1b44e11L,0xfb0bbbb9aaa8eca8L,0xf4b0f2d0c963d87fL,
|
|
0xb753062c5dc7075dL,0xfed726ac49933989L,0x5da6063857f9ccdeL,
|
|
0x221c392a75f8c766L,0xcd264d955dc672caL,0x7004ff22b66ecc8dL,
|
|
0xfb1aa9ae18a458baL,0xea9644df8babd653L,0xa9378e802ba0de7cL,
|
|
0x144cc12dca2c6c75L } },
|
|
/* 146 */
|
|
{ { 0x593a0a1d2989aa3aL,0xd83f228359e6e64dL,0xe938b0cbd32e732eL,
|
|
0xf4c464c53c3cb249L,0x9750a5f8f89ea6acL,0x467e5bbf346cfc32L,
|
|
0xc9bfab9d37b2b809L,0xf8eb74533b339c6dL,0x3fe01fbe3b766deeL,
|
|
0xb3154254ef6aea27L,0x555c3df27be61b10L,0x70fb6d81dd818488L,
|
|
0xda1af3a4bbe714f9L,0x575f20179d18f693L,0xdc08fc6b2465b839L,
|
|
0x874ecf336b84a951L },
|
|
{ 0x624af83ebbb3f6beL,0xf578fbb908bb423dL,0x5623b0bad7873527L,
|
|
0xc3659bd8a62e0442L,0x2903b167fe236f79L,0x55a430c6e53f26a6L,
|
|
0x222547ae3ad712cfL,0xb73890d776eb272bL,0x95b4f70b3d628df9L,
|
|
0x9f0e13b053eae4acL,0x5b4f5138e7f2174eL,0x75482cf998dbae17L,
|
|
0x2b69bbde44518480L,0x4f279652cafef15cL,0xa0a3ef2bb6bcaf19L,
|
|
0x31fb8581ce4c634fL } },
|
|
/* 147 */
|
|
{ { 0x398306d1615cd607L,0x680c9faaaa32c3a6L,0xe87a705b7779131dL,
|
|
0x1031013a36708b00L,0x814fa0e19445297fL,0x70c5583aa6a79b56L,
|
|
0x03039cbf4b16bed4L,0x18a7ca8daaaaf8d3L,0xf33159e75cdb68a5L,
|
|
0xdea0e738d23814faL,0xeb3527188d0f4f9fL,0xb0b76609dcdff032L,
|
|
0x65ba8ea93d48338bL,0x18044d8255dd507aL,0x844a223e4a4a50b4L,
|
|
0x9832300018e19e54L },
|
|
{ 0x28a2102757f3d5a6L,0xffce56486e8cadcdL,0x9590381b02551f3bL,
|
|
0xb26cc64f935ebdf1L,0x60611291c083aa6eL,0xcd988a6688e4cf41L,
|
|
0x581c3f73dd53b1b5L,0x78c804a977fc621dL,0x31874330fadca2faL,
|
|
0xf7008da4c83ccf02L,0xc4122a1da79a4707L,0x9a8e0d3f4a915eb5L,
|
|
0xa2de157dd0123660L,0x45ef43b265ead2a0L,0xd0a22ade188db285L,
|
|
0x8abbe39e922e0caaL } },
|
|
/* 148 */
|
|
{ { 0xb44469053a2d2f01L,0xd27c31935dc6685cL,0x6a908bbf1d74a027L,
|
|
0x01da350f5b50ec1dL,0x1d3dd45e3f3c2e26L,0xf66e11d0b836ee92L,
|
|
0x7e03908f474b979cL,0x19e7c5b998b87834L,0xa741d3febd3d1de9L,
|
|
0x63c68e8d1ef6059bL,0x9b9ff9393674e247L,0x1d7d53e73e7e67f6L,
|
|
0x698dc326aee9e248L,0x52f23edab3bd984cL,0xf95e31b06f8fe8a7L,
|
|
0x0f15b4d0c3d0ba95L },
|
|
{ 0x8f2f6635790a8d85L,0x51bffbaee2595af1L,0xd15b7ec624b51287L,
|
|
0x7639b6ab3234715dL,0x0cdd52992bc5441dL,0x54800ea4f6d05833L,
|
|
0x21efd752f6d6e360L,0xc0b7ffe519290613L,0xb68a5825eea898cdL,
|
|
0xecedba9222982266L,0x678a91b0bbd06bb2L,0xb2436dc04bb6b0cbL,
|
|
0xcf7a99e7caf8ea98L,0xb92d0e6e71aa05bbL,0xbf8d0471f5993eb1L,
|
|
0x515db37820385ddbL } },
|
|
/* 149 */
|
|
{ { 0xee43eaaa6f5bef22L,0x952d269820348712L,0x1e4c484e7a3af6c6L,
|
|
0x18d434c69a8c9403L,0x63e5d7415001899aL,0x5238dbbcfe8ea40cL,
|
|
0xca6cc8d296798721L,0x73db6aee04acbde8L,0xbf69328db7f993ceL,
|
|
0xa3f79bbfad45e334L,0x8c51ec937c1f1630L,0x4907325f9b00a6deL,
|
|
0x49e6acb412d82bc3L,0x5901b36d0ec59fc9L,0xcb09b7109cf34e3bL,
|
|
0x2de0487e1abf4c02L },
|
|
{ 0x18b722f38dd9d484L,0x833493937c77baccL,0x58dbb8f193d92b8aL,
|
|
0x80d78d508e3fac25L,0xf0500981745f4a7dL,0xd072bfed877cc29dL,
|
|
0x67abf8f2c30a89f8L,0x92c567ea9a0820d7L,0x425ab12e8a3a5738L,
|
|
0xc162faebf055521bL,0xee1c4f26b94ea5e9L,0x1e4149943d71e546L,
|
|
0x258183b843e8be1dL,0x44917c82ef9eae0bL,0x6813a45773874a30L,
|
|
0x6f6ac071cc42f86eL } },
|
|
/* 150 */
|
|
{ { 0xd38822ad4dd6e3b1L,0xfc78e1ccad620869L,0xe78438452cacde80L,
|
|
0x121cc14aa8469fe3L,0x8e8f3da7e67e8ef2L,0xdb83d16e4d347448L,
|
|
0x3ba1dd98798631f4L,0xdfab59770a4c4c17L,0x1f0a13063edc701fL,
|
|
0x4649d6016cd8ff28L,0x2267230bbcc55bc9L,0x02a19c605760412aL,
|
|
0xc719d5f1328faef6L,0x27cb969ef67eaad9L,0xf342530e719bafb5L,
|
|
0x6e2c24ccff5a82cbL },
|
|
{ 0x6313024badaf8793L,0x944bccf1035c948eL,0xe9a066b7953500bfL,
|
|
0x7991a9461d116765L,0x95addb2e9fd93c78L,0x05d2c037e92e5495L,
|
|
0xcb145b189f03e5cfL,0x81ae48ca95aa1f72L,0x203f2702135a6e4fL,
|
|
0x2bcef5a249b2a7d5L,0x0687a90002d7f2a3L,0x2f7d32286c6745b0L,
|
|
0x3da8a87586507305L,0xbe38b8842e8dc58fL,0x6b48bf34dbf11185L,
|
|
0x5af7fd0d97c08f91L } },
|
|
/* 151 */
|
|
{ { 0x55f9b950f4a224a5L,0x41904574cc50273aL,0x34f81330643f1fd5L,
|
|
0x996801bb0e50f783L,0x866d740389581712L,0xdb9a405da4091d36L,
|
|
0xf1e379df16a46fe7L,0x8d04a93f83bf9168L,0xae4c833532b20bcaL,
|
|
0x99d334b1f72a1c10L,0x8fbc9977d8195db4L,0xcaeb3dfffba14b5dL,
|
|
0x60fef02276daf476L,0x4b948dfedb5b72f4L,0x5185c925b6dfb062L,
|
|
0x27a9c3819609d4aeL },
|
|
{ 0x73c37346f12a93afL,0x028b707c5536634dL,0x8efa58d5498193d1L,
|
|
0x4f83a5ccef21b69dL,0x05cbb0a3a788a0e2L,0x0103178165b13c98L,
|
|
0xfea20e582b73784cL,0xdf9713a0e50361f2L,0x31449a0fd0cc22d9L,
|
|
0x183752e77c5e2e1bL,0x6e44d6bdb67044cfL,0x012dde95733e177aL,
|
|
0x68b4966908ee2c23L,0xd9bb05411f5f1949L,0x95182c716acd886fL,
|
|
0x1c690694fbde9244L } },
|
|
/* 152 */
|
|
{ { 0x5db67d173a880026L,0x89c4f0a0125d95f2L,0x290505513f6cb7a4L,
|
|
0x3eb231d15cbbdca5L,0xf8cffc99972bcbd3L,0xcb4ef4d4ad55a03aL,
|
|
0x944d47ca22867c2fL,0x96d885480ead1aa5L,0x76a57cf8cbc8b045L,
|
|
0xdfe5844b005e55a0L,0x5e9e7e191d18a097L,0x957a26e852923c74L,
|
|
0xd0867b797f5db339L,0x2553408e63bed0c8L,0x1596e5d5689ad23cL,
|
|
0x7b8c13d6a504c339L },
|
|
{ 0x2fc43aad52fb6901L,0x1c0313f916ca253bL,0x1475830a515aadc6L,
|
|
0xc93d19267f577dc2L,0x26e52e8ef723c0ddL,0x2f1e0eb83eb9f6daL,
|
|
0x9979de82f180376dL,0x43e28ecbb0834939L,0x9a2d51dca39c38e7L,
|
|
0x6e6063a9a8e3f6b5L,0x4cf1da3a4b9b3270L,0x6e5348a2d2f8915dL,
|
|
0x5e75e3e050507912L,0xaeffce5720d383faL,0x1d6d53cc8fd2fb29L,
|
|
0x0e3c3ef6696f4cd0L } },
|
|
/* 153 */
|
|
{ { 0x3bc337c121ee1d83L,0x97e08f6d787b7788L,0xbf709fcc138fa4ceL,
|
|
0xbaf77647a0348e58L,0x04f8babca55e672dL,0x0ed2919d7d5ec5ddL,
|
|
0x8ce64bff33e99218L,0xac09fc5724b059afL,0x506831f9dc5e32baL,
|
|
0x26a22677465af6a9L,0x3c5efe66c97f1ff8L,0x1515e0d6bc6087fdL,
|
|
0xb1a39c5eaa8edc6bL,0x3dd816bb0e79ed29L,0x6cc13769bc3788b8L,
|
|
0x463098e3c092a51cL },
|
|
{ 0x3a6408c7c8bd0fa7L,0xd1764311ce6bde49L,0xe315e108283ef7beL,
|
|
0x8213cc7799b5d938L,0xaf7f158145a49a6bL,0xd00fdb0fe529e4d1L,
|
|
0x55d38f77ce66c9d6L,0xb4f7ccc01bd4b952L,0x8d975b49af71f986L,
|
|
0x12b59fcbcd64d00aL,0x1860e504a5a3bad7L,0x6d9760442b5c89f1L,
|
|
0xfed0c6597a3e231fL,0x58114c33178cba92L,0xe2e74c066698e11eL,
|
|
0x7f8fd093a348b85aL } },
|
|
/* 154 */
|
|
{ { 0xf24592cac19428afL,0x192a1c813a308665L,0x42589812e30bbd7fL,
|
|
0x10db0723836c6bb9L,0x9c7a41e9598e4987L,0x8aff179e6ead6f4bL,
|
|
0x70f8f9b975862c44L,0x6b3b02376f21983eL,0x25d83e9b98e65152L,
|
|
0x3b2d26a8d751218aL,0x9508281a9d6f1da6L,0x8df78d05a5a81f74L,
|
|
0xd79ee559e4687471L,0x2060ca576787d8ccL,0x427a84ffa8476c95L,
|
|
0x87b64c51e6435131L },
|
|
{ 0x87f46f654b30d3c4L,0xcdec4c5c23b4ef14L,0xb3b7476663ca4d68L,
|
|
0x1df34269cf3fb56dL,0xd4f139c40fd7d46aL,0xa3b7c7c76a69a8bdL,
|
|
0xee56b4c9cbadd7d2L,0xb28ff342ac942334L,0x0046fdfa786f1da3L,
|
|
0xce5d149cb700c82eL,0xca30ef8150966597L,0x44a20609fcff4bddL,
|
|
0x0f2f65e744925268L,0xe5b6552cd4021f38L,0x77ea9c2a042dbbd0L,
|
|
0x8c95267cd9c062f5L } },
|
|
/* 155 */
|
|
{ { 0x6655032e5fc1abb1L,0x2215af5412fe4743L,0xfd65756029f05ef5L,
|
|
0xb0e73325dc191be9L,0x7ab3c65ec08639b0L,0x67507f511c3e6673L,
|
|
0x638befc3c8615555L,0x5d0188cf42f0c4adL,0x843a301cd896186dL,
|
|
0x045603f7b2c6741eL,0xf7545c0cfa3cd1d0L,0xf612affd4a40672eL,
|
|
0x56197c9f45b9e8ddL,0xb453237d87922d74L,0xbf132e3a4b2d59bfL,
|
|
0x8afa1b73b84a6a16L },
|
|
{ 0x6b3596eae793ac70L,0x4c94ef8eeef6dd10L,0x926b4fa270422e40L,
|
|
0xc8c71dcee9e5d763L,0x352fcb70f512aadfL,0x1b7ba138a883975fL,
|
|
0x57991390058c3b13L,0x9692092a97740fd1L,0x19ad945b160b0697L,
|
|
0xbc63438810837ab2L,0x76ee11c4f174bb71L,0x6111bfc1ab1b80ebL,
|
|
0xbc82bac870ec458aL,0xeee60127312d3325L,0xb4118b1ab240adc8L,
|
|
0x672111912b5a093cL } },
|
|
/* 156 */
|
|
{ { 0x91e99306f55cf9bfL,0x9b045308a46b96d9L,0xae3c1e1d9e7a65dfL,
|
|
0x453cb151c731bcbbL,0x14be5227a4d58a61L,0x39dac92297c74cc2L,
|
|
0x4d0f7a45822e00d6L,0xafeb1d51c62b03dfL,0xbb1dc3a4baa18b2dL,
|
|
0x7f3c7178df2b74f0L,0xfcd328a6896b6a33L,0xe95ed4541dce055fL,
|
|
0x97fbc76b6a4e2b87L,0xe5ec67f1fa59dce9L,0x052368accc0367c1L,
|
|
0x7c86391654e4a3feL },
|
|
{ 0x55e94b5eca7388cfL,0x17cc0a60c0335d38L,0x9b69b78b616f85baL,
|
|
0x705d02ef10122980L,0x565a6e801cfd0a79L,0xeb74a96d7d1ee352L,
|
|
0x5c8832ed427b9dadL,0x96ea8528e6d5330fL,0x30d8862b18d24ee8L,
|
|
0x9cd38ed59ff939f7L,0x690fc9a201060252L,0xc62d88b82303b3ffL,
|
|
0xfc42d7a4dd52b469L,0x06f8dfa28cad2d93L,0x5023609060920438L,
|
|
0x32582758fce855adL } },
|
|
/* 157 */
|
|
{ { 0xeb20e45f359e8c60L,0xc71bb8a5364ca186L,0x02b15071dff8e110L,
|
|
0x074e91d34c93e578L,0xc0326e00b829d0d8L,0x3c192258626a83faL,
|
|
0x387a64d5fb29a09eL,0xcaaa3d34e5ac5c82L,0x8ed685e5ada2da29L,
|
|
0x92720267eb29650eL,0xf7184b19763802f3L,0x23f5dd0edf6b1aeaL,
|
|
0xbe1fa34725e6125dL,0xd6287f9d0c872a1aL,0x49aa93d2ac57c3afL,
|
|
0x1a4e6a715bda7656L },
|
|
{ 0x1a126ede554d1267L,0x37f945331cd02b48L,0xd70af04cce31fb1dL,
|
|
0xcf410b0b097dc012L,0x930e1d1736c7b6c5L,0x902fee41c6891085L,
|
|
0x349ba4a779fb638fL,0xa16c5821acd6f8dfL,0xfb3b83c12e076aceL,
|
|
0x6b8d033be501d14dL,0x0593d45220f2d2daL,0x3752526d99df1880L,
|
|
0xca32351c9feb33a6L,0xd91343bc1f6ef456L,0xc74857db35b9dc8aL,
|
|
0x856a7c9385b4e832L } },
|
|
/* 158 */
|
|
{ { 0xa007d0020d0a5583L,0x2f1301ddeda4658aL,0x91c0796434d939beL,
|
|
0xa0cb6780a70c0836L,0xc0b4df95be81e540L,0x6cbbcd345d4ac8b8L,
|
|
0x57c52ed054756239L,0xcac2dca41805ceb6L,0x915ee6ab79344255L,
|
|
0x366def3124c9a2a6L,0xbd3b962f8c12c674L,0xaab64f1b7dbb7c3bL,
|
|
0x3c0e4553e22bb95bL,0x2408febac4c63b74L,0x3ca773122a4da631L,
|
|
0x62889084c636da40L },
|
|
{ 0xa457fd538cb8d208L,0x7a8f8009543f06d4L,0xb66de154f2eff2abL,
|
|
0xfddb28ebf72517e7L,0x0149fe66f9389d2cL,0x79e8773fd85b88ceL,
|
|
0x452e090b0ba543f7L,0xdeb9b5cfb0b03fc0L,0x3113448a6c5ed77bL,
|
|
0x3609f3cf8ffc0372L,0x2bc9c46d5c1b4c4aL,0xe66f3bf38fa59be9L,
|
|
0x1396bf5fcdb02691L,0xf1ec59d4009f88f9L,0xc29034562ad9dfe3L,
|
|
0x79d8122c5ada4d58L } },
|
|
/* 159 */
|
|
{ { 0x14d4e4ceaa529507L,0x056a081474655d00L,0xc0d30a384f0fc474L,
|
|
0x8a8203ea3443cb8eL,0x33c62fb097f1728dL,0x8a38dcfdb520ef52L,
|
|
0xa0f90d5d7cac9d3eL,0x28a7b0bf873cea50L,0xd115ae3a6c6c41cbL,
|
|
0xa35171daa13812c1L,0x25d4bba5624d507eL,0x91dad2897e98f42fL,
|
|
0xffd6b1e996a41371L,0xd46c2125b69e5b77L,0xc7d2b42420c4f707L,
|
|
0x2ab3af958142557aL },
|
|
{ 0x86ca074c6a5372a6L,0x728fb83e56292ba7L,0x745596dc77741cf5L,
|
|
0x70b4cea1520ef49dL,0x1472fe3461e46472L,0xf4d6bd663fb8ac5dL,
|
|
0x46e52cc9c10bc071L,0x28794efe371a3461L,0xa4850718276fe877L,
|
|
0xedad57739bef5ab4L,0x24c2d9ff3f15c815L,0x188950e58f8395c3L,
|
|
0xbae4099680b6a855L,0x4f53e22c8a8803e1L,0xaf233f61039d25eeL,
|
|
0x07db2c35250409caL } },
|
|
/* 160 */
|
|
{ { 0xc7f3b8db037d4703L,0xe83708dfc5f488b9L,0x1fba830f8471d402L,
|
|
0xa55ee8d25a2faae9L,0xc2e5bf105404fc1eL,0x647d5027aa2d5651L,
|
|
0x37a53c0c7ebaf5f9L,0x7adf0bb295b30abfL,0x5a62e1fed64c93baL,
|
|
0x7ffc18c0e2ef4a78L,0x139dd9d94d2cd04fL,0x253fbab75ea0af02L,
|
|
0x7c8100ea0fef9acfL,0x74c5384dc8615aa7L,0xcb28682d9fe52069L,
|
|
0x08b6ca8fcf7dd759L },
|
|
{ 0xe04e5bea036c3b5aL,0x387261027f9f2b4bL,0xa9fca57029797c0fL,
|
|
0x1656180b82879ea3L,0x153389bb607f0ddfL,0x99a1223c67b0e087L,
|
|
0x0d1808ec9d897fc7L,0x9470711a916edf19L,0xf8f52f2b07217118L,
|
|
0x5d8b29ffd18888b6L,0xef1e22c54cc6f900L,0xc4036165eb24877fL,
|
|
0xfda9523335479525L,0xd622a4216861468aL,0x5d043b0774faba08L,
|
|
0x2c337b020d31a7d2L } },
|
|
/* 161 */
|
|
{ { 0x7b2305bcea22fa65L,0xbe183ef4d159f63aL,0x3473d87d3f35923fL,
|
|
0xb27fb306c11d7753L,0x702e7e6b2a054cffL,0x3ce9f97caf185619L,
|
|
0x835502434e7d51c5L,0xa63e3d82f356ac5bL,0x867b7caad7645131L,
|
|
0xee85e6afa671fc9dL,0x3b985ede2b07cd77L,0x07d598b0ffda5193L,
|
|
0xb10eca39a942dc36L,0x17f3dcee506218a9L,0x3d94e8d106b7d5caL,
|
|
0x509b2634ed8831c9L },
|
|
{ 0xb1b9414e48caed54L,0x77a78c6ccbf51e97L,0xa4688c8d4de9b258L,
|
|
0x0024137c91ee3d78L,0xa68f9234e30ee64cL,0x573255bc88190d78L,
|
|
0x41e8e05fba80690bL,0x50038d84ec354f4cL,0xb18f02d6dfa52816L,
|
|
0xc47f9007ccb63fdaL,0x29d480fbe98ae455L,0x4ac45d225d0e319dL,
|
|
0xd06f3575026db719L,0x733b9e202c3587b9L,0x224839922c317727L,
|
|
0x1592d5a754bb8752L } },
|
|
/* 162 */
|
|
{ { 0x5778d9a2cf7453f0L,0xaffb899aed83c1f0L,0xae6506d3e0a82ba7L,
|
|
0x32c84e1aea3d5081L,0x9ad528c0810aa38bL,0xb1fdb020bd37d041L,
|
|
0x78d6cbe1d06ce41fL,0xd287f0f02e74b7f6L,0xf5cd2575c43bb022L,
|
|
0x6d28f2f3f81a71b3L,0xe65bb1f5c633e7f4L,0x32e5fc1cc4fc580eL,
|
|
0xcd55539fbb7b07a5L,0xb5a94471c3caaf3aL,0xb958bdf44cc22d2dL,
|
|
0x1614bdbd77a2777cL },
|
|
{ 0x4c1f0230ed0ab04dL,0xae347b006e2082eaL,0x9f10bc63c42c5b5fL,
|
|
0xb0539e6fde019935L,0xd89bd4e765dd0825L,0x92260fefbbceda16L,
|
|
0x8aaa755ce62aca32L,0xed762fa95ec82c5fL,0x99e64c0118650768L,
|
|
0x57dd6245c92e348cL,0x0db88a7731ea6d68L,0xef0012ab07b44736L,
|
|
0xb9356b94171d70feL,0xe68b062803f891b0L,0x3a54a53ab79c20a2L,
|
|
0x489656c7b00b0728L } },
|
|
/* 163 */
|
|
{ { 0xe43649ba71353c25L,0x517f27a113f67e24L,0x10bd333a1c1eb9e3L,
|
|
0x94e1c05c78e29bf9L,0x84fe7d974743f15dL,0x9c87490890da2df0L,
|
|
0x82403fa753673be1L,0x7ebf5db41baea1b1L,0xcfe0ae3524180eadL,
|
|
0x1d15873fc2f50c3fL,0x16851ad670661cd9L,0x802968d9a51e8c2cL,
|
|
0xe7d1a9cde0161099L,0x2b153c89a8a7ea56L,0x6d41b78906e3c498L,
|
|
0x082bb2e9d6769dcbL },
|
|
{ 0x6180ef46c4d6615fL,0xfc629dc101b9829cL,0xde222ec00fb264caL,
|
|
0xc5457e0610ecc2c4L,0x95ce599f1eea2c4dL,0x0433fa728f9c5b2cL,
|
|
0xee035462cd6310f9L,0x84c57c3bce2e2253L,0x6c8ec31a96d87e44L,
|
|
0x30bfe393a452c5a7L,0xc592b140a047b235L,0x7bd8be18c018545eL,
|
|
0x794e01075c178c46L,0x484719462e23005bL,0x2665e237622a54f3L,
|
|
0x36451a46901c9042L } },
|
|
/* 164 */
|
|
{ { 0x17802d1819893e71L,0xa1765d8b539a2082L,0xfc6aea012302ecfcL,
|
|
0x8d4cf51b365bf59dL,0x87741d720d232a80L,0xac343eb318e80427L,
|
|
0x553ecb2fe74739ecL,0xaeca79a81a8b07caL,0x089ff32256f4ab3aL,
|
|
0x5e95d7293fa1d1f7L,0x260569aef62a9a16L,0x5e776232aa08ddc2L,
|
|
0x93fabec31b7bb54aL,0x48a20956743d56e7L,0x749cdb12eb0ebeffL,
|
|
0x705307a469b8fcf1L },
|
|
{ 0x7a8e4c04e488310bL,0x12726e325325cd7bL,0x5d0fd8b04983efacL,
|
|
0x796e552c02ddb913L,0x0eeca3f777b9685cL,0x9b766e89b15f24a3L,
|
|
0x7c2736d648efc979L,0x3d619685a8021c6cL,0xfe33e278a0b2f1eaL,
|
|
0x95c69879b676d6b0L,0xa07473191af4e0beL,0xa2fab5f136c4ee55L,
|
|
0x6938b8ff59e5f3b9L,0x1e114da439cafe6eL,0xc9595ec36a6ad120L,
|
|
0x80f79bd057e62aecL } },
|
|
/* 165 */
|
|
{ { 0x3cef42a760af09b3L,0x3c016ebd933dfe14L,0x720cf1e0ed85eaa8L,
|
|
0xd4f5e99fceaa3bc9L,0x7216b9d2b7106f97L,0x65f34c36c9668ad2L,
|
|
0xa8fb82bc5b0c651fL,0x20f42f1cf2fda4deL,0xeb31ab2cd21f659eL,
|
|
0xb7a776c7a13d1618L,0xec44102238662be5L,0xc825da70cad08e0bL,
|
|
0x99299079022c0180L,0x7623bda02aef9ffdL,0xde84f4f3f5c58b50L,
|
|
0x5f5a5da4d824ff19L },
|
|
{ 0x5737257e7e8311dcL,0xdef94f51466cf136L,0xa73e1645b05ca21aL,
|
|
0x38ea9b3c02e4ab37L,0x7760eac98579165bL,0xdffdd047c24b01a4L,
|
|
0x188d4fd13fb95584L,0xfaac38b825548bdaL,0x1a79a6f059e9dcacL,
|
|
0x983f720f09a2700fL,0x8cbba554fb8a7e48L,0x38a1996847a1fad5L,
|
|
0x118565475abd6b5eL,0x75113d31f3716ec2L,0x1391e7814212907bL,
|
|
0x5319c8010dc15889L } },
|
|
/* 166 */
|
|
{ { 0x2320136e6b61c3afL,0x1d40f2de07b4bb68L,0x651dee7f380c97f0L,
|
|
0xa978ba706a8c313aL,0x22c587d62011ca10L,0x48bba218ab1f445bL,
|
|
0x8c5eaf07e50444e6L,0x5549f02a442fccf9L,0x2564746f3d80493dL,
|
|
0x42d24f6179c04591L,0x1600fa18abdc8887L,0x5cb8600aded38f8fL,
|
|
0xa4bf9b90923aeb46L,0xd63fee351e1c578aL,0xf3c9c5acebb9ea14L,
|
|
0x3d13314df11a4ff0L },
|
|
{ 0xe5cc662db4513d1eL,0xde78a8c5d55952bdL,0xe8a37a3fe7f86d0aL,
|
|
0xca2d12a47a04f0c5L,0x4c6696e42e25d06cL,0x52614698b2136071L,
|
|
0xf4d2701b89f6e1cbL,0xaafd617780efd95eL,0xe6d73ac4c5bb6907L,
|
|
0x49e874ac420db35aL,0x11631de4f2751fa0L,0xb29f7336a1fa2eddL,
|
|
0x4c406864b7fd794dL,0x73cb21d3e22f92a6L,0xeae904e62043cc76L,
|
|
0x67f28a9fb322c6adL } },
|
|
/* 167 */
|
|
{ { 0x7c17b258ca148ab5L,0xb9a1976fb3c60051L,0xea260698c8f28df9L,
|
|
0x87b2cc74e8d45017L,0x372573290578a422L,0x81d5ee2517bec732L,
|
|
0xd7411fcf1d48bbc4L,0x46217e6b487f5cfeL,0xcb007ac541eb8e1bL,
|
|
0xc41c57a6e05a00c8L,0x1f954d2bd2f9fa99L,0x370bd5db40941cadL,
|
|
0xe487879c3829509dL,0x4c1375525ceca5eeL,0xe8ef7fa4fd3efb9eL,
|
|
0x5ff091741bd1bdb2L },
|
|
{ 0x791912a4579c6632L,0xbb19a44fb8a20815L,0xf4f97b84535639d3L,
|
|
0xe57e2bcbbc3c9bceL,0x122b3f2bf19e6410L,0x1f0189da1357d9adL,
|
|
0x675573bb79e5ff66L,0x444e5c98ef2f3c4cL,0xd6f61e2004d10731L,
|
|
0x0dfa366fac75d635L,0x9fc47c862c854f23L,0xc04ae43e0ad0850bL,
|
|
0x5ce94f642f720c32L,0x67efae65a753bc9dL,0xc27d30d3b0373a63L,
|
|
0x6681013a29721646L } },
|
|
/* 168 */
|
|
{ { 0x1385d913e84509dfL,0xe978beddcf339376L,0x2df425d33423a148L,
|
|
0x43fa0ae3ee8cb579L,0xf015369d31c4553cL,0x05cf08bbdfbf1d48L,
|
|
0xadff4be69444244aL,0x01635f81a35dda33L,0x085c8949e76fab7cL,
|
|
0x4bd7fcde16737783L,0xfd8cb52ca254f8d2L,0x62168a66413ec985L,
|
|
0xf2db97417a9026ccL,0x3962ee5650e1e1b7L,0xbee0a346d3beffdeL,
|
|
0x3b35b72f0bdfab1fL },
|
|
{ 0xbff8de9f535c3749L,0x23c1f20f8add9c48L,0xa975b37bc8f8f663L,
|
|
0x2529e475e8f3ae49L,0xc32f10d51d5e2628L,0x5ac0d29767862f1dL,
|
|
0x13c79338854cbe36L,0x48f004ef4b67e462L,0xfa37a150e5d10ee1L,
|
|
0x4974778dd28288a0L,0x96830a66cfb73f4dL,0x9f44401307804952L,
|
|
0x8233c7099760b694L,0x8340cca525b75c99L,0x3f62e40bc771f99cL,
|
|
0x47d0a1ebcd95c685L } },
|
|
/* 169 */
|
|
{ { 0x266f4fff652811f1L,0xeaacaa9362ef3002L,0x6c387a5550cba0caL,
|
|
0xa350142a007f5467L,0xc7fd102a202f2673L,0x5daee57033dc6e65L,
|
|
0x60682ec3064a63d9L,0x46cf0bb0462b251eL,0x0e030ca55da936e7L,
|
|
0xc87a60f2434265b5L,0x9637b2bb69b4e8f5L,0x601fb58c7ad7770aL,
|
|
0x1f2147f6ed3a15a6L,0x05b47d5e2995e961L,0xcb0ca9b383213a16L,
|
|
0x8f4b614a4995a85cL },
|
|
{ 0x5aa8ec194b4eb3c1L,0x8c549ac420323a70L,0x00d493224f6cc6aaL,
|
|
0x0e53b9bb45f9a5a3L,0xe46ef1100897abbbL,0xfe873e57d7acd7d0L,
|
|
0x7cfccfe50f7cb588L,0x0ea53d65c85557d1L,0xfdd9eb447288f2e2L,
|
|
0xab2dedfac0eb68a8L,0x5822147008603a0cL,0x6946468900feb06cL,
|
|
0x804cf5bf25e5caacL,0xd85598589fc91ae9L,0xed9378b173c45eaeL,
|
|
0x8f942d02524c9801L } },
|
|
/* 170 */
|
|
{ { 0x1f1ec3028e845808L,0xc302bffab77abfc5L,0x26afd4b9f8d97dc7L,
|
|
0x3d3a83c43aac594bL,0xe3b74bd1674d94dcL,0x4464b737caa5911cL,
|
|
0x62925773871c2cd2L,0x419f24853b4440feL,0xdda6a0f3e052ad7dL,
|
|
0x645280d6846c86c0L,0xa25689faf8324f42L,0xc74ad1e807cf117aL,
|
|
0x5626dea08ddc9db7L,0x52620373966fc85dL,0xe0ad57c3f3b1eb53L,
|
|
0x38300252949c1acbL },
|
|
{ 0xa0ef5a405e744723L,0xdb5bcf751ae08481L,0xabfad8ccfec1f76fL,
|
|
0xfba5d831fab37fc6L,0xbe39e248c8fedb78L,0xa5cfad5fad93f310L,
|
|
0x747fdb1e913d5c24L,0x052a47c94518b7f5L,0x9e208d6c7cfb4327L,
|
|
0xb135cb9c70e538beL,0x363527595bb17916L,0xa2c078805b3106c7L,
|
|
0xd2d42a06c209bb06L,0xb525b471d3c504adL,0xc9f4b368822ce034L,
|
|
0x15f18796eb4185a5L } },
|
|
/* 171 */
|
|
{ { 0x094dea060aee4684L,0x42b21f067cdbdbc8L,0xa439e149b1931319L,
|
|
0xea4bdd4181a7dba6L,0xc62137063c2ae80fL,0xb58b096712823dc2L,
|
|
0x7443d515832611b1L,0x2e16f83113c20384L,0x0ce204d62bd992d2L,
|
|
0x499dbcd6f419388bL,0x492ded1d1d3778c7L,0x9d5bd74fc5ddae73L,
|
|
0xd4813d52994b6259L,0x191d9cf60e86ca68L,0x562179eaf3e9c2acL,
|
|
0x6146f1f39fee1238L },
|
|
{ 0xbd06d33e078e2aa6L,0x693af7f79dee9265L,0xd56e0f81daa40e84L,
|
|
0x05fbbb889b9a407eL,0xdcf44adcede99519L,0x7f71f8d3092dba39L,
|
|
0x675b5da54231774bL,0x7456a251a5f605ebL,0x9031d4af87a39a9eL,
|
|
0xdb43000605b474bdL,0xbda5dbf2b665aa91L,0x5d1a3df56631eeb4L,
|
|
0x028149ef62377c58L,0x2e1af4e9685d0bffL,0xe0ea087582a465deL,
|
|
0x95543f9e06bd0050L } },
|
|
/* 172 */
|
|
{ { 0xf7cbc6f485d7c6efL,0xcad8084d63b1bc24L,0xdf90ce88bf8cba62L,
|
|
0x98e4b686b455c192L,0x6146b8d5774fc6edL,0x70e2389e7ae20077L,
|
|
0x5241c47961c22529L,0x7d2215103884e5f5L,0xd6d20ce217e28273L,
|
|
0xe3119f514f2674f8L,0x8545905570c011dbL,0xdfab75d9fcfb760eL,
|
|
0x9546362a9e8c2a19L,0x4b6d3f8a4a7d4b27L,0xa5c87104ee5d698cL,
|
|
0x6db434782ba296ffL },
|
|
{ 0x064864935c3f0d95L,0x8917db824e748895L,0xf73fdf626b2f3e44L,
|
|
0xc60edc542b7f574bL,0xbe1c09a2af732723L,0x7d34669d7cad114cL,
|
|
0x9646600a321aaff9L,0xb94e2bbaed0cd61cL,0x866e1a41dec4750eL,
|
|
0xa1be990db1a89f58L,0xc39e4d6cf2759693L,0x11cfb780c0e0dddfL,
|
|
0xf0afcd7fd99c8a41L,0xcebffadb6e1c3050L,0x4f3981b096d2c6e4L,
|
|
0x07a791e72ae27a94L } },
|
|
/* 173 */
|
|
{ { 0xe70e90471e9f0300L,0xe0253ad9bccdf904L,0x51c0289dff053078L,
|
|
0xf1ef092eae893462L,0x2c90a91aa4846845L,0x1946eda0f1dad4b4L,
|
|
0xf07650f333df67b2L,0xc6e988db0b15a014L,0x72e0c66eb542f0f9L,
|
|
0x5d4b6311e0c0378fL,0x548badaaae86950dL,0x6801638db35f1c8fL,
|
|
0x129e3216944d1ad4L,0x9951bac840471d32L,0x03cc29f385e94ddeL,
|
|
0x6d6acc2e4543ecacL },
|
|
{ 0xeb999e9557b2d299L,0x3a2bcd9be3d721cdL,0x2e60384fbb4cb444L,
|
|
0xae177709dc060faaL,0x74f0e6d38c987cdeL,0x9a237cf81076fbedL,
|
|
0x69af15137983fbffL,0x6c3f7a1d323f9584L,0x3e21cacf6db64398L,
|
|
0x7cd8134f96703d92L,0x0755898fb8393f76L,0x1b5b28bc2e825222L,
|
|
0xb78799c17924aa7cL,0x1db378f281427a8aL,0xd5a451b1ff289492L,
|
|
0x79d182123d3c46eeL } },
|
|
/* 174 */
|
|
{ { 0x1a3edff9109d5589L,0xded52eb4029b4499L,0x13eb9d30b4b54adfL,
|
|
0x4f9214c1a27bff67L,0x4c817ee767f0f460L,0xbadf8d83c3a50e28L,
|
|
0xc5dc03c994026237L,0x5f29581b966647c1L,0x10b6a0898a0687f3L,
|
|
0xae787cec31634517L,0x2001dba562e75188L,0x55d4e1a745e2c3fbL,
|
|
0xbfcacdebb67d3395L,0xa1a0af9cbc6842eeL,0x50590a2b3e88580bL,
|
|
0x73104491a784cdc8L },
|
|
{ 0x44ca2cdf2648d676L,0x9a85eca54f1b12b1L,0x1b9dac942980e1ebL,
|
|
0xf30d37091ac8aa89L,0x73072ab7c719e195L,0xba518c822f703797L,
|
|
0xac090e14ac0067f6L,0x0e6cfc708dcd2927L,0x4f5889e221e7da63L,
|
|
0xb4aaa40b8371c7c6L,0x1f9dabe28f7878c9L,0xf78aed6bd84caf3fL,
|
|
0x3c39dd079e0e1d92L,0x680be5fb122424dcL,0xf41b214d0bdc0099L,
|
|
0x6a8f8fc95180c54fL } },
|
|
/* 175 */
|
|
{ { 0x62a1ed6353235132L,0x1db233f159dba88bL,0x85625452291efdd8L,
|
|
0xc7505297b25111aeL,0xb5921af91d701bd8L,0xb4d05d729774f45dL,
|
|
0x6e3d4c5ef18e73ffL,0x897d985f899b3038L,0x8a9c30fbc89b1558L,
|
|
0x3c92d1a34d13181cL,0x292e86ba2223320eL,0xcf2454c201ceed02L,
|
|
0x27a45f74583f309fL,0x75a6102cad0fd1a3L,0xdb4f45d2cb9c7538L,
|
|
0x4752d8c1db283fd7L },
|
|
{ 0x514d6cead5dff4d5L,0x74cd5fdb45a827f4L,0x1070a60c4fc7135eL,
|
|
0xdec0bb781be5778eL,0x271e12cd58dc6b08L,0xb765089b54bc2496L,
|
|
0x6ddf2c63619098acL,0xfd6ebac667528832L,0xeaa2d025c2508af1L,
|
|
0x13c2cda84dcfc1f0L,0x1c7836a845510be0L,0x3904688d1a886801L,
|
|
0x643132aaafaf2545L,0x496855772830a88dL,0x569491ca8744b470L,
|
|
0x3a6518f375fb8552L } },
|
|
/* 176 */
|
|
{ { 0xaaa8ed50224042a0L,0x6cb4e3b02452f1e6L,0xedca5f4c768211d8L,
|
|
0x4e0fe3f9ef4d5d3fL,0x33a8e2a4522d46e5L,0x5998e21ff1446775L,
|
|
0x1496c50ef592d01bL,0x69104c2f83a67739L,0x28670bcb472bbf00L,
|
|
0x8ea883b2503177bdL,0xc5d8bc057d2712a2L,0x41ef9317b439c994L,
|
|
0x9801d3a8dcda1affL,0xd686eeb57038f6fbL,0xe80c5cd0fbfbf820L,
|
|
0x540ac363edc25817L },
|
|
{ 0xa71969a9fe7f43dfL,0xe66538082c1b9e4cL,0xad9677d8859c2917L,
|
|
0xbaca954596aa4404L,0x0e9d855fff1297daL,0x1f61897b22aea7deL,
|
|
0x96edccfd36f13f8eL,0x627d307016e200dfL,0x729f0736c98988a4L,
|
|
0x95e25e6097f231d2L,0xaf7f221bf6048752L,0xd66826094019b299L,
|
|
0x1d99de0926b4b1d9L,0xec47cf661acdd7a3L,0x4de9f2b36ebe15e9L,
|
|
0x17db32ecfa16974fL } },
|
|
/* 177 */
|
|
{ { 0x75ef69196cf40599L,0x7ea10dfb00c020eaL,0x3da5ae7bfcaaf679L,
|
|
0x0d663ca388ddd678L,0x5a21f8fe255bcfcdL,0xe9c3f538e344bc7eL,
|
|
0x35f62b1d548e0632L,0x654f242543c6e64dL,0xc755a7a626993627L,
|
|
0xa3b7c5f7b0f41324L,0x05697f793a2180f3L,0x6cf85fb11e81675bL,
|
|
0x6d3cdb35e53428f5L,0xe3aa159152d28b02L,0xa8470255f7a3fb78L,
|
|
0x460bd01ba194445dL },
|
|
{ 0xbc34dc23c24d8077L,0x82f4b5804c720d2cL,0xa29da9116f5d1ffeL,
|
|
0x578af52092783ce2L,0xe29f51abb5904af3L,0x46c570d7f7aa1190L,
|
|
0x4a522fba571bddf0L,0xbf4e2a06ae89bb51L,0x799b35cc59f3444dL,
|
|
0xc302836726cc2557L,0x94a4e985afcec177L,0xadaf7dcb7c36cbd0L,
|
|
0xed31b78775d39077L,0x52d6904f2d3e24bcL,0xc5ca26691f95421bL,
|
|
0x7d342c3c1734878dL } },
|
|
/* 178 */
|
|
{ { 0xe5cf2c0a11fd127fL,0x66d36bb8119e4c5eL,0x621ab2526ef56ac3L,
|
|
0x30cfeaeee5430675L,0x2ede27d2ac3e9619L,0x6413513af8fce671L,
|
|
0x6159c61b075f4c3dL,0xd447efe959069d98L,0xaf8d6f68ea76aea9L,
|
|
0xac5dc61b0f5bd164L,0xdbab446e1e88bb98L,0x618b8b161ba92320L,
|
|
0xa0eafb3c78989865L,0x0c7abcc2c08b7e82L,0x10f09b6e20d160bbL,
|
|
0x5be0afa68e4c63a7L },
|
|
{ 0x82ab6d381bbbf49cL,0x3e09ce498c0703feL,0xeca58b5de10f4263L,
|
|
0xd9cc6581da5a4532L,0x07e18876f618f7b7L,0x0419a5e3250f7fe7L,
|
|
0xbb1a9e90de6b86beL,0x584a7deb37359169L,0x38eb34895149db2cL,
|
|
0x14546a33b0ebabb8L,0x0067f0b0c2f88a92L,0xbde0dfe70a2db019L,
|
|
0xba51b06cc63e6f3eL,0xa19127b9e9206fadL,0xe4eb5e87fe80dc0aL,
|
|
0x1e6fccf5d4de30aeL } },
|
|
/* 179 */
|
|
{ { 0xb57dff66aa8ac924L,0x06e9ad31c298b3e8L,0xd140e32965fb080cL,
|
|
0x7dab211d1d95c93fL,0x6d68d8428a180caaL,0x1a929408a20ded69L,
|
|
0xa815175338df461fL,0xff5604ae60eae932L,0x901b9e497dae4c0bL,
|
|
0x4573a97fde262e89L,0xed69d9a4f1084983L,0x8ffa022f64724f1dL,
|
|
0xd5f1c2e4ea85a15fL,0x4c626ce901453794L,0x80440cd6bf0907ddL,
|
|
0x4522d4615ddaa837L },
|
|
{ 0x8895f079ebfbe7c5L,0x30ea1ded84ef3446L,0x716a9eb6d4a1ab96L,
|
|
0x1a4a5d2250a30c68L,0x5a16631c0043bbaaL,0xbd1075025010e5f5L,
|
|
0xbffe3e9d3d8c0556L,0x31b30b1807772419L,0x90ff7ef084b82297L,
|
|
0x00c37d75f21a18c3L,0x18d0a635565bb8f8L,0xbac1da2a45e3bcebL,
|
|
0x1c38e90c23f0b08dL,0xf1ba1aa25fbc5ac5L,0x09d5256bdda71fc6L,
|
|
0x346501a96d7e40baL } },
|
|
/* 180 */
|
|
{ { 0x86be448ccc2b0f1dL,0xe3eb45c9ac4c3703L,0x5387f65d9fc96bbfL,
|
|
0xcef3c4e95ae27fdaL,0xa008f7761bc18089L,0xf374a08422ca18a1L,
|
|
0xee88284253b73371L,0xcb6fc6d87cc09354L,0x8489ec1b61496d6bL,
|
|
0xa92c29b949e325c4L,0x15c6ca527bdec166L,0x95444eeedcea2813L,
|
|
0x34683eb33a21154fL,0x8fb26f98d39061cfL,0xc3b08aa806c940bbL,
|
|
0x7c1d42cfe554c96dL },
|
|
{ 0x766e703fdc110aa7L,0xab7b79d7f362e378L,0xd259c75d5aadca3cL,
|
|
0x2a6eca7960be3373L,0xf4744a4b06c4e8ffL,0xb2842ccef3b705bfL,
|
|
0x1a3af5aaae304b53L,0x7bbfa2011b2d31b8L,0xc4ba6eba4bee88d9L,
|
|
0x2d3565ce565cb839L,0x24808696daf7ece8L,0x2c7ccce7e6959745L,
|
|
0xefd6eb3ce94f9837L,0x0a33b4cf3811a326L,0x14203f43fffa93a6L,
|
|
0x031e982873c31d90L } },
|
|
/* 181 */
|
|
{ { 0x4fefecfc765a17ffL,0xa09f3888d1290a65L,0xbf265c46938da038L,
|
|
0x4bb6145da169ad46L,0x33cf821423a62fe8L,0x562df571abc860a5L,
|
|
0xbf2a90fa815c38c4L,0x45ba1d6e17eda875L,0x799d881a946fa5e1L,
|
|
0x6c1be784b90f5a3bL,0x0910a37cb10ff52aL,0xc38c1fe4a4f4fd36L,
|
|
0xc3180fc58e2d3ba0L,0x3e2ff050b17a6187L,0x3a00059b943a35c2L,
|
|
0x494d3645a28cc51cL },
|
|
{ 0x398426b64ba021f8L,0xd14c9083796deb6cL,0x6d2e53957e36c762L,
|
|
0x8f556eca751cf216L,0xdaca1e0019b24a19L,0x47887da44b20c2aeL,
|
|
0x93ed4ccdff41a733L,0x8d717c445c7c0cd7L,0xcc48634a91bf7009L,
|
|
0xa1f146f93b59bbafL,0xdd38bb39e5624f15L,0x96d41aad303f8443L,
|
|
0x6b670f034bf104fcL,0x0503f9ed29706582L,0x768e1f47b34200f5L,
|
|
0x3cfdcc5ebbd4c6f3L } },
|
|
/* 182 */
|
|
{ { 0x536c2a86b523e13dL,0x1014a4582920d0a0L,0x3d52b478e7571296L,
|
|
0x057460667eb51beaL,0x709f786187b0e919L,0x028aed88686888e8L,
|
|
0x79a809d7d94afcd4L,0x50c6032fe2129af3L,0x75e4be72983c4082L,
|
|
0x98331bbb7ab3be8eL,0xd31a032cb618c728L,0x36dd85a13f59c4a4L,
|
|
0xdbece345ed4f61e2L,0xba7aaccd1e571715L,0x138c58da64a1ebd7L,
|
|
0x89296d0f3d1aeea1L },
|
|
{ 0xb165288fcca82c97L,0x26c6c12d1427e8dcL,0x66a94f074c3edda9L,
|
|
0x94600e1eeaa01ebeL,0x14abce7c30f5e86dL,0x741d7020cb456a31L,
|
|
0xab05aa13279f42c2L,0x70b60fafd4238468L,0xa18efec1318d39e6L,
|
|
0xeb07f1ac8920b318L,0x01e3cba8d8399e03L,0x65f8932e3c81a301L,
|
|
0xae8bca7dccc667d8L,0xcee1ae79a268607cL,0x3182e64ccac0a12cL,
|
|
0x9233a2f72b1a4c54L } },
|
|
/* 183 */
|
|
{ { 0x717e8df60acbee17L,0x0f0959c25c24fcdcL,0x46f09887e54ffcb0L,
|
|
0xb993decad285116bL,0x0bfaa4f8bba1fa51L,0x9c9249efd0f2183eL,
|
|
0xf93cb35896847779L,0x284bfb7f2322d421L,0x40cc709ad42af009L,
|
|
0xc69f22749bb1d615L,0x76f50b3a717c3c6aL,0x8b21e985bb9c5eebL,
|
|
0x58fb19aea4783b5fL,0x04c86b9b52e1c3e7L,0xaca59092f2971ac8L,
|
|
0x2bb26a6921ed8291L },
|
|
{ 0x98a3443515f81416L,0x086e72e7aaff5bb4L,0x3d1f64de0317261cL,
|
|
0x31c0786c5c0a1cfeL,0x542ea4d8b3683401L,0x2f77273a1a39b4cdL,
|
|
0x14fe7ee1cbef27f1L,0xee7fc09e16bb27dcL,0xc0dccc17410e5dc7L,
|
|
0xa34667421943b3ddL,0x92934b603f31c1b7L,0x0186ded9c22c1070L,
|
|
0xa37ee8ba799f966bL,0x0f3bfcb4249b0893L,0xbae614472e92d4deL,
|
|
0x937cb3f8e196eb08L } },
|
|
/* 184 */
|
|
{ { 0x57c0e77c16fbfdceL,0xea034cc9c98d4cc0L,0xe7606d7242572d20L,
|
|
0x9861b55c0019a83cL,0x80ba2803f1597162L,0x0f4141dd05a0fd7bL,
|
|
0x8865913b4b0daaa2L,0xe6685746aa3848ecL,0x16d15a5a3e0485d2L,
|
|
0x81c0c7743b6905ddL,0xcec31b7d818af2baL,0x80d8f194d2b74b78L,
|
|
0xca659db2543e2f28L,0x31b83a7d9fb07c1cL,0x86537fdc1f1048c0L,
|
|
0x4d57bb0778586a11L },
|
|
{ 0xbc4b768a53b396b6L,0xbc8b24c493b51dacL,0x33e511eba30ae1b3L,
|
|
0x893bbd95945147c5L,0x6cc86031179fe3ceL,0x34b0a1673f920bd4L,
|
|
0xb32912eb6b256160L,0xbc69a2a49d168d83L,0xb4949e7aef0dd128L,
|
|
0x2613419a872699e1L,0x06c58477bf21376bL,0xe55b1909a4f97147L,
|
|
0x63d6eb757b9b745fL,0xb5365b2908df3c85L,0x0e257e4355fcfae3L,
|
|
0x1067c118979f2aa8L } },
|
|
/* 185 */
|
|
{ { 0xc845508432bf8883L,0x4755286a6fd06667L,0xd70b0f8f77c2335dL,
|
|
0x678e60da2f4a2c94L,0xa468d8acd118acf5L,0xce93830bbf5b90d9L,
|
|
0xea4b1c74ed4e9104L,0xac67316d27776ea4L,0xb98ad75c361bab12L,
|
|
0xc323d48299122451L,0x26440220530a43aeL,0x3a44532e3292d5a5L,
|
|
0xdb48694b5fecf1bcL,0xe4e0516ec667b8b8L,0xb3aa595fa4306adeL,
|
|
0x7e4f7091f34e9725L },
|
|
{ 0x3f3816e9b7f70919L,0x765216ed16b003f5L,0x46c6cff4778c99e5L,
|
|
0xe6a5abe830a51810L,0xef6f49e645e728dbL,0x6fdd73eacaccefd6L,
|
|
0xec394e6f8c37f3f7L,0x73320802b6407fc3L,0x988e8f7a96625cbdL,
|
|
0x832923637cabfb00L,0x258ba9df407f359aL,0xff01aee5ccbfae50L,
|
|
0xfbeaeacefe251813L,0x9c69f16183f1cba1L,0x512c58ad9eadcdb5L,
|
|
0x2ae49cd46ccce8bdL } },
|
|
/* 186 */
|
|
{ { 0x1239b0e3c40849f2L,0x5136a4cda441098cL,0x61535a99e547f649L,
|
|
0x92e4bdc47a9bbac6L,0x195a164653547af6L,0x85ecb3198b47a74aL,
|
|
0x278553fc9de6a2b2L,0x471c038a0e2ba52dL,0x12ba1b8835bcba93L,
|
|
0xd4bf50da6f31eca2L,0xd146e3f6802b32c6L,0x0c9c01313c64c8c4L,
|
|
0xad30f12deed21297L,0x9b75bffb9c68530fL,0x23c0ad3e8918de51L,
|
|
0x180e9d52a73771b7L },
|
|
{ 0xc316542f29ab77b0L,0xdd411d9cf7aee628L,0x044c0685353c2f40L,
|
|
0x638dc7e44b0ae4cfL,0xa092418595fc266fL,0x639da671fd2feb7dL,
|
|
0x56858ed55ea39798L,0x7a694f3158f3832aL,0xa94233c6d316d831L,
|
|
0x2fcacb2630a35a7bL,0xfef8f7ddf1ff713bL,0x8b9b452559eee2f3L,
|
|
0xd1b4f91b156d064aL,0x177866c22f5cfcfcL,0x12bc25663777eb41L,
|
|
0x21ca6f3cd8ab85b4L } },
|
|
/* 187 */
|
|
{ { 0x0e162b13a3e66635L,0x1ef20a2b2a9f76afL,0xab473a3046db3356L,
|
|
0x0840bd777802bb8dL,0x5b6baf5ea699b44cL,0xc6e119001b2207f1L,
|
|
0xe5de16a9790b0105L,0x22b12f15db67f004L,0x185fad458a025d25L,
|
|
0xbccf6953df0a1142L,0x4c42129bf45034c0L,0x0f7404001c277bffL,
|
|
0x6e440b4c280a9e18L,0x767de8f5842aa2b4L,0x3de20ab805e8d94fL,
|
|
0x5aff585920227635L },
|
|
{ 0x805acd20a8458e40L,0x5a5557d8149732bdL,0xc70741315f1ca72dL,
|
|
0x7f2e269c952b5323L,0x5c5925566494fadfL,0x153b7acd1a7d2666L,
|
|
0xa6df063d86fe2865L,0x1e91db1357d53b6bL,0x9195bb89e93ead01L,
|
|
0x3d71e1af2963bfe6L,0xfab2b9c288278886L,0x778366923b859b6fL,
|
|
0x6e695174f7029dd1L,0xc79878767b984561L,0x64fb4f1d5907d849L,
|
|
0x3eab7e1c88d8a977L } },
|
|
/* 188 */
|
|
{ { 0xc73a94b652e5718bL,0xe3aefa54f4cee1e9L,0x654e9e63553eedeaL,
|
|
0xf2541e1b5f3aca1aL,0xd71294890d083316L,0x7965af63fb7f950eL,
|
|
0xd8fc9e0dc74e3e4aL,0xb4ee48d2eaf79ebcL,0xa458a86a8b7787e6L,
|
|
0xd8c7621ff7cceaf0L,0x8228eeffdf67980dL,0x210d4742f9106727L,
|
|
0x91f63501b07e3629L,0x441761c67971e29dL,0xc0ccc65f03a3b8a5L,
|
|
0x3491da4f38e09544L },
|
|
{ 0x6706d046cb062eaeL,0xee7db7355d08776dL,0x80de8052292315d2L,
|
|
0x40785662c402bbdbL,0x5f93525c26ed3337L,0x6cea14d67d568ed3L,
|
|
0x916a118966888b1eL,0x0fbd52055dc71675L,0x833d1077e4575df2L,
|
|
0x4e93100aec092335L,0x2f9e1d016cd85389L,0xeebd372543226368L,
|
|
0x401d172b1ba4cfd7L,0x377dab9d574c5838L,0xaeaa695880d517deL,
|
|
0x0c843dfd6ad15a18L } },
|
|
/* 189 */
|
|
{ { 0x455811ffc9373300L,0x1c39332a99fdc300L,0xe19bb81c353cb655L,
|
|
0x774b924a96a83d27L,0xcbfc8fcbb2ee3f1aL,0xaf278ec4010d56c7L,
|
|
0x6fde682fe0abaf79L,0x7566d0727339aebfL,0xbd35ad5d71205db6L,
|
|
0xb5bbe6947051c9d0L,0x577db480d3a3067cL,0x2c70ff54572d7530L,
|
|
0xe8615aece06d853dL,0x71999ccb05abfb5dL,0xeeefc96bea0a8ed7L,
|
|
0x2dcc469d35f6df69L },
|
|
{ 0xcca6cd06c65f0e77L,0xddcc7980bd71b14aL,0xb6221f8b3c93cc00L,
|
|
0xddfcd5b3ae8cbf57L,0xbc92973f76f8e63fL,0xe9848a3406e132b7L,
|
|
0x4cc59a03d51ec9e2L,0x9c9d32bb3a33081aL,0x0012105280e8466bL,
|
|
0xc2b0032a1bbe7295L,0xdbfc657224938448L,0xe972a0ceb6bba0ffL,
|
|
0xf60c0a4fc0a94802L,0xf62c41cc599d8bc7L,0x820c96ee312da0b8L,
|
|
0x5a1a65dbcdbdf9fcL } },
|
|
/* 190 */
|
|
{ { 0xbfba691a42485684L,0x613116b929c470c9L,0xb4b01971e62a0519L,
|
|
0xf3245aa65ff499daL,0xc2ef87f4a5238effL,0xc16dc6bacc9d5515L,
|
|
0x5a7f227e2dbdacacL,0x8dedaac4a9bbaecbL,0xff308a6d2e7c9885L,
|
|
0x4c6f2fc2e6895593L,0x3655f285177e0611L,0xa63e8d06300b1beeL,
|
|
0xbed0ce7913c17b54L,0xca4abe35c4974262L,0xf4b44a17bc4e4037L,
|
|
0x5ae95099efe5fbd9L },
|
|
{ 0x122e5ee7804f7455L,0x341a499722066682L,0x97d24c317795e333L,
|
|
0x12f4123ce48efcedL,0xe8738d9219fbc21cL,0xbb3bdc610663a3aeL,
|
|
0x3603d8c28593a6dbL,0x926227f2e3c1ac75L,0xfea92ac05eaae519L,
|
|
0x5b596f0bfd6812acL,0x3ce7e844fc2a82dcL,0x3840481a63522b27L,
|
|
0x836088b152867895L,0x21ffb7cc26588688L,0x0ca331612f4a7cacL,
|
|
0x4110667ea3edd298L } },
|
|
/* 191 */
|
|
{ { 0x81830357c2d04b63L,0x3fc5a34df4929a18L,0xc73bf6da22d195dfL,
|
|
0x14df2f89cb432473L,0x345afe5ce997f138L,0xd8e3f5f98b9604f4L,
|
|
0xad7942e950c10ae5L,0xcefd5447eed25ff3L,0xbf68e51e0e73c0ccL,
|
|
0x5b1ad591ab54fa4cL,0x8bbc110512b61c8cL,0xbb932913b5abf760L,
|
|
0xdb1231be01e79649L,0xd0a83e91040ccbe7L,0x3dde426f90a96db9L,
|
|
0x1cceb64534df11eaL },
|
|
{ 0x2d210c4f0c6d0f55L,0x6cadf61b9c673c9dL,0xdd7f9919a9ce3fbbL,
|
|
0x135f494c93b063e4L,0x580bdb3c145a93beL,0x4d8723320f52ef7cL,
|
|
0x74d876e88814bb6aL,0x4f6f723ac7a97deeL,0x7de2b8f03e3cd833L,
|
|
0x6162f082ae720270L,0xe88ec2d4ddfa486eL,0xd965c8598d3a17c6L,
|
|
0x62e59e543980171aL,0x0ab6285dbbef6b22L,0x3cf451954d48b203L,
|
|
0x1f1752334ea25ea3L } },
|
|
/* 192 */
|
|
{ { 0x808a765b3467ea91L,0x3f4632eefd2d9c45L,0x7b75dc6d9cf2bc6fL,
|
|
0xefc8d240359813aeL,0x23ecb209e44cbd8dL,0x59ba10e321525622L,
|
|
0xfa14d9343f1ee19aL,0xdf97c21bfb0c48f7L,0xc4e62890ea30d437L,
|
|
0xb286e2a4651475c2L,0x291f01e4126672a5L,0x9c6fda5c31aab3b8L,
|
|
0xb7277a5ae17d22ecL,0xbd88ed83914f0badL,0xd0b05d1b6a2392e1L,
|
|
0x4cb8af9065893c2bL },
|
|
{ 0xa2b02057bb4b1953L,0x4ce08b44f597f6eeL,0x854f5d9b5e6412c8L,
|
|
0x1913262db3cd4919L,0x902762e46e42bb5dL,0x8355c8e6d78e7f60L,
|
|
0x8efaa82438b6c16cL,0xd0173790e550f618L,0x118af462e57d778eL,
|
|
0xa16ad5e8715b4714L,0x900596c341dea4f9L,0x2a957c32280ca610L,
|
|
0x2faee800374c65a1L,0xdb10512750080414L,0x8c1db931ff080fa1L,
|
|
0x486a5c25d79878fcL } },
|
|
/* 193 */
|
|
{ { 0x0521e213941b4f36L,0xbaacfb14f803b4f9L,0xfdf1e22e52a54ba8L,
|
|
0xacfabbba8fe4796cL,0xae0788db58dbacb6L,0xdf98d736c19dfa51L,
|
|
0x155c286a35a716eeL,0xbe7d46769c86461bL,0x50b6380f63a64a5eL,
|
|
0x14b419149f609262L,0x0919a7d0a2dfc5b3L,0xc454da55cef466acL,
|
|
0x93fa4a246986aaecL,0x5090b17171a49cedL,0x602f1d6cc1fa75adL,
|
|
0x5d269f8978e4c054L },
|
|
{ 0x3a74030c14920419L,0x0845d86890968739L,0x81b994c4eeb70fa6L,
|
|
0xabcaa06dd9fc5bcbL,0x06539427f58f8f2dL,0x35c85f67b1dc52aaL,
|
|
0x5a7d8d722c911baaL,0x4041005caec2d834L,0xb5868a447a8e5347L,
|
|
0x04ee180b8de512c3L,0x4daa66e5211168ebL,0xc0bd5dab2317cd8aL,
|
|
0xa1d4185d61164df6L,0xacedca261dbad7c9L,0x0fe4b5ac09b02683L,
|
|
0x8ac9995a26d9550fL } },
|
|
/* 194 */
|
|
{ { 0xb2c8dc9b2640a39dL,0x21ff0b38ede0c9f9L,0x74f469bda1ecba0aL,
|
|
0x8a902ccd080d0417L,0xe956fa32f4994604L,0x348f85cf9776ab15L,
|
|
0xc21fc6ee0066f492L,0x35b1ebfefeeef367L,0x7804581c4613e5edL,
|
|
0xcbdfe8e6ea6ba071L,0xddfcaa32950d73edL,0xc97479361da48889L,
|
|
0xce867c8cdbaffbd1L,0xd267431f1cbaeae7L,0x68255045897912c8L,
|
|
0x0c7c1ddcd7ea1e4dL },
|
|
{ 0x53aa30cc1ce963a7L,0x7352f64cc4c5fadeL,0x2b9aa2f82828afbfL,
|
|
0x64273c56ca212107L,0xaadd765485a576dcL,0x6196ac3e90b5c77cL,
|
|
0x20d43e9fd1aaf39bL,0xfc392062cd05cbc4L,0x141638724c0ff2fdL,
|
|
0xcf32b8d82ae821e6L,0x5f58f9433fa7a3f0L,0xaebf1d2df644ca92L,
|
|
0x0c0615631918a75fL,0x7989b5ed6b876118L,0xbf342445ad412441L,
|
|
0x24ffc9ae1df633abL } },
|
|
/* 195 */
|
|
{ { 0x89fcdc0593c7cb2bL,0xc1243b95590053fbL,0x601debcf6182343cL,
|
|
0x364546ef66c18a63L,0xa5290701ec913287L,0xc35b8026f9788c31L,
|
|
0x852b862a92d1f7d7L,0x1809cb050aa79728L,0x897d467ca3cb2005L,
|
|
0xf20c77c09ef5b946L,0xc3372c42f2241984L,0xda053e0df35bb206L,
|
|
0xbc26c6d0a9c140b5L,0x61cfcc0ccb56fb33L,0x1c3cf9ef299b3968L,
|
|
0x89e4d3d140621ba4L },
|
|
{ 0xd35e80e7a45a9be3L,0xc4daa57807356fbdL,0x0186d62eb967bc2fL,
|
|
0xa702679e47cd16e3L,0xca2f1c025f30ce9bL,0xf1205b461f864f50L,
|
|
0x7fd6d79785061d66L,0x47edc4f68a08809eL,0x5dac04499a4d3ae2L,
|
|
0xf844664a6d1f9da8L,0x9f30ce84d7a83a71L,0xe9382baceaac33f1L,
|
|
0x1f033831948622abL,0xb037a4baf7681eb2L,0xd156a90899a1b5c7L,
|
|
0x675d3e6fe6f1d0fbL } },
|
|
/* 196 */
|
|
{ { 0xd9767ffd707193e5L,0xe478aa91810358e5L,0x5634f9ff328d8ef7L,
|
|
0x913a0ee86dbbd9a7L,0x379b29687e215686L,0x903f410a89d9da38L,
|
|
0xd9f8d7b91b1334d2L,0x9fe74229bd82efb5L,0xdb568b623803c778L,
|
|
0x93e9a350d3d25344L,0x559c35b0724497e8L,0xc472d436a169e23bL,
|
|
0x09864632cc5b4c69L,0x9f6d759d83c7f531L,0xa91cf1db1e497888L,
|
|
0x5f7f92fe60af1a4bL },
|
|
{ 0xf18a1cc60545167eL,0x55ee2e02affa88e0L,0x24cdff51432a7bcfL,
|
|
0x7382da42a7510866L,0xe894c11f40511af7L,0xaa4e4e312aaf1423L,
|
|
0x8c3d36f0f63dd2aeL,0xfc5c9550d7660635L,0x0125373137ea7eabL,
|
|
0x2a5cd59839b950f6L,0x95a0f60140e63442L,0x905e238ef2ac7045L,
|
|
0x44bacc0e446b0f73L,0x4cd4206ec448578aL,0x367b1aaaa5bd7803L,
|
|
0x25beced90a2b458dL } },
|
|
/* 197 */
|
|
{ { 0x079a73820c33a8fbL,0xcfbf6cd10f25dc1dL,0x4ffc73f8c6d482b6L,
|
|
0x3e51f18c07bf844aL,0xa7651236599162f0L,0xac59a74e14013811L,
|
|
0x957a6865e55018a0L,0xe1ec51bde3ca09b1L,0xbc0c7eb3a960253fL,
|
|
0xe83bfd147de03f84L,0xc0540ed152fbdb09L,0x6ba52eddcea15ec1L,
|
|
0xf3d30ed54b261307L,0x9bd7bae8e8397206L,0xf20d8692096373aaL,
|
|
0x0a616a4bc3b0bf63L },
|
|
{ 0x2075f3ed6e1339c9L,0x7afaa072bf8b00a6L,0xdfafec82bccd9b47L,
|
|
0x4713158f00ca54c7L,0x449102f138bc31aeL,0xaf98f158310dfc8aL,
|
|
0xc9ef207559e954d4L,0xe8021af9c527a0c4L,0x6e8012777a192023L,
|
|
0x635f538c7fb02377L,0x5df1974fe8c9e951L,0x0287faed15cc9097L,
|
|
0xfa0728f0f7a5115cL,0x90dbfbe60fac623dL,0xa8d40fd40311ba09L,
|
|
0x876d154e07c6464cL } },
|
|
/* 198 */
|
|
{ { 0xd3a4d6d2c2d3ea8aL,0x36be681ba842600eL,0xc53f100de4070672L,
|
|
0xe3e5b6fe6a7d7a7bL,0x6e6994f95d5e1a83L,0x07cacd2276097c2aL,
|
|
0x12d98dbaa6791011L,0xddfc4461102e0e24L,0x4815dbc2d493272aL,
|
|
0x7e38e64ba9436696L,0x4960eb1a32b2bf90L,0xda457525d928e28bL,
|
|
0x72f75b392a077c9eL,0x27760cbb7fd61d00L,0xaf235d1b0f4b1456L,
|
|
0x3040c23be76d1700L },
|
|
{ 0xb10dc55b4efa9a70L,0xd4de414f53e86610L,0x3d95c11309f8a27fL,
|
|
0x505109a506661d3cL,0xcaa2994a60eb513eL,0x3ee415371e7d338bL,
|
|
0x4fd145fc4651e71fL,0x51bbf838cbc313b4L,0xb039e0781eb92150L,
|
|
0xe8696b4414bf5ac7L,0x2d6671888be0d48cL,0xbe93b2f5dd8f2b6fL,
|
|
0xc1dfd1e7eb8a7f8aL,0x862b3dd990f751c5L,0x1eb1ad58a32a74beL,
|
|
0x5486d79a1ebbc9a2L } },
|
|
/* 199 */
|
|
{ { 0xcb2e34ffa1359e13L,0x202d8dbf28196051L,0xe95e023d23564b5eL,
|
|
0xfb1340b642f6ac12L,0x543ba852b653725dL,0x81aedcd68d2466adL,
|
|
0xbf780224547c728bL,0x559f8a119569fb65L,0x505b7a62dfb22ec9L,
|
|
0x071075409eed5e52L,0x9c899288299f6f11L,0xa7d692613db6f8c7L,
|
|
0x30eb7fb3b3ca79a9L,0xcab99bb8fb2160b0L,0xd2012568d28b409aL,
|
|
0x380f1b0f5ac45f8bL },
|
|
{ 0xc0b99e6be6a0068fL,0x4b67cf2ac8a73753L,0xa6c9a548b2faeb7cL,
|
|
0x7f417f99340260c3L,0x8ee56855cc0f739eL,0xf08b510f780949daL,
|
|
0xb1770fc28d5c6effL,0xb4f5abeefd96a7bbL,0xa07b1136f2665a2aL,
|
|
0x2fb380a4b601dcf9L,0xcc803614162becc6L,0x3498fb96ee6b83b3L,
|
|
0xea9b0fd6a8c17eebL,0x5834b5baa177efc2L,0x929044f55b110b3eL,
|
|
0x4abeddedebd7285eL } },
|
|
/* 200 */
|
|
{ { 0x3355e1b9700ef376L,0xd56e5d9a66cdabffL,0xb3dc257547e87646L,
|
|
0x28f44b8a00f79369L,0x08c32b1ea0c52e29L,0x5a78de123729b392L,
|
|
0x4184519ab26d239dL,0x23f6b4b7e0ce4a6bL,0x235f6f8aacb2a9f9L,
|
|
0xbb8bc454e2064a59L,0x37efd0341bf3062eL,0x6bac683b94dff6f9L,
|
|
0xc3364b1e8aa7fa06L,0x0616772ace0b3745L,0x46f08d08d1e3fb0fL,
|
|
0x6a20abb318e132d3L },
|
|
{ 0xea8310166a85cbc7L,0xd0990946934f9aa7L,0xc2211088e778f1b3L,
|
|
0x7ea4ff8f2247b799L,0xb3171d71454484ceL,0x294039494f98c364L,
|
|
0x5da911f397df1458L,0xa6b5809309439116L,0x75f9509a174238bcL,
|
|
0xfeb518218209758dL,0xae0c6021a47925d0L,0x0e946694af8a315eL,
|
|
0xae7af8a36bad04b7L,0x44c15e7ff072447dL,0x5184668aa5456ffeL,
|
|
0x45e353a7bf36b977L } },
|
|
/* 201 */
|
|
{ { 0x7605676493092f71L,0xeb66b6c2f5b92d71L,0x9db3149be2c8b6c5L,
|
|
0xf62f583a20c0363eL,0x688acd3303cd7097L,0x85d0c0f8ebb916acL,
|
|
0x1bf7462c84c19b0eL,0xc76ed5f97c4a6ad1L,0xec8b88bad119f369L,
|
|
0x59b8371bebe50b83L,0x0cc69508866706a6L,0x531c75a3f8373d2cL,
|
|
0x4e1cd3a32a5a02fbL,0xe8274778da39a1d0L,0xedfc5bbb75da333eL,
|
|
0x15941f24ca79bd36L },
|
|
{ 0x42e8c0f8a77dd512L,0xa91b59a71dc365f6L,0xe80d14cd08753862L,
|
|
0x1624230dd272facaL,0xeea3ec164027cb5aL,0xc1700b59c1ef9f03L,
|
|
0xd411c1270da3148dL,0x801ee448c4181af1L,0xedf285599e3a900bL,
|
|
0x5d67b0bd0d09affdL,0xd839df968b370024L,0x3b6307e0e6f836b8L,
|
|
0x5382e588bd3201c9L,0x636d8a6b7a1d02bbL,0x70b7db76968641e9L,
|
|
0x6d17c34a118fad03L } },
|
|
/* 202 */
|
|
{ { 0xcf608841c181c99bL,0xb65dc901c87bdcafL,0xb460b4473720dabeL,
|
|
0x4c79c3965377515bL,0xd447f22e0a96c277L,0x0d9521302ac0f440L,
|
|
0x8330b26bc90583adL,0xe25e977a928904a0L,0x1deaffd985c50b18L,
|
|
0xcf4dbcb7a5ad5f6aL,0xcbcd0019c8a37ed5L,0x7846dd901e9850b6L,
|
|
0x1ac8194ab0b8e605L,0xb972857134132f90L,0x4ce9f149f56ee28bL,
|
|
0x1ab9b5a43e9e1d4eL },
|
|
{ 0x206dab92314fa7a3L,0xcc4af0f0478ff963L,0x4cce1713904d9fdbL,
|
|
0xac20a2eb12c045feL,0x44fc5478fd8f6d7dL,0x886e72c5ca7b6ffaL,
|
|
0x7fa4529b6fd6f758L,0x4df1d1b192a820d5L,0x3d812f9f2789f149L,
|
|
0x9842f083aabb53d2L,0x2648539b2a03ab32L,0x631ce090b1512502L,
|
|
0xe1294d15731f6bd5L,0xb229361d9436e634L,0x8c4281c43ca966afL,
|
|
0x24b34956c21ab3edL } },
|
|
/* 203 */
|
|
{ { 0x49bdcb86659824e2L,0x6dc4ce484e13e74cL,0xa4c01a266bbe1eeaL,
|
|
0x47b2b8e71e3ec457L,0x7e8b15e02f5a8e4bL,0xe81eb6e6e333530dL,
|
|
0xacba369e17a45202L,0x81241431d70e4c9fL,0xc190af4b3e12beb8L,
|
|
0x5327052311f486fdL,0x9f6c41e129fb2bceL,0xbe6287ebb70f6c08L,
|
|
0x1479850a3feb4477L,0xfcfdfb119bcf18bbL,0x925c292fda80d040L,
|
|
0x212d65e57e3c5bf9L },
|
|
{ 0x23adb386ca15cf08L,0x4dfa4ac481e172ebL,0x9d1dbf934d42d0c0L,
|
|
0xd9cf607374404dc7L,0x60508441e932bfcdL,0x9ae910ca1c682a98L,
|
|
0x9528fc1841ac1cc0L,0xe6a120aedbbed630L,0x94e0e1ec30ccf250L,
|
|
0xfe84ba54e58bbf2fL,0xc66d0b4f9faa4415L,0x0c58f1e7ecee7ce5L,
|
|
0x7a1d43eb6fa6873aL,0x96c6c5a0399f1348L,0xe6ef9aaae6727ab7L,
|
|
0x66afa5549a5c2447L } },
|
|
/* 204 */
|
|
{ { 0xda5aaba8c980e91dL,0xa93cf5096ac98efaL,0xb0990e0a8da32662L,
|
|
0x01d215300081453eL,0x2bb0d33e3d71de84L,0x465f6d803e19a012L,
|
|
0x5902ff4c78a838e7L,0x74e2afb71931348cL,0xa49327579cfb057bL,
|
|
0x761ea6423ad03f8fL,0xb7d4c24558ffa40aL,0xb5e9c0d977a87e30L,
|
|
0xd1c5edbac9c84d26L,0xeca8839a3d1963a0L,0xbc6f2f35ebf6bf0dL,
|
|
0x01ef06310d58abdfL },
|
|
{ 0x2bf903163ecdcbb0L,0x19e2d72827c1c955L,0x9e5270309575c930L,
|
|
0x0dc1c5a996983930L,0xef9f80ff7cd082dfL,0xcd915075df97e051L,
|
|
0xf286fffe9cc61b55L,0x352db38f80f24cc4L,0xed9b99ec36523ae3L,
|
|
0x109a8ca810b104a9L,0xc2700fe7305203adL,0x2a2ee24e769400f5L,
|
|
0xd595d399ee0c452cL,0x0ab75d6af7f02a41L,0x341080990db730b7L,
|
|
0x0e4f5ffd5e8d1202L } },
|
|
/* 205 */
|
|
{ { 0xbd1c64440ff14c38L,0x9a5b59faaece11f2L,0xaa4605a722af6330L,
|
|
0xddc9f65a82af24eeL,0xf4ee4bfeeb9a1159L,0x2463d07674e84eafL,
|
|
0x88cbe1e00e0baaceL,0x7ca568ead5fabdcbL,0xbd80d524c57eb99dL,
|
|
0x9c46572ce9be9873L,0x918a1dcd7300b85eL,0x4922131240f54176L,
|
|
0xf7e324ffb5b14236L,0x40dda5012434f16aL,0x08833421a133d97cL,
|
|
0x33d411610876f020L },
|
|
{ 0x7531a36b9878e5ecL,0x5de3e32146918232L,0xd15f9a33d0a30464L,
|
|
0x734c1b87aa173659L,0xac2094a2f925d4feL,0x43c965a1c262b0f4L,
|
|
0x759c903e447d5cbcL,0x92af215e05239300L,0xfffb6d5f1f593f34L,
|
|
0x65943b4bc3cddb5fL,0x9d03a29cbfdd5408L,0x8f7cda6b198d76c0L,
|
|
0xc0790a22c0f27b59L,0xba557a848cb58ccfL,0x5922052d76c54fdcL,
|
|
0x2d3de7aa47b6b466L } },
|
|
/* 206 */
|
|
{ { 0xaade746265add3b7L,0xe5888f35abf24c2aL,0xd41549cae1a57d93L,
|
|
0x0e22e18e2c76f7bfL,0x67f288eabe3202b3L,0xb79a66ba1d1d0f0aL,
|
|
0x0e0ab7492881ad18L,0x7d424086c7adb0e9L,0x870c32c52842132fL,
|
|
0x858477f158f9a09eL,0x422a9372ec025589L,0xbe428c5ca5098777L,
|
|
0x45b7956457660058L,0x6c7fc631957f37cfL,0x8b7023ddd6316289L,
|
|
0x47003bb65b1c12a6L },
|
|
{ 0xd99401c1c91c1c96L,0xaa5dcdf927a12970L,0x3ab92e17c3c29107L,
|
|
0x26fce8f7a3fe4710L,0xb0d09d5e4ee998eeL,0xafa622048e3a41f8L,
|
|
0xb1c012a5a26ca506L,0x2c6f734c99b57252L,0x1093d79f512f7fe1L,
|
|
0x2f30906eacee19a6L,0x6bff8381056d1ea6L,0x61c75856eff35f21L,
|
|
0x6e07e978c1ad2224L,0x2cca6ca16b20fde8L,0xab4d6d2d633fe81bL,
|
|
0x73dff504b06a2ce6L } },
|
|
/* 207 */
|
|
{ { 0x8b615805d8e20fb8L,0x7c6873e482b533f0L,0x5205f00156a854caL,
|
|
0x87fec6accb369211L,0x1fa3c0ecc7f092b7L,0x5b36647ee845fe4cL,
|
|
0xd4781e85f8b1f112L,0xc65268398b0f1a6fL,0xceeb8c6cdcb8eb92L,
|
|
0x133f0ead8e5f6d52L,0x31883e23c8d934dcL,0x214ed5bd428ac45aL,
|
|
0xf77ca492dbbfca85L,0xdf4113fe07e5ae13L,0x63e4a0d272ab05fbL,
|
|
0x7544d0b77148f535L },
|
|
{ 0x4fe8d13480797aceL,0x216d6aa0af86d97eL,0xdbf0a688ef5a68fcL,
|
|
0x18b26f459f9b2684L,0x52fefcfa8999d2fcL,0xd5af8d8262423955L,
|
|
0x8f123469f63a3780L,0x2933454fdcd4feafL,0xba8018b7a73b5d09L,
|
|
0x9af1f276e5552c18L,0xc5d4773dff26bb1cL,0x9ef4941006dd4f44L,
|
|
0xad8f12f95f39ba49L,0x5767f6dcf66ca4f2L,0xba8773f17922f59aL,
|
|
0x220081eac1e42d49L } },
|
|
/* 208 */
|
|
{ { 0x3043d573ba37a0baL,0x05a431bcdd176df6L,0x03322cfcc42070f7L,
|
|
0x5cabd30e67c2d109L,0x362c95decbf8bcfaL,0xd767d2777787b10bL,
|
|
0x612c915e6ec05e64L,0x9e669631ce69c30eL,0x27c9dd8f682e2635L,
|
|
0x79021f1295ffcc38L,0x06a8ee798a2adca2L,0x8e00e7844b5d500aL,
|
|
0x87746fc78d80d6c5L,0x246053be915f10ccL,0x844e328b219f6fd8L,
|
|
0x620541ac11bd3733L },
|
|
{ 0x0f7fd382509e5a29L,0x8748d7d0b432531eL,0x8f749354cd3883b9L,
|
|
0xc6b8ac748bfbb17aL,0xa4616a6605f2d2c5L,0xb3d966251bcb1b83L,
|
|
0xcf7531042fee265aL,0xc70d73fbdb225058L,0x1211d434f0c2d556L,
|
|
0x862061d854b259b3L,0xffe4606dc42b3f7dL,0x4c5c8585e86a4949L,
|
|
0x04ddcc8b160eedacL,0x1804ce67568e2420L,0x91f3855a42141656L,
|
|
0x7f378198f932be97L } },
|
|
/* 209 */
|
|
{ { 0x9a374bdadfa6639aL,0x0cbd48d402ab7391L,0x5c5ef23647031e2dL,
|
|
0xb49ee2bcd0599d1fL,0xd285eb60e0d38443L,0xdbbea92f269392e8L,
|
|
0x91455fbfb8bc538fL,0xae259ff1e469b768L,0xc1cecb1f41de5682L,
|
|
0xc876f0719952d1aeL,0x1ce25181e7bf7446L,0xcb93ad86282ad2f1L,
|
|
0x8fa3cd316ba4ef67L,0xfce68a04e507aa3eL,0xced74170a61bb608L,
|
|
0x6de716b3f6ac10d0L },
|
|
{ 0xd4e58d04172d6dc5L,0xbed2cde66397c65cL,0x7ae77e180c9eb4e8L,
|
|
0x5627546875fa2edbL,0x4b30324ea91e6738L,0x6023a856235c8b2eL,
|
|
0x9df6d6c2a8f92887L,0xec2c185ff6f5e8b5L,0x7892e12b3ad5748aL,
|
|
0x7aebb4f2d54aefbcL,0x14915448ee868821L,0xa26c5f71b1d9bd5bL,
|
|
0xe5ccd1662ff00df7L,0xebc99f17b95b1deeL,0x909836163fe1f774L,
|
|
0x51f90830bb3d25b0L } },
|
|
/* 210 */
|
|
{ { 0x49376fa1f2922461L,0xdbb1b1c31650d0d1L,0x92b91c330dd8608dL,
|
|
0x3e612c4b36b89906L,0xe1977b0bdf560052L,0xf8afff70636a2545L,
|
|
0xcda7d27811723d8eL,0x0b0bc4bb81bde7baL,0x3cb080b2ed2a578eL,
|
|
0x5bda0d0d171b2e02L,0xf6df38cf941bb9aeL,0x85dd81dbc14a65c5L,
|
|
0x7f98c82dc19dd98eL,0xc613747f52206f93L,0x9e13a2c25f5bbe78L,
|
|
0x5eed218e0aa34be7L },
|
|
{ 0xe156575401d4dc0bL,0xa1ae5f27f566bb07L,0xe985ebebb82225d5L,
|
|
0x5f3ad21c1189ec6bL,0x17da518cecce4d9dL,0xc84a2d3ed6b65b59L,
|
|
0x7f9881758ffa771cL,0x50d6ae122ac69a7aL,0xcb7f30b1c6e6846dL,
|
|
0x8c023a605bd0bb13L,0x9a10fecdd73f2407L,0x8c5158cce5f0a996L,
|
|
0xd26bf615bd8f5806L,0xaf32ea87915a46e1L,0xeaf74e810287d308L,
|
|
0x8c14ba06a6264254L } },
|
|
/* 211 */
|
|
{ { 0x0c877895b17ee201L,0xc05aa47188e57a77L,0x19c3e76397822456L,
|
|
0x0be6f8c0c9c3ba1dL,0xfe85f4ffb4389ebeL,0x538bccce0ce7fbb6L,
|
|
0x876eab2a65266c64L,0x5c9ac690cf9a3842L,0x9f5cf3b1ccc8f981L,
|
|
0xfa17be6a9cf687deL,0xfcfc10fc83835c15L,0x086b0fdb150ef2ebL,
|
|
0x9f97ecd9884a52e6L,0x416e6fa2b0cd1eb8L,0xe2bd15993ecc03baL,
|
|
0x645c0a5deabb165eL },
|
|
{ 0xd94c420550aa7e31L,0xaec8df0c2f851da5L,0x996469093c726e6aL,
|
|
0x72dbdc362619bf9aL,0x1b4260e0e253fbd5L,0x97c259fb8c709e06L,
|
|
0xfabf7cbbcddaec5bL,0xb4d5e8b1e4b703e9L,0x1b06e56e0734efddL,
|
|
0x02d4a4f91f55f8a5L,0x7f8608ba3f565c8dL,0x822f47d2816d1d94L,
|
|
0x0cc361565ce7b136L,0xe46ee5ef31d04242L,0xb2a65f70683567f6L,
|
|
0x27e9ff40d2fa6c91L } },
|
|
/* 212 */
|
|
{ { 0x75251893d7e952e7L,0x15b30583c735bf18L,0x732b599296fe0491L,
|
|
0x27451858806d2fcaL,0x71ab76a01b885ed9L,0xbdce9d976d9f55ecL,
|
|
0x3da60b2048f2ba9cL,0x6977c086592b132bL,0xb6dca9cb099051d7L,
|
|
0xd9c2ab23d188ae25L,0x9f469f3fe20aaf3dL,0xdbd1f7cf5aad74d0L,
|
|
0x3d5efe5c22a9eb3bL,0x8c5edfa2137010c4L,0xada2217b57870260L,
|
|
0x4feee5673dac9776L },
|
|
{ 0x30e18d52b5d3d780L,0x4dadb5d307166744L,0x320d386e5a742156L,
|
|
0x5d8c290e8d6bbb86L,0x981a43232d263dd1L,0x33d0e7ca98984636L,
|
|
0x5138784da519acb1L,0x832e3fabdddc81ffL,0xfc2785943199a43aL,
|
|
0x5b4cabcf32743163L,0x9fa010bd74f94fa7L,0xc28a743d5694a627L,
|
|
0xc1d2a888cb657a24L,0x7eef2503e86a25eaL,0xed11a5d304c561ffL,
|
|
0x4fe818e79c9ede0eL } },
|
|
/* 213 */
|
|
{ { 0x00252c9d7fc1c7ffL,0xa9bd419d9fa89ad1L,0xc93a124a4064e9ccL,
|
|
0x384cbcb843942eccL,0x004c21fd8749695bL,0x69c81d9f421165bfL,
|
|
0xe2325628dde01102L,0xec9374575a9b004dL,0xfb3346bff6dcfc21L,
|
|
0xac4da64b4d372c7dL,0xcecb7ad3f20494e2L,0x562c41b5e867c150L,
|
|
0x299395cec2b723d8L,0xc91adfc57ee53231L,0xe06f1161f10b6597L,
|
|
0x81915529b74d3ffcL },
|
|
{ 0x8ec124316ed9d4eeL,0x3dffa154689aff01L,0x4aba349f2a89a3f4L,
|
|
0x2db1e8e2d467efb2L,0x18dea354039102e2L,0x422ab853e52f082bL,
|
|
0x7130a2c1ed36dd47L,0xca60e86d0295d1eeL,0xe6ac68087c7f5ad3L,
|
|
0x0f83cecfde864658L,0x72e66c21461d1265L,0xfeef4150bd385099L,
|
|
0x0f183f3aa6632289L,0x275454be792dc795L,0x2744c11b11367702L,
|
|
0x7d06bcc7e8ea6ef3L } },
|
|
/* 214 */
|
|
{ { 0x892859427090212fL,0x691b7d4c5521e844L,0x4c038422be2dbb92L,
|
|
0x317721edbd81f880L,0xc136cbeeac89bc36L,0x4f71b60b7b8f004dL,
|
|
0x269132d04e218ab8L,0xb0e2496ee6cc814dL,0x0b2ce31775fadc15L,
|
|
0x82e3c08466d223c5L,0x9721caa64c612f8bL,0x59a751eba4b65355L,
|
|
0x3433aad5c7d3d9d1L,0x1e61b9d2e80d4246L,0x149f655ffc673caaL,
|
|
0x48b52b99d0f9cb92L },
|
|
{ 0xa3915399efdc05beL,0xde70db1813e095e9L,0x447862e9cddb3fdaL,
|
|
0xa2b031621a009451L,0x4b27980c23920ea3L,0xac5394f1a23b8febL,
|
|
0x163f72563e5616d4L,0xaa0ff93fb714219aL,0xd26f96d293d62474L,
|
|
0xdd212ea87dcfe276L,0xab27bf2f47038d15L,0xe58c8325f418168eL,
|
|
0xe3704222b32a989aL,0xa3694390bfc9f13bL,0xf16e26060d0684adL,
|
|
0x17c0de879d8c76ecL } },
|
|
/* 215 */
|
|
{ { 0xbca5f453dcc01958L,0x7d9459541ce88393L,0x5e6350a1561f5b6dL,
|
|
0x291c3c867e2d36bcL,0xf6c7ed84a5ac3a6cL,0x7913c40bd98006cdL,
|
|
0xf78bb0875671ec3bL,0x1c928f6eb43e89a9L,0xfdf28df3ae1ea1edL,
|
|
0x62bba5b1b924b2b5L,0x491d27051a116e05L,0x08ec02b7167ed3e3L,
|
|
0xe291cf7b5bc0b046L,0x30e501698c5d7f59L,0x0c7c350df5c799b7L,
|
|
0x6862b9e20ac6e1d7L },
|
|
{ 0x56c6f4e79ffa1f64L,0xfed6a91aa1e24349L,0xe9a0ee0ccdb75232L,
|
|
0xbfc90b370322d607L,0x29480ad2462fef87L,0xfc214969c2bfcf34L,
|
|
0x6e5211e0a539e38fL,0x2a59ec2612a5149cL,0x195fe212d706b532L,
|
|
0xf77fb108e99c8429L,0x74ceaea35dc80482L,0xa5a6030bbd92d298L,
|
|
0xad42dca5aaea15eeL,0xd6ac3bc74987109cL,0xc64e1c40290af649L,
|
|
0x5093fa2d51f8de6cL } },
|
|
/* 216 */
|
|
{ { 0xc4cf32804c2d553bL,0xdc1abe223b966c29L,0x556a549c2296914aL,
|
|
0xd8c9f8b5999976c9L,0xc22c57bd776e83f3L,0x4f2942ab7c85ec57L,
|
|
0xef3407e56e2c61f5L,0xf005e8caf213db48L,0x470c853df32698c7L,
|
|
0xe6f488d7cac0a54bL,0xb6bd6bed60b7501eL,0xf0103106714a4bd9L,
|
|
0x5285bc3b6e098894L,0xec06741af5f92a00L,0x32f16426ef7ef24aL,
|
|
0x12f9c44d6c77a438L },
|
|
{ 0x1951e96483313a1cL,0x98edd3da33c58b37L,0x4edbbf52c7ac4044L,
|
|
0x866ca6f70dcb5ee8L,0xec0ae8f56dd422f8L,0x1077bc540661ec2eL,
|
|
0x6d39913ad422523cL,0xd105e1e858e7cb3eL,0x47c9397fc979bb45L,
|
|
0x3221d4a90997b592L,0x0ef628a3e8952fe7L,0xd08d58274e946241L,
|
|
0x64cbed0f59780f40L,0x13d7c22708e110ecL,0xd186d8667679b1a3L,
|
|
0x02f75e4e26ae1d18L } },
|
|
/* 217 */
|
|
{ { 0x1b637ebf47f307d7L,0x6b644a6ad0141477L,0x82a33d652e05a80cL,
|
|
0xc8f1a0f3fed07b31L,0xc09ee7f93696e597L,0xcdaa7ec3c7ffc01eL,
|
|
0x549f88fef8f373b9L,0xc88d1961c3bb8989L,0xd92a4fe9dfcaa7b7L,
|
|
0x12ff9ee23ae4ab20L,0xf5aea641f5ecb1a5L,0xe769237fe32fb47dL,
|
|
0x96a5c42025d085c0L,0xdc91255826c755a2L,0x580b985f9bce9723L,
|
|
0x72b1b56663961941L },
|
|
{ 0x9d708a08790e5558L,0x985360410689af80L,0xe85e7b8a42313b5fL,
|
|
0xe6ba129255a49d1aL,0x5e76c4b0ac371b0bL,0x58504f39938e6e19L,
|
|
0x8dd4142260ae9a21L,0xd8b04e9b968485ceL,0xf94c4ba5887efe43L,
|
|
0x11268e67f11c5e73L,0x92623e28cf6b99c4L,0xf2d0aaa87a0a9662L,
|
|
0xb266772a4ca02ed3L,0x68ee8e4e2d63b551L,0xcdebb2992e78b5b5L,
|
|
0x5df19216e17225adL } },
|
|
/* 218 */
|
|
{ { 0x20027e1e8df2e7e3L,0xb183cc68d8da07deL,0xce35ba694b4ae694L,
|
|
0x896d97df3ca62e88L,0x3de4713b52efed2cL,0xd006c40e26bd084fL,
|
|
0x1e9b71bbfc81923bL,0x9991c7b61aacc6b0L,0x650c93648f656840L,
|
|
0x138561d187f47524L,0x610f2b11bffd3ca2L,0x96915faffa191418L,
|
|
0x8f1236de955e5309L,0x613cbeeaa1872d79L,0x7f7b44ea66a2a48bL,
|
|
0x452265c2e0a89c32L },
|
|
{ 0x4ad5ec7925430010L,0xcac786ffebd090c0L,0xa5f9f4ff20a9d3f5L,
|
|
0xfcbf4112a3edc65fL,0x8824839c0cf3eb11L,0xb8dd6d4e8aa5b700L,
|
|
0xe2271dfdb7568ab8L,0xe43ec373b744560eL,0x78eaf9261cf75296L,
|
|
0x1809ae0e3fa96d9bL,0x0b312d2ddc25dfd5L,0x6b8f78b46bab7711L,
|
|
0x069efc8db5ecf1e4L,0xc1952bae609fecaaL,0x43e302ed5f4dbde1L,
|
|
0x14b02bf91e078555L } },
|
|
/* 219 */
|
|
{ { 0x2c71c768b87e5b57L,0x0bcc78f7f531a557L,0x4ff93f8bf7597dc8L,
|
|
0xb28e026d139e175fL,0x6b83b727cb94ca6cL,0x2eafe3b20079f7fcL,
|
|
0x2aca54decf3bd170L,0x17c4133c6af0dc6cL,0xbea1e665ccf5e35eL,
|
|
0xa6691a48345505c6L,0x2633abd0e6100b89L,0x966c6706c17d0388L,
|
|
0x7aefffbe1a0cf90cL,0x4d847be7d0add64cL,0xd49bcdfbaea2aa46L,
|
|
0x85e07e742cc7d0a5L },
|
|
{ 0x23aae0a60bc25bcaL,0x6e8e55f1e44f64ecL,0xe1e696d8b607b773L,
|
|
0xaa90a746d3005909L,0x072b1ccd2cbc4990L,0x0d0fe6c6c68e2f5dL,
|
|
0x920ec5f053e28ec9L,0x79b21fb4f0040cc1L,0xa7375bd3fcc4a2c7L,
|
|
0xf5f5def9e1bac7ddL,0xdc315d7935c0f8d3L,0x7117c1702cacd318L,
|
|
0x6f2823c4e926f71cL,0x38db58bbed02f39aL,0xe5b492317db69323L,
|
|
0x0964039f8d49f430L } },
|
|
/* 220 */
|
|
{ { 0x21774f1656999ebaL,0x3d8ee287b1de6305L,0xd81af726de0b2669L,
|
|
0x374469393f8942a1L,0xbcf6b615ea03e13cL,0xd30c0c3594e273cfL,
|
|
0x4fd33a56c6725c56L,0xa57534ada8be97a2L,0x799242a67c22a251L,
|
|
0x4e51bdb59d0c5c49L,0xd7cd76ccc6a42768L,0x914097acd426bf59L,
|
|
0x59404a2c66e9beb2L,0x4738fe985c96e3e9L,0xbcbb3e0eaad666d0L,
|
|
0x626b0fd263bc5e56L },
|
|
{ 0x47217dbae1a1ec42L,0xaa6ae7dbab5acc50L,0xb7e1ab1e865331d1L,
|
|
0xb84530703d30126fL,0x280649e0dee61851L,0x8806f4a3ea689544L,
|
|
0x4bbe43adcb56f632L,0x036b9bdabcaff94fL,0x0d941e65bd0637beL,
|
|
0x82179d44686f3abbL,0x1486912caad6afd6L,0x9a3b891eff7e1534L,
|
|
0x88c426ceeb86fd96L,0xb56e6a81117928c3L,0x933e713596399e00L,
|
|
0x09bbddd9a17b6ac1L } },
|
|
/* 221 */
|
|
{ { 0x75e39c1de4fd3673L,0xf880d9d1a65c8e07L,0x4725c1dc7289c7feL,
|
|
0x5b6735ee3529d200L,0xc1f8f2ed3c747af3L,0x5cf3998f912efdf5L,
|
|
0xed72261849859c39L,0x23793a2f0e69795dL,0x8a6ab8d686b1d2a7L,
|
|
0x00c815de22a882e4L,0xbe77d6fcf9db8d7eL,0x0886fb3202267547L,
|
|
0xb62687d449c10edcL,0x9f1c3e177c83ed4cL,0xe6d5d7f05af366eaL,
|
|
0x2eaa01b8d1efad24L },
|
|
{ 0x5e47fb701f357c74L,0x93085c4aa9e3b794L,0x4f0987336e85a905L,
|
|
0xf53808ffbe0244c9L,0x91dddf93a3b5660dL,0x8b76377bf3b95ed6L,
|
|
0x91b911b7bb3920d4L,0x7ccf08bf86a13cf3L,0x53ed8f97ea018e58L,
|
|
0xb1ea434378c55194L,0x8e6adde9e0d2d5a6L,0xfc2b248f9b96259aL,
|
|
0x96ebceaeeef17dddL,0xf694b443557f9c85L,0x48cd150f07d5bba8L,
|
|
0x02d31de9b4c1986bL } },
|
|
/* 222 */
|
|
{ { 0xa6bb9e1ede79499dL,0xf6ca8ff8fd0fc2adL,0xbec0f8e81a7d9356L,
|
|
0xbc3d1c9fe8f06327L,0x805c72173b300bebL,0x00420a08413c181bL,
|
|
0x9e9a167ef0ca9d01L,0x076c909d1aeeddd6L,0x64a1997f8e3a8a72L,
|
|
0x3ce7f7a7a77b429eL,0xaac0fbf45c94d3e9L,0xf37694a7e6d48407L,
|
|
0xf56679e2a91921e7L,0xf23fe0f3ee1dbbd6L,0xc7917566cbf9fa99L,
|
|
0x965860f2e0f4d765L },
|
|
{ 0xe734702b7fa5f79cL,0x930bd4265af2d26dL,0x45bd8b986c73e0ceL,
|
|
0x7dbe7bed4ee44a2dL,0xc129e024956c8a1aL,0x6fdc05ac77cdf80eL,
|
|
0x70a6ba2b589ca59bL,0xfc484021999825afL,0x1d284b547a23f0b6L,
|
|
0xb1da10a428a0a8afL,0xb1eb1b312b2af6d8L,0xf051443a33935ee3L,
|
|
0x7a07eb268effa6ecL,0x16ee4086d662654cL,0x7a7bc5014549ee4cL,
|
|
0x650810321fa98a52L } },
|
|
/* 223 */
|
|
{ { 0x49f0e460b67ed9b2L,0x0cda0fd0c36d93d2L,0xbb5963e988c75e1cL,
|
|
0x757bbe93614bc0c9L,0x9a9b88019a768605L,0xa8b7e2af48edc544L,
|
|
0x9e77ed9eb51a5985L,0xdd025274ebbf024cL,0x598b62881545c636L,
|
|
0x39bdaed04800dba0L,0x7fc2013981e2a23aL,0xdc66fd5c550cb4f2L,
|
|
0xad27032fb52068c7L,0xc9a0bcae8169fa15L,0x60606f213a7ca8a2L,
|
|
0x982950469862652fL },
|
|
{ 0x3e3746002e11c128L,0x80dfae5d0e6dca7eL,0xe44016e2d9552264L,
|
|
0xf65f88f2880b7143L,0xca3d28d4526b881cL,0xf9c59dd1dfb86afeL,
|
|
0x548860c24c74f958L,0xd06ea43c9cb69f4fL,0x5343c9ae7334ececL,
|
|
0x5cc2ccd635329713L,0xa95ff4035f3a6c0cL,0x2e01a1ccb372653bL,
|
|
0x31510fdfa250523dL,0xeee538e2a6227eb2L,0xeadfc8a0ca23cd10L,
|
|
0x4b7e6e1b3e78f54bL } },
|
|
/* 224 */
|
|
{ { 0x79c9076fdb5f928bL,0xe6250bb6b7347cecL,0x54b67798ac00ec41L,
|
|
0x900d20ba9d9619c7L,0xed42c0d059e4343fL,0x3df39e85451935d7L,
|
|
0x2639118264f701ceL,0xce8f2554e1f87aacL,0xfddd678965f91aaaL,
|
|
0x96cd163fa324539fL,0x5c815f2c4bace995L,0xd78c8c2aa94f9ea5L,
|
|
0x7ab2aff4ef24e455L,0xf0ed64091cddc26aL,0x954a420b00ca2822L,
|
|
0x0611c4c5d3297658L },
|
|
{ 0xf192001ca9e81829L,0xded3332008a282ccL,0x0bfd7de18f9ded9bL,
|
|
0x6793ac0db7889003L,0xbb00d91d3577a5ddL,0xe17a23a7802d3c2bL,
|
|
0xff95f88cfb549014L,0x7cd1bf4bc71b6e07L,0x2e3b24a023588c8bL,
|
|
0x9b5335b8a4112076L,0x2481c05ec4056d30L,0x55c7410ce916a1b5L,
|
|
0xbbe03271850179f4L,0x15e6c177b3cd1208L,0x509a24c090cbfe50L,
|
|
0x820795291c108566L } },
|
|
/* 225 */
|
|
{ { 0x5d2d3cff1c7d353eL,0xd5e7eccd7de0ce3bL,0xb4b1075f6ca87635L,
|
|
0xda8404e025f9ad3eL,0x6b963e89205cb5aeL,0x9e5ee0d809f221a1L,
|
|
0xd64c85d9ea41aca4L,0x6a46c4e934442a34L,0xac6ff97e3cf655a4L,
|
|
0x76565c1ee5417d7cL,0x681009a9eebf9c4cL,0x95b61d3988da6388L,
|
|
0x6402b46af6b472c6L,0x1fde51650b7f1171L,0x94f8f273be0c05e3L,
|
|
0x7487b036a88344a7L },
|
|
{ 0xa860e5759c3e2370L,0x19d58193f8048719L,0x3a0dbf3ca6e2f9aaL,
|
|
0xb6c7e9596144719bL,0xa9049c74deffec21L,0x8ba064b23f50cebfL,
|
|
0xb12822c049a1de15L,0xb654b7d9b1d527f2L,0xc470859d0ffd0430L,
|
|
0x37c74a674f05446bL,0xe553251ba3add995L,0x4a3ed6cbe33533b5L,
|
|
0x2f2f44d027e419ceL,0x2d84ee82a5d1b979L,0xcc76b123db6fa69fL,
|
|
0x834f85c521fa3bddL } },
|
|
/* 226 */
|
|
{ { 0x329347c12ce9b31aL,0x1d88522afe3fb3b7L,0x4bcefb4d52ff90fdL,
|
|
0x53b173862b1a081dL,0x538c11ba2a411f08L,0x7895b93c141b603aL,
|
|
0x2993b9aab10bd741L,0xccbbd04609912986L,0x669fafb0eea0aba5L,
|
|
0xd484462235661897L,0x4a63b89c367ffa54L,0xcbad5d1d1c3478daL,
|
|
0xc5339227aa6034f7L,0x0e6d705fe61b1391L,0xdd14b660f74ff515L,
|
|
0x639d8b0a5332b54cL },
|
|
{ 0xfa423162162217cdL,0x2e0e4a2a811c28e6L,0x68d9ce1821766dc0L,
|
|
0x51263739046a06efL,0x44eea231dde92101L,0x0607c8f2114298d3L,
|
|
0x27f272ba63d957e9L,0xe7ce80cca5e8cae1L,0x5816ebe224f7a63fL,
|
|
0x4dece5a789673e34L,0x13756a22536babd4L,0x644d61aee3bf77afL,
|
|
0x60b2bf6e2bcf98bcL,0x3b0b59f329fa962cL,0xb0769a1aabb50023L,
|
|
0x409031360c75402cL } },
|
|
/* 227 */
|
|
{ { 0x84d2873a1670433fL,0xc9394df625493dfcL,0xeb05a19a80fcf89eL,
|
|
0xe39e4310db297616L,0x50742dc9d9e63046L,0xf31ad8c81de9ca9eL,
|
|
0x86aabf94fb7b1d0dL,0x36cda27a1b3c82d1L,0xfb1a2ef439702d84L,
|
|
0x280bfddc46081299L,0xe4b2b48dd2396238L,0x2db2c2f37b3c9353L,
|
|
0xd5b5b31712fb8a69L,0xf9b87a3b08180474L,0xd85909861e952578L,
|
|
0x80668eedf37a2bc8L },
|
|
{ 0xe2edcd35b39a0249L,0xaf230cd4b2f8aeaeL,0x295b15e47223df05L,
|
|
0xbb66982ae0e937f4L,0x019d2b728cbc9162L,0x5c512ae9cf49dca1L,
|
|
0x11b491a7630f07b4L,0x48d4f34ca03874e9L,0xc1fd0ea644cb7433L,
|
|
0x13f79ae1f95b30c3L,0x40362d4ded8b60acL,0x9e8314ff61ead81cL,
|
|
0xed600dd4498c3d28L,0x5fcb1c19c2521702L,0x592329fc3a9c1f33L,
|
|
0x046775481bde6ce9L } },
|
|
/* 228 */
|
|
{ { 0xee3de56e39233c96L,0x868c409c80737eafL,0xacae11bd201abc68L,
|
|
0x0f2cea9b2b486205L,0xe32387e16f19056cL,0xea75365aa5dc2a41L,
|
|
0x76c29acc12b4be86L,0xa01fcab78d63294dL,0x81dbe88b0cab9f24L,
|
|
0x76646e5bf414c054L,0xfe111893cb96b7aaL,0xb649f5b17664e097L,
|
|
0xa196422e53fcf5a9L,0x5978c9bd0b7ff634L,0xb5feb38e3c229895L,
|
|
0x038a49fb0833c456L },
|
|
{ 0x35e3818c13e93257L,0x14cebc9da612741bL,0x4f6e92497caac06bL,
|
|
0x82278e333daa1116L,0xe7cc565e4de2034aL,0xbb7dc95f0a1ba630L,
|
|
0x81dd9f2366956fbdL,0xc63e6319bb132dd6L,0x6e22b022fc241337L,
|
|
0x238481937e8beb1cL,0x83b1994dd8c938acL,0xb54cfacaa6bb5644L,
|
|
0x1a7cd44e06f91807L,0x1dd439bba8f8d9f3L,0x660c2a787f74a8e6L,
|
|
0x4bb76e22121b5660L } },
|
|
/* 229 */
|
|
{ { 0x7a151e8ae6354817L,0x33d494eaf038b438L,0x4c86c68885958986L,
|
|
0x721538271dcbac12L,0xf487af8cc0edad06L,0xad33051fe500e5d6L,
|
|
0x0a711b1bd6e47f55L,0xa68709a78c746ad5L,0x27f172626402f35eL,
|
|
0xc6d08efafb30c130L,0x9ef1c041c06c7497L,0xd0c74ecedcc3e2daL,
|
|
0x30c5f96e092e1073L,0x0f1393cf2aa12b74L,0x245840162107eb02L,
|
|
0x8843d25f7b76f98bL },
|
|
{ 0x4e1501dcedb2a83eL,0xbcfe8fb02bb8d724L,0x09020659d925df62L,
|
|
0x3c715dcf42ab6fc3L,0x73c05055a0f09dfdL,0x126745d8e3590aeaL,
|
|
0x5382f4d876ff749eL,0xfc69feefa920c663L,0xde1602119fd711caL,
|
|
0x4219c3bd9075c4d5L,0x3800cbd13ded6bf2L,0x8c7ea0eb6263a116L,
|
|
0x35bd79587d264c37L,0x56e22e457159c98cL,0x71bf2a2dfa7373b5L,
|
|
0x0503f9398935c949L } },
|
|
/* 230 */
|
|
{ { 0x65addc6671dad4f6L,0x238e4889024bea1bL,0xfb76c8e2f605d3ddL,
|
|
0x13d5f5deb0d96b89L,0xe0b5ba356601b2cbL,0xe37d491d83e3d254L,
|
|
0xe8860423240c8ea7L,0x374182f3e91c99baL,0x26c2caf9a87ad919L,
|
|
0x4b13040af574f295L,0x5b9bced1944000a3L,0x4ccc57be06df42e7L,
|
|
0x22e8ec504bd1089dL,0x0c53177adddbb500L,0x690d31d29ecfeadbL,
|
|
0x735778fe176668f9L },
|
|
{ 0x0f86ee3e843c1137L,0x3c1c42fa3f0b73cdL,0x0e75679d8ab20e3aL,
|
|
0x6f95f1f416242faeL,0x7b88e11c39b092e4L,0x1629403e4c236ac0L,
|
|
0x66105f412dac02e6L,0x74dc28a7862e0632L,0x2118ffb2f3b23c8dL,
|
|
0x1182417c0745ffbfL,0x49b55a044c05711eL,0x2c665b74cefbe4deL,
|
|
0x1cc4c01d97bf7107L,0xb2ca06dac54f0676L,0xfc599daa7450d0f8L,
|
|
0x52e637a61a3182a1L } },
|
|
/* 231 */
|
|
{ { 0x481700f16bebc6dbL,0x4a6b45dbf9503d92L,0xc715cd3c5d153919L,
|
|
0x942a1c05e5ad2abcL,0x36a82433ab7b466fL,0xba413bedba13918bL,
|
|
0x698a562490f4e6ceL,0xbb720da6f3f1f3caL,0x2116d41d63471ab3L,
|
|
0xe00d2227303d3609L,0x7fd4cc00463ba69eL,0xac609e4d62845fd1L,
|
|
0x63603b2c80adc9c7L,0xbf16fc9a45fafbcaL,0x41007f7fc4bc94abL,
|
|
0x7c916b4fa74b1698L },
|
|
{ 0xc1026f9178bac2d4L,0x8a2e80982601a875L,0xad2f276e0073d640L,
|
|
0x443610c4fcc1fb88L,0x5727b822ca6b291fL,0x0645532c88ec60fcL,
|
|
0x51e48899ed9ad48bL,0x841b48b5f543f103L,0xa6ccb1bed591ceebL,
|
|
0xfc4adf0f9dcf5a8bL,0x3a7ca020b347ddb4L,0xaa1accc2cb44c521L,
|
|
0x773b68280527c0c4L,0xaa374c107023cf50L,0x733d10006b74c926L,
|
|
0x1ff3916f77a8d07cL } },
|
|
/* 232 */
|
|
{ { 0xaa218fe4f997939dL,0x3d4dfbbb791583b3L,0xb3a7b5da87f7560bL,
|
|
0xa9c028015da92c98L,0xe1eb4aad46666f4aL,0x2eb17a5114ce9dd7L,
|
|
0xf46a66a4ef8f3076L,0x900b45c6810e546eL,0xf7af22584baf04ddL,
|
|
0x3cc1c8725c84d42fL,0x3093f2258e4c83deL,0x62fade41170d88b2L,
|
|
0xe19612e4ac076e44L,0xf48d734632dd141bL,0xc1b1f759925e34daL,
|
|
0x19ed1a56072b90c9L },
|
|
{ 0x9cf7fcde6c735473L,0xaab88e676003bc3eL,0x12187cbcfb199bb8L,
|
|
0xbb7304419accccbdL,0x214aff3cb0f65459L,0x6aec81a36f926282L,
|
|
0xaa82cb329f9d20b8L,0x82f3f90f5773cc90L,0x4af60e6bf62257e1L,
|
|
0xf18b44bfbd4762dfL,0x3948b129db970753L,0xc6e920e97c22c18eL,
|
|
0x393d620857be97adL,0xe8d7382c46b637f9L,0xf6625ccbf1fed1d5L,
|
|
0x6f31e0f968681599L } },
|
|
/* 233 */
|
|
{ { 0xc45afe5582b8f204L,0xac0441b6d358b54aL,0x7213e7bfacd5f5edL,
|
|
0x1914c70b139bcd93L,0x714b458196dbcbb0L,0xe9297d351ed35d21L,
|
|
0x8f6408376a3e1f20L,0x150a8a9d2f3cd705L,0xfb36e801dcdd9f6dL,
|
|
0x5a54eb655cf56d82L,0x7610500c92aa5a21L,0xd10d0ae23b089f03L,
|
|
0x491b2079c42b66e8L,0x4af1ae3d0eee8d48L,0x137e4c2841556f45L,
|
|
0x875e330863d8a7e6L },
|
|
{ 0xdc80fddcaf6c0accL,0xd5ad1e66bb1e7c08L,0xdc717ae1828585adL,
|
|
0xbdc54340275c7da6L,0xf4b4c852d26b9e15L,0x5f0a1fbf6a05fa50L,
|
|
0xc6f81e47817bcb32L,0x2cbd432870ff2e1dL,0x8a24901667c7f7fcL,
|
|
0xd045acb7b585a6c4L,0x2e972ad44666c057L,0xc74d87cfe6d7d63dL,
|
|
0xf7067d870e274144L,0xb2ca157a8b2584aeL,0x495c5bfb75f0fdebL,
|
|
0x5abb0581f386e009L } },
|
|
/* 234 */
|
|
{ { 0x8be62d2bf0c97f57L,0x0fe04871962f28c7L,0xc548a46747b50abbL,
|
|
0xf6b26e0344fa09edL,0xfd44c6e3ab05a96eL,0xedb0032c70e6ae82L,
|
|
0x28bd402bd7e4899dL,0x43f2e9639b7c11c2L,0x0ec3fc0ece913716L,
|
|
0x769b8bc902fd0f8cL,0x9d9cb3aa7cabc3acL,0xe88a889206924cc9L,
|
|
0xa51461aa42609014L,0xc7f4aa8b962e79e0L,0x4ef0210a8b1b3e80L,
|
|
0x705446801bfee4bcL },
|
|
{ 0xfab3d713121901c1L,0xe90a2627fead54aaL,0x64f6d285bc08ba23L,
|
|
0x8d99301536ec227eL,0x99a16ab906c191abL,0x86b1cf5bf649ce2cL,
|
|
0x5920675966be3a80L,0x18836279ccba2cf0L,0x2c157b87eff53486L,
|
|
0xbfac98964b223af2L,0xcd0fd4f00aae7a57L,0xdaddb94063218a80L,
|
|
0x3844bb79df88f14eL,0xc1b3e3d4b71ed9fdL,0x6c634a13d6205036L,
|
|
0x6f56aecfb8680a6bL } },
|
|
/* 235 */
|
|
{ { 0xb01dc803d9205c5dL,0x68955f7d67123929L,0x3debbffd9d9b6565L,
|
|
0xb844395ed3b1acfeL,0x04328b216094eeffL,0x6631ffa822991febL,
|
|
0x0dde66e6190dd075L,0x75b03c55e8577c05L,0x6c91ce5f91722407L,
|
|
0x9a288a408ebb3a3fL,0x1d376f8a058a1396L,0xf3a594579a6e0676L,
|
|
0x103029c57b71d288L,0x0843f428b44c30c0L,0xd8e6aff8730e0b9cL,
|
|
0x7b6be8114ed644adL },
|
|
{ 0x3ec38e4a3d3aa54eL,0x10233943d83d509aL,0xf84aa621243955e2L,
|
|
0x29104717f51d3d44L,0x62d2442c7eca4e37L,0x8c5a523d85fa55deL,
|
|
0xc6f5ccda851da1b5L,0x044bcaa820001468L,0xf7501e68e01702e0L,
|
|
0xf0819359e6a0acecL,0x33dda6adac0ef0b2L,0x97aeedc8fd964f01L,
|
|
0x48dacd0e530b90d8L,0x4c5fad6fb84122ebL,0x2284ec1ed700a1deL,
|
|
0x86f9a835dbca5474L } },
|
|
/* 236 */
|
|
{ { 0x0e1d9055450cc69fL,0x50eb14bcc9edf98fL,0x1bb94e77ee7eba01L,
|
|
0x5f7a6737998f8e53L,0x588384e31b16eef0L,0xbb928723d85c5e15L,
|
|
0xfe51e345cbd952aaL,0xc5d0ee287e241674L,0xfdc146ef100182f0L,
|
|
0x0f739e92e7f5be2cL,0x501ab3afb656bd3eL,0xb1552dde5168e289L,
|
|
0x940dfe31b8ee104aL,0x42923603c4304475L,0x9306f114c460a913L,
|
|
0x5bfa9faf03b51f86L },
|
|
{ 0x2a23f52c107b258eL,0x989e82bbd66341dcL,0x54a3ced8823cff1aL,
|
|
0xf45b7794719b491fL,0x898c22182433dfb8L,0x0f9dd91cc49250eeL,
|
|
0x50c2a2ae4fa17655L,0xf7aa1ce42c327f45L,0x13a15ad6583b1e41L,
|
|
0x9aa0d5a5a1bfad9eL,0x9b1caa288e1fbdcdL,0xaf9283b6915f7f87L,
|
|
0xc10e4e0c87e81a1eL,0x04fdca561080d296L,0x6acc961612755bd8L,
|
|
0x1b1266aa828feedaL } },
|
|
/* 237 */
|
|
{ { 0x4ebc0a00774ee49cL,0x776f6852cb6237d7L,0xfc0544ac5df938a3L,
|
|
0xc3388ec8b6fbfbbdL,0x84ac8bcd745f2eaeL,0xa9c56609b1ece937L,
|
|
0x656fb6ac7de8fa13L,0x5f8ded74a532b871L,0xab0d428baa889f09L,
|
|
0x43b27f2810b7aec2L,0x26426e1efeecb34cL,0x44431b6b9e89c2dbL,
|
|
0xaac4bc5d39211090L,0x926f73684fd81058L,0x452fa691471ef60eL,
|
|
0x33517fdb218d7a23L },
|
|
{ 0xa9c33f46593c4a36L,0xac69d71836b1a9eeL,0x55a20c1d4277beecL,
|
|
0x3e8ca24e7e4f179cL,0x57373369d46d88a2L,0x71ceb1cc730702f8L,
|
|
0x8b184d9735eed574L,0x7f4517a20704cec2L,0x7f129d18d7062a53L,
|
|
0x07a4571bb1d77e1cL,0x774ac3098350d8b2L,0x27b2919f61fab8efL,
|
|
0xa7c4cc13b5dd801bL,0xe7e6255b1434591fL,0x349937b85a3592b3L,
|
|
0x31fac63d30c77549L } },
|
|
/* 238 */
|
|
{ { 0x2ee8cf1b04913fb6L,0x7e4013501769a6b3L,0x790ebb71783e61f0L,
|
|
0x1e5107f9e27f2ffeL,0x124ba67fedaf89bfL,0x189200e1e58de68dL,
|
|
0x962732a36df5abeeL,0x72cc37cfacbeb4aaL,0xb0c5fa96e93c5a76L,
|
|
0x4c2a317cde63393bL,0x97f65e67830b2d6cL,0x4afc35041be5b96aL,
|
|
0x0bf40a60730ce66dL,0x96a1ba799340d84fL,0x3ee1825407626b08L,
|
|
0x01db35db7ab0cbf5L },
|
|
{ 0x6e0fbc2dac0efee2L,0x8406ebcdd71dbb45L,0xe72bde3e19b69abeL,
|
|
0x49cb7e6137e01822L,0xcbb8c01c11458b4cL,0x420b4847687c5d63L,
|
|
0x1847dfa1454c6776L,0xbede911dd1839d18L,0x1b9dc9c9278df046L,
|
|
0x294bd62b881a336cL,0x7f09687993e77adcL,0x7ac9066543ce3ba7L,
|
|
0x148695fd7764eefcL,0xe0c20f0b9ac465cfL,0x636e8d28a6e2cdb1L,
|
|
0x7b6ba98cd755341dL } },
|
|
/* 239 */
|
|
{ { 0xcb1d9e03c1881ab4L,0x19c25d55b3168c88L,0xa82d3d47282364ceL,
|
|
0x95994390f161aa24L,0x7838bc00e1ebb2c9L,0x8fd5dfccbdec7a75L,
|
|
0x4dd203c24ff7220aL,0x5ec173b30efeff48L,0x99f1d2b316428b35L,
|
|
0xc06bd9e5056e813fL,0x929172bac0b319f1L,0x6ae0e384fd223b15L,
|
|
0xbd01059e98d091edL,0x6b3168e4a654648eL,0x2211447f3375e798L,
|
|
0x47e8101971eb4508L },
|
|
{ 0x7045d45abc8c290dL,0xa33d1355810fb33aL,0x2baf009246fbbf2fL,
|
|
0xacff3f1b385c7cd9L,0xc5b150ece161985cL,0xc6ee0a7f2a888748L,
|
|
0x9d888c8e5e88dcc8L,0x4dd735f2ccb86443L,0xcc1e13b73c40f6f2L,
|
|
0xfc3a25fff3fed691L,0x4cb43b17257ee5c7L,0xaa654f93f32db135L,
|
|
0x44f58d0a02dff2d3L,0x78e3f188a8ca6394L,0x39646ccef3e86697L,
|
|
0x785b1902e0dce87bL } },
|
|
/* 240 */
|
|
{ { 0xfcce2361a92f9a20L,0xb7bdca879d64540eL,0xd4739a851d00d7c5L,
|
|
0x067ac8dc2e97c926L,0x2aea3ffe78da6a8bL,0x6828bf5463c51b69L,
|
|
0x76f1c4797155141aL,0xf4bcbef63977d810L,0x75bc4949541bce7aL,
|
|
0xe01f4066d17041a5L,0xd282d5bd87755eafL,0x6e2107dd59e7ae80L,
|
|
0xaa56e166382ab36fL,0x65ee8ef6b9d1d634L,0x99a2160ace4ed844L,
|
|
0x6557c367b7712c27L },
|
|
{ 0x561b0268d75b6e52L,0xb0813640118d0e89L,0xcff533306a2eb1aeL,
|
|
0x4e4622266d090894L,0xbb351227b5fc1d48L,0x9365ea0757a3062dL,
|
|
0x4caca37bd66e2dc5L,0x220d7d23b9095887L,0x9c0fd3938c4473bfL,
|
|
0xadff370a6787da4fL,0xef0aebccd057f4b8L,0x205e744c1173f33aL,
|
|
0xb8d1f0a5925a26b4L,0xa9364f49722fbbfdL,0xc891ae778227d284L,
|
|
0x15c40d04a0e08ab4L } },
|
|
/* 241 */
|
|
{ { 0x9baf169a2a0e18d1L,0x9971c0174c0327c2L,0xd81a323f7bc262ceL,
|
|
0x2099db8d818ff379L,0x663f663d4cd3c330L,0xef5325c3011a0553L,
|
|
0x9cd70bdcf980a470L,0xe64452d11c9ed070L,0xafbf43f4ac676e13L,
|
|
0x97bec0a6ae85c2a5L,0x2faae550470490c4L,0x0ab97a87491e6ba9L,
|
|
0x4055f537aafa9914L,0xfc95adbb36726557L,0x646343b9d119d6bfL,
|
|
0x788e94a09d341e37L },
|
|
{ 0x053a6fe59c53461aL,0x75ec897e08e3b6edL,0xa8f5d2f30768d939L,
|
|
0x9bd6bff6cc213d4fL,0x590c7b4105b0147cL,0x20a3628b7c7b8169L,
|
|
0xc66a086e5bce78e9L,0x3dd4d2824dec1d8fL,0x890acf44c19dcce9L,
|
|
0x6632d875d8435a7eL,0x590167c1ea6381b2L,0xb2259797f0dcc128L,
|
|
0x91a612b446f8d463L,0x42185d78c15efa39L,0xdf55ec37119f6788L,
|
|
0x91b19cc6780dea93L } },
|
|
/* 242 */
|
|
{ { 0xebf2709dcb5d8b80L,0x03b96182fc35660eL,0xb873d991055ef969L,
|
|
0xd1ea4b4de47c4342L,0xcc4b9244d54f8867L,0x93b1a2cafd8d77efL,
|
|
0x068d24e7e8c1f563L,0x5f5fabb649973056L,0x83248c500542374fL,
|
|
0xc36de2b53f38e913L,0xed07e8eb7bb680beL,0x964813d7d8f313b5L,
|
|
0x7bb6a069afd2d392L,0xc06d848e0848a31aL,0x6867fb2fe4f0c325L,
|
|
0x3c2ba834067343afL },
|
|
{ 0xab62d7759d3ad63bL,0x3f9cab9759e0eb1fL,0x70332a633885e117L,
|
|
0xf22cafcee20b2f9eL,0xb529ba7e49eca947L,0x249542166228d88dL,
|
|
0x80ea23ec39239561L,0x1b8907e7d4370644L,0x4b7fa455563e4e44L,
|
|
0xcca9829eb2a4b0faL,0xd0a720a448060792L,0x8ccdda0c246991ceL,
|
|
0x37a2325b348d086bL,0x566ed509f60aee13L,0x3d30e091147f253fL,
|
|
0x1fa627a5c1073bd8L } },
|
|
/* 243 */
|
|
{ { 0xa11222a242478fd4L,0xacf4c6f1670b2000L,0xf71bb04f8359c6deL,
|
|
0x618e28297b93cdbcL,0x96e1bae3230db60bL,0xf17fd3b4965b3b29L,
|
|
0xa58639c6bc7055ddL,0xc3ea92ed4b817d7fL,0x9082b2a6d23b08a4L,
|
|
0x8471228adc17010eL,0x753b9e4620e89d97L,0xcf7e4f9703ff77c9L,
|
|
0x6c3f82452bbe60e5L,0x9e432cbcb80e017dL,0x150a5acdc0a45edbL,
|
|
0x67b8bd054798743eL },
|
|
{ 0xe66079b4f4797cf7L,0xe31c998ad03fde02L,0x5aa3763a54caaef1L,
|
|
0x64d9a1fef7649711L,0x7ce0dc73af29b1a7L,0x6661b083fb66ca93L,
|
|
0xbf4d74fe32fb6a78L,0x25f6ef09df00a561L,0x2bc4383f831d1159L,
|
|
0x6d5cc10c536bde37L,0xd4945f9f882cc65bL,0x81f48f13451a99b8L,
|
|
0x140161cd6bac11a4L,0x9d94d4edf18a4a0aL,0x65363165a467a824L,
|
|
0x74297aa9a4c9aedfL } },
|
|
/* 244 */
|
|
{ { 0xc49758a4e21124baL,0x99bd8198a87ffbd2L,0x45fbcdd13d6638a8L,
|
|
0x94645ff815f7bf76L,0x5fa6736fc4e6d57eL,0x1eae647592e61db9L,
|
|
0x79575c0ccbdf944aL,0xa3d1304725b31d74L,0x7881df224cab5ae6L,
|
|
0x8dbfd2991a2887f2L,0x23d07590a26ac459L,0x2e589852d8661d4aL,
|
|
0x37b5c13b8a0140f7L,0x0f94199e3fb3782aL,0x722aa0591bc14e90L,
|
|
0x89aab7bad55bbb12L },
|
|
{ 0x8b345a96d656bdc7L,0x43bdc8afe176cd3bL,0xd69518b632d64c43L,
|
|
0xfcf364a779b82b41L,0x907b344effb0cf82L,0xf3d0c83c5101287bL,
|
|
0xe9f26a5934cd90efL,0xe5f5aaf207082b5cL,0x4eb72c75ece7c165L,
|
|
0xe9590a81be986cd6L,0xfeef498fff1536aaL,0x04560243a8263d5eL,
|
|
0x940be14f54ae872bL,0xbee7bcc9e3207686L,0xd496a27dc1bc4d7aL,
|
|
0x002dc2975940ab46L } },
|
|
/* 245 */
|
|
{ { 0xee533937b69d60c3L,0x260be552fe972755L,0xb11fb78dc0c725a6L,
|
|
0x6982c27ecab2e7c2L,0x4bceedd9ee2322cbL,0x952b19ed122704f7L,
|
|
0x2df4c285854a6165L,0xba40b5bf7b192485L,0xfcbca9500119f52aL,
|
|
0x7467d1cbe5add86fL,0x9bf536fbd9d0f2c1L,0x3c296e34b8d4ebc9L,
|
|
0x0495f8f405a81317L,0x8c59e8d673335f76L,0x0b53d324e0542122L,
|
|
0x4d5645353c3bda73L },
|
|
{ 0x7322f8007e5c0877L,0x481b43e60ca9a764L,0x231f4f4ba2c12716L,
|
|
0x09596857ed3136c2L,0xae82632238db30deL,0x652fad4099908ebcL,
|
|
0x0b8d1814af0d231eL,0x2680c54b09cbc349L,0xfd4562f34bf3bf8eL,
|
|
0x2985090b092b595fL,0xe6f39ca45e15fc34L,0x70175191bc378168L,
|
|
0x906944b3845a4a87L,0xacc6d74a82a1541aL,0xadc9bab3b155c8b4L,
|
|
0x1f2f89ce77306c62L } },
|
|
/* 246 */
|
|
{ { 0x8253ef419affefdfL,0x05d7ece54cf9256bL,0x377002f2b444e483L,
|
|
0xb189755fcba5471fL,0xc88483cbd5cbe015L,0x254f7c696a0b8429L,
|
|
0x18850bd461f3f61dL,0x7ba210890a247157L,0x35abbc2ed92eeb0dL,
|
|
0xfb56cabe965dec89L,0x9da23724bc55684aL,0xd8ba396f6a7a7492L,
|
|
0xfcb90db72ef4ba46L,0xdd234fe09909b27aL,0xbdf3c16476f4366eL,
|
|
0x09c8097f17e50d47L },
|
|
{ 0x6a04b14060050c07L,0xc29e831843a8e37eL,0xcb9429b2bb55e41fL,
|
|
0xed2fea5a2ce60e3aL,0xdc7b1ff3db9d82f4L,0x48ebecc3687d37faL,
|
|
0x79153e32ecb07539L,0x6a60054f57075692L,0x3871cd0c800759baL,
|
|
0x17a7386f30922df1L,0x4e9fc59e83357b7cL,0x1d26b3a939415186L,
|
|
0x912a0222d34db889L,0x6672fcf459fcdb71L,0x5a3f268d44ff3036L,
|
|
0x6f113ed36911e16cL } },
|
|
/* 247 */
|
|
{ { 0x52a9df591836f1c9L,0xfa6519f54232307dL,0x8406c7015ded285aL,
|
|
0x0a1545caaf627f75L,0xae1111eeace0417dL,0xfb28bdf6a6113443L,
|
|
0xde9ef0ab52dbcbcbL,0xe9dc181b7813e658L,0x0b1dabdb99127225L,
|
|
0x5f0598e322814c59L,0x5c3b966ed934ee7eL,0x4eb84edab99ba4bfL,
|
|
0xb2919a343c1b55e7L,0xa9addb4994aa860fL,0x1b7220dff6811ff6L,
|
|
0x6636a23bd1a183e2L },
|
|
{ 0xdf5d5a2d20587283L,0x0b3822c9ef07fc5dL,0x1786bd550ef6de38L,
|
|
0x163cf90725d1671dL,0x74bf971f1cdb1defL,0x5749e8300842fc4aL,
|
|
0x0e2edbc727f854f7L,0xbb27bbdabce24acbL,0xc1b19cec05bed08dL,
|
|
0xaada123ef7c904bcL,0x02429f1bd89982dbL,0x49d3616e65f6e632L,
|
|
0xa3789fa8ee59fd32L,0x160ba3bafe9f29f5L,0x0f2d3b61af5378a0L,
|
|
0x7aeecc7673c2a6f8L } },
|
|
/* 248 */
|
|
{ { 0xf3a4757cdc43b0dbL,0x3d8a4e8598119cadL,0xf8095bf64616c156L,
|
|
0x3e2a07bc4f533e97L,0xa982436739cfc5adL,0x18a6ba3acd68052cL,
|
|
0xbd60e5908a1cec66L,0xae3841a502b1b695L,0x986dff12190a195bL,
|
|
0x2df2beacad31fd9bL,0x7d893224cc728f7bL,0xc38ea7380cf0a992L,
|
|
0xa8439a80586a44eaL,0xede7f7f01615f03cL,0x4824990827a1f885L,
|
|
0x28ec4006b78a7645L },
|
|
{ 0xe1820c2ea2fe0009L,0xe11ba5d2f13874e9L,0x97522454c524db52L,
|
|
0x4d4774267fede529L,0x01d3419a9b2500d4L,0xce08a4921869244bL,
|
|
0xba169023dd1be1b9L,0x242c3e5432a301e0L,0x9b56f7ba70906788L,
|
|
0xf0ad2a09c74a8cc4L,0x99cd1841d76f9439L,0xeddafe0b621fb60eL,
|
|
0x056bee54bc397634L,0x4653f860ff7f0a84L,0x6bd4876f2011c0afL,
|
|
0x134f4cc70c9525c3L } },
|
|
/* 249 */
|
|
{ { 0x9621a3ece938dff4L,0x7d101a7b486a79a3L,0xf2c4ef97de950537L,
|
|
0xf3184099e65d87dbL,0xb89c7ffb373b8cfaL,0x68baa505e842916eL,
|
|
0xa790fd094ebea764L,0x679df6d4e592892bL,0x2023331cfcfed741L,
|
|
0x0bf4efd29880ff21L,0x7ca78dddd0344501L,0x2cb09ecb342858c8L,
|
|
0x9e5eb6dc2575487aL,0x50675a15ebcb0491L,0x09d2e74f7381d471L,
|
|
0x6ea3782983d3d6f4L },
|
|
{ 0xc65c094b4e5cc40aL,0x7a2e3f6a1af37dfbL,0xef677e9df9026e44L,
|
|
0xb7878c9593880f53L,0x4aa30b077f644aa9L,0xa0c516832f208c3cL,
|
|
0x7c0277ae658d663bL,0xef0b3c38ae1d9130L,0x302f37a7695c3ea4L,
|
|
0xe004c1c56a0c5e0dL,0x9fd495c420cbcf9fL,0x706d5b9d568a0e7cL,
|
|
0x8b225dff59286454L,0x527d44658d9a709cL,0x47c558da87c08d68L,
|
|
0x606ee6e6bb4ef07dL } },
|
|
/* 250 */
|
|
{ { 0x02d99fc757c621f6L,0x292e40c17fe83d48L,0x1bdfc7a19ef199b0L,
|
|
0x78a04102e62c7666L,0x16cda370e6738753L,0xbc81974d1e3a65afL,
|
|
0x19742048f78fe209L,0xc83a058abf5981c6L,0xf26b24349c89702dL,
|
|
0x988b2f1e9d1a678aL,0x472bf9b0ff29ae29L,0xa143e3981d7cf5ecL,
|
|
0x9c9d7e45b268ddd8L,0x166cda555fc4ff76L,0x6044cdf0a4aa7673L,
|
|
0x49dba6f7e9148707L },
|
|
{ 0x20e47fb2a758e37aL,0xaf6b31d72d8eaf66L,0x352ad5f96f9c2210L,
|
|
0x0093f72790efc32bL,0x435c99dc41e4b264L,0xbfa878e005b15795L,
|
|
0x99c520a40e673575L,0xca68259487eea759L,0x029f7b81f12a348bL,
|
|
0xa547cc182aa2ce35L,0xa11d874bead5e2c5L,0x9af0349b55682cdfL,
|
|
0xf86ebfea8bbe8e66L,0x3dab8782f55394abL,0x458bf797ebc8eb8fL,
|
|
0x4890a7a49b7de78cL } },
|
|
/* 251 */
|
|
{ { 0xd72996898da995f6L,0xd39eaae7ec6156efL,0x6959040c356a82d5L,
|
|
0xb2046b21c135bcfeL,0xea720b640f595c78L,0x02824efae7c5fb40L,
|
|
0x97d8fd4c0edb3bfcL,0x12f0290579f24ebeL,0x16fc47cf187ea6b9L,
|
|
0xc219fd27789d5c23L,0x233a6b6c89263eccL,0x823634b28b6d30a6L,
|
|
0xca352e25c9b33680L,0x9388d6ca40c77456L,0xf8e55b0b3c92065bL,
|
|
0x5c17474b02439a76L },
|
|
{ 0xd888e7c28aaccab5L,0x18027836aaced05bL,0x185b877dccec0f65L,
|
|
0x93cadc1c125c2882L,0x45df540a67fdc54cL,0x4f3c86e2c2788a33L,
|
|
0x3e874469e3a0fa2cL,0xc59daa47273983cfL,0x3063c48b4a96d8a5L,
|
|
0xc38d2bcfc2e58915L,0x90e78b8784e428c3L,0x900a292cf0c4fd53L,
|
|
0xb7f92db7941e6005L,0x956792416ca53a1cL,0x35f6f31db1ab0fa7L,
|
|
0x5d675eb47b58408cL } },
|
|
/* 252 */
|
|
{ { 0xaeee1a77870c6025L,0xfc4a23b791a2dfcaL,0x7b0e60c4386b64c4L,
|
|
0xd5d5b17de5ae72b1L,0x6dfc88ac9eefa212L,0x4feaefbed4038b96L,
|
|
0x099ac3568e2d2eccL,0x548ea612012af207L,0x4ffed9db89c31218L,
|
|
0x1c1e91c4e0e67331L,0x009bb64faf8300e0L,0x8780501c6773c3beL,
|
|
0xe0cd6edec08219faL,0x7c055e07f81b06ffL,0x82b63f9ce080b36fL,
|
|
0x02fccbaf0a9feca3L },
|
|
{ 0x9991d4d1b47cac61L,0x2e9d1687ab86e12cL,0x8c6855ec2b94f042L,
|
|
0xca40051948e648e5L,0x9ba91fb2ef89ac57L,0x4f4192061be792cdL,
|
|
0x82d221cbbd0f1e15L,0x062eb13bfc444019L,0xf3a97c3299790fdcL,
|
|
0x4e796d946067a64bL,0xc46dd3006d23775aL,0x8672c4d5ed7f0f23L,
|
|
0x821851dc3b4f63d7L,0x50a3ae0cd26273f2L,0x800e58fceac60f6fL,
|
|
0x56f1e45613845545L } },
|
|
/* 253 */
|
|
{ { 0x01ccb3f632c24f3bL,0x99eb1c7f06d817e6L,0x8dc640bb6aa26776L,
|
|
0x7838affe0845d5e0L,0xf34fecb1f81a79a8L,0x6a2e282d3e6819b0L,
|
|
0xc4b977ce8237a4b8L,0x0f46b3db87636439L,0xa465f54097970497L,
|
|
0xd7e087628791be43L,0x00220b6c34198ec6L,0x57b38637093d94bbL,
|
|
0x84012e1629d690b2L,0x02ec9db520aad1a4L,0xafee2fc685dc34e3L,
|
|
0x911d193625500cf8L },
|
|
{ 0x13b1bd58f5e5af5bL,0xa7ca263b7b6a22a7L,0xab6bec4df3af2adcL,
|
|
0x16651e59a04420bdL,0x3b448b3b4ba36c11L,0x3c62bfcdff424310L,
|
|
0xde15c4a5f1a96cbbL,0xbe0ad8a1e4d1f980L,0x812bd14e36673a3aL,
|
|
0x40303af69212acddL,0x8f6dab9c576095ceL,0x7df1882a107f5ca5L,
|
|
0xb903e63c8896a3b0L,0xf5048544d863b3f0L,0x5e5019b9c09887deL,
|
|
0x2be744fea0f53865L } },
|
|
/* 254 */
|
|
{ { 0x054cd05f5b50f324L,0xb9b1eb241ea3c7a2L,0x4a858a5c7ff8e6b7L,
|
|
0xd83902feec040882L,0x72b26494d0cba9bdL,0xd0176f90b29c9e1eL,
|
|
0x05d4eb02cebadb81L,0x874405b1372b8bfcL,0x5c41288179ead190L,
|
|
0xd44a3dd3ec2b48cdL,0x84499a773f4d5033L,0xb37b38cd564c3a09L,
|
|
0x80e99497f42e803bL,0xc07b47a0b8f518b2L,0xc710e3c53568fde4L,
|
|
0x735f542fcead0e7aL },
|
|
{ 0xcaa9a17138380039L,0xadfafe17f74d19c8L,0x92d4393eccbc1a8bL,
|
|
0x3c5dbf39fe029705L,0x4552b5ab930e9b36L,0x7ee630322afd494aL,
|
|
0x826a9ad73f02ac43L,0x98c5356299356298L,0x0c869f877342bb39L,
|
|
0xd7510020e4f9b79aL,0x6361d1a4d34789a9L,0xf0ded5bacfa85637L,
|
|
0x407ee73f88ac07e4L,0xfac7d03f09ef1cbdL,0x25d697cb4d475badL,
|
|
0x1e984c9d14bd399eL } },
|
|
/* 255 */
|
|
{ { 0xc76d05614850c817L,0xb08a5b193489812dL,0x7273d1545e58cbbeL,
|
|
0x8900b5fa4be61e5aL,0xaa088691d7aeb8e1L,0xe66666afd35a3d4bL,
|
|
0x38a2c19957ec7d3dL,0xa0648e8f668d6f5cL,0x1f9fc92c7adc1746L,
|
|
0x23a116c0843065c3L,0x36370a2061e6ae69L,0x626c37362aa47e73L,
|
|
0x540c25f2deff6d84L,0x9804824ccdbed2d4L,0x4b5bfce0039a9492L,
|
|
0x6c474a5676942e01L },
|
|
{ 0x3aeb9a417d88e3a1L,0x105d3c88c484742aL,0xe59de8d13fe61131L,
|
|
0x148f5b6b1a869e8bL,0x7a8abc59aa75d90aL,0x2f0c9bc762146013L,
|
|
0x43faa747c3824cd9L,0x81763a186a5d0b92L,0xbbc341bc9bcbaebcL,
|
|
0xe1813160f745d1ddL,0xa53ce52db75ce5f4L,0x15eae66cd50de4c2L,
|
|
0x5ed8996c75d7656dL,0xe4ff5711c4ca552aL,0x215e985a3c5305b4L,
|
|
0x6b258954fa1ba2ceL } },
|
|
};
|
|
|
|
/* Multiply the base point of P1024 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* Stripe implementation.
|
|
* Pre-generated: 2^0, 2^128, ...
|
|
* Pre-generated: products of all combinations of above.
|
|
* 8 doubles and adds (with qz=1)
|
|
*
|
|
* r Resulting point.
|
|
* k Scalar to multiply by.
|
|
* map Indicates whether to convert result to affine.
|
|
* ct Constant time required.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
static int sp_1024_ecc_mulmod_base_16(sp_point_1024* r, const sp_digit* k,
|
|
int map, int ct, void* heap)
|
|
{
|
|
return sp_1024_ecc_mulmod_stripe_16(r, &p1024_base, p1024_table,
|
|
k, map, ct, heap);
|
|
}
|
|
|
|
/* Multiply the base point of P1024 by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_1024(const mp_int* km, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_1024 point[1];
|
|
sp_digit k[16];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_from_mp(k, 16, km);
|
|
|
|
err = sp_1024_ecc_mulmod_base_16(point, k, map, 1, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_to_ecc_point_16(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply the base point of P1024 by the scalar, add point a and return
|
|
* the result. If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* am Point to add to scalar mulitply result.
|
|
* inMont Point to add is in montgomery form.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_base_add_1024(const mp_int* km, const ecc_point* am,
|
|
int inMont, ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_1024 point[2];
|
|
sp_digit k[16 + 16 * 2 * 5];
|
|
#endif
|
|
sp_point_1024* addP = NULL;
|
|
sp_digit* tmp = NULL;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(
|
|
sizeof(sp_digit) * (16 + 16 * 2 * 5),
|
|
heap, DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
addP = point + 1;
|
|
tmp = k + 16;
|
|
|
|
sp_1024_from_mp(k, 16, km);
|
|
sp_1024_point_from_ecc_point_16(addP, am);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_1024_mod_mul_norm_16(addP->x, addP->x, p1024_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_1024_mod_mul_norm_16(addP->y, addP->y, p1024_mod);
|
|
}
|
|
if ((err == MP_OKAY) && (!inMont)) {
|
|
err = sp_1024_mod_mul_norm_16(addP->z, addP->z, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_ecc_mulmod_base_16(point, k, 0, 0, heap);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
sp_1024_proj_point_add_16(point, point, addP, tmp);
|
|
|
|
if (map) {
|
|
sp_1024_map_16(point, point, tmp);
|
|
}
|
|
|
|
err = sp_1024_point_to_ecc_point_16(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/* Generate a pre-computation table for the point.
|
|
*
|
|
* gm Point to generate table for.
|
|
* table Buffer to hold pre-computed points table.
|
|
* len Length of table.
|
|
* heap Heap to use for allocation.
|
|
* returns BAD_FUNC_ARG when gm or len is NULL, LENGTH_ONLY_E when table is
|
|
* NULL and length is returned, BUFFER_E if length is too small and 0 otherwise.
|
|
*/
|
|
int sp_ecc_gen_table_1024(const ecc_point* gm, byte* table, word32* len,
|
|
void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* point = NULL;
|
|
sp_digit* t = NULL;
|
|
#else
|
|
sp_point_1024 point[1];
|
|
sp_digit t[5 * 2 * 16];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
if ((gm == NULL) || (len == NULL)) {
|
|
err = BAD_FUNC_ARG;
|
|
}
|
|
|
|
if ((err == MP_OKAY) && (table == NULL)) {
|
|
*len = sizeof(sp_table_entry_1024) * 256;
|
|
err = LENGTH_ONLY_E;
|
|
}
|
|
if ((err == MP_OKAY) && (*len < (int)(sizeof(sp_table_entry_1024) * 256))) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
point = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
t = (sp_digit*)XMALLOC(sizeof(sp_digit) * 5 * 2 * 16, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (t == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_point_from_ecc_point_16(point, gm);
|
|
err = sp_1024_gen_stripe_table_16(point,
|
|
(sp_table_entry_1024*)table, t, heap);
|
|
}
|
|
if (err == 0) {
|
|
*len = sizeof(sp_table_entry_1024) * 256;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t != NULL)
|
|
XFREE(t, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#else
|
|
/* Generate a pre-computation table for the point.
|
|
*
|
|
* gm Point to generate table for.
|
|
* table Buffer to hold pre-computed points table.
|
|
* len Length of table.
|
|
* heap Heap to use for allocation.
|
|
* returns BAD_FUNC_ARG when gm or len is NULL, LENGTH_ONLY_E when table is
|
|
* NULL and length is returned, BUFFER_E if length is too small and 0 otherwise.
|
|
*/
|
|
int sp_ecc_gen_table_1024(const ecc_point* gm, byte* table, word32* len,
|
|
void* heap)
|
|
{
|
|
int err = 0;
|
|
|
|
if ((gm == NULL) || (len == NULL)) {
|
|
err = BAD_FUNC_ARG;
|
|
}
|
|
|
|
if ((err == 0) && (table == NULL)) {
|
|
*len = 0;
|
|
err = LENGTH_ONLY_E;
|
|
}
|
|
if ((err == 0) && (*len != 0)) {
|
|
err = BUFFER_E;
|
|
}
|
|
if (err == 0) {
|
|
*len = 0;
|
|
}
|
|
|
|
(void)heap;
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
/* Multiply the point by the scalar and return the result.
|
|
* If map is true then convert result to affine coordinates.
|
|
*
|
|
* km Scalar to multiply by.
|
|
* gm Point to multiply.
|
|
* table Pre-computed points.
|
|
* r Resulting point.
|
|
* map Indicates whether to convert result to affine.
|
|
* heap Heap to use for allocation.
|
|
* returns MEMORY_E when memory allocation fails and MP_OKAY on success.
|
|
*/
|
|
int sp_ecc_mulmod_table_1024(const mp_int* km, const ecc_point* gm, byte* table,
|
|
ecc_point* r, int map, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* point = NULL;
|
|
sp_digit* k = NULL;
|
|
#else
|
|
sp_point_1024 point[1];
|
|
sp_digit k[16];
|
|
#endif
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
point = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (point == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY) {
|
|
k = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16, heap, DYNAMIC_TYPE_ECC);
|
|
if (k == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_from_mp(k, 16, km);
|
|
sp_1024_point_from_ecc_point_16(point, gm);
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
err = sp_1024_ecc_mulmod_stripe_16(point, point,
|
|
(const sp_table_entry_1024*)table, k, map, 0, heap);
|
|
#else
|
|
(void)table;
|
|
err = sp_1024_ecc_mulmod_16(point, point, k, map, 0, heap);
|
|
#endif
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_to_ecc_point_16(point, r);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (k != NULL)
|
|
XFREE(k, heap, DYNAMIC_TYPE_ECC);
|
|
if (point != NULL)
|
|
XFREE(point, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Multiply p* in projective co-ordinates by q*.
|
|
*
|
|
* r.x = p.x - (p.y * q.y)
|
|
* r.y = (p.x * q.y) + p.y
|
|
*
|
|
* px [in,out] A single precision integer - X ordinate of number to multiply.
|
|
* py [in,out] A single precision integer - Y ordinate of number to multiply.
|
|
* q [in] A single precision integer - multiplier.
|
|
* t [in] Two single precision integers - temps.
|
|
*/
|
|
static void sp_1024_proj_mul_qx1_16(sp_digit* px, sp_digit* py,
|
|
const sp_digit* q, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
|
|
/* t1 = p.x * q.y */
|
|
sp_1024_mont_mul_16(t1, px, q, p1024_mod, p1024_mp_mod);
|
|
/* t2 = p.y * q.y */
|
|
sp_1024_mont_mul_16(t2, py, q, p1024_mod, p1024_mp_mod);
|
|
/* r.x = p.x - (p.y * q.y) */
|
|
sp_1024_mont_sub_16(px, px, t2, p1024_mod);
|
|
/* r.y = (p.x * q.y) + p.y */
|
|
sp_1024_mont_add_16(py, t1, py, p1024_mod);
|
|
}
|
|
|
|
/* Square p* in projective co-ordinates.
|
|
*
|
|
* px' = (p.x + p.y) * (p.x - p.y) = p.x^2 - p.y^2
|
|
* py' = 2 * p.x * p.y
|
|
*
|
|
* px [in,out] A single precision integer - X ordinate of number to square.
|
|
* py [in,out] A single precision integer - Y ordinate of number to square.
|
|
* t [in] Two single precision integers - temps.
|
|
*/
|
|
static void sp_1024_proj_sqr_16(sp_digit* px, sp_digit* py, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
|
|
/* t1 = p.x + p.y */
|
|
sp_1024_mont_add_16(t1, px, py, p1024_mod);
|
|
/* t2 = p.x - p.y */
|
|
sp_1024_mont_sub_16(t2, px, py, p1024_mod);
|
|
/* r.y = p.x * p.y */
|
|
sp_1024_mont_mul_16(py, px, py, p1024_mod, p1024_mp_mod);
|
|
/* r.x = (p.x + p.y) * (p.x - p.y) */
|
|
sp_1024_mont_mul_16(px, t1, t2, p1024_mod, p1024_mp_mod);
|
|
/* r.y = (p.x * p.y) * 2 */
|
|
sp_1024_mont_dbl_16(py, py, p1024_mod);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/* Perform the modular exponentiation in Fp* for SAKKE.
|
|
*
|
|
* Simple square and multiply when expontent bit is one algorithm.
|
|
* Square and multiply performed in Fp*.
|
|
*
|
|
* base [in] Base. MP integer.
|
|
* exp [in] Exponent. MP integer.
|
|
* res [out] Result. MP integer.
|
|
* returns 0 on success and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_Fp_star_1024(const mp_int* base, mp_int* exp, mp_int* res)
|
|
{
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td;
|
|
sp_digit* t;
|
|
sp_digit* tx;
|
|
sp_digit* ty;
|
|
sp_digit* b;
|
|
sp_digit* e;
|
|
#else
|
|
sp_digit t[4 * 2 * 16];
|
|
sp_digit tx[2 * 16];
|
|
sp_digit ty[2 * 16];
|
|
sp_digit b[2 * 16];
|
|
sp_digit e[2 * 16];
|
|
#endif
|
|
sp_digit* r;
|
|
int err = MP_OKAY;
|
|
int bits;
|
|
int i;
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 8 * 16 * 2, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
tx = td + 4 * 16 * 2;
|
|
ty = td + 5 * 16 * 2;
|
|
b = td + 6 * 16 * 2;
|
|
e = td + 7 * 16 * 2;
|
|
#endif
|
|
r = ty;
|
|
|
|
bits = mp_count_bits(exp);
|
|
sp_1024_from_mp(b, 16, base);
|
|
sp_1024_from_mp(e, 16, exp);
|
|
|
|
XMEMCPY(tx, p1024_norm_mod, sizeof(sp_digit) * 16);
|
|
sp_1024_mul_16(b, b, p1024_norm_mod);
|
|
err = sp_1024_mod_16(b, b, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
XMEMCPY(ty, b, sizeof(sp_digit) * 16);
|
|
|
|
for (i = bits - 2; i >= 0; i--) {
|
|
sp_1024_proj_sqr_16(tx, ty, t);
|
|
if ((e[i / 64] >> (i % 64)) & 1) {
|
|
sp_1024_proj_mul_qx1_16(tx, ty, b, t);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_mont_inv_16(tx, tx, t);
|
|
|
|
XMEMSET(tx + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(tx, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(ty + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(ty, p1024_mod, p1024_mp_mod);
|
|
|
|
sp_1024_mul_16(r, tx, ty);
|
|
err = sp_1024_mod_16(r, r, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_to_mp(r, res);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
return err;
|
|
}
|
|
|
|
#else
|
|
/* Pre-computed table for exponentiating g.
|
|
* Striping: 8 points at a distance of (128 combined for
|
|
* a total of 256 points.
|
|
*/
|
|
static const sp_digit sp_1024_g_table[256][16] = {
|
|
{ 0x0000000000000000L, 0x0000000000000000L, 0x0000000000000000L,
|
|
0x0000000000000000L, 0x0000000000000000L, 0x0000000000000000L,
|
|
0x0000000000000000L, 0x0000000000000000L, 0x0000000000000000L,
|
|
0x0000000000000000L, 0x0000000000000000L, 0x0000000000000000L,
|
|
0x0000000000000000L, 0x0000000000000000L, 0x0000000000000000L,
|
|
0x0000000000000000L },
|
|
{ 0x170a46d2335c1685L, 0xeac9e971e1007a58L, 0x40e8f3df43ca4a73L,
|
|
0x2646f81582642475L, 0x3af49bb4b36576d1L, 0xd89e2d1472bf1afbL,
|
|
0x27be882c2fd151e6L, 0xaddedc858f88717cL, 0xd6d859bf16ac6c6fL,
|
|
0x0e741a1b2d8eae58L, 0x6faf7a0061c1f30dL, 0x66dbd09a9b67e096L,
|
|
0x21f11c067d3b4f7dL, 0x6152ba02c727c98eL, 0xafd58891e86cb221L,
|
|
0x59e93c6a6bd3baf4L },
|
|
{ 0xe54dd36f71dd4594L, 0xbbc9cc9f00aef1e6L, 0x9ea5a44ea19f6530L,
|
|
0x8588aa993f520928L, 0x9753794c8f5c1418L, 0x118bd792c11399faL,
|
|
0xb9bd3afdf5cb6ab5L, 0x813d1cb22ecb9652L, 0xfd45626740389813L,
|
|
0x51f7119b4ac8431cL, 0xdd9f6a910a180eb6L, 0x13946d179f7bfa2eL,
|
|
0x16f1863150a9d0d9L, 0x5f19c20d6f8373d3L, 0xbe85ac6a9b6a52b9L,
|
|
0x63ef187b74f62e03L },
|
|
{ 0x7c376b7f016f45e7L, 0x1c1bdb572bec82f8L, 0x7392f741ce429b60L,
|
|
0x6fdbf0a2c7afd81dL, 0xbda41b1f7241098bL, 0x5b407474bb60f8cfL,
|
|
0x933e0d41b330bc4dL, 0xae182830733fa3beL, 0xa0ed299b0f5c6cd1L,
|
|
0x7ff3354e3f9860c8L, 0xb136098615559c41L, 0xab0cb63c129f85cbL,
|
|
0x682ecc4947685fbeL, 0x505e8ec2eb199633L, 0x90dcc794ddac2cdaL,
|
|
0x4fe6791cf192da23L },
|
|
{ 0x94a423d505e8733cL, 0xcc845e651d5717c1L, 0x237c7e88e961b322L,
|
|
0x0c4471c6db4181ccL, 0x00c875e2713bd721L, 0x9dfde9edb2c17b09L,
|
|
0x430a6de5e88ceaf6L, 0xaaa7a61a7b81cea6L, 0xea52d026233f98d5L,
|
|
0xb55efdd060689a9aL, 0x30cfa7ce5cac4aabL, 0xfa4db1148e950761L,
|
|
0x309570c44e9a1e52L, 0x18c21f611a040170L, 0x555d1ffebe78d9d2L,
|
|
0x04482a18561db297L },
|
|
{ 0xe7758ac273d486d8L, 0x8169f94661cdc1e7L, 0x723c99fc2188ab4fL,
|
|
0xa0e54f02f3373630L, 0x560bee25bd8c2260L, 0x28fc307c4531bc60L,
|
|
0xd6f21f1a7e44feb5L, 0xc8e4499c57128d37L, 0x963b053ed7b2ea45L,
|
|
0x40c27a0432a3d222L, 0x5b51854d35459668L, 0x66e1a49fd73557e9L,
|
|
0x0d267fd98692077aL, 0xfa1350d3e7342702L, 0x1a9c3f2568ccdb44L,
|
|
0x833a0ff8dedbf89fL },
|
|
{ 0xa8c419c7ab376b76L, 0x3b7294f327d0f0ccL, 0xe56bb9e2a90c514dL,
|
|
0x931ba51ea62575a6L, 0x56fee07b098c0a88L, 0x04be5aeeb4c16a2aL,
|
|
0xe513350be6eb260bL, 0x339edad6a1d5c270L, 0xf366ed59e9dbadd1L,
|
|
0x4213be882dd06ec0L, 0x22d639c8cb1187dbL, 0x1fec95e1d8a1058aL,
|
|
0x03f73ea6a2b744f1L, 0x741fd51af4f05c0cL, 0x2e2df95a85f811a0L,
|
|
0x692b3ce3eb24965fL },
|
|
{ 0x0ce6cb72d2a127b4L, 0x66a46ea58f92816fL, 0x43ecf46347a37616L,
|
|
0x163d9a01e0ab96eeL, 0xc8145c6db2edbe8cL, 0x2f426cae4de4e665L,
|
|
0x174d0b4074e252f9L, 0x54c240d77d2af831L, 0x581fa3973d652936L,
|
|
0x05b9491ca09d4695L, 0x8c4e85335452643cL, 0x32d64331d4128327L,
|
|
0x6447903870361f25L, 0x774191b189ef09f2L, 0xc0cf0aaf81de5fe0L,
|
|
0x333e430af40042d6L },
|
|
{ 0x5df04de4cf26d3b7L, 0x57a77306b53f79beL, 0xa4013c5f1808b664L,
|
|
0xef291ea485037360L, 0x1ffc9d7d0b061037L, 0xd9d04dd965c913bbL,
|
|
0x948a37aff13b8587L, 0xb5443483fe3ee755L, 0x3fc21e7404631386L,
|
|
0xb3a104e5cddeb58cL, 0x94fe18626572cd52L, 0xeb9a71a115aaa408L,
|
|
0x8adc6fe5459ea462L, 0xbb18d1754aeb02a3L, 0xae1276362f7791d1L,
|
|
0x10e8b31dd6bbd708L },
|
|
{ 0xb87f03e53ed9f1afL, 0x03ad247756676166L, 0x38dcd63074ce15b8L,
|
|
0x1877e2b026b1e85bL, 0xb1654d171af99c15L, 0x9782e9e49382547aL,
|
|
0x6dc7fc7c26d55ef5L, 0x9038f95d2fbeb54cL, 0xfe590dfe036c0357L,
|
|
0xcfcb6eae4fdc3f7fL, 0xcb1fbc54f35e1a88L, 0x3c8e1db2da0a5568L,
|
|
0x9a87393f5b6f5557L, 0x38646b32e7ac0a06L, 0xfd261c832a8495abL,
|
|
0x6485524c0cdcc4bcL },
|
|
{ 0x1abfb3e2c4a6ff2aL, 0x2aa03fba35a6428aL, 0x884227f089aff742L,
|
|
0x2337883aba5dbd93L, 0x38186ae9d2a182cbL, 0xb9f0764d49a01f05L,
|
|
0x92411feb917b1e7aL, 0x700b1903570cbb5bL, 0x5d5181d5b914be7cL,
|
|
0x135c44371981182dL, 0x32758d24574b9997L, 0xa650a8f5632d28b2L,
|
|
0x24078bacfa383f09L, 0x6546a60c00a33d80L, 0xa4061c7a2df8b449L,
|
|
0x1f76f3f2f234563cL },
|
|
{ 0x9aa2c14344c436b0L, 0x790705561f69c87aL, 0x35f3117b5f6db2dfL,
|
|
0x85761f41ed56ba82L, 0xf831464f7d0afa48L, 0xa99f29153adce71eL,
|
|
0xb27bf693116b7488L, 0xa98a5a8c9bb9443aL, 0x7f8780262ee5fde8L,
|
|
0x3a6f93dd1812acb7L, 0xaf92a4ccdc84bc92L, 0x3c2562aff1d4995aL,
|
|
0xfd9fc33c04ed899dL, 0xc028ca944ed2a538L, 0xd0f367bb049ea726L,
|
|
0x04924ffb3d108e05L },
|
|
{ 0x06548e3dc673562fL, 0xd3b33025e2eae48cL, 0xe61fd32b5e1c6977L,
|
|
0x424e20646ebe557bL, 0x767391c041d6e18eL, 0x4b8ebb8e14d7e95bL,
|
|
0x4ae8b7d420991b8cL, 0xf8a0df66e01290d3L, 0xc97e24a3925e5f4eL,
|
|
0x79a7b2cb1508272aL, 0xb40b072e25072661L, 0xdad9e1829062fa49L,
|
|
0x8780a784f3c53bceL, 0x58a82b769f142799L, 0x08cd849cc1468426L,
|
|
0x4dfce809c380ae35L },
|
|
{ 0x45069cb2d527b780L, 0xd52da015977930ddL, 0x10cc600be27d0263L,
|
|
0x34102c26bb2d1b2bL, 0x4c652623554adf3cL, 0xd689138245f0ff47L,
|
|
0x83fa8cc5ca916e7cL, 0x1e10f139d15c8d8aL, 0xf173dc2e81dc56b3L,
|
|
0x7fcecb045c4ed9baL, 0x307fd7d847d01228L, 0x24a571539f3a532fL,
|
|
0x59e9e81de2153c22L, 0xc562595de428a408L, 0xdc7daff89339bd23L,
|
|
0x0d075908b8a06802L },
|
|
{ 0x870af2a7de085f2aL, 0x88fcd24fbe99b2e5L, 0x88c0d26159ca413bL,
|
|
0x1f02a2e48559f851L, 0x83b96021f622da0dL, 0x5c05c2f56dca3615L,
|
|
0x0148cf1c7910c682L, 0x392f2896272695beL, 0x883d0bb5a8d64ef6L,
|
|
0xef0d22441cfcbc52L, 0xf5dafcec526117e5L, 0xb68612b9f04928e9L,
|
|
0x283f744d393f2e2aL, 0xfbeed7ed700c1151L, 0xf2cde215a4360dfeL,
|
|
0x24fa961c2f08535aL },
|
|
{ 0x0767db3f616df7f6L, 0x643057d8fbd90326L, 0x174daa906e82d544L,
|
|
0x2284f345689643dbL, 0x18b191dfcc89a060L, 0xbab46af4d6c27d12L,
|
|
0x5a57f486c9895145L, 0xc03214e9cc942f9eL, 0x273e1c8f41950158L,
|
|
0x8ceb759f39ad43abL, 0x5e1b8b7fe50ee173L, 0xf635b1fc8f4d7d4eL,
|
|
0x8eff77e3755603f3L, 0x201f61d17752fa60L, 0x94d7a03d4a6fb6e1L,
|
|
0x371cc23dfc4f0114L },
|
|
{ 0x289b115dda90c351L, 0x6d196ebf364d9c06L, 0x77a89202f650b31bL,
|
|
0xcc28c1646f57642fL, 0xdc4f7e3608100127L, 0x8836cd08dc4c807bL,
|
|
0x1280f156e00240f2L, 0x3f9a6d7899cb3953L, 0x40a494d33a802038L,
|
|
0x45697e91e87d3474L, 0x70d97d0726dde24aL, 0x06f6a58d7640c30eL,
|
|
0x03c2c0e85ba6e6c6L, 0x330f6a7af1bc13e8L, 0x3e602e4fc9f4d78fL,
|
|
0x92b6bca00c80fb7fL },
|
|
{ 0x2e3d5c835f00822eL, 0x0e825712b8b16f12L, 0x81c329c492b0a330L,
|
|
0x6b4e32ada7cc1954L, 0x0bee9cee1bb1413fL, 0xedfb7baa4a92ca27L,
|
|
0xcd472afaea3b9153L, 0xe8f09e7e00f0c0f9L, 0xa4e1d8725cdebb70L,
|
|
0xfe2bae084a9b63b6L, 0xf40141b83fd58f65L, 0xd7ec5edaa3b62759L,
|
|
0x9aaf6e67790e3088L, 0x215ad8301f277e31L, 0xe7db4b98cf33871cL,
|
|
0x71ff62c94f02f89dL },
|
|
{ 0xaa4c71022a4a84d9L, 0xe2ee4acd5ebc71e6L, 0x3b11a8a5f1cd6578L,
|
|
0x83f5ef9ffff120a5L, 0xa4c598e109e65033L, 0xe1e9f990ca044180L,
|
|
0x8b832d46f59828c1L, 0x753f28a033af536bL, 0x92edc4b1b6d4f68aL,
|
|
0xedde692a72ccd1f0L, 0xd3aa0f7dd2226432L, 0x38dbb63ea3d2661cL,
|
|
0xf1e19fc6fdc37ddaL, 0x6c18b35084ef6b4cL, 0xe6a83fe9df1bba69L,
|
|
0x40fd47e75f958273L },
|
|
{ 0x5b88b746267140a4L, 0x6dbbfc1eeab6f2fbL, 0xdd9ec88e69862548L,
|
|
0x69beeba12eb6efc2L, 0xcfc2214a8ac8ff88L, 0x95d5c96eb5a21950L,
|
|
0x93389c054171fb69L, 0x2d85d4521b468337L, 0x14d68a084113425cL,
|
|
0xe52c0139ec6c2174L, 0x20cf0b97f730084dL, 0x1ac16a261f578aa3L,
|
|
0x18b9fab3f9b6ae43L, 0x68d82111d854a695L, 0x0b334d98dffbe286L,
|
|
0x5b1c1157e639338cL },
|
|
{ 0x90edaab172b6bb8fL, 0x8dc64ed202fc92c2L, 0xf42ba3c5fe694c73L,
|
|
0x316dc65fcb54dce4L, 0xcb2d66a3632420dcL, 0x16e706e7056dcf94L,
|
|
0x2809c764a4f32c9dL, 0xab18d830ea6edca8L, 0x4fd1ace681c65f57L,
|
|
0x1f91651c7da12c10L, 0x0ac3bd66c7791a48L, 0xb6ad1cf4785e67a3L,
|
|
0xe4d3fc44da0fd591L, 0xce1648016e1c6344L, 0x84de9cb833e50ab3L,
|
|
0x963ab83aa756eef4L },
|
|
{ 0x944b47d8df4ea5a3L, 0x965688155cfe45feL, 0xd16e7d588a3c3564L,
|
|
0x84e55b3ee7c99e15L, 0x3fee204df55071bcL, 0x71006f2904057dceL,
|
|
0xfe8c390dbba75570L, 0x3645bcb63319adacL, 0x8189e8b07c20bfd8L,
|
|
0x8e5509697d7d9578L, 0x037d1321b99f4e3bL, 0x011b2521a60cfb6aL,
|
|
0x66594aaa837382daL, 0xc89b91fd83c1dc07L, 0x6b82b899076b9884L,
|
|
0x443480fcbe45c558L },
|
|
{ 0xf8ffffb49114221aL, 0x4aec4f2e3e857a7aL, 0x42e2d0e40fa54787L,
|
|
0xef3e6b31d6f96152L, 0xb2296537fbfe9b77L, 0xc2a9d0f2fb43a86aL,
|
|
0x241284ed24572ac6L, 0xa3868917e721ba7bL, 0xdbef7c00c117a78dL,
|
|
0x38149071d31605acL, 0xc2dada9e065a8ee9L, 0xd5b138d8c442be82L,
|
|
0x9b6c224bf6d72b58L, 0xb9d355cf8eb03e6dL, 0xab6d1eb0a1700371L,
|
|
0x97118a88cffaa7ebL },
|
|
{ 0xbf9c59a2cdecb5d8L, 0x8083c81ba93a6866L, 0x24e0dd8104774fbfL,
|
|
0xe779a3caa02070b4L, 0x9d352fbb0fbfb781L, 0xa8b0d8203ef2a1c4L,
|
|
0xb858637b14b3e501L, 0x5ba70a498a882ff2L, 0xa27300833b06efa5L,
|
|
0xa42c02f4102fee2aL, 0xe4e762998a0223a5L, 0xdba2ba2685c3fc72L,
|
|
0x554fe763fe52eae7L, 0x30b5405a270f45f6L, 0xd56a177aa573387cL,
|
|
0x17c0778d4b71fa82L },
|
|
{ 0x0e6dff1d2735e37bL, 0xc9884e56656ec572L, 0xa2f5ac9d9ebba978L,
|
|
0x40fa4518ba09f3c4L, 0x8c3fa177f5b04377L, 0xa1a1decd967a2ecaL,
|
|
0x768bca700528bd40L, 0xf224952b18691c4aL, 0x16e12c45e86d5fd5L,
|
|
0x7a0d915737859a6aL, 0x723f4309a0ffce0eL, 0x5a8db79ba96cc9a3L,
|
|
0x6dd12ae01ad23a38L, 0x9ffec3a1e2bf5d84L, 0xd6ce84e1a452ed66L,
|
|
0x1219d5c8571fe4c6L },
|
|
{ 0x43eaa67f262969ebL, 0x3a3ab39d2f03e773L, 0xe6127e5157bb0909L,
|
|
0x0f82b0ed8d150274L, 0xffffcad8e580bdbdL, 0x51d3d075a9743e6bL,
|
|
0x1484bdb18bac11d6L, 0x95cd9990eb24c388L, 0x216a61d07fac67c6L,
|
|
0x4308f762a04e6b87L, 0x2865dd61cba57cc8L, 0x3c296b0dd234a07aL,
|
|
0x76f928393a0793f9L, 0x70b57e1f0be29eceL, 0x1314a82f7e626f42L,
|
|
0x2c8d7ab2d657f230L },
|
|
{ 0x67cf58920825e4d6L, 0xdf51eaa56ef83b44L, 0x63e665d81310108dL,
|
|
0x229f89f58dd0963fL, 0x8c4b14dd9df6436aL, 0x99dae469d45ebba7L,
|
|
0x118aab775a4df381L, 0xda8978bd29e37febL, 0x69ced5aaaca2d7efL,
|
|
0x6c98d05dc67d6a8aL, 0x7474bf0d77f84a34L, 0xd4428b2eed8cd59aL,
|
|
0xb0fd1cd5d1d398fbL, 0x596013db94a20b11L, 0x96eb705a1b404c44L,
|
|
0x2299d2774b09d958L },
|
|
{ 0x5b9cd58dc64397e6L, 0xac198f1ebf6dd31eL, 0x5866d8e13e9f1db2L,
|
|
0x405ae2878fcdc68cL, 0xa4b280cde53c01fdL, 0xdc963f2d411db5f6L,
|
|
0xed5d5189bec4f8a0L, 0x336fd13d916ee98bL, 0x6925b1b3042df48eL,
|
|
0x0cf56291ace0074eL, 0xe8d38b4825317e95L, 0xc7ad1d2b821c446bL,
|
|
0x71c44135f0b65934L, 0x971b736f52ca0d50L, 0xaf9ffa5727b46c26L,
|
|
0x21ac67791936618eL },
|
|
{ 0xab420e3f2d7fbcd2L, 0x1272247397bdfc18L, 0x492033f84df5d4b4L,
|
|
0x6fcd42363807b7d3L, 0xdfc19b09b33c3625L, 0x13d6f375a0f22814L,
|
|
0x70978a59037c19b8L, 0x4f3989970ff27b9cL, 0xfc0e1a45615a4389L,
|
|
0xffa3496a3e602f74L, 0xc3f1c431b261ca1cL, 0x612211dbee0164cdL,
|
|
0x30463ee4e7f7be9fL, 0x015f7e7892c2e1bbL, 0x663d88d624483a56L,
|
|
0x0e8ec1e70e62d9d8L },
|
|
{ 0xa88ccc298a0878ddL, 0x99ac175d6640071aL, 0x90344820a5173617L,
|
|
0x316d023edd58a315L, 0x30785bd488d221a1L, 0xb74b3de7959c48e3L,
|
|
0x42ee03824c67a771L, 0x59ef6cdde0b91453L, 0x7830ae289b237e91L,
|
|
0xe1847a4c495d8325L, 0x67b1217ed0773666L, 0x58192c86a294a325L,
|
|
0x76aa0f56864d8326L, 0xe2a2bd12f4b13e5bL, 0xd850c1c01b6b73fdL,
|
|
0x653a795f5d103635L },
|
|
{ 0xcfe2898550dcb199L, 0xb35b8e5e7fa02b60L, 0xbca7d7c3c97603d0L,
|
|
0xb0e5288d27f131b5L, 0x3aa704dee2b12d52L, 0xe206b1d81db725c7L,
|
|
0x0b12839ac5d1b113L, 0x14f970cbdb45d763L, 0xc997f93eb2125e8eL,
|
|
0xbd75739cee7daa26L, 0x46ecbd3f1fef20e9L, 0xf994a1147c6a42b1L,
|
|
0xd289eb4f27fb0fd1L, 0x11186d319a40da4bL, 0x083f65a5fb9d7976L,
|
|
0x30dfc47bd444675eL },
|
|
{ 0xbcfc5ae29eaadfe8L, 0x25027e54b4d4e812L, 0xab0702df8b533561L,
|
|
0xa2b9c20456a6a214L, 0xb1a3df7a3059068eL, 0xa3514b219883110fL,
|
|
0xb7be2336c4b78e1cL, 0x17073ce63e2f6984L, 0x86e114a62ddf7ac6L,
|
|
0x276192bf07d7c3c8L, 0x5da69e0beb1ae289L, 0x983af17525184939L,
|
|
0x9ac52a4d407a3aa0L, 0x1535c7daae0fe218L, 0xe16fe872397f2501L,
|
|
0x572a591f54c212cfL },
|
|
{ 0x4966841909a5553aL, 0x3f054318327733bcL, 0xf9ceb4b23eefd690L,
|
|
0xbd3cbf9bf22126d4L, 0x6d9671c02fed9578L, 0xbba597ceca0306d8L,
|
|
0xb705ed613d674fe5L, 0xf1d3622b67f33f76L, 0x15bcf3c611cb8c31L,
|
|
0xa38467dce53d1aa9L, 0x902fe929f908ab43L, 0x6e3e499d8d15767aL,
|
|
0x8142db5c90afd07bL, 0x120c6fbc6c8b190eL, 0x80c8655324919a4eL,
|
|
0x65c2cbe1d8c82c3cL },
|
|
{ 0x684cda20a660bb63L, 0x27dc3b0a86e86245L, 0x76472cf66ba0eed7L,
|
|
0x79c162e5679dd158L, 0xb688427708452d44L, 0x829bc6b3413f579eL,
|
|
0x92ea15ec95011770L, 0x5e34e30047738183L, 0x8c3ca34973e1d2f1L,
|
|
0xa5c4f1dc229bd3deL, 0x783eff1b94ef7ed3L, 0x46db738ddfae7a1aL,
|
|
0x4353d72e1a099852L, 0x2533ad58a0dcf4abL, 0xd80550160e7888b9L,
|
|
0x831440d53ba77f66L },
|
|
{ 0xf43e2e32f611b2daL, 0x5d066e29d0fa46acL, 0xe897f3e8820b3c0dL,
|
|
0xc45c28e61d3e44f0L, 0x929d7f66dfd27a66L, 0x735b860a101e8517L,
|
|
0xea3fce983de078ddL, 0xc9977db5638ce11aL, 0x0488382f48536b3bL,
|
|
0x7e0c7a3c64cadfc6L, 0x3cd17f7f82147b71L, 0xe95663cc1b411e3eL,
|
|
0x5739ac8f985fb46dL, 0x385399cdbcf119caL, 0x4a985a70e15a2815L,
|
|
0x504c3a8a6d5f4566L },
|
|
{ 0x00b55283b8fa53c7L, 0x985cff38509474e3L, 0x234d241c437ce25fL,
|
|
0x29832430e5a129edL, 0x6ad38956aabcc674L, 0xa2dc001d7ee81ee1L,
|
|
0x4c23c6b6670b2702L, 0xb35e567ea6e8a3bbL, 0xbc70b3cea69673eaL,
|
|
0x85a7a9c3e6e28eacL, 0x2ae684de5537b7daL, 0x5ecac3e56de937dcL,
|
|
0xbf2ea6c9f8430422L, 0x38caf7d077fdc520L, 0xc27af0b169f56addL,
|
|
0x496e4699c71d21d2L },
|
|
{ 0xba14fc829fa93467L, 0xc2e376840eb2a614L, 0x659bcfaf4833e09bL,
|
|
0xbc8597523686bdccL, 0x40bfd08081f3216aL, 0xc463bda617c081b8L,
|
|
0xbd01fa86bb04793bL, 0x5a21ece62cd640c5L, 0x97bf6a542203d5c4L,
|
|
0xceb40edc951167b7L, 0xd67aacaf765ba268L, 0x8ba0d9e9aeab51f9L,
|
|
0xc14b215eb0d6863aL, 0x354cdcdbe5f06952L, 0x4f2b5ccfcb3744b5L,
|
|
0x1338917313037fe8L },
|
|
{ 0xee68064045003cd1L, 0xfdac17bc44ae2ac6L, 0x4bcd419fde8e5314L,
|
|
0x81e34eb9c7cea95cL, 0xbb57762d38f37e01L, 0xecc4cfb0260990c8L,
|
|
0x0bc493f950a34a7bL, 0x68074172543304efL, 0xaec0fcb26bc8aa2aL,
|
|
0x9e7a9b463b45fea5L, 0x4bb2952e55fbdbacL, 0x50f0c0a60485dff4L,
|
|
0x02c5104d4dea4796L, 0xd2cefa09695e3a02L, 0x4c8102b46da1f345L,
|
|
0x422eb573f3833fbdL },
|
|
{ 0xac592eb6a6ad3f47L, 0xb0861f6d9714ba0eL, 0x57c1e91907281459L,
|
|
0xcf7c94e264ea5803L, 0x725376ac54b12723L, 0xf2a6ba41dafb736aL,
|
|
0xc89e8920cba03cdcL, 0xf2e20cb45b0fd3adL, 0x26ea5a54d66059feL,
|
|
0xee63fa8b889df8bcL, 0x40f1c7e166a3f2bfL, 0x09febc9c747312e1L,
|
|
0x7d19b9c2727999ffL, 0xa9fbbb4cb7fd2b05L, 0xcfba27d7a0da2dc6L,
|
|
0x368541cf2c252582L },
|
|
{ 0x510d3c9e22799d37L, 0x1b677de5acfa333aL, 0x4e6ae18f080f795bL,
|
|
0x69b53c2aafc8dfc2L, 0x797541b60e842dc2L, 0xd5a6f2afac067fe8L,
|
|
0xd0208a03bd07d877L, 0x34b473f0654be2f2L, 0xe67c102af515e23eL,
|
|
0xb00dbf9d2ac1af48L, 0xe264fa41b6a13d00L, 0x1669786a97e94c11L,
|
|
0x09d8cf2d86a586f4L, 0x073bf869c7f927e9L, 0xb89778802241a566L,
|
|
0x59a5bf5922261334L },
|
|
{ 0xe9d1c91e81347191L, 0x186c1abceb969972L, 0x07888767a9d46a7fL,
|
|
0xda93cfccdaa7d397L, 0x08bee9f1d91b9aa0L, 0x8267fd78f8dd3c6cL,
|
|
0xf93860d094228100L, 0x6a6a71aadadb47fbL, 0x9caa06b7a6156f8aL,
|
|
0xaa1b05e039848bc9L, 0x36ddc2372aaa9135L, 0x77e7e079b13f3bd1L,
|
|
0x8d0b5cbe4acc5f4dL, 0x04da45f8984cfd36L, 0xf14ef618d3d3e0f8L,
|
|
0x467564c143eb799cL },
|
|
{ 0x8d725904b6fff5d7L, 0x037f33af92dc4752L, 0x9095d5756d20b8aaL,
|
|
0x32235fc143baec39L, 0xa2feb4af68a2b9b0L, 0x61c5031894d35c61L,
|
|
0xac92b6a2ea877486L, 0x8eb48b15011bc6f3L, 0xa28fe128c79edcb2L,
|
|
0x9f71bc0ca5d2a006L, 0xf31677322f15b850L, 0xfe8d728c7a036218L,
|
|
0x068f39cb4f81e09eL, 0x1773f0167b7c50d9L, 0x0d0f7adbed6a1e03L,
|
|
0x8a0dee164ee984d5L },
|
|
{ 0x504991bf47366e6fL, 0xb8084d9fe86c3005L, 0x14c4c751a40cce36L,
|
|
0xbbb46aa63f1961e2L, 0x56a785f940445e43L, 0xdb8d1b57c91e215fL,
|
|
0x6a8e453ec7ee808dL, 0xc0367ef8bbaa1e8cL, 0x310d91f1e3e18109L,
|
|
0xf97cfd0e7e20a2c3L, 0xf1e80c84554cc277L, 0xe89bbc1d7b628403L,
|
|
0x7778a9663fe0a17cL, 0x9e9db19fc1f00073L, 0x2ce7fe7db6f6bed2L,
|
|
0x7b04b5d2ee97ce23L },
|
|
{ 0x5b546bc782c5faf8L, 0x1a734c5e8eb81097L, 0x3d566861e77851e0L,
|
|
0x833a1013e956d51fL, 0xc7351731c3c3c37cL, 0x607738fbe0c148ecL,
|
|
0x2ec6f0bbe1bbef41L, 0x0aa2ac6ecfa51857L, 0x072902d766e3adf0L,
|
|
0xcd4d5089c622d6e3L, 0x3ae21b23a6dd802fL, 0xe5465a5533886372L,
|
|
0xd85119a0a8d81822L, 0x4f14d0323786977aL, 0x515b081c9c7b272cL,
|
|
0x1c6a95a4c99be31cL },
|
|
{ 0xa6b14ad5c2821363L, 0x829c18234d17de1cL, 0xaef5d2c4ccade848L,
|
|
0xf412ab3982489e27L, 0x92c9c098f081d927L, 0x6f87bdf475cbad1fL,
|
|
0xf4aadab81a1d9fb1L, 0x475a7923b75f3b76L, 0x99dd0ad6dbbba8feL,
|
|
0x836f61644b70ab45L, 0x2a46488134bd9af1L, 0x5c91226eba9abda3L,
|
|
0x4cec8709e65625fbL, 0xd4b3919e0818e4beL, 0xa5c09c8414f6879cL,
|
|
0x72708a0230a864c9L },
|
|
{ 0x4f33c0b1f34a466cL, 0xa1bae09c7f9d45baL, 0xd70f0fee0e28785cL,
|
|
0x824c714690880881L, 0xe2416c2abb043da3L, 0x733da713cec6f432L,
|
|
0x2b590649c9793e1cL, 0xdb62d5b0b35c9365L, 0x355eb6e23e5c1b2aL,
|
|
0xcfe8b5cebb16b515L, 0x9e081869f709691cL, 0xc865f9fb61a85bd5L,
|
|
0xf169d3ccfae103f7L, 0x9525c47373467e9dL, 0x7db55c0b43695113L,
|
|
0x7491c74c73265d21L },
|
|
{ 0x312ed5bf80d2b94dL, 0x1b8ac633ba4b260bL, 0xac86c58cd62219a1L,
|
|
0x317ccf6baeb82c8eL, 0x2dfb29ee59ef9cedL, 0xdaa7d898e42bcd5aL,
|
|
0x93e295c85974b201L, 0x69e75784d9fc5adcL, 0xd6c4709f012aa3baL,
|
|
0x1fda9f37c85d3cb9L, 0xe5487e25d3dd4abdL, 0x00fd4b010b3ba22eL,
|
|
0xcb591493c6e8dcbbL, 0xb7329fabbce68664L, 0x6829d1c268906b76L,
|
|
0x8bcfd3e574176841L },
|
|
{ 0x06882734d3c8c314L, 0x95f0b2f111870833L, 0xb937f7c3c068ba16L,
|
|
0x5365e0d877924787L, 0x15527e5e1f992227L, 0x0a06964827dffd4fL,
|
|
0xd58b3df22f586389L, 0x83446b896af20eadL, 0x09d7970b50746257L,
|
|
0xd9e8d2064022a691L, 0xd1e5f8af671ec379L, 0x6f542509057fe91eL,
|
|
0xf14dda8152890418L, 0xbd78010e1db932adL, 0x3e18d1e4905a9378L,
|
|
0x53cadcf7bd37ab49L },
|
|
{ 0x1bb5edf75e53d0ffL, 0xd886606c888abf67L, 0x6491b0f812206d15L,
|
|
0xb3018345e22b6a33L, 0xaba6794bb173b317L, 0x8c1e58677dc9e595L,
|
|
0x4e106482239624d1L, 0x61752e59da55dd53L, 0x018b4eab9e42879cL,
|
|
0xcaf6784b491f2bedL, 0x3dcdb9d21e79429eL, 0x3694148510f26224L,
|
|
0x106f190aa650ec5cL, 0x7542a5aeb69a9760L, 0x69bd75e9c32d1046L,
|
|
0x90849964bf8c62b1L },
|
|
{ 0xb1390cf65a93c661L, 0x184862649db5f056L, 0x92a93a9da51a1788L,
|
|
0x1b0cbb8f6772de9aL, 0x6e67febd7c71487cL, 0xf9b4382d4e62423eL,
|
|
0x96fda50ebb5a42f8L, 0xc921b3376089a4f2L, 0x49d32d7b875ec516L,
|
|
0xbd86d2cac410124bL, 0xf6862209c421fb7aL, 0x3e1949abf6b7de33L,
|
|
0xcdee18f0e93c9268L, 0xd4edbd5e08dc4cc0L, 0xc2b75be473580d22L,
|
|
0x3d7f6ffa468cd7e8L },
|
|
{ 0xea7b290cdffbd5d1L, 0x9d759da6970338dfL, 0x56680b0890feedc9L,
|
|
0xbc690af542dce68eL, 0x8519df2bb2ae4d82L, 0x5612467f7f195b60L,
|
|
0x659a342cd83c21f4L, 0x55771bf555651633L, 0x5fc68935548ba562L,
|
|
0xb54192039492f23aL, 0x567528e39c9c6017L, 0x3f064ed4511e6019L,
|
|
0x303f9eb91d16a555L, 0x3e18c4fd2254abeeL, 0x40994d6ffd434e7cL,
|
|
0x8fb12d3f6dde74e6L },
|
|
{ 0x6c6381a2293cb7a4L, 0x453e09f0b87b7e4dL, 0x4f212823078ac3efL,
|
|
0xe89ffad0578cae91L, 0x4a2b696a716ba4ddL, 0x14681a14f6f580a0L,
|
|
0x1358f97b4c2f1307L, 0x878969962932fb89L, 0x29dd850a268a5af7L,
|
|
0xaf771f6dfe239f83L, 0x5f20fd2e4f47499dL, 0x9b643e77867ca0e9L,
|
|
0xe7858ecd375981ecL, 0xbe946a5919ab1c97L, 0x4f9303a206ff3453L,
|
|
0x3fcc673175d237b1L },
|
|
{ 0x509debd5df21f920L, 0xfaf70e1fc1401b90L, 0x2429cbfd95a64aafL,
|
|
0xf21208552c37a122L, 0x1d4c93f47deb926bL, 0x12f3e4c09fb3f1dcL,
|
|
0x56085a595b51bc46L, 0x2a2f5d62f10fdbd2L, 0x60dd62cfdf0cb3c2L,
|
|
0x154424a36b0f254bL, 0xc3a5a05d564612b7L, 0xbebe30cfa1f5249cL,
|
|
0x24ec69037e62a188L, 0x75f0fbacaf429939L, 0xd41345dcb3fa8685L,
|
|
0x645146fdc7151c34L },
|
|
{ 0xecec633aba1924f9L, 0xbba6f136006326e1L, 0x203757ac7e50fc17L,
|
|
0xca531919ef3d8e00L, 0x9545a6aa51dc5a74L, 0x6e21d58fd31412b8L,
|
|
0x01bc30057bb1d000L, 0xf1789c696ed1a9c3L, 0x7af2d35f9858fa48L,
|
|
0x434d09b98197be85L, 0x1dc0775529aa265dL, 0xcad03be7c058fa80L,
|
|
0x92d70a9f54ba14ceL, 0x6dc785056c050a74L, 0x2a7ca4a94d005ddaL,
|
|
0x448d3d72abfb9f2eL },
|
|
{ 0xdc56f14529b33989L, 0x868351bca9ae815aL, 0xb3f456134b074414L,
|
|
0x955ce42a3cd9f33bL, 0x13ade4ec5ff6e4a3L, 0xd3aac715a50eaa91L,
|
|
0x0c61ec995666efdfL, 0x108a28b8f6a4470aL, 0x402ef584e54844c9L,
|
|
0xb825b162d0e2f337L, 0x3dcd131fb46f7cbcL, 0x208178ec96f2fd89L,
|
|
0x4d8c5d6725928c78L, 0x285a33df9963c459L, 0x72497175d92a309fL,
|
|
0x76881479cb7019a5L },
|
|
{ 0xba43a11491767eedL, 0x5e11b9ad92bf65dbL, 0xe8a22ce003a5e21aL,
|
|
0x636044212a335415L, 0xc2c563b44a9ead62L, 0x4bc06264a0b2aee5L,
|
|
0x75b8d5758bf2e1d7L, 0x1cff0ee7d08a265dL, 0x17914e1db0b712a7L,
|
|
0xc35925d04b18692dL, 0xde253f4c56cce815L, 0xa479241c9fff0e3aL,
|
|
0x50b9d06eddabed19L, 0x6713526059fae506L, 0xf37600fb532ce180L,
|
|
0x670eb01c5e5a8626L },
|
|
{ 0xdf73c0af73cdbb43L, 0xcf08ecc57f2431adL, 0x917805412a1a3845L,
|
|
0x69a104f29224ddf1L, 0x4352f38dbeac7effL, 0xfc3b3b4e7c2d1322L,
|
|
0xa69e9430b5e4b476L, 0x7d932340975a46f0L, 0x8093899e5d64eeceL,
|
|
0x7b821250db2345e9L, 0x235529327f4b796bL, 0x2ee9cc154bb90b1fL,
|
|
0x1fa9c8f59112f7d6L, 0x2d0f2f981cbaae32L, 0xb77f03660075166aL,
|
|
0x504852e7635dff27L },
|
|
{ 0x2f0f3ce5a2f392faL, 0x326c076aec6c9078L, 0xad01de9284baaaf6L,
|
|
0xb01b16d3cbe8e993L, 0x71305c242d950908L, 0xc66fd6173853af38L,
|
|
0x7735140ed3c429a0L, 0x8a31b12a1fabf027L, 0xa0530002058b3177L,
|
|
0xabffd9fca9c7deb9L, 0xd05ef69be8667d30L, 0x2f3a7308e9a9e13fL,
|
|
0x3f4c9a19b91eae9cL, 0x50d0cee7618ce6c4L, 0xfb24dc405240f8b0L,
|
|
0x992fe151f7e90cc4L },
|
|
{ 0x4454db3138f197aaL, 0xa4ded69d87872f98L, 0x97b427b044f0a828L,
|
|
0x9821e1aea31e48c6L, 0xe38cb09fdd98efecL, 0x20b84fa8480cb3aeL,
|
|
0xba5bb4a847475573L, 0xa9be080acd50e96bL, 0xc4451e9cef103550L,
|
|
0x626ee75fc441325cL, 0x6eea5e9838a5e33dL, 0x7321beb9a2b0abd2L,
|
|
0xca92e4849b6082a9L, 0x1dc8168a992bcc2aL, 0x134ecf4b9c8eb9fbL,
|
|
0x5a68bfa84c5b71e0L },
|
|
{ 0xb4ff3b45ff0a2bfbL, 0xd105fff95502f8b0L, 0x14de58855b1c0c26L,
|
|
0xed16865b0d3b9d04L, 0x2f5a2453026d3917L, 0x6a22f493f4db3c0eL,
|
|
0x4871548ae2418f2eL, 0x6ab363a8509bef61L, 0x91ca1e3ab8cbbbecL,
|
|
0x71e0dc984011a396L, 0xff982e0a0d5ca577L, 0xeb40b04581897bc1L,
|
|
0x4bc24a46085ad5e7L, 0xd15c8fa0a6337b7cL, 0x56ce6ef7bef1628fL,
|
|
0x78acfdf99f5ef439L },
|
|
{ 0x45bf7f15f8520189L, 0x954202a0c77f61c4L, 0x39edc6b9dfa22e1bL,
|
|
0xd2d602671f4a3487L, 0xcd9339294814cc52L, 0xde76a12405e9f123L,
|
|
0xe2306ea0ae36b6f7L, 0x53815218b83a58e0L, 0x9862bb76a041231aL,
|
|
0xe8da253cbf31be71L, 0x2dfc533237de861fL, 0xf25c93f690ae4890L,
|
|
0x66bcb8f08baa6ed2L, 0x6f10ae0f908b4a29L, 0x8cb4b48cb061c949L,
|
|
0x0ad92d73d075a366L },
|
|
{ 0xbfb95fedc2ca548aL, 0x4778c62080cd89abL, 0xbe99154b3466c280L,
|
|
0xea3be093d4be8902L, 0x847b799513e681edL, 0xf22a8f4b02f40161L,
|
|
0x3ef2cb4d4aeb7fe8L, 0x9adc5151b3aed5f6L, 0xec1ccfd198c31163L,
|
|
0xdc2ac17ba3d7d88fL, 0x08fa64d346421097L, 0x5ebf80b794b90bcfL,
|
|
0x1b78b4ba0b50a9ebL, 0x1a4fe934279aa66bL, 0x8ef4dcaf075b3cedL,
|
|
0x95bbd8a070a6e9aeL },
|
|
{ 0x59f92495e614bbd0L, 0x7567a887b823e363L, 0xe247c9ecfc1bd6a7L,
|
|
0x2bfaaf478e835c42L, 0x314ef4e0aade066aL, 0x072baa635c16d336L,
|
|
0xfa429c71e2f0e389L, 0xcac1e5d0bd07d90fL, 0x69ff35ea514f5c04L,
|
|
0x893053fcc0554ec1L, 0xab1d86b72a35947fL, 0xe29fb0602aebe487L,
|
|
0xa0a10d6ddfb9cf21L, 0xad147059f20dfcf5L, 0x480dc66fb8867a2aL,
|
|
0x375a884fc125a919L },
|
|
{ 0x178cbe2e1217f7eaL, 0x1a161e2a875c6dabL, 0xf7707ec01bdb1a54L,
|
|
0x678864a0e4fd73caL, 0xbaebc664d13a0d86L, 0x40325f99c8d30668L,
|
|
0xb93ed9c92f1c5950L, 0xfdf36763541e0667L, 0xfd97fbb0b91a6763L,
|
|
0x26aa69ea6079c9a0L, 0xc7303c801eaa8c47L, 0xdec75c81afa63c55L,
|
|
0x01cdcde24fd12adbL, 0x9fe0dda71968838aL, 0x66bb093b38415379L,
|
|
0x268d818b08cb84ecL },
|
|
{ 0x73dae35841580555L, 0x4fc32e67473d103bL, 0x240c1013beccc1abL,
|
|
0xda4099f2b24ee9deL, 0x37b0cb5b9fa8e066L, 0xb5ae04e46438d7eeL,
|
|
0x7f7d31642b720140L, 0x86ef4edb339e4a78L, 0xa5e77eed3a7d8375L,
|
|
0x883fad37bd707c2eL, 0x816b633a0f979189L, 0xe24c028a2e7a208eL,
|
|
0x1171fe3c4435516aL, 0x3eb93b334f5f2bf5L, 0x8419ed4b01b53a56L,
|
|
0x8b02735c056ca44bL },
|
|
{ 0xb89bb464e1019195L, 0x1de4c026f3fc28c1L, 0xac120e6e2bfc3b21L,
|
|
0xec71bc5a91bdf92fL, 0x485d7ab40d995bc9L, 0x97c6768ee6491ffeL,
|
|
0xd9552d19afbce265L, 0xbae6c7fe8e1b76c2L, 0x167d8281d7e3ad1bL,
|
|
0x3e149af95e989734L, 0xd1f0024c8a0c8182L, 0xf571ffdbc3006c0dL,
|
|
0xb32ecf7e58773d4cL, 0x5822a782fd3540d8L, 0x5ab45c3f04365042L,
|
|
0x400e3aa04b4d85feL },
|
|
{ 0x473216495e46e4a2L, 0x37a2ed6424136074L, 0x659223b1c60ec77dL,
|
|
0x5e13aac3e5e0ac2eL, 0xda17c41bc5107ab7L, 0x65b22ec973c253dbL,
|
|
0xff3867b8a5012296L, 0xfed660d50621a99bL, 0xa3c28506c89fc3f5L,
|
|
0x3ed350b9f16451a7L, 0x27c3e03267cb586fL, 0xc807c779967185b1L,
|
|
0x09c157d44a13009bL, 0x362f7647adaf1f4dL, 0x4a42b9acf3a6a198L,
|
|
0x131c3da28da6e039L },
|
|
{ 0x4a785ff1a7da83baL, 0xf415b425d04f4436L, 0x7c0899bdec03f812L,
|
|
0xc58d411a80f5f4a2L, 0x3d32d610fda251b9L, 0x99bb4504cd3b2f32L,
|
|
0x198c444bf4c2083cL, 0x60c261af730e83fdL, 0x060ca4dfcb02db90L,
|
|
0x0ff7838b9df1e7c8L, 0x6b79cf97c4c690c9L, 0x131514d75d75f154L,
|
|
0xa7c074f11cb0e8ffL, 0xb920aac1b2c17615L, 0xde8098ad44aa0ff0L,
|
|
0x71d1a46a34545ce9L },
|
|
{ 0x76178f76fa1b382eL, 0xa0d8ecc3772dda0dL, 0xaa5aab2ac5d4d130L,
|
|
0x27d38ba48d72622cL, 0xc5410db6ca3bed06L, 0xf637a588793ceccfL,
|
|
0x1f65dafd6e65e3d7L, 0xc3b44a8560a45641L, 0x0f47b3a84f78540bL,
|
|
0x824fdadd5e4d60f6L, 0xd8ccf90c17d3b6d5L, 0x008eabdf325fc13aL,
|
|
0x3e90d7163648fab9L, 0x3964ff3a24c52d4bL, 0xb95cc416533d0acbL,
|
|
0x6cd2699f1167f521L },
|
|
{ 0x2d8c0b3b12f4f3acL, 0xb03dcfe299d1bdfbL, 0x540034f830f37326L,
|
|
0x22dd68937c5a8c82L, 0xeb7093d0cd8f1442L, 0x892795a7585742f2L,
|
|
0xe15f282c087adaddL, 0x7bbdc74916ab7b5eL, 0xd30fe40ba58acbb4L,
|
|
0x0de417ebe2bac39bL, 0x4b4b19a6c61a04bcL, 0x9338c34df2735569L,
|
|
0xe8f0374230ab196fL, 0xfa2efcb86c88c965L, 0x19eee274c7eeb826L,
|
|
0x327c063fda345dc2L },
|
|
{ 0xab399eff5b47cd53L, 0xbbe9869d1943aefeL, 0xe64ecc7b1402a866L,
|
|
0xc3e7c2aab1c25a16L, 0xc4216b79022de271L, 0xe58dfcc8366d6a5fL,
|
|
0xd159509eda813336L, 0x370400f2130bfb7cL, 0x1be4e05993b48780L,
|
|
0x0623a1fe39f3cd22L, 0x72aa22b2eecb4f87L, 0x1af4c4966c27b83bL,
|
|
0x7a42a94bda5fa5bfL, 0x9afba82248b01af2L, 0xeb6b9d2a3670112cL,
|
|
0x020f19d1c0df6856L },
|
|
{ 0x37051a86a4dbba20L, 0xb618ebc6db1de5c5L, 0x9a780a19e6525840L,
|
|
0x9440302dd2bccc4dL, 0xe9ff023d10285a24L, 0x3b937ee33a486268L,
|
|
0xe37ee2f24cd61147L, 0x79fbbfd3a3d057cfL, 0x5fba16d3ccddefceL,
|
|
0x916058ec5b231727L, 0x47699ebe720c3adbL, 0x262743868b4f6bbaL,
|
|
0x54b0092af18a0770L, 0x99d090ebacca1160L, 0xf757e1ff0c888f60L,
|
|
0x79e72720b0050544L },
|
|
{ 0x632acf252820a239L, 0xb1a3974eaae6b310L, 0xd61fd6ba48c0a1dfL,
|
|
0xd2453c395a3ee7aaL, 0x548455a0b980446dL, 0x9f29d97bde16676fL,
|
|
0xf252ca0c789375a1L, 0xe961af3e7743a985L, 0x70c79c5666cdbd8dL,
|
|
0x14a3854ecbc538f9L, 0x58daa73aa126851cL, 0xe9b5bb452a9f558cL,
|
|
0x37af7f83fbd15e05L, 0xa448792738a1939dL, 0xe428b2b59511a056L,
|
|
0x001d3ce37015846dL },
|
|
{ 0xd6be36b9e145b1d7L, 0xf3e3938a009c5664L, 0x2e562e7de7c0f6dbL,
|
|
0x951044e6c343f539L, 0xa5ab62b8d90897b1L, 0xb1a1f70b512f797cL,
|
|
0x91cdd754750f28e4L, 0xb4c80e2fffb8165dL, 0x65ed39c7594d02b3L,
|
|
0xcc12a49d56833edcL, 0xe73694bcf3693a18L, 0x34cc134afcd2c404L,
|
|
0x071bd5fc11d40194L, 0x05759047fc585e46L, 0xb3280360790b7a04L,
|
|
0x4bb8c6fc40afc684L },
|
|
{ 0x3120e2ddfd0f8796L, 0x6968a40db133c9deL, 0xfea366c0a9369c6eL,
|
|
0x37e5b6d66007273bL, 0x39e4ecf08cb81439L, 0x487fe9cd9febc005L,
|
|
0xeb8af4440199b53cL, 0x2f124e3b293519ebL, 0x860c218ac82c9c16L,
|
|
0xacd1d6f2709dc590L, 0x5696d54536d50529L, 0xc03f5df959120bfcL,
|
|
0x99a3e88d10ffa690L, 0xd4f9cfa56c432827L, 0x2e8fea9e9a135d89L,
|
|
0x3699a881b6a77e78L },
|
|
{ 0x5bca33721eb1c64dL, 0xe9cf3a2df1d28154L, 0xb7e2e9b36537106fL,
|
|
0x06c171514f7cbf4dL, 0xcbde416e2058b37fL, 0x82c53a7e8834e9c5L,
|
|
0x94dbdfe2e9ac3a75L, 0x795ec6cbc5e67c02L, 0x8c23c25f1426a80dL,
|
|
0xee2cd20d6a8d4f9fL, 0x838daa54d3b7c235L, 0xb9e08ec03d7a4d52L,
|
|
0xca9475e9781cb473L, 0x7271f39e5ec31caaL, 0x1df08e9f82535187L,
|
|
0x4f3a4b03208aff8bL },
|
|
{ 0x0f7b81071ed095f8L, 0x23e37fa6da226d4eL, 0x8b0f9852afb36d1dL,
|
|
0xb114634e07d8e311L, 0xb9634a97e3e0f16eL, 0x2454bb9c421eec37L,
|
|
0xb4ecd5dbd72b21c1L, 0xf96038686df20d7cL, 0x9f5359fddf86e0a2L,
|
|
0xc43d54fa5ac488aaL, 0x56d714abd1049df4L, 0x13152b3eb020607aL,
|
|
0x49be1c187a02325eL, 0x44f24f4a52ae84dbL, 0x9e525c030b5a7b80L,
|
|
0x6d874446a6d179fdL },
|
|
{ 0xd29d07aabe9a42f5L, 0x1fd5316c3781ccc8L, 0x71a75a6d9dc69ea1L,
|
|
0x4e19e0df88fee91aL, 0x99c2b4dcf8d44f12L, 0x05f6df9231ae94e4L,
|
|
0x27fba876cf28ccc2L, 0x6e1a0f01f57f7cebL, 0xe03f1f34f3fd3b74L,
|
|
0xa0edc4a742c1d213L, 0x5caac2707deb8580L, 0x0f5d791faf0848bcL,
|
|
0x17f514ad07ac759dL, 0x95a39734904fc531L, 0x95a4aca97bb70f3dL,
|
|
0x3cf384c9ff9c5609L },
|
|
{ 0x700506bace1fc9e3L, 0x49721742676b0399L, 0x2b4a1b8de72bf7b3L,
|
|
0xca8602a879b209f7L, 0x90580b90ce26a8e1L, 0x1ef339b7fe24f39aL,
|
|
0xb6c5d991629362e1L, 0x51174e1a577b24f4L, 0xf380fcb505e451e9L,
|
|
0xf4d97afb148321bdL, 0x099806bb747e5d2aL, 0x85525d65be99a608L,
|
|
0x264828d9d455e820L, 0x8c8c5405d8560a65L, 0x3c67e73c71030770L,
|
|
0x2b248850ee73df26L },
|
|
{ 0x2173cde68541159fL, 0x78224c184fb410b2L, 0x07a286191f2ca1c7L,
|
|
0x52c207d6a8b23e40L, 0x071a0210a6b2344aL, 0xdb0e587cb5ed2945L,
|
|
0x6c56b8ef810fcc6cL, 0x1248c58f62d843b9L, 0x4b90363d74c66975L,
|
|
0x6348f7f2e66c66f6L, 0xb2f9d441c126bcbeL, 0xac07f2a373ce49e8L,
|
|
0x52486758e81b0df0L, 0xa108b54d1d4621d1L, 0x17261ece74414a1cL,
|
|
0x938b3bcc6a3ac215L },
|
|
{ 0xa9e4a16be4ded340L, 0x8e65fb2a80e88036L, 0x97089606dcd73acbL,
|
|
0x1c3a0434aaa657a9L, 0xf304fc5849101b06L, 0xe60fb61ada0bb64cL,
|
|
0x818c2aecf5542df5L, 0x7402057656f76d5fL, 0xb566b79092533d97L,
|
|
0xae4655e574d6eb5fL, 0x60f7a1b5a55b44b7L, 0x7970179b93747ea5L,
|
|
0x8ae7e0e8f2dace56L, 0x9847460784e83c06L, 0x24e8c9ed15307341L,
|
|
0x6cff58a5d9e89d6bL },
|
|
{ 0x508c01b003e51f68L, 0xe1d1f2251d2fe7d6L, 0xf7998d0b09bd8805L,
|
|
0x255e907a03e415b7L, 0xd148467d607d9798L, 0x055c3b1e9b453896L,
|
|
0x35001013809f50f4L, 0xfbbb2fa6d0233fdcL, 0x0b680b0aff1820b8L,
|
|
0xb1d404dc38d317e0L, 0x133d5444ccc8c7dfL, 0x7fa847e66ec13f84L,
|
|
0xc33f83d8046e2e48L, 0x3c627fc54863b3acL, 0x5f67f8aaeb936af7L,
|
|
0x5fe4ac8f31b79327L },
|
|
{ 0x581aa4bf8b6f401eL, 0x05db12a3ad5c7ed4L, 0x7b0187266fb07b4aL,
|
|
0xfdd11f049c22bcd4L, 0x5454a7d469371c95L, 0x066c55fb99a46eafL,
|
|
0x18637c7c7fef96d0L, 0xbafc1d346b83e95cL, 0x55c3859300bb42dcL,
|
|
0xdd8dec2b34e7e712L, 0x69c9cfb0b184cee8L, 0x8dcc0c4249a27864L,
|
|
0x290d95f22010f2e7L, 0x86e254c96977a420L, 0x20931c89eb2abdadL,
|
|
0x81377164121c0548L },
|
|
{ 0x6266b25e9c5a8edfL, 0x6e1388c21078a7adL, 0x5f02737d4876eedfL,
|
|
0x242fa7f962744617L, 0x3e2cfbd9b385382aL, 0xbadad7b102f71befL,
|
|
0x562abcfa677d0a92L, 0x573ebd1751fdff34L, 0xd7f658527c250c78L,
|
|
0xe0cf16eec47ca896L, 0x8ccd79b067622c9eL, 0x31fc5882f8f2c075L,
|
|
0x9232b37ea6008515L, 0x4d7bb36182e8c5baL, 0xbf24735cd2f146feL,
|
|
0x79c280ee9cd2db98L },
|
|
{ 0xbdcc8203f2b48122L, 0xa8c04916b04ac48eL, 0xacf064dc9fc4885eL,
|
|
0xab83899782c1001cL, 0x7339e721676de250L, 0x17aa5aea8e1ab820L,
|
|
0x24d28ca06bc14b2eL, 0x570c5bb7816b6230L, 0x6c51235ccee6b606L,
|
|
0x1b2bf89f183eae42L, 0x3e3af3c69c66274bL, 0xe0b04426b51e38bcL,
|
|
0x26dbc58e73e40e3bL, 0x3f9dd578b5be5be4L, 0x9fd9f79152c8f408L,
|
|
0x758073a4a9e3ff4fL },
|
|
{ 0x7d27b0578691ca22L, 0xf206bfd613a2a1b6L, 0xe84bd385ac795413L,
|
|
0xc5d18a2a75536607L, 0x2e166de7c8a0e24cL, 0x56d5750c3c474dbdL,
|
|
0xdef444c11366843aL, 0x14646e53cf4b8432L, 0x4bc0d030a9fd9783L,
|
|
0xbda4c824297ee203L, 0x3d0b10bffd7be6c7L, 0x2d21647608c7f3ffL,
|
|
0x06e52599b4fd4c45L, 0xfbab9fa149e9e104L, 0x9342a7fa8661d32dL,
|
|
0x3f3e3458faf66aa8L },
|
|
{ 0x51ec35af951597aaL, 0xb677d4ac49df64ebL, 0x0276cd9c9bf4eff5L,
|
|
0x423eca49515a2935L, 0x8a696553fd9bb9c3L, 0xf99ee9dfede1f09cL,
|
|
0xb8fa2956199e5f98L, 0xb763875835292c32L, 0x8734eddcfc40e81bL,
|
|
0xd82d5e9f65457d95L, 0xc8ee323e30c78d2bL, 0xe77b2e4cc1433d67L,
|
|
0x56d9f8073c8314aeL, 0x441eede22a0e2f63L, 0x1e9e17ed6c48295eL,
|
|
0x640d20c434c294efL },
|
|
{ 0x4e9a0b8e3284d513L, 0x074c3545f315053aL, 0xb36e740745acd52aL,
|
|
0xd80bdcfc1de50db7L, 0x8d9d47dc2549fc46L, 0x29b6ef13303f07a8L,
|
|
0x4e461aca6d4ad4c2L, 0xca8e351dfc9f1b73L, 0x8bc4094d57460e65L,
|
|
0xb6302b330f32d367L, 0x69a074b6285742e8L, 0xdfe52b11876c29c3L,
|
|
0xf39e4609912bd17aL, 0x8ee40d66349aa639L, 0xb968902ac72e05c1L,
|
|
0x0f9c1ca8c0d92816L },
|
|
{ 0x1ebbaab367433df3L, 0xb6aa534715d3628cL, 0x13a320d897f0c5ccL,
|
|
0x72c918cb65e408f9L, 0x4b638854d5373451L, 0x731399a30b4dca09L,
|
|
0xcf2567300a3b1326L, 0x5ea60dfa6608b388L, 0x58ad74b07b290dfdL,
|
|
0x83202789d7694f9bL, 0x48593db8b6630fb1L, 0x3db47f70c65e3eafL,
|
|
0x63949c913e7263f8L, 0x9b9acec6e6e6ff33L, 0x34bd9ba7098a8240L,
|
|
0x7e31c12f45d36ec5L },
|
|
{ 0xbe281d680dfd2dd7L, 0x1efacb0024ab61d8L, 0xb9c3005f94431f97L,
|
|
0x660c8dfa959cb3bcL, 0xfdd5fc30cffbb406L, 0x7a4631be7969a10dL,
|
|
0x336e309ede13fd1bL, 0x76b3bfadfc947076L, 0xfa91925ddcc72223L,
|
|
0x741f0d73156c4ee1L, 0x4f64ee410e2b3747L, 0x86be92d3efc4d93cL,
|
|
0xc53b7e03fc4fbb2eL, 0xac196cf5337ca1bbL, 0x4de41a307e23ba60L,
|
|
0x1a219c45326d5357L },
|
|
{ 0xfdcf7ef8aa4db0bcL, 0x2e2318067b6c9963L, 0xc26390673d8a192fL,
|
|
0xc0cec2e2ffdc7771L, 0x997c8e35a2fc0edbL, 0x78e10ec182cc6043L,
|
|
0xfd0de2cb2b0c8120L, 0x4d6c457f69e57f8eL, 0x953e69b25b53f1c3L,
|
|
0x422a330ac4f89cb8L, 0x92ff232995566be6L, 0x73cd502d437442d1L,
|
|
0xf04ce590bea69403L, 0x6ac1537ef8030662L, 0xe02bcf77b6d0bf93L,
|
|
0x17aaa999bc90192fL },
|
|
{ 0x0d3d56438e55db2eL, 0x835dee433b946851L, 0x1a1440e55b88462fL,
|
|
0xa6ff3b35ea17e27cL, 0x23f99c36dd95f7a9L, 0x7217fdd9bdd672cfL,
|
|
0xf400ac1edd2045c0L, 0x94b55c874ff06b25L, 0x0a44a0e50e4a49beL,
|
|
0xe8925e91b43b6813L, 0x78bedde1214f96c5L, 0x0f456a4c0f97fa97L,
|
|
0xa28fd86ba5bfd267L, 0x3b4b2d8fbe7608efL, 0xfbd5ff8c226474bcL,
|
|
0x6b282af0a5f3b24aL },
|
|
{ 0x78fc025f6341a595L, 0x591c38d6a445e28cL, 0x72bd6e3deb446842L,
|
|
0x3f9466d375547833L, 0x911414d3083e16c4L, 0x145d946695a7acb4L,
|
|
0x102ddf098fd2fb64L, 0x2a2b2d2d0bfd87b1L, 0x69e9be5c59455088L,
|
|
0xee378bf4a80245deL, 0x80b0bd68b2306b0eL, 0x76a545c6c2be9f3dL,
|
|
0x429d167b4802c245L, 0x13e644272b412dfbL, 0xb664f529ee8d9762L,
|
|
0x6d4f5d2354706ebfL },
|
|
{ 0x35c8f2b600ba9f88L, 0xfdc807e07bb6d0bfL, 0x0a126d42b3b81e5bL,
|
|
0x335ce6cea7ac781eL, 0x3e308e6ff37dcba6L, 0x028dca6263c96487L,
|
|
0x72eba57e8818434dL, 0xa9e3d59f79b78a26L, 0xd2f0a7dd2f07aea3L,
|
|
0xe0fe467824d05f74L, 0xb20851700116deb6L, 0x9c2a5e9258f37580L,
|
|
0xe78bd7a574070bb3L, 0x551fc872b9977d90L, 0x6eda93c440db81b4L,
|
|
0x4aaf0b4fd65d34adL },
|
|
{ 0x9bef25063514c7afL, 0xb09e7dadbc181eadL, 0xef3cae878fa3ec58L,
|
|
0xd8dbfab5173b8685L, 0xb2490fc0921d32ddL, 0x4eef386b8bd9c466L,
|
|
0xc1cdd52fa061dbdbL, 0x64de989a25bc04dbL, 0x06f9836b85728636L,
|
|
0x11a5a8048be44aa0L, 0x16dede4e097018c7L, 0x72aec577b2c11fb1L,
|
|
0x144dade1a721ecd9L, 0xf99c526bd6ebf3a9L, 0xa1d4165b1c2e14d7L,
|
|
0x8b2cbd3982bc6337L },
|
|
{ 0x28ec1bf28a52e991L, 0x0ba202f6cf9d42ecL, 0x8307d130c634ea45L,
|
|
0x3fc257b3c5762b9cL, 0xbd3298d1487c2a2dL, 0xca14f1a7a319488aL,
|
|
0xc70ca93b06ba06d2L, 0x9aa3f4b3ee405e89L, 0xcc64eeb335deeae7L,
|
|
0xd155f57803bf1d4cL, 0x041ec0b545616bfdL, 0x23df80e6086e33f6L,
|
|
0x399a79c8f0243cf5L, 0x86c2824e874ccd58L, 0x220eeaec8fc5c831L,
|
|
0x57e283047dbe3670L },
|
|
{ 0x6e60b698fbcdf666L, 0xbdd06a998bebb1d2L, 0x4044adba80498436L,
|
|
0xd76bf75e522bc88dL, 0x655c4b9b28423b20L, 0x65c0f49253398a72L,
|
|
0x76d4f2b70ca37601L, 0x469899252030fa5aL, 0x96b37e87b6054705L,
|
|
0xef96f73153de1b2fL, 0x5ecbbc8cad54ef05L, 0xeb289d0aa93617b0L,
|
|
0x3ac0fbd57cba217dL, 0xd0d3cb5619d4a2d7L, 0xe8bee9d4c91d6063L,
|
|
0x4f12e037696ffda6L },
|
|
{ 0x4ccfa42215f1a610L, 0x804a5c553786519aL, 0x1246a45473838134L,
|
|
0xfa15b4844b284e2aL, 0x36464c65146d1320L, 0xfb6ba88c70a8a0faL,
|
|
0x74e7cee793c4804eL, 0x8c34d22cb95ae16aL, 0x9d9ed89ff9c1d4ddL,
|
|
0x61a0866d32025371L, 0x45b232b29bd6444aL, 0xf888e92cf277bab1L,
|
|
0x73e69c6ea9448b02L, 0x1a496ea95b521ecbL, 0xa8f78ea75858afb2L,
|
|
0x83d2333eb1266f91L },
|
|
{ 0x1c63328867b478d7L, 0xa1ee1ae150a2fc9cL, 0x05b6ab3018d2241bL,
|
|
0x69f1f288893cd696L, 0x159d6660a8117a87L, 0xe812011970e73d77L,
|
|
0x528fef0093f55f0aL, 0xb3978db8d854dfb2L, 0xd6b43ef6f45d9fbbL,
|
|
0x17de4bfed5bee397L, 0xa01e0f596bf76dadL, 0x28b2280e3d40754cL,
|
|
0x8edb6122f8e86ef3L, 0x8226b6afb7d1e586L, 0x463532152f40a55bL,
|
|
0x7362f13ec5a31621L },
|
|
{ 0x792eb27c73c0c430L, 0x8cc0a65fa51c3657L, 0x50a5ceced2194f1bL,
|
|
0x18945688814b4947L, 0xbbf0a81a4b6fbbf4L, 0x376f4f58f0aa8608L,
|
|
0xd9361d683987795eL, 0xb6510cd8e3a8d0d5L, 0x63e2fdbfb6c1a455L,
|
|
0x2c91154eaec891f9L, 0x0eb1e715ff568f64L, 0xe7af9cd72f2b399eL,
|
|
0x1fc39bac89f0bf0bL, 0xf0861d9290983695L, 0xd9b16f02da0a20a8L,
|
|
0x2f10693fa38c0eadL },
|
|
{ 0x07a6ce910c06ded2L, 0xf974842f2fd9087bL, 0xe468bfd6a9f635a6L,
|
|
0x04b618911ed60626L, 0x1fb2f89f369ee548L, 0x9cbd1113dc96a201L,
|
|
0x6759acfe10d633acL, 0x64ba66fc8faa629eL, 0xa686ae4947f38283L,
|
|
0x828c3a05d59cda99L, 0x7c7afb1408ea2f6eL, 0x2551c8e4af3953c8L,
|
|
0x5b53d2799daa9e4fL, 0x1eff68d4ad6f1940L, 0x2775dbdd96437cdbL,
|
|
0x985f83e44fe7a043L },
|
|
{ 0x89603c16eaf45294L, 0x70131160c24b5751L, 0x4c11201839d6b52dL,
|
|
0x7079cf02ed943340L, 0x0c5b028b74f41b68L, 0x3dc3f0769c8ac1e1L,
|
|
0x5ac5eea3f8b24f0eL, 0xee6684bae34c5c22L, 0xa5259e639abc452aL,
|
|
0xb07d2cd1e9df45ccL, 0x07019c931a443cfaL, 0x68fddaa992c003b3L,
|
|
0x2d9f179c0d8cbc2eL, 0xbbf15a6f1e781ca7L, 0x54d779d550dcc799L,
|
|
0x0c88e5400fe962f1L },
|
|
{ 0x84f71a6ae8f44357L, 0xf75b4bf63a3cab6aL, 0x334c9d9e5aebc680L,
|
|
0xcecaf0848a753ef2L, 0xe28014c1075e3c8eL, 0xbb9d5a38f74f8d3aL,
|
|
0x75988464b80e32aeL, 0x7b328e6ff2bc3792L, 0xebbb1fafeed0e197L,
|
|
0x674eac955a33065aL, 0x8c19fd8f922dbce8L, 0x8c17ae85987b907aL,
|
|
0x89f336273b3a2cd7L, 0xebaea019fa87772fL, 0x4e5de4993a25ced6L,
|
|
0x8e2560b8af110715L },
|
|
{ 0x56d3746c3141aba6L, 0x45a1079fbab2cf9eL, 0xb63828319cdd27c7L,
|
|
0x222376329dfd950eL, 0x1e0b15cd3a9408ffL, 0x49a80200b1160118L,
|
|
0x2719db5da383bba7L, 0x6078340a651046d5L, 0x8929d4de97523b1fL,
|
|
0x4040345c8e0a28abL, 0x61275ac20adf09c7L, 0xb41ab2652331d611L,
|
|
0x230cc77c5391ca50L, 0x88be0c928f922315L, 0xfef3d92b92fd9a29L,
|
|
0x59005f228324f2e5L },
|
|
{ 0x6bb1750c3c4c1c74L, 0xbe73aac0e966fb79L, 0x85a75d9266c5973fL,
|
|
0x8c97f9323a8656b6L, 0x2b7043b150446cdeL, 0x548916f73ff3897fL,
|
|
0x913dd01cb18b72b2L, 0xd0a751f1488c0de6L, 0x191757148558ca58L,
|
|
0x9771430144a663daL, 0x2df190acb0e08618L, 0x0080fc0cf39ead9cL,
|
|
0x0085ac6e17382da1L, 0xe97918513262a338L, 0xe4495936b43bae8dL,
|
|
0x57a78e26d783df6eL },
|
|
{ 0x161b346f40dbddd8L, 0x2b49a9279410c3acL, 0x8c5427831886cf3bL,
|
|
0x72df323233b93debL, 0x9c8d59f540df579dL, 0xe5d7a67dc20ef500L,
|
|
0xc46b391867f08643L, 0xecfa2445ad96adc3L, 0x658f589b0c4544d0L,
|
|
0xe6ec9301e08417d7L, 0x6ca5ef6ac454e288L, 0x4191048fac0f462dL,
|
|
0x852407d808d8a036L, 0xb4c533a7f6d35b7eL, 0x3251e4128f6ada87L,
|
|
0x1ca370c581c472e8L },
|
|
{ 0x94bd5171a801b68aL, 0x7312879cfd1998b3L, 0x4905aabf41163202L,
|
|
0xb5fe87f4f5b01fdbL, 0x78de523a9cda128bL, 0x0bf161a1c7bd31f7L,
|
|
0xb5decfd023904c35L, 0x224b2882e188f12dL, 0x0dd2801df99dae74L,
|
|
0xcad467b508cd1cd2L, 0x6c311c3dc0867e39L, 0x71a117202b425072L,
|
|
0x83bf464e2efd9003L, 0x53d0448a1dbd3b03L, 0x32db52f4e6265baaL,
|
|
0x2584b34c4c33ac79L },
|
|
{ 0x3cb863892aeec688L, 0xa5e740ba45fbe523L, 0x422e71f7fd60b5f8L,
|
|
0x455d185c4874913dL, 0x04c2bb36fa17d80dL, 0x3f271854ac054524L,
|
|
0x76dd3045a8b9a657L, 0x2e42c3e162ee7cc8L, 0x002667064df6c7d0L,
|
|
0x5927dd51dc7cb488L, 0x6b3faabe187897e0L, 0xfe6ad22ef2d5737cL,
|
|
0xafb60269ff51a9ffL, 0xe1c8354569807baaL, 0xacddb6ff951ca49aL,
|
|
0x7e8113743f9ab085L },
|
|
{ 0xad722a8b830a88b1L, 0x91918ea8ce1117e1L, 0x3e02d0b80409b47dL,
|
|
0xb53812d36c46d1d3L, 0x2fd09db0e589669cL, 0x9845cd0615b0cd5eL,
|
|
0x0c1c155a2386c453L, 0xda774de5f5ff43cbL, 0xbb076b98e391c0cdL,
|
|
0x97d71eff5004f286L, 0x23e0b46caeec0bfeL, 0xe453866732a1ad94L,
|
|
0xfe0c9f81396da422L, 0x6376c1a263db2bfeL, 0x001c7918ba56fa91L,
|
|
0x436b8c64df8485a6L },
|
|
{ 0x88117e9d8ab764bcL, 0xdfa61e94a077df84L, 0x5a7765d30c18eebdL,
|
|
0x548916affc9451dcL, 0x01a52e33071a347aL, 0x633b95deb23b41dfL,
|
|
0xdd7d68c943c8c286L, 0xe4f9d41e18d97068L, 0x79908b908c92799dL,
|
|
0xe614148ed47394a3L, 0xe5018517cd51e53fL, 0x5060075e0243dcb6L,
|
|
0xe5dcde6217954405L, 0x6f7c90e1537da5ffL, 0x1df7aae40768cb66L,
|
|
0x5266ca9e6dbe95e1L },
|
|
{ 0x84ddee6d1386b3dbL, 0xf9e4af5a7c38e540L, 0xb3418440eb04f49dL,
|
|
0x2138a1e8fde5a4fdL, 0x3e6e692430257cfcL, 0x3519c6e319fd70c1L,
|
|
0x8f34e17486c31ff0L, 0xf1e298fd940ce1e8L, 0x6fb8cb1d14960d7cL,
|
|
0x207c13472b2f3bffL, 0x899a20b4146ef8ffL, 0x7dec362b7bd3e220L,
|
|
0xa975044e626bea27L, 0x0f32b4494fb4cb67L, 0xc17a09201fc6703aL,
|
|
0x41f325b99cd84a2bL },
|
|
{ 0x312ed513ce2843a4L, 0xe748498e00728afcL, 0xa8ef28224d864ce5L,
|
|
0x34064704a620083bL, 0x5905e1d94bed338dL, 0x2a578cb5063e7b38L,
|
|
0x98276d96289e7bb9L, 0xdfe2dc47f17b7341L, 0x5923521f1dac8944L,
|
|
0x3db6d28d23400aa7L, 0xc647705ea761ba43L, 0x8947ba6d9bfd07ddL,
|
|
0x00f2e3ac242ca8fdL, 0x49ef4670eb8c3468L, 0x7db3d37bd9aa18fdL,
|
|
0x56b30fb6e58cea9eL },
|
|
{ 0x07ecdcaacd80a428L, 0x7af922dc8732c891L, 0x20d887983ada441fL,
|
|
0x3bed9a44924b008aL, 0x2123533cb2e81c3aL, 0xc34e407565f807d3L,
|
|
0x0bfaefa51f2faecbL, 0x78b634a5ade8a88dL, 0xc4e0b7f894392a91L,
|
|
0x3092237790bb1cd8L, 0xdea9b4faf87204aeL, 0x3edf81f585d3cd83L,
|
|
0x58f88c51c6523a79L, 0xe472fb8b17c0d969L, 0x899081e5dccf7f07L,
|
|
0x1353cc5758bdd146L },
|
|
{ 0x28a5649739bf6e18L, 0x59e8b5a2649b89c7L, 0x8d9434a0dce8b8e7L,
|
|
0xd935bf512047040cL, 0x2ab3a1646a7b8e82L, 0xf1583ed627f81294L,
|
|
0x8416a7e072d67297L, 0x49685d86cd39e42bL, 0x8a797fc7958ddbadL,
|
|
0xa558f928155ce6deL, 0x75f4e570f8a36235L, 0xbc69cfc052877ae5L,
|
|
0x8f4193a9a6b16ebdL, 0x8d1df43cbb1cc1f1L, 0x723a830e5a21e789L,
|
|
0x3ec2185df451df58L },
|
|
{ 0xb9d4c7d71f0bc2d7L, 0x6982c6cc6e51d412L, 0x92e02d93a09f80f6L,
|
|
0xb7dd2d25047ae09cL, 0x3503149f37f351f9L, 0x69d49ce1c77850beL,
|
|
0x60242acb12f0d2c8L, 0xba188c567bc28b9dL, 0x8e40612106bc0550L,
|
|
0xb0d84b1f8d7d4329L, 0xb4a67ae7d38951e0L, 0xb527c57b8bc97607L,
|
|
0xbc93c5f35497aa72L, 0x5f1de8cc39bdd666L, 0x3087dc5ce9d447a3L,
|
|
0x89b356b6a211abe5L },
|
|
{ 0xed6db0afdfdcc837L, 0x0fb80baaa871b7a9L, 0x413abfc91c1d4b72L,
|
|
0xf5b56bf7adac9e5cL, 0x5664a2da8b8657a3L, 0x11b04f720e41d94eL,
|
|
0x63e11d2637433658L, 0xee628ecef426daeaL, 0x011619c9cb162dc2L,
|
|
0x9cf5817f87648643L, 0xe1bb97025584bc86L, 0x2cc27cef00bf7928L,
|
|
0x4ef3a80edc60eee5L, 0x7e1202be87adc2f9L, 0x656f18e08a0d4f52L,
|
|
0x39c4f10d57c5d126L },
|
|
{ 0xb3a9b68ce88aecd3L, 0x555b0918a518aa9dL, 0xedc1cdad4bd4ee54L,
|
|
0x79b68b6702068d84L, 0x7dac80d0811ac72dL, 0x6d1e6d35a81a0a78L,
|
|
0xc841e9ea3bd16283L, 0xa7bc1775894c4444L, 0xf2b63725f1aa1202L,
|
|
0xbec7767ec7d4c556L, 0x2817ebb3d46ff51bL, 0xfde5be8d73f7e339L,
|
|
0x44c6c9775aed24c4L, 0x0b9a1707b6e579cfL, 0xcff164789069fbccL,
|
|
0x414b542d49152b00L },
|
|
{ 0x33c31e58606e173bL, 0x5b7f4e1b90e6713aL, 0x425fb512debb20afL,
|
|
0xc788c61705120e70L, 0x3ef056029013e4ecL, 0x9f9d35ac81c6e6d7L,
|
|
0xe131e88f9450690aL, 0x708f9b3244af082eL, 0xb2e4d66c1ba2aea9L,
|
|
0xaf1f4a6e740db29cL, 0x74ab9248d1843007L, 0x13338ef8ed556a6cL,
|
|
0xf48e623e270d17a6L, 0x3c7362fa9608f5bfL, 0x43977874444e8515L,
|
|
0x52678d6ae00b8b2aL },
|
|
{ 0x5dff1c59df36aeb4L, 0x52d6653ca92bc0abL, 0x0e03f496927a5f81L,
|
|
0x8509d4142dfd491fL, 0x258c2c52a571f89bL, 0x2bd6180493334485L,
|
|
0x1a33e94f3f7d9e09L, 0xfab418d32c1bf906L, 0xf39c490e5aa5695cL,
|
|
0x0e41196ef6d2d7ffL, 0x3ecd40750f7948a9L, 0x4b58f9b2d3053b4fL,
|
|
0xb8ee842a5d9974c9L, 0x23a59c1dbf22f682L, 0x045ac614c8efcea6L,
|
|
0x7040ba5bc10ceeddL },
|
|
{ 0x2c364f81515a1a96L, 0x31a63503184327e0L, 0x0a0966501ad93d4fL,
|
|
0x9d7694f1273b6173L, 0x8886d876d2cda9d2L, 0x1e01a7422814c177L,
|
|
0x3492276b8667696bL, 0x2fd4f0c65b25f006L, 0x6527349ffb294c4aL,
|
|
0xc1fe0d8ade1d336fL, 0xaf9a23e8e7e3860eL, 0x97d2b721b774c31eL,
|
|
0xfac3e5824365784aL, 0xff2dff4e70f4eaa3L, 0x3d281e1afe873248L,
|
|
0x9043a6d60bd1c9c1L },
|
|
{ 0x1511a0fe766c7937L, 0x1b2ded5cabbc3be3L, 0x2ac160cce00888acL,
|
|
0x928754bd616200f3L, 0xb801c83d34a2ea06L, 0x8ad7a03a9cbe106fL,
|
|
0x996b0822cedfcd94L, 0xc3c3463ae4069880L, 0xfb12ea4df597f663L,
|
|
0x2c8d383440c92af9L, 0x79bc85c64e8da154L, 0x95771fa2db4e801aL,
|
|
0x7bd2c1381e3579b2L, 0xe45c75dfffaad078L, 0xb0760a3cb73eac46L,
|
|
0x26362b483a125f35L },
|
|
{ 0x25c68d28eefc3e89L, 0x2d0ee87769e9ee71L, 0x8b07bb86af5e4b75L,
|
|
0xdb709072cb86b333L, 0xfd3d20eaff552bacL, 0xa5eeb2b14c0da1e9L,
|
|
0x391f688a44f97145L, 0x21fbd3101e06d485L, 0x45e4f2a5bea9cd49L,
|
|
0x7b60d464a7bf21daL, 0x193f88c8054d5471L, 0x5ace53d1bee0f2e9L,
|
|
0x92c26563c1439273L, 0x9c86e0b296c6b5eeL, 0x452fe23109ff59baL,
|
|
0x2e952b20555c935eL },
|
|
{ 0x2a846bcad75f886eL, 0xe68a5dbed43dfc58L, 0x103e45b6007b1b86L,
|
|
0x580e2ec9355ff2b5L, 0xbc702f26a263ecc9L, 0x2835b386181e5e33L,
|
|
0x025113ec6c122076L, 0xa5c26e3a7fbd856dL, 0x8ef83fb39d6ebcb1L,
|
|
0x7aaa53f2a44d2fa8L, 0x7c14ef3353b1fa97L, 0xff604a1117559a30L,
|
|
0x2bcd96b0b09377e0L, 0xa5c14896db2f0273L, 0x1c0a84c9eb53ef06L,
|
|
0x1236d01730378e4bL },
|
|
{ 0xd7481c8fc084373bL, 0x29ae4768646097aeL, 0x1300dfa0613bc34bL,
|
|
0x3712714c934bc2b0L, 0x865246290e2be7e2L, 0x554fbb9fed010800L,
|
|
0xf0ec0b3842314576L, 0x65baf594330a3282L, 0x3bdde1a8706ef817L,
|
|
0x7d2c727dba7530e9L, 0xbb0c5d6674cc95cbL, 0xb3fcd3652438906dL,
|
|
0x19881941d14658f3L, 0xe616f5556c97f0e9L, 0x353c2d854b9ec7eaL,
|
|
0x02a48014620cb56eL },
|
|
{ 0x11d6d23d506ccd38L, 0x229a1c549059baa6L, 0x717c9c2769d011c5L,
|
|
0xe87e1b46d828937dL, 0xf5d63bbb83835083L, 0xf0a7b427aadac258L,
|
|
0x99ab26bd9f154d1fL, 0xdec0ffbf8ec955fdL, 0xee957c6749fcb880L,
|
|
0x32395dee1e0114deL, 0x192a64b7369f46c7L, 0x4304466091eb2599L,
|
|
0xbe2da887a2e8c3daL, 0xa44e2c25c3556d18L, 0x31390414b55f75f3L,
|
|
0x1d8bde6f8f217fe0L },
|
|
{ 0x03cd39f8a2028924L, 0x6e54f19cb06ecb9fL, 0x862bbcb7d6f05846L,
|
|
0xdbe067165a060776L, 0x9397c97ab10fec10L, 0xf42138266f1bb65cL,
|
|
0x414deccba672ba38L, 0x594d4d43f88b05e6L, 0x7993f57aac94d4d1L,
|
|
0x74fc2a6abfb17638L, 0xd8196b5bb6fc655aL, 0xdc375c84ee8d2139L,
|
|
0xb9b00a02360d3a26L, 0xb36ed35cdeb93b87L, 0xf565b28bcc83209eL,
|
|
0x349c6943c61013c1L },
|
|
{ 0xd1b394444de6c88aL, 0xd5c2c4714700207eL, 0xb6f458a221c2b780L,
|
|
0x749f75640850993eL, 0x400ba579baef0c18L, 0x2d742938737c70f0L,
|
|
0xc5a8e2ec21467ebfL, 0x243a666e5337f453L, 0xc991f1c7ed0bd50aL,
|
|
0x3a7f3e90f4bd1f91L, 0x96089e8a5f0e129bL, 0xd0d3a17707389635L,
|
|
0x9cf842d527182ac9L, 0x211952990817c5c2L, 0xa32f327e87255769L,
|
|
0x056587ab89c2d8faL },
|
|
{ 0x008562ed1ce4733dL, 0x5faff7cb98e51444L, 0x5f03021fa9ab46b9L,
|
|
0x89494c5eb61a8c13L, 0x57c9503636b35976L, 0x6be84c8f2ac2d2f6L,
|
|
0x0e5b34d89bd2703eL, 0xc4ad918f7e872abbL, 0xc2a89e9fc4052ee1L,
|
|
0xc2caee3f3190b51eL, 0x58fd14376fff254fL, 0x6f3c0d68883e0972L,
|
|
0x63d0a0e90fb15438L, 0xc438764bf6caae00L, 0x815f15653f1d0f6cL,
|
|
0x1b87f2edb86cdbdeL },
|
|
{ 0x35792bbb2b0b15b1L, 0xa3e4b5a7ce6ba779L, 0xfbacffd9dd8f3779L,
|
|
0x005450bdc298d1efL, 0x0e3f5556c47031c6L, 0x0770f07a95d68066L,
|
|
0xce3e84e02d1052c2L, 0xb050791e7aa8cc54L, 0x4d621e73ba3223a3L,
|
|
0x87b9b94d39632990L, 0x8df9cb477eb8056dL, 0xe2430de8edfca0ccL,
|
|
0x374bf4169712a0caL, 0xbe3f3c7788848a99L, 0xb22b87b1c4a3e59eL,
|
|
0x8e0227c43e95bc23L },
|
|
{ 0x000e22a83210964dL, 0xdccd5df5ff056eebL, 0x02173a1fdaf1ead7L,
|
|
0xd02833e067cdcae3L, 0x1cc574cb8bdcc90cL, 0x86eca7143224b4f5L,
|
|
0xd00e603abb3f8298L, 0xb98ece1b0c1a8debL, 0x228a46e4378c261dL,
|
|
0xc6f9dd0da6165e5dL, 0xb3ae38994b7ef0e2L, 0x3a3c16b3bda9f306L,
|
|
0x5e9a26d338a084dbL, 0x528e59935394e950L, 0x848ecb114ea206bcL,
|
|
0x14b15ab540545d6eL },
|
|
{ 0x0f6d86c9664c59a2L, 0x3dfe2be160fd7aa5L, 0x33f9b5699072cb8eL,
|
|
0x5f2325d98176a7e0L, 0x79a0d4e74587080bL, 0xa4ee0def0d5d4e05L,
|
|
0xc0ad9ffac87b28e1L, 0xd6f18d2f3f09b4eeL, 0xcc896ae7292e9d87L,
|
|
0xca88953d6094763cL, 0xdbee97a818fbf9faL, 0xdf20e0e94b63d701L,
|
|
0xcbba6e3047ea722fL, 0xce57e1ca612b571fL, 0x1e16ac76009a55f5L,
|
|
0x742bbed8c4389e2eL },
|
|
{ 0x23ea86dcc1dc2c73L, 0x4bbbfd5bc1643abfL, 0x07f8fa1f24d8ca1fL,
|
|
0xde68a6e08cb5cac7L, 0x7d54c64b54e66a7dL, 0x789dba22a9b7ad78L,
|
|
0x4d88d540e364ab94L, 0xc8c2e02d1f72e011L, 0x4c82605746e2a278L,
|
|
0xe6c35bb34b187c7dL, 0xed8b3dfeeb8fe0c9L, 0xb6bc34e87d11e415L,
|
|
0xb3908bbfb865c7f9L, 0x717d1ce6e1ecc17cL, 0x151e3308f7cdd69bL,
|
|
0x97bd5a14b5c94124L },
|
|
{ 0xe01c62fe81e82861L, 0x703d4b6ddd42c40eL, 0x7e52e55be65e91e5L,
|
|
0xb8b493745abbbfddL, 0xb4f15f52c72a45f4L, 0xce8435a8550f29d8L,
|
|
0x9df76b9b582de75fL, 0x52e84c5fa20c8b96L, 0xaf77d2d10a8a0af4L,
|
|
0x0389bbd8ca6013c3L, 0xb0d9b9ba26f8305fL, 0xf053e8480cec8b9aL,
|
|
0x4d63367affabda18L, 0x50f53be4a6424c2aL, 0xf892c58c864fba2eL,
|
|
0x317c6d3148cc5469L },
|
|
{ 0x0c3525b02cb7d42bL, 0x55240bc9310facaeL, 0x8d5d2022ff20408fL,
|
|
0x6b01402fe0c10ea0L, 0x7fbef68a718eb23dL, 0xa0146b5a41252a19L,
|
|
0x59afce48110e0d6eL, 0xe9a1d27f022de181L, 0x6db96d16dc3f49daL,
|
|
0xfc1ae3f5efbe4008L, 0xf9d70641eccbc11cL, 0x49022279525f8636L,
|
|
0x3769796ac2763c30L, 0x9cc3483c1d90630bL, 0x451651f0ee3d3f17L,
|
|
0x6ae597399da0b8fdL },
|
|
{ 0x57b13bc7bff4d2eeL, 0x2075422930b173d8L, 0xb6254bd50794936cL,
|
|
0x1d5f232a5efd55beL, 0xc06f4a854e0c3389L, 0xcf2c5b598e61f944L,
|
|
0xc564861ffd5f87b7L, 0xee261fb15a2afa4cL, 0xb0ff72262d97a774L,
|
|
0x1a89ae22d6cf007aL, 0x28880534d346f214L, 0x8fe73bff97b6497eL,
|
|
0x8a8595b2fa2afffcL, 0x9ef9cf3ef151a726L, 0xa84ee5f1e744b82bL,
|
|
0x6649048dbc63fe72L },
|
|
{ 0x91b7bb781e8b760dL, 0xd47b0bd825aadaa0L, 0x81493d9ffab5226fL,
|
|
0x4a6dd226bffc148eL, 0x5a032f8aa29be3dbL, 0x318dbc7034b0ab0bL,
|
|
0xdcccbfb57d654868L, 0x8506ab379c581e46L, 0x09136a6e2830ece2L,
|
|
0x48b79356cf6c80c7L, 0xfa176377ef6b1e86L, 0x2c9c1cc183f0f1c9L,
|
|
0x96f0526d16abedddL, 0x3e0e98e2a93b0de4L, 0x6f2d7ada0f13873aL,
|
|
0x4eb93b5cf3fa49ecL },
|
|
{ 0xbd89f7e5e11fae32L, 0xd13d74f5c4023f51L, 0x1b0014df491c3f6fL,
|
|
0x1d849a57555279b7L, 0xbb9e889705ba0068L, 0x82222419c13ca2caL,
|
|
0xafbbb685fd33676fL, 0x931c3f5275878a2aL, 0x12aeefefef3d5173L,
|
|
0x189a5cc8bd8a6878L, 0x82cffdb3d99f0c16L, 0xbf565406a19d48b6L,
|
|
0x5605e223e9c6c4e0L, 0x53e781de86804172L, 0xcdf5c90bc7001cc8L,
|
|
0x2b582d937c043f68L },
|
|
{ 0xa1165c8281abc2aeL, 0xa73380f5e2b69ecaL, 0xc097b3d207fff66fL,
|
|
0x5d60382654776506L, 0xdcbac9f3b57fa21cL, 0x78750db4c98dbdd5L,
|
|
0x85e21103d9eff32aL, 0xceed172c2f11c41cL, 0xa8e392649e348c09L,
|
|
0x71cb936b831eddfbL, 0x915c3d06f50864a3L, 0xfe8e33cde93acfcdL,
|
|
0x4bee10d7b3f2f7aaL, 0xc1d8eb48eb7cee9aL, 0x4fa49ce3fa574afdL,
|
|
0x78615109862db4c0L },
|
|
{ 0x3fe3f4807ae72c21L, 0x631aa144fd0f0da5L, 0xc76ee1e8f8c3a454L,
|
|
0x379ae09451b4f1abL, 0x2a3a4397d7cdbb24L, 0x7a14cffe82bd5fcdL,
|
|
0xbbe4ed12f427ef5aL, 0x9b0a43ee284d3ccfL, 0x57b78b938eec6e1eL,
|
|
0x18d404e467b8e87bL, 0x0c8adc0534374c20L, 0x643736055428deb5L,
|
|
0xb4d80ec0c3afa2cfL, 0x6d51f93c3aa956f9L, 0x9f9a28ab84161c68L,
|
|
0x540b6bb76bc9c025L },
|
|
{ 0x04e1734c321d315dL, 0x4ef56612d86e05d0L, 0xeafae145bba8cd81L,
|
|
0x1fb07a49acdc789aL, 0x6a21e9ad5877570fL, 0x2e4a837eb9bc53deL,
|
|
0x436db2931d6298ebL, 0x43afbc78ea362f45L, 0x2a973d97aabf6585L,
|
|
0xdce7dabe0c924d60L, 0xf69d98f07cadf0e9L, 0xe0b505a175020538L,
|
|
0x3db7d1a34461cd29L, 0xe1c287765e20e818L, 0x2ca2586752dd50f6L,
|
|
0x897cab1492e0388cL },
|
|
{ 0x59ed38130d8bab8aL, 0xc11d364ca438200aL, 0x0687bf2c40581415L,
|
|
0x86ad0d3a7ac89674L, 0x44928105b97411a0L, 0x74984b11f383371cL,
|
|
0x70d2ed840d1a831eL, 0xd883628b6c912fe0L, 0x44f8f7fb14fa88d2L,
|
|
0x564f2a4dcf0ac93eL, 0x82f629aaa6c24fa6L, 0xab906ba3bf6cd949L,
|
|
0x2c822e6720a5182dL, 0x2ff47dac30eb93a5L, 0xdc62c4a4fff673aaL,
|
|
0x64b00763476b0ec5L },
|
|
{ 0x1e3f533eb3c9a404L, 0xb1db7f73b7ef9952L, 0xc7f13e296c253693L,
|
|
0x7ce7f4c40738eed4L, 0xccfd3b33ce26cad0L, 0xd878493501ec5cf1L,
|
|
0x3f8fc09ddc084e01L, 0x217cab32c39b5acfL, 0x42daf0bb9ef5551cL,
|
|
0xfbc76f56e1217a95L, 0x80178b12c237002aL, 0x0b52c39fb070a293L,
|
|
0xe3925153576ca964L, 0x2555942419d68e36L, 0x291fb82c09e50e84L,
|
|
0x7dd22ea66618ed8cL },
|
|
{ 0x7ffe844b49cbb3bfL, 0xde0cc7045562fb25L, 0x1e6ee5379f5a845aL,
|
|
0x956d7f26e51277fcL, 0x2c75d4b930635718L, 0x39a1489296957f34L,
|
|
0x8cf4eb3282e5742bL, 0x6b0d3ddd83247b72L, 0x67a9f633201a4237L,
|
|
0x416403c11414a485L, 0x60afd447b6f6a916L, 0x95f94930dac6f790L,
|
|
0x685ff94bbd3b9d82L, 0x5c8f98fc51cadf0fL, 0x9559c88ab13b7489L,
|
|
0x31377c665f18fcc8L },
|
|
{ 0x35c5de097dcfb35fL, 0x2dccca9f01cc36f8L, 0x7e93e85d7576cb63L,
|
|
0x0c2dd48af7b4b375L, 0x9d95cd4fb09a19b5L, 0x752ed15971bfe607L,
|
|
0x439880cf2596dad2L, 0xe52efb5369e90a6fL, 0x4409766303d3e60aL,
|
|
0xfcf364faa95070e0L, 0xd8f993b605624dd2L, 0xb35a982400d5e467L,
|
|
0xe289d0240c8f4524L, 0xef45423c648a0179L, 0x3a5fd695587edabdL,
|
|
0x3dacc50ca11e5271L },
|
|
{ 0xcb3e4f946499ae4cL, 0xa46dcbe17053c527L, 0x807f5ce9be782e8aL,
|
|
0xb6c64d28d8481e45L, 0xf35e4518aa286fd0L, 0xf7b7b9badf1cdb49L,
|
|
0xf3fb6210aec23eafL, 0x0a9ba385b9bfd2fbL, 0xe51a0d538807f3a0L,
|
|
0x7ab24404b17b2842L, 0x6fd57687f9dd9f0aL, 0xcd1efdb4f3e9df64L,
|
|
0x5dd2df7a60df194dL, 0xbed3f2c3e069df05L, 0x469b756123248a31L,
|
|
0x866949e1694744f7L },
|
|
{ 0x3a9a0da53f4ab07aL, 0x2cd6f333f54a6fbfL, 0x0c92e921b23cf290L,
|
|
0xc9581c3e848e3d58L, 0x93af1fbdd3b218abL, 0x38598ea1066cb4d7L,
|
|
0x5001394e990c03a0L, 0x3b664b1e7d0877b5L, 0xd79db1bbd74c7091L,
|
|
0x852d44354e2d5dd0L, 0x0d2b841b3329db82L, 0xfa844eb07b96d480L,
|
|
0x37a50569c295dc46L, 0xc2d3837394f7ec4eL, 0xdc3884ff5b083177L,
|
|
0x574352b88b1fa598L },
|
|
{ 0xed2193f70d5d7ce9L, 0x3c19fd260b487eafL, 0x7c44ab597be65fd0L,
|
|
0xdd9da86078270d56L, 0x8a84ec00baa70198L, 0x2ec27e49285985dfL,
|
|
0x996ccaf0de2028d8L, 0x4e7648c761c2201dL, 0xa96335bc091c19ebL,
|
|
0x253a3a69f0d6782bL, 0x3f204340d2946493L, 0x444521a1099f6873L,
|
|
0x5fcbcc096996011aL, 0x3884d5d8f853a94eL, 0x2418c624d3b6a3a1L,
|
|
0x3e431af206ae3c4fL },
|
|
{ 0xf967d93983d381f1L, 0x36501aaed0c033c3L, 0xbf3af4d054410768L,
|
|
0xa86d15985093a6d3L, 0x43ae0741d92f2900L, 0xfeb2afa636f0b755L,
|
|
0xd090a6a3aa456d6fL, 0x336a4fdaaefdb646L, 0xfd1bfe441a942f7dL,
|
|
0x7fc2a3ed851ee41eL, 0x4f1c968611e935c5L, 0xcd57766653bbb343L,
|
|
0xf26931baad896c2aL, 0x8a0fbbd186bbfa41L, 0x1c3d7d82a203cef1L,
|
|
0x6dad3f15e2664d35L },
|
|
{ 0xd1940b7d12ec35a1L, 0x6219c5b6e7dfb128L, 0x2cc278c6f13321d5L,
|
|
0x5e76904a33c58eb6L, 0x15090f55d9903c43L, 0x061bc926c3d96a19L,
|
|
0x974a9f038c0acba7L, 0x7a4140217198b21bL, 0xb069599df8958c6fL,
|
|
0x517f2f1dbebd0129L, 0x1109a613df3a8dc3L, 0x08e58448672375c5L,
|
|
0x56590ba49383d2d3L, 0xfc3ee7c60bff837cL, 0xc87a539027d2d55fL,
|
|
0x2438e9d45f517a3fL },
|
|
{ 0xc4a453088815af3cL, 0xe55f1a32f3c9bed5L, 0xaef1cdc997b65ddfL,
|
|
0x61c61d9412e51eb5L, 0xbd0dac54e63f2490L, 0x6f14429cd0b3e231L,
|
|
0xf737c3c2f1da6010L, 0x7150e04b6bbc4fb1L, 0x205b4c891be281cbL,
|
|
0xf1b4633cd7701f5bL, 0x8b33ef462a513490L, 0xddb47c7368f1f7f2L,
|
|
0xf4ada511bd416b67L, 0x9d2a97cdff795bb3L, 0x00a8b7b296200e67L,
|
|
0x13f39011afe30e01L },
|
|
{ 0x3dd296ef7bd0c827L, 0x506110f34a29ff46L, 0xf87930681c9a515aL,
|
|
0xde8d8045268bca77L, 0xcbb83024998045dfL, 0x3f90d71068c0e584L,
|
|
0x2a838ca8263b6062L, 0x293bb5e7535c5d0bL, 0xceea99d556415110L,
|
|
0xfe311ad01bbda005L, 0x2497e0bfa4d8d018L, 0x33dd77a01cf2b866L,
|
|
0xbc075b73d8c4ba8bL, 0x298466d4722b7bc9L, 0x17a7ce24cbda1b0bL,
|
|
0x458d4b6b680703b6L },
|
|
{ 0x8a26a20e4d54d8b2L, 0x05a5696e4d320a0dL, 0x698b5858f994f700L,
|
|
0x7a4adc3c2f6549a8L, 0x1812e8193694d00dL, 0x46b9b000730402bdL,
|
|
0xe10a1449a1b36410L, 0xeae95ea599230220L, 0x3efc2e9b1b4820c3L,
|
|
0xfe5b5cb585c9eb8aL, 0x21ae031997847064L, 0x68ef0b708f27d49fL,
|
|
0x3259ef182f72556bL, 0x00ae0457624db01aL, 0x628e3b065668f95cL,
|
|
0x5f13f5fab6fbbf91L },
|
|
{ 0x7c6ed9ae3a9b0dc6L, 0xaea1bde96f883ec8L, 0xea66bf88ea8b3677L,
|
|
0xdefa6abc9a66e3abL, 0xc4d3317b68217ffdL, 0xf741c8f2290df05cL,
|
|
0x1f0fdf177d11674eL, 0xfdf0ece7c35989caL, 0x0eed92df6b9c482dL,
|
|
0x73713e6655bf1ca7L, 0x90acb29025cec99cL, 0x37c9e3a2e803e69cL,
|
|
0x7c0a3c5317713a1aL, 0x350dc5656f5a174dL, 0x11625a4405f802f6L,
|
|
0x2196495da37ba4a2L },
|
|
{ 0x00cb2fd313142680L, 0xab9e91d765d14cf4L, 0xc6a0ceabdfe2669eL,
|
|
0xbeefce580ae22bc5L, 0x3c2b7986cb6ec250L, 0x84adb1a2d738f1ffL,
|
|
0x9709bc28516ec8ecL, 0xf36931298e8f7db5L, 0xc48efc6b95b197f9L,
|
|
0x9ff109529aaaa404L, 0x2c3c8cbd144154b0L, 0x33ef7bc3427f3435L,
|
|
0x04a17940d21897c1L, 0x5aa0c47d6ce548a0L, 0x2971cea73d56fa62L,
|
|
0x93ad0eb004475f08L },
|
|
{ 0x7a0b6967988a9963L, 0x61e477f76515e8ddL, 0x6274e3863b6b50f2L,
|
|
0x63a9b8d5d33922deL, 0x3c38d3fb687a5b3dL, 0x18f6f09c1302e323L,
|
|
0x254c05c3e02fcccfL, 0xc04ed0b726e662f7L, 0x1d5646b8143fe079L,
|
|
0xef8a9448c9016c8cL, 0xe5674c4bf823d797L, 0x0586f72fbccde451L,
|
|
0xc5fc88d54417eadeL, 0x2b952209576e588dL, 0x4408dd425844d1f9L,
|
|
0x73f8c3f0ea41c034L },
|
|
{ 0x89534fc85df763ddL, 0x3b1427f33ac71836L, 0x0db5be176e8f15a0L,
|
|
0x1d390944cb20888eL, 0x7804c9ad857caea6L, 0xaa584428519f7bf3L,
|
|
0x626eecf1293aa8cfL, 0x749e0d98ea36a015L, 0xefff6dae3321edcdL,
|
|
0x963deea628b791ccL, 0xa14e05522d16e361L, 0xa2e058fcb15ae206L,
|
|
0x0f268745fca325e4L, 0x7cf9d40721341a8aL, 0xdfed25d97caa51b8L,
|
|
0x0108ae39adbedd75L },
|
|
{ 0x54d178f3a9e88f63L, 0xaa05b11eab0c7325L, 0x773a53e6e261d8a6L,
|
|
0x24db7dae8d0b91c8L, 0xde10b073e9bb004dL, 0xfc8befe754e3090bL,
|
|
0x16af05990cc69c89L, 0xddc838039d59511aL, 0xc3f65b9946c5dafcL,
|
|
0xfbbe4be81ee0a599L, 0x88891e36fb3a9b17L, 0x0c9aad75445dad00L,
|
|
0xdffc46abd5097e1fL, 0x8848089bac85a4e1L, 0x348bb42fa0c45233L,
|
|
0x807c06d8eb13c1dfL },
|
|
{ 0x00a969ec98ee0ef6L, 0xba9d54838bb7b7afL, 0x24484c92a02f8fdbL,
|
|
0x7bdb201a8b70557cL, 0xe59343e460ad1af2L, 0x53a9a942998c95fbL,
|
|
0x974db3deda861d3bL, 0xce1525c9ed399c0eL, 0x89b56881f72109bdL,
|
|
0x08ff7d15998211a4L, 0x5df76b3aef0f275aL, 0x93f180f7fa2f358bL,
|
|
0xaac4ffcfc39b0634L, 0x2692c62617583b53L, 0xb2fdfa36b55399fcL,
|
|
0x16424c6c99607a61L },
|
|
{ 0x5dd65c55dd2744a9L, 0x2544c1c2fe3af418L, 0x32c82e99efe8b089L,
|
|
0x30b7ab25a9df691aL, 0x983845509be99674L, 0xbcecd258caf2d122L,
|
|
0x88ae4098bcc77272L, 0xd43961414b8efa0cL, 0x44ff67b9ed64d12cL,
|
|
0xa9e655e42e7f3404L, 0x3d16fc4545b0e9ebL, 0x474a3e14f03ded28L,
|
|
0xa3c9adffacccb85cL, 0x3dfe6bc17253a51bL, 0xdddaf4b9fb5831b1L,
|
|
0x5544e602a4f4478aL },
|
|
{ 0x897c5313baa80b4fL, 0x0122716f63bdc8efL, 0xae2742db7b42c5a8L,
|
|
0xe9d9e1e90883308cL, 0x352c8c3f2d341ab1L, 0x163d0500ed945870L,
|
|
0x8349dd73c290d9d8L, 0x2053c5e01f6c7d29L, 0x83107446cb42033cL,
|
|
0x76c88bd209d09af1L, 0xd0f70e6eb2794681L, 0x720b59de19b1b540L,
|
|
0x80b7ecdc22994b43L, 0xc1a4cdce2dec53cfL, 0xdd7d3edd1ed60f42L,
|
|
0x5735995ce241d261L },
|
|
{ 0xdc4ba3fba0237056L, 0x6856c16433ab3388L, 0xc01eebbd271ec612L,
|
|
0xabdeb033e3031becL, 0x4eee44196118a1f5L, 0xec4974215b600f33L,
|
|
0x1b7185cf08868773L, 0x7b0c46cd7c1b7dfdL, 0xd143b2da4a4c5e89L,
|
|
0xdb9a5984bb1ff94dL, 0xac3904e4c9cf3465L, 0xf8729bc0eace64c9L,
|
|
0x5cc22821768ad99aL, 0xbbd3b0818a9540c2L, 0xe468ed5f049a6917L,
|
|
0x885486df3ec45ef0L },
|
|
{ 0x6a942c934bdff464L, 0x3db2719f25a7b451L, 0xccb0070b325be324L,
|
|
0x2055a31b19fe3339L, 0xaca69ae8241ee8ffL, 0x7607dd0855ef8defL,
|
|
0x9e24960f1a1b73c6L, 0xbcb0e8a271d36810L, 0x29e11aa26885e6b9L,
|
|
0x98b5d0ab185eae19L, 0x1a0b96e40f81f91cL, 0x4d0e8bcf994fc503L,
|
|
0x33d81697f119d6e0L, 0x29083287aaa4ce0cL, 0xc5dd4d3ec91ff9d7L,
|
|
0x31cecfe8d4ab962dL },
|
|
{ 0x437bfd9afc8b21e8L, 0xe5dd32b3b19436dfL, 0xfe5902d4921c36a0L,
|
|
0x8e9de84da3d0fa90L, 0x9663e6ad5bb523bdL, 0x9800a23faecd6975L,
|
|
0x1009c0d9b4fbb59cL, 0x839aa7bdc9d20ff1L, 0xf502f66decd6fa3dL,
|
|
0x480ed4fbc5516ca9L, 0x65ffa5f66c742ac4L, 0x2b7c7945ff3252f8L,
|
|
0x72fefc0575d9cb3dL, 0x11b0863bd6d6f1d2L, 0x5d8f3cf09a6a4ec3L,
|
|
0x6961b46ada2547b3L },
|
|
{ 0xd07b587ecb35e2acL, 0x1ed5546b57af14d9L, 0xeca17a5bdb28a04cL,
|
|
0xa1f91d44709d54f0L, 0xa6e719fd9c6f400eL, 0x4e4b88edfb8ce190L,
|
|
0xf9781edd246e3fd2L, 0xd67120e6b655af5dL, 0xda782d1d93413ca7L,
|
|
0x697e20a29707fa21L, 0x1eb51f3254e84123L, 0x2e254d9e36051f9fL,
|
|
0xddaec42b73ce5be9L, 0x89a9a32ecd3f794fL, 0x1964e22f0781aad9L,
|
|
0x6a63a90c53755212L },
|
|
{ 0x76554e003d7acbbbL, 0x2c01668ab74f6108L, 0xe4a29672388c519bL,
|
|
0x016677143eb94d4fL, 0x086a3cdf0cd6d2f6L, 0xf86580217b370f7fL,
|
|
0x658880c15a4d3e7cL, 0xd6ed58165ba3f4a1L, 0xabcc78135ca471ddL,
|
|
0x809bf074e844a576L, 0xa53a81b36ea502eaL, 0xc20b93070e021ed3L,
|
|
0x8c27f8928617f165L, 0xa54764468235cd0bL, 0xffc89ffd82552961L,
|
|
0x51ed4a22d151d90eL },
|
|
{ 0x37d6963a449701b4L, 0xea8d91a3bb27caf2L, 0x3ef9be15b572965fL,
|
|
0x75a7a055db50bf7dL, 0xfd67480ece643b9bL, 0xf2a60d2d6ceb5d5eL,
|
|
0x68fc320c5ed7c897L, 0x41c53cf628ce685fL, 0x0e29711f7106615eL,
|
|
0x7a87213823500eccL, 0xaf0a92606c29fe48L, 0x93df3f2ae1ef9712L,
|
|
0x0d5f6fb1d2d169bfL, 0xeb7afe2674a9793cL, 0x4173d94ae9f49256L,
|
|
0x2d6951bc2b8b5ce5L },
|
|
{ 0xdd007d9f904e222eL, 0x333f248f86f4e109L, 0xd4994e8b8f429eeeL,
|
|
0x29573415cfc77518L, 0x6e7fea3a0b0f42f1L, 0xc795cb7dc2743519L,
|
|
0x820a8f66711e71a0L, 0x83d95d9c2b874f55L, 0xd4b64d78e70e1627L,
|
|
0x924353f58b92a742L, 0x322048b1447b5e6dL, 0x0bad730cbcf931a0L,
|
|
0x75c4d089a7af2268L, 0x464904c1b83b93f9L, 0xa24eba02165b3aeeL,
|
|
0x65c48e78e08cc5f0L },
|
|
{ 0x1a1c73cede222c22L, 0x5683d8cdfcea23b4L, 0x0301cb14b2143b06L,
|
|
0x284adf8f59fcec77L, 0xfb1c581c31204cefL, 0xf54d3eee94735107L,
|
|
0xdbf67f0b4d3188c0L, 0x76a3f2d110f18d12L, 0x3809fa2807d3e013L,
|
|
0xf06f0a4625e7ece0L, 0xd82867edb2895d2eL, 0xe106f48908b0553aL,
|
|
0xe2280fa6ef245445L, 0x402d5785a8d9a3cbL, 0xf63dd9ffd438ba2dL,
|
|
0x36b5cd2c7a6b226fL },
|
|
{ 0x87ff4e20545679a7L, 0x64d80b414520c750L, 0x90a357fa9b459cd8L,
|
|
0xa19eaf39c85af1a3L, 0x0d475d798d935a5eL, 0x74501983781a678aL,
|
|
0x748397790cc2e810L, 0xc6a21d112f412244L, 0x8d0e85f936a51a37L,
|
|
0xff50151eeaa74df8L, 0x14e182a793cf99c4L, 0x45593df1376a9ab6L,
|
|
0x18f73caf522389ffL, 0xd27cc960f7445e8aL, 0x0692f4c539a51dc8L,
|
|
0x08d7c144db39bfd8L },
|
|
{ 0x809c0d963ecca773L, 0x87ea9192d48c2156L, 0xf0eccd74db6bd641L,
|
|
0x773123742a678cdfL, 0x7a966d8bd1587b7eL, 0xf3c1a1016130a4c6L,
|
|
0x7cc6e8385fce17bdL, 0x95e95bb8a8de7aa4L, 0x3fe1e8b5898308e3L,
|
|
0x0197243ee347694aL, 0xf3fe9c42bb0cd2bfL, 0xb59052640f9b2b49L,
|
|
0x4c385e8bc7367d1fL, 0x1d3050aeb5ee147bL, 0x8e2c387904004ad9L,
|
|
0x5f2aa8eebab70202L },
|
|
{ 0xe208d4641266524bL, 0xb7bf3880d0a19f66L, 0xa5aa685eda106ebfL,
|
|
0x0a69e8d3e642dd46L, 0xef349c61c682e4d6L, 0x26f6ee3b0fcb534cL,
|
|
0x7daba12705eb67b8L, 0x2babb27e18be05f6L, 0x959afcba8e2d85d1L,
|
|
0xedcf2d1ae2d9d386L, 0x59dc52e61ea6f06eL, 0xc28278b4866e5ae8L,
|
|
0xd9ff034002bcd3c7L, 0xe884ac76784be82fL, 0xa316498083c9f224L,
|
|
0x62501a98b46ff949L },
|
|
{ 0x563f7d9aad264086L, 0xca6a33dba5e0e4bdL, 0xe82530028c8d3d67L,
|
|
0xa288dac846e64b19L, 0xfa3c919720aa4536L, 0x8130c9b0ed553eacL,
|
|
0x622806e02ea8abd3L, 0x52fbf54dceccfe77L, 0xbd9a8e314f0d1b70L,
|
|
0x519d2133d59b1741L, 0xfd74101c9a6fea8aL, 0xd1acf7a0b5c4eb10L,
|
|
0x78499b7391f9da5eL, 0xabaa4c49c0dea586L, 0xcc9c5f73a1f3531aL,
|
|
0x497b15fefd3fc665L },
|
|
{ 0x8a56cbaaf45568e9L, 0xf491a0fec7192a6fL, 0xdbb03dd39ab2539aL,
|
|
0xc86522f84ac37da9L, 0x8c8cdba202a0f5b4L, 0x8109fc75a29c539fL,
|
|
0x9cd06d31ca90f02eL, 0x8f31f0443e216dbfL, 0x99aa68acba3ebd91L,
|
|
0x2a80d0d242c007f4L, 0xdd8dffbf86a9b7ceL, 0x405d3e84d6308edcL,
|
|
0xdafa33fe068012caL, 0xc2eebd13edea1071L, 0xb7ae7e5c2ff637e6L,
|
|
0x18d46a6c9e514cb7L },
|
|
{ 0x868cbb22a78b7802L, 0x0745ddb2497cbaf4L, 0xc4eb2f3e42ae8addL,
|
|
0xac0abcdab4ceb4e4L, 0x2e0d8325a325fd40L, 0x6cfe057113ac7345L,
|
|
0x7407a788b14171b9L, 0x70eb06036da7a52bL, 0xab0b36f9d85176acL,
|
|
0x14109d297c2954f3L, 0x370de9c8dcd705adL, 0x3f0db5cd7bb5e751L,
|
|
0x45f93d41a06e708cL, 0x10d54f8a7e93050dL, 0x69e6f8e45a38fef9L,
|
|
0x55044601d3f62e40L },
|
|
{ 0xd1c5c91006cb9cc9L, 0x542074d741d00014L, 0x7cd8663e11236fb8L,
|
|
0x39721ffe29ad5f82L, 0x1d21fbfa2951fc83L, 0x1cde06e7400d144fL,
|
|
0x9042596b91792e6bL, 0x3365c8e529ad5166L, 0xe2220e859aeefe98L,
|
|
0xbcb5318970c2aee3L, 0x477ca3db9ff100bcL, 0x27074176f532973fL,
|
|
0xa12118ac9a2bd01bL, 0xf34252093dd79f93L, 0x563a8ff7c6f5d7dbL,
|
|
0x0da313fcd7b0ec4fL },
|
|
{ 0x37125a8c15aa2557L, 0xca21d70c00893e9cL, 0x4871399467b8a823L,
|
|
0x0d3e9a747cb0042aL, 0x2d2bf4ffc9e2ce18L, 0xd5531a0d049aeac2L,
|
|
0x4d29a616f03d0660L, 0x473d50d61f1b7f00L, 0x3af0ecbbca3de50cL,
|
|
0xe2959bea09c28f27L, 0x6d7c2ea0f8704664L, 0xadfae4e1731083efL,
|
|
0x50940c26941c2554L, 0x44167410a1162d03L, 0x620230d81e82290eL,
|
|
0x63630be8db414accL },
|
|
{ 0xbf8d52228a7d2e41L, 0x49e75823eb62f879L, 0x1b4d33dd6c402d89L,
|
|
0x883e04d6de2c59adL, 0xbf3f38f449b9dc38L, 0x9d997d18b4b70c4cL,
|
|
0x1f69b20c13cea045L, 0xca3d702558e2606dL, 0x3d4fd977261d1b79L,
|
|
0x56aeafa85a1436faL, 0x369b3e98bb443c07L, 0xfce5186ce558f6beL,
|
|
0xeb0cd478f8ac8f89L, 0x68074f37d5e5aa72L, 0x295845c068544eb0L,
|
|
0x306a9871f16688edL },
|
|
{ 0xbc451e9d634ec136L, 0x1edf27ca0e6f658fL, 0xa9be0152c0db4120L,
|
|
0x87b6ef20c5bfee67L, 0x352832389a2d6023L, 0x60e564d8c7afb899L,
|
|
0x4af22bc00ac9c2deL, 0x28e6f63182a9d22bL, 0xc075c701f532701bL,
|
|
0xf6d418f882075f91L, 0xf9fa628d1beaa511L, 0x551e7a176e72a13dL,
|
|
0x9306215b77f4c01cL, 0x71aba73193c9d588L, 0x6443ebe058e57cd4L,
|
|
0x2833ac41e8103e37L },
|
|
{ 0x7e564b868da5ec5cL, 0xac3d9da81c08db24L, 0x9d7c1f0b8c57a728L,
|
|
0x3512afe79d343dc2L, 0xb438e4cffdc60339L, 0x7d5a2700dcfa1941L,
|
|
0xd5f323f827320449L, 0x1b87a58e1393c6e6L, 0xecb68bd104baa431L,
|
|
0xc09c1c5a4722b4d7L, 0xf42faa97206b5faaL, 0xe1dcbcd69976327eL,
|
|
0x655ba9e4087787d9L, 0xbd59c757de5c0191L, 0x673020ed0bcf3538L,
|
|
0x120cd454a49d6303L },
|
|
{ 0xebfdb8f4cab0f9eeL, 0xbc003ef02cce58eeL, 0x9b6a68415a8d0665L,
|
|
0x642ed3a69b957774L, 0x3de487f04721ab5cL, 0xef2ff38021a4f0d3L,
|
|
0xbd16f55829dbddcdL, 0x2ef05b4b0e93dff2L, 0xde1faa120bc9aec1L,
|
|
0x66dae2c2d467fa92L, 0x758daf645eb33e34L, 0xa67ad9f68f0103cbL,
|
|
0x151f693a9be02430L, 0xd5698496eb4054bcL, 0x8ef1677e7019336eL,
|
|
0x021cfd167fdeea3eL },
|
|
{ 0x5c73715fdf5c36f3L, 0x703bde37d64ad254L, 0x55368d10f2cf7713L,
|
|
0x1e5ec7b70f3993c8L, 0xfdb16776304ae4caL, 0x0d8f717e3d3bb18bL,
|
|
0x5267073f66343d5aL, 0xfaeb52ef156008b5L, 0xb97ad5f9224a470fL,
|
|
0xaf86e391ed2ab51aL, 0xdc0c7e579974302cL, 0xc88fa817fd0ae28aL,
|
|
0x807c22dfbf8ed59cL, 0x5dedc231eb128bb6L, 0x71edcd9ca20595a3L,
|
|
0x07265b46c73cf78eL },
|
|
{ 0x73dd99f0bd66232fL, 0xc59aaf89c4027716L, 0xaf826dfa5b860fc4L,
|
|
0x239ea8aa7a943f3bL, 0x0e0e1b1a523c428dL, 0x55ea0e3a6973b95aL,
|
|
0xea399caa2557753bL, 0xf8adf72f06957b1fL, 0x0389f3413bd34302L,
|
|
0x333f27d0f8a43a97L, 0xcd9c0c08adaf796fL, 0x6dcca49b49c12aa2L,
|
|
0xdd88deee7a0ac6e9L, 0x8f47575d0644080eL, 0x6e9d667d0cc2f4bdL,
|
|
0x36c5754b31d1496cL },
|
|
{ 0x9120046ef323d84bL, 0xa69911227e789c4fL, 0x4b0eaf4e921b8055L,
|
|
0x6339844a8079974eL, 0xc905466a740f8c79L, 0x1c18d0f7cd6def49L,
|
|
0x5297da6b4b23e4baL, 0x1c09dff3c41800c5L, 0x6c49075b37ef6777L,
|
|
0xa94c3a4050513dedL, 0x3d6742e96b0b1705L, 0xc0784494c48af5aeL,
|
|
0x40c01532c95822deL, 0xa2ddade5c164d94fL, 0xfc8a8ac9a2975eb5L,
|
|
0x06fbf8611946944eL },
|
|
{ 0x2d65338e3f45aa97L, 0xd83b58c81d040febL, 0x05fef59b0fdef8b9L,
|
|
0x7beb071ae4d7417cL, 0x982b61f5b30a1a23L, 0x4c5f2a2afb65bd03L,
|
|
0xe40abc9d5cbf6bf3L, 0x422c326df06612a5L, 0xc921e69d9571ae28L,
|
|
0x7c88b10b23d3434eL, 0x96d2e9579da07933L, 0x833d46a13619cf4dL,
|
|
0xd9d19653d95eefa1L, 0x2a7d8411a03e8f0eL, 0x5e64295304bb5ab1L,
|
|
0x5e9ca0fd1f0fa9eaL },
|
|
{ 0x5bd54571197c5dc4L, 0xe2da40bfe78a95a2L, 0x65fb9efcffdb0eb2L,
|
|
0xe952dc2c0d17467cL, 0xc1fc9c7bc758c6a3L, 0xfc79562cd4034a9aL,
|
|
0x26e36fbe61f64b56L, 0x6adc4b9e1e84728bL, 0x7f165fd3a8f9ac8aL,
|
|
0x7bc93a4503e3e013L, 0xeacc5513656478e3L, 0xd3391717064ddc77L,
|
|
0x75b318dc76936914L, 0x69b1f1c7362424a6L, 0x8cc2045b49955f34L,
|
|
0x940622b3c6836af8L },
|
|
{ 0x4710ccb70d997973L, 0x3b29625dd3f8f115L, 0x8cf0c4d55b97abd5L,
|
|
0xc6321e0a673e14a5L, 0x0541af9d3d262246L, 0xde6d87546fc83b11L,
|
|
0x47e97da8f01652a4L, 0x0f82b3a6ad9802b6L, 0x69aa4075ae9c44b2L,
|
|
0xaf3f5de2ced2bf77L, 0x1ef1ea8a497a40daL, 0x2e0f86083c23ba9cL,
|
|
0xd8a998a4f190a2c8L, 0xe2b49c8ccfde3368L, 0xb9f49824bde6bd71L,
|
|
0x80bb1664785bedb6L },
|
|
{ 0x05e575fefd145cb5L, 0x155ee561ac5e6883L, 0x461e70cf8793b273L,
|
|
0x9f1553de133b2338L, 0x2fb9e0c3a2a7ba07L, 0xc3bfd6a83e7086faL,
|
|
0xb6ba85008bb4cb93L, 0x0b66d78976f82dbdL, 0x7d5a6ff654eb49ffL,
|
|
0xcd65d2371f20b322L, 0x79ea49c254e29cdcL, 0x64975963cb118ff9L,
|
|
0x969598ddcc58000bL, 0x95107918110c779cL, 0xedfc154863b85a35L,
|
|
0x077ba5ea41212350L },
|
|
{ 0x0b3a38d3cdd86f61L, 0x431214450502a0abL, 0x1912edc5806d0272L,
|
|
0x01dc1f988a32f10fL, 0xbb1d31d10e80c760L, 0xd46ec7e5f464e8b3L,
|
|
0xd569af369abf49eeL, 0x9d286ea72cdade77L, 0x2be7020d45ad5920L,
|
|
0xabe5236e6299ae7fL, 0xc93179bdd3f55c07L, 0x8138995a52350e80L,
|
|
0x0901265caff07586L, 0x5b3c81b2f4739653L, 0xbaf7581d9bc77d21L,
|
|
0x6b2006df4591a2e2L },
|
|
{ 0xb2fe50a8965b1bc1L, 0x931f536a962bb4fdL, 0xd5718d33000e7f99L,
|
|
0x84728f2553d5125eL, 0x4f8a6184d2125cafL, 0x54f1a701357f679eL,
|
|
0x70a9f40c1531c05aL, 0x10d0cb976fa8b775L, 0xb476f41e9dc12ce9L,
|
|
0x5c8d7a752755f894L, 0xd6c12e10625741a4L, 0x262a6fb8c917b16cL,
|
|
0x24d116e638d6b0a0L, 0x849540c032c38e83L, 0x855b911c66868afcL,
|
|
0x53217ea6bd26b550L },
|
|
{ 0xfc840473259f52b4L, 0x968da9cbe621146cL, 0x964eb85ecacbd26eL,
|
|
0xab7daa2de4a54344L, 0x6dc3b848381a4ff7L, 0xa07a96b341c815efL,
|
|
0xc4fae9e8c3d4b1e1L, 0x0f938d1e42ce9ea8L, 0xa727dacc35cc052fL,
|
|
0xc81e01c9e9a06f07L, 0xa9e08dcb4a6d65a1L, 0xf8e2d1736044a9a6L,
|
|
0x99893dd0f2bd295bL, 0xa08d3379f9781b12L, 0x64bd600161830ac2L,
|
|
0x0386931ed9adbeefL },
|
|
{ 0xd0d7abb3d09885a5L, 0xed9d2b67e355bb07L, 0x3bc238cf536ebaedL,
|
|
0x61ca2e78699ce4d6L, 0x354ff447111594cdL, 0x55cbe70903316ad2L,
|
|
0x418679fd49fff5c4L, 0x75bacd750f9c6c40L, 0x677edc882972721aL,
|
|
0x82596887e5ef502fL, 0x459e9367bf320e0eL, 0x81ce36ef8bbdccb2L,
|
|
0x1ba097fcb766863dL, 0xcd3a21d6d58c6db8L, 0x0e4967cdb4a8748bL,
|
|
0x2caaf74915041c20L },
|
|
{ 0x44f980066ed20424L, 0xb3e4ea2322471545L, 0x268ed1a5781a8c86L,
|
|
0x48d0ab757ae5b70bL, 0x6ca8b320356d3982L, 0x9ce8e6812df31fa4L,
|
|
0xb909d232d925dcf2L, 0x302c8f78f56723deL, 0x11725d69abac96f9L,
|
|
0x656a47ca57d1a170L, 0x6bb5d511c18a2be7L, 0xb56e45f1ad50d9d9L,
|
|
0x36e886e270b05518L, 0xc7c71f3d09d8ff91L, 0x65a1bbe29350361eL,
|
|
0x86d7f53245fe3bd8L },
|
|
{ 0x99f16eb6b0bf719aL, 0xb69750988bc3d913L, 0xfae50e5226cd01b4L,
|
|
0xd3e3ac5490898d1cL, 0x4da3b9db887ec666L, 0x58300644fbea45b8L,
|
|
0x369f3bd98355b058L, 0x0fb239a8579bcc13L, 0x4f5b45396e2bd811L,
|
|
0x007f3baf24198fd2L, 0x68a676db8837d51dL, 0x68eeea62eae75b16L,
|
|
0x5ffe5f943db6083cL, 0x52c94d0f7d836c5aL, 0x5a4c3c6fcbc1ff85L,
|
|
0x682a55e386c0b4ddL },
|
|
{ 0xc8f235a4587495aaL, 0x2276026c34c7245dL, 0xd6ae0cc5b75a46e3L,
|
|
0x890d3965ecc3e5e7L, 0x1b13342f14296629L, 0xc89927e68a877227L,
|
|
0x1543f27e2324a68bL, 0x6c44768449cdc21aL, 0x9bc7fd4f1452d0acL,
|
|
0x2cc30a31ff4b045cL, 0x415d46a0852f7611L, 0xad737052c6fdd7a6L,
|
|
0xdcecc3ab7b4c7c91L, 0xd2cdf01b7688d70cL, 0x054f2542e40d3905L,
|
|
0x02227fa6fefe4dcdL },
|
|
{ 0x1805efd9b751948bL, 0x8efeed46fdfd225dL, 0xcb128e094f2c8b22L,
|
|
0x9d1090bf96f7c5e5L, 0x0959d044b4cbeca0L, 0x21c955f98e08cb04L,
|
|
0xbc1f279d68fa4fceL, 0xb021e14e0710ae9aL, 0x64d16e9f881167f4L,
|
|
0xf5a5c22ebbc9f1a5L, 0x5f3716dfe3420eeaL, 0x971eb915d5c4e843L,
|
|
0x64fc55fc28ffba81L, 0x3427e54d7dd37578L, 0x446e6a6215ebc7d0L,
|
|
0x547e249a29269778L },
|
|
{ 0x4706868aa1ffda27L, 0xb4e6cdcc7955cf50L, 0xf65151e10a63f3d8L,
|
|
0x5b4127ea9de5e70aL, 0x3d2c09baf9342823L, 0x18c99d83aa2f7d51L,
|
|
0xa0c5bb1dddeec025L, 0x7ffddf8403dcf1ceL, 0xe57e4d29616fdedaL,
|
|
0xd24565697932a1f0L, 0x7475e0e83191d4e3L, 0x3479bea1c220218bL,
|
|
0xfceb5c908bcb2505L, 0x1c685cea3c6132e6L, 0xc42dc745bfe6c1ebL,
|
|
0x45a41cc0d2b08eeaL },
|
|
{ 0x3ea9b2c74dbbf0e1L, 0x41ff962fa17cf70eL, 0xdc1ea7585eeb4c66L,
|
|
0x4f5412d2a9beb17eL, 0x2c9e4f52a285741aL, 0x93df7da4984fd11fL,
|
|
0xb2afbddc0df3184eL, 0x96323d252421e375L, 0xc87be1e449df781eL,
|
|
0x145601ed3d589beaL, 0x0f0bd9bd28fff6ddL, 0x2d3259d48a0f298cL,
|
|
0x362d7a77d88e6944L, 0xa84c06b6b6ac2af6L, 0xba850ac9d087da02L,
|
|
0x128763c942ee40c8L },
|
|
{ 0x29a80f07acbac178L, 0x7cc2004434b08f6eL, 0xe9631d1470feded2L,
|
|
0xb2115da386615767L, 0x7c75f5c4cb088548L, 0x5b29d2139a2e8e03L,
|
|
0xfe9fda668b881752L, 0x3f1d8d88c1de7ebcL, 0xb476565e03218123L,
|
|
0x07365561b1c995f3L, 0x2160cb18b13eb71bL, 0x7e8da51399b3a0ebL,
|
|
0x5e8ca1f9b20fcd74L, 0x6a7e0067b4126d72L, 0x1e8204b768bb637fL,
|
|
0x75e96bccfc4f74d2L },
|
|
{ 0x189d1fdc0d19716eL, 0xdf5850587c384525L, 0x64a846d1ea987d2aL,
|
|
0x12b6bf836c07150fL, 0x91d85d464d6fd5b7L, 0xa97888364f53f55fL,
|
|
0x60083bd881509129L, 0xa7672683ea876f48L, 0xe80b2e7ac15b2489L,
|
|
0x985ef8d242d1d992L, 0x9c57b029cf3de492L, 0xfe02f83cb1487627L,
|
|
0xaeba4fe48ae5b687L, 0x8a86f09b5d6b8196L, 0xd88f566ba16e523dL,
|
|
0x309a6e9aba268949L },
|
|
{ 0xef27ee50bdfbe97aL, 0x1a5fe70fb8c50c4dL, 0xcc7beb017fe09f5cL,
|
|
0x8fa15a85bed36cc5L, 0xc0c3acdb7550ed3aL, 0xc581ef87eb908681L,
|
|
0xa15b3362c49d5ccbL, 0x0fbb17141fa264e8L, 0x267f8d8f8e1eee88L,
|
|
0xd31ccfd621c2b63dL, 0x924dbe7d53be7efdL, 0xd42e877fdb2a358aL,
|
|
0xcf9673c775d68ac1L, 0xe35978fd714fea55L, 0xeeb366535769b202L,
|
|
0x0458258ad7593789L },
|
|
{ 0x5df71a74a042dbdfL, 0x2d4058575779dfa2L, 0x0e66cba70d2e6657L,
|
|
0x285d6745ca2e892eL, 0xf56a8def0f0e6b5fL, 0xe0ee851da30767c3L,
|
|
0x98c0565843346b9cL, 0xb35fce26d6b3c742L, 0xc0895bff39777e00L,
|
|
0x83c8f6a6e7b6d886L, 0xbee148434f02904bL, 0x7f74915b2e84ec34L,
|
|
0xbaaf663c96d10991L, 0x004b8757e41facc0L, 0xa2b880e56f86c029L,
|
|
0x53f4a3e095b77358L },
|
|
{ 0x11bb08ce89fc48e7L, 0xba60c577afab5aebL, 0xf06bcbf8a0c1cb5aL,
|
|
0x7d2efaea79757cb6L, 0xe26d90b176319160L, 0x42aa1ab62b77b7a9L,
|
|
0x38eec0cd285df2bfL, 0xd35947f5f3a8f7f0L, 0x97c8dc0efc1cb5b5L,
|
|
0xfeb8cca0c45845cfL, 0x16e8d989249e26f2L, 0x7c264e6d483ed89aL,
|
|
0x13a3f14551d91073L, 0x8501562e305e99f0L, 0xaaf98d746908d563L,
|
|
0x0a99e653d723d236L },
|
|
{ 0x23536f46abbc0559L, 0xc163067b9aa1a160L, 0x229fd2290c1681b5L,
|
|
0x61254be11378e907L, 0xc60ff57aab793a2dL, 0xa6f2df8b466552dbL,
|
|
0x9ad318938c170a36L, 0xc5cd9abe29b74d9aL, 0xcf747273f7848523L,
|
|
0xc126a93a0d0e3063L, 0xfe2021e34248e3d8L, 0xd97343ee8323ddfaL,
|
|
0x9f768775332639e7L, 0x9650fc3175325548L, 0xb595dbd13eebf7eaL,
|
|
0x3a95cb45010fcbc0L },
|
|
{ 0x954e68cb39d7ff2eL, 0x8dd1cb4bc1d5c48fL, 0x02a92c777169438aL,
|
|
0x7965c0b091cad8ceL, 0x0c5798ab32cd08d2L, 0x1a5bc3c3a6902bdaL,
|
|
0x545d09255186d218L, 0xf0077cdbd27e64dbL, 0x0157caa48cd092daL,
|
|
0x2a2fa3a024532ab3L, 0xa5fb639b41ccaba3L, 0x01702dc14744aee6L,
|
|
0x485bb436cdba93daL, 0x93597f66329784f1L, 0x5d713c1ddad672c3L,
|
|
0x366d222e030b7245L },
|
|
{ 0xd50b4875573ea5b2L, 0x0fce401ba90da44dL, 0x7b53fa657a1a0310L,
|
|
0x722a80a5cf114460L, 0x0b8ebf05a538bf49L, 0xae141147d32acd21L,
|
|
0x6692712c7b5ad07dL, 0x6dc5fee73f48ca07L, 0x98ed14992b8a78d8L,
|
|
0x4e8b3145dd2f1759L, 0x43408de15f971b8eL, 0x055ea6ddadf1b368L,
|
|
0x4bb76e73e5932b7eL, 0x44287153d30893fdL, 0x173dccd20661bfdaL,
|
|
0x9072ba9979defd25L },
|
|
{ 0x474de4dd9620ea39L, 0xfbf1649fc831cee8L, 0x0b0e8bb1cd3a9c43L,
|
|
0x6a38286f3f3df1d5L, 0x4ed072b38f0ec9b3L, 0xa6e4c987729c09e3L,
|
|
0xea3e8ac68ad12242L, 0x6ae0e22bfbdfa5baL, 0x56171ecfb0a0f592L,
|
|
0x33b2886d6b871f8dL, 0x6b19bea935e11bdaL, 0x4d815a407f0f153fL,
|
|
0x7e608d977d6c02eeL, 0x7e8f23d9b6a88f46L, 0x26ac9652439d1654L,
|
|
0x8d92c6bd35546c29L },
|
|
{ 0xb3e0d7ceabeb0ff7L, 0xfbe352543e0e42f8L, 0x57d1b226de808499L,
|
|
0x9ece2e1f1cd44bc3L, 0x1245adbc435cfee1L, 0x874ee840f93f581cL,
|
|
0x916a779cbda0b947L, 0xabcc815afa57ae0aL, 0x97adec2df0a621b0L,
|
|
0xbe6a502b81f90bdcL, 0x54bf9de153bde63dL, 0xa88fdabf78884c25L,
|
|
0x30aa52b1cbbb5470L, 0xf805396c29053ef5L, 0x8d43d8988dd827eaL,
|
|
0x4e4bec175c1ae5c0L },
|
|
{ 0xbf8483a2fcc09676L, 0x457c4a3f19ea9a94L, 0xa6852ef3d702a5ddL,
|
|
0xe7915fd2843fe7d8L, 0x644bba9816e35158L, 0x8d1b95d09ed746f0L,
|
|
0x47704581b90af0b5L, 0x0bd4bc6bd4fd135eL, 0xa6dce067b4e833a5L,
|
|
0x2c0e8f30ff56a9a1L, 0xa9c80800ec2c63feL, 0x449c20a598f508a8L,
|
|
0x02b94cb33292813aL, 0x647e3d28ec7e81a2L, 0x72e67d1ab4877677L,
|
|
0x7a4aa3f56f9ded24L },
|
|
{ 0x559ef1bae27a0045L, 0xdc812d4fb242cb50L, 0x23a478e439cf8d24L,
|
|
0x97544fc59b3f9c54L, 0x5ac68132affa1fcfL, 0x74f8fee034a2c83bL,
|
|
0x96cc640fcd3f4bb7L, 0x775dce9db0512ea6L, 0x67dca19dcdce381eL,
|
|
0xc1eeb3f3a9d3fe55L, 0x38e0bf421a19274fL, 0x15992fb428d69b12L,
|
|
0x48fcebde9fd09df8L, 0xdc9dfa4fb41ab5dfL, 0x0cbd7dc8c0a269c5L,
|
|
0x60282a7bf7f0ade1L },
|
|
{ 0x7c07e538dceea2e7L, 0x38a322c83c42061dL, 0x676828f94f1f6516L,
|
|
0xf21b69fbc7776a10L, 0xc63a3417b5e6b405L, 0x4c99f25891a7b642L,
|
|
0x38692ca82cad1440L, 0xf1e82ffe00869bcdL, 0xc30b714e16fe466aL,
|
|
0x5fb742f919019138L, 0xe90166d00fa516aeL, 0x5550f7acd8c73a43L,
|
|
0x2d6a407dfbc5c372L, 0xe47a753968cc39edL, 0x3fd286d94a5fbe70L,
|
|
0x5f4ae9c723c6b942L },
|
|
{ 0xd96a2dda53f4d561L, 0x286d45d016da1992L, 0x449a01fbfdd4b051L,
|
|
0x25488a0d9f2195eaL, 0xc4151b0aa37661b3L, 0xb98c471ef9e5ee02L,
|
|
0xa4bca86ea8658817L, 0xbbcadb877a68fc0aL, 0x88b346496b7366a9L,
|
|
0x32ee98d415661c2dL, 0xf5b3b4c6c901420cL, 0xa23527352f2752afL,
|
|
0x2f64ce73510e4d9cL, 0x939a7f26aca4aa80L, 0x9cd3e291401aa503L,
|
|
0x92a01423dc46afd2L },
|
|
{ 0xe9f24be11c2f7dbdL, 0xda8c900fb7d527faL, 0x963e25bb8648f128L,
|
|
0x9ab713e248141941L, 0xe87f7d017a6756fbL, 0x274dd85e058d90bdL,
|
|
0x823fee7a82566abdL, 0x9f6230d774240195L, 0x04579f2cacb5e46eL,
|
|
0x2a22626316a4c87eL, 0x9ca19a43d99b0857L, 0x86dc2ba3e488789eL,
|
|
0xf960b5b99406c3bdL, 0x6f2c428b8960957eL, 0x90748706161c515bL,
|
|
0x0fc8fe1eaa88cb9bL },
|
|
{ 0x68ae1bedfeb90f2dL, 0xf393bb3ca48b1559L, 0x2be62f9cf64e9635L,
|
|
0x354c2410f8be75c2L, 0xbd7ea7035e6f7529L, 0xc264868e162cab31L,
|
|
0xb1391e70c860f3ffL, 0xdf367c751d89837eL, 0xe150b6b42bf32941L,
|
|
0x95e8f46e78c1318fL, 0x2b3f1daba2c4b160L, 0xc6ccf5ce701afbf3L,
|
|
0x3ad275305e8874c5L, 0x39285e515dc6dcbeL, 0x3c954d86d99892ddL,
|
|
0x2d0ba862dfd3789fL },
|
|
{ 0xeacd8ee8b472e1afL, 0xeb354eaeb76abbccL, 0x9b520bf8d0d93fbdL,
|
|
0xfccd60d7fe6fc706L, 0xa9353ddea4ee2f39L, 0x5eb0925e9a81e51eL,
|
|
0xee334da1d1366777L, 0xc1d28c9fd5354d69L, 0xb977175592a5ed54L,
|
|
0x5d3e367fb7f70d81L, 0x7be7eecaa933ae7aL, 0x264cf1f9e23cfbb7L,
|
|
0x0d129f4a89497681L, 0x705375a409b6235bL, 0xccf64c7548a376daL,
|
|
0x963c87124d41dbfcL },
|
|
{ 0xbae290cbde36a814L, 0x9bdb0195733b12b5L, 0x0ebad867f77fe0e1L,
|
|
0x0a7d19fd29720ceaL, 0x434d76519029ec72L, 0x856aff17bb51911eL,
|
|
0xd0a25d9ad80a7f60L, 0xffca86aff848c106L, 0x53e8bdf943ad749cL,
|
|
0xfb9e0284e3e696bbL, 0x3eb6630aeeee4215L, 0x9d8fbb9e2ecf3c63L,
|
|
0x71da4ffa4e00c0c0L, 0xb296be595d57beacL, 0x1751fbada8cec7efL,
|
|
0x2d03eb3cff55d7bdL },
|
|
{ 0xeb16925f04f2ec1dL, 0xa878f2760d147ee2L, 0x442df604aad9d9e0L,
|
|
0x891df44b3f71035bL, 0xc28272b38cb95d5bL, 0x6f14efb55ee8ed23L,
|
|
0xf3c4460f13b0f3e3L, 0x889f9bd76bd7335eL, 0x889ee771f755ba6eL,
|
|
0x626984feed219b6cL, 0x2d44c737ec2ee411L, 0xb94385a263efcd37L,
|
|
0xd909321b6637826bL, 0xc24f8a793ee6b7a7L, 0xa3ca8d24a7cf61b7L,
|
|
0x842e40c1c54bacd9L },
|
|
{ 0x5a268ed6a661d843L, 0x02328cca4f5b30cdL, 0x16e6fed11311e177L,
|
|
0x690decb4c6695967L, 0xbdac5bf657b2e280L, 0x827f82ca1efe42d0L,
|
|
0xc554ec0aca5fca2fL, 0xac5276c1dde45506L, 0xb7f4cb08e3077513L,
|
|
0x8caf6d9acc8797ccL, 0xd59648140d9332d2L, 0xcc6ae297285a409fL,
|
|
0x7773c2a56223d093L, 0x2d5266ac5128fc09L, 0xa596b7cbbc31fe6cL,
|
|
0x0e63319acac91328L },
|
|
{ 0xb5cd2fadf0360ac2L, 0x86b660de285e605aL, 0x82c6cf10e25b9b14L,
|
|
0x9d5fa38daa9ac554L, 0x3dfcf1b8526c070eL, 0x0379a96b3fccc52dL,
|
|
0xe3659c290bfcc7f5L, 0x5b1a3db569d3e6a1L, 0xb41528b59b7b42d5L,
|
|
0x934defa49c22a006L, 0x90f380189b4ce3b6L, 0xb073bc04b3abaf32L,
|
|
0x27a5a222ff8389e2L, 0x0b7a9d51ffa5a35bL, 0x4939ecef28e1a7c2L,
|
|
0x88839da21872705aL },
|
|
{ 0x56b66c30701ce29aL, 0x3acaf12658981d50L, 0xd4dafc0c105f9f21L,
|
|
0xfee571e6373e3d13L, 0xe7269c86fa2ee3caL, 0xf5cca64add20385aL,
|
|
0x217f27573000e9acL, 0xc934db470e7273efL, 0x4294f4f7355b6776L,
|
|
0x1faa36b96fc05180L, 0x8f88b1dbb052190bL, 0x35791b90e9eaef52L,
|
|
0xf37fb2ebdb681b90L, 0x39d0a51d4415c369L, 0xfc59cca71d2e21c9L,
|
|
0x64128cfea1f50c26L },
|
|
{ 0xf03678a2e8f5b0b5L, 0x5c7e249cd340f059L, 0x4144044193ca7cecL,
|
|
0x075ca346bc83af98L, 0xf39f0033faa8bbb0L, 0x3d18f0edf38230f7L,
|
|
0x78dff00cd448f345L, 0x849228c0d51aa475L, 0xdd4e270830c928d1L,
|
|
0xc66ba6868f12cfd3L, 0x091049db88b3a206L, 0xd865d059016dae01L,
|
|
0x4599e905e253e37dL, 0x322cf0c27ce9871bL, 0x014f54da174a132eL,
|
|
0x93634a09bdabcbdaL },
|
|
{ 0x62826b27a9a2e304L, 0xc57e1866c1a4c124L, 0x913ab83222381710L,
|
|
0x7e9b6b85a9847cfeL, 0x29655cf12b5f46fdL, 0x7295572b8038e66dL,
|
|
0xe4cba6016fa95eabL, 0xbbc11071b9deda81L, 0x97f0009a3f1cf61eL,
|
|
0x5372777b373e0cfbL, 0x302f909cd139d63bL, 0x1ed672da4f87d78eL,
|
|
0x362077a3b4048763L, 0xc408c32d9dcc22b2L, 0x4b4c5bf226deeee7L,
|
|
0x266cb467bc06357eL },
|
|
{ 0x6faa4154b56363e8L, 0x4b4fd0783c1aa4dbL, 0x14358dde2b9e6597L,
|
|
0x5b34ae3efa004b84L, 0xcf44b2ecf19911a6L, 0x55caa833a536bf78L,
|
|
0x606e1eb98870dc95L, 0xe3c3287d09f3511dL, 0x68b2f4eb9d5cf364L,
|
|
0xc154e89263ab8c9eL, 0x1548828ec36ab611L, 0x0932bfcba1b7d120L,
|
|
0x7ee7b5bc5315b8d7L, 0x782fd0d1f7473ac1L, 0xbcb029a83c8f2af3L,
|
|
0x4b1d5a1b52454ee1L },
|
|
{ 0x12fe517463d52c0cL, 0x3735525e188c099dL, 0x5c621563360e3956L,
|
|
0x88b3f1caacfa5a43L, 0x90123a0a797e8107L, 0xba31f6b5b15e080aL,
|
|
0xd7de5e12fca3dadaL, 0x3287361b0df511c8L, 0x7cc800d465757d4eL,
|
|
0x10810f3d5207ec91L, 0x0d4e56f130eea0e3L, 0xbbf7ee133ea5a2ecL,
|
|
0x6fc07762be6abbd0L, 0xc831fdce120bf619L, 0xe07439fab622d42aL,
|
|
0x8186b93f508e4b27L },
|
|
{ 0xc619d15409312867L, 0x7e042c05bfaf7db4L, 0xc1cf16681f5f5ddaL,
|
|
0x50aa5057a4fc3d82L, 0xed30ed65ce68b8feL, 0xecb01c0bbeb4d644L,
|
|
0x7b5dc444831c0497L, 0x351e6a009b7d9b1cL, 0x4bb863b9d9477c91L,
|
|
0xaba6589105d4110aL, 0x30086cf443580b7aL, 0xb139c07690be357eL,
|
|
0x12bfff1a27b5214eL, 0x79cfc6d722c3ab57L, 0x4743de57f34a9bfaL,
|
|
0x0bf97e97c9ee2b2aL },
|
|
{ 0x96ec4ec8dda19e96L, 0x54ce18ea6c306e8bL, 0x7e83612b65f6918aL,
|
|
0x1ac6f68b0d9a0d99L, 0x98a697a462fdcc09L, 0x65ce25f195bc3e13L,
|
|
0x1896ecdab3939730L, 0x9eb81a0f32f12806L, 0xd3d7416e1d2dc7dfL,
|
|
0xe22c7976ad473599L, 0x3de37a9a9f5ef439L, 0x6b7ac0ab9e69d94eL,
|
|
0xe6bfa9e00a9d0bc8L, 0x576a870d5676f120L, 0x3bd91bb4feaac23fL,
|
|
0x8fe5482c3e40aabbL },
|
|
{ 0x85ae67c2ce9a4d1eL, 0x4c3eb8034f1d2038L, 0x5c6c8f3a25d06192L,
|
|
0x803de0ad308fb41cL, 0x9961f5bce71c294eL, 0xdc62078df02eb0daL,
|
|
0xc87ef515b64ae8b6L, 0x69679f1e50b4d18fL, 0xc5c009a152199f43L,
|
|
0xa7d484be0f640a5fL, 0x4c918bb123dab566L, 0xa67c114c64275d2cL,
|
|
0x95a913b9cad2ded6L, 0x189ed18b6b4b5c8dL, 0x4aeb6206b42d3bf6L,
|
|
0x3928c669bbc8bc3fL },
|
|
{ 0xde4bea4adacb4b64L, 0x03f62a44f26179a1L, 0xf3aac94e7a9112a4L,
|
|
0x90448fbdd36f331eL, 0x426042bc407b85c4L, 0x5ad8a5962121b77bL,
|
|
0x31674a4f67cee984L, 0x7fae8bbe4e3b2f0dL, 0x681df6dda7c930ebL,
|
|
0xadeefa98c259d0d4L, 0x1b14d9e6bea1c1fdL, 0x3baadc8b21d405d1L,
|
|
0xf01dff9373892754L, 0x81c35b3ef071cde4L, 0x1704d2e19150d0d9L,
|
|
0x6ccc888f355134f6L },
|
|
{ 0xf8d36f0e7ad7504cL, 0xbca3265ff7959dddL, 0x0dcd1edefede67aaL,
|
|
0x1276f4cebaebf32fL, 0x6825a6e6014edcfcL, 0x0b8c1a8299ad8eb7L,
|
|
0x312024a909b8ce1eL, 0xcb8fd98b9cbd351aL, 0xa4841378fab1e8beL,
|
|
0x17ed0f5d3973cacfL, 0xa17e1484259d5254L, 0x53d5b84374b91393L,
|
|
0x8f792b211aca3ce9L, 0x035ff110c8c0f815L, 0x6afa6357ad4ed7bdL,
|
|
0x2f151980b26faef9L },
|
|
{ 0x0c8631da29d2d439L, 0x121fbbc2bc039955L, 0x3e5a97926c05b75bL,
|
|
0x6d6cf4c0b6ce47ecL, 0xbaaa17679d88c658L, 0x031db9e7f3355a17L,
|
|
0x8381e3d80aef5a85L, 0xc71db29015a31bdfL, 0x638f6b749498fd7dL,
|
|
0x44edf3f913beeef6L, 0xe6173271f4ab67b3L, 0x3a202c70fd22df11L,
|
|
0xf7be0389205c4e92L, 0x1c219085a8eb9920L, 0x6c805ce8beb54aaaL,
|
|
0x354b05b70ac58d65L },
|
|
{ 0x7171e2367a9170e9L, 0x01eec42d4cad50cdL, 0xffbe824f3cddccfbL,
|
|
0xa73e8ce3a66cae1aL, 0xb7138a7f965c7d01L, 0x00058e3f5c3d971eL,
|
|
0x52591ac32ff0a72bL, 0xa32fb5bcbbbce76fL, 0xf3241ab8a9f81a18L,
|
|
0xf31d3332eca68630L, 0x847af9fc4482f13bL, 0x6196e217a4681be2L,
|
|
0x9938f932e55efcf9L, 0x3e7dacb870acc705L, 0xd41be893cf09fac2L,
|
|
0x48dc55c4ae3523a1L },
|
|
{ 0x8e623826a5092193L, 0xe46ec3626898970cL, 0x2f1356af25c9eb41L,
|
|
0x4178064083c7d245L, 0x982def6797d00e38L, 0x382eb6e7a512151cL,
|
|
0x154e10778af58869L, 0x187070758a51cf02L, 0xcdeba9f771313c58L,
|
|
0x5d67b973ba155904L, 0x851c9f4b1d0d7b3aL, 0x19f29d718b8af2cdL,
|
|
0xcb94ccff986b8d62L, 0x8725e24bb93b9c33L, 0x405ce4c566e38c68L,
|
|
0x5f6a8edd0b6dc021L },
|
|
{ 0x83704ca58f9a8690L, 0x3f3697662f76a407L, 0xfbc12d8c69201028L,
|
|
0x4cd58f16bce3a4cfL, 0x7804664a04aab26dL, 0x005cfbba4ea457a8L,
|
|
0x537951b3b8a59794L, 0x4ca2b9e44fe1f739L, 0xe4428acddf325797L,
|
|
0x648da3420ea243dbL, 0xcce6562bf43ce01eL, 0x840f0421f27db490L,
|
|
0x156ccb708bfb7cf0L, 0x9b33480d5a8797d3L, 0x2e12e07a9eb814bbL,
|
|
0x1ca65072ca7f87acL },
|
|
{ 0xfbb321cf2b9d25a0L, 0x66affdca40a746dbL, 0xc1c1530e59e368b5L,
|
|
0x56ed1ea47d80068fL, 0x9b74d8fe5647dd68L, 0x1d96b50789b78da8L,
|
|
0x39b752438bbe3391L, 0xef8d443e0d858c5fL, 0x4dd2db499646aa34L,
|
|
0x7fad3bd1e667543cL, 0xd0d710c068980985L, 0x9f7aff3249facabaL,
|
|
0x055dec1c14f9a192L, 0xaca663991fb307a1L, 0xac44fd9135ffff64L,
|
|
0x462cafb6cbad3ceeL },
|
|
{ 0x1660a647de3237ddL, 0x95f735cc82b87404L, 0xf7879f59ddfa55f8L,
|
|
0x15ef043e726b914aL, 0x1875393d1c93e298L, 0xa1a2be746ef18331L,
|
|
0x4e7e8dfc25a9a12bL, 0xdfefc97da9c3917fL, 0xbc875d030a2ebe41L,
|
|
0x0f75d235a732d1ccL, 0x06fee7fed9baa6d3L, 0xaa784fab65f48576L,
|
|
0x23155e22513f83c0L, 0xd2fb77183e8f9d13L, 0x2a291503b546eafdL,
|
|
0x1293c98c6cd93608L },
|
|
{ 0x7278125149d53b77L, 0xa6ab403d96eafac7L, 0xb7d7c7db4a36b711L,
|
|
0x8238c70887e771c1L, 0x495f6abf33b37522L, 0xb0b0289c8c87530dL,
|
|
0xca83cb86e77b111aL, 0xbe1c0fb8a1bd189eL, 0x58cfb2fb1ae9d7c7L,
|
|
0xd05c23c54940c3e8L, 0x16e79e4174ad9107L, 0xa0a47f05064e7142L,
|
|
0xc6929cd4fdfd614fL, 0xedb2584c3946988bL, 0x73e4b5f3e46f8fb1L,
|
|
0x53b79aa168ea94baL },
|
|
{ 0x216fafce44bbb6a1L, 0xd3a5bba067821728L, 0xef1e4b30a9dd939aL,
|
|
0x022eaf3df19efafeL, 0xfed5abce7b4ec014L, 0x64968ee6512c6738L,
|
|
0x2311986929fe89a2L, 0x0d539d8d47397c05L, 0x6400bc54234596c4L,
|
|
0xb9287f585346611dL, 0x04099903c9d5da0fL, 0xe5ef4997c83af2a8L,
|
|
0xc89dc01b328151e1L, 0x150fb4a958401104L, 0x40a6f7d5f3872c9dL,
|
|
0x8290d6d156c2e833L },
|
|
{ 0xf84637c6d8546946L, 0xda134a3969ec57faL, 0xd42359a4d789007eL,
|
|
0xb42557fe0dc7b809L, 0xe62ae52d2d6784a9L, 0xa2714ca60bcadb5fL,
|
|
0xcc208de633aafca5L, 0x2380ed5ced967811L, 0x6e6b55e9db321660L,
|
|
0x1bead02ca675235aL, 0x51cc6ef9b33fa0e1L, 0xfd223e26f06a2a08L,
|
|
0x00f332e1ec47b3cfL, 0x459f297ba0aa984eL, 0x6fa1d969ee952e14L,
|
|
0x506ef1ab304fabb0L },
|
|
{ 0x11b4eb2735bff163L, 0x7130b96fea9fa984L, 0x66aceb3f9deb27ceL,
|
|
0xa2daf1a59dd1c3d5L, 0xf5090a7ea73075aaL, 0x36a6af39e3071b58L,
|
|
0xa28d633ddf73ad9cL, 0xdd354cacbdc89a16L, 0xdfea3423d4dcbc3cL,
|
|
0x6eec74d2379d92d1L, 0xe14a456f8eed6765L, 0xfabe7743fa8feb1fL,
|
|
0x1404ccf8b98fcbc7L, 0x6ccd2fbff71a706eL, 0xdaaf3fdb4d85c678L,
|
|
0x415b7dbf15200344L },
|
|
{ 0x970105867d8377a7L, 0x068a3d68cb803272L, 0xfd67d289f03a4c32L,
|
|
0x4bc7095d93c8f290L, 0x712fa13ce9e5a2b8L, 0xfc6ac6c60feb9f3bL,
|
|
0x0cda36d96e0e54c2L, 0x4549975186320a01L, 0xf9318c9197f00f11L,
|
|
0x01dc4c3fe6936508L, 0x769a2ef985f068aaL, 0x3522cef0a2b5511cL,
|
|
0x006965edb4122e05L, 0xfce0fafcc175d43fL, 0x525dc9bdec831d59L,
|
|
0x1ec314f1af58879dL },
|
|
{ 0x0663feef2c8310c2L, 0xaa7e14da457e3f74L, 0x392b10fce5346887L,
|
|
0xcde4a38f637ec2c5L, 0x50773320b542f8dfL, 0x341302f9f7de1711L,
|
|
0x018b1c63ae4b9bc6L, 0xf001c46edd2f9e6fL, 0xd3bb0a9726eccfa0L,
|
|
0xa931b99d7746e0c7L, 0xe0c8b6f7f5875aecL, 0xbb32f17c96939c82L,
|
|
0x765135d23de5a664L, 0x71936cb452abfa6bL, 0xad5cc08f2dc105deL,
|
|
0x17e91d127fff5788L },
|
|
{ 0xbe92ced3b7e051caL, 0xc644d4fd19c776d4L, 0xc8ab4b520086784bL,
|
|
0x3ea66227ce9d6b31L, 0x395249a3d289e9c7L, 0x54509e65d12a19eeL,
|
|
0xa7bd46928c365aecL, 0x354997e477963e0eL, 0x0d765957b599732dL,
|
|
0x99584aeb91d4a3b6L, 0x6e653ea41deb3e28L, 0xca7c98ed572571dfL,
|
|
0xf301a38fb18ae1f9L, 0x1629f7c263f7b97eL, 0xdf242282afc4a0d5L,
|
|
0x118f3b4b3ddd0c01L },
|
|
{ 0x74a0a0a87ad4762bL, 0x1aef84da8c58d175L, 0x16ff49604cf76d86L,
|
|
0xc0be87867e60d98bL, 0x83637ffb3ecc1dbaL, 0xc244a6095dd6147aL,
|
|
0xa3e178345b0846e5L, 0x735eb686e77a4c05L, 0x5bc18b4fdf758695L,
|
|
0x15618d0b1bdfe52fL, 0x878ecc0d00715ba1L, 0x1dbdbd1ac2dd617fL,
|
|
0x21d2b63121b61710L, 0x22ce8a7944f593c2L, 0x3b9b536a44f17024L,
|
|
0x01d0a67c8d03e727L },
|
|
{ 0x7b9642361e46533cL, 0xe9477990fb88c2aeL, 0x019b5d16a42c4a18L,
|
|
0x7135e81dd83c7a45L, 0x74a69bdd4cb663e3L, 0x7b67ecdbe76c0d63L,
|
|
0x03d5452111e68da6L, 0x596cceb5d2e8650aL, 0xcd572dfd2af03b37L,
|
|
0x52364ba1fabd5952L, 0x7f47d456b4ed8569L, 0x5ad8b572c950d5d4L,
|
|
0xcadd2dfa486e2f84L, 0xdd527b43c56bb044L, 0xc9adba24997c08e6L,
|
|
0x1b625b067da6320fL },
|
|
{ 0x44dfaa7b4fd8446dL, 0xc01b2f01af6febebL, 0xbf444388fe8838b5L,
|
|
0xf33c434fbba9758bL, 0x2b971cba87156bc9L, 0x6b245e5c1f49098bL,
|
|
0x87dcb5342b41c5ddL, 0xdb1f80c634d852d7L, 0x6d6e32582433da34L,
|
|
0xf66820653f7df0c2L, 0xc4ca567c360cb365L, 0x321faac29826656aL,
|
|
0x13f5ca6fbf069768L, 0x15397921a7076639L, 0xbdf143288400736eL,
|
|
0x333eca9619fc948dL },
|
|
{ 0x23337948ac775d81L, 0x38c2518fd41dbbcaL, 0x623c7a4fbcfce948L,
|
|
0xaad3623654703fe7L, 0x2b3a13a413fb3b5bL, 0x5db3565a7f5c01f0L,
|
|
0xd72408dc52359661L, 0x5a17f8e51d616e91L, 0x90c16eebcb25b999L,
|
|
0xf35e8cf13393743eL, 0x987da74ae54b64a7L, 0x557b322a65cd449dL,
|
|
0x765082a537e7b15dL, 0x4d25c742f2cd134fL, 0xae9d9c074ccf0746L,
|
|
0x72fc21108728d135L },
|
|
{ 0xa906b203f96004c8L, 0xd83f95cf458055ffL, 0xd77d586755f35909L,
|
|
0x4a9ea6fbe550c8eeL, 0x91c8cca955a06081L, 0x4a1fee78bce82062L,
|
|
0xeb9ade069a3df85eL, 0xfbbdcf0c7d3de666L, 0x228a391b5d336d51L,
|
|
0x760f8d285c2ffc3cL, 0x1ee48de32f7b165bL, 0x03803d8456177040L,
|
|
0xe573f6489deff9a0L, 0xe1a2738ea17e35a4L, 0x238ef17c8840a6c6L,
|
|
0x480946f8b11ed92dL },
|
|
{ 0x84c747a8fd71f119L, 0x19e65c5e53eb3695L, 0x0e2f67866298587aL,
|
|
0x48a48899ab18d6f4L, 0xa1a99024c630b8c0L, 0x849750962caaf892L,
|
|
0xc8869abae20fd624L, 0x3b72b04d6c2b7dd4L, 0xe2775eb60992f7d0L,
|
|
0x0089c06e7d06e684L, 0xcb3b4361e4bbd007L, 0xa1ae666b4ba846e4L,
|
|
0xc01c2eb246464d9eL, 0xf86f2be6c1f8539fL, 0x16e8e8aecf68afc7L,
|
|
0x8dab61fdc7386902L },
|
|
{ 0x42a5c903d54d1d45L, 0xacd4297eff4f9ba2L, 0x2d88b52034d478b4L,
|
|
0x35b2ba2b08c4621aL, 0xd3d239bb34865402L, 0x1de76aed911f32e6L,
|
|
0x877f8bcf3f06fdc2L, 0x802714c19ec51502L, 0xa10444eba590700dL,
|
|
0x8694229f31dcc957L, 0x5ece77abb8169fedL, 0x55be8a152caf080eL,
|
|
0x3eb21b14cbd7cef1L, 0x9def7ad167b97ee1L, 0xe03ca879118f690cL,
|
|
0x6f77e62df99b29e7L },
|
|
{ 0xa271bdede40bbf59L, 0x177ba4536401aad6L, 0x1755e03573541cd1L,
|
|
0x3465b4664b71b02fL, 0x22eb7113a813359fL, 0x9792a8fd6f38eac7L,
|
|
0x11aa012fff3bf3b5L, 0x99aafabff85c3fbfL, 0x91e0a2ef06c0cc42L,
|
|
0x314d5d57773b7b3aL, 0xae5e2e76d669840aL, 0x861360732e5a8be6L,
|
|
0xee6d7578c1cf5580L, 0x2344e00f68bed102L, 0x799d78868184f0ebL,
|
|
0x63819c91c3d2cf80L },
|
|
{ 0xca5392e17884b073L, 0x9ec3a1fceb1267eaL, 0x3d07f5f0907038a7L,
|
|
0xcb2ac07ce4c47b70L, 0xf96664ee1bf96b91L, 0xebf575892aea4fbfL,
|
|
0x5aabf391fade6500L, 0xc5b3376f171d1204L, 0x1ff60c51a0d3d81aL,
|
|
0x10b2cfe7976a844bL, 0xe131cc9abda6125aL, 0xe0fc16d34ebd453eL,
|
|
0xc0d0319a504b6bc1L, 0xe43a0be70a2f8cabL, 0xc80afeec55e49b47L,
|
|
0x67d48d128265d7eeL },
|
|
{ 0x068d59a7ea2d56d6L, 0xd71abd0e27480a63L, 0x6bd11db0ae7366cdL,
|
|
0xfbb639ca07204ebcL, 0x89a242e7f77e6293L, 0xdee7ca2b75ba8c3dL,
|
|
0x472ddc3d64a2f9a8L, 0x84229df47561a010L, 0x95f62c85c5b649d4L,
|
|
0xfdd56b1b4dc927cdL, 0xfe8bb1205ee60596L, 0x3efcaa50abf29401L,
|
|
0xd4900d0f10d1c184L, 0x2cf113a928b01df5L, 0xa3d7ebc31f0e43f5L,
|
|
0x27950e38e8384dc7L },
|
|
{ 0xeab21ff0e1d0fa79L, 0x4b9fd033048b5de9L, 0x4c9346892fe374cbL,
|
|
0xbb4827fa4eb21f6bL, 0x46716f79a925e7e7L, 0x1442bf367dd4c531L,
|
|
0x2073954cd2e96ddfL, 0x4e0141ae8502aa89L, 0x8ee00e1a8eef6cc9L,
|
|
0x55ce84915880cdafL, 0xff3aba5c69628046L, 0x335cc4f85d15dfbfL,
|
|
0xa7f0440c9f684f25L, 0xae80453fbb1e5bd8L, 0xa1c99813ff2225abL,
|
|
0x54ff788479b25d71L },
|
|
{ 0x27c6ee30de40b068L, 0x9226465be6f3a51eL, 0xe24a4604fa3b21f6L,
|
|
0x50a5a5adc0418115L, 0xe32854418df90d2bL, 0xbb74e58fdcb0c00fL,
|
|
0xc68f1b3b4a2c08e3L, 0x339df0810ccd9ec9L, 0x915362dcb786ea9fL,
|
|
0x28945e31c955aeadL, 0xd6a2c01d8b6a6c6bL, 0x069e82dc3678a427L,
|
|
0x1787550028c9302cL, 0x8acda9659fa101e6L, 0x4e4e4573ee30b286L,
|
|
0x8adbad853f1830feL },
|
|
{ 0x060ae11f0969d524L, 0xf42fdaf7f39bcc79L, 0x3cec67667cc1fcc2L,
|
|
0x456b9cf2e2336d4fL, 0x6aa1f5de8e1c0f7fL, 0xcdbc2ad20984fb0eL,
|
|
0x4090cfa61b464b28L, 0x40d86f301243f3efL, 0x95b16ccccd5e87e7L,
|
|
0x403f168c3026cd41L, 0xdbe386cb816c0730L, 0x14eb86f358407a1dL,
|
|
0xf588b4f81717e1afL, 0xb75c41a666cbc96cL, 0xf342c1aa027e71c1L,
|
|
0x73930036c0945e5fL },
|
|
{ 0x954f757d22cdaf42L, 0x788b591df4181aabL, 0x8b986819f5514f25L,
|
|
0x69642e08f18fd5bcL, 0x92b305d1022ceb91L, 0x1715903e6a4f6985L,
|
|
0x4bd7d69d61179caeL, 0xdacdfd5dd29c01aaL, 0x705ddd5ad91108ccL,
|
|
0x434ac7b164ac8f15L, 0x61a514e1b524632fL, 0x45b9e61b731fc447L,
|
|
0xcf561348e0961b31L, 0x9c28a96773eaf223L, 0x5bd10182aa7c99d3L,
|
|
0x8bc6ec4ae42965e2L },
|
|
{ 0xd096e5c0e7f2a32bL, 0xff54800c09388a30L, 0x06fe437c401e360cL,
|
|
0x6655fc9cbb6054a6L, 0x510e18608457aa6eL, 0xa0acfca22b29b2b7L,
|
|
0x732483e351b7da61L, 0xe31471ee6be6c8caL, 0xe565431c8b65c9a1L,
|
|
0xfc9ac3b948d65cbbL, 0xd308fc21ae9b2aa8L, 0xd6a7df0daa60aa6aL,
|
|
0x2844d96a982fc0d4L, 0xab012c2c5847a4d7L, 0x2b3c8f71dceb8955L,
|
|
0x8e85437dbe9c7e15L },
|
|
};
|
|
|
|
/* Perform the modular exponentiation in Fp* for SAKKE.
|
|
*
|
|
* Base is fixed to be the g parameter - a precomputed table is used.
|
|
*
|
|
* Striping: 128 points at a distance of 8 combined.
|
|
* Total of 256 points in table.
|
|
* Square and multiply performed in Fp*.
|
|
*
|
|
* base [in] Base. MP integer.
|
|
* exp [in] Exponent. MP integer.
|
|
* res [out] Result. MP integer.
|
|
* returns 0 on success, MP_READ_E if there are too many bytes in an array
|
|
* and MEMORY_E if memory allocation fails.
|
|
*/
|
|
int sp_ModExp_Fp_star_1024(const mp_int* base, mp_int* exp, mp_int* res)
|
|
{
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td;
|
|
sp_digit* t;
|
|
sp_digit* tx;
|
|
sp_digit* ty;
|
|
#else
|
|
sp_digit t[4 * 2 * 16];
|
|
sp_digit tx[2 * 16];
|
|
sp_digit ty[2 * 16];
|
|
#endif
|
|
sp_digit* r = NULL;
|
|
unsigned char e[128];
|
|
int err = MP_OKAY;
|
|
int i;
|
|
int y;
|
|
|
|
(void)base;
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6 * 16 * 2, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
tx = td + 4 * 16 * 2;
|
|
ty = td + 5 * 16 * 2;
|
|
#endif
|
|
r = ty;
|
|
|
|
(void)mp_to_unsigned_bin_len(exp, e, 128);
|
|
|
|
XMEMCPY(tx, p1024_norm_mod, sizeof(sp_digit) * 16);
|
|
y = e[112] >> 7;
|
|
y |= (e[96] >> 7) << 1;
|
|
y |= (e[80] >> 7) << 2;
|
|
y |= (e[64] >> 7) << 3;
|
|
y |= (e[48] >> 7) << 4;
|
|
y |= (e[32] >> 7) << 5;
|
|
y |= (e[16] >> 7) << 6;
|
|
y |= (e[0] >> 7) << 7;
|
|
XMEMCPY(ty, sp_1024_g_table[y], sizeof(sp_digit) * 16);
|
|
for (i = 126; i >= 0; i--) {
|
|
y = (e[127 - (i / 8)] >> (i & 0x7)) & 1;
|
|
y |= ((e[111 - (i / 8)] >> (i & 0x7)) & 1) << 1;
|
|
y |= ((e[95 - (i / 8)] >> (i & 0x7)) & 1) << 2;
|
|
y |= ((e[79 - (i / 8)] >> (i & 0x7)) & 1) << 3;
|
|
y |= ((e[63 - (i / 8)] >> (i & 0x7)) & 1) << 4;
|
|
y |= ((e[47 - (i / 8)] >> (i & 0x7)) & 1) << 5;
|
|
y |= ((e[31 - (i / 8)] >> (i & 0x7)) & 1) << 6;
|
|
y |= ((e[15 - (i / 8)] >> (i & 0x7)) & 1) << 7;
|
|
|
|
sp_1024_proj_sqr_16(tx, ty, t);
|
|
sp_1024_proj_mul_qx1_16(tx, ty, sp_1024_g_table[y], t);
|
|
}
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_mont_inv_16(tx, tx, t);
|
|
sp_1024_mont_mul_16(r, tx, ty, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(r, p1024_mod, p1024_mp_mod);
|
|
|
|
err = sp_1024_to_mp(r, res);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
return err;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Multiply p* by q* in projective co-ordinates.
|
|
*
|
|
* p.x' = (p.x * q.x) - (p.y * q.y)
|
|
* p.y' = (p.x * q.y) + (p.y * q.x)
|
|
* But applying Karatsuba:
|
|
* v0 = p.x * q.x
|
|
* v1 = p.y * q.y
|
|
* p.x' = v0 - v1
|
|
* p.y' = (px + py) * (qx + qy) - v0 - v1
|
|
*
|
|
* px [in,out] A single precision integer - X ordinate of number to multiply.
|
|
* py [in,out] A single precision integer - Y ordinate of number to multiply.
|
|
* qx [in] A single precision integer - X ordinate of number of
|
|
* multiplier.
|
|
* qy [in] A single precision integer - Y ordinate of number of
|
|
* multiplier.
|
|
* t [in] Two single precision integers - temps.
|
|
*/
|
|
static void sp_1024_proj_mul_16(sp_digit* px, sp_digit* py,
|
|
const sp_digit* qx, const sp_digit* qy, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
|
|
/* t1 = px + py */
|
|
sp_1024_mont_add_16(t1, px, py, p1024_mod);
|
|
/* t2 = qx + qy */
|
|
sp_1024_mont_add_16(t2, qx, qy, p1024_mod);
|
|
/* t2 = (px + py) * (qx + qy) */
|
|
sp_1024_mont_mul_16(t2, t1, t2, p1024_mod, p1024_mp_mod);
|
|
/* t1 = py * qy */
|
|
sp_1024_mont_mul_16(t1, py, qy, p1024_mod, p1024_mp_mod);
|
|
/* t2 = (px + py) * (qx + qy) - (py * qy) */
|
|
sp_1024_mont_sub_16(t2, t2, t1, p1024_mod);
|
|
/* px = px * qx */
|
|
sp_1024_mont_mul_16(px, px, qx, p1024_mod, p1024_mp_mod);
|
|
/* py = (px + py) * (qx + qy) - (py * qy) - (px * qx) */
|
|
sp_1024_mont_sub_16(py, t2, px, p1024_mod);
|
|
/* px = (px * qx) - (py * qy)*/
|
|
sp_1024_mont_sub_16(px, px, t1, p1024_mod);
|
|
}
|
|
|
|
#ifndef WOLFSSL_SP_SMALL
|
|
/*
|
|
* Convert point from projective to affine but keep in Montgomery form.
|
|
*
|
|
* p [in,out] Point to convert.
|
|
* t [in] Temporary numbers: 2.
|
|
*/
|
|
static void sp_1024_mont_map_16(sp_point_1024* p, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
|
|
sp_1024_mont_inv_16(t1, p->z, t2);
|
|
sp_1024_mont_sqr_16(t2, t1, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(t1, t2, t1, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(p->x, p->x, t2, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_mul_16(p->y, p->y, t1, p1024_mod, p1024_mp_mod);
|
|
XMEMCPY(p->z, p1024_norm_mod, sizeof(sp_digit) * 16);
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/*
|
|
* Calculate gradient of line through P, P and [-2]P, accumulate line and
|
|
* double P.
|
|
*
|
|
* Calculations:
|
|
* l = 3 * (p.x^2 - p.z^4) = 3 * (p.x - p.z^2) * (p.x + p.z^2)
|
|
* r.x = l * (p.x + q.x * p.z^2) - 2 * p.y^2
|
|
* r.y = 2 * p.y * p.z^3 * q.y (= p'.z * p.z^2 * q.y)
|
|
* v* = v*^2 * r*
|
|
* p'.x = l^2 - 8 * p.y^2 * p.x
|
|
* p'.y = (4 * p.y^2 * p.x - p'.x) * l - 8 * p.y^4
|
|
* p'.z = 2 * p.y * p.z
|
|
*
|
|
* @param [in,out] vx X-ordinate of projective value in F*.
|
|
* @param [in,out] vy Y-ordinate of projective value in F*.
|
|
* @param [in,out] p ECC point - point on E(F_p^2) to double.
|
|
* @param [in] q ECC point - second point on E(F_P^2).
|
|
* @param [in] t SP temporaries (6 used).
|
|
*/
|
|
static void sp_1024_accumulate_line_dbl_16(sp_digit* vx, sp_digit* vy,
|
|
sp_point_1024* p, const sp_point_1024* q, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t + 0 * 16;
|
|
sp_digit* pz2 = t + 2 * 16;
|
|
sp_digit* rx = t + 4 * 16;
|
|
sp_digit* ry = t + 6 * 16;
|
|
sp_digit* l = t + 8 * 16;
|
|
sp_digit* ty = t + 10 * 16;
|
|
|
|
/* v = v^2 */
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
/* pz2 = p.z^2 */
|
|
sp_1024_mont_sqr_16(pz2, p->z, p1024_mod, p1024_mp_mod);
|
|
/* t1 = p.x + p.z^2 */
|
|
sp_1024_mont_add_16(ty, p->x, pz2, p1024_mod);
|
|
/* l = p.x - p.z^2 */
|
|
sp_1024_mont_sub_16(l, p->x, pz2, p1024_mod);
|
|
/* t1 = (p.x + p.z^2) * (p.x - p.z^2) = p.x^2 - p.z^4 */
|
|
sp_1024_mont_mul_16(t1, l, ty, p1024_mod, p1024_mp_mod);
|
|
/* l = 3 * (p.x^2 - p.z^4) */
|
|
sp_1024_mont_tpl_16(l, t1, p1024_mod);
|
|
/* t1 = q.x * p.z^2 */
|
|
sp_1024_mont_mul_16(t1, q->x, pz2, p1024_mod, p1024_mp_mod);
|
|
/* t1 = p.x + q.x * p.z^2 */
|
|
sp_1024_mont_add_16(t1, p->x, t1, p1024_mod);
|
|
/* r.x = l * (p.x + q.x * p.z^2) */
|
|
sp_1024_mont_mul_16(rx, l, t1, p1024_mod, p1024_mp_mod);
|
|
/* r.y = 2 * p.y */
|
|
sp_1024_mont_dbl_16(ry, p->y, p1024_mod);
|
|
/* ty = 4 * p.y ^ 2 */
|
|
sp_1024_mont_sqr_16(ty, ry, p1024_mod, p1024_mp_mod);
|
|
/* t1 = 2 * p.y ^ 2 */
|
|
sp_1024_div2_16(t1, ty, p1024_mod);
|
|
/* r.x -= 2 * (p.y ^ 2) */
|
|
sp_1024_mont_sub_16(rx, rx, t1, p1024_mod);
|
|
/* p'.z = p.y * 2 * p.z */
|
|
sp_1024_mont_mul_16(p->z, p->z, ry, p1024_mod, p1024_mp_mod);
|
|
/* r.y = p'.z * p.z^2 */
|
|
sp_1024_mont_mul_16(t1, p->z, pz2, p1024_mod, p1024_mp_mod);
|
|
/* r.y = p'.z * p.z^2 * q.y */
|
|
sp_1024_mont_mul_16(ry, t1, q->y, p1024_mod, p1024_mp_mod);
|
|
/* v = v^2 * r */
|
|
sp_1024_proj_mul_16(vx, vy, rx, ry, t);
|
|
|
|
/* Double point using previously calculated values
|
|
* l = 3 * (p.x - p.z^2).(p.x + p.z^2)
|
|
* ty = 4 * p.y^2
|
|
* p'.z = 2 * p.y * p.z
|
|
*/
|
|
/* t1 = (4 * p.y^2) ^ 2 = 16 * p.y^4 */
|
|
sp_1024_mont_sqr_16(t1, ty, p1024_mod, p1024_mp_mod);
|
|
/* t1 = 16 * p.y^4 / 2 = 8 * p.y^4 */
|
|
sp_1024_div2_16(t1, t1, p1024_mod);
|
|
/* p'.y = 4 * p.y^2 * p.x */
|
|
sp_1024_mont_mul_16(p->y, ty, p->x, p1024_mod, p1024_mp_mod);
|
|
/* p'.x = l^2 */
|
|
sp_1024_mont_sqr_16(p->x, l, p1024_mod, p1024_mp_mod);
|
|
/* p'.x = l^2 - 4 * p.y^2 * p.x */
|
|
sp_1024_mont_sub_16(p->x, p->x, p->y, p1024_mod);
|
|
/* p'.x = l^2 - 8 * p.y^2 * p.x */
|
|
sp_1024_mont_sub_16(p->x, p->x, p->y, p1024_mod);
|
|
/* p'.y = 4 * p.y^2 * p.x - p.x' */
|
|
sp_1024_mont_sub_16(ty, p->y, p->x, p1024_mod);
|
|
/* p'.y = (4 * p.y^2 * p.x - p'.x) * l */
|
|
sp_1024_mont_mul_16(p->y, ty, l, p1024_mod, p1024_mp_mod);
|
|
/* p'.y = (4 * p.y^2 * p.x - p'.x) * l - 8 * p.y^4 */
|
|
sp_1024_mont_sub_16(p->y, p->y, t1, p1024_mod);
|
|
}
|
|
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/*
|
|
* Calculate gradient of line through C, P and -C-P, accumulate line and
|
|
* add P to C.
|
|
*
|
|
* Calculations:
|
|
* r.x = (q.x + p.x) * c.y - (q.x * c.z^2 + c.x) * p.y * c.z
|
|
* r.y = (c.x - p.x * c.z^2) * q.y * c.z
|
|
* v* = v* * r*
|
|
* r = p.y * c.z^3 - c.y
|
|
* c'.x = r^2 + h^3 - 2 * c.x * h^2
|
|
* c'.y = r * (c'.x - c.x * h^2) - c.y * h^3
|
|
* c'.z = (c.x - p.x * c.z^2) * c.z
|
|
*
|
|
* @param [in,out] vx X-ordinate of projective value in F*.
|
|
* @param [in,out] vy Y-ordinate of projective value in F*.
|
|
* @param [in,out] c ECC point - current point on E(F_p^2) to be added
|
|
* to.
|
|
* @param [in] p ECC point - point on E(F_p^2) to add.
|
|
* @param [in] q ECC point - second point on E(F_P^2).
|
|
* @param [in] qx_px SP that is a constant value across adds.
|
|
* @param [in] t SP temporaries (6 used).
|
|
*/
|
|
static void sp_1024_accumulate_line_add_one_16(sp_digit* vx, sp_digit* vy,
|
|
sp_point_1024* c, sp_point_1024* p, sp_point_1024* q, sp_digit* qx_px,
|
|
sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
sp_digit* rx = t + 4 * 16;
|
|
sp_digit* ry = t + 6 * 16;
|
|
sp_digit* h = t + 8 * 16;
|
|
sp_digit* r = t + 10 * 16;
|
|
|
|
/* r.x = (q.x + p.x) * c.y */
|
|
sp_1024_mont_mul_16(rx, qx_px, c->y, p1024_mod, p1024_mp_mod);
|
|
/* t2 = c.z^2 */
|
|
sp_1024_mont_sqr_16(t2, c->z, p1024_mod, p1024_mp_mod);
|
|
/* t1 = q.x * c.z^2 */
|
|
sp_1024_mont_mul_16(t1, q->x, t2, p1024_mod, p1024_mp_mod);
|
|
/* t1 = q.x * c.z^2 + c.x */
|
|
sp_1024_mont_add_16(h, t1, c->x, p1024_mod);
|
|
/* r = p.y * c.z */
|
|
sp_1024_mont_mul_16(ry, p->y, c->z, p1024_mod, p1024_mp_mod);
|
|
/* t1 = (q.x * c.z^2 + c.x) * p.y * c.z */
|
|
sp_1024_mont_mul_16(t1, h, ry, p1024_mod, p1024_mp_mod);
|
|
/* r = p.y * c.z * c.z^2 = p.y * c.z^3 */
|
|
sp_1024_mont_mul_16(r, ry, t2, p1024_mod, p1024_mp_mod);
|
|
/* r.x -= (q.x * c.z^2 + c.x) * p.y * c.z */
|
|
sp_1024_mont_sub_16(rx, rx, t1, p1024_mod);
|
|
/* t1 = p.x * c.z^2 */
|
|
sp_1024_mont_mul_16(t1, p->x, t2, p1024_mod, p1024_mp_mod);
|
|
/* h = c.x - p.x * c.z^2 */
|
|
sp_1024_mont_sub_16(h, c->x, t1, p1024_mod);
|
|
/* c'.z = (c.x - p.x * c.z^2) * c.z */
|
|
sp_1024_mont_mul_16(c->z, h, c->z, p1024_mod, p1024_mp_mod);
|
|
/* r.y = (c.x - p.x * c.z^2) * c.z * q.y */
|
|
sp_1024_mont_mul_16(ry, c->z, q->y, p1024_mod, p1024_mp_mod);
|
|
/* v = v * r */
|
|
sp_1024_proj_mul_16(vx, vy, rx, ry, t);
|
|
|
|
/* Add p to c using previously calculated values.
|
|
* h = c.x - p.x * c.z^2
|
|
* r = p.y * c.z^3
|
|
* c'.z = (c.x - p.x * c.z^2) * c.z
|
|
*/
|
|
|
|
/* r = p.y * c.z^3 - c.y */
|
|
sp_1024_mont_sub_16(r, r, c->y, p1024_mod);
|
|
/* t1 = r^2 */
|
|
sp_1024_mont_sqr_16(t1, r, p1024_mod, p1024_mp_mod);
|
|
/* t2 = h^2 */
|
|
sp_1024_mont_sqr_16(rx, h, p1024_mod, p1024_mp_mod);
|
|
/* ry = c.x * h^2 */
|
|
sp_1024_mont_mul_16(ry, c->x, rx, p1024_mod, p1024_mp_mod);
|
|
/* t2 = h^3 */
|
|
sp_1024_mont_mul_16(t2, rx, h, p1024_mod, p1024_mp_mod);
|
|
/* c->x = r^2 + h^3 */
|
|
sp_1024_mont_add_16(c->x, t1, t2, p1024_mod);
|
|
/* t1 = 2 * c.x * h^2 */
|
|
sp_1024_mont_dbl_16(t1, ry, p1024_mod);
|
|
/* c'.x = r^2 + h^3 - 2 * c.x * h^2 */
|
|
sp_1024_mont_sub_16(c->x, c->x, t1, p1024_mod);
|
|
/* ry = c'.x - c.x * h^2 */
|
|
sp_1024_mont_sub_16(t1, c->x, ry, p1024_mod);
|
|
/* ry = r * (c'.x - c.x * h^2) */
|
|
sp_1024_mont_mul_16(ry, t1, r, p1024_mod, p1024_mp_mod);
|
|
/* t2 = c.y * h^3 */
|
|
sp_1024_mont_mul_16(t1, t2, c->y, p1024_mod, p1024_mp_mod);
|
|
/* c'.y = r * (c'.x - c.x * h^2) - c.y * h^3 */
|
|
sp_1024_mont_sub_16(c->y, ry, t1, p1024_mod);
|
|
}
|
|
|
|
/*
|
|
* Calculate r = pairing <P, Q>.
|
|
*
|
|
* That is, multiply base in PF_p[q] by the scalar s, such that s.P = Q.
|
|
*
|
|
* @param [in] key SAKKE key.
|
|
* @param [in] p First point on E(F_p)[q].
|
|
* @param [in] q Second point on E(F_p)[q].
|
|
* @param [in] r Result of calculation.
|
|
* @return 0 on success.
|
|
* @return MEMORY_E when dynamic memory allocation fails.
|
|
* @return Other -ve value on internal failure.
|
|
*/
|
|
int sp_Pairing_1024(const ecc_point* pm, const ecc_point* qm, mp_int* res)
|
|
{
|
|
int err = MP_OKAY;
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
sp_digit* t;
|
|
sp_digit* vx;
|
|
sp_digit* vy;
|
|
sp_digit* qx_px;
|
|
#else
|
|
sp_digit t[6 * 2 * 16];
|
|
sp_digit vx[2 * 16];
|
|
sp_digit vy[2 * 16];
|
|
sp_digit qx_px[2 * 16];
|
|
sp_point_1024 pd;
|
|
sp_point_1024 qd;
|
|
sp_point_1024 cd;
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
sp_point_1024* q = NULL;
|
|
sp_point_1024* c = NULL;
|
|
sp_digit* r = NULL;
|
|
int i;
|
|
|
|
err = sp_1024_point_new_16(NULL, pd, p);
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, qd, q);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, cd, c);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 9 * 16 * 2, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
vx = td + 6 * 16 * 2;
|
|
vy = td + 7 * 16 * 2;
|
|
qx_px = td + 8 * 16 * 2;
|
|
#endif
|
|
r = vy;
|
|
|
|
sp_1024_point_from_ecc_point_16(p, pm);
|
|
sp_1024_point_from_ecc_point_16(q, qm);
|
|
|
|
err = sp_1024_mod_mul_norm_16(p->x, p->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->y, p->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->z, p->z, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->x, q->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->y, q->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
XMEMCPY(c, p, sizeof(sp_point_1024));
|
|
XMEMSET(vx, 0, sizeof(sp_digit) * 2 * 16);
|
|
vx[0] = 1;
|
|
XMEMSET(vy, 0, sizeof(sp_digit) * 2 * 16);
|
|
|
|
sp_1024_mont_add_16(qx_px, q->x, p->x, p1024_mod);
|
|
|
|
for (i = 1020; i >= 0; i--) {
|
|
/* Accumulate line into v and double point. */
|
|
sp_1024_accumulate_line_dbl_16(vx, vy, c, q, t);
|
|
|
|
if ((i > 0) && ((p1024_order[i / 64] >> (i % 64)) & 1)) {
|
|
/* Accumulate line into v and add P into C. */
|
|
sp_1024_accumulate_line_add_one_16(vx, vy, c, p, q, qx_px, t);
|
|
}
|
|
}
|
|
|
|
/* Final exponentiation */
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
|
|
/* Convert from PF_p[q] to F_p */
|
|
sp_1024_mont_inv_16(vx, vx, t);
|
|
sp_1024_mont_mul_16(r, vx, vy, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(r, p1024_mod, p1024_mp_mod);
|
|
|
|
err = sp_1024_to_mp(r, res);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
sp_1024_point_free_16(c, 1, NULL);
|
|
sp_1024_point_free_16(q, 1, NULL);
|
|
sp_1024_point_free_16(p, 1, NULL);
|
|
return err;
|
|
}
|
|
|
|
#else
|
|
/*
|
|
* Calculate gradient of line through C, P and -C-P, accumulate line and
|
|
* add P to C.
|
|
*
|
|
* Both C and P have z ordinates to use in the calculation.
|
|
*
|
|
* Calculations:
|
|
* r.x = (q.x * c.z^2 + c.x) * p.y * c.z - (q.x * p.z^2 + p.x) * c.y * p.z
|
|
* r.y = (p.x * c.z^2 - c.x * p.z^2) * q.y * p.z * c.z
|
|
* v* = v* * r*
|
|
* h = p.x * c.z^2 - c.x * p.z^2
|
|
* r = p.y * c.z^3 - c.y * p.z^3
|
|
* c'.x = r^2 - h^3 - 2 * c.x * p.z^2 * h^2
|
|
* c'.y = r * (c.x * p.z^2 * h^2 - c'.x) - c.y * p.z^3 * h^3
|
|
* c'.z = (p.x * c.z^2 - c.x * p.z^2) * c.z
|
|
*
|
|
* @param [in,out] vx X-ordinate of projective value in F*.
|
|
* @param [in,out] vy Y-ordinate of projective value in F*.
|
|
* @param [in,out] c ECC point - current point on E(F_p^2) to be added
|
|
* to.
|
|
* @param [in,out] p ECC point - point on E(F_p^2) to add.
|
|
* @param [in,out] q ECC point - second point on E(F_P^2).
|
|
* @param [in,out] t SP temporaries (6 used).
|
|
* @param [in,out] neg Indicates to use negative P.
|
|
* @return 0 on success.
|
|
* @return MEMORY_E when dynamic memory allocation fails.
|
|
* @return Other -ve value on internal failure.
|
|
*/
|
|
static void sp_1024_accumulate_line_add_n_16(sp_digit* vx, sp_digit* vy,
|
|
const sp_point_1024* p, const sp_point_1024* q,
|
|
sp_point_1024* c, sp_digit* t, int neg)
|
|
{
|
|
sp_digit* t1 = t;
|
|
sp_digit* t2 = t + 2 * 16;
|
|
sp_digit* rx = t + 4 * 16;
|
|
sp_digit* ry = t + 6 * 16;
|
|
sp_digit* h = t + 8 * 16;
|
|
sp_digit* r = t + 10 * 16;
|
|
|
|
/* h = p.z^2 */
|
|
sp_1024_mont_sqr_16(h, p->z, p1024_mod, p1024_mp_mod);
|
|
/* rx = q.x * p.z^2 */
|
|
sp_1024_mont_mul_16(rx, q->x, h, p1024_mod, p1024_mp_mod);
|
|
/* rx = q.x * p.z^2 + p.x */
|
|
sp_1024_mont_add_16(t2, rx, p->x, p1024_mod);
|
|
/* c.y = c.y * p.z */
|
|
sp_1024_mont_mul_16(t1, c->y, p->z, p1024_mod, p1024_mp_mod);
|
|
/* r.x = (q.x * p.z^2 + p.x) * c.y * p.z */
|
|
sp_1024_mont_mul_16(rx, t2, t1, p1024_mod, p1024_mp_mod);
|
|
/* c.y = c.y * p.z^3 */
|
|
sp_1024_mont_mul_16(c->y, t1, h, p1024_mod, p1024_mp_mod);
|
|
/* t2 = c.z^2 */
|
|
sp_1024_mont_sqr_16(t2, c->z, p1024_mod, p1024_mp_mod);
|
|
/* t1 = q.x * c.z^2 */
|
|
sp_1024_mont_mul_16(t1, q->x, t2, p1024_mod, p1024_mp_mod);
|
|
/* t1 = q.x * c.z^2 + c.x */
|
|
sp_1024_mont_add_16(t1, t1, c->x, p1024_mod);
|
|
/* c.x = c.x * p.z^2 */
|
|
sp_1024_mont_mul_16(c->x, c->x, h, p1024_mod, p1024_mp_mod);
|
|
/* r = p.y * c.z */
|
|
sp_1024_mont_mul_16(r, p->y, c->z, p1024_mod, p1024_mp_mod);
|
|
if (neg) {
|
|
/* r = -p.y * c.z */
|
|
sp_1024_mont_sub_16(r, p1024_mod, r, p1024_mod);
|
|
}
|
|
/* t1 = (q.x * c.z^2 + c.x) * p.y * c.z */
|
|
sp_1024_mont_mul_16(ry, t1, r, p1024_mod, p1024_mp_mod);
|
|
/* r.x -= (q.x * c.z^2 + c.x) * p.y * c.z */
|
|
sp_1024_mont_sub_16(rx, ry, rx, p1024_mod);
|
|
/* t1 = p.x * c.z^2 */
|
|
sp_1024_mont_mul_16(t1, p->x, t2, p1024_mod, p1024_mp_mod);
|
|
/* h = p.x * c.z^2 - c.x * p.z^2 */
|
|
sp_1024_mont_sub_16(h, t1, c->x, p1024_mod);
|
|
/* c'.z = (p.x * c.z^2 - c.x * p.z^2) * c.z */
|
|
sp_1024_mont_mul_16(t1, h, c->z, p1024_mod, p1024_mp_mod);
|
|
/* c'.z = (p.x * c.z^2 - c.x * p.z^2) * c.z * p.z */
|
|
sp_1024_mont_mul_16(c->z, t1, p->z, p1024_mod, p1024_mp_mod);
|
|
/* r.y = (p.x * c.z^2 - c.x * p.z^2) * c.z * p.z * q.y */
|
|
sp_1024_mont_mul_16(ry, c->z, q->y, p1024_mod, p1024_mp_mod);
|
|
/* r = p.y * c.z^3 */
|
|
sp_1024_mont_mul_16(t1, r, t2, p1024_mod, p1024_mp_mod);
|
|
/* r = p.y * c.z^3 - c.y * p.z^3 */
|
|
sp_1024_mont_sub_16(r, t1, c->y, p1024_mod);
|
|
/* v = v * r */
|
|
sp_1024_proj_mul_16(vx, vy, rx, ry, t);
|
|
|
|
/* Add p to c using previously calculated values.
|
|
* h = p.x * c.z^2 - c.x * p.z^2
|
|
* r = p.y * c.z^3 - c.y * p.z^3
|
|
* c'.z = (p.x * c.z^2 - c.x * p.z^2) * c.z
|
|
*/
|
|
|
|
/* t1 = r^2 */
|
|
sp_1024_mont_sqr_16(t1, r, p1024_mod, p1024_mp_mod);
|
|
/* t2 = h^2 */
|
|
sp_1024_mont_sqr_16(rx, h, p1024_mod, p1024_mp_mod);
|
|
/* ry = c.x * p.z^2 * h^2 */
|
|
sp_1024_mont_mul_16(ry, rx, c->x, p1024_mod, p1024_mp_mod);
|
|
/* t2 = h^3 */
|
|
sp_1024_mont_mul_16(t2, rx, h, p1024_mod, p1024_mp_mod);
|
|
/* c'.x = r^2 - h^3 */
|
|
sp_1024_mont_sub_16(c->x, t1, t2, p1024_mod);
|
|
/* t1 = 2 * c.x * p.z^2 * h^2 */
|
|
sp_1024_mont_dbl_16(t1, ry, p1024_mod);
|
|
/* c'.x = r^2 - h^3 - 2 * c.x * p.z^2 * h^2 */
|
|
sp_1024_mont_sub_16(c->x, c->x, t1, p1024_mod);
|
|
/* ry = c.x * p.z^2 * h^2 - c'.x */
|
|
sp_1024_mont_sub_16(t1, ry, c->x, p1024_mod);
|
|
/* ry = r * (c.x * p.z^2 * h^2 - c'.x) */
|
|
sp_1024_mont_mul_16(ry, t1, r, p1024_mod, p1024_mp_mod);
|
|
/* t2 = c.y * p.z^3 * h^3 */
|
|
sp_1024_mont_mul_16(t1, t2, c->y, p1024_mod, p1024_mp_mod);
|
|
/* c'.y = r * (c.x * p.z^2 * h^2 - c'.x) - c.y * p.z^3 * h^3 */
|
|
sp_1024_mont_sub_16(c->y, ry, t1, p1024_mod);
|
|
}
|
|
|
|
/*
|
|
* Perform n accumulate doubles and doubles of P.
|
|
*
|
|
* py = 2 * p.y
|
|
*
|
|
* For each double:
|
|
* Calculate gradient of line through P, P and [-2]P, accumulate line and
|
|
* double P.
|
|
*
|
|
* Calculations:
|
|
* l = 3 * (p.x^2 - p.z^4) = 3 * (p.x - p.z^2) * (p.x + p.z^2)
|
|
* r.x = l * (p.x + q.x * p.z^2) - py^2 / 2
|
|
* r.y = py * p.z^3 * q.y (= p'.z * p.z^2 * q.y)
|
|
* v* = v*^2 * r*
|
|
* p'.x = l^2 - 2 * py^2 * p.x
|
|
* py' = (py^2 * p.x - p'.x) * l - py^4 (= 2 * p'.y)
|
|
* p'.z = py * p.z
|
|
*
|
|
* Finally:
|
|
* p'.y = py' / 2
|
|
*
|
|
* @param [in,out] vx X-ordinate of projective value in F*.
|
|
* @param [in,out] vy Y-ordinate of projective value in F*.
|
|
* @param [in,out] p ECC point - point on E(F_p^2) to double.
|
|
* @param [in] q ECC point - second point on E(F_P^2).
|
|
* @param [in] n Number of times to double.
|
|
* @param [in] t SP temporaries (6 used).
|
|
*/
|
|
static void sp_1024_accumulate_line_dbl_n_16(sp_digit* vx, sp_digit* vy,
|
|
sp_point_1024* p, const sp_point_1024* q, int n, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t + 0 * 16;
|
|
sp_digit* pz2 = t + 2 * 16;
|
|
sp_digit* rx = t + 4 * 16;
|
|
sp_digit* ry = t + 6 * 16;
|
|
sp_digit* l = t + 8 * 16;
|
|
sp_digit* ty = t + 10 * 16;
|
|
int i;
|
|
|
|
/* py = 2 * p.y */
|
|
sp_1024_mont_dbl_16(p->y, p->y, p1024_mod);
|
|
|
|
for (i = 0; i < n; i++) {
|
|
/* v = v^2 */
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
/* pz2 = p.z^2 */
|
|
sp_1024_mont_sqr_16(pz2, p->z, p1024_mod, p1024_mp_mod);
|
|
/* t1 = p.x + p.z^2 */
|
|
sp_1024_mont_add_16(t1, p->x, pz2, p1024_mod);
|
|
/* l = p.x - p.z^2 */
|
|
sp_1024_mont_sub_16(l, p->x, pz2, p1024_mod);
|
|
/* t1 = (p.x + p.z^2) * (p.x - p.z^2) = p.x^2 - p.z^4 */
|
|
sp_1024_mont_mul_16(ty, l, t1, p1024_mod, p1024_mp_mod);
|
|
/* l = 3 * (p.x^2 - p.z^4) */
|
|
sp_1024_mont_tpl_16(l, ty, p1024_mod);
|
|
/* t1 = q.x * p.z^2 */
|
|
sp_1024_mont_mul_16(t1, q->x, pz2, p1024_mod, p1024_mp_mod);
|
|
/* t1 = p.x + q.x * p.z^2 */
|
|
sp_1024_mont_add_16(t1, p->x, t1, p1024_mod);
|
|
/* r.x = l * (p.x + q.x * p.z^2) */
|
|
sp_1024_mont_mul_16(rx, l, t1, p1024_mod, p1024_mp_mod);
|
|
/* ty = py ^ 2 */
|
|
sp_1024_mont_sqr_16(ty, p->y, p1024_mod, p1024_mp_mod);
|
|
/* t1 = py ^ 2 / 2 */
|
|
sp_1024_div2_16(t1, ty, p1024_mod);
|
|
/* r.x -= py ^ 2 / 2 */
|
|
sp_1024_mont_sub_16(rx, rx, t1, p1024_mod);
|
|
/* p'.z = py * pz */
|
|
sp_1024_mont_mul_16(p->z, p->z, p->y, p1024_mod, p1024_mp_mod);
|
|
/* r.y = p'.z * p.z^2 */
|
|
sp_1024_mont_mul_16(t1, p->z, pz2, p1024_mod, p1024_mp_mod);
|
|
/* r.y = p'.z * p.z^2 * q.y */
|
|
sp_1024_mont_mul_16(ry, t1, q->y, p1024_mod, p1024_mp_mod);
|
|
/* v = v^2 * r */
|
|
sp_1024_proj_mul_16(vx, vy, rx, ry, t);
|
|
|
|
/* Double point using previously calculated values
|
|
* l = 3 * (p.x - p.z^2).(p.x + p.z^2)
|
|
* ty = py^2
|
|
* p'.z = py * p.z
|
|
*/
|
|
/* t1 = py^2 ^ 2 = py^4 */
|
|
sp_1024_mont_sqr_16(t1, ty, p1024_mod, p1024_mp_mod);
|
|
/* py' = py^2 * p. x */
|
|
sp_1024_mont_mul_16(p->y, ty, p->x, p1024_mod, p1024_mp_mod);
|
|
/* p'.x = l^2 */
|
|
sp_1024_mont_sqr_16(p->x, l, p1024_mod, p1024_mp_mod);
|
|
/* p'.x = l^2 - py^2 * p.x */
|
|
sp_1024_mont_sub_16(p->x, p->x, p->y, p1024_mod);
|
|
/* p'.x = l^2 - 2 * p.y^2 * p.x */
|
|
sp_1024_mont_sub_16(p->x, p->x, p->y, p1024_mod);
|
|
/* py' = py^2 * p.x - p.x' */
|
|
sp_1024_mont_sub_16(ty, p->y, p->x, p1024_mod);
|
|
/* py' = (p.y^2 * p.x - p'.x) * l */
|
|
sp_1024_mont_mul_16(p->y, ty, l, p1024_mod, p1024_mp_mod);
|
|
/* py' = (p.y^2 * p.x - p'.x) * l * 2 */
|
|
sp_1024_mont_dbl_16(p->y, p->y, p1024_mod);
|
|
/* py' = (p.y^2 * p.x - p'.x) * l * 2 - p.y^4 */
|
|
sp_1024_mont_sub_16(p->y, p->y, t1, p1024_mod);
|
|
}
|
|
|
|
/* p'.y = py' / 2 */
|
|
sp_1024_div2_16(p->y, p->y, p1024_mod);
|
|
}
|
|
|
|
/* Operations to perform based on order - 1.
|
|
* Sliding window. Start at bottom and stop when bottom bit is one.
|
|
* Subtract if top bit in window is one.
|
|
* Width of 6 bits.
|
|
* Pairs: #dbls, add/subtract window value
|
|
*/
|
|
static const signed char sp_1024_order_op[] = {
|
|
5, 6, -13, 9, -21, 6, -5, 8, 31, 6, 3, 6, -27, 6, 25, 9,
|
|
-1, 6, -11, 6, -13, 6, -7, 6, -15, 6, -29, 7, 25, 6, -9, 6,
|
|
-19, 7, 3, 6, 11, 9, -23, 6, 1, 6, 27, 6, 1, 7, -25, 8,
|
|
13, 7, -13, 7, -23, 10, 19, 7, 7, 7, -3, 7, 27, 6, -7, 7,
|
|
-21, 7, 11, 7, 31, 8, 1, 7, -23, 6, -17, 6, -3, 10, 11, 6,
|
|
-21, 7, -27, 11, -29, 6, -1, 10, 15, 8, 27, 7, 17, 6, 17, 7,
|
|
-13, 8, 13, 6, 21, 7, -29, 6, 19, 7, -25, 6, 11, 9, 29, 7,
|
|
-7, 8, 27, 7, 29, 10, -1, 8, -7, 8, 17, 6, 17, 7, -27, 7,
|
|
-21, 6, -9, 6, -27, 12, -23, 6, 19, 6, 13, 6, -11, 7, 27, 6,
|
|
17, 6, -7, 6, -25, 7, -29, 6, 9, 7, 7, 6, 13, 6, -25, 6,
|
|
-19, 6, 13, 6, -11, 6, 5, 8, 19, 6, -21, 8, 23, 7, 27, 6,
|
|
-13, 6, -19, 11, 29, 7, -15, 6, -9, 7, -21, 10, -3, 7, 21, 10,
|
|
25, 6, -15, 6, -23, 6, 21, 6, 1, 6, 21, 7, -3, 6, -3, 7,
|
|
-7, 6, -23, 7, 7, 8, 15, 9, 5, 6, -11, 6, 21, 11, -27, 7,
|
|
27, 6, -11, 6, 31, 6, -21, 6, 19, 6, -7, 8, -7, 13, -3, 6,
|
|
-7, 7, -3, 6, 1, 6, 7, 8, 19, 8, 11, 9, -9, 7, -31, 12,
|
|
25, 6, -17, 9, -15, 7, 5, 6, 25, 7, -5, 7, -25, 6, 17, 8,
|
|
-19, 6, -13, 6, 27, 8, 1, 7, -5, 7, -1, 6, 21, 6, 3, 10,
|
|
-3, 1,
|
|
};
|
|
/*
|
|
* Calculate r = pairing <P, Q>.
|
|
*
|
|
* That is, multiply base in PF_p[q] by the scalar s, such that s.P = Q.
|
|
*
|
|
* Sliding window. Start at bottom and stop when bottom bit is one.
|
|
* Subtract if top bit in window is one.
|
|
* Width of 6 bits.
|
|
*
|
|
* @param [in] pm First point on E(F_p)[q].
|
|
* @param [in] qm Second point on E(F_p)[q].
|
|
* @param [in] res Result of calculation.
|
|
* @return 0 on success.
|
|
* @return MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_Pairing_1024(const ecc_point* pm, const ecc_point* qm, mp_int* res)
|
|
{
|
|
int err;
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
sp_digit* t;
|
|
sp_digit* vx;
|
|
sp_digit* vy;
|
|
sp_digit (*pre_vx)[32];
|
|
sp_digit (*pre_vy)[32];
|
|
sp_digit (*pre_nvy)[32];
|
|
sp_point_1024* pre_p;
|
|
#else
|
|
sp_digit t[6 * 2 * 16];
|
|
sp_digit vx[2 * 16];
|
|
sp_digit vy[2 * 16];
|
|
sp_digit pre_vx[16][32];
|
|
sp_digit pre_vy[16][32];
|
|
sp_digit pre_nvy[16][32];
|
|
sp_point_1024 pre_p[16];
|
|
sp_point_1024 pd;
|
|
sp_point_1024 qd;
|
|
sp_point_1024 cd;
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
sp_point_1024* q = NULL;
|
|
sp_point_1024* c = NULL;
|
|
sp_digit* r = NULL;
|
|
int i;
|
|
int j;
|
|
|
|
err = sp_1024_point_new_16(NULL, pd, p);
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, qd, q);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, cd, c);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 56 * 16 * 2 + 16 * sizeof(sp_point_1024), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
vx = td + 6 * 16 * 2;
|
|
vy = td + 7 * 16 * 2;
|
|
pre_vx = (sp_digit(*)[32])(td + 8 * 16 * 2);
|
|
pre_vy = (sp_digit(*)[32])(td + 24 * 16 * 2);
|
|
pre_nvy = (sp_digit(*)[32])(td + 40 * 16 * 2);
|
|
pre_p = (sp_point_1024*)(td + 56 * 16 * 2);
|
|
#endif
|
|
r = vy;
|
|
|
|
sp_1024_point_from_ecc_point_16(p, pm);
|
|
sp_1024_point_from_ecc_point_16(q, qm);
|
|
|
|
err = sp_1024_mod_mul_norm_16(p->x, p->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->y, p->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->z, p->z, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->x, q->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->y, q->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* Generate pre-computation table: 1, 3, ... , 31 */
|
|
XMEMCPY(&pre_p[0], p, sizeof(sp_point_1024));
|
|
XMEMSET(pre_vx[0], 0, sizeof(sp_digit) * 2 * 16);
|
|
pre_vx[0][0] = 1;
|
|
XMEMSET(pre_vy[0], 0, sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_mont_sub_16(pre_nvy[0], p1024_mod, pre_vy[0], p1024_mod);
|
|
|
|
/* [2]P for adding */
|
|
XMEMCPY(c, p, sizeof(sp_point_1024));
|
|
XMEMSET(vx, 0, sizeof(sp_digit) * 2 * 16);
|
|
vx[0] = 1;
|
|
XMEMSET(vy, 0, sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_accumulate_line_dbl_16(vx, vy, c, q, t);
|
|
|
|
/* 3, 5, ... */
|
|
for (i = 1; i < 16; i++) {
|
|
XMEMCPY(&pre_p[i], &pre_p[i-1], sizeof(sp_point_1024));
|
|
XMEMCPY(pre_vx[i], pre_vx[i-1], sizeof(sp_digit) * 2 * 16);
|
|
XMEMCPY(pre_vy[i], pre_vy[i-1], sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_proj_mul_16(pre_vx[i], pre_vy[i], vx, vy, t);
|
|
sp_1024_accumulate_line_add_n_16(pre_vx[i], pre_vy[i], c,
|
|
q, &pre_p[i], t, 0);
|
|
sp_1024_mont_sub_16(pre_nvy[i], p1024_mod, pre_vy[i], p1024_mod);
|
|
}
|
|
|
|
j = sp_1024_order_op[0] / 2;
|
|
XMEMCPY(c, &pre_p[j], sizeof(sp_point_1024));
|
|
XMEMCPY(vx, pre_vx[j], sizeof(sp_digit) * 2 * 16);
|
|
XMEMCPY(vy, pre_vy[j], sizeof(sp_digit) * 2 * 16);
|
|
|
|
/* Accumulate line into v and double point n times. */
|
|
sp_1024_accumulate_line_dbl_n_16(vx, vy, c, q,
|
|
sp_1024_order_op[1], t);
|
|
|
|
for (i = 2; i < 290; i += 2) {
|
|
j = sp_1024_order_op[i];
|
|
if (j > 0) {
|
|
j /= 2;
|
|
/* Accumulate line into v and add P into C. */
|
|
sp_1024_proj_mul_16(vx, vy, pre_vx[j], pre_vy[j], t);
|
|
sp_1024_accumulate_line_add_n_16(vx, vy, &pre_p[j], q, c,
|
|
t, 0);
|
|
}
|
|
else {
|
|
j = -j / 2;
|
|
/* Accumulate line into v and add P into C. */
|
|
sp_1024_proj_mul_16(vx, vy, pre_vx[j], pre_nvy[j], t);
|
|
sp_1024_accumulate_line_add_n_16(vx, vy, &pre_p[j], q, c,
|
|
t, 1);
|
|
}
|
|
|
|
/* Accumulate line into v and double point n times. */
|
|
sp_1024_accumulate_line_dbl_n_16(vx, vy, c, q,
|
|
sp_1024_order_op[i + 1], t);
|
|
}
|
|
|
|
/* Final exponentiation */
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
|
|
/* Convert from PF_p[q] to F_p */
|
|
sp_1024_mont_inv_16(vx, vx, t);
|
|
sp_1024_mont_mul_16(r, vx, vy, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(r, p1024_mod, p1024_mp_mod);
|
|
|
|
err = sp_1024_to_mp(r, res);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
sp_1024_point_free_16(c, 1, NULL);
|
|
sp_1024_point_free_16(q, 1, NULL);
|
|
sp_1024_point_free_16(p, 1, NULL);
|
|
return err;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
#ifdef WOLFSSL_SP_SMALL
|
|
/*
|
|
* Generate table for pairing.
|
|
*
|
|
* Small implementation does not use a table - returns 0 length.
|
|
*
|
|
* pm [in] Point to generate table for.
|
|
* table [in] Generated table.
|
|
* len [in,out] On in, the size of the buffer.
|
|
* On out, length of table generated.
|
|
* @return 0 on success.
|
|
* LENGTH_ONLY_E when table is NULL and only length returned.
|
|
* BUFFER_E when len is too small.
|
|
*/
|
|
int sp_Pairing_gen_precomp_1024(const ecc_point* pm, byte* table,
|
|
word32* len)
|
|
{
|
|
int err = 0;
|
|
|
|
if (table == NULL) {
|
|
*len = 0;
|
|
err = LENGTH_ONLY_E;
|
|
}
|
|
else if (*len != 0) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
(void)*pm;
|
|
|
|
return err;
|
|
}
|
|
|
|
/*
|
|
* Calculate r = pairing <P, Q>.
|
|
*
|
|
* That is, multiply base in PF_p[q] by the scalar s, such that s.P = Q.
|
|
*
|
|
* Small implementation does not use a table - use the normal implementation.
|
|
*
|
|
* @param [in] pm First point on E(F_p)[q].
|
|
* @param [in] qm Second point on E(F_p)[q].
|
|
* @param [in] res Result of calculation.
|
|
* @param [in] table Precomputed table of values.
|
|
* @param [in] len Length of precomputed table of values in bytes.
|
|
* @return 0 on success.
|
|
* @return MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_Pairing_precomp_1024(const ecc_point* pm, const ecc_point* qm,
|
|
mp_int* res, const byte* table, word32 len)
|
|
{
|
|
(void)table;
|
|
(void)len;
|
|
return sp_Pairing_1024(pm, qm, res);
|
|
}
|
|
|
|
#else
|
|
/*
|
|
* Calc l and c for the point when doubling p.
|
|
*
|
|
* l = 3 * (p.x^2 - 1) / (2 * p.y)
|
|
* c = l * p.x - p.y
|
|
*
|
|
* @param [out] lr Gradient result - table entry.
|
|
* @param [out] cr Constant result - table entry.
|
|
* @param [in] px X-ordinate of point to double.
|
|
* @param [in] py Y-ordinate of point to double.
|
|
* @param [in] t SP temporaries (3 used).
|
|
*/
|
|
static void sp_1024_accum_dbl_calc_lc_16(sp_digit* lr, sp_digit* cr,
|
|
const sp_digit* px, const sp_digit* py, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t + 0 * 2 * 16;
|
|
sp_digit* t2 = t + 2 * 2 * 16;
|
|
sp_digit* l = t + 4 * 2 * 16;
|
|
|
|
|
|
/* l = 1 / 2 * p.y */
|
|
sp_1024_mont_dbl_16(l, py, p1024_mod);
|
|
sp_1024_mont_inv_16(l, l, t);
|
|
|
|
/* t1 = p.x^2 */
|
|
sp_1024_mont_sqr_16(t1, px, p1024_mod, p1024_mp_mod);
|
|
/* t1 = p.x - 1 */
|
|
sp_1024_mont_sub_16(t1, t1, p1024_norm_mod, p1024_mod);
|
|
/* t1 = 3 * (p.x^2 - 1) */
|
|
sp_1024_mont_dbl_16(t2, t1, p1024_mod);
|
|
sp_1024_mont_add_16(t1, t1, t2, p1024_mod);
|
|
/* t1 = 3 * (p.x^2 - 1) / (2 * p.y) */
|
|
sp_1024_mont_mul_16(l, l, t1, p1024_mod, p1024_mp_mod);
|
|
/* t2 = l * p.x */
|
|
sp_1024_mont_mul_16(t2, l, px, p1024_mod, p1024_mp_mod);
|
|
/* c = t2 = l * p.x - p.y */
|
|
sp_1024_mont_sub_16(t2, t2, py, p1024_mod);
|
|
|
|
XMEMCPY(lr, l, sizeof(sp_digit) * 16);
|
|
XMEMCPY(cr, t2, sizeof(sp_digit) * 16);
|
|
}
|
|
|
|
/*
|
|
* Calc l and c when adding p and c.
|
|
*
|
|
* l = (c.y - p.y) / (c.x - p.x)
|
|
* c = (p.x * c.y - cx * p.y) / (cx - p.x)
|
|
*
|
|
* @param [out] lr Gradient result - table entry.
|
|
* @param [out] cr Constant result - table entry.
|
|
* @param [in] px X-ordinate of point to add.
|
|
* @param [in] py Y-ordinate of point to add.
|
|
* @param [in] cx X-ordinate of current point.
|
|
* @param [in] cy Y-ordinate of current point.
|
|
* @param [in] t SP temporaries (3 used).
|
|
*/
|
|
static void sp_1024_accum_add_calc_lc_16(sp_digit* lr, sp_digit* cr,
|
|
const sp_digit* px, const sp_digit* py, const sp_digit* cx,
|
|
const sp_digit* cy, sp_digit* t)
|
|
{
|
|
sp_digit* t1 = t + 0 * 2 * 16;
|
|
sp_digit* c = t + 2 * 2 * 16;
|
|
sp_digit* l = t + 4 * 2 * 16;
|
|
|
|
|
|
/* l = 1 / (c.x - p.x) */
|
|
sp_1024_mont_sub_16(l, cx, px, p1024_mod);
|
|
sp_1024_mont_inv_16(l, l, t);
|
|
|
|
/* c = p.x * c.y */
|
|
sp_1024_mont_mul_16(c, px, cy, p1024_mod, p1024_mp_mod);
|
|
/* t1 = c.x * p.y */
|
|
sp_1024_mont_mul_16(t1, cx, py, p1024_mod, p1024_mp_mod);
|
|
/* c = (p.x * c.y) - (c.x * p.y) */
|
|
sp_1024_mont_sub_16(c, c, t1, p1024_mod);
|
|
/* c = ((p.x * c.y) - (c.x * p.y)) / (c.x - p.x) */
|
|
sp_1024_mont_mul_16(c, c, l, p1024_mod, p1024_mp_mod);
|
|
/* t1 = c.y - p.y */
|
|
sp_1024_mont_sub_16(t1, cy, py, p1024_mod);
|
|
/* l = (c.y - p.y) / (c.x - p.x) */
|
|
sp_1024_mont_mul_16(l, t1, l, p1024_mod, p1024_mp_mod);
|
|
|
|
XMEMCPY(lr, l, sizeof(sp_digit) * 16);
|
|
XMEMCPY(cr, c, sizeof(sp_digit) * 16);
|
|
}
|
|
|
|
/*
|
|
* Calculate vx and vy given gradient l and constant c and point q.
|
|
*
|
|
* l is a the gradient and is multiplied by q->x.
|
|
* c is a the constant that is added to the multiplicative result.
|
|
* q->y is the y-ordinate in result to multiply.
|
|
*
|
|
* if dbl
|
|
* v* = v*^2
|
|
* r.x = l * q.x + c
|
|
* r.y = q->y
|
|
* v* = v* * r*
|
|
*
|
|
* @param [in,out] vx X-ordinate of projective value in F*.
|
|
* @param [in,out] vy Y-ordinate of projective value in F*.
|
|
* @param [in] l Gradient to multiply with.
|
|
* @param [in] c Constant to add with.
|
|
* @param [in] q ECC point - second point on E(F_P^2).
|
|
* @param [in] t SP temporaries (3 used).
|
|
* @param [in] dbl Indicates whether this is for doubling. Otherwise
|
|
* adding.
|
|
*/
|
|
static void sp_1024_accumulate_line_lc_16(sp_digit* vx, sp_digit* vy,
|
|
const sp_digit* l, const sp_digit* c, const sp_point_1024* q,
|
|
sp_digit* t, int dbl)
|
|
{
|
|
sp_digit* rx = t + 4 * 2 * 16;
|
|
|
|
/* v = v^2 */
|
|
if (dbl) {
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
}
|
|
/* rx = l * q.x + c */
|
|
sp_1024_mont_mul_16(rx, l, q->x, p1024_mod, p1024_mp_mod);
|
|
sp_1024_mont_add_16(rx, rx, c, p1024_mod);
|
|
/* v = v^2 * r */
|
|
sp_1024_proj_mul_16(vx, vy, rx, q->y, t);
|
|
}
|
|
|
|
/* Operations to perform based on order - 1.
|
|
* Sliding window. Start at bottom and stop when bottom bit is one.
|
|
* Subtract if top bit in window is one.
|
|
* Width of 6 bits.
|
|
* Pairs: #dbls, add/subtract window value
|
|
*/
|
|
static const signed char sp_1024_order_op_pre[] = {
|
|
5, 6, -13, 9, -21, 6, -5, 8, 31, 6, 3, 6, -27, 6, 25, 9,
|
|
-1, 6, -11, 6, -13, 6, -7, 6, -15, 6, -29, 7, 25, 6, -9, 6,
|
|
-19, 7, 3, 6, 11, 9, -23, 6, 1, 6, 27, 6, 1, 7, -25, 8,
|
|
13, 7, -13, 7, -23, 10, 19, 7, 7, 7, -3, 7, 27, 6, -7, 7,
|
|
-21, 7, 11, 7, 31, 8, 1, 7, -23, 6, -17, 6, -3, 10, 11, 6,
|
|
-21, 7, -27, 11, -29, 6, -1, 10, 15, 8, 27, 7, 17, 6, 17, 7,
|
|
-13, 8, 13, 6, 21, 7, -29, 6, 19, 7, -25, 6, 11, 9, 29, 7,
|
|
-7, 8, 27, 7, 29, 10, -1, 8, -7, 8, 17, 6, 17, 7, -27, 7,
|
|
-21, 6, -9, 6, -27, 12, -23, 6, 19, 6, 13, 6, -11, 7, 27, 6,
|
|
17, 6, -7, 6, -25, 7, -29, 6, 9, 7, 7, 6, 13, 6, -25, 6,
|
|
-19, 6, 13, 6, -11, 6, 5, 8, 19, 6, -21, 8, 23, 7, 27, 6,
|
|
-13, 6, -19, 11, 29, 7, -15, 6, -9, 7, -21, 10, -3, 7, 21, 10,
|
|
25, 6, -15, 6, -23, 6, 21, 6, 1, 6, 21, 7, -3, 6, -3, 7,
|
|
-7, 6, -23, 7, 7, 8, 15, 9, 5, 6, -11, 6, 21, 11, -27, 7,
|
|
27, 6, -11, 6, 31, 6, -21, 6, 19, 6, -7, 8, -7, 13, -3, 6,
|
|
-7, 7, -3, 6, 1, 6, 7, 8, 19, 8, 11, 9, -9, 7, -31, 12,
|
|
25, 6, -17, 9, -15, 7, 5, 6, 25, 7, -5, 7, -25, 6, 17, 8,
|
|
-19, 6, -13, 6, 27, 8, 1, 7, -5, 7, -1, 6, 21, 6, 3, 10,
|
|
-3, 1,
|
|
};
|
|
|
|
/*
|
|
* Generate table for pairing.
|
|
*
|
|
* Calculate the graident (l) and constant (c) at each step of the way.
|
|
* Sliding window. Start at bottom and stop when bottom bit is one.
|
|
* Subtract if top bit in window is one.
|
|
* Width of 6 bits.
|
|
*
|
|
* pm [in] Point to generate table for.
|
|
* table [in] Generated table.
|
|
* len [in,out] On in, the size of the buffer.
|
|
* On out, length of table generated.
|
|
* @return 0 on success.
|
|
* LENGTH_ONLY_E when table is NULL and only length returned.
|
|
* BUFFER_E when len is too small.
|
|
* MEMORY_E when dynamic memory allocation fauls.
|
|
*/
|
|
int sp_Pairing_gen_precomp_1024(const ecc_point* pm, byte* table,
|
|
word32* len)
|
|
{
|
|
int err = 0;
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
sp_digit* t;
|
|
sp_point_1024* pre_p;
|
|
#else
|
|
sp_digit t[6 * 2 * 16];
|
|
sp_point_1024 pre_p[16];
|
|
sp_point_1024 pd;
|
|
sp_point_1024 cd;
|
|
sp_point_1024 negd;
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
sp_point_1024* c = NULL;
|
|
sp_point_1024* neg = NULL;
|
|
int i;
|
|
int j;
|
|
int k;
|
|
sp_table_entry_1024* precomp = (sp_table_entry_1024*)table;
|
|
|
|
if (table == NULL) {
|
|
*len = sizeof(sp_table_entry_1024) * 1167;
|
|
err = LENGTH_ONLY_E;
|
|
}
|
|
|
|
if ((err == MP_OKAY) &&
|
|
(*len < (int)(sizeof(sp_table_entry_1024) * 1167))) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, pd, p);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, cd, c);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, negd, neg);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 6 * 16 * 2 + 16 * sizeof(sp_point_1024), NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
pre_p = (sp_point_1024*)(td + 6 * 16 * 2);
|
|
#endif
|
|
|
|
sp_1024_point_from_ecc_point_16(p, pm);
|
|
|
|
err = sp_1024_mod_mul_norm_16(p->x, p->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->y, p->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
XMEMCPY(p->z, p1024_norm_mod, sizeof(p1024_norm_mod));
|
|
neg->infinity = 0;
|
|
c->infinity = 0;
|
|
|
|
/* Generate pre-computation table: 1, 3, ... , 31 */
|
|
XMEMCPY(&pre_p[0], p, sizeof(sp_point_1024));
|
|
/* [2]P for adding */
|
|
sp_1024_proj_point_dbl_16(c, p, t);
|
|
|
|
/* 1, 3, ... */
|
|
for (i = 1; i < 16; i++) {
|
|
sp_1024_proj_point_add_16(&pre_p[i], &pre_p[i-1], c, t);
|
|
sp_1024_mont_map_16(&pre_p[i], t);
|
|
}
|
|
|
|
k = 0;
|
|
j = sp_1024_order_op_pre[0] / 2;
|
|
XMEMCPY(c, &pre_p[j], sizeof(sp_point_1024));
|
|
|
|
for (j = 0; j < sp_1024_order_op_pre[1]; j++) {
|
|
sp_1024_accum_dbl_calc_lc_16(precomp[k].x, precomp[k].y, c->x, c->y, t);
|
|
k++;
|
|
sp_1024_proj_point_dbl_16(c, c, t);
|
|
sp_1024_mont_map_16(c, t);
|
|
}
|
|
|
|
for (i = 2; i < 290; i += 2) {
|
|
j = sp_1024_order_op_pre[i];
|
|
if (j > 0) {
|
|
sp_1024_accum_add_calc_lc_16(precomp[k].x, precomp[k].y,
|
|
pre_p[j/2].x, pre_p[j/2].y, c->x, c->y, t);
|
|
k++;
|
|
sp_1024_proj_point_add_16(c, c, &pre_p[j/2], t);
|
|
sp_1024_mont_map_16(c, t);
|
|
}
|
|
else {
|
|
XMEMCPY(neg->x, pre_p[-j / 2].x, sizeof(pre_p->x));
|
|
sp_1024_mont_sub_16(neg->y, p1024_mod, pre_p[-j / 2].y,
|
|
p1024_mod);
|
|
XMEMCPY(neg->z, pre_p[-j / 2].z, sizeof(pre_p->z));
|
|
|
|
sp_1024_accum_add_calc_lc_16(precomp[k].x, precomp[k].y,
|
|
neg->x, neg->y, c->x, c->y, t);
|
|
k++;
|
|
sp_1024_proj_point_add_16(c, c, neg, t);
|
|
sp_1024_mont_map_16(c, t);
|
|
}
|
|
|
|
for (j = 0; j < sp_1024_order_op_pre[i + 1]; j++) {
|
|
sp_1024_accum_dbl_calc_lc_16(precomp[k].x, precomp[k].y, c->x, c->y, t);
|
|
k++;
|
|
sp_1024_proj_point_dbl_16(c, c, t);
|
|
sp_1024_mont_map_16(c, t);
|
|
}
|
|
}
|
|
|
|
*len = sizeof(sp_table_entry_1024) * 1167;
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
sp_1024_point_free_16(neg, 1, NULL);
|
|
sp_1024_point_free_16(c, 1, NULL);
|
|
sp_1024_point_free_16(p, 1, NULL);
|
|
return err;
|
|
}
|
|
|
|
/*
|
|
* Calculate r = pairing <P, Q>.
|
|
*
|
|
* That is, multiply base in PF_p[q] by the scalar s, such that s.P = Q.
|
|
*
|
|
* Sliding window. Start at bottom and stop when bottom bit is one.
|
|
* Subtract if top bit in window is one.
|
|
* Width of 6 bits.
|
|
* Pre-generate values in window (1, 3, ...) - only V.
|
|
* Table contains all gradient l and a constant for each point on the path.
|
|
*
|
|
* @param [in] pm First point on E(F_p)[q].
|
|
* @param [in] qm Second point on E(F_p)[q].
|
|
* @param [in] res Result of calculation.
|
|
* @param [in] table Precomputed table of values.
|
|
* @param [in] len Length of precomputed table of values in bytes.
|
|
* @return 0 on success.
|
|
* @return MEMORY_E when dynamic memory allocation fails.
|
|
*/
|
|
int sp_Pairing_precomp_1024(const ecc_point* pm, const ecc_point* qm,
|
|
mp_int* res, const byte* table, word32 len)
|
|
{
|
|
int err = 0;
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* td = NULL;
|
|
sp_digit* t;
|
|
sp_digit* vx;
|
|
sp_digit* vy;
|
|
sp_digit (*pre_vx)[32];
|
|
sp_digit (*pre_vy)[32];
|
|
sp_digit (*pre_nvy)[32];
|
|
#else
|
|
sp_digit t[6 * 2 * 16];
|
|
sp_digit vx[2 * 16];
|
|
sp_digit vy[2 * 16];
|
|
sp_digit pre_vx[16][32];
|
|
sp_digit pre_vy[16][32];
|
|
sp_digit pre_nvy[16][32];
|
|
sp_point_1024 pd;
|
|
sp_point_1024 qd;
|
|
sp_point_1024 cd;
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
sp_point_1024* q = NULL;
|
|
sp_point_1024* c = NULL;
|
|
sp_digit* r = NULL;
|
|
int i;
|
|
int j;
|
|
int k;
|
|
const sp_table_entry_1024* precomp = (const sp_table_entry_1024*)table;
|
|
|
|
if (len < (int)(sizeof(sp_table_entry_1024) * 1167)) {
|
|
err = BUFFER_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, pd, p);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, qd, q);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_point_new_16(NULL, cd, c);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
td = (sp_digit*)XMALLOC(sizeof(sp_digit) * 56 * 16 * 2, NULL,
|
|
DYNAMIC_TYPE_TMP_BUFFER);
|
|
if (td == NULL) {
|
|
err = MEMORY_E;
|
|
}
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
t = td;
|
|
vx = td + 6 * 16 * 2;
|
|
vy = td + 7 * 16 * 2;
|
|
pre_vx = (sp_digit(*)[32])(td + 8 * 16 * 2);
|
|
pre_vy = (sp_digit(*)[32])(td + 24 * 16 * 2);
|
|
pre_nvy = (sp_digit(*)[32])(td + 40 * 16 * 2);
|
|
#endif
|
|
r = vy;
|
|
|
|
sp_1024_point_from_ecc_point_16(p, pm);
|
|
sp_1024_point_from_ecc_point_16(q, qm);
|
|
|
|
err = sp_1024_mod_mul_norm_16(p->x, p->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->y, p->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(p->z, p->z, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->x, q->x, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
err = sp_1024_mod_mul_norm_16(q->y, q->y, p1024_mod);
|
|
}
|
|
if (err == MP_OKAY) {
|
|
/* Generate pre-computation table: 1, 3, ... , 31 */
|
|
XMEMSET(pre_vx[0], 0, sizeof(sp_digit) * 2 * 16);
|
|
pre_vx[0][0] = 1;
|
|
XMEMSET(pre_vy[0], 0, sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_mont_sub_16(pre_nvy[0], p1024_mod, pre_vy[0], p1024_mod);
|
|
|
|
/* [2]P for adding */
|
|
XMEMCPY(c, p, sizeof(sp_point_1024));
|
|
XMEMSET(vx, 0, sizeof(sp_digit) * 2 * 16);
|
|
vx[0] = 1;
|
|
XMEMSET(vy, 0, sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_accumulate_line_dbl_16(vx, vy, c, q, t);
|
|
|
|
/* 3, 5, ... */
|
|
for (i = 1; i < 16; i++) {
|
|
XMEMCPY(pre_vx[i], pre_vx[i-1], sizeof(sp_digit) * 2 * 16);
|
|
XMEMCPY(pre_vy[i], pre_vy[i-1], sizeof(sp_digit) * 2 * 16);
|
|
sp_1024_proj_mul_16(pre_vx[i], pre_vy[i], vx, vy, t);
|
|
sp_1024_accumulate_line_add_n_16(pre_vx[i], pre_vy[i], c,
|
|
q, p, t, 0);
|
|
sp_1024_mont_sub_16(pre_nvy[i], p1024_mod, pre_vy[i],
|
|
p1024_mod);
|
|
}
|
|
|
|
XMEMCPY(c->z, p1024_norm_mod, sizeof(sp_digit) * 16);
|
|
c->infinity = 0;
|
|
j = sp_1024_order_op_pre[0] / 2;
|
|
XMEMCPY(vx, pre_vx[j], sizeof(sp_digit) * 2 * 16);
|
|
XMEMCPY(vy, pre_vy[j], sizeof(sp_digit) * 2 * 16);
|
|
|
|
k = 0;
|
|
for (j = 0; j < sp_1024_order_op_pre[1]; j++) {
|
|
/* Accumulate line into v and double point. */
|
|
sp_1024_accumulate_line_lc_16(vx, vy, precomp[k].x,
|
|
precomp[k].y, q, t, 1);
|
|
k++;
|
|
}
|
|
|
|
for (i = 2; i < 290; i += 2) {
|
|
sp_1024_accumulate_line_lc_16(vx, vy, precomp[k].x,
|
|
precomp[k].y, q, t, 0);
|
|
k++;
|
|
|
|
j = sp_1024_order_op_pre[i];
|
|
if (j > 0) {
|
|
j /= 2;
|
|
/* Accumulate line into v. */
|
|
sp_1024_proj_mul_16(vx, vy, pre_vx[j], pre_vy[j], t);
|
|
}
|
|
else {
|
|
j = -j / 2;
|
|
/* Accumulate line into v. */
|
|
sp_1024_proj_mul_16(vx, vy, pre_vx[j], pre_nvy[j], t);
|
|
}
|
|
|
|
for (j = 0; j < sp_1024_order_op_pre[i + 1]; j++) {
|
|
/* Accumulate line into v and double point. */
|
|
sp_1024_accumulate_line_lc_16(vx, vy, precomp[k].x,
|
|
precomp[k].y, q, t, 1);
|
|
k++;
|
|
}
|
|
}
|
|
|
|
/* Final exponentiation */
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
sp_1024_proj_sqr_16(vx, vy, t);
|
|
|
|
/* Convert from PF_p[q] to F_p */
|
|
sp_1024_mont_inv_16(vx, vx, t);
|
|
sp_1024_mont_mul_16(r, vx, vy, p1024_mod, p1024_mp_mod);
|
|
XMEMSET(r + 16, 0, sizeof(sp_digit) * 16);
|
|
sp_1024_mont_reduce_16(r, p1024_mod, p1024_mp_mod);
|
|
|
|
err = sp_1024_to_mp(r, res);
|
|
}
|
|
|
|
#if (defined(WOLFSSL_SP_SMALL) || defined(WOLFSSL_SMALL_STACK)) && \
|
|
!defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (td != NULL) {
|
|
XFREE(td, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
|
}
|
|
#endif
|
|
sp_1024_point_free_16(c, 1, NULL);
|
|
sp_1024_point_free_16(q, 1, NULL);
|
|
sp_1024_point_free_16(p, 1, NULL);
|
|
return err;
|
|
}
|
|
|
|
#endif /* WOLFSSL_SP_SMALL */
|
|
/* Returns 1 if the number of zero.
|
|
* Implementation is constant time.
|
|
*
|
|
* a Number to check.
|
|
* returns 1 if the number is zero and 0 otherwise.
|
|
*/
|
|
static int sp_1024_iszero_16(const sp_digit* a)
|
|
{
|
|
return (a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] | a[7] |
|
|
a[8] | a[9] | a[10] | a[11] | a[12] | a[13] | a[14] | a[15]) == 0;
|
|
}
|
|
|
|
#ifdef HAVE_ECC_CHECK_KEY
|
|
/* Read big endian unsigned byte array into r.
|
|
*
|
|
* r A single precision integer.
|
|
* size Maximum number of bytes to convert
|
|
* a Byte array.
|
|
* n Number of bytes in array to read.
|
|
*/
|
|
static void sp_1024_from_bin(sp_digit* r, int size, const byte* a, int n)
|
|
{
|
|
int i;
|
|
int j;
|
|
byte* d;
|
|
|
|
for (i = n - 1,j = 0; i >= 7; i -= 8) {
|
|
r[j] = ((sp_digit)a[i - 0] << 0) |
|
|
((sp_digit)a[i - 1] << 8) |
|
|
((sp_digit)a[i - 2] << 16) |
|
|
((sp_digit)a[i - 3] << 24) |
|
|
((sp_digit)a[i - 4] << 32) |
|
|
((sp_digit)a[i - 5] << 40) |
|
|
((sp_digit)a[i - 6] << 48) |
|
|
((sp_digit)a[i - 7] << 56);
|
|
j++;
|
|
}
|
|
|
|
if (i >= 0) {
|
|
r[j] = 0;
|
|
|
|
d = (byte*)r;
|
|
switch (i) {
|
|
case 6: d[n - 1 - 6] = a[6]; //fallthrough
|
|
case 5: d[n - 1 - 5] = a[5]; //fallthrough
|
|
case 4: d[n - 1 - 4] = a[4]; //fallthrough
|
|
case 3: d[n - 1 - 3] = a[3]; //fallthrough
|
|
case 2: d[n - 1 - 2] = a[2]; //fallthrough
|
|
case 1: d[n - 1 - 1] = a[1]; //fallthrough
|
|
case 0: d[n - 1 - 0] = a[0]; //fallthrough
|
|
}
|
|
j++;
|
|
}
|
|
|
|
for (; j < size; j++) {
|
|
r[j] = 0;
|
|
}
|
|
}
|
|
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* point EC point.
|
|
* heap Heap to use if dynamically allocating.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
static int sp_1024_ecc_is_point_16(const sp_point_1024* point,
|
|
void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* t1 = NULL;
|
|
#else
|
|
sp_digit t1[16 * 4];
|
|
#endif
|
|
sp_digit* t2 = NULL;
|
|
sp_int64 n;
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
t1 = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16 * 4, heap, DYNAMIC_TYPE_ECC);
|
|
if (t1 == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
(void)heap;
|
|
|
|
if (err == MP_OKAY) {
|
|
t2 = t1 + 2 * 16;
|
|
|
|
sp_1024_sqr_16(t1, point->y);
|
|
(void)sp_1024_mod_16(t1, t1, p1024_mod);
|
|
sp_1024_sqr_16(t2, point->x);
|
|
(void)sp_1024_mod_16(t2, t2, p1024_mod);
|
|
sp_1024_mul_16(t2, t2, point->x);
|
|
(void)sp_1024_mod_16(t2, t2, p1024_mod);
|
|
(void)sp_1024_sub_16(t2, p1024_mod, t2);
|
|
sp_1024_mont_add_16(t1, t1, t2, p1024_mod);
|
|
|
|
sp_1024_mont_add_16(t1, t1, point->x, p1024_mod);
|
|
sp_1024_mont_add_16(t1, t1, point->x, p1024_mod);
|
|
sp_1024_mont_add_16(t1, t1, point->x, p1024_mod);
|
|
|
|
n = sp_1024_cmp_16(t1, p1024_mod);
|
|
sp_1024_cond_sub_16(t1, t1, p1024_mod, 0 - ((n >= 0) ?
|
|
(sp_digit)1 : (sp_digit)0));
|
|
sp_1024_norm_16(t1);
|
|
if (!sp_1024_iszero_16(t1)) {
|
|
err = MP_VAL;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (t1 != NULL)
|
|
XFREE(t1, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the x and y oridinates are a valid point on the curve.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve and MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_is_point_1024(const mp_int* pX, const mp_int* pY)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_point_1024* pub = NULL;
|
|
#else
|
|
sp_point_1024 pub[1];
|
|
#endif
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
pub = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024), NULL,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
sp_1024_from_mp(pub->x, 16, pX);
|
|
sp_1024_from_mp(pub->y, 16, pY);
|
|
sp_1024_from_bin(pub->z, 16, one, (int)sizeof(one));
|
|
|
|
err = sp_1024_ecc_is_point_16(pub, NULL);
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, NULL, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
|
|
/* Check that the private scalar generates the EC point (px, py), the point is
|
|
* on the curve and the point has the correct order.
|
|
*
|
|
* pX X ordinate of EC point.
|
|
* pY Y ordinate of EC point.
|
|
* privm Private scalar that generates EC point.
|
|
* returns MEMORY_E if dynamic memory allocation fails, MP_VAL if the point is
|
|
* not on the curve, ECC_INF_E if the point does not have the correct order,
|
|
* ECC_PRIV_KEY_E when the private scalar doesn't generate the EC point and
|
|
* MP_OKAY otherwise.
|
|
*/
|
|
int sp_ecc_check_key_1024(const mp_int* pX, const mp_int* pY,
|
|
const mp_int* privm, void* heap)
|
|
{
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
sp_digit* priv = NULL;
|
|
sp_point_1024* pub = NULL;
|
|
#else
|
|
sp_digit priv[16];
|
|
sp_point_1024 pub[2];
|
|
#endif
|
|
sp_point_1024* p = NULL;
|
|
const byte one[1] = { 1 };
|
|
int err = MP_OKAY;
|
|
|
|
|
|
/* Quick check the lengs of public key ordinates and private key are in
|
|
* range. Proper check later.
|
|
*/
|
|
if (((mp_count_bits(pX) > 1024) ||
|
|
(mp_count_bits(pY) > 1024) ||
|
|
((privm != NULL) && (mp_count_bits(privm) > 1024)))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (err == MP_OKAY) {
|
|
pub = (sp_point_1024*)XMALLOC(sizeof(sp_point_1024) * 2, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (pub == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
if (err == MP_OKAY && privm) {
|
|
priv = (sp_digit*)XMALLOC(sizeof(sp_digit) * 16, heap,
|
|
DYNAMIC_TYPE_ECC);
|
|
if (priv == NULL)
|
|
err = MEMORY_E;
|
|
}
|
|
#endif
|
|
|
|
if (err == MP_OKAY) {
|
|
p = pub + 1;
|
|
|
|
sp_1024_from_mp(pub->x, 16, pX);
|
|
sp_1024_from_mp(pub->y, 16, pY);
|
|
sp_1024_from_bin(pub->z, 16, one, (int)sizeof(one));
|
|
if (privm)
|
|
sp_1024_from_mp(priv, 16, privm);
|
|
|
|
/* Check point at infinitiy. */
|
|
if ((sp_1024_iszero_16(pub->x) != 0) &&
|
|
(sp_1024_iszero_16(pub->y) != 0)) {
|
|
err = ECC_INF_E;
|
|
}
|
|
}
|
|
|
|
/* Check range of X and Y */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_1024_cmp_16(pub->x, p1024_mod) >= 0) ||
|
|
(sp_1024_cmp_16(pub->y, p1024_mod) >= 0))) {
|
|
err = ECC_OUT_OF_RANGE_E;
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Check point is on curve */
|
|
err = sp_1024_ecc_is_point_16(pub, heap);
|
|
}
|
|
|
|
if (err == MP_OKAY) {
|
|
/* Point * order = infinity */
|
|
err = sp_1024_ecc_mulmod_16(p, pub, p1024_order, 1, 1, heap);
|
|
}
|
|
/* Check result is infinity */
|
|
if ((err == MP_OKAY) && ((sp_1024_iszero_16(p->x) == 0) ||
|
|
(sp_1024_iszero_16(p->y) == 0))) {
|
|
err = ECC_INF_E;
|
|
}
|
|
|
|
if (privm) {
|
|
if (err == MP_OKAY) {
|
|
/* Base * private = point */
|
|
err = sp_1024_ecc_mulmod_base_16(p, priv, 1, 1, heap);
|
|
}
|
|
/* Check result is public key */
|
|
if ((err == MP_OKAY) &&
|
|
((sp_1024_cmp_16(p->x, pub->x) != 0) ||
|
|
(sp_1024_cmp_16(p->y, pub->y) != 0))) {
|
|
err = ECC_PRIV_KEY_E;
|
|
}
|
|
}
|
|
|
|
#if defined(WOLFSSL_SMALL_STACK) && !defined(WOLFSSL_SP_NO_MALLOC)
|
|
if (pub != NULL)
|
|
XFREE(pub, heap, DYNAMIC_TYPE_ECC);
|
|
if (priv != NULL)
|
|
XFREE(priv, heap, DYNAMIC_TYPE_ECC);
|
|
#endif
|
|
|
|
return err;
|
|
}
|
|
#endif
|
|
#endif /* WOLFSSL_SP_1024 */
|
|
#endif /* WOLFSSL_HAVE_SP_ECC */
|
|
#endif /* WOLFSSL_SP_ARM64_ASM */
|
|
#endif /* WOLFSSL_HAVE_SP_RSA | WOLFSSL_HAVE_SP_DH | WOLFSSL_HAVE_SP_ECC */
|