nss/SOURCES/nss_p521_hacl.patch

14366 lines
650 KiB
Diff
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff -up ./lib/freebl/ec.c.p521_hacl ./lib/freebl/ec.c
--- ./lib/freebl/ec.c.p521_hacl 2024-01-10 14:02:53.236576444 -0800
+++ ./lib/freebl/ec.c 2024-01-10 14:07:12.780312061 -0800
@@ -1,3 +1,4 @@
+
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -86,8 +87,15 @@ static const ECMethod kMethods[] = {
ec_secp384r1_scalar_validate,
ec_secp384r1_sign_digest,
ec_secp384r1_verify_digest,
- }
-
+ },
+ {
+ ECCurve_NIST_P521,
+ ec_secp521r1_pt_mul,
+ ec_secp521r1_pt_validate,
+ ec_secp521r1_scalar_validate,
+ ec_secp521r1_sign_digest,
+ ec_secp521r1_verify_digest,
+ }
};
static const ECMethod *
diff -up ./lib/freebl/ecdecode.c.p521_hacl ./lib/freebl/ecdecode.c
--- ./lib/freebl/ecdecode.c.p521_hacl 2024-01-10 14:02:53.236576444 -0800
+++ ./lib/freebl/ecdecode.c 2024-01-10 14:04:29.761450868 -0800
@@ -171,7 +171,7 @@ EC_FillParams(PLArenaPool *arena, const
* (the NIST P-521 curve)
*/
CHECK_SEC_OK(gf_populate_params_bytes(ECCurve_SECG_PRIME_521R1,
- ec_field_GFp, params));
+ ec_field_plain, params));
break;
case SEC_OID_CURVE25519:
diff -up ./lib/freebl/ecl/ecl.c.p521_hacl ./lib/freebl/ecl/ecl.c
--- ./lib/freebl/ecl/ecl.c.p521_hacl 2024-01-10 14:02:53.236576444 -0800
+++ ./lib/freebl/ecl/ecl.c 2024-01-10 14:04:29.761450868 -0800
@@ -184,7 +184,7 @@ construct_ecgroup(const ECCurveName name
goto CLEANUP;
}
MP_CHECKOK(ec_group_set_gfp521(group, name));
- MP_CHECKOK(ec_group_set_secp521r1(group, name));
+ //MP_CHECKOK(ec_group_set_secp521r1(group, name));
break;
default:
/* use generic arithmetic */
diff -up ./lib/freebl/ecl/ecl.h.p521_hacl ./lib/freebl/ecl/ecl.h
--- ./lib/freebl/ecl/ecl.h.p521_hacl 2024-01-10 14:04:29.761450868 -0800
+++ ./lib/freebl/ecl/ecl.h 2024-01-10 14:09:12.853803604 -0800
@@ -67,6 +67,13 @@ SECStatus ec_secp384r1_sign_digest(ECPri
SECStatus ec_secp384r1_verify_digest(ECPublicKey *key, const SECItem *signature,
const SECItem *digest);
+SECStatus ec_secp521r1_pt_mul(SECItem *X, SECItem *k, SECItem *P);
+SECStatus ec_secp521r1_pt_validate(const SECItem *px);
SECStatus ec_secp521r1_scalar_validate(const SECItem *scalar);
+SECStatus ec_secp521r1_sign_digest(ECPrivateKey *key, SECItem *signature,
+ const SECItem *digest, const unsigned char *kb,
+ const unsigned int kblen);
+SECStatus ec_secp521r1_verify_digest(ECPublicKey *key, const SECItem *signature,
+ const SECItem *digest);
#endif /* __ecl_h_ */
diff -up ./lib/freebl/ecl/ecp_secp521r1.c.p521_hacl ./lib/freebl/ecl/ecp_secp521r1.c
--- ./lib/freebl/ecl/ecp_secp521r1.c.p521_hacl 2023-06-04 01:42:53.000000000 -0700
+++ ./lib/freebl/ecl/ecp_secp521r1.c 2024-01-10 14:04:29.763450886 -0800
@@ -1,12082 +1,238 @@
-/* Autogenerated: ECCKiila https://gitlab.com/nisec/ecckiila */
-/*-
- * MIT License
- * -
- * Copyright (c) 2020 Luis Rivera-Zamarripa, Jesús-Javier Chi-Domínguez, Billy Bob Brumley
- * -
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * -
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * -
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-#if defined(__SIZEOF_INT128__) && !defined(PEDANTIC)
-
-#include <stdint.h>
-#include <string.h>
-#define LIMB_BITS 64
-#define LIMB_CNT 9
-/* Field elements */
-typedef uint64_t fe_t[LIMB_CNT];
-typedef uint64_t limb_t;
-
-#define fe_copy(d, s) memcpy(d, s, sizeof(fe_t))
-#define fe_set_zero(d) memset(d, 0, sizeof(fe_t))
-
-/* Projective points */
-typedef struct {
- fe_t X;
- fe_t Y;
- fe_t Z;
-} pt_prj_t;
-
-/* Affine points */
-typedef struct {
- fe_t X;
- fe_t Y;
-} pt_aff_t;
-
-/* BEGIN verbatim fiat code https://github.com/mit-plv/fiat-crypto */
-/*-
- * MIT License
- *
- * Copyright (c) 2015-2021 the fiat-crypto authors (see the AUTHORS file).
- * https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
+/* P-384 from HACL* */
-/* Autogenerated: unsaturated_solinas --static --use-value-barrier secp521r1 64 9 '2^521 - 1' */
-/* curve description: secp521r1 */
-/* machine_wordsize = 64 (from "64") */
-/* requested operations: (all) */
-/* n = 9 (from "9") */
-/* s-c = 2^521 - [(1, 1)] (from "2^521 - 1") */
-/* tight_bounds_multiplier = 1 (from "") */
-/* */
-/* Computed values: */
-/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1] */
-/* eval z = z[0] + (z[1] << 58) + (z[2] << 116) + (z[3] << 174) + (z[4] << 232) + (z[5] << 0x122) + (z[6] << 0x15c) + (z[7] << 0x196) + (z[8] << 0x1d0) */
-/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) + (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) + (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) + (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) + (z[47] << 0x178) + (z[48] << 0x180) + (z[49] << 0x188) + (z[50] << 0x190) + (z[51] << 0x198) + (z[52] << 0x1a0) + (z[53] << 0x1a8) + (z[54] << 0x1b0) + (z[55] << 0x1b8) + (z[56] << 0x1c0) + (z[57] << 0x1c8) + (z[58] << 0x1d0) + (z[59] << 0x1d8) + (z[60] << 0x1e0) + (z[61] << 0x1e8) + (z[62] << 0x1f0) + (z[63] << 0x1f8) + (z[64] << 2^9) + (z[65] << 0x208) */
-/* balance = [0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x7fffffffffffffe, 0x3fffffffffffffe] */
-
-#include <stdint.h>
-typedef unsigned char fiat_secp521r1_uint1;
-typedef signed char fiat_secp521r1_int1;
-#ifdef __GNUC__
-#define FIAT_SECP521R1_FIAT_EXTENSION __extension__
-#define FIAT_SECP521R1_FIAT_INLINE __inline__
-#else
-#define FIAT_SECP521R1_FIAT_EXTENSION
-#define FIAT_SECP521R1_FIAT_INLINE
+#ifdef FREEBL_NO_DEPEND
+#include "../stubs.h"
#endif
-FIAT_SECP521R1_FIAT_EXTENSION typedef signed __int128 fiat_secp521r1_int128;
-FIAT_SECP521R1_FIAT_EXTENSION typedef unsigned __int128 fiat_secp521r1_uint128;
-
-/* The type fiat_secp521r1_loose_field_element is a field element with loose bounds. */
-/* Bounds: [[0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0xc00000000000000], [0x0 ~> 0x600000000000000]] */
-typedef uint64_t fiat_secp521r1_loose_field_element[9];
-
-/* The type fiat_secp521r1_tight_field_element is a field element with tight bounds. */
-/* Bounds: [[0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x400000000000000], [0x0 ~> 0x200000000000000]] */
-typedef uint64_t fiat_secp521r1_tight_field_element[9];
-
-#if (-1 & 3) != 3
-#error "This code only works on a two's complement system"
-#endif
-
-#if !defined(FIAT_SECP521R1_NO_ASM) && (defined(__GNUC__) || defined(__clang__))
-static __inline__ uint64_t
-fiat_secp521r1_value_barrier_u64(uint64_t a)
-{
- __asm__(""
- : "+r"(a)
- : /* no inputs */);
- return a;
-}
-#else
-#define fiat_secp521r1_value_barrier_u64(x) (x)
-#endif
+#include "ecl-priv.h"
+#include "secitem.h"
+#include "secerr.h"
+#include "secmpi.h"
+#include "../verified/Hacl_P521.h"
/*
- * The function fiat_secp521r1_addcarryx_u58 is an addition with carry.
- *
- * Postconditions:
- * out1 = (arg1 + arg2 + arg3) mod 2^58
- * out2 = ⌊(arg1 + arg2 + arg3) / 2^58⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x3ffffffffffffff]
- * arg3: [0x0 ~> 0x3ffffffffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x3ffffffffffffff]
- * out2: [0x0 ~> 0x1]
+ * Point Validation for P-521.
*/
-static void
-fiat_secp521r1_addcarryx_u58(uint64_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint64_t arg2, uint64_t arg3)
-{
- uint64_t x1;
- uint64_t x2;
- fiat_secp521r1_uint1 x3;
- x1 = ((arg1 + arg2) + arg3);
- x2 = (x1 & UINT64_C(0x3ffffffffffffff));
- x3 = (fiat_secp521r1_uint1)(x1 >> 58);
- *out1 = x2;
- *out2 = x3;
-}
-/*
- * The function fiat_secp521r1_subborrowx_u58 is a subtraction with borrow.
- *
- * Postconditions:
- * out1 = (-arg1 + arg2 + -arg3) mod 2^58
- * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^58⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x3ffffffffffffff]
- * arg3: [0x0 ~> 0x3ffffffffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x3ffffffffffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_subborrowx_u58(uint64_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint64_t arg2, uint64_t arg3)
+SECStatus
+ec_secp521r1_pt_validate(const SECItem *pt)
{
- int64_t x1;
- fiat_secp521r1_int1 x2;
- uint64_t x3;
- x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3);
- x2 = (fiat_secp521r1_int1)(x1 >> 58);
- x3 = (x1 & UINT64_C(0x3ffffffffffffff));
- *out1 = x3;
- *out2 = (fiat_secp521r1_uint1)(0x0 - x2);
-}
-
-/*
- * The function fiat_secp521r1_addcarryx_u57 is an addition with carry.
- *
- * Postconditions:
- * out1 = (arg1 + arg2 + arg3) mod 2^57
- * out2 = ⌊(arg1 + arg2 + arg3) / 2^57⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x1ffffffffffffff]
- * arg3: [0x0 ~> 0x1ffffffffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x1ffffffffffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_addcarryx_u57(uint64_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint64_t arg2, uint64_t arg3)
-{
- uint64_t x1;
- uint64_t x2;
- fiat_secp521r1_uint1 x3;
- x1 = ((arg1 + arg2) + arg3);
- x2 = (x1 & UINT64_C(0x1ffffffffffffff));
- x3 = (fiat_secp521r1_uint1)(x1 >> 57);
- *out1 = x2;
- *out2 = x3;
-}
-
-/*
- * The function fiat_secp521r1_subborrowx_u57 is a subtraction with borrow.
- *
- * Postconditions:
- * out1 = (-arg1 + arg2 + -arg3) mod 2^57
- * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^57⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x1ffffffffffffff]
- * arg3: [0x0 ~> 0x1ffffffffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x1ffffffffffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_subborrowx_u57(uint64_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint64_t arg2, uint64_t arg3)
-{
- int64_t x1;
- fiat_secp521r1_int1 x2;
- uint64_t x3;
- x1 = ((int64_t)(arg2 - (int64_t)arg1) - (int64_t)arg3);
- x2 = (fiat_secp521r1_int1)(x1 >> 57);
- x3 = (x1 & UINT64_C(0x1ffffffffffffff));
- *out1 = x3;
- *out2 = (fiat_secp521r1_uint1)(0x0 - x2);
-}
-
-/*
- * The function fiat_secp521r1_cmovznz_u64 is a single-word conditional move.
- *
- * Postconditions:
- * out1 = (if arg1 = 0 then arg2 else arg3)
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0xffffffffffffffff]
- * arg3: [0x0 ~> 0xffffffffffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0xffffffffffffffff]
- */
-static void
-fiat_secp521r1_cmovznz_u64(uint64_t *out1,
- fiat_secp521r1_uint1 arg1, uint64_t arg2,
- uint64_t arg3)
-{
- fiat_secp521r1_uint1 x1;
- uint64_t x2;
- uint64_t x3;
- x1 = (!(!arg1));
- x2 = ((fiat_secp521r1_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff));
- x3 = ((fiat_secp521r1_value_barrier_u64(x2) & arg3) |
- (fiat_secp521r1_value_barrier_u64((~x2)) & arg2));
- *out1 = x3;
-}
-
-/*
- * The function fiat_secp521r1_carry_mul multiplies two field elements and reduces the result.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 * eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_mul(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_loose_field_element arg1,
- const fiat_secp521r1_loose_field_element arg2)
-{
- fiat_secp521r1_uint128 x1;
- fiat_secp521r1_uint128 x2;
- fiat_secp521r1_uint128 x3;
- fiat_secp521r1_uint128 x4;
- fiat_secp521r1_uint128 x5;
- fiat_secp521r1_uint128 x6;
- fiat_secp521r1_uint128 x7;
- fiat_secp521r1_uint128 x8;
- fiat_secp521r1_uint128 x9;
- fiat_secp521r1_uint128 x10;
- fiat_secp521r1_uint128 x11;
- fiat_secp521r1_uint128 x12;
- fiat_secp521r1_uint128 x13;
- fiat_secp521r1_uint128 x14;
- fiat_secp521r1_uint128 x15;
- fiat_secp521r1_uint128 x16;
- fiat_secp521r1_uint128 x17;
- fiat_secp521r1_uint128 x18;
- fiat_secp521r1_uint128 x19;
- fiat_secp521r1_uint128 x20;
- fiat_secp521r1_uint128 x21;
- fiat_secp521r1_uint128 x22;
- fiat_secp521r1_uint128 x23;
- fiat_secp521r1_uint128 x24;
- fiat_secp521r1_uint128 x25;
- fiat_secp521r1_uint128 x26;
- fiat_secp521r1_uint128 x27;
- fiat_secp521r1_uint128 x28;
- fiat_secp521r1_uint128 x29;
- fiat_secp521r1_uint128 x30;
- fiat_secp521r1_uint128 x31;
- fiat_secp521r1_uint128 x32;
- fiat_secp521r1_uint128 x33;
- fiat_secp521r1_uint128 x34;
- fiat_secp521r1_uint128 x35;
- fiat_secp521r1_uint128 x36;
- fiat_secp521r1_uint128 x37;
- fiat_secp521r1_uint128 x38;
- fiat_secp521r1_uint128 x39;
- fiat_secp521r1_uint128 x40;
- fiat_secp521r1_uint128 x41;
- fiat_secp521r1_uint128 x42;
- fiat_secp521r1_uint128 x43;
- fiat_secp521r1_uint128 x44;
- fiat_secp521r1_uint128 x45;
- fiat_secp521r1_uint128 x46;
- fiat_secp521r1_uint128 x47;
- fiat_secp521r1_uint128 x48;
- fiat_secp521r1_uint128 x49;
- fiat_secp521r1_uint128 x50;
- fiat_secp521r1_uint128 x51;
- fiat_secp521r1_uint128 x52;
- fiat_secp521r1_uint128 x53;
- fiat_secp521r1_uint128 x54;
- fiat_secp521r1_uint128 x55;
- fiat_secp521r1_uint128 x56;
- fiat_secp521r1_uint128 x57;
- fiat_secp521r1_uint128 x58;
- fiat_secp521r1_uint128 x59;
- fiat_secp521r1_uint128 x60;
- fiat_secp521r1_uint128 x61;
- fiat_secp521r1_uint128 x62;
- fiat_secp521r1_uint128 x63;
- fiat_secp521r1_uint128 x64;
- fiat_secp521r1_uint128 x65;
- fiat_secp521r1_uint128 x66;
- fiat_secp521r1_uint128 x67;
- fiat_secp521r1_uint128 x68;
- fiat_secp521r1_uint128 x69;
- fiat_secp521r1_uint128 x70;
- fiat_secp521r1_uint128 x71;
- fiat_secp521r1_uint128 x72;
- fiat_secp521r1_uint128 x73;
- fiat_secp521r1_uint128 x74;
- fiat_secp521r1_uint128 x75;
- fiat_secp521r1_uint128 x76;
- fiat_secp521r1_uint128 x77;
- fiat_secp521r1_uint128 x78;
- fiat_secp521r1_uint128 x79;
- fiat_secp521r1_uint128 x80;
- fiat_secp521r1_uint128 x81;
- fiat_secp521r1_uint128 x82;
- fiat_secp521r1_uint128 x83;
- uint64_t x84;
- fiat_secp521r1_uint128 x85;
- fiat_secp521r1_uint128 x86;
- fiat_secp521r1_uint128 x87;
- fiat_secp521r1_uint128 x88;
- fiat_secp521r1_uint128 x89;
- fiat_secp521r1_uint128 x90;
- fiat_secp521r1_uint128 x91;
- fiat_secp521r1_uint128 x92;
- fiat_secp521r1_uint128 x93;
- fiat_secp521r1_uint128 x94;
- uint64_t x95;
- fiat_secp521r1_uint128 x96;
- fiat_secp521r1_uint128 x97;
- uint64_t x98;
- fiat_secp521r1_uint128 x99;
- fiat_secp521r1_uint128 x100;
- uint64_t x101;
- fiat_secp521r1_uint128 x102;
- fiat_secp521r1_uint128 x103;
- uint64_t x104;
- fiat_secp521r1_uint128 x105;
- fiat_secp521r1_uint128 x106;
- uint64_t x107;
- fiat_secp521r1_uint128 x108;
- fiat_secp521r1_uint128 x109;
- uint64_t x110;
- fiat_secp521r1_uint128 x111;
- fiat_secp521r1_uint128 x112;
- uint64_t x113;
- fiat_secp521r1_uint128 x114;
- fiat_secp521r1_uint128 x115;
- uint64_t x116;
- fiat_secp521r1_uint128 x117;
- uint64_t x118;
- uint64_t x119;
- uint64_t x120;
- fiat_secp521r1_uint1 x121;
- uint64_t x122;
- uint64_t x123;
- x1 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[8]) * 0x2));
- x2 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[7]) * 0x2));
- x3 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[6]) * 0x2));
- x4 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[5]) * 0x2));
- x5 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[4]) * 0x2));
- x6 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[3]) * 0x2));
- x7 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[2]) * 0x2));
- x8 = ((fiat_secp521r1_uint128)(arg1[8]) * ((arg2[1]) * 0x2));
- x9 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[8]) * 0x2));
- x10 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[7]) * 0x2));
- x11 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[6]) * 0x2));
- x12 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[5]) * 0x2));
- x13 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[4]) * 0x2));
- x14 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[3]) * 0x2));
- x15 = ((fiat_secp521r1_uint128)(arg1[7]) * ((arg2[2]) * 0x2));
- x16 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[8]) * 0x2));
- x17 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[7]) * 0x2));
- x18 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[6]) * 0x2));
- x19 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[5]) * 0x2));
- x20 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[4]) * 0x2));
- x21 = ((fiat_secp521r1_uint128)(arg1[6]) * ((arg2[3]) * 0x2));
- x22 = ((fiat_secp521r1_uint128)(arg1[5]) * ((arg2[8]) * 0x2));
- x23 = ((fiat_secp521r1_uint128)(arg1[5]) * ((arg2[7]) * 0x2));
- x24 = ((fiat_secp521r1_uint128)(arg1[5]) * ((arg2[6]) * 0x2));
- x25 = ((fiat_secp521r1_uint128)(arg1[5]) * ((arg2[5]) * 0x2));
- x26 = ((fiat_secp521r1_uint128)(arg1[5]) * ((arg2[4]) * 0x2));
- x27 = ((fiat_secp521r1_uint128)(arg1[4]) * ((arg2[8]) * 0x2));
- x28 = ((fiat_secp521r1_uint128)(arg1[4]) * ((arg2[7]) * 0x2));
- x29 = ((fiat_secp521r1_uint128)(arg1[4]) * ((arg2[6]) * 0x2));
- x30 = ((fiat_secp521r1_uint128)(arg1[4]) * ((arg2[5]) * 0x2));
- x31 = ((fiat_secp521r1_uint128)(arg1[3]) * ((arg2[8]) * 0x2));
- x32 = ((fiat_secp521r1_uint128)(arg1[3]) * ((arg2[7]) * 0x2));
- x33 = ((fiat_secp521r1_uint128)(arg1[3]) * ((arg2[6]) * 0x2));
- x34 = ((fiat_secp521r1_uint128)(arg1[2]) * ((arg2[8]) * 0x2));
- x35 = ((fiat_secp521r1_uint128)(arg1[2]) * ((arg2[7]) * 0x2));
- x36 = ((fiat_secp521r1_uint128)(arg1[1]) * ((arg2[8]) * 0x2));
- x37 = ((fiat_secp521r1_uint128)(arg1[8]) * (arg2[0]));
- x38 = ((fiat_secp521r1_uint128)(arg1[7]) * (arg2[1]));
- x39 = ((fiat_secp521r1_uint128)(arg1[7]) * (arg2[0]));
- x40 = ((fiat_secp521r1_uint128)(arg1[6]) * (arg2[2]));
- x41 = ((fiat_secp521r1_uint128)(arg1[6]) * (arg2[1]));
- x42 = ((fiat_secp521r1_uint128)(arg1[6]) * (arg2[0]));
- x43 = ((fiat_secp521r1_uint128)(arg1[5]) * (arg2[3]));
- x44 = ((fiat_secp521r1_uint128)(arg1[5]) * (arg2[2]));
- x45 = ((fiat_secp521r1_uint128)(arg1[5]) * (arg2[1]));
- x46 = ((fiat_secp521r1_uint128)(arg1[5]) * (arg2[0]));
- x47 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg2[4]));
- x48 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg2[3]));
- x49 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg2[2]));
- x50 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg2[1]));
- x51 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg2[0]));
- x52 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[5]));
- x53 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[4]));
- x54 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[3]));
- x55 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[2]));
- x56 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[1]));
- x57 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg2[0]));
- x58 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[6]));
- x59 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[5]));
- x60 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[4]));
- x61 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[3]));
- x62 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[2]));
- x63 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[1]));
- x64 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg2[0]));
- x65 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[7]));
- x66 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[6]));
- x67 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[5]));
- x68 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[4]));
- x69 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[3]));
- x70 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[2]));
- x71 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[1]));
- x72 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg2[0]));
- x73 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[8]));
- x74 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[7]));
- x75 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[6]));
- x76 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[5]));
- x77 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[4]));
- x78 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[3]));
- x79 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[2]));
- x80 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[1]));
- x81 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg2[0]));
- x82 = (x81 + (x36 + (x35 + (x33 + (x30 + (x26 + (x21 + (x15 + x8))))))));
- x83 = (x82 >> 58);
- x84 = (uint64_t)(x82 & UINT64_C(0x3ffffffffffffff));
- x85 = (x73 + (x65 + (x58 + (x52 + (x47 + (x43 + (x40 + (x38 + x37))))))));
- x86 = (x74 + (x66 + (x59 + (x53 + (x48 + (x44 + (x41 + (x39 + x1))))))));
- x87 = (x75 + (x67 + (x60 + (x54 + (x49 + (x45 + (x42 + (x9 + x2))))))));
- x88 = (x76 + (x68 + (x61 + (x55 + (x50 + (x46 + (x16 + (x10 + x3))))))));
- x89 = (x77 + (x69 + (x62 + (x56 + (x51 + (x22 + (x17 + (x11 + x4))))))));
- x90 = (x78 + (x70 + (x63 + (x57 + (x27 + (x23 + (x18 + (x12 + x5))))))));
- x91 = (x79 + (x71 + (x64 + (x31 + (x28 + (x24 + (x19 + (x13 + x6))))))));
- x92 = (x80 + (x72 + (x34 + (x32 + (x29 + (x25 + (x20 + (x14 + x7))))))));
- x93 = (x83 + x92);
- x94 = (x93 >> 58);
- x95 = (uint64_t)(x93 & UINT64_C(0x3ffffffffffffff));
- x96 = (x94 + x91);
- x97 = (x96 >> 58);
- x98 = (uint64_t)(x96 & UINT64_C(0x3ffffffffffffff));
- x99 = (x97 + x90);
- x100 = (x99 >> 58);
- x101 = (uint64_t)(x99 & UINT64_C(0x3ffffffffffffff));
- x102 = (x100 + x89);
- x103 = (x102 >> 58);
- x104 = (uint64_t)(x102 & UINT64_C(0x3ffffffffffffff));
- x105 = (x103 + x88);
- x106 = (x105 >> 58);
- x107 = (uint64_t)(x105 & UINT64_C(0x3ffffffffffffff));
- x108 = (x106 + x87);
- x109 = (x108 >> 58);
- x110 = (uint64_t)(x108 & UINT64_C(0x3ffffffffffffff));
- x111 = (x109 + x86);
- x112 = (x111 >> 58);
- x113 = (uint64_t)(x111 & UINT64_C(0x3ffffffffffffff));
- x114 = (x112 + x85);
- x115 = (x114 >> 57);
- x116 = (uint64_t)(x114 & UINT64_C(0x1ffffffffffffff));
- x117 = (x84 + x115);
- x118 = (uint64_t)(x117 >> 58);
- x119 = (uint64_t)(x117 & UINT64_C(0x3ffffffffffffff));
- x120 = (x118 + x95);
- x121 = (fiat_secp521r1_uint1)(x120 >> 58);
- x122 = (x120 & UINT64_C(0x3ffffffffffffff));
- x123 = (x121 + x98);
- out1[0] = x119;
- out1[1] = x122;
- out1[2] = x123;
- out1[3] = x101;
- out1[4] = x104;
- out1[5] = x107;
- out1[6] = x110;
- out1[7] = x113;
- out1[8] = x116;
-}
-
-/*
- * The function fiat_secp521r1_carry_square squares a field element and reduces the result.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 * eval arg1) mod m
- *
- */
-static void
-fiat_secp521r1_carry_square(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_loose_field_element arg1)
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- fiat_secp521r1_uint128 x17;
- fiat_secp521r1_uint128 x18;
- fiat_secp521r1_uint128 x19;
- fiat_secp521r1_uint128 x20;
- fiat_secp521r1_uint128 x21;
- fiat_secp521r1_uint128 x22;
- fiat_secp521r1_uint128 x23;
- fiat_secp521r1_uint128 x24;
- fiat_secp521r1_uint128 x25;
- fiat_secp521r1_uint128 x26;
- fiat_secp521r1_uint128 x27;
- fiat_secp521r1_uint128 x28;
- fiat_secp521r1_uint128 x29;
- fiat_secp521r1_uint128 x30;
- fiat_secp521r1_uint128 x31;
- fiat_secp521r1_uint128 x32;
- fiat_secp521r1_uint128 x33;
- fiat_secp521r1_uint128 x34;
- fiat_secp521r1_uint128 x35;
- fiat_secp521r1_uint128 x36;
- fiat_secp521r1_uint128 x37;
- fiat_secp521r1_uint128 x38;
- fiat_secp521r1_uint128 x39;
- fiat_secp521r1_uint128 x40;
- fiat_secp521r1_uint128 x41;
- fiat_secp521r1_uint128 x42;
- fiat_secp521r1_uint128 x43;
- fiat_secp521r1_uint128 x44;
- fiat_secp521r1_uint128 x45;
- fiat_secp521r1_uint128 x46;
- fiat_secp521r1_uint128 x47;
- fiat_secp521r1_uint128 x48;
- fiat_secp521r1_uint128 x49;
- fiat_secp521r1_uint128 x50;
- fiat_secp521r1_uint128 x51;
- fiat_secp521r1_uint128 x52;
- fiat_secp521r1_uint128 x53;
- fiat_secp521r1_uint128 x54;
- fiat_secp521r1_uint128 x55;
- fiat_secp521r1_uint128 x56;
- fiat_secp521r1_uint128 x57;
- fiat_secp521r1_uint128 x58;
- fiat_secp521r1_uint128 x59;
- fiat_secp521r1_uint128 x60;
- fiat_secp521r1_uint128 x61;
- fiat_secp521r1_uint128 x62;
- fiat_secp521r1_uint128 x63;
- uint64_t x64;
- fiat_secp521r1_uint128 x65;
- fiat_secp521r1_uint128 x66;
- fiat_secp521r1_uint128 x67;
- fiat_secp521r1_uint128 x68;
- fiat_secp521r1_uint128 x69;
- fiat_secp521r1_uint128 x70;
- fiat_secp521r1_uint128 x71;
- fiat_secp521r1_uint128 x72;
- fiat_secp521r1_uint128 x73;
- fiat_secp521r1_uint128 x74;
- uint64_t x75;
- fiat_secp521r1_uint128 x76;
- fiat_secp521r1_uint128 x77;
- uint64_t x78;
- fiat_secp521r1_uint128 x79;
- fiat_secp521r1_uint128 x80;
- uint64_t x81;
- fiat_secp521r1_uint128 x82;
- fiat_secp521r1_uint128 x83;
- uint64_t x84;
- fiat_secp521r1_uint128 x85;
- fiat_secp521r1_uint128 x86;
- uint64_t x87;
- fiat_secp521r1_uint128 x88;
- fiat_secp521r1_uint128 x89;
- uint64_t x90;
- fiat_secp521r1_uint128 x91;
- fiat_secp521r1_uint128 x92;
- uint64_t x93;
- fiat_secp521r1_uint128 x94;
- fiat_secp521r1_uint128 x95;
- uint64_t x96;
- fiat_secp521r1_uint128 x97;
- uint64_t x98;
- uint64_t x99;
- uint64_t x100;
- fiat_secp521r1_uint1 x101;
- uint64_t x102;
- uint64_t x103;
- x1 = (arg1[8]);
- x2 = (x1 * 0x2);
- x3 = ((arg1[8]) * 0x2);
- x4 = (arg1[7]);
- x5 = (x4 * 0x2);
- x6 = ((arg1[7]) * 0x2);
- x7 = (arg1[6]);
- x8 = (x7 * 0x2);
- x9 = ((arg1[6]) * 0x2);
- x10 = (arg1[5]);
- x11 = (x10 * 0x2);
- x12 = ((arg1[5]) * 0x2);
- x13 = ((arg1[4]) * 0x2);
- x14 = ((arg1[3]) * 0x2);
- x15 = ((arg1[2]) * 0x2);
- x16 = ((arg1[1]) * 0x2);
- x17 = ((fiat_secp521r1_uint128)(arg1[8]) * (x1 * 0x2));
- x18 = ((fiat_secp521r1_uint128)(arg1[7]) * (x2 * 0x2));
- x19 = ((fiat_secp521r1_uint128)(arg1[7]) * (x4 * 0x2));
- x20 = ((fiat_secp521r1_uint128)(arg1[6]) * (x2 * 0x2));
- x21 = ((fiat_secp521r1_uint128)(arg1[6]) * (x5 * 0x2));
- x22 = ((fiat_secp521r1_uint128)(arg1[6]) * (x7 * 0x2));
- x23 = ((fiat_secp521r1_uint128)(arg1[5]) * (x2 * 0x2));
- x24 = ((fiat_secp521r1_uint128)(arg1[5]) * (x5 * 0x2));
- x25 = ((fiat_secp521r1_uint128)(arg1[5]) * (x8 * 0x2));
- x26 = ((fiat_secp521r1_uint128)(arg1[5]) * (x10 * 0x2));
- x27 = ((fiat_secp521r1_uint128)(arg1[4]) * (x2 * 0x2));
- x28 = ((fiat_secp521r1_uint128)(arg1[4]) * (x5 * 0x2));
- x29 = ((fiat_secp521r1_uint128)(arg1[4]) * (x8 * 0x2));
- x30 = ((fiat_secp521r1_uint128)(arg1[4]) * (x11 * 0x2));
- x31 = ((fiat_secp521r1_uint128)(arg1[4]) * (arg1[4]));
- x32 = ((fiat_secp521r1_uint128)(arg1[3]) * (x2 * 0x2));
- x33 = ((fiat_secp521r1_uint128)(arg1[3]) * (x5 * 0x2));
- x34 = ((fiat_secp521r1_uint128)(arg1[3]) * (x8 * 0x2));
- x35 = ((fiat_secp521r1_uint128)(arg1[3]) * x12);
- x36 = ((fiat_secp521r1_uint128)(arg1[3]) * x13);
- x37 = ((fiat_secp521r1_uint128)(arg1[3]) * (arg1[3]));
- x38 = ((fiat_secp521r1_uint128)(arg1[2]) * (x2 * 0x2));
- x39 = ((fiat_secp521r1_uint128)(arg1[2]) * (x5 * 0x2));
- x40 = ((fiat_secp521r1_uint128)(arg1[2]) * x9);
- x41 = ((fiat_secp521r1_uint128)(arg1[2]) * x12);
- x42 = ((fiat_secp521r1_uint128)(arg1[2]) * x13);
- x43 = ((fiat_secp521r1_uint128)(arg1[2]) * x14);
- x44 = ((fiat_secp521r1_uint128)(arg1[2]) * (arg1[2]));
- x45 = ((fiat_secp521r1_uint128)(arg1[1]) * (x2 * 0x2));
- x46 = ((fiat_secp521r1_uint128)(arg1[1]) * x6);
- x47 = ((fiat_secp521r1_uint128)(arg1[1]) * x9);
- x48 = ((fiat_secp521r1_uint128)(arg1[1]) * x12);
- x49 = ((fiat_secp521r1_uint128)(arg1[1]) * x13);
- x50 = ((fiat_secp521r1_uint128)(arg1[1]) * x14);
- x51 = ((fiat_secp521r1_uint128)(arg1[1]) * x15);
- x52 = ((fiat_secp521r1_uint128)(arg1[1]) * (arg1[1]));
- x53 = ((fiat_secp521r1_uint128)(arg1[0]) * x3);
- x54 = ((fiat_secp521r1_uint128)(arg1[0]) * x6);
- x55 = ((fiat_secp521r1_uint128)(arg1[0]) * x9);
- x56 = ((fiat_secp521r1_uint128)(arg1[0]) * x12);
- x57 = ((fiat_secp521r1_uint128)(arg1[0]) * x13);
- x58 = ((fiat_secp521r1_uint128)(arg1[0]) * x14);
- x59 = ((fiat_secp521r1_uint128)(arg1[0]) * x15);
- x60 = ((fiat_secp521r1_uint128)(arg1[0]) * x16);
- x61 = ((fiat_secp521r1_uint128)(arg1[0]) * (arg1[0]));
- x62 = (x61 + (x45 + (x39 + (x34 + x30))));
- x63 = (x62 >> 58);
- x64 = (uint64_t)(x62 & UINT64_C(0x3ffffffffffffff));
- x65 = (x53 + (x46 + (x40 + (x35 + x31))));
- x66 = (x54 + (x47 + (x41 + (x36 + x17))));
- x67 = (x55 + (x48 + (x42 + (x37 + x18))));
- x68 = (x56 + (x49 + (x43 + (x20 + x19))));
- x69 = (x57 + (x50 + (x44 + (x23 + x21))));
- x70 = (x58 + (x51 + (x27 + (x24 + x22))));
- x71 = (x59 + (x52 + (x32 + (x28 + x25))));
- x72 = (x60 + (x38 + (x33 + (x29 + x26))));
- x73 = (x63 + x72);
- x74 = (x73 >> 58);
- x75 = (uint64_t)(x73 & UINT64_C(0x3ffffffffffffff));
- x76 = (x74 + x71);
- x77 = (x76 >> 58);
- x78 = (uint64_t)(x76 & UINT64_C(0x3ffffffffffffff));
- x79 = (x77 + x70);
- x80 = (x79 >> 58);
- x81 = (uint64_t)(x79 & UINT64_C(0x3ffffffffffffff));
- x82 = (x80 + x69);
- x83 = (x82 >> 58);
- x84 = (uint64_t)(x82 & UINT64_C(0x3ffffffffffffff));
- x85 = (x83 + x68);
- x86 = (x85 >> 58);
- x87 = (uint64_t)(x85 & UINT64_C(0x3ffffffffffffff));
- x88 = (x86 + x67);
- x89 = (x88 >> 58);
- x90 = (uint64_t)(x88 & UINT64_C(0x3ffffffffffffff));
- x91 = (x89 + x66);
- x92 = (x91 >> 58);
- x93 = (uint64_t)(x91 & UINT64_C(0x3ffffffffffffff));
- x94 = (x92 + x65);
- x95 = (x94 >> 57);
- x96 = (uint64_t)(x94 & UINT64_C(0x1ffffffffffffff));
- x97 = (x64 + x95);
- x98 = (uint64_t)(x97 >> 58);
- x99 = (uint64_t)(x97 & UINT64_C(0x3ffffffffffffff));
- x100 = (x98 + x75);
- x101 = (fiat_secp521r1_uint1)(x100 >> 58);
- x102 = (x100 & UINT64_C(0x3ffffffffffffff));
- x103 = (x101 + x78);
- out1[0] = x99;
- out1[1] = x102;
- out1[2] = x103;
- out1[3] = x81;
- out1[4] = x84;
- out1[5] = x87;
- out1[6] = x90;
- out1[7] = x93;
- out1[8] = x96;
-}
-
-/*
- * The function fiat_secp521r1_carry_add adds two field elements.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 + eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_add(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1,
- const fiat_secp521r1_tight_field_element arg2)
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- uint64_t x17;
- uint64_t x18;
- uint64_t x19;
- uint64_t x20;
- x1 = ((arg1[0]) + (arg2[0]));
- x2 = ((x1 >> 58) + ((arg1[1]) + (arg2[1])));
- x3 = ((x2 >> 58) + ((arg1[2]) + (arg2[2])));
- x4 = ((x3 >> 58) + ((arg1[3]) + (arg2[3])));
- x5 = ((x4 >> 58) + ((arg1[4]) + (arg2[4])));
- x6 = ((x5 >> 58) + ((arg1[5]) + (arg2[5])));
- x7 = ((x6 >> 58) + ((arg1[6]) + (arg2[6])));
- x8 = ((x7 >> 58) + ((arg1[7]) + (arg2[7])));
- x9 = ((x8 >> 58) + ((arg1[8]) + (arg2[8])));
- x10 = ((x1 & UINT64_C(0x3ffffffffffffff)) + (x9 >> 57));
- x11 = ((fiat_secp521r1_uint1)(x10 >> 58) +
- (x2 & UINT64_C(0x3ffffffffffffff)));
- x12 = (x10 & UINT64_C(0x3ffffffffffffff));
- x13 = (x11 & UINT64_C(0x3ffffffffffffff));
- x14 = ((fiat_secp521r1_uint1)(x11 >> 58) +
- (x3 & UINT64_C(0x3ffffffffffffff)));
- x15 = (x4 & UINT64_C(0x3ffffffffffffff));
- x16 = (x5 & UINT64_C(0x3ffffffffffffff));
- x17 = (x6 & UINT64_C(0x3ffffffffffffff));
- x18 = (x7 & UINT64_C(0x3ffffffffffffff));
- x19 = (x8 & UINT64_C(0x3ffffffffffffff));
- x20 = (x9 & UINT64_C(0x1ffffffffffffff));
- out1[0] = x12;
- out1[1] = x13;
- out1[2] = x14;
- out1[3] = x15;
- out1[4] = x16;
- out1[5] = x17;
- out1[6] = x18;
- out1[7] = x19;
- out1[8] = x20;
-}
-
-/*
- * The function fiat_secp521r1_carry_sub subtracts two field elements.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 - eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_sub(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1,
- const fiat_secp521r1_tight_field_element arg2)
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- uint64_t x17;
- uint64_t x18;
- uint64_t x19;
- uint64_t x20;
- x1 = ((UINT64_C(0x7fffffffffffffe) + (arg1[0])) - (arg2[0]));
- x2 = ((x1 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[1])) - (arg2[1])));
- x3 = ((x2 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[2])) - (arg2[2])));
- x4 = ((x3 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[3])) - (arg2[3])));
- x5 = ((x4 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[4])) - (arg2[4])));
- x6 = ((x5 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[5])) - (arg2[5])));
- x7 = ((x6 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[6])) - (arg2[6])));
- x8 = ((x7 >> 58) + ((UINT64_C(0x7fffffffffffffe) + (arg1[7])) - (arg2[7])));
- x9 = ((x8 >> 58) + ((UINT64_C(0x3fffffffffffffe) + (arg1[8])) - (arg2[8])));
- x10 = ((x1 & UINT64_C(0x3ffffffffffffff)) + (x9 >> 57));
- x11 = ((fiat_secp521r1_uint1)(x10 >> 58) +
- (x2 & UINT64_C(0x3ffffffffffffff)));
- x12 = (x10 & UINT64_C(0x3ffffffffffffff));
- x13 = (x11 & UINT64_C(0x3ffffffffffffff));
- x14 = ((fiat_secp521r1_uint1)(x11 >> 58) +
- (x3 & UINT64_C(0x3ffffffffffffff)));
- x15 = (x4 & UINT64_C(0x3ffffffffffffff));
- x16 = (x5 & UINT64_C(0x3ffffffffffffff));
- x17 = (x6 & UINT64_C(0x3ffffffffffffff));
- x18 = (x7 & UINT64_C(0x3ffffffffffffff));
- x19 = (x8 & UINT64_C(0x3ffffffffffffff));
- x20 = (x9 & UINT64_C(0x1ffffffffffffff));
- out1[0] = x12;
- out1[1] = x13;
- out1[2] = x14;
- out1[3] = x15;
- out1[4] = x16;
- out1[5] = x17;
- out1[6] = x18;
- out1[7] = x19;
- out1[8] = x20;
-}
-
-/*
- * The function fiat_secp521r1_carry_opp negates a field element.
- *
- * Postconditions:
- * eval out1 mod m = -eval arg1 mod m
- *
- */
-static void
-fiat_secp521r1_carry_opp(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1)
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- uint64_t x17;
- uint64_t x18;
- uint64_t x19;
- uint64_t x20;
- x1 = (UINT64_C(0x7fffffffffffffe) - (arg1[0]));
- x2 = ((fiat_secp521r1_uint1)(x1 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[1])));
- x3 = ((fiat_secp521r1_uint1)(x2 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[2])));
- x4 = ((fiat_secp521r1_uint1)(x3 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[3])));
- x5 = ((fiat_secp521r1_uint1)(x4 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[4])));
- x6 = ((fiat_secp521r1_uint1)(x5 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[5])));
- x7 = ((fiat_secp521r1_uint1)(x6 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[6])));
- x8 = ((fiat_secp521r1_uint1)(x7 >> 58) +
- (UINT64_C(0x7fffffffffffffe) - (arg1[7])));
- x9 = ((fiat_secp521r1_uint1)(x8 >> 58) +
- (UINT64_C(0x3fffffffffffffe) - (arg1[8])));
- x10 = ((x1 & UINT64_C(0x3ffffffffffffff)) +
- (uint64_t)(fiat_secp521r1_uint1)(x9 >> 57));
- x11 = ((fiat_secp521r1_uint1)(x10 >> 58) +
- (x2 & UINT64_C(0x3ffffffffffffff)));
- x12 = (x10 & UINT64_C(0x3ffffffffffffff));
- x13 = (x11 & UINT64_C(0x3ffffffffffffff));
- x14 = ((fiat_secp521r1_uint1)(x11 >> 58) +
- (x3 & UINT64_C(0x3ffffffffffffff)));
- x15 = (x4 & UINT64_C(0x3ffffffffffffff));
- x16 = (x5 & UINT64_C(0x3ffffffffffffff));
- x17 = (x6 & UINT64_C(0x3ffffffffffffff));
- x18 = (x7 & UINT64_C(0x3ffffffffffffff));
- x19 = (x8 & UINT64_C(0x3ffffffffffffff));
- x20 = (x9 & UINT64_C(0x1ffffffffffffff));
- out1[0] = x12;
- out1[1] = x13;
- out1[2] = x14;
- out1[3] = x15;
- out1[4] = x16;
- out1[5] = x17;
- out1[6] = x18;
- out1[7] = x19;
- out1[8] = x20;
-}
-
-/*
- * The function fiat_secp521r1_selectznz is a multi-limb conditional select.
- *
- * Postconditions:
- * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
- * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
- * Output Bounds:
- * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
- */
-static void
-fiat_secp521r1_selectznz(uint64_t out1[9],
- fiat_secp521r1_uint1 arg1,
- const uint64_t arg2[9],
- const uint64_t arg3[9])
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- fiat_secp521r1_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0]));
- fiat_secp521r1_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1]));
- fiat_secp521r1_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2]));
- fiat_secp521r1_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3]));
- fiat_secp521r1_cmovznz_u64(&x5, arg1, (arg2[4]), (arg3[4]));
- fiat_secp521r1_cmovznz_u64(&x6, arg1, (arg2[5]), (arg3[5]));
- fiat_secp521r1_cmovznz_u64(&x7, arg1, (arg2[6]), (arg3[6]));
- fiat_secp521r1_cmovznz_u64(&x8, arg1, (arg2[7]), (arg3[7]));
- fiat_secp521r1_cmovznz_u64(&x9, arg1, (arg2[8]), (arg3[8]));
- out1[0] = x1;
- out1[1] = x2;
- out1[2] = x3;
- out1[3] = x4;
- out1[4] = x5;
- out1[5] = x6;
- out1[6] = x7;
- out1[7] = x8;
- out1[8] = x9;
-}
-
-/*
- * The function fiat_secp521r1_to_bytes serializes a field element to bytes in little-endian order.
- *
- * Postconditions:
- * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..65]
- *
- * Output Bounds:
- * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
- */
-static void
-fiat_secp521r1_to_bytes(
- uint8_t out1[66], const fiat_secp521r1_tight_field_element arg1)
-{
- uint64_t x1;
- fiat_secp521r1_uint1 x2;
- uint64_t x3;
- fiat_secp521r1_uint1 x4;
- uint64_t x5;
- fiat_secp521r1_uint1 x6;
- uint64_t x7;
- fiat_secp521r1_uint1 x8;
- uint64_t x9;
- fiat_secp521r1_uint1 x10;
- uint64_t x11;
- fiat_secp521r1_uint1 x12;
- uint64_t x13;
- fiat_secp521r1_uint1 x14;
- uint64_t x15;
- fiat_secp521r1_uint1 x16;
- uint64_t x17;
- fiat_secp521r1_uint1 x18;
- uint64_t x19;
- uint64_t x20;
- fiat_secp521r1_uint1 x21;
- uint64_t x22;
- fiat_secp521r1_uint1 x23;
- uint64_t x24;
- fiat_secp521r1_uint1 x25;
- uint64_t x26;
- fiat_secp521r1_uint1 x27;
- uint64_t x28;
- fiat_secp521r1_uint1 x29;
- uint64_t x30;
- fiat_secp521r1_uint1 x31;
- uint64_t x32;
- fiat_secp521r1_uint1 x33;
- uint64_t x34;
- fiat_secp521r1_uint1 x35;
- uint64_t x36;
- fiat_secp521r1_uint1 x37;
- uint64_t x38;
- uint64_t x39;
- uint64_t x40;
- uint64_t x41;
- uint64_t x42;
- uint64_t x43;
- uint8_t x44;
- uint64_t x45;
- uint8_t x46;
- uint64_t x47;
- uint8_t x48;
- uint64_t x49;
- uint8_t x50;
- uint64_t x51;
- uint8_t x52;
- uint64_t x53;
- uint8_t x54;
- uint64_t x55;
- uint8_t x56;
- uint8_t x57;
- uint64_t x58;
- uint8_t x59;
- uint64_t x60;
- uint8_t x61;
- uint64_t x62;
- uint8_t x63;
- uint64_t x64;
- uint8_t x65;
- uint64_t x66;
- uint8_t x67;
- uint64_t x68;
- uint8_t x69;
- uint64_t x70;
- uint8_t x71;
- uint8_t x72;
- uint64_t x73;
- uint8_t x74;
- uint64_t x75;
- uint8_t x76;
- uint64_t x77;
- uint8_t x78;
- uint64_t x79;
- uint8_t x80;
- uint64_t x81;
- uint8_t x82;
- uint64_t x83;
- uint8_t x84;
- uint64_t x85;
- uint8_t x86;
- uint8_t x87;
- uint64_t x88;
- uint8_t x89;
- uint64_t x90;
- uint8_t x91;
- uint64_t x92;
- uint8_t x93;
- uint64_t x94;
- uint8_t x95;
- uint64_t x96;
- uint8_t x97;
- uint64_t x98;
- uint8_t x99;
- uint64_t x100;
- uint8_t x101;
- uint8_t x102;
- uint8_t x103;
- uint64_t x104;
- uint8_t x105;
- uint64_t x106;
- uint8_t x107;
- uint64_t x108;
- uint8_t x109;
- uint64_t x110;
- uint8_t x111;
- uint64_t x112;
- uint8_t x113;
- uint64_t x114;
- uint8_t x115;
- uint8_t x116;
- uint64_t x117;
- uint8_t x118;
- uint64_t x119;
- uint8_t x120;
- uint64_t x121;
- uint8_t x122;
- uint64_t x123;
- uint8_t x124;
- uint64_t x125;
- uint8_t x126;
- uint64_t x127;
- uint8_t x128;
- uint64_t x129;
- uint8_t x130;
- uint8_t x131;
- uint64_t x132;
- uint8_t x133;
- uint64_t x134;
- uint8_t x135;
- uint64_t x136;
- uint8_t x137;
- uint64_t x138;
- uint8_t x139;
- uint64_t x140;
- uint8_t x141;
- uint64_t x142;
- uint8_t x143;
- uint64_t x144;
- uint8_t x145;
- uint8_t x146;
- uint64_t x147;
- uint8_t x148;
- uint64_t x149;
- uint8_t x150;
- uint64_t x151;
- uint8_t x152;
- uint64_t x153;
- uint8_t x154;
- uint64_t x155;
- uint8_t x156;
- uint64_t x157;
- uint8_t x158;
- uint64_t x159;
- uint8_t x160;
- uint8_t x161;
- uint8_t x162;
- uint64_t x163;
- uint8_t x164;
- uint64_t x165;
- uint8_t x166;
- uint64_t x167;
- uint8_t x168;
- uint64_t x169;
- uint8_t x170;
- uint64_t x171;
- uint8_t x172;
- uint64_t x173;
- uint8_t x174;
- fiat_secp521r1_uint1 x175;
- fiat_secp521r1_subborrowx_u58(&x1, &x2, 0x0, (arg1[0]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x3, &x4, x2, (arg1[1]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x5, &x6, x4, (arg1[2]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x7, &x8, x6, (arg1[3]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x9, &x10, x8, (arg1[4]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x11, &x12, x10, (arg1[5]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x13, &x14, x12, (arg1[6]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u58(&x15, &x16, x14, (arg1[7]),
- UINT64_C(0x3ffffffffffffff));
- fiat_secp521r1_subborrowx_u57(&x17, &x18, x16, (arg1[8]),
- UINT64_C(0x1ffffffffffffff));
- fiat_secp521r1_cmovznz_u64(&x19, x18, 0x0, UINT64_C(0xffffffffffffffff));
- fiat_secp521r1_addcarryx_u58(&x20, &x21, 0x0, x1,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x22, &x23, x21, x3,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x24, &x25, x23, x5,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x26, &x27, x25, x7,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x28, &x29, x27, x9,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x30, &x31, x29, x11,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x32, &x33, x31, x13,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u58(&x34, &x35, x33, x15,
- (x19 & UINT64_C(0x3ffffffffffffff)));
- fiat_secp521r1_addcarryx_u57(&x36, &x37, x35, x17,
- (x19 & UINT64_C(0x1ffffffffffffff)));
- x38 = (x34 << 6);
- x39 = (x32 << 4);
- x40 = (x30 << 2);
- x41 = (x26 << 6);
- x42 = (x24 << 4);
- x43 = (x22 << 2);
- x44 = (uint8_t)(x20 & UINT8_C(0xff));
- x45 = (x20 >> 8);
- x46 = (uint8_t)(x45 & UINT8_C(0xff));
- x47 = (x45 >> 8);
- x48 = (uint8_t)(x47 & UINT8_C(0xff));
- x49 = (x47 >> 8);
- x50 = (uint8_t)(x49 & UINT8_C(0xff));
- x51 = (x49 >> 8);
- x52 = (uint8_t)(x51 & UINT8_C(0xff));
- x53 = (x51 >> 8);
- x54 = (uint8_t)(x53 & UINT8_C(0xff));
- x55 = (x53 >> 8);
- x56 = (uint8_t)(x55 & UINT8_C(0xff));
- x57 = (uint8_t)(x55 >> 8);
- x58 = (x43 + (uint64_t)x57);
- x59 = (uint8_t)(x58 & UINT8_C(0xff));
- x60 = (x58 >> 8);
- x61 = (uint8_t)(x60 & UINT8_C(0xff));
- x62 = (x60 >> 8);
- x63 = (uint8_t)(x62 & UINT8_C(0xff));
- x64 = (x62 >> 8);
- x65 = (uint8_t)(x64 & UINT8_C(0xff));
- x66 = (x64 >> 8);
- x67 = (uint8_t)(x66 & UINT8_C(0xff));
- x68 = (x66 >> 8);
- x69 = (uint8_t)(x68 & UINT8_C(0xff));
- x70 = (x68 >> 8);
- x71 = (uint8_t)(x70 & UINT8_C(0xff));
- x72 = (uint8_t)(x70 >> 8);
- x73 = (x42 + (uint64_t)x72);
- x74 = (uint8_t)(x73 & UINT8_C(0xff));
- x75 = (x73 >> 8);
- x76 = (uint8_t)(x75 & UINT8_C(0xff));
- x77 = (x75 >> 8);
- x78 = (uint8_t)(x77 & UINT8_C(0xff));
- x79 = (x77 >> 8);
- x80 = (uint8_t)(x79 & UINT8_C(0xff));
- x81 = (x79 >> 8);
- x82 = (uint8_t)(x81 & UINT8_C(0xff));
- x83 = (x81 >> 8);
- x84 = (uint8_t)(x83 & UINT8_C(0xff));
- x85 = (x83 >> 8);
- x86 = (uint8_t)(x85 & UINT8_C(0xff));
- x87 = (uint8_t)(x85 >> 8);
- x88 = (x41 + (uint64_t)x87);
- x89 = (uint8_t)(x88 & UINT8_C(0xff));
- x90 = (x88 >> 8);
- x91 = (uint8_t)(x90 & UINT8_C(0xff));
- x92 = (x90 >> 8);
- x93 = (uint8_t)(x92 & UINT8_C(0xff));
- x94 = (x92 >> 8);
- x95 = (uint8_t)(x94 & UINT8_C(0xff));
- x96 = (x94 >> 8);
- x97 = (uint8_t)(x96 & UINT8_C(0xff));
- x98 = (x96 >> 8);
- x99 = (uint8_t)(x98 & UINT8_C(0xff));
- x100 = (x98 >> 8);
- x101 = (uint8_t)(x100 & UINT8_C(0xff));
- x102 = (uint8_t)(x100 >> 8);
- x103 = (uint8_t)(x28 & UINT8_C(0xff));
- x104 = (x28 >> 8);
- x105 = (uint8_t)(x104 & UINT8_C(0xff));
- x106 = (x104 >> 8);
- x107 = (uint8_t)(x106 & UINT8_C(0xff));
- x108 = (x106 >> 8);
- x109 = (uint8_t)(x108 & UINT8_C(0xff));
- x110 = (x108 >> 8);
- x111 = (uint8_t)(x110 & UINT8_C(0xff));
- x112 = (x110 >> 8);
- x113 = (uint8_t)(x112 & UINT8_C(0xff));
- x114 = (x112 >> 8);
- x115 = (uint8_t)(x114 & UINT8_C(0xff));
- x116 = (uint8_t)(x114 >> 8);
- x117 = (x40 + (uint64_t)x116);
- x118 = (uint8_t)(x117 & UINT8_C(0xff));
- x119 = (x117 >> 8);
- x120 = (uint8_t)(x119 & UINT8_C(0xff));
- x121 = (x119 >> 8);
- x122 = (uint8_t)(x121 & UINT8_C(0xff));
- x123 = (x121 >> 8);
- x124 = (uint8_t)(x123 & UINT8_C(0xff));
- x125 = (x123 >> 8);
- x126 = (uint8_t)(x125 & UINT8_C(0xff));
- x127 = (x125 >> 8);
- x128 = (uint8_t)(x127 & UINT8_C(0xff));
- x129 = (x127 >> 8);
- x130 = (uint8_t)(x129 & UINT8_C(0xff));
- x131 = (uint8_t)(x129 >> 8);
- x132 = (x39 + (uint64_t)x131);
- x133 = (uint8_t)(x132 & UINT8_C(0xff));
- x134 = (x132 >> 8);
- x135 = (uint8_t)(x134 & UINT8_C(0xff));
- x136 = (x134 >> 8);
- x137 = (uint8_t)(x136 & UINT8_C(0xff));
- x138 = (x136 >> 8);
- x139 = (uint8_t)(x138 & UINT8_C(0xff));
- x140 = (x138 >> 8);
- x141 = (uint8_t)(x140 & UINT8_C(0xff));
- x142 = (x140 >> 8);
- x143 = (uint8_t)(x142 & UINT8_C(0xff));
- x144 = (x142 >> 8);
- x145 = (uint8_t)(x144 & UINT8_C(0xff));
- x146 = (uint8_t)(x144 >> 8);
- x147 = (x38 + (uint64_t)x146);
- x148 = (uint8_t)(x147 & UINT8_C(0xff));
- x149 = (x147 >> 8);
- x150 = (uint8_t)(x149 & UINT8_C(0xff));
- x151 = (x149 >> 8);
- x152 = (uint8_t)(x151 & UINT8_C(0xff));
- x153 = (x151 >> 8);
- x154 = (uint8_t)(x153 & UINT8_C(0xff));
- x155 = (x153 >> 8);
- x156 = (uint8_t)(x155 & UINT8_C(0xff));
- x157 = (x155 >> 8);
- x158 = (uint8_t)(x157 & UINT8_C(0xff));
- x159 = (x157 >> 8);
- x160 = (uint8_t)(x159 & UINT8_C(0xff));
- x161 = (uint8_t)(x159 >> 8);
- x162 = (uint8_t)(x36 & UINT8_C(0xff));
- x163 = (x36 >> 8);
- x164 = (uint8_t)(x163 & UINT8_C(0xff));
- x165 = (x163 >> 8);
- x166 = (uint8_t)(x165 & UINT8_C(0xff));
- x167 = (x165 >> 8);
- x168 = (uint8_t)(x167 & UINT8_C(0xff));
- x169 = (x167 >> 8);
- x170 = (uint8_t)(x169 & UINT8_C(0xff));
- x171 = (x169 >> 8);
- x172 = (uint8_t)(x171 & UINT8_C(0xff));
- x173 = (x171 >> 8);
- x174 = (uint8_t)(x173 & UINT8_C(0xff));
- x175 = (fiat_secp521r1_uint1)(x173 >> 8);
- out1[0] = x44;
- out1[1] = x46;
- out1[2] = x48;
- out1[3] = x50;
- out1[4] = x52;
- out1[5] = x54;
- out1[6] = x56;
- out1[7] = x59;
- out1[8] = x61;
- out1[9] = x63;
- out1[10] = x65;
- out1[11] = x67;
- out1[12] = x69;
- out1[13] = x71;
- out1[14] = x74;
- out1[15] = x76;
- out1[16] = x78;
- out1[17] = x80;
- out1[18] = x82;
- out1[19] = x84;
- out1[20] = x86;
- out1[21] = x89;
- out1[22] = x91;
- out1[23] = x93;
- out1[24] = x95;
- out1[25] = x97;
- out1[26] = x99;
- out1[27] = x101;
- out1[28] = x102;
- out1[29] = x103;
- out1[30] = x105;
- out1[31] = x107;
- out1[32] = x109;
- out1[33] = x111;
- out1[34] = x113;
- out1[35] = x115;
- out1[36] = x118;
- out1[37] = x120;
- out1[38] = x122;
- out1[39] = x124;
- out1[40] = x126;
- out1[41] = x128;
- out1[42] = x130;
- out1[43] = x133;
- out1[44] = x135;
- out1[45] = x137;
- out1[46] = x139;
- out1[47] = x141;
- out1[48] = x143;
- out1[49] = x145;
- out1[50] = x148;
- out1[51] = x150;
- out1[52] = x152;
- out1[53] = x154;
- out1[54] = x156;
- out1[55] = x158;
- out1[56] = x160;
- out1[57] = x161;
- out1[58] = x162;
- out1[59] = x164;
- out1[60] = x166;
- out1[61] = x168;
- out1[62] = x170;
- out1[63] = x172;
- out1[64] = x174;
- out1[65] = x175;
-}
-
-/*
- * The function fiat_secp521r1_from_bytes deserializes a field element from bytes in little-endian order.
- *
- * Postconditions:
- * eval out1 mod m = bytes_eval arg1 mod m
- *
- * Input Bounds:
- * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
- */
-static void
-fiat_secp521r1_from_bytes(fiat_secp521r1_tight_field_element out1,
- const uint8_t arg1[66])
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint8_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- uint64_t x17;
- uint64_t x18;
- uint64_t x19;
- uint64_t x20;
- uint64_t x21;
- uint64_t x22;
- uint64_t x23;
- uint64_t x24;
- uint64_t x25;
- uint64_t x26;
- uint64_t x27;
- uint64_t x28;
- uint64_t x29;
- uint64_t x30;
- uint64_t x31;
- uint64_t x32;
- uint64_t x33;
- uint64_t x34;
- uint64_t x35;
- uint64_t x36;
- uint8_t x37;
- uint64_t x38;
- uint64_t x39;
- uint64_t x40;
- uint64_t x41;
- uint64_t x42;
- uint64_t x43;
- uint64_t x44;
- uint64_t x45;
- uint64_t x46;
- uint64_t x47;
- uint64_t x48;
- uint64_t x49;
- uint64_t x50;
- uint64_t x51;
- uint64_t x52;
- uint64_t x53;
- uint64_t x54;
- uint64_t x55;
- uint64_t x56;
- uint64_t x57;
- uint64_t x58;
- uint64_t x59;
- uint64_t x60;
- uint64_t x61;
- uint64_t x62;
- uint64_t x63;
- uint64_t x64;
- uint64_t x65;
- uint8_t x66;
- uint64_t x67;
- uint64_t x68;
- uint64_t x69;
- uint64_t x70;
- uint64_t x71;
- uint64_t x72;
- uint64_t x73;
- uint64_t x74;
- uint8_t x75;
- uint64_t x76;
- uint64_t x77;
- uint64_t x78;
- uint64_t x79;
- uint64_t x80;
- uint64_t x81;
- uint64_t x82;
- uint64_t x83;
- uint8_t x84;
- uint64_t x85;
- uint64_t x86;
- uint64_t x87;
- uint64_t x88;
- uint64_t x89;
- uint64_t x90;
- uint64_t x91;
- uint64_t x92;
- uint8_t x93;
- uint64_t x94;
- uint64_t x95;
- uint64_t x96;
- uint64_t x97;
- uint64_t x98;
- uint64_t x99;
- uint64_t x100;
- uint64_t x101;
- uint64_t x102;
- uint64_t x103;
- uint64_t x104;
- uint64_t x105;
- uint64_t x106;
- uint64_t x107;
- uint64_t x108;
- uint8_t x109;
- uint64_t x110;
- uint64_t x111;
- uint64_t x112;
- uint64_t x113;
- uint64_t x114;
- uint64_t x115;
- uint64_t x116;
- uint64_t x117;
- uint8_t x118;
- uint64_t x119;
- uint64_t x120;
- uint64_t x121;
- uint64_t x122;
- uint64_t x123;
- uint64_t x124;
- uint64_t x125;
- uint64_t x126;
- uint8_t x127;
- uint64_t x128;
- uint64_t x129;
- uint64_t x130;
- uint64_t x131;
- uint64_t x132;
- uint64_t x133;
- uint64_t x134;
- uint64_t x135;
- uint64_t x136;
- uint64_t x137;
- uint64_t x138;
- uint64_t x139;
- uint64_t x140;
- uint64_t x141;
- x1 = ((uint64_t)(fiat_secp521r1_uint1)(arg1[65]) << 56);
- x2 = ((uint64_t)(arg1[64]) << 48);
- x3 = ((uint64_t)(arg1[63]) << 40);
- x4 = ((uint64_t)(arg1[62]) << 32);
- x5 = ((uint64_t)(arg1[61]) << 24);
- x6 = ((uint64_t)(arg1[60]) << 16);
- x7 = ((uint64_t)(arg1[59]) << 8);
- x8 = (arg1[58]);
- x9 = ((uint64_t)(arg1[57]) << 50);
- x10 = ((uint64_t)(arg1[56]) << 42);
- x11 = ((uint64_t)(arg1[55]) << 34);
- x12 = ((uint64_t)(arg1[54]) << 26);
- x13 = ((uint64_t)(arg1[53]) << 18);
- x14 = ((uint64_t)(arg1[52]) << 10);
- x15 = ((uint64_t)(arg1[51]) << 2);
- x16 = ((uint64_t)(arg1[50]) << 52);
- x17 = ((uint64_t)(arg1[49]) << 44);
- x18 = ((uint64_t)(arg1[48]) << 36);
- x19 = ((uint64_t)(arg1[47]) << 28);
- x20 = ((uint64_t)(arg1[46]) << 20);
- x21 = ((uint64_t)(arg1[45]) << 12);
- x22 = ((uint64_t)(arg1[44]) << 4);
- x23 = ((uint64_t)(arg1[43]) << 54);
- x24 = ((uint64_t)(arg1[42]) << 46);
- x25 = ((uint64_t)(arg1[41]) << 38);
- x26 = ((uint64_t)(arg1[40]) << 30);
- x27 = ((uint64_t)(arg1[39]) << 22);
- x28 = ((uint64_t)(arg1[38]) << 14);
- x29 = ((uint64_t)(arg1[37]) << 6);
- x30 = ((uint64_t)(arg1[36]) << 56);
- x31 = ((uint64_t)(arg1[35]) << 48);
- x32 = ((uint64_t)(arg1[34]) << 40);
- x33 = ((uint64_t)(arg1[33]) << 32);
- x34 = ((uint64_t)(arg1[32]) << 24);
- x35 = ((uint64_t)(arg1[31]) << 16);
- x36 = ((uint64_t)(arg1[30]) << 8);
- x37 = (arg1[29]);
- x38 = ((uint64_t)(arg1[28]) << 50);
- x39 = ((uint64_t)(arg1[27]) << 42);
- x40 = ((uint64_t)(arg1[26]) << 34);
- x41 = ((uint64_t)(arg1[25]) << 26);
- x42 = ((uint64_t)(arg1[24]) << 18);
- x43 = ((uint64_t)(arg1[23]) << 10);
- x44 = ((uint64_t)(arg1[22]) << 2);
- x45 = ((uint64_t)(arg1[21]) << 52);
- x46 = ((uint64_t)(arg1[20]) << 44);
- x47 = ((uint64_t)(arg1[19]) << 36);
- x48 = ((uint64_t)(arg1[18]) << 28);
- x49 = ((uint64_t)(arg1[17]) << 20);
- x50 = ((uint64_t)(arg1[16]) << 12);
- x51 = ((uint64_t)(arg1[15]) << 4);
- x52 = ((uint64_t)(arg1[14]) << 54);
- x53 = ((uint64_t)(arg1[13]) << 46);
- x54 = ((uint64_t)(arg1[12]) << 38);
- x55 = ((uint64_t)(arg1[11]) << 30);
- x56 = ((uint64_t)(arg1[10]) << 22);
- x57 = ((uint64_t)(arg1[9]) << 14);
- x58 = ((uint64_t)(arg1[8]) << 6);
- x59 = ((uint64_t)(arg1[7]) << 56);
- x60 = ((uint64_t)(arg1[6]) << 48);
- x61 = ((uint64_t)(arg1[5]) << 40);
- x62 = ((uint64_t)(arg1[4]) << 32);
- x63 = ((uint64_t)(arg1[3]) << 24);
- x64 = ((uint64_t)(arg1[2]) << 16);
- x65 = ((uint64_t)(arg1[1]) << 8);
- x66 = (arg1[0]);
- x67 = (x65 + (uint64_t)x66);
- x68 = (x64 + x67);
- x69 = (x63 + x68);
- x70 = (x62 + x69);
- x71 = (x61 + x70);
- x72 = (x60 + x71);
- x73 = (x59 + x72);
- x74 = (x73 & UINT64_C(0x3ffffffffffffff));
- x75 = (uint8_t)(x73 >> 58);
- x76 = (x58 + (uint64_t)x75);
- x77 = (x57 + x76);
- x78 = (x56 + x77);
- x79 = (x55 + x78);
- x80 = (x54 + x79);
- x81 = (x53 + x80);
- x82 = (x52 + x81);
- x83 = (x82 & UINT64_C(0x3ffffffffffffff));
- x84 = (uint8_t)(x82 >> 58);
- x85 = (x51 + (uint64_t)x84);
- x86 = (x50 + x85);
- x87 = (x49 + x86);
- x88 = (x48 + x87);
- x89 = (x47 + x88);
- x90 = (x46 + x89);
- x91 = (x45 + x90);
- x92 = (x91 & UINT64_C(0x3ffffffffffffff));
- x93 = (uint8_t)(x91 >> 58);
- x94 = (x44 + (uint64_t)x93);
- x95 = (x43 + x94);
- x96 = (x42 + x95);
- x97 = (x41 + x96);
- x98 = (x40 + x97);
- x99 = (x39 + x98);
- x100 = (x38 + x99);
- x101 = (x36 + (uint64_t)x37);
- x102 = (x35 + x101);
- x103 = (x34 + x102);
- x104 = (x33 + x103);
- x105 = (x32 + x104);
- x106 = (x31 + x105);
- x107 = (x30 + x106);
- x108 = (x107 & UINT64_C(0x3ffffffffffffff));
- x109 = (uint8_t)(x107 >> 58);
- x110 = (x29 + (uint64_t)x109);
- x111 = (x28 + x110);
- x112 = (x27 + x111);
- x113 = (x26 + x112);
- x114 = (x25 + x113);
- x115 = (x24 + x114);
- x116 = (x23 + x115);
- x117 = (x116 & UINT64_C(0x3ffffffffffffff));
- x118 = (uint8_t)(x116 >> 58);
- x119 = (x22 + (uint64_t)x118);
- x120 = (x21 + x119);
- x121 = (x20 + x120);
- x122 = (x19 + x121);
- x123 = (x18 + x122);
- x124 = (x17 + x123);
- x125 = (x16 + x124);
- x126 = (x125 & UINT64_C(0x3ffffffffffffff));
- x127 = (uint8_t)(x125 >> 58);
- x128 = (x15 + (uint64_t)x127);
- x129 = (x14 + x128);
- x130 = (x13 + x129);
- x131 = (x12 + x130);
- x132 = (x11 + x131);
- x133 = (x10 + x132);
- x134 = (x9 + x133);
- x135 = (x7 + (uint64_t)x8);
- x136 = (x6 + x135);
- x137 = (x5 + x136);
- x138 = (x4 + x137);
- x139 = (x3 + x138);
- x140 = (x2 + x139);
- x141 = (x1 + x140);
- out1[0] = x74;
- out1[1] = x83;
- out1[2] = x92;
- out1[3] = x100;
- out1[4] = x108;
- out1[5] = x117;
- out1[6] = x126;
- out1[7] = x134;
- out1[8] = x141;
-}
-
-/* END verbatim fiat code */
-
-/* curve-related constants */
-
-static const limb_t const_one[9] = {
- UINT64_C(0x0000000000000001), UINT64_C(0x0000000000000000),
- UINT64_C(0x0000000000000000), UINT64_C(0x0000000000000000),
- UINT64_C(0x0000000000000000), UINT64_C(0x0000000000000000),
- UINT64_C(0x0000000000000000), UINT64_C(0x0000000000000000),
- UINT64_C(0x0000000000000000)
-};
-
-static const limb_t const_b[9] = {
- UINT64_C(0x03451FD46B503F00), UINT64_C(0x00F7E20F4B0D3C7B),
- UINT64_C(0x000BD3BB1BF07357), UINT64_C(0x0147B1FA4DEC594B),
- UINT64_C(0x018EF109E1561939), UINT64_C(0x026CC57CEE2D2264),
- UINT64_C(0x00540EEA2DA725B9), UINT64_C(0x02687E4A688682DA),
- UINT64_C(0x0051953EB9618E1C)
-};
-
-/* LUT for scalar multiplication by comb interleaving */
-static const pt_aff_t lut_cmb[13][16] = {
- {
- { { UINT64_C(0x017E7E31C2E5BD66), UINT64_C(0x022CF0615A90A6FE),
- UINT64_C(0x00127A2FFA8DE334), UINT64_C(0x01DFBF9D64A3F877),
- UINT64_C(0x006B4D3DBAA14B5E), UINT64_C(0x014FED487E0A2BD8),
- UINT64_C(0x015B4429C6481390), UINT64_C(0x03A73678FB2D988E),
- UINT64_C(0x00C6858E06B70404) },
- { UINT64_C(0x00BE94769FD16650), UINT64_C(0x031C21A89CB09022),
- UINT64_C(0x039013FAD0761353), UINT64_C(0x02657BD099031542),
- UINT64_C(0x03273E662C97EE72), UINT64_C(0x01E6D11A05EBEF45),
- UINT64_C(0x03D1BD998F544495), UINT64_C(0x03001172297ED0B1),
- UINT64_C(0x011839296A789A3B) } },
- { { UINT64_C(0x01919D2EDE37AD7D), UINT64_C(0x0124218B0CBA8169),
- UINT64_C(0x03D16B59FE21BAEB), UINT64_C(0x0128E920C814769A),
- UINT64_C(0x012D7A8DD1AD3F16), UINT64_C(0x008F66AE796B5E84),
- UINT64_C(0x0159479B52A6E5B1), UINT64_C(0x0065776475A992D6),
- UINT64_C(0x01A73D352443DE29) },
- { UINT64_C(0x03588CA1EE86C0E5), UINT64_C(0x01726F24E9641097),
- UINT64_C(0x00ED1DEC3C70CF10), UINT64_C(0x033E3715D6C0B56B),
- UINT64_C(0x03A355CEEC2E2DD4), UINT64_C(0x02A740C5F4BE2AC7),
- UINT64_C(0x03814F2F1557FA82), UINT64_C(0x0377665E7E1B1B2A),
- UINT64_C(0x013E9B03B97DFA62) } },
- { { UINT64_C(0x01AB5096EC8F3078), UINT64_C(0x01F879B624C5CE35),
- UINT64_C(0x03EAF137E79A329D), UINT64_C(0x01B578C0508DC44B),
- UINT64_C(0x00F177ACE4383C0C), UINT64_C(0x014FC34933C0F6AE),
- UINT64_C(0x00EB0BF7A596EFDB), UINT64_C(0x00CB1CF6F0CE4701),
- UINT64_C(0x00652BF3C52927A4) },
- { UINT64_C(0x033CC3E8DEB090CB), UINT64_C(0x0001C95CD53DFE05),
- UINT64_C(0x000211CF5FF79D1F), UINT64_C(0x03241CB3CDD0C455),
- UINT64_C(0x01A0347087BB6897), UINT64_C(0x01CB80147B7605F2),
- UINT64_C(0x00112911CD8FE8E8), UINT64_C(0x035BB228ADCC452A),
- UINT64_C(0x015BE6EF1BDD6601) } },
- { { UINT64_C(0x01CEAD882816ECD4), UINT64_C(0x014FD43F70986680),
- UINT64_C(0x01F30DCE3BBC46F9), UINT64_C(0x002AFF1A6363269B),
- UINT64_C(0x02F7114C5D8C308D), UINT64_C(0x01520C8A3C0634B0),
- UINT64_C(0x0073A0C5F22E0E8F), UINT64_C(0x018D1BBAD97F682C),
- UINT64_C(0x0056D5D1D99D5B7F) },
- { UINT64_C(0x006B8BC90525251B), UINT64_C(0x019C4A9777BF1ED7),
- UINT64_C(0x0234591CE1A5F9E7), UINT64_C(0x024F37B278AE548E),
- UINT64_C(0x0226CBDE556BD0F2), UINT64_C(0x02093C375C76F662),
- UINT64_C(0x0168478B5C582D02), UINT64_C(0x0284434760C5E8E7),
- UINT64_C(0x003D2D1B7D9BAAA2) } },
- { { UINT64_C(0x0345627967CBE207), UINT64_C(0x002EAF61734A1987),
- UINT64_C(0x016DF725A318F4F5), UINT64_C(0x00E584D368D7CF15),
- UINT64_C(0x01B8C6B6657429E1), UINT64_C(0x0221D1A64B12AC51),
- UINT64_C(0x016D488ED34541B9), UINT64_C(0x00609A8BD6FC55C5),
- UINT64_C(0x01585389E359E1E2) },
- { UINT64_C(0x02A0EA86B9AD2A4E), UINT64_C(0x030ABA4A2203CD0E),
- UINT64_C(0x02ECF4ABFD87D736), UINT64_C(0x01D5815EB2103FD5),
- UINT64_C(0x023DDB446E0D69E5), UINT64_C(0x03873AEDB2096E89),
- UINT64_C(0x02E938E3088A654E), UINT64_C(0x03CE7C2D5555E89E),
- UINT64_C(0x002A2E618C9A8AED) } },
- { { UINT64_C(0x00C0E02DDA0CDB9A), UINT64_C(0x030093E9326A40BB),
- UINT64_C(0x01AEBE3191085015), UINT64_C(0x00CC998F686F466C),
- UINT64_C(0x00F2991652F3DBC5), UINT64_C(0x0305E12550FBCB15),
- UINT64_C(0x00315CFED5DC7ED7), UINT64_C(0x03FD51BC68E55CED),
- UINT64_C(0x008A75841259FDED) },
- { UINT64_C(0x00874F92CE48C808), UINT64_C(0x032038FD2066D756),
- UINT64_C(0x0331914A95336DCA), UINT64_C(0x003A2D0A92ACE248),
- UINT64_C(0x00E0B9B82B1BC8A9), UINT64_C(0x002F4124FB4BA575),
- UINT64_C(0x00FB2293ADD56621), UINT64_C(0x00A6127432A1DC15),
- UINT64_C(0x0096FB303FCBBA21) } },
- { { UINT64_C(0x0087848D32FBCDA7), UINT64_C(0x030EC02ACE3BFE06),
- UINT64_C(0x025E79AB88EE94BE), UINT64_C(0x002380F265A8D542),
- UINT64_C(0x02AF5B866132C459), UINT64_C(0x006D308E13BB74AF),
- UINT64_C(0x024861A93F736CDE), UINT64_C(0x02B6735E1974AD24),
- UINT64_C(0x007E3E98F984C396) },
- { UINT64_C(0x011A01FB022A71C9), UINT64_C(0x027AABE445FA7DCA),
- UINT64_C(0x01D351CBFBBC3619), UINT64_C(0x0160E2F1D8FC9B7F),
- UINT64_C(0x025C1E212AC1BD5D), UINT64_C(0x03550871A71E99EB),
- UINT64_C(0x02D5A08CED50A386), UINT64_C(0x03B6A468649B6A8F),
- UINT64_C(0x0108EE58EB6D781F) } },
- { { UINT64_C(0x01AFE337BCB8DB55), UINT64_C(0x0365A6078FE4AF7A),
- UINT64_C(0x03D1C8FC0331D9B8), UINT64_C(0x009F6F403FF9E1D6),
- UINT64_C(0x02DF128E11B91CCE), UINT64_C(0x01028214B5A5ED4C),
- UINT64_C(0x014300FB8FBCC30B), UINT64_C(0x0197C105563F151B),
- UINT64_C(0x006B6AD89ABCB924) },
- { UINT64_C(0x02343480A1475465), UINT64_C(0x036433111AAF7655),
- UINT64_C(0x022232C96C99246F), UINT64_C(0x0322651C2A008523),
- UINT64_C(0x0197485ED57E9062), UINT64_C(0x02B4832E92D8841A),
- UINT64_C(0x02DBF63DF0496A9B), UINT64_C(0x0075A9F399348CCF),
- UINT64_C(0x01B468DA27157139) } },
- { { UINT64_C(0x02F817A853110AE0), UINT64_C(0x00C10ABC3469041D),
- UINT64_C(0x0399B5681380FF8C), UINT64_C(0x0399D3F80A1F7D39),
- UINT64_C(0x0269250858760A69), UINT64_C(0x03E8ACED3599493C),
- UINT64_C(0x023906A99EE9E269), UINT64_C(0x03684E82E1D19164),
- UINT64_C(0x01B00DDB707F130E) },
- { UINT64_C(0x01B9CB7C70E64647), UINT64_C(0x00156530ADD57D4D),
- UINT64_C(0x0357F16ADF420E69), UINT64_C(0x013BDB742FC34BD9),
- UINT64_C(0x0322A1323DF9DA56), UINT64_C(0x01A6442A635A2B0A),
- UINT64_C(0x01DD106B799534CF), UINT64_C(0x01DB6F04475392BB),
- UINT64_C(0x0085683F1D7DB165) } },
- { { UINT64_C(0x00FF0B2418D6A19B), UINT64_C(0x03D0C79C96EF791E),
- UINT64_C(0x0157D7A45970DFEC), UINT64_C(0x0258D899A59E48C9),
- UINT64_C(0x033790E7F1FA3B30), UINT64_C(0x0177D51FBFFC2B36),
- UINT64_C(0x021A07245B77E075), UINT64_C(0x00D21F03E5230B56),
- UINT64_C(0x00998DCCE486419C) },
- { UINT64_C(0x01091A695BFD0575), UINT64_C(0x013627AA7EFF912A),
- UINT64_C(0x039991631C377F5A), UINT64_C(0x00FFCBAE33E6C3B0),
- UINT64_C(0x036545772773AD96), UINT64_C(0x02DEF3D2B3143BB8),
- UINT64_C(0x01B245D67D28AEE2), UINT64_C(0x03B5730E50925D4D),
- UINT64_C(0x0137D5DA0626A021) } },
- { { UINT64_C(0x02EF399693C8C9ED), UINT64_C(0x032480E4E91B4B50),
- UINT64_C(0x03EAED827D75B37A), UINT64_C(0x02B9358A8C276525),
- UINT64_C(0x019C467FA946257E), UINT64_C(0x03B457A606548F9D),
- UINT64_C(0x02D3B10268BB98C2), UINT64_C(0x034BECF321542167),
- UINT64_C(0x01A1CBB2C11A742B) },
- { UINT64_C(0x020BC43C9CBA4DF5), UINT64_C(0x02C3C5D92732D879),
- UINT64_C(0x03A372C63EEC57C9), UINT64_C(0x014F6920CA56FAD0),
- UINT64_C(0x036BAFA7F7DF741A), UINT64_C(0x01464F9B06028A5B),
- UINT64_C(0x000CE62E83C0059C), UINT64_C(0x00F520B04B69F179),
- UINT64_C(0x011A209D7D4F8EEB) } },
- { { UINT64_C(0x01C6A5ECE2AF535C), UINT64_C(0x007C6B09AB9601A8),
- UINT64_C(0x038E9A5EC53E207E), UINT64_C(0x03F26BD6C2BFA78F),
- UINT64_C(0x010CDD45101F6F83), UINT64_C(0x0217ECA0924348D3),
- UINT64_C(0x0147B8EEE7A39BA7), UINT64_C(0x024DDB6C72B3B17D),
- UINT64_C(0x01AE0B275D729015) },
- { UINT64_C(0x0015C3536FA0D000), UINT64_C(0x02D1142A348E15B6),
- UINT64_C(0x0327BB07DD0C2213), UINT64_C(0x0187BA5FF3D0F09E),
- UINT64_C(0x0044C2DC0E108433), UINT64_C(0x0034160CAD0C591E),
- UINT64_C(0x028471C7D759FF89), UINT64_C(0x00E019A28A163F01),
- UINT64_C(0x00F2C97A825E5385) } },
- { { UINT64_C(0x038C2460BF70ACE0), UINT64_C(0x0383AC70974FEC4F),
- UINT64_C(0x03E2AA648FF27E41), UINT64_C(0x0245F0DBB9355BA1),
- UINT64_C(0x005499994AA91856), UINT64_C(0x006C41EC471DCB23),
- UINT64_C(0x01FF9D2007310265), UINT64_C(0x0060D28D61D29BD7),
- UINT64_C(0x0154E84C6D5C5A9A) },
- { UINT64_C(0x0325BCE404C78230), UINT64_C(0x038A9519CB9ADB50),
- UINT64_C(0x0370A6A5972F5EED), UINT64_C(0x00D5CBEF06834788),
- UINT64_C(0x00151666A6DEE354), UINT64_C(0x0008A831FD9B0A22),
- UINT64_C(0x0360D3F15A923EB0), UINT64_C(0x011CEB88A8A3E02E),
- UINT64_C(0x00CD0FDCE9171910) } },
- { { UINT64_C(0x017643017002D68B), UINT64_C(0x01581124BB115A0D),
- UINT64_C(0x03AEDA0D3163CB21), UINT64_C(0x00F69C67520D44D4),
- UINT64_C(0x03E135854D80B212), UINT64_C(0x0393E18B0CFCD461),
- UINT64_C(0x01E646F8739535D0), UINT64_C(0x02DA9D8A9353AE22),
- UINT64_C(0x0160373EDF8218F9) },
- { UINT64_C(0x03E6AECA5D90B740), UINT64_C(0x03FF9C27516B2CFC),
- UINT64_C(0x034F4A8BB572E463), UINT64_C(0x007B64BAF1504EE1),
- UINT64_C(0x021A1B22011EFA49), UINT64_C(0x03D4B0EED295BDE3),
- UINT64_C(0x006A3FA9FD193C5C), UINT64_C(0x038717960A1006B0),
- UINT64_C(0x00F1597050014DCF) } },
- { { UINT64_C(0x003927618EDA25DC), UINT64_C(0x0361657547DB658B),
- UINT64_C(0x02B8E847FFB9EF33), UINT64_C(0x001A1DB5CA45000E),
- UINT64_C(0x037664A1305CA9BC), UINT64_C(0x0218997B0A2FBCE3),
- UINT64_C(0x01A085FF9F45131E), UINT64_C(0x00A1F6CF07EFF2D9),
- UINT64_C(0x0174C644D6C94B68) },
- { UINT64_C(0x007BBBC4821A0C30), UINT64_C(0x02649F09BAEFEF46),
- UINT64_C(0x0332D706D303F067), UINT64_C(0x0254B383642D4309),
- UINT64_C(0x0395AD34B7BE0E21), UINT64_C(0x02D9107F2D73D7AD),
- UINT64_C(0x037B7820233EF8FC), UINT64_C(0x0279A016B3256D06),
- UINT64_C(0x011AF3A7C2F87F41) } },
- { { UINT64_C(0x0257D0E0C16A8803), UINT64_C(0x03ED792238920488),
- UINT64_C(0x001AC09CD6B220DC), UINT64_C(0x02A4132750A7F053),
- UINT64_C(0x00A5E7726CD65543), UINT64_C(0x01F0A9985C982A0F),
- UINT64_C(0x0307B7DB57458965), UINT64_C(0x01985401A96336DC),
- UINT64_C(0x00D8E9920CF30F0C) },
- { UINT64_C(0x024677C739792D19), UINT64_C(0x02F65F1ED50C62B2),
- UINT64_C(0x0068CAE4CC263AA1), UINT64_C(0x00C913451E404E6A),
- UINT64_C(0x00BED1AA30F76B8C), UINT64_C(0x03C4320182BBEDCB),
- UINT64_C(0x00A30EC8B5406328), UINT64_C(0x00E61F7C2704E885),
- UINT64_C(0x0127B023B5454A66) } },
- },
- {
- { { UINT64_C(0x00E9E114E43C6A8B), UINT64_C(0x027E2C20105A2E23),
- UINT64_C(0x03D5B5FA745094EE), UINT64_C(0x01337080223BD7FF),
- UINT64_C(0x00D8CCA5AD4589D8), UINT64_C(0x0132DCA140336E19),
- UINT64_C(0x0302098FAB8EE167), UINT64_C(0x00625B5791BF1AAD),
- UINT64_C(0x01ECCAEB2EF79CDB) },
- { UINT64_C(0x01886BBC26B04438), UINT64_C(0x004F43B6559C663D),
- UINT64_C(0x035D8CA99B91E616), UINT64_C(0x01354ED06659D27A),
- UINT64_C(0x0054DF4765586194), UINT64_C(0x021052BBF70881C7),
- UINT64_C(0x031C5EA1F6288A8B), UINT64_C(0x018AC1ACD36CBDFF),
- UINT64_C(0x002E5EDF2873FF52) } },
- { { UINT64_C(0x0192DA26804ED5E3), UINT64_C(0x019DEC17F31925DE),
- UINT64_C(0x01585208EBD95AC4), UINT64_C(0x039C6674D066C682),
- UINT64_C(0x000715A11D1C0CFA), UINT64_C(0x032AD56C1F218BD5),
- UINT64_C(0x0310FABD23E934F9), UINT64_C(0x009AF7F574942B50),
- UINT64_C(0x005E0976782CAEF4) },
- { UINT64_C(0x038B0A7A2A7D5B37), UINT64_C(0x0315653FB7DA77BD),
- UINT64_C(0x023F157F76616F31), UINT64_C(0x03C8C103329ACAE7),
- UINT64_C(0x005A72502EE9CFA2), UINT64_C(0x03204345A2A46FC3),
- UINT64_C(0x03666DC71F8A5B63), UINT64_C(0x01671725C07390A9),
- UINT64_C(0x01E82DA80D6C216A) } },
- { { UINT64_C(0x02F28395A29D2024), UINT64_C(0x031A09859C9B6A2D),
- UINT64_C(0x0047073FD20F177A), UINT64_C(0x03D961594C7CA571),
- UINT64_C(0x019555237A9B2EC3), UINT64_C(0x029EFFFB7289E9D9),
- UINT64_C(0x008D541E497546F7), UINT64_C(0x0270E93D46DCEE94),
- UINT64_C(0x00396B23A204BEFD) },
- { UINT64_C(0x024295052DDD93A9), UINT64_C(0x0081670F33C07709),
- UINT64_C(0x00B1D851D4CDFDA9), UINT64_C(0x014DF8329142BB29),
- UINT64_C(0x00CDDB9A15F7FCFB), UINT64_C(0x0225454F3A1F5B86),
- UINT64_C(0x01A46C8B126C191D), UINT64_C(0x03D3D3229D104DF9),
- UINT64_C(0x018B36AD8A91DE12) } },
- { { UINT64_C(0x008FA75A590E92D6), UINT64_C(0x02223AFBB681AD2D),
- UINT64_C(0x000DD9E71FEC0AB1), UINT64_C(0x03B4A988F4ABFEC5),
- UINT64_C(0x02BDD3FD9A8FB4C8), UINT64_C(0x037A5B9AD9171110),
- UINT64_C(0x0225D2934ADB68F2), UINT64_C(0x008BA6F5E067B164),
- UINT64_C(0x014EA0A8B0C5768B) },
- { UINT64_C(0x000AB8407662F537), UINT64_C(0x02F781E22DFF31BF),
- UINT64_C(0x03E22656A1F21F75), UINT64_C(0x01054C62C579B73D),
- UINT64_C(0x0177A8529E6C1116), UINT64_C(0x03211865DCC5D46F),
- UINT64_C(0x012706123E7C2723), UINT64_C(0x0396C31AADED99AB),
- UINT64_C(0x01637E315762AAD0) } },
- { { UINT64_C(0x03847D336B9839DA), UINT64_C(0x02200E98133D266E),
- UINT64_C(0x0039A8261B62D7DC), UINT64_C(0x033295F072A9D5EA),
- UINT64_C(0x000C3FE4DCCB2B2A), UINT64_C(0x03907B7861011A91),
- UINT64_C(0x023BC0EFEDB5EE58), UINT64_C(0x0288D6CD63BC03CD),
- UINT64_C(0x01280E54E8A553CA) },
- { UINT64_C(0x036493BB1C1962CE), UINT64_C(0x0361F9CAD30DAC24),
- UINT64_C(0x023856E058F7248C), UINT64_C(0x01EBC4CE9BBA1951),
- UINT64_C(0x00FE14205169D78D), UINT64_C(0x01237D85837C8C98),
- UINT64_C(0x017C4E2A95E40B90), UINT64_C(0x004E446F2E2C7819),
- UINT64_C(0x0007FA80EDA9F2C8) } },
- { { UINT64_C(0x009A65815D2BF9A7), UINT64_C(0x027CB047E8DF8668),
- UINT64_C(0x0391C32A60456677), UINT64_C(0x01CBC26A69AB3F09),
- UINT64_C(0x0334D4D8DE25229B), UINT64_C(0x0383C0FA69B0DD79),
- UINT64_C(0x01D206CDCC54B9E2), UINT64_C(0x02E51DE738338588),
- UINT64_C(0x006112D5229EA977) },
- { UINT64_C(0x03CE85BEE20C30CB), UINT64_C(0x02FEBC02D12BC9D5),
- UINT64_C(0x02AEDC3A968E7052), UINT64_C(0x02090B846E5AD878),
- UINT64_C(0x00E4B6AEE2DDC2E3), UINT64_C(0x00269BE91139208A),
- UINT64_C(0x02FEA688006D25C9), UINT64_C(0x002F5EFACF2F785D),
- UINT64_C(0x009FE82D05CAC96A) } },
- { { UINT64_C(0x02EE8F69AB2E6D92), UINT64_C(0x0213F64F73B9A354),
- UINT64_C(0x000A9DDA2E925D3C), UINT64_C(0x0192E31297313B4F),
- UINT64_C(0x02B3145C4DD947AF), UINT64_C(0x03401B39394615DA),
- UINT64_C(0x01C98D9DFBE6AE7D), UINT64_C(0x02BB8069EC7A7746),
- UINT64_C(0x00A8BDC9CF002A7B) },
- { UINT64_C(0x00A3BF702EB71C5F), UINT64_C(0x00A25EDAE6446CE2),
- UINT64_C(0x00108D65D5F288B8), UINT64_C(0x02FF972C1494ABED),
- UINT64_C(0x0398342A5B4A102C), UINT64_C(0x00CD83A6E3855FF3),
- UINT64_C(0x02D6848441981C93), UINT64_C(0x0335A209E0E8D9AA),
- UINT64_C(0x01ED6F04D42258A5) } },
- { { UINT64_C(0x01FC3B47C1490429), UINT64_C(0x01B9A21B27B6F4B1),
- UINT64_C(0x0193FF421EE32901), UINT64_C(0x03CC9F551147E445),
- UINT64_C(0x01773B6B14BB7010), UINT64_C(0x005040A2326FD6EA),
- UINT64_C(0x01949206C0BB7211), UINT64_C(0x02643DEA7E3C37CC),
- UINT64_C(0x01725F6694BF623F) },
- { UINT64_C(0x014D9BD8587CA374), UINT64_C(0x020B8D6C1F3C983C),
- UINT64_C(0x0395B0E3A7CCCE2F), UINT64_C(0x0071FCA214298293),
- UINT64_C(0x038CF96F2462B942), UINT64_C(0x00DD1C97E2E6BCA4),
- UINT64_C(0x00DEC4ACF114C9D6), UINT64_C(0x005DCE68C5288587),
- UINT64_C(0x017B1DC591DEA2A9) } },
- { { UINT64_C(0x01A03D95A3ACF0F9), UINT64_C(0x0123031B8850C86B),
- UINT64_C(0x0269AB94408A086E), UINT64_C(0x0181DEF245438334),
- UINT64_C(0x00AB4F62CC0E7BA5), UINT64_C(0x0294A03CC0C2A98D),
- UINT64_C(0x02234FBFCCAA23F6), UINT64_C(0x0304B9AF501D1961),
- UINT64_C(0x0037258E9F9B8667) },
- { UINT64_C(0x0344657939436D81), UINT64_C(0x010709812083B7CE),
- UINT64_C(0x00DBCA5B5A81714D), UINT64_C(0x00396E25D33E3896),
- UINT64_C(0x00C0A65FA9547A23), UINT64_C(0x03F6796EDC3F72D8),
- UINT64_C(0x022AA55EA0053589), UINT64_C(0x031E838C917FDA1B),
- UINT64_C(0x014AF707C515D93F) } },
- { { UINT64_C(0x00E48C0436C8D427), UINT64_C(0x02A85992128BD380),
- UINT64_C(0x03861C4538E26A42), UINT64_C(0x027A6E7784D042DB),
- UINT64_C(0x0129555575E66B0A), UINT64_C(0x017362D6E2713125),
- UINT64_C(0x00A08F82306ED961), UINT64_C(0x007FCDDA0F78CBC0),
- UINT64_C(0x010F4598B67DA097) },
- { UINT64_C(0x03448C05AD400463), UINT64_C(0x03CB26D3975CCFCD),
- UINT64_C(0x0067B9FD99A88F1D), UINT64_C(0x001F257A56DADDC1),
- UINT64_C(0x03AEAFB6384BA84C), UINT64_C(0x0010C9301FE7F887),
- UINT64_C(0x03D65C213A46C68C), UINT64_C(0x029BB4A1F8A5E81E),
- UINT64_C(0x00C1838AFD6E3F39) } },
- { { UINT64_C(0x03CE07505924C15F), UINT64_C(0x0043A08ED31A1B99),
- UINT64_C(0x0339C4C25E8B8B88), UINT64_C(0x0380DFF73DEBF4DA),
- UINT64_C(0x031FBA11E366BE60), UINT64_C(0x001D2B7C0FA8BD42),
- UINT64_C(0x009DE3ACE8B8A24D), UINT64_C(0x02B5F07FB5B5BD4F),
- UINT64_C(0x018247CA534C6F7F) },
- { UINT64_C(0x01E0A02B3DBEEE78), UINT64_C(0x001E200666AB15CD),
- UINT64_C(0x0186BEA684E8C48E), UINT64_C(0x00F3F1894CDB68E0),
- UINT64_C(0x032ECC59DF1BBB85), UINT64_C(0x02D06C53B9B53209),
- UINT64_C(0x004A86739B90C8A8), UINT64_C(0x03AD8A97D98C89BC),
- UINT64_C(0x00F01344204A1E2F) } },
- { { UINT64_C(0x03582A68690F8C80), UINT64_C(0x012E151E3D7485DA),
- UINT64_C(0x02527AD70F6AC0B4), UINT64_C(0x018B935CB107A3CD),
- UINT64_C(0x036AA37D7A7E3625), UINT64_C(0x034CFB229578C67F),
- UINT64_C(0x00A3FBC7740B7E16), UINT64_C(0x03D0C73BF6F5756D),
- UINT64_C(0x009FFA51FEAC33FA) },
- { UINT64_C(0x0208A8D791982847), UINT64_C(0x03EDDBD997642B6C),
- UINT64_C(0x025D551977914C26), UINT64_C(0x02DD352759CA1376),
- UINT64_C(0x00654090371E1000), UINT64_C(0x004AC720BEC03C34),
- UINT64_C(0x03C06BE7F6C95884), UINT64_C(0x01FA475777DF0765),
- UINT64_C(0x00A99275E15E46C7) } },
- { { UINT64_C(0x016A50E0A643409F), UINT64_C(0x0122617180184D38),
- UINT64_C(0x0105E92945AC97AB), UINT64_C(0x01A1B865FE31BAD8),
- UINT64_C(0x033E0DC143E2D46B), UINT64_C(0x03DD157DF58A1946),
- UINT64_C(0x02DF8E8C2EC7FB6D), UINT64_C(0x00E031916AFF1478),
- UINT64_C(0x017A7BE92C9A8A1C) },
- { UINT64_C(0x02063F9B1AF2F29D), UINT64_C(0x0275AF845DF62346),
- UINT64_C(0x010016B05B22BD9F), UINT64_C(0x03772DD9DE8A3F70),
- UINT64_C(0x011B489BE6C04500), UINT64_C(0x0122DEDE177B839E),
- UINT64_C(0x008B9ED1DBF81860), UINT64_C(0x00CDA67D0D8CEDC1),
- UINT64_C(0x01984030C18BF083) } },
- { { UINT64_C(0x02791762137B93A2), UINT64_C(0x01F9DE3C5491E823),
- UINT64_C(0x01E50243877F23E4), UINT64_C(0x0144F0B0081F37BC),
- UINT64_C(0x00D7A781DD6DE5E2), UINT64_C(0x036A5EFE959E26D1),
- UINT64_C(0x03A51922038AEEA2), UINT64_C(0x0054D452C10BD4F0),
- UINT64_C(0x01B8A51151884AEF) },
- { UINT64_C(0x0241D85F77A00331), UINT64_C(0x023528AF19A313C4),
- UINT64_C(0x0176DFC98292A79E), UINT64_C(0x03AADEBB4F7B06B1),
- UINT64_C(0x00DAB141E4CE727F), UINT64_C(0x0388E18953348B42),
- UINT64_C(0x03FD5A751265E468), UINT64_C(0x024673750B3DB1AB),
- UINT64_C(0x00E57DD5F1A23923) } },
- { { UINT64_C(0x019D69A891328CE4), UINT64_C(0x008F01053E7A765C),
- UINT64_C(0x030B5EE16F612292), UINT64_C(0x020A99C1AB590289),
- UINT64_C(0x01D62D438BE82D64), UINT64_C(0x037D8D3250B87A70),
- UINT64_C(0x03ACF90A3316DB71), UINT64_C(0x011F2D638816284F),
- UINT64_C(0x000D63B1CF94E578) },
- { UINT64_C(0x026288694B620A88), UINT64_C(0x01D7EC9688B643F5),
- UINT64_C(0x0329AC344C36F494), UINT64_C(0x01F7C91E725E18A1),
- UINT64_C(0x02FEB98C58EA0341), UINT64_C(0x00A508DDA6BF1EC5),
- UINT64_C(0x00733B2463BD7A85), UINT64_C(0x0384EBC8AB299B36),
- UINT64_C(0x00074909BD45312A) } },
- { { UINT64_C(0x03E08C2C5C95FF29), UINT64_C(0x00C670644C808211),
- UINT64_C(0x012D8021671FE338), UINT64_C(0x039F033363AA44CD),
- UINT64_C(0x0337E7DB83662796), UINT64_C(0x03DDF327E2706223),
- UINT64_C(0x005FBC050700CAFA), UINT64_C(0x020FC3C9D5CBB556),
- UINT64_C(0x0105E1BC0BF33DC4) },
- { UINT64_C(0x03F3D06894519732), UINT64_C(0x029248D001BE65FE),
- UINT64_C(0x011EC77A8F1A11E3), UINT64_C(0x0365A31B2279F38F),
- UINT64_C(0x014E2577747A12CD), UINT64_C(0x0160E01F73DAA243),
- UINT64_C(0x01E3B9CC567EDCCC), UINT64_C(0x03E1B7F6A7B42960),
- UINT64_C(0x01809B863B2F3F5A) } },
- },
- {
- { { UINT64_C(0x0373B24CDED2EB86), UINT64_C(0x02402CCFAA26116F),
- UINT64_C(0x005073857CDB6102), UINT64_C(0x01AE6F89575C7623),
- UINT64_C(0x022FF653B3A939A7), UINT64_C(0x0190B7CB0A3545D4),
- UINT64_C(0x02353B26D8170467), UINT64_C(0x003C64522D17855F),
- UINT64_C(0x01E5D565F776B34F) },
- { UINT64_C(0x025185A2C4B5DE1E), UINT64_C(0x02B3AFFAB7E382B2),
- UINT64_C(0x0194B86479736527), UINT64_C(0x026B4BE5E81594AE),
- UINT64_C(0x01D6960578E25220), UINT64_C(0x00993E60F26C1FF2),
- UINT64_C(0x019B938479BA949D), UINT64_C(0x01FCA32034CAD7A3),
- UINT64_C(0x017759280D580A6A) } },
- { { UINT64_C(0x02346AE90C2CA70B), UINT64_C(0x013757CC55F070F5),
- UINT64_C(0x017E107D86CA7681), UINT64_C(0x005AD490EBA565E0),
- UINT64_C(0x02C9C614514CB60C), UINT64_C(0x03BEAF2AC475AF2B),
- UINT64_C(0x008C591B4CE3CC44), UINT64_C(0x014A9DDFA491CE57),
- UINT64_C(0x001268735793A719) },
- { UINT64_C(0x007F97B31426994D), UINT64_C(0x01A96DF191B418F1),
- UINT64_C(0x027DF055755518F4), UINT64_C(0x025DAAC2254C5D3C),
- UINT64_C(0x0262D34E340FC2C3), UINT64_C(0x01F14824C8F72557),
- UINT64_C(0x02A4819301BACB9F), UINT64_C(0x0268E03E6BEAB510),
- UINT64_C(0x00EA805018D6E199) } },
- { { UINT64_C(0x00FEA5E6ABEE1F7B), UINT64_C(0x00538DB9B2D8E2D4),
- UINT64_C(0x0305BA64218318A0), UINT64_C(0x022BD39A67AA3F20),
- UINT64_C(0x01157632723B17F9), UINT64_C(0x00C8DAAF646E78C9),
- UINT64_C(0x0158EFBD367A27CD), UINT64_C(0x011375E95CB4F12F),
- UINT64_C(0x005E40D5A4D44054) },
- { UINT64_C(0x0297475C1D71A4FA), UINT64_C(0x03C1DABD876A7908),
- UINT64_C(0x0038CB20D99CAE76), UINT64_C(0x03D63A3A005959E9),
- UINT64_C(0x02AF78B93B764B6F), UINT64_C(0x0109A0342CFC2D30),
- UINT64_C(0x01C301BEC294E434), UINT64_C(0x01972384DAD5FD67),
- UINT64_C(0x01C3F5C9DF46F8D3) } },
- { { UINT64_C(0x03C115A0432574BE), UINT64_C(0x01495DBDA1F302E5),
- UINT64_C(0x010568069CC94673), UINT64_C(0x000A2EEAB0E37751),
- UINT64_C(0x033EE9D566902CC4), UINT64_C(0x006B34AFED584340),
- UINT64_C(0x02B50803E9B165A1), UINT64_C(0x03E38D1CBBEC3EC2),
- UINT64_C(0x0023CF19CC14F82C) },
- { UINT64_C(0x01CCAAFE462EC0F0), UINT64_C(0x02E714845D028EE6),
- UINT64_C(0x02DCB47FF5021595), UINT64_C(0x030908AA9B079880),
- UINT64_C(0x00371B5A69854385), UINT64_C(0x0185FE540E9AE9FF),
- UINT64_C(0x02EE86F4F1A83CE4), UINT64_C(0x03AB730574E67F57),
- UINT64_C(0x01F85953DB252C4B) } },
- { { UINT64_C(0x02EC254BFD8CB3CC), UINT64_C(0x01DFEE8DE5F7858B),
- UINT64_C(0x019C8AD2711F9096), UINT64_C(0x00B1E57CC4C26707),
- UINT64_C(0x03511BB53983E402), UINT64_C(0x02A4019CDD626E9F),
- UINT64_C(0x03BA2E0AC5C44D84), UINT64_C(0x00A965FE7663AD49),
- UINT64_C(0x01739420DA2DD7E5) },
- { UINT64_C(0x001E59C7B82FB619), UINT64_C(0x007B29CCEEF8AD83),
- UINT64_C(0x02907C71BFFAE931), UINT64_C(0x003F110EC15CB5CF),
- UINT64_C(0x02A76ECA58531793), UINT64_C(0x02D8D0EB5EA2FA03),
- UINT64_C(0x0302231943B524FC), UINT64_C(0x01EBC24F8F0A0C29),
- UINT64_C(0x019802CBF5F3CE73) } },
- { { UINT64_C(0x01852168BF26ECDA), UINT64_C(0x03BA5FFA1597B73C),
- UINT64_C(0x00E55E47A88BF735), UINT64_C(0x03EF5511C575EFAA),
- UINT64_C(0x03BEAAED274CB2F4), UINT64_C(0x01A2B7AEE5E82012),
- UINT64_C(0x00161524928CEDED), UINT64_C(0x0243FB8CEB1DB1ED),
- UINT64_C(0x00A939AAE7662875) },
- { UINT64_C(0x035FC996431E0BB4), UINT64_C(0x03871F05A029588C),
- UINT64_C(0x024685D44F302D5A), UINT64_C(0x03D65DBBB0A24C64),
- UINT64_C(0x031CCDBD89C13824), UINT64_C(0x03EEC80794841ADF),
- UINT64_C(0x02BDD19433E827DB), UINT64_C(0x025D0DEF338BCA12),
- UINT64_C(0x019DD1E057A3957F) } },
- { { UINT64_C(0x028221686CEBC7BE), UINT64_C(0x00550CAC829C5C56),
- UINT64_C(0x024473DA711003E5), UINT64_C(0x01D2D356A63016BD),
- UINT64_C(0x016B5C937B93F5AA), UINT64_C(0x016BA509AE911631),
- UINT64_C(0x03BB387F2983AA08), UINT64_C(0x0087050F624145D1),
- UINT64_C(0x00430D39E6B578E6) },
- { UINT64_C(0x02E690EFE2E3859D), UINT64_C(0x021D189217E0C7B9),
- UINT64_C(0x03BC89797B1B794C), UINT64_C(0x01D6B16B566AB9D7),
- UINT64_C(0x02935CEB8993E4D1), UINT64_C(0x03C0BF4C7D6967AE),
- UINT64_C(0x00EA7B0862929371), UINT64_C(0x014624F22194B5D9),
- UINT64_C(0x00D68221B3478C47) } },
- { { UINT64_C(0x03BEC558C2EB8133), UINT64_C(0x031106A5F911659D),
- UINT64_C(0x00D07C39AEFB3CBE), UINT64_C(0x02F06E730A651F25),
- UINT64_C(0x0183C527F019A937), UINT64_C(0x0153E778C8608775),
- UINT64_C(0x0214C61DB43A7203), UINT64_C(0x00CD284ED5892F97),
- UINT64_C(0x0198EB083CFD5B2B) },
- { UINT64_C(0x0393B136D6835A15), UINT64_C(0x03ED1013491B6647),
- UINT64_C(0x00702068040A8E55), UINT64_C(0x0136DD3C55BF5BE4),
- UINT64_C(0x03D053D6F8B28F3A), UINT64_C(0x00FAF9585D310B40),
- UINT64_C(0x002690874B88A2A9), UINT64_C(0x02651384F1D8C181),
- UINT64_C(0x00E5D3BFA7EC53DE) } },
- { { UINT64_C(0x033F039A91D85118), UINT64_C(0x03A170E9A74E89EC),
- UINT64_C(0x03EBE8F17E2B4C68), UINT64_C(0x032E08DD52962FFF),
- UINT64_C(0x01F682C887362E38), UINT64_C(0x02848A835A72A2EE),
- UINT64_C(0x00AFA36F7A88966F), UINT64_C(0x02D505E8ED473B2D),
- UINT64_C(0x007B6EF0E4DAA123) },
- { UINT64_C(0x03F322E8CD472029), UINT64_C(0x009B31F349123C63),
- UINT64_C(0x024396A463AE29B2), UINT64_C(0x035A559411C8D9B7),
- UINT64_C(0x0302AAF84FEF53A7), UINT64_C(0x00322717487DC79C),
- UINT64_C(0x02CA6AE27A92266C), UINT64_C(0x03E6B6580391B525),
- UINT64_C(0x00647CC677EE4353) } },
- { { UINT64_C(0x0015F4FB3CE12393), UINT64_C(0x013D9CD65B87D1CA),
- UINT64_C(0x03ED1458BDACF05A), UINT64_C(0x011BC2A44D7A03F7),
- UINT64_C(0x00D1E2748EE247CF), UINT64_C(0x025C05134193D6D7),
- UINT64_C(0x03D8D4701057B20F), UINT64_C(0x03CD86409D914C19),
- UINT64_C(0x0123EE9725146150) },
- { UINT64_C(0x03B85772CCE5DBF5), UINT64_C(0x024E60E34E33C627),
- UINT64_C(0x00CEB58FBCFD7F20), UINT64_C(0x0213A9AF85D15B81),
- UINT64_C(0x00879FD075FE76EA), UINT64_C(0x01883D1962AC7DA6),
- UINT64_C(0x0041CDD770D92E82), UINT64_C(0x024CF83E19940701),
- UINT64_C(0x0001A7D69F562E49) } },
- { { UINT64_C(0x03F06D3661D1EEDB), UINT64_C(0x01062600B09B6B3E),
- UINT64_C(0x01A0A640D07EFC7A), UINT64_C(0x0317F67E20F296A1),
- UINT64_C(0x034843017C701C3C), UINT64_C(0x033891152A103E33),
- UINT64_C(0x01C00AE12BC93968), UINT64_C(0x0280A3403412AA1F),
- UINT64_C(0x0111DA6A8E2C4EE1) },
- { UINT64_C(0x0138BBADC5A4238D), UINT64_C(0x02BB1A5504498DAF),
- UINT64_C(0x03D55FD7A02F99F7), UINT64_C(0x030B36D2716AAE98),
- UINT64_C(0x00846799916170BE), UINT64_C(0x021843A1130EBD86),
- UINT64_C(0x01602A0048ED7277), UINT64_C(0x010F628883F5C170),
- UINT64_C(0x00A879F20138FE97) } },
- { { UINT64_C(0x010B697E6BB71E17), UINT64_C(0x00A5FF1EE44F8A1A),
- UINT64_C(0x02F0A65F0594ADDF), UINT64_C(0x01B97DFF3B989E00),
- UINT64_C(0x02EBB1D34E1BC0B6), UINT64_C(0x0318AB0F908D45CA),
- UINT64_C(0x006D84E0ECA51F49), UINT64_C(0x022CBEFDFAF29F0C),
- UINT64_C(0x019FF3250EDA2D48) },
- { UINT64_C(0x0247BD9A1791633D), UINT64_C(0x001017CA6D44DB39),
- UINT64_C(0x001392DBCF3C08AE), UINT64_C(0x00BBFD8C9245DBED),
- UINT64_C(0x03C6094D363A2A9B), UINT64_C(0x0026C46C1B980722),
- UINT64_C(0x014C00915831C495), UINT64_C(0x03480A51EA642A61),
- UINT64_C(0x018A2CD0EE26C545) } },
- { { UINT64_C(0x00179F4F97812A25), UINT64_C(0x02A5E9E3F33BC581),
- UINT64_C(0x000BD5248493D239), UINT64_C(0x02B7DE8E94D0B6E5),
- UINT64_C(0x01D8674B49C2359A), UINT64_C(0x020163E368BE3C3B),
- UINT64_C(0x0332717F9505C7C1), UINT64_C(0x035A143000B7EC9C),
- UINT64_C(0x00C999A3E0BCCAF1) },
- { UINT64_C(0x007B047729EF75E3), UINT64_C(0x02CC12EE110A5B9B),
- UINT64_C(0x0330E2E6286E55F0), UINT64_C(0x00C6FC4CB1CD5C12),
- UINT64_C(0x014B93EA65F0CCE4), UINT64_C(0x01E5A20D3788D937),
- UINT64_C(0x039AB1AC6BF17BFB), UINT64_C(0x0397FE82B1886D3A),
- UINT64_C(0x000C112A21CE8FCD) } },
- { { UINT64_C(0x02B7C1C48CF8D334), UINT64_C(0x0078EAF1E0B9AA5A),
- UINT64_C(0x0397B9A209EF9EF0), UINT64_C(0x001CFFAFD847B222),
- UINT64_C(0x0321A14F818F0142), UINT64_C(0x0214D3F98F9D0ED8),
- UINT64_C(0x011305B71C04D0D3), UINT64_C(0x03DE98EACA808006),
- UINT64_C(0x01360AA21413198A) },
- { UINT64_C(0x028D3F07FD51E170), UINT64_C(0x023F03474306CBA2),
- UINT64_C(0x034205D496752F99), UINT64_C(0x02D4BC03F380060F),
- UINT64_C(0x01E2CE3EBF008299), UINT64_C(0x03EE2B7C9CF44A54),
- UINT64_C(0x022CB7C6BCE06379), UINT64_C(0x03934E9100F4AD3F),
- UINT64_C(0x001B8D6D7EA30D7F) } },
- { { UINT64_C(0x0175E6F14594D02E), UINT64_C(0x0107CFBBB666C104),
- UINT64_C(0x0043C920F3FC7184), UINT64_C(0x01D3F596321DF679),
- UINT64_C(0x034FBFA8E62660AC), UINT64_C(0x02F07B7B2F64B7D6),
- UINT64_C(0x020B7A4B1CB30890), UINT64_C(0x0027370AF3A01ACE),
- UINT64_C(0x004C3DF94ED57F1B) },
- { UINT64_C(0x02F7E28D420891BB), UINT64_C(0x00A165AF3355D551),
- UINT64_C(0x03E2077F4C7840E2), UINT64_C(0x010A42F1F956CFC2),
- UINT64_C(0x01586FF6FC545309), UINT64_C(0x00E2A2E3F8A44D6A),
- UINT64_C(0x01BCD7CFAB0CD9EA), UINT64_C(0x02CD7B5AA257EF8B),
- UINT64_C(0x01E161EB6461E56F) } },
- { { UINT64_C(0x03AA1E440B1B7656), UINT64_C(0x02DB3F4D449DEBD4),
- UINT64_C(0x025617A010F1A335), UINT64_C(0x010C03757E20D72C),
- UINT64_C(0x01EA95F9EFACD59B), UINT64_C(0x0126D8DDDE17B239),
- UINT64_C(0x02DBF2D291F6AEC7), UINT64_C(0x02F6100FC8834353),
- UINT64_C(0x00C18C83BB58FB77) },
- { UINT64_C(0x03754C15A7EEE80E), UINT64_C(0x00247AB9412690FE),
- UINT64_C(0x016E9C7BD742F5DF), UINT64_C(0x02361FAE95827D75),
- UINT64_C(0x029E41CC30EA15A1), UINT64_C(0x005F53D5863CB83F),
- UINT64_C(0x0025C9FC701A2B9B), UINT64_C(0x0389C7702E9DAFBA),
- UINT64_C(0x00ED3C35310B5895) } },
- },
- {
- { { UINT64_C(0x0373C85A8201C48B), UINT64_C(0x000BE293272BB8C3),
- UINT64_C(0x0299641D84048EF5), UINT64_C(0x012EE83CEE0A37DD),
- UINT64_C(0x00D6A81ED893F8A3), UINT64_C(0x01988A5103EE9A5B),
- UINT64_C(0x01495F90BE6C8319), UINT64_C(0x00954437A6A3C821),
- UINT64_C(0x010E12D843E6580B) },
- { UINT64_C(0x007820FBE51DE678), UINT64_C(0x013364C5E0C684D4),
- UINT64_C(0x009D1721196C2E40), UINT64_C(0x01933769A5FD2063),
- UINT64_C(0x00BAB8B58BEFA01A), UINT64_C(0x012866F6B7334CBC),
- UINT64_C(0x025340A51AC6E1FB), UINT64_C(0x03B1135009A4FD38),
- UINT64_C(0x018AD6567590AFBB) } },
- { { UINT64_C(0x03F7CC1DCD9C3B89), UINT64_C(0x03F2238DF027BB54),
- UINT64_C(0x014C7FD4BA95DD01), UINT64_C(0x01DBD8CC489F6AB6),
- UINT64_C(0x03A6066BFEA7BAB5), UINT64_C(0x0065E8AD52465D5E),
- UINT64_C(0x03E8F9DA8D525106), UINT64_C(0x001A6869F0B37603),
- UINT64_C(0x016D47A0587C292E) },
- { UINT64_C(0x0374FC0618A5170B), UINT64_C(0x0152FB1A3C0C1CC0),
- UINT64_C(0x01710A373C6A380E), UINT64_C(0x00845789535E37A3),
- UINT64_C(0x035D0DA356C25D05), UINT64_C(0x00C2670CA5FED688),
- UINT64_C(0x010367DAE1D930AA), UINT64_C(0x0109B528D8B5E2DD),
- UINT64_C(0x0160EAA2FD7C6C7E) } },
- { { UINT64_C(0x02EB058989126FAC), UINT64_C(0x03391866A50E5BF0),
- UINT64_C(0x0249D99C7ECCC796), UINT64_C(0x031F124A928D03B2),
- UINT64_C(0x0106FA952E20ED57), UINT64_C(0x001BC6E7D0224A59),
- UINT64_C(0x00CE05E4690915C9), UINT64_C(0x020A90266CA1AD52),
- UINT64_C(0x0094293617B76FE5) },
- { UINT64_C(0x034B04313831CD9D), UINT64_C(0x03B7732D91E90928),
- UINT64_C(0x014A1E82A9C3D51E), UINT64_C(0x02AEC53126F32DDD),
- UINT64_C(0x028AC8F7A359BD6C), UINT64_C(0x01B3A0EDE3DB4B4B),
- UINT64_C(0x028EB875F2FBF434), UINT64_C(0x01AE764FB3A07035),
- UINT64_C(0x006701271A1304D0) } },
- { { UINT64_C(0x0015B0C258BC45E5), UINT64_C(0x00500CF779654876),
- UINT64_C(0x00D61185031EC91A), UINT64_C(0x0237D26B8AB4ABC0),
- UINT64_C(0x0303DB5DD0B1113F), UINT64_C(0x02C21386988E1A69),
- UINT64_C(0x002A78FA27F52A38), UINT64_C(0x02373FFEB8A111FB),
- UINT64_C(0x01ED316A4A837D78) },
- { UINT64_C(0x02151FA30AE71753), UINT64_C(0x018559984522D236),
- UINT64_C(0x02AA1CED8D6E9D2C), UINT64_C(0x0336B3277D457875),
- UINT64_C(0x01FEB5FD684C784F), UINT64_C(0x0312F506AD5C57EB),
- UINT64_C(0x026506BE8AA4F453), UINT64_C(0x0334630A573CB20E),
- UINT64_C(0x00AA6EBCFBE68959) } },
- { { UINT64_C(0x0339D37CD0D9229F), UINT64_C(0x0170E57961291D98),
- UINT64_C(0x029AE28566E91600), UINT64_C(0x02402C0C57E9B401),
- UINT64_C(0x01EC520A49429756), UINT64_C(0x02A2CF079E7747FF),
- UINT64_C(0x03751BAC838751C0), UINT64_C(0x021ED034A3B7C53C),
- UINT64_C(0x0118500D09678BBC) },
- { UINT64_C(0x007E207E14E4C072), UINT64_C(0x039277F4D05B1F1F),
- UINT64_C(0x02A052EAB5B31E63), UINT64_C(0x02B6A467E3451DEA),
- UINT64_C(0x001613AC11B73C00), UINT64_C(0x00C5A6FA0FE24B0C),
- UINT64_C(0x034F01404D69886A), UINT64_C(0x00324E28B3CA9FD4),
- UINT64_C(0x005A3181E5A8A0B8) } },
- { { UINT64_C(0x02CE6BA9219403A6), UINT64_C(0x030DFB5CBE0CA405),
- UINT64_C(0x039D700EFB6B4704), UINT64_C(0x0365CAD8F9D06BE7),
- UINT64_C(0x00FE6873B0456CD8), UINT64_C(0x0090EC1026095A01),
- UINT64_C(0x016F3A2CC5EC6B62), UINT64_C(0x001AD035AE2286FC),
- UINT64_C(0x018819632B44D890) },
- { UINT64_C(0x039574FA6B48EFBA), UINT64_C(0x029D9BE545F8EFA2),
- UINT64_C(0x00F42C7789B73AA2), UINT64_C(0x03CB90D731504D3E),
- UINT64_C(0x0202ACD7E2DE6E8A), UINT64_C(0x02C8AD45BF6E2A24),
- UINT64_C(0x0067A40E7FC99B4D), UINT64_C(0x03E0738CFADACE29),
- UINT64_C(0x01177C98831102AA) } },
- { { UINT64_C(0x030A8610AC5E165D), UINT64_C(0x014AA32172C55EC2),
- UINT64_C(0x027CE551CABE6211), UINT64_C(0x02477F69861DB6E6),
- UINT64_C(0x01E8FF337E7E36EC), UINT64_C(0x0054ACDF3E1C9EF7),
- UINT64_C(0x03DED626009E6F01), UINT64_C(0x02E49BFEF7555C32),
- UINT64_C(0x002E4F1C3DB00152) },
- { UINT64_C(0x0332D8B606C8A9BC), UINT64_C(0x03AD929E6D810A1A),
- UINT64_C(0x02C0030394592734), UINT64_C(0x02442FE9824BDA03),
- UINT64_C(0x03CBAC9513FF99FB), UINT64_C(0x03B3D4E910EDA5AD),
- UINT64_C(0x005A6F83029FFE7F), UINT64_C(0x02F6FF8D9E1F29A6),
- UINT64_C(0x0188A1C08A99132D) } },
- { { UINT64_C(0x001F1A68F391B195), UINT64_C(0x00F016D21D573BA5),
- UINT64_C(0x00EB4A4B11B13F56), UINT64_C(0x0390443801100BE8),
- UINT64_C(0x00CDF1786689F09F), UINT64_C(0x008708E6F68D807B),
- UINT64_C(0x00CFC70B63E2B318), UINT64_C(0x02DA65CABECA51A9),
- UINT64_C(0x01BB4CC16417876B) },
- { UINT64_C(0x002270E155C4416F), UINT64_C(0x0275E82A3EE6287C),
- UINT64_C(0x019550DEBAE641A6), UINT64_C(0x0189E9D792313D48),
- UINT64_C(0x022E11801B0D93FC), UINT64_C(0x006308C9DD555E4E),
- UINT64_C(0x02F9EBC6E275E976), UINT64_C(0x00011D5E55FC63C6),
- UINT64_C(0x01D3E16AA048085F) } },
- { { UINT64_C(0x01C6845EE45C5FF5), UINT64_C(0x03B6D8ADC4E97112),
- UINT64_C(0x0068C305E2731ED0), UINT64_C(0x037AFCABEDF2C8B5),
- UINT64_C(0x016C0203DF9F154E), UINT64_C(0x03FF6DCCA97B1A6C),
- UINT64_C(0x019D691BB5C8CD06), UINT64_C(0x022C5EA48F6FE25F),
- UINT64_C(0x00553B7F4065FABA) },
- { UINT64_C(0x006009B918BF712A), UINT64_C(0x0087FAC6655FF7A7),
- UINT64_C(0x039DB19E2FDB3477), UINT64_C(0x014389D0D15C2072),
- UINT64_C(0x02B3AB48E4A3E0DF), UINT64_C(0x00D55CD68B325E8D),
- UINT64_C(0x020332F2B62898A4), UINT64_C(0x019DB12158F6D4D6),
- UINT64_C(0x010E1F4D65633E42) } },
- { { UINT64_C(0x035FDBF97A66FBB8), UINT64_C(0x0397FDA15F48E249),
- UINT64_C(0x0314912B73A0AD12), UINT64_C(0x018B5A1F5856CC06),
- UINT64_C(0x026DB1F90C057E46), UINT64_C(0x02BC203FE8141974),
- UINT64_C(0x032698D0DBE8152C), UINT64_C(0x01BC802ED9745CEA),
- UINT64_C(0x00B1E80CFCF35D14) },
- { UINT64_C(0x026A4890175570A1), UINT64_C(0x03DEFA508892558E),
- UINT64_C(0x00D274862CB6E1EF), UINT64_C(0x02F12D3DF3D2916D),
- UINT64_C(0x01D9AF2100AA8841), UINT64_C(0x024123BB5E94517B),
- UINT64_C(0x00CEA1686B604BBF), UINT64_C(0x007E9A1A2F8E072B),
- UINT64_C(0x012919949C3170DE) } },
- { { UINT64_C(0x028CFBD7509B3F23), UINT64_C(0x0341392CF0D37CE2),
- UINT64_C(0x03BB3B849E04FCBA), UINT64_C(0x004BCCA7E7C71C3F),
- UINT64_C(0x007EAF927839C8E2), UINT64_C(0x0061602F3DAFE11E),
- UINT64_C(0x01D0F1831E9A3AE7), UINT64_C(0x032630A59BC245BA),
- UINT64_C(0x00C9122EE0775F54) },
- { UINT64_C(0x027706840C226E2C), UINT64_C(0x021FC974C3A78386),
- UINT64_C(0x0254E3803EE94792), UINT64_C(0x02763098FB07712F),
- UINT64_C(0x03085BE39396F8D2), UINT64_C(0x039CDBB83C0DCAE5),
- UINT64_C(0x0275170CD909C685), UINT64_C(0x02A48EFA2F7CBD9D),
- UINT64_C(0x0151800A47F18A8F) } },
- { { UINT64_C(0x0266B421EDA35EBF), UINT64_C(0x016EE661AEE22D67),
- UINT64_C(0x02189CC63A33934C), UINT64_C(0x02035BBEEF2E6505),
- UINT64_C(0x03A21BDAB12827FF), UINT64_C(0x010837E5E86E37F7),
- UINT64_C(0x000889F4FF18C641), UINT64_C(0x00B83D668CF5F701),
- UINT64_C(0x00A90A0E4C84A45C) },
- { UINT64_C(0x014A9DB7546020F0), UINT64_C(0x026B8123F183E007),
- UINT64_C(0x014172F8A29A74BC), UINT64_C(0x03ECB113DDF05CC6),
- UINT64_C(0x0056019B554AE591), UINT64_C(0x01C3E5A8AC670B45),
- UINT64_C(0x0328112932236FCD), UINT64_C(0x0147D09F4CAD8D13),
- UINT64_C(0x007CA80EB751C2E8) } },
- { { UINT64_C(0x03260C3CA6A09384), UINT64_C(0x01A2DAEF9F24A534),
- UINT64_C(0x01FA415780AE38B6), UINT64_C(0x02FE728B02BEADE2),
- UINT64_C(0x031F71486AA63A4A), UINT64_C(0x021F907074346F6D),
- UINT64_C(0x00225A4DA564511F), UINT64_C(0x02CC4C97BC497C99),
- UINT64_C(0x01C2DD5CCD878296) },
- { UINT64_C(0x03CD4A619B2264B8), UINT64_C(0x03093FC7F1583EA2),
- UINT64_C(0x02B47AD7D9A2FB6F), UINT64_C(0x00C0D0B440BCA2A9),
- UINT64_C(0x00B22B3DB051C447), UINT64_C(0x01CEC4D502303875),
- UINT64_C(0x0340F66A4D33C79A), UINT64_C(0x00C02F44477E4379),
- UINT64_C(0x01A54038DE4CD448) } },
- { { UINT64_C(0x036F26FDD184B415), UINT64_C(0x0077144A843CA00F),
- UINT64_C(0x012DE3D50936A2A0), UINT64_C(0x00F1A915BEF669FD),
- UINT64_C(0x02A728B908D36285), UINT64_C(0x023009A8F3585930),
- UINT64_C(0x01AFE37F5F6903E6), UINT64_C(0x015BE42AC69043A0),
- UINT64_C(0x0029A3961324FE67) },
- { UINT64_C(0x03744629EA87B468), UINT64_C(0x01B1B421D820F115),
- UINT64_C(0x009DEF11D39EF564), UINT64_C(0x002A1D3B4419573F),
- UINT64_C(0x00558617DEFBD955), UINT64_C(0x03E4BE19D9F46F14),
- UINT64_C(0x012A38F1BF3ED4C3), UINT64_C(0x00B5C5CD4AC51A53),
- UINT64_C(0x00A0E10EBF360168) } },
- { { UINT64_C(0x011616DEF784F95B), UINT64_C(0x02677312C6AD8D2D),
- UINT64_C(0x03F3EF6B22617C90), UINT64_C(0x029E26932332F57D),
- UINT64_C(0x0285AE820DE6D58A), UINT64_C(0x014C9337216D597B),
- UINT64_C(0x00A6F170854E55AF), UINT64_C(0x010EA56E5DFB91ED),
- UINT64_C(0x012F8DBABA868C11) },
- { UINT64_C(0x015249FC91DCCF70), UINT64_C(0x0306C5CB46C7DD02),
- UINT64_C(0x021954201045F6CB), UINT64_C(0x00E2B058688BC602),
- UINT64_C(0x002D5DDCF79B78E3), UINT64_C(0x03AF429058EAD023),
- UINT64_C(0x016A3FA5F7DB5234), UINT64_C(0x01EAFE34B82E4D26),
- UINT64_C(0x0095115BD2F5AE74) } },
- { { UINT64_C(0x01C1741308F9B528), UINT64_C(0x011456D2FA27C256),
- UINT64_C(0x029EE8BA38AC33BC), UINT64_C(0x0162AD2DF7E46CB7),
- UINT64_C(0x01239C1DD2198564), UINT64_C(0x00D634D586B52D14),
- UINT64_C(0x00362033A3D5AE2B), UINT64_C(0x00F403720300250C),
- UINT64_C(0x0134664850978D32) },
- { UINT64_C(0x032ECC2C4837554E), UINT64_C(0x008F4BC077701F7F),
- UINT64_C(0x002D0F7435107071), UINT64_C(0x015A21A6D90E61B2),
- UINT64_C(0x03E1B78AD2E928DC), UINT64_C(0x02A2214D7306E1AF),
- UINT64_C(0x01C4FCA92A1694C1), UINT64_C(0x00656FBD23561E1B),
- UINT64_C(0x013FF3454072CB98) } },
- },
- {
- { { UINT64_C(0x003C182D851368EE), UINT64_C(0x0128CF55F2467CB0),
- UINT64_C(0x00767E333ACE3BB9), UINT64_C(0x011F65D379FE73C3),
- UINT64_C(0x038B18FA5C037C7D), UINT64_C(0x01B3CD7DFA5B80B3),
- UINT64_C(0x0086C596F1A3E912), UINT64_C(0x00A8AD1EBFF700CD),
- UINT64_C(0x00E12C370BFEEC8C) },
- { UINT64_C(0x00E5DE2C18A3F84B), UINT64_C(0x02D9CB8AB50B28B7),
- UINT64_C(0x01D7EDD0731B2C4B), UINT64_C(0x0328A026B1FAD960),
- UINT64_C(0x02189B0FF8B6CA46), UINT64_C(0x03FD18C777A3B6E8),
- UINT64_C(0x0004BCBA72EE3E81), UINT64_C(0x0214C7D12A3F1BC4),
- UINT64_C(0x01CA103DD1B9C887) } },
- { { UINT64_C(0x00A781D5DE024391), UINT64_C(0x01D4AC6B9AA04C66),
- UINT64_C(0x0298088919924A4E), UINT64_C(0x02295F237B9E2B5F),
- UINT64_C(0x0228FA8EA8570017), UINT64_C(0x01AE7F1814C6B59C),
- UINT64_C(0x008FF64625C08899), UINT64_C(0x002A626C4EECF6A1),
- UINT64_C(0x0118A9AD8CEFC12E) },
- { UINT64_C(0x014B05DA9E9AB68C), UINT64_C(0x036EDCE530984903),
- UINT64_C(0x03147DF5F527C318), UINT64_C(0x0196BC1DED347CDD),
- UINT64_C(0x01BB4AC96E14A591), UINT64_C(0x03C4F3EDF23B9460),
- UINT64_C(0x03547D14C90381B8), UINT64_C(0x03693FA10D27208C),
- UINT64_C(0x003B75AA5EA458F7) } },
- { { UINT64_C(0x02779CC419496A3E), UINT64_C(0x01D3BB2E4FE62409),
- UINT64_C(0x032F4C70FCAE21C4), UINT64_C(0x013310DA0ECE14A3),
- UINT64_C(0x03F3B3593FC9DDBB), UINT64_C(0x0051822EF8CFB99D),
- UINT64_C(0x012D89EA3AE1C997), UINT64_C(0x00D12E2856922EAE),
- UINT64_C(0x00E81549D787C4C8) },
- { UINT64_C(0x02337896D4B88B67), UINT64_C(0x00A59FC2D1584FBE),
- UINT64_C(0x02FAA1ED2840EB09), UINT64_C(0x02061203F2AA6499),
- UINT64_C(0x03BF834C1997385E), UINT64_C(0x02274588F3F24162),
- UINT64_C(0x001CC1FD4A622D5A), UINT64_C(0x0044FEAA4FA76E84),
- UINT64_C(0x00B3619A1E813DA3) } },
- { { UINT64_C(0x0276BEE0D076683D), UINT64_C(0x030210C875AFAF69),
- UINT64_C(0x0011EDC7657E64F0), UINT64_C(0x02488D3166D94F20),
- UINT64_C(0x011EA313A85E0E01), UINT64_C(0x032E12BF7FFAF1B4),
- UINT64_C(0x00327C5A8CCEF85B), UINT64_C(0x0252EF23E4C30C4E),
- UINT64_C(0x01CC6A9EB749B839) },
- { UINT64_C(0x02B00795BB99594F), UINT64_C(0x01F383BC6F8BE7AA),
- UINT64_C(0x00760524F18BF5F2), UINT64_C(0x013AA36073E7DDA9),
- UINT64_C(0x025A0A5A67DE0097), UINT64_C(0x01A61B644AB9486A),
- UINT64_C(0x0313B98AABF5EA94), UINT64_C(0x003BB89B65E51F0D),
- UINT64_C(0x01776B040E0F32AB) } },
- { { UINT64_C(0x01721BA5B2662A6A), UINT64_C(0x0215447AF117F66C),
- UINT64_C(0x03DB83ECC5D3D99A), UINT64_C(0x0215A6C6CE2794E3),
- UINT64_C(0x010BE3489ECF31F8), UINT64_C(0x012B3FA3634CDEF2),
- UINT64_C(0x017C1F03CDFBCD8A), UINT64_C(0x02EE6A91A626677E),
- UINT64_C(0x003FF1568F6BE74E) },
- { UINT64_C(0x01995519CD76A58E), UINT64_C(0x02DC3A3040585EF5),
- UINT64_C(0x0061DDCAE3A68494), UINT64_C(0x025E1A1EF3C2AAA5),
- UINT64_C(0x00CA54B0D55B6CE8), UINT64_C(0x00543A97F9E4CC22),
- UINT64_C(0x01F7F09EDEFF8BFA), UINT64_C(0x00168473D37DD44E),
- UINT64_C(0x00FE410E086ACD40) } },
- { { UINT64_C(0x006AF7630DA09D54), UINT64_C(0x010ABA844C57F2B5),
- UINT64_C(0x03C9AC1832567F47), UINT64_C(0x00B3CFD3C603E8BB),
- UINT64_C(0x01A04969EEACA1C9), UINT64_C(0x02E57B7E17E4591D),
- UINT64_C(0x03E68AB3619DA17B), UINT64_C(0x00ECCA930F030279),
- UINT64_C(0x01B2C98B4036BF1D) },
- { UINT64_C(0x0077C78B045007F6), UINT64_C(0x03CCE2791A0C0815),
- UINT64_C(0x01688DB89F24D07A), UINT64_C(0x0017DBDDD43EAD41),
- UINT64_C(0x033A80BF740D6693), UINT64_C(0x02F768ED65974242),
- UINT64_C(0x026B74A3E2B11EFF), UINT64_C(0x023E110BE2C45B38),
- UINT64_C(0x00B98CD56F7AB2CD) } },
- { { UINT64_C(0x0383E5A50FB0D3ED), UINT64_C(0x034513587B8AB555),
- UINT64_C(0x03B1C6783B97BD45), UINT64_C(0x0062B781B344D4E1),
- UINT64_C(0x00FD5DFB5083FED9), UINT64_C(0x00CF4B880197BC29),
- UINT64_C(0x02084C42BE014183), UINT64_C(0x01C81317B056C149),
- UINT64_C(0x016318E131F69642) },
- { UINT64_C(0x019B4B41240FA002), UINT64_C(0x0312BAA4E914151E),
- UINT64_C(0x0180907D9FACF5B0), UINT64_C(0x007774B33895C1D0),
- UINT64_C(0x017E17EBCCA7FA72), UINT64_C(0x030812EEB0BC890A),
- UINT64_C(0x02294B1CB2912B73), UINT64_C(0x03835B7F1FA5A17D),
- UINT64_C(0x001712AC45AB3EC9) } },
- { { UINT64_C(0x006603D4F696BA83), UINT64_C(0x00D22CAFE710B52F),
- UINT64_C(0x00A86019255DD155), UINT64_C(0x03D9E86EE758D999),
- UINT64_C(0x024051D5CE463A6D), UINT64_C(0x02906D0203D86E6E),
- UINT64_C(0x02B53E1EA3B77733), UINT64_C(0x01298EBA501720C6),
- UINT64_C(0x00A49AB3D5669F64) },
- { UINT64_C(0x00C3477F5E8C01EF), UINT64_C(0x02CFF8B3EED1F46C),
- UINT64_C(0x02588DBF2A1259EE), UINT64_C(0x01BC0AE8F9969F27),
- UINT64_C(0x0284232123DA5F9F), UINT64_C(0x03E79C894325C436),
- UINT64_C(0x00FE809311DA7F3B), UINT64_C(0x0102255D12EBA535),
- UINT64_C(0x01F50E25AE34114E) } },
- { { UINT64_C(0x0277D803646C1FB6), UINT64_C(0x02488A5E5052BBB1),
- UINT64_C(0x000391356EAC8F11), UINT64_C(0x01646437C00A834F),
- UINT64_C(0x02EAB8F940B93B40), UINT64_C(0x024958DF1C74ED20),
- UINT64_C(0x03F2F1AF37BD1D73), UINT64_C(0x011FE3F5381F17F4),
- UINT64_C(0x00EF826DAE390184) },
- { UINT64_C(0x00D2D6B4BA78B572), UINT64_C(0x0073D6C96322203E),
- UINT64_C(0x018C7B2E976AA1E5), UINT64_C(0x026E3F6920E5F016),
- UINT64_C(0x01E846537687AFF5), UINT64_C(0x017563948203FD81),
- UINT64_C(0x019F1D17DABC8810), UINT64_C(0x00F8ED530C4E3A67),
- UINT64_C(0x0196F10721B62324) } },
- { { UINT64_C(0x032F87D12878503F), UINT64_C(0x03648B98DC48ECC8),
- UINT64_C(0x0184FD4C8EF53242), UINT64_C(0x01333846A9EEDB04),
- UINT64_C(0x02C1DF317872BBBF), UINT64_C(0x002D6E1FAF12E7FB),
- UINT64_C(0x039480C808CCDA38), UINT64_C(0x02845D8F6413B928),
- UINT64_C(0x01979462C493957E) },
- { UINT64_C(0x02E38CCA2947A480), UINT64_C(0x00298B225770DDF9),
- UINT64_C(0x02859B366A105BC5), UINT64_C(0x00C80C32E8803179),
- UINT64_C(0x01DEC1627A49675D), UINT64_C(0x018FD7B10ED2384C),
- UINT64_C(0x00CE729C9A700811), UINT64_C(0x00B9251157C6408C),
- UINT64_C(0x00D18FB5EDB29090) } },
- { { UINT64_C(0x0019C27F1002FA40), UINT64_C(0x0187B6686A1976EA),
- UINT64_C(0x03089E6ABFDCA1BA), UINT64_C(0x01E3A9276DAB6A31),
- UINT64_C(0x01010381B56E1374), UINT64_C(0x02059C3444CA22AD),
- UINT64_C(0x0340D48C52418852), UINT64_C(0x001C397FEACAD014),
- UINT64_C(0x00A9B91476DE1E3B) },
- { UINT64_C(0x01B18811D2203C97), UINT64_C(0x006802C3244A5143),
- UINT64_C(0x034CC7484B00B0C2), UINT64_C(0x02D138E88D39FE0E),
- UINT64_C(0x00035A355C8D48A2), UINT64_C(0x01257073943DE7F1),
- UINT64_C(0x003B2AA49BD592AC), UINT64_C(0x03D7C1DBA4418663),
- UINT64_C(0x01A24E3A67DAF410) } },
- { { UINT64_C(0x02B819FA06A8409F), UINT64_C(0x004A52ACCE9D798F),
- UINT64_C(0x0342BCE5E942F51F), UINT64_C(0x01499CF92BE85899),
- UINT64_C(0x03ACD69B9655760D), UINT64_C(0x020F4E9A7813F0D0),
- UINT64_C(0x03880853D5E05E02), UINT64_C(0x02B0666045F612A7),
- UINT64_C(0x00302D53FFFEEF1D) },
- { UINT64_C(0x025294489593BC03), UINT64_C(0x013D42D26192AAEB),
- UINT64_C(0x010D09630D5F95E5), UINT64_C(0x02152684A6D53F7C),
- UINT64_C(0x022DD5DAD7C7B4A8), UINT64_C(0x02966500C48498D3),
- UINT64_C(0x03D763E4EB3C2E33), UINT64_C(0x027FAC6AFEDC5F61),
- UINT64_C(0x0074EA2C83E52FE7) } },
- { { UINT64_C(0x01DB9F78868172DA), UINT64_C(0x0100A5C0A0C25D2E),
- UINT64_C(0x023587D7C3E66CE7), UINT64_C(0x0234D19B042FCCD7),
- UINT64_C(0x0059721B0F60680E), UINT64_C(0x03A0B2DF23AB3A42),
- UINT64_C(0x0177AFB700329CAC), UINT64_C(0x03D5A5CFAF392AE7),
- UINT64_C(0x00CF59BC96ECDBA2) },
- { UINT64_C(0x03CE38933BF1C993), UINT64_C(0x0388C35CC45F89F5),
- UINT64_C(0x039286D1ED3DB46C), UINT64_C(0x0061947308D0F830),
- UINT64_C(0x0307100E3F7C9C8E), UINT64_C(0x00967048E8CC7CC9),
- UINT64_C(0x03CAD0590370F457), UINT64_C(0x0110D9420ECE3996),
- UINT64_C(0x009955E94586B830) } },
- { { UINT64_C(0x03B6822745F0E5DA), UINT64_C(0x03120B5D07E9C6A5),
- UINT64_C(0x01F88B173B2A0839), UINT64_C(0x0245CA639869EE96),
- UINT64_C(0x0199F585B26F8120), UINT64_C(0x01D2153C5D41B782),
- UINT64_C(0x009EAD730F2E3B2D), UINT64_C(0x007E27FEF3F3388E),
- UINT64_C(0x01DD0BBF32960B2B) },
- { UINT64_C(0x0298F45E5931C0F0), UINT64_C(0x012A6F48D3898EAD),
- UINT64_C(0x01EFD537B310CFED), UINT64_C(0x030390CD48666C4B),
- UINT64_C(0x01DCF41DD16073BB), UINT64_C(0x035CF923EABD525A),
- UINT64_C(0x00DDF48F41B47311), UINT64_C(0x0316E0000BFFF7E2),
- UINT64_C(0x003C6A0632821286) } },
- { { UINT64_C(0x006FA434852228CC), UINT64_C(0x03EE279533E093C6),
- UINT64_C(0x03C215EE36B974E7), UINT64_C(0x02FA330552481892),
- UINT64_C(0x01ABFC67F3C2F700), UINT64_C(0x000945F47832719D),
- UINT64_C(0x01BA378921E29D68), UINT64_C(0x0364936B83B66609),
- UINT64_C(0x0137B7B2011DE260) },
- { UINT64_C(0x00A7EBAC8BA1E090), UINT64_C(0x0343E15BB9BADFCE),
- UINT64_C(0x01C5AFA1059527D8), UINT64_C(0x039CE94C694D78AB),
- UINT64_C(0x020EE7FF8C758AFB), UINT64_C(0x03859CF409F61041),
- UINT64_C(0x033F2682BABD9F38), UINT64_C(0x0344ED7AA22D40CE),
- UINT64_C(0x00C59BE4543774E1) } },
- { { UINT64_C(0x01B5777A8F1CAC2C), UINT64_C(0x001A1BB0AB5E6822),
- UINT64_C(0x011BC043646DAF27), UINT64_C(0x03F711C68F6A2900),
- UINT64_C(0x001C279115DF5830), UINT64_C(0x017D6649CFD4D909),
- UINT64_C(0x02270B8E48C4FC60), UINT64_C(0x01D402B5FB5683E0),
- UINT64_C(0x001F8DB87807BBF7) },
- { UINT64_C(0x00C9DAC0A9244F78), UINT64_C(0x02B03A3698AE7AB0),
- UINT64_C(0x02CCF3FF50BC045B), UINT64_C(0x03BCD2148E821FFF),
- UINT64_C(0x035E87616BD7E71C), UINT64_C(0x034B54F4034B6093),
- UINT64_C(0x02C5BEA4BCD01770), UINT64_C(0x0219F4B5BD513DB4),
- UINT64_C(0x01DF5AC58C13B575) } },
- },
- {
- { { UINT64_C(0x019885D110E10587), UINT64_C(0x0225E6982614E90C),
- UINT64_C(0x03FE389B08EF52DA), UINT64_C(0x02986A5F6773FA41),
- UINT64_C(0x02D7E3FB92A3A338), UINT64_C(0x02804DB8E96B46A6),
- UINT64_C(0x02ED29A77A3BFC07), UINT64_C(0x021EDA658D1622A9),
- UINT64_C(0x00DC41F148BEEF47) },
- { UINT64_C(0x00671195EBF698BD), UINT64_C(0x02DA5978A5D3B8AE),
- UINT64_C(0x0067084C20702323), UINT64_C(0x01BAE92F07B45047),
- UINT64_C(0x01EECFF9A6840B39), UINT64_C(0x00B5A0A6F615E949),
- UINT64_C(0x02CE02C0AFAD4F4D), UINT64_C(0x02CCCE13BD8C56FD),
- UINT64_C(0x001BC38FE857CCC6) } },
- { { UINT64_C(0x00081356B6965640), UINT64_C(0x006CE26431E83C07),
- UINT64_C(0x01BA4874007EE7A0), UINT64_C(0x02537377BE8BDCBF),
- UINT64_C(0x0248DB2FA66BD85D), UINT64_C(0x028C676B603EF79F),
- UINT64_C(0x011FB7160B2BE1C4), UINT64_C(0x02E60E65885FEFB9),
- UINT64_C(0x012B85F1B13BE0ED) },
- { UINT64_C(0x0353AA14ECFB1D0D), UINT64_C(0x01FF0DDD82885F37),
- UINT64_C(0x0331E99B56FBDDD7), UINT64_C(0x03AEB28F8419966F),
- UINT64_C(0x021F907EA8D0F042), UINT64_C(0x013BD7D21430856E),
- UINT64_C(0x0386870C6BB892CA), UINT64_C(0x03E04B0EFADCEFFA),
- UINT64_C(0x007C04B740BD4123) } },
- { { UINT64_C(0x0003B2CD3E0BF039), UINT64_C(0x00C735DA6B8581E9),
- UINT64_C(0x0012D9341E1131F3), UINT64_C(0x03D2B2BBE7116022),
- UINT64_C(0x00A056CCF73BDC37), UINT64_C(0x027C9AA3BBBDE400),
- UINT64_C(0x02165FF6E36E8907), UINT64_C(0x0139C88969C85A96),
- UINT64_C(0x00C7B0F49EEA4A8D) },
- { UINT64_C(0x01F03CD678EAF6EB), UINT64_C(0x01BF3F1E8FBD78DF),
- UINT64_C(0x00857FD3BFA434E9), UINT64_C(0x008641B0E586D15E),
- UINT64_C(0x021227FC18AF0795), UINT64_C(0x022F892EEA381B7A),
- UINT64_C(0x00B3FA1F0F06E680), UINT64_C(0x01EAB02BC55C4EE1),
- UINT64_C(0x01116BB9BA45D30F) } },
- { { UINT64_C(0x03B557A9EDCBF5E2), UINT64_C(0x00B1DFD3ECC7A54C),
- UINT64_C(0x02DCE258E5A7E8D4), UINT64_C(0x00CA7703C434FC01),
- UINT64_C(0x038801282507AB56), UINT64_C(0x025FD9FA5A9E7C74),
- UINT64_C(0x0084D0CBBC9F71D9), UINT64_C(0x00D621CCEBB93EC1),
- UINT64_C(0x007E0D7D26AF06B2) },
- { UINT64_C(0x02584763447D2B4B), UINT64_C(0x00E02402AF814CEB),
- UINT64_C(0x01A0946A66DEBE3C), UINT64_C(0x025BDCD462246772),
- UINT64_C(0x032E9062B0C5E215), UINT64_C(0x037BCF49D9FBECDC),
- UINT64_C(0x001F56138C539278), UINT64_C(0x000AEA3CABF951BB),
- UINT64_C(0x007AA80F0C621590) } },
- { { UINT64_C(0x00B8EEBBBD959BD9), UINT64_C(0x001BE3997D083340),
- UINT64_C(0x01B3F063154C5C54), UINT64_C(0x0258C476F7A9A983),
- UINT64_C(0x0042A485E75D36E5), UINT64_C(0x034928BB28AF526A),
- UINT64_C(0x01BA009661FE033D), UINT64_C(0x039E10035E2FEDA5),
- UINT64_C(0x01AFFCC1198129AF) },
- { UINT64_C(0x030AD5348384E611), UINT64_C(0x01579499B7C9277C),
- UINT64_C(0x01969EE33931346F), UINT64_C(0x025C5C1EBDB572DA),
- UINT64_C(0x033A65D217266A39), UINT64_C(0x026F0D4AD6360EAB),
- UINT64_C(0x037599346289BDA2), UINT64_C(0x0092404E9E02CE9C),
- UINT64_C(0x01D0C694EC0434A7) } },
- { { UINT64_C(0x0099723AA10FBD04), UINT64_C(0x03F7E7474E4B9E21),
- UINT64_C(0x03ECBDF12C367638), UINT64_C(0x009B6D83C1B5EFBE),
- UINT64_C(0x03E6CE2FC3522A5D), UINT64_C(0x0083A6DEF388FDCF),
- UINT64_C(0x0001D8542F4EA36B), UINT64_C(0x035D032BD68C8381),
- UINT64_C(0x0131DF4BF7A79938) },
- { UINT64_C(0x008A14C7B9493BE8), UINT64_C(0x0273BD54452391FF),
- UINT64_C(0x035758B804AAD2E8), UINT64_C(0x0218D8B66AABA8CD),
- UINT64_C(0x0013BC5120CE58B7), UINT64_C(0x027C6BF5C3CF36BB),
- UINT64_C(0x0325B4A1E773C0D4), UINT64_C(0x01C2F7A449EA2D3B),
- UINT64_C(0x01C6E6D30CAF29F6) } },
- { { UINT64_C(0x0321B0EB2DAA2FB7), UINT64_C(0x001AF441996ABD26),
- UINT64_C(0x0075B82E9704E625), UINT64_C(0x00FD42C4DDFBEF6D),
- UINT64_C(0x0199707C61408809), UINT64_C(0x017F62CF54E5FBA8),
- UINT64_C(0x03E8914D3356B6E7), UINT64_C(0x010B415870E01C17),
- UINT64_C(0x01B8D0304825F773) },
- { UINT64_C(0x01AA92433FDAA949), UINT64_C(0x01186BD47A9D105F),
- UINT64_C(0x03D995A63573F12F), UINT64_C(0x032129C097A55B0D),
- UINT64_C(0x01817B31A05D6C77), UINT64_C(0x03D1CAF9B4BCAF81),
- UINT64_C(0x01524CCC3B01B281), UINT64_C(0x0296DAA6FDAA7E18),
- UINT64_C(0x002F1DC74BE29F0C) } },
- { { UINT64_C(0x02171F9BDC8D6167), UINT64_C(0x03D306F736B287BD),
- UINT64_C(0x021943224F5B91BE), UINT64_C(0x02B6BA63BB681A7A),
- UINT64_C(0x003527F99B16E603), UINT64_C(0x00CC933DC7095468),
- UINT64_C(0x0265D81677BFCEEF), UINT64_C(0x028AA225CE78ABEA),
- UINT64_C(0x00837C63F321EE01) },
- { UINT64_C(0x00A4B775684BF04E), UINT64_C(0x00AB33042AB3CA3F),
- UINT64_C(0x019796F5B70DA12B), UINT64_C(0x00CD06B6726983AD),
- UINT64_C(0x002698B98D097375), UINT64_C(0x03BB3A2632FF6007),
- UINT64_C(0x00B02BB6915F2608), UINT64_C(0x0267E64CB1F79BA2),
- UINT64_C(0x01DAB183858DB0F4) } },
- { { UINT64_C(0x01D545A21757C756), UINT64_C(0x001D934F1E31FF52),
- UINT64_C(0x023B0285CE4B1861), UINT64_C(0x031354B83A06220D),
- UINT64_C(0x017177FFE06AFE14), UINT64_C(0x019E6D07584A960E),
- UINT64_C(0x0119B9405A4BEA49), UINT64_C(0x019D70486EC70531),
- UINT64_C(0x00D7844A95DDF521) },
- { UINT64_C(0x02045C5C7288CF7B), UINT64_C(0x00677CB68405B1B1),
- UINT64_C(0x01845055E3EA0793), UINT64_C(0x035EFB9C55059FBD),
- UINT64_C(0x038843F3AF91E7EA), UINT64_C(0x00822747CA170235),
- UINT64_C(0x037B132A90F3A94C), UINT64_C(0x00526CF439B472A8),
- UINT64_C(0x00132F18D93B62FB) } },
- { { UINT64_C(0x01D84FC9D0CF69E7), UINT64_C(0x006503AA38D2A5EE),
- UINT64_C(0x03A94DFC118DD98F), UINT64_C(0x03B7F19AE7F392FF),
- UINT64_C(0x007287A7DC1849A3), UINT64_C(0x00067A7B188F6CE5),
- UINT64_C(0x02A347BDE0D7D087), UINT64_C(0x0268E88CC6AAFE02),
- UINT64_C(0x010F44A365B11B99) },
- { UINT64_C(0x018F73AC92AE7427), UINT64_C(0x0371CC00B812BB06),
- UINT64_C(0x0093D3088101FF62), UINT64_C(0x00C8613B7544141B),
- UINT64_C(0x01AF7C6201945AC7), UINT64_C(0x030C7CA555FE097F),
- UINT64_C(0x025B2E6EDA00AB31), UINT64_C(0x0214A3B6A76443D0),
- UINT64_C(0x0040A360259C7CDD) } },
- { { UINT64_C(0x006047E27F3DE4D2), UINT64_C(0x01FC4A47DA6A0A53),
- UINT64_C(0x015A543BD0BC352A), UINT64_C(0x014AACDA98A2B65E),
- UINT64_C(0x036FE6BD165C71A3), UINT64_C(0x02DF772BAC823A1F),
- UINT64_C(0x00416598B2CD1443), UINT64_C(0x032CA3B1D0CAEDD0),
- UINT64_C(0x0032FB284CCCEF17) },
- { UINT64_C(0x006DC83E96A2607F), UINT64_C(0x013B7280B80B6341),
- UINT64_C(0x004551B88CA47813), UINT64_C(0x01849A56EE6AB37F),
- UINT64_C(0x00C3074BC3D0074A), UINT64_C(0x0049915404661EF6),
- UINT64_C(0x017F0B8543807006), UINT64_C(0x01235802E0AA61E9),
- UINT64_C(0x016866C456C5454B) } },
- { { UINT64_C(0x0397A466381DC2A6), UINT64_C(0x00CD4D54FE413A43),
- UINT64_C(0x0320035D8FD47311), UINT64_C(0x03FEF7B90109A77E),
- UINT64_C(0x01FF2C161A6CFCBA), UINT64_C(0x014089BF152955D6),
- UINT64_C(0x00595A7ADB79909F), UINT64_C(0x02E10BC4FB022F89),
- UINT64_C(0x012739D14BF39AB2) },
- { UINT64_C(0x03045804E123BA29), UINT64_C(0x037196AFA31BDBE1),
- UINT64_C(0x01A3BADADE7D8795), UINT64_C(0x005FE72D3736F1F7),
- UINT64_C(0x00B261A79C9F5DAE), UINT64_C(0x00CC055F3C4A27EA),
- UINT64_C(0x018DD7C9E5958FC2), UINT64_C(0x0096748344CCC75E),
- UINT64_C(0x0065ADD88400A218) } },
- { { UINT64_C(0x033557744356B52C), UINT64_C(0x03DD368D0EA0209F),
- UINT64_C(0x02EA630FD3CCDE4D), UINT64_C(0x037A07B902382B40),
- UINT64_C(0x000B7AF2CF41C092), UINT64_C(0x0221D85556DCC533),
- UINT64_C(0x03C92114F14EA6E1), UINT64_C(0x006813B827858B16),
- UINT64_C(0x011933B0203B754D) },
- { UINT64_C(0x03A2396D5A659158), UINT64_C(0x0350A8E07708486E),
- UINT64_C(0x0306EEBAE2B49C8B), UINT64_C(0x00EC9E65F76A5B29),
- UINT64_C(0x03CECDD7F9A47F6A), UINT64_C(0x024DB8B97AA04533),
- UINT64_C(0x028D089D2C8EBEAE), UINT64_C(0x01959F5D1CB2E7ED),
- UINT64_C(0x0024A23BD4403D34) } },
- { { UINT64_C(0x038B31C4EED9CDF5), UINT64_C(0x0185AFF2C98A930A),
- UINT64_C(0x0245E4B7D7DD3E7E), UINT64_C(0x00232AA32609076B),
- UINT64_C(0x023F2A9E6F982A24), UINT64_C(0x03087A8E3FF2F39E),
- UINT64_C(0x02F6CA050121ACCC), UINT64_C(0x03568930B3D90B8C),
- UINT64_C(0x01C922F3A5335B36) },
- { UINT64_C(0x032AD6EEE92B1FE6), UINT64_C(0x02FC436D7BD6B2C7),
- UINT64_C(0x023EDD35035286A3), UINT64_C(0x003D77B6144EB9BC),
- UINT64_C(0x0304C9A105C2BAEE), UINT64_C(0x01ADB987C7CA786C),
- UINT64_C(0x0132676ADD1D742E), UINT64_C(0x02A9E9CB749E88B9),
- UINT64_C(0x00A99A53E3A5AC0A) } },
- { { UINT64_C(0x03639306E80DE633), UINT64_C(0x01AB767B97949EED),
- UINT64_C(0x006F4BAA789B6820), UINT64_C(0x039D5F497550BD7A),
- UINT64_C(0x00B4B2B380BC772D), UINT64_C(0x03022AD28F3A1DD0),
- UINT64_C(0x0017950F61ACF7EB), UINT64_C(0x019CAC6E06DC1B93),
- UINT64_C(0x008470E16670F97A) },
- { UINT64_C(0x03C11D39EE5D0D74), UINT64_C(0x01C090F08CC26FEC),
- UINT64_C(0x0006AD970C46C574), UINT64_C(0x015907C555DF013E),
- UINT64_C(0x0070AB35D20A91F0), UINT64_C(0x00C0481F822220A4),
- UINT64_C(0x03A92E8B413E83FE), UINT64_C(0x00C3982C5F8D922E),
- UINT64_C(0x017CB1B97D4ED7B4) } },
- { { UINT64_C(0x0057D40664DA7708), UINT64_C(0x00D1DC31FC3ED514),
- UINT64_C(0x01C1C72DE7D6ECFF), UINT64_C(0x00DAEABFA1F9C5DE),
- UINT64_C(0x0027EE8200E32455), UINT64_C(0x00F2A2064D51F4F3),
- UINT64_C(0x0087C336FD335B37), UINT64_C(0x0350C7F9A0D4FC4D),
- UINT64_C(0x01D53465439099CD) },
- { UINT64_C(0x01B27DD4E9031706), UINT64_C(0x0197F1275CBBB42C),
- UINT64_C(0x015ABB1962BC7CE5), UINT64_C(0x015AEBA4FCC2D21C),
- UINT64_C(0x01DB34AC91849D8B), UINT64_C(0x02168D50E8D52313),
- UINT64_C(0x024C7BCFFA60FB49), UINT64_C(0x00653790EC4A5122),
- UINT64_C(0x0021ECA115250E74) } },
- },
- {
- { { UINT64_C(0x01017ED5F1C86157), UINT64_C(0x01C5FACEAAF3291A),
- UINT64_C(0x01980E57AC2978AD), UINT64_C(0x012E4C78C1EF8537),
- UINT64_C(0x019080B37DC2F0DA), UINT64_C(0x0104D379379FF55E),
- UINT64_C(0x0019CF345BF6F641), UINT64_C(0x01CE7973781C9EB0),
- UINT64_C(0x00E6B4E5C2E7863E) },
- { UINT64_C(0x014E085628E15F36), UINT64_C(0x03113ED189D82402),
- UINT64_C(0x0198521CB21CCF92), UINT64_C(0x03CB794E55F64866),
- UINT64_C(0x01B6C417EBCEDCD4), UINT64_C(0x001D79C7600B1BE5),
- UINT64_C(0x02EC6810EA41A2B6), UINT64_C(0x0083606535BEC6E7),
- UINT64_C(0x01CA8E7CD41F2E03) } },
- { { UINT64_C(0x01BA87BAF1C9C2EC), UINT64_C(0x00D55499AAADC0DE),
- UINT64_C(0x019712C990B590E5), UINT64_C(0x00384B1ACA78C747),
- UINT64_C(0x03563BCAB01E0B5D), UINT64_C(0x0190C274005354FF),
- UINT64_C(0x00B9D6C425986F2F), UINT64_C(0x038E491D7F2754C6),
- UINT64_C(0x01B202739C50FF59) },
- { UINT64_C(0x03F58DFC16F1CACC), UINT64_C(0x00EE939AC23381A2),
- UINT64_C(0x020399FE184301C9), UINT64_C(0x0351F7998C95E6D7),
- UINT64_C(0x03713D0FEFC9F67B), UINT64_C(0x02651504977BC9CC),
- UINT64_C(0x039962831BD8B37B), UINT64_C(0x03398A2CADA7CFCE),
- UINT64_C(0x00D4F08A7E5A3118) } },
- { { UINT64_C(0x03C9826425A2D6F0), UINT64_C(0x00ECC054CD119CA9),
- UINT64_C(0x00C8AF9373A85F21), UINT64_C(0x03167F72CB478C61),
- UINT64_C(0x01CE9F2616361F7A), UINT64_C(0x03FB08CCEB9E536B),
- UINT64_C(0x0319FD98C00E9131), UINT64_C(0x0010725A47005067),
- UINT64_C(0x01D7C9A8F84C990D) },
- { UINT64_C(0x029CA261BAF35FA1), UINT64_C(0x0220865C1BFEF071),
- UINT64_C(0x0115DF412660A5A4), UINT64_C(0x02257646F5EF524C),
- UINT64_C(0x019648D3BF5907D4), UINT64_C(0x03B8287D6BB4E923),
- UINT64_C(0x00C1831BA518EF96), UINT64_C(0x01147F1EC444000D),
- UINT64_C(0x001BEB2743E8CF72) } },
- { { UINT64_C(0x017385BC9719C87C), UINT64_C(0x038E9A8AC23E84A0),
- UINT64_C(0x03B86FA4168B29E6), UINT64_C(0x0259140D286A2701),
- UINT64_C(0x0248D5F9426712B4), UINT64_C(0x01E876B4EE205101),
- UINT64_C(0x016F0D598FB30248), UINT64_C(0x020D4EEE450E3327),
- UINT64_C(0x0075F0EB2FEC4E8C) },
- { UINT64_C(0x02999066B392D834), UINT64_C(0x03A4F34FCBCA75D9),
- UINT64_C(0x029F3E28ABFA2CC4), UINT64_C(0x0207E1A7B58B1513),
- UINT64_C(0x036C4EE93B0C1C40), UINT64_C(0x038D0C53869B6127),
- UINT64_C(0x02203321AF3FCDF2), UINT64_C(0x0016E986CD98C912),
- UINT64_C(0x019AB5DBF8618B76) } },
- { { UINT64_C(0x02775F5E811FA55B), UINT64_C(0x002FF97CDF8F7EDE),
- UINT64_C(0x00AA05F646486F8F), UINT64_C(0x0357ABB8FF5CB222),
- UINT64_C(0x0047A8176117A59D), UINT64_C(0x01ED8538F6CBC1A6),
- UINT64_C(0x0209FE9034A7F53F), UINT64_C(0x0364120EC4B9D3CF),
- UINT64_C(0x019B67A37C660EDC) },
- { UINT64_C(0x0038B0D828C7A5B7), UINT64_C(0x015D9C74EAC7C806),
- UINT64_C(0x0118152AAA9222B5), UINT64_C(0x01B83339A6AA2783),
- UINT64_C(0x01993B4601A314EF), UINT64_C(0x0325A7A416B3D288),
- UINT64_C(0x019D7FD16DD01F3A), UINT64_C(0x021D190386BFFC60),
- UINT64_C(0x011CF2C0B0E2A983) } },
- { { UINT64_C(0x00D7DE7D18D8BE36), UINT64_C(0x02F0734BAAC04BF5),
- UINT64_C(0x0048BB9E44C3F40B), UINT64_C(0x035994B7094672F1),
- UINT64_C(0x02BD0CFD78BD4138), UINT64_C(0x0015A28B8F06A61A),
- UINT64_C(0x014D5DF2A7F95274), UINT64_C(0x028141F42EAB92B1),
- UINT64_C(0x00B25EF25C149754) },
- { UINT64_C(0x0057378C324BFA00), UINT64_C(0x001F4C62175258AF),
- UINT64_C(0x03153B4FD5FCA3E4), UINT64_C(0x000682DC5C05BE3E),
- UINT64_C(0x0330954DA1D1973A), UINT64_C(0x01BC1D711118932D),
- UINT64_C(0x0168D97A2A9692FD), UINT64_C(0x012BBEB288330777),
- UINT64_C(0x00E133BE00A38BE4) } },
- { { UINT64_C(0x03F431A945F8022D), UINT64_C(0x01CDF8AABB4F5212),
- UINT64_C(0x02CC1D637215E00A), UINT64_C(0x03D36BA40B447ED7),
- UINT64_C(0x02513AB7E6956FDD), UINT64_C(0x008D5E83EDDB9727),
- UINT64_C(0x01B75785B4FDC3C7), UINT64_C(0x01EAB35E8B3CAE24),
- UINT64_C(0x01339E1C87AA8ECC) },
- { UINT64_C(0x02D325A33450FD39), UINT64_C(0x00322202FEDA09D5),
- UINT64_C(0x024827340C12DF41), UINT64_C(0x01E66CCCF20D3B06),
- UINT64_C(0x02001372B74C978F), UINT64_C(0x012C696C6F55CD58),
- UINT64_C(0x02D10F2EED8A9308), UINT64_C(0x02688747F53110D6),
- UINT64_C(0x0188C13D0F26D624) } },
- { { UINT64_C(0x0239E7FBF9FFF942), UINT64_C(0x024391DE07C9C0A8),
- UINT64_C(0x03BB90544685654F), UINT64_C(0x010453EE881DA06B),
- UINT64_C(0x02D2A672E21ACDCD), UINT64_C(0x0047CF596F209D90),
- UINT64_C(0x0321D4C73047EE1B), UINT64_C(0x008011F4FFA1ADC5),
- UINT64_C(0x0051B7DD6F083F62) },
- { UINT64_C(0x00B4E0D173BF30CF), UINT64_C(0x0142CF0DBD8DD71C),
- UINT64_C(0x02FE7953062D3E36), UINT64_C(0x02A5AB5A7D6604A9),
- UINT64_C(0x03CC08A13AACC423), UINT64_C(0x024662C655FF1A2F),
- UINT64_C(0x0179D6E29B6B1FCA), UINT64_C(0x03C8D9EF4E5B76E6),
- UINT64_C(0x00CD341C315CEB11) } },
- { { UINT64_C(0x00CC4030AC8B2AF6), UINT64_C(0x016D6A39FA7E9D4C),
- UINT64_C(0x0392D441BAE14C3A), UINT64_C(0x038840FEA9B7D65B),
- UINT64_C(0x02398CE4933605AF), UINT64_C(0x022CD8745AC294D0),
- UINT64_C(0x00B8391D34172B85), UINT64_C(0x035C1A0D5C360EA4),
- UINT64_C(0x00B2CE02EA54ADC4) },
- { UINT64_C(0x004B32E432779E4D), UINT64_C(0x0396A43E6B80B056),
- UINT64_C(0x035AEFC64CE26A3C), UINT64_C(0x01E9181F393D3B2C),
- UINT64_C(0x0224B7B616D6F2A9), UINT64_C(0x0127AF2D0AF23C91),
- UINT64_C(0x000AD7965D20EADA), UINT64_C(0x0379FD4481124D87),
- UINT64_C(0x01BB6F3DFED6FF8E) } },
- { { UINT64_C(0x001E54056209B80C), UINT64_C(0x01535B3A19C72F26),
- UINT64_C(0x0160AA689BA423E2), UINT64_C(0x0188ECB5D9CC3A27),
- UINT64_C(0x02349FCF75CC0736), UINT64_C(0x0298585615D70FD1),
- UINT64_C(0x03A32918B91165DF), UINT64_C(0x022291948224D8DA),
- UINT64_C(0x0099F8E69358E726) },
- { UINT64_C(0x01F00247AE9F76E1), UINT64_C(0x0128BAD6165EB802),
- UINT64_C(0x01B045052E08E61D), UINT64_C(0x032D595886F8C4D8),
- UINT64_C(0x00186E393A2F7214), UINT64_C(0x016991BB5064F4DD),
- UINT64_C(0x02AD9C4CF5574CEF), UINT64_C(0x0255AD5071D22CCE),
- UINT64_C(0x01456916FD8D5687) } },
- { { UINT64_C(0x0133F0C2BD45283F), UINT64_C(0x01B7E6242FDEFD97),
- UINT64_C(0x035D6B97C76FCAF7), UINT64_C(0x01DEAC7652ACAD19),
- UINT64_C(0x03C4E3BEA33C8BB3), UINT64_C(0x0217A37165F99AD5),
- UINT64_C(0x0269B9B99EC2F11A), UINT64_C(0x028A7868FC6E7D80),
- UINT64_C(0x01D15668B929808B) },
- { UINT64_C(0x028D12F5F8D82B0E), UINT64_C(0x03E7880D363FAA5E),
- UINT64_C(0x00437A04942C06CB), UINT64_C(0x0049CD3A9C99AEE3),
- UINT64_C(0x015E2D9B6B404613), UINT64_C(0x0162924B16171DEA),
- UINT64_C(0x00D5B19300B07C85), UINT64_C(0x02FDE0650EE6F8B2),
- UINT64_C(0x00BB3143583D139C) } },
- { { UINT64_C(0x009BBB9CD613AC50), UINT64_C(0x0128ACBF00659E30),
- UINT64_C(0x003847B178A6C039), UINT64_C(0x03CE96D95CB2F3AB),
- UINT64_C(0x0319F2188F1C72FB), UINT64_C(0x0082FCC27E7E96A0),
- UINT64_C(0x00E32363BCE8DAB7), UINT64_C(0x0014FD07C4ADAC1E),
- UINT64_C(0x0130440FC8AE58D8) },
- { UINT64_C(0x0065ADF64359ED2E), UINT64_C(0x037ED7D5FA4BC647),
- UINT64_C(0x03FF76F3555C909F), UINT64_C(0x03512196FF57D59B),
- UINT64_C(0x00299F8EAAC04382), UINT64_C(0x0329BF8D6A784DA0),
- UINT64_C(0x0175E680B9D87F6E), UINT64_C(0x000779614D617559),
- UINT64_C(0x0091C31FD7BBAA02) } },
- { { UINT64_C(0x007961B4B2C087ED), UINT64_C(0x019162C863ECAFF8),
- UINT64_C(0x02BAA68FEDC62170), UINT64_C(0x00E14BEB5E7390A9),
- UINT64_C(0x014BD12090B0D96E), UINT64_C(0x01E7BB1B54107513),
- UINT64_C(0x023B8205C7A4AC9C), UINT64_C(0x0077AA83FD6A3B9F),
- UINT64_C(0x00B556918DDE426E) },
- { UINT64_C(0x007982C0406E7D53), UINT64_C(0x00514C5527392914),
- UINT64_C(0x030F83C68AD1F365), UINT64_C(0x01248844664ABB22),
- UINT64_C(0x00E9372C39E53CD3), UINT64_C(0x019288EBDD26390E),
- UINT64_C(0x0175B25020B2C5E2), UINT64_C(0x01BE6F3235A8D35E),
- UINT64_C(0x01BF2B1514039839) } },
- { { UINT64_C(0x00ACAC37A302E505), UINT64_C(0x027765CE9E34F2E4),
- UINT64_C(0x02EC67D63AAF96D8), UINT64_C(0x000F998F38DDD8C4),
- UINT64_C(0x01F09C36E648CC10), UINT64_C(0x00F522A0C94D1ACD),
- UINT64_C(0x01621C139782CB28), UINT64_C(0x002ADC14FDA30F4F),
- UINT64_C(0x000AFE14E60E403A) },
- { UINT64_C(0x03F6E66F873938D8), UINT64_C(0x008370549C4A240B),
- UINT64_C(0x019BCDB6FBB27AB2), UINT64_C(0x03968D48A1554399),
- UINT64_C(0x02AE029F24D2343E), UINT64_C(0x008518D4096DF4BA),
- UINT64_C(0x011410655CE49E44), UINT64_C(0x030585BCC07AC55D),
- UINT64_C(0x00DBC52BEF1D2C2E) } },
- { { UINT64_C(0x031E0D6D77452267), UINT64_C(0x02FDA38F6A949512),
- UINT64_C(0x01F65ED3128F260F), UINT64_C(0x0268DE30B333E479),
- UINT64_C(0x03FD84E6AC2E676C), UINT64_C(0x0393B320720BDA53),
- UINT64_C(0x009EDD5FCCBB47ED), UINT64_C(0x01B82B4900272372),
- UINT64_C(0x01D21A307BE4561F) },
- { UINT64_C(0x01FB6C41FDBC2674), UINT64_C(0x02FC0F6001620C6D),
- UINT64_C(0x009450A0F3C6CB0F), UINT64_C(0x015385B69A47DECA),
- UINT64_C(0x026E2296F08B9474), UINT64_C(0x0194DEC7BE891DCB),
- UINT64_C(0x008B5DA06C5F46EF), UINT64_C(0x019F5A58030A2A18),
- UINT64_C(0x00207771A8172F5B) } },
- { { UINT64_C(0x02D0EED2AA2FCC67), UINT64_C(0x028799FC7DD58724),
- UINT64_C(0x01664BF5933707D3), UINT64_C(0x039B5E487A0167D1),
- UINT64_C(0x02767C865F544F76), UINT64_C(0x012879933B9C8060),
- UINT64_C(0x03EBB40C5524547A), UINT64_C(0x0173A7851D6D690E),
- UINT64_C(0x01CF4AB59422F25D) },
- { UINT64_C(0x02E0C44B926C197B), UINT64_C(0x021DCFA310FAD65B),
- UINT64_C(0x03309DFCCBCED9CA), UINT64_C(0x02A11F05E3D88EA0),
- UINT64_C(0x039FE02B0CE3AE95), UINT64_C(0x023B5E3CAC5E3536),
- UINT64_C(0x02C9903F85BF51A2), UINT64_C(0x018141A1EBBB4D03),
- UINT64_C(0x01B6F9AE1517FBCC) } },
- },
- {
- { { UINT64_C(0x01CE126EEC3D1383), UINT64_C(0x03E60292016C63B4),
- UINT64_C(0x01086FC1B1F4E0C7), UINT64_C(0x02B824B832819651),
- UINT64_C(0x018B5EE5C0AC1703), UINT64_C(0x03467EED60D31DFE),
- UINT64_C(0x0370BD13E722F576), UINT64_C(0x01C406BA2A512BD9),
- UINT64_C(0x00D7E1D110502A7C) },
- { UINT64_C(0x02029FD2CA303000), UINT64_C(0x031CB26B2D4BB358),
- UINT64_C(0x001AACC8DD8A2366), UINT64_C(0x02FD746E61373E27),
- UINT64_C(0x01D1A80D5295C235), UINT64_C(0x01FA56B74D0D3443),
- UINT64_C(0x0203660094D0A8F7), UINT64_C(0x006ACC0E24009F44),
- UINT64_C(0x007532FAF2732979) } },
- { { UINT64_C(0x00CC8937C5CFE5E0), UINT64_C(0x036CA3F94D098379),
- UINT64_C(0x0127E76C1F2F6B01), UINT64_C(0x03F376385910CC44),
- UINT64_C(0x005AE2B93F0F4F7C), UINT64_C(0x001F51D975E23E7E),
- UINT64_C(0x0159FF4F64431F80), UINT64_C(0x0215FECEB62BCA1C),
- UINT64_C(0x00168401E32600A7) },
- { UINT64_C(0x01B5A301E78A8DB5), UINT64_C(0x00FF512D35D3F2D2),
- UINT64_C(0x0354D19F77E5A97B), UINT64_C(0x0271EFC5E9AFD789),
- UINT64_C(0x006980179F908FBC), UINT64_C(0x034A31A6FEF922C2),
- UINT64_C(0x01832DCC33A8480C), UINT64_C(0x02589E9D28BAFB44),
- UINT64_C(0x0115572B5F3957D4) } },
- { { UINT64_C(0x02B1A9337E8401D3), UINT64_C(0x0290DCDD374D1722),
- UINT64_C(0x03B06DFC52EC6DB8), UINT64_C(0x0230EA32F50E3F05),
- UINT64_C(0x00FF74654453A452), UINT64_C(0x01A248F21E47C014),
- UINT64_C(0x01E2CED97C15ABF4), UINT64_C(0x0283D12E9548735C),
- UINT64_C(0x011DE7FF5CC44367) },
- { UINT64_C(0x0397C8B2CA828FA8), UINT64_C(0x023C2C16EF221608),
- UINT64_C(0x0079F7CCDCEE62D1), UINT64_C(0x02ABBC4A12FA2ABB),
- UINT64_C(0x02D3E0D3AF058906), UINT64_C(0x016EE5FFCAFF1F4D),
- UINT64_C(0x0383A01497A17543), UINT64_C(0x015456C9C2BA3AA0),
- UINT64_C(0x00833A7F70B8DB1E) } },
- { { UINT64_C(0x02874A121147F509), UINT64_C(0x00814720ED638371),
- UINT64_C(0x03306823E9395088), UINT64_C(0x02A5E552F8389554),
- UINT64_C(0x00F06CF7F0BA5751), UINT64_C(0x030415DEE1815B81),
- UINT64_C(0x00E24A9DB057CA02), UINT64_C(0x0130F23B0BDFF500),
- UINT64_C(0x00CD32356D2FBCF3) },
- { UINT64_C(0x031835514BB690A0), UINT64_C(0x011475889E6369E4),
- UINT64_C(0x02A366B8DA44B373), UINT64_C(0x01336BAE9A4C91D2),
- UINT64_C(0x0321F6D6C8947D98), UINT64_C(0x0331E2910F0F8ECA),
- UINT64_C(0x01F6B3937B0234FE), UINT64_C(0x016C792D27998656),
- UINT64_C(0x009729CAFA8B37BB) } },
- { { UINT64_C(0x030BF08BF55F34E4), UINT64_C(0x01472A877A6E6046),
- UINT64_C(0x03502971975705FE), UINT64_C(0x00F5A66B1DDF090E),
- UINT64_C(0x01DD9C80102CADCC), UINT64_C(0x004EB57A202D88C1),
- UINT64_C(0x0383DED93A003D31), UINT64_C(0x00DF42EE4835E279),
- UINT64_C(0x010B2A2DF2E8CDFC) },
- { UINT64_C(0x00E3757112860379), UINT64_C(0x0049E41486F1D305),
- UINT64_C(0x007F50407D2B699F), UINT64_C(0x0186CFF64543014A),
- UINT64_C(0x015D637AD6EB6B8D), UINT64_C(0x03EDC1A07906ADD6),
- UINT64_C(0x025B1CE8EFA6E451), UINT64_C(0x0281938DC6CCB3C0),
- UINT64_C(0x01E95BF35241E85F) } },
- { { UINT64_C(0x01900B5C8B1B724E), UINT64_C(0x00091B0E23027016),
- UINT64_C(0x033EA7B567F8D8DD), UINT64_C(0x0149CA26370EF3C0),
- UINT64_C(0x0224F7CCEEAEB621), UINT64_C(0x01056822C07633BE),
- UINT64_C(0x02682C8A34D4C312), UINT64_C(0x017F1D80C56ACAFB),
- UINT64_C(0x000D28BD510F85EC) },
- { UINT64_C(0x0031C759D505A0E7), UINT64_C(0x00695B369E0D5C70),
- UINT64_C(0x007414EC503E140D), UINT64_C(0x02998878F14B0559),
- UINT64_C(0x03EB48B235BD02B9), UINT64_C(0x02030C241863472E),
- UINT64_C(0x00302A0DF1BDB378), UINT64_C(0x02ADB25754F52D99),
- UINT64_C(0x01EBEAF9E9BDE9AC) } },
- { { UINT64_C(0x0016D2E6C4CB8040), UINT64_C(0x0251BE4AB3BBC8D1),
- UINT64_C(0x00979A86B1EA6004), UINT64_C(0x03197F4F1967EFAE),
- UINT64_C(0x03A8E572D3878481), UINT64_C(0x0175BC0B4A3D453E),
- UINT64_C(0x0067A078B9E4BDD5), UINT64_C(0x00C290F9DB5CD51A),
- UINT64_C(0x00C8A1050BE75174) },
- { UINT64_C(0x0138FA01526AE111), UINT64_C(0x01E92EC50AC0E2D9),
- UINT64_C(0x03430EFE4DD66F27), UINT64_C(0x027E3E362221AF89),
- UINT64_C(0x0065DC30B6D8ED5E), UINT64_C(0x0194B4AA3299C658),
- UINT64_C(0x03FCCBD1A1EE5AFC), UINT64_C(0x0011C786A00C112C),
- UINT64_C(0x01770EC65BD04CBD) } },
- { { UINT64_C(0x0219978F485193F0), UINT64_C(0x0169EF77837E1846),
- UINT64_C(0x039A4F73B9DC8ADB), UINT64_C(0x0060DDE7E026EABA),
- UINT64_C(0x033EDEE638C66335), UINT64_C(0x0296BFF6A6D575A3),
- UINT64_C(0x01B793FCB261CF96), UINT64_C(0x00066B2DAA6E8B8E),
- UINT64_C(0x00FAA4EE0DF08936) },
- { UINT64_C(0x0082665D53161177), UINT64_C(0x00BF125BA82F6D39),
- UINT64_C(0x022B5DABCDFDBE3B), UINT64_C(0x021CD6983941E0F2),
- UINT64_C(0x010414D9EC902549), UINT64_C(0x03C8E709DAE4453B),
- UINT64_C(0x03B39712A9467665), UINT64_C(0x01718D188F0108E5),
- UINT64_C(0x0001E683E6E53299) } },
- { { UINT64_C(0x026BEC9ED63E2975), UINT64_C(0x02445B0FA3670F21),
- UINT64_C(0x01B0436EA7FA88A2), UINT64_C(0x01B3E0317834AC34),
- UINT64_C(0x0370A51D7EBF7519), UINT64_C(0x028FE5E7A5374634),
- UINT64_C(0x004F9C7DD9D61B9E), UINT64_C(0x024629F3A018136E),
- UINT64_C(0x01B14207DD17A593) },
- { UINT64_C(0x02B49CBF0B981980), UINT64_C(0x03D510AA4EE52E56),
- UINT64_C(0x0223FC5E38C54336), UINT64_C(0x006CECAD3BD995A0),
- UINT64_C(0x01C1E9CE9CFF80F2), UINT64_C(0x03F2A4F91A9DFFC4),
- UINT64_C(0x023C10907D4D0C02), UINT64_C(0x0266DE5575DC75DB),
- UINT64_C(0x00C42F22C54D0AE1) } },
- { { UINT64_C(0x02CA7240C82B5AA4), UINT64_C(0x009FC67BD6157E6E),
- UINT64_C(0x0237AEA0E986F61E), UINT64_C(0x0295536DA6F6D324),
- UINT64_C(0x03CCCEAED7D090D6), UINT64_C(0x02AEB5185AD3ED8F),
- UINT64_C(0x01709E10CC89909F), UINT64_C(0x02104E7DD9DB3C2E),
- UINT64_C(0x018FBE92AA69FDDA) },
- { UINT64_C(0x019CC5A0410AA767), UINT64_C(0x01BD2A1F9D7CB636),
- UINT64_C(0x016925EEC5FA539B), UINT64_C(0x030EE211BCC86603),
- UINT64_C(0x02286DD13B9B314D), UINT64_C(0x019EE14925C53864),
- UINT64_C(0x03BA30594CCCD2C4), UINT64_C(0x03CF135ECF524017),
- UINT64_C(0x009675B7F38F7A5F) } },
- { { UINT64_C(0x034097FDD5C529C4), UINT64_C(0x022BABC53852C90D),
- UINT64_C(0x005FA5449B2CFEAE), UINT64_C(0x0213E3712D2D891B),
- UINT64_C(0x01EC7B3EEE99C138), UINT64_C(0x027C357D0B9CBABB),
- UINT64_C(0x025A19E877887A6F), UINT64_C(0x00D4CD3E5DC97F03),
- UINT64_C(0x01A0BD7971FE9BC8) },
- { UINT64_C(0x01302079C035FA1B), UINT64_C(0x03A553C1D7472F9E),
- UINT64_C(0x01A4254310460FA3), UINT64_C(0x00172E37209ED67F),
- UINT64_C(0x01598766A435004B), UINT64_C(0x015F6DA2FE9089F7),
- UINT64_C(0x03D7A8AD6610ED72), UINT64_C(0x00218A47CD395F7C),
- UINT64_C(0x01CEBC586BD69C42) } },
- { { UINT64_C(0x005E156C633E8718), UINT64_C(0x036F6921E8311E5A),
- UINT64_C(0x012516B3E4747664), UINT64_C(0x016B6481265AF56F),
- UINT64_C(0x005B9CA959873FB0), UINT64_C(0x01215A2E38706CDD),
- UINT64_C(0x00C64AAAEE1FE5AB), UINT64_C(0x009494AE29DD5833),
- UINT64_C(0x001DE0FFFA144A84) },
- { UINT64_C(0x01AB0B04D7864A53), UINT64_C(0x03B6589B739D3720),
- UINT64_C(0x0342AE6EE03B4D2D), UINT64_C(0x0366C4CD40B083D3),
- UINT64_C(0x02E583D735216939), UINT64_C(0x028069A08705938A),
- UINT64_C(0x03470E4558BB0247), UINT64_C(0x037269A3A352E23F),
- UINT64_C(0x000A1B500F437A69) } },
- { { UINT64_C(0x017C93D92A097CC4), UINT64_C(0x001BA88CC46C7150),
- UINT64_C(0x01AE786C3A4D3E20), UINT64_C(0x028BF5869DC58997),
- UINT64_C(0x02E52726A122777F), UINT64_C(0x00972F198872159B),
- UINT64_C(0x02552DD5544B0BA5), UINT64_C(0x009FAC089C64945A),
- UINT64_C(0x00A926F159FE26EE) },
- { UINT64_C(0x003998CBAECC32F4), UINT64_C(0x01BD7CE18DCAAA28),
- UINT64_C(0x00A1F5FB988BB383), UINT64_C(0x03AEB19DEFD835C2),
- UINT64_C(0x00244E47BC8D865E), UINT64_C(0x0038157724E1BB10),
- UINT64_C(0x007BD8BF38E25231), UINT64_C(0x00C5E24E2CD69DAB),
- UINT64_C(0x01A779CC34494897) } },
- { { UINT64_C(0x004BD43B7D176E2E), UINT64_C(0x005E93AB83087469),
- UINT64_C(0x03E80C170CBB6730), UINT64_C(0x02CA4F7C8BEDBE63),
- UINT64_C(0x02A85DD542AB5799), UINT64_C(0x0066D2B71D97D372),
- UINT64_C(0x03558E6854EDDBC6), UINT64_C(0x01014B87714911B3),
- UINT64_C(0x0150C0A4F996E45F) },
- { UINT64_C(0x01E0E94EA8A05AA1), UINT64_C(0x02AFE47CFC92BB70),
- UINT64_C(0x0203EC4D3CE6EAF1), UINT64_C(0x024771DB1D696301),
- UINT64_C(0x0196D9AA529C496E), UINT64_C(0x03B56E31398127F0),
- UINT64_C(0x0387E08D7862B4A2), UINT64_C(0x032941073AE64CE3),
- UINT64_C(0x0000E769C78F3C16) } },
- { { UINT64_C(0x034AFDE7FF46E9D5), UINT64_C(0x01174874945BB22A),
- UINT64_C(0x0315AE08354CD33E), UINT64_C(0x020944101FCD5584),
- UINT64_C(0x02AD3EF0CDDE6E15), UINT64_C(0x030A2698AB480B82),
- UINT64_C(0x03BF15403C92749F), UINT64_C(0x025EFF1408AEDEF4),
- UINT64_C(0x00853B2112F03584) },
- { UINT64_C(0x017A76C60E367447), UINT64_C(0x031C3B84E9CFE4B6),
- UINT64_C(0x0383807320E00DD1), UINT64_C(0x02152F5E5EE3BE00),
- UINT64_C(0x035287A9CC92FA2D), UINT64_C(0x0007C4F52ABBB00A),
- UINT64_C(0x006B2558DC7D9071), UINT64_C(0x0266DBFFAED357E3),
- UINT64_C(0x007E76EA86C8A78C) } },
- { { UINT64_C(0x00DA97D33D831A04), UINT64_C(0x0273CA87AB20DA80),
- UINT64_C(0x004C77C7C118ED92), UINT64_C(0x00F87131473BDF57),
- UINT64_C(0x036EC3E2E0DE7125), UINT64_C(0x00C7E8EADB491D0D),
- UINT64_C(0x0299CB19B912B7BF), UINT64_C(0x0399A443D4E010F6),
- UINT64_C(0x0098FCF8A99C2A16) },
- { UINT64_C(0x030D9571D49B2FC3), UINT64_C(0x02127D20D334D6E9),
- UINT64_C(0x00CF98756BB05081), UINT64_C(0x02A955A34EA7C78A),
- UINT64_C(0x0099BBA4C82FA729), UINT64_C(0x03B80CA8EED74492),
- UINT64_C(0x03A7668CD742B7C3), UINT64_C(0x039AA1A4CD0B2F61),
- UINT64_C(0x01769BB74BE7BFCF) } },
- },
- {
- { { UINT64_C(0x01AE6D7AF8ECE594), UINT64_C(0x004BD233382C1067),
- UINT64_C(0x02FC7E73749707AD), UINT64_C(0x01A0C47D78BA765F),
- UINT64_C(0x02BB7416407B8B16), UINT64_C(0x02F996A9035A29ED),
- UINT64_C(0x01C78A5F9EA3DEA9), UINT64_C(0x03997AA8F9A04684),
- UINT64_C(0x0062155AD4E50AC6) },
- { UINT64_C(0x0136D4FEFEBBFAD7), UINT64_C(0x03C498A8C3B5B196),
- UINT64_C(0x03AF4B2081A7DC94), UINT64_C(0x02FE1693A20D804F),
- UINT64_C(0x0019DBDAD1684FFD), UINT64_C(0x03E47903EABFC90E),
- UINT64_C(0x00EA7078F3484441), UINT64_C(0x037A0851741BD87B),
- UINT64_C(0x004DEB7A4980ECBA) } },
- { { UINT64_C(0x02A998A0008164D4), UINT64_C(0x014B73504FD3FC3A),
- UINT64_C(0x00C19E4FF76A915D), UINT64_C(0x00D30C3B2FD0EC60),
- UINT64_C(0x01518FD432879FDC), UINT64_C(0x018585905FB0DE73),
- UINT64_C(0x002E0E88A51BB32E), UINT64_C(0x011E824BA1621756),
- UINT64_C(0x008F5503550AE008) },
- { UINT64_C(0x01F4C5CC039B003C), UINT64_C(0x034FE4F1205365F7),
- UINT64_C(0x029B502075F020C8), UINT64_C(0x02E622483E3884F2),
- UINT64_C(0x0096DBF1B7347D87), UINT64_C(0x03E49F71A5BBC472),
- UINT64_C(0x028F694B092BA1CC), UINT64_C(0x03911DA84B731F41),
- UINT64_C(0x00AEE98DB68D16A6) } },
- { { UINT64_C(0x03335FA8EB78796F), UINT64_C(0x02878D6632487FA2),
- UINT64_C(0x023DC13EBB873632), UINT64_C(0x0328E4AB268A2A07),
- UINT64_C(0x017A111FE36EA0A1), UINT64_C(0x02DD260BC4AB23DF),
- UINT64_C(0x02BD012E8019E481), UINT64_C(0x02DAEA5C2102ACDC),
- UINT64_C(0x0191F08F46778030) },
- { UINT64_C(0x01DAFF85FF6CA70B), UINT64_C(0x00C20C713262D23C),
- UINT64_C(0x0002F4B44F09083A), UINT64_C(0x014BFF17F10ECF45),
- UINT64_C(0x025ADB2237EA42A8), UINT64_C(0x03E47544193ED683),
- UINT64_C(0x016D405A3F97D5CE), UINT64_C(0x03412AAA28009BC3),
- UINT64_C(0x0061A9DB41BEFEDC) } },
- { { UINT64_C(0x02DE586F26762E69), UINT64_C(0x016435D71514BA52),
- UINT64_C(0x016D7A3D17B63A4D), UINT64_C(0x026D50DCE42619B6),
- UINT64_C(0x0071889F59482029), UINT64_C(0x011CE57167125C3C),
- UINT64_C(0x00A0EA2BE409EA4A), UINT64_C(0x009EDE87052C5E58),
- UINT64_C(0x01024A33C8A03073) },
- { UINT64_C(0x0190FE7C2B54A6C6), UINT64_C(0x006AD6F23DFB4339),
- UINT64_C(0x01A290051C927B4A), UINT64_C(0x001E3AB0900247C6),
- UINT64_C(0x02F0CF556BD9F5D6), UINT64_C(0x0044A9D7E6F09A3D),
- UINT64_C(0x03647C4823C77404), UINT64_C(0x0174246A05A125F4),
- UINT64_C(0x005046F70E49B3B4) } },
- { { UINT64_C(0x0168F14947F5FEA0), UINT64_C(0x00769E99AB9E6CB3),
- UINT64_C(0x0132518C89E21038), UINT64_C(0x01B680C1A8696720),
- UINT64_C(0x002ED6053CD44327), UINT64_C(0x01D30DD43B7E58A9),
- UINT64_C(0x00944E2E081D9491), UINT64_C(0x006831ACBEAD123C),
- UINT64_C(0x0152C11DC5777195) },
- { UINT64_C(0x00241773802E1A49), UINT64_C(0x01BAF7037807F846),
- UINT64_C(0x03D3C7A48FA494BE), UINT64_C(0x011E5017010FAAB7),
- UINT64_C(0x02754857375E5F4A), UINT64_C(0x03779B43EFE7F8E1),
- UINT64_C(0x0012FF3BABC982CB), UINT64_C(0x00FFF200A782A57D),
- UINT64_C(0x01525BFCB1CE27F1) } },
- { { UINT64_C(0x03E552EA093A81E5), UINT64_C(0x0289B3D7E8ED9281),
- UINT64_C(0x0342009AC81D0D79), UINT64_C(0x03AD34454A991783),
- UINT64_C(0x01E2910F69599605), UINT64_C(0x03D879F03BB2582D),
- UINT64_C(0x027BC06449C49ACB), UINT64_C(0x008DC219F862EDC8),
- UINT64_C(0x01C5BFA6129C1E94) },
- { UINT64_C(0x026A51D1748353E7), UINT64_C(0x0181475224C056F6),
- UINT64_C(0x00C626EAA883505E), UINT64_C(0x0279EE327830A7B4),
- UINT64_C(0x0320D8F515A684E8), UINT64_C(0x00C3F8E23CD44D3F),
- UINT64_C(0x02C122EE12C67CA1), UINT64_C(0x00E99C91530D5183),
- UINT64_C(0x0021144C6B142C61) } },
- { { UINT64_C(0x011D351AD93C77DA), UINT64_C(0x03AA1509EA474780),
- UINT64_C(0x018659BD1EF489E2), UINT64_C(0x003305C7CD548712),
- UINT64_C(0x0274078260A570D7), UINT64_C(0x0053143C92277CEB),
- UINT64_C(0x002C9848EA865C9F), UINT64_C(0x02CCE08E86A1AEA9),
- UINT64_C(0x017387D78B16B104) },
- { UINT64_C(0x004AA27AD541016D), UINT64_C(0x018249526E484E54),
- UINT64_C(0x02AB312423D0089E), UINT64_C(0x0219D7F11A43C693),
- UINT64_C(0x02063682A176BD49), UINT64_C(0x03B53A444F4AA295),
- UINT64_C(0x00795B99C8C7C949), UINT64_C(0x03E13055864354E1),
- UINT64_C(0x00AD0290F60CD7D0) } },
- { { UINT64_C(0x012D2A436D526DD9), UINT64_C(0x01CD402DD6D978C6),
- UINT64_C(0x00A58E861B88A485), UINT64_C(0x02D5660B63C2B513),
- UINT64_C(0x00AC661A50344950), UINT64_C(0x005912EC7C3046DF),
- UINT64_C(0x00386C50A42C0A1A), UINT64_C(0x03AB81C1B172201D),
- UINT64_C(0x00C7E276190DAFE0) },
- { UINT64_C(0x02C2EF02CE4F4EFB), UINT64_C(0x036C62A28EE8E529),
- UINT64_C(0x007713DEA66609AC), UINT64_C(0x0335AC64B1B06D35),
- UINT64_C(0x030C33E87E4697D9), UINT64_C(0x02A8B6DA5FD2C060),
- UINT64_C(0x00A7681837DA7123), UINT64_C(0x034383051138278A),
- UINT64_C(0x0100BA5CB675B5C3) } },
- { { UINT64_C(0x007A90498A37CD61), UINT64_C(0x00C21A3950646D6E),
- UINT64_C(0x00E24CC900B23BA5), UINT64_C(0x00177482F428680B),
- UINT64_C(0x008C265BAA81CF89), UINT64_C(0x035D3B4D224FFF8E),
- UINT64_C(0x036D6B85A5B0977B), UINT64_C(0x00D1075A6C1311DD),
- UINT64_C(0x01CE20C3E0DE4C26) },
- { UINT64_C(0x03983305308A7408), UINT64_C(0x034CC1C79BB9BDAE),
- UINT64_C(0x02079940C900D507), UINT64_C(0x011184B7705AB688),
- UINT64_C(0x00BE018DECC7C858), UINT64_C(0x00059833EA10EFD5),
- UINT64_C(0x03D3C58726A0CFF9), UINT64_C(0x03FAC56BC268E09A),
- UINT64_C(0x00AF6C171D653277) } },
- { { UINT64_C(0x01151276D19DDB66), UINT64_C(0x00BE849EE9A2D3A8),
- UINT64_C(0x02C6A7580CC1CD5D), UINT64_C(0x03AE7FCF32E2402D),
- UINT64_C(0x0077F3388646E57B), UINT64_C(0x0321275FFC38AED4),
- UINT64_C(0x035220194FAC16E6), UINT64_C(0x00AC60DD1664CBF4),
- UINT64_C(0x005C9F4FAEB1E475) },
- { UINT64_C(0x03454E2FDA228C02), UINT64_C(0x03CE54CE918B9E80),
- UINT64_C(0x01E6700CB1251E2C), UINT64_C(0x004D9EF2E269258E),
- UINT64_C(0x0271A9DFD10397F8), UINT64_C(0x01D68E1301C08065),
- UINT64_C(0x0255D3F4888FC07C), UINT64_C(0x01EA14C32D6DB6C1),
- UINT64_C(0x00641A5E7FF0CED4) } },
- { { UINT64_C(0x03D2DB7494E80EB1), UINT64_C(0x03429AAC7DF50EDF),
- UINT64_C(0x0193B4233D776372), UINT64_C(0x00FA6676BCB0445B),
- UINT64_C(0x00962AF93FA06ADE), UINT64_C(0x00ED262149C44EC5),
- UINT64_C(0x00DD0F0802C2CD3B), UINT64_C(0x0349A7F09C0CD9BA),
- UINT64_C(0x019BCEE240624924) },
- { UINT64_C(0x0301B8CB30F92986), UINT64_C(0x02FBD5618F84FCAA),
- UINT64_C(0x020844CC6DEA56EF), UINT64_C(0x0399AC423AE9922A),
- UINT64_C(0x0304B577679CF04F), UINT64_C(0x033A00D5B3E1E90B),
- UINT64_C(0x02E0EA5DF7501CB6), UINT64_C(0x01AEEBA7909CF3AB),
- UINT64_C(0x00D1F739C1192316) } },
- { { UINT64_C(0x03FBED19829AE558), UINT64_C(0x018A508538E70057),
- UINT64_C(0x00CB16FE844A9E7C), UINT64_C(0x02A5D97534D7DBBC),
- UINT64_C(0x005769E43FDAB701), UINT64_C(0x02371B260F0C6E67),
- UINT64_C(0x0088CED91D562ACB), UINT64_C(0x03FF0E5F0D26F719),
- UINT64_C(0x009911094F5E4AA4) },
- { UINT64_C(0x014DA634DAAD22D1), UINT64_C(0x0126CD74DB263614),
- UINT64_C(0x00B20F1368A80FE1), UINT64_C(0x01C40150F01BDEEF),
- UINT64_C(0x036B7B115D665EA4), UINT64_C(0x00E64D810EAB1790),
- UINT64_C(0x037432C58B6DDE4A), UINT64_C(0x02689716E469337C),
- UINT64_C(0x009023B703EED1A4) } },
- { { UINT64_C(0x0168DF986EB8B398), UINT64_C(0x0373053537795BF1),
- UINT64_C(0x018911988685F26D), UINT64_C(0x0387383FA6C93770),
- UINT64_C(0x019704736EAD528F), UINT64_C(0x0271A2FD2A7AB31F),
- UINT64_C(0x016F759D385DF60B), UINT64_C(0x00588A673CE9E385),
- UINT64_C(0x00F00D2C74D140B1) },
- { UINT64_C(0x037761186D05FF6A), UINT64_C(0x021D5810D7AE7578),
- UINT64_C(0x032F7D951B6FE596), UINT64_C(0x00F101711823BB39),
- UINT64_C(0x028DE92770998580), UINT64_C(0x037C0C99F0D97BF8),
- UINT64_C(0x030EB60AA7504E10), UINT64_C(0x038624C9A9EBB17E),
- UINT64_C(0x0117D8E0506A5993) } },
- { { UINT64_C(0x02D315A154D9F1F8), UINT64_C(0x00A34DBD30332164),
- UINT64_C(0x0306F497C34DB615), UINT64_C(0x03599315A4DB339F),
- UINT64_C(0x007E9E0F8E2399AC), UINT64_C(0x003A93148F4FA95A),
- UINT64_C(0x011F62B5F0DC45EF), UINT64_C(0x02C2CA027E1C8CCA),
- UINT64_C(0x017EDB2AB60DCF2F) },
- { UINT64_C(0x03D0BE47BDAF0C41), UINT64_C(0x0261770EA9BAF337),
- UINT64_C(0x00123C9A8D5C885C), UINT64_C(0x02304942CA223A54),
- UINT64_C(0x027514FEE2CC680A), UINT64_C(0x02845D9CADE7E084),
- UINT64_C(0x037BF3E603649E24), UINT64_C(0x00221D7FD1EC9BB3),
- UINT64_C(0x019ABE2E017E3282) } },
- { { UINT64_C(0x022C310986DBC74A), UINT64_C(0x016910C9D8D292FA),
- UINT64_C(0x0168FBA7C0C784B2), UINT64_C(0x02F0C2E785D2A006),
- UINT64_C(0x01AE45ADAA754923), UINT64_C(0x0340D3039A77094C),
- UINT64_C(0x028C800560A74DE4), UINT64_C(0x0209DAB7CF99A92A),
- UINT64_C(0x01A7AE95C3D65A81) },
- { UINT64_C(0x03D0EF28C4FA3D53), UINT64_C(0x01C7BD38B1347859),
- UINT64_C(0x0005A7461F21783E), UINT64_C(0x01367207E2FE3122),
- UINT64_C(0x033746BBB79E2E44), UINT64_C(0x0279FE17A5803572),
- UINT64_C(0x03015592FFEC7617), UINT64_C(0x02742174C25F4D16),
- UINT64_C(0x00E410A0B89682D7) } },
- { { UINT64_C(0x02B22FBEE727DDB2), UINT64_C(0x024FD40DFE0DC5F9),
- UINT64_C(0x015C3DCCFE2E8278), UINT64_C(0x029992449755EB6E),
- UINT64_C(0x03FD36B4574277E1), UINT64_C(0x02D49C964F2299EE),
- UINT64_C(0x021CD67B9805D246), UINT64_C(0x0157D17DBA6DBB8F),
- UINT64_C(0x014315532B63B009) },
- { UINT64_C(0x0192F41C11B068CF), UINT64_C(0x013ADE386B9A6252),
- UINT64_C(0x0023510A4F9C5B28), UINT64_C(0x027BD3DC9B9B0039),
- UINT64_C(0x02377F19B4B907D4), UINT64_C(0x0292B925A6106638),
- UINT64_C(0x01058CF22E01616A), UINT64_C(0x017799C00E576B04),
- UINT64_C(0x00A289A954F56291) } },
- },
- {
- { { UINT64_C(0x00C4AC143FFE4858), UINT64_C(0x0306D22EAAC4A5AD),
- UINT64_C(0x01F0A5791E3783D9), UINT64_C(0x03A0A974CB2ACA2D),
- UINT64_C(0x02E76FB3F03AA34D), UINT64_C(0x0217400AE3A40C22),
- UINT64_C(0x0040CD3B74A7ED3C), UINT64_C(0x00FCB122891AAD96),
- UINT64_C(0x01B8C8494718771D) },
- { UINT64_C(0x03F57D14A28DA023), UINT64_C(0x022E364741E3E46C),
- UINT64_C(0x01A7ABA67F27FDBC), UINT64_C(0x030FF1837DC3E97D),
- UINT64_C(0x00618486CF4908AD), UINT64_C(0x02CF161553F374F8),
- UINT64_C(0x019DD012E725571E), UINT64_C(0x033EDF6BF47BD717),
- UINT64_C(0x0125806554EE19B9) } },
- { { UINT64_C(0x018E9A7BA994A7B1), UINT64_C(0x02AC0D7BEC6A8983),
- UINT64_C(0x03D38D705E07CD01), UINT64_C(0x005566DD3C426505),
- UINT64_C(0x0067EB2AB8C5C6E4), UINT64_C(0x02833D0E2656CD6B),
- UINT64_C(0x01DDCA9C78AA1909), UINT64_C(0x00EDF1FB3DAA7F12),
- UINT64_C(0x0166F72F3DE51C63) },
- { UINT64_C(0x02B78FAEB96F6D73), UINT64_C(0x02052F35A5545293),
- UINT64_C(0x005CD62AD9BF553E), UINT64_C(0x00B728FA50CC968E),
- UINT64_C(0x019295FA16301250), UINT64_C(0x0287D8B59A13D480),
- UINT64_C(0x0316813DDF4A21F3), UINT64_C(0x01769E5723184C7C),
- UINT64_C(0x0066E0E7009AE7B5) } },
- { { UINT64_C(0x021F2EE46CDE12CD), UINT64_C(0x003D0000412CCD1F),
- UINT64_C(0x02C67E761CB63537), UINT64_C(0x02C1A38D4F403A59),
- UINT64_C(0x03B812F8D1F26B87), UINT64_C(0x029994AD5ACE97AC),
- UINT64_C(0x026C55C785488093), UINT64_C(0x01869CEF172A91D6),
- UINT64_C(0x01661593B4702F1D) },
- { UINT64_C(0x0197935A2366B021), UINT64_C(0x01C8C53ECC9EEE7B),
- UINT64_C(0x02C636CFB825AB8B), UINT64_C(0x02EEC0E46E96B427),
- UINT64_C(0x00525F145382F270), UINT64_C(0x0133F597DCA61576),
- UINT64_C(0x0237ACF913367D38), UINT64_C(0x02C6B96EB5398F41),
- UINT64_C(0x0088A6A556F6EF14) } },
- { { UINT64_C(0x03AE1C8DCCD34315), UINT64_C(0x0157B6DF5CCF4DF6),
- UINT64_C(0x02191AB191DCA071), UINT64_C(0x01897CF46F10173C),
- UINT64_C(0x02767320BD61533A), UINT64_C(0x01A9DAB7019D6315),
- UINT64_C(0x01911BB32715F1BB), UINT64_C(0x001C7F74F8A656CA),
- UINT64_C(0x0009C70F08ACB68E) },
- { UINT64_C(0x0072A1ED9356A25A), UINT64_C(0x01556970A7D5EEF6),
- UINT64_C(0x0350BEDB0F71D649), UINT64_C(0x03EA3565DDFF826F),
- UINT64_C(0x013B29E08B1AF8F4), UINT64_C(0x0331B92ACB74C5CA),
- UINT64_C(0x03A4E6E26F5AAC1D), UINT64_C(0x036F06A79D110118),
- UINT64_C(0x00631FDFA318D2BC) } },
- { { UINT64_C(0x035871450EAD4FF9), UINT64_C(0x0045783A9CFF37E4),
- UINT64_C(0x03713AE92AC33512), UINT64_C(0x009A3896CE34EF6D),
- UINT64_C(0x03A8EE82555DC9D1), UINT64_C(0x002C620829E4335D),
- UINT64_C(0x0375E016D1AE1B50), UINT64_C(0x016D891B140E00CD),
- UINT64_C(0x00097FE78FE880E9) },
- { UINT64_C(0x01A323FFCB8B195A), UINT64_C(0x014E7DA6CA0AAFF4),
- UINT64_C(0x00C88E8E6528DDB5), UINT64_C(0x01A720372EE878E6),
- UINT64_C(0x015A2426F3EF9BB8), UINT64_C(0x01604A559CF4A620),
- UINT64_C(0x02C8F10B967488E1), UINT64_C(0x028191262B209448),
- UINT64_C(0x019E5661C083C48E) } },
- { { UINT64_C(0x01D1ED07D6920A2A), UINT64_C(0x03909AA105A814DB),
- UINT64_C(0x029B1BBB7F2ECAC2), UINT64_C(0x03BB4096CC1FBE27),
- UINT64_C(0x0382CAD68C150CCC), UINT64_C(0x00F1CBB480EE5E69),
- UINT64_C(0x03933B382F4CE45C), UINT64_C(0x0283D1969E6EC1D6),
- UINT64_C(0x008C6BE4F8FBF5F9) },
- { UINT64_C(0x00C2A30AF1CA3CCC), UINT64_C(0x02FF4D4359C3CABE),
- UINT64_C(0x020AA78B337657B0), UINT64_C(0x01C5C613D10C423A),
- UINT64_C(0x003249BB2418CB6D), UINT64_C(0x00CAB4378A53687C),
- UINT64_C(0x0147E31B6118850C), UINT64_C(0x02D08DC29C2D596C),
- UINT64_C(0x00409A1F9C9C0372) } },
- { { UINT64_C(0x03985FC5DEB5DCD3), UINT64_C(0x02328F30C46302C2),
- UINT64_C(0x00260388D4747802), UINT64_C(0x03BFBB0240E60F52),
- UINT64_C(0x03B209042D288213), UINT64_C(0x00F7BBEE239C04F6),
- UINT64_C(0x039A7EE4CF9007B4), UINT64_C(0x01BFEC97A07FF7ED),
- UINT64_C(0x00F46BA7F4461BE4) },
- { UINT64_C(0x02FF04BE53B68E6C), UINT64_C(0x01CA69133AC1C9A1),
- UINT64_C(0x001C0711D4BE94AE), UINT64_C(0x02E7507B45945E53),
- UINT64_C(0x011B7A5F7EC81DBE), UINT64_C(0x0329BFC6DA7CDB63),
- UINT64_C(0x01FCD3B287A0A497), UINT64_C(0x01F250F924D3B826),
- UINT64_C(0x0174EABAF5F90BA0) } },
- { { UINT64_C(0x0288B8614B07B1BF), UINT64_C(0x00AE0C951E1C4290),
- UINT64_C(0x01FC49AB7CD0CA2F), UINT64_C(0x0139ED7FA367ECE7),
- UINT64_C(0x007ACFF8F0933B14), UINT64_C(0x01BE527A6CE02D5F),
- UINT64_C(0x03F3D3A06B11DFFE), UINT64_C(0x021959D14B1DF4BB),
- UINT64_C(0x01BC6741AD8DA8F8) },
- { UINT64_C(0x034CD028C42166D8), UINT64_C(0x0185807E32738495),
- UINT64_C(0x005883F1CCD9FD2E), UINT64_C(0x03CA0BFCEE08ED5A),
- UINT64_C(0x03EAF8CDFF12C8BC), UINT64_C(0x039F9E6871AF8AEE),
- UINT64_C(0x0109893E423B3304), UINT64_C(0x0120DC6E783F51AB),
- UINT64_C(0x011A855D5413AED9) } },
- { { UINT64_C(0x03EC078648AA3834), UINT64_C(0x022666BDFBC08928),
- UINT64_C(0x020CD318C559ED79), UINT64_C(0x031A1F3F1113AB91),
- UINT64_C(0x0225DA57498B9B85), UINT64_C(0x00501D2B9387A084),
- UINT64_C(0x01462ED6150B49FB), UINT64_C(0x0270A359C4EB430D),
- UINT64_C(0x01AD03ACD7F1F2DA) },
- { UINT64_C(0x00577220553E08C6), UINT64_C(0x02711DCC2A6176C2),
- UINT64_C(0x00D41E0F942DF9B3), UINT64_C(0x032019849BF44B40),
- UINT64_C(0x006F6F65E6AF51C1), UINT64_C(0x02192F8FD6395745),
- UINT64_C(0x0369C64E6D49408A), UINT64_C(0x01C1CA82AADBB384),
- UINT64_C(0x00252180D9240A33) } },
- { { UINT64_C(0x03B36603F69B34EA), UINT64_C(0x023601EA98DB7FF6),
- UINT64_C(0x0119384D5B4D0084), UINT64_C(0x009CB1557E1A2117),
- UINT64_C(0x0120F29FC187E5AB), UINT64_C(0x020795FEFEF91AF3),
- UINT64_C(0x01654BD2C20FF213), UINT64_C(0x0193B09B2AFFB3A3),
- UINT64_C(0x01F2DBD41C09A92B) },
- { UINT64_C(0x0190B8EB79047156), UINT64_C(0x002863629F98DF90),
- UINT64_C(0x0131D825BFCD5C94), UINT64_C(0x012459BCEEE81461),
- UINT64_C(0x012AEB328B250B06), UINT64_C(0x031E1C2DAC09694B),
- UINT64_C(0x000530A4AD5276F9), UINT64_C(0x02B3D1F18BB7C853),
- UINT64_C(0x01E8BD2FCCA04F6F) } },
- { { UINT64_C(0x02834F110665B1CF), UINT64_C(0x017AA90109CDC18A),
- UINT64_C(0x009242A3E1F2E720), UINT64_C(0x02D5A60BD5F8954E),
- UINT64_C(0x03508324EB838D5B), UINT64_C(0x02EDD0C3ED33B190),
- UINT64_C(0x00AAD5DC3A119996), UINT64_C(0x01CD04A457847144),
- UINT64_C(0x008F9F585EE51416) },
- { UINT64_C(0x0353544CA94CC511), UINT64_C(0x03C458B74ECFBB85),
- UINT64_C(0x00DFB34B9CF940F6), UINT64_C(0x025DDCAA8FA2C670),
- UINT64_C(0x005DE224A75FEDB1), UINT64_C(0x0133692E8F60712D),
- UINT64_C(0x0273753106CAA7BE), UINT64_C(0x01408D58EA2D6196),
- UINT64_C(0x00E26553508F8448) } },
- { { UINT64_C(0x01A3A4F60BB13D25), UINT64_C(0x0023ED9ED8B71298),
- UINT64_C(0x03FFC9A520FCC5AA), UINT64_C(0x0045A041830B9268),
- UINT64_C(0x00CC9DB2983FF213), UINT64_C(0x0121E74580D3BD97),
- UINT64_C(0x03180DFFF5302191), UINT64_C(0x017F708B61C069C2),
- UINT64_C(0x00AFC5190BADFB44) },
- { UINT64_C(0x0059EAFDA4B66F01), UINT64_C(0x007705DA965D6F67),
- UINT64_C(0x020B87871134FA29), UINT64_C(0x01AD088735B31B4F),
- UINT64_C(0x018012C061713383), UINT64_C(0x0284C3C51E97DE38),
- UINT64_C(0x011439AE9AC5E3B5), UINT64_C(0x0201A73CE2ADC421),
- UINT64_C(0x013663825C862321) } },
- { { UINT64_C(0x018D68C0B140A004), UINT64_C(0x01BFAA6599011216),
- UINT64_C(0x01E7950576D7B0B1), UINT64_C(0x0078B24B131D0E5F),
- UINT64_C(0x02AD5C3FFEDF02C1), UINT64_C(0x0322CFD3147C6177),
- UINT64_C(0x038BD27915C61C9C), UINT64_C(0x02F37687B9498DE9),
- UINT64_C(0x00EBB6AC6E166ECF) },
- { UINT64_C(0x01DE078E81F8F797), UINT64_C(0x036F3FD0C148612A),
- UINT64_C(0x00D42800CEE62CC8), UINT64_C(0x02EF08C94C9988E1),
- UINT64_C(0x02A200E24C7221CE), UINT64_C(0x0087BB91FBA9446C),
- UINT64_C(0x01AEF9F64351AA5D), UINT64_C(0x0379F61D1F515F5C),
- UINT64_C(0x01D6BBEA838FBDE0) } },
- { { UINT64_C(0x029C5257AC98DFAE), UINT64_C(0x033122DA34CA0C86),
- UINT64_C(0x02E5AEB04EB596D8), UINT64_C(0x01866E31FF449E97),
- UINT64_C(0x01EFC618512D868E), UINT64_C(0x02AB8DD8A2E422DD),
- UINT64_C(0x0315FBBF0AB5F678), UINT64_C(0x029B64EE769245C7),
- UINT64_C(0x006C6C12185D61E3) },
- { UINT64_C(0x008781A5F0C92FB5), UINT64_C(0x02186CDBC76A7DC2),
- UINT64_C(0x02BF30F2AE35EBF2), UINT64_C(0x02A9033768598F59),
- UINT64_C(0x026D8F763CE2DDB2), UINT64_C(0x000096A41DC06247),
- UINT64_C(0x0378DBDD308791A2), UINT64_C(0x0303B0E7D471E5F3),
- UINT64_C(0x0047B4CFEAEEA101) } },
- { { UINT64_C(0x03329136A629DD22), UINT64_C(0x00E5BE3AD1E98750),
- UINT64_C(0x00E718574118A518), UINT64_C(0x0001BFD334A31B85),
- UINT64_C(0x010ACC7BD56131AD), UINT64_C(0x01BAE8680FF31AF2),
- UINT64_C(0x033BF365D3656538), UINT64_C(0x01275681F6A3E780),
- UINT64_C(0x01D9134C0EBA1F9E) },
- { UINT64_C(0x03FC0784F75200EB), UINT64_C(0x02505880E37CB45D),
- UINT64_C(0x02D012B6F4AEDF75), UINT64_C(0x0239FE68EEDA06B2),
- UINT64_C(0x0214FD97D35A83E1), UINT64_C(0x0161FD60913389DA),
- UINT64_C(0x02E06AA08A955A74), UINT64_C(0x00A478BB3A540872),
- UINT64_C(0x0194213360ACA782) } },
- { { UINT64_C(0x01C7D837402145D7), UINT64_C(0x029A3987EA8CF574),
- UINT64_C(0x017B7322E3920EED), UINT64_C(0x01DA90CCE8A07229),
- UINT64_C(0x019966632762CF1A), UINT64_C(0x02EA82E975BFDBB2),
- UINT64_C(0x00D089776CD7C2DA), UINT64_C(0x01094FFA3D38BAB2),
- UINT64_C(0x00ED9425E7C61A8F) },
- { UINT64_C(0x030890ADFDDB406F), UINT64_C(0x02F38194427778C1),
- UINT64_C(0x02645A577E29DB0B), UINT64_C(0x02B73BB5A04F839F),
- UINT64_C(0x02CBE569872B94D6), UINT64_C(0x034D3051E8314100),
- UINT64_C(0x0228FAA39358328C), UINT64_C(0x00F6B458D19C41F5),
- UINT64_C(0x01B60D6BFFF120A1) } },
- },
- {
- { { UINT64_C(0x03B0D91DCEF34144), UINT64_C(0x0240FE90ACAA2EEA),
- UINT64_C(0x02F5638E4C5FABC5), UINT64_C(0x0279B56C13AF89E7),
- UINT64_C(0x007BB923CEB3416E), UINT64_C(0x024528E9111E0646),
- UINT64_C(0x0019F3658FEFA212), UINT64_C(0x007942C115ACBB8B),
- UINT64_C(0x00B3176361BBE92C) },
- { UINT64_C(0x0056A1AF824FDE34), UINT64_C(0x03EFECC262943F2F),
- UINT64_C(0x00F55AB9CFA7333B), UINT64_C(0x02E423937E89B9C8),
- UINT64_C(0x0177865B2FF1E104), UINT64_C(0x00D9D0346E5AE2AF),
- UINT64_C(0x0250F4369EB257AA), UINT64_C(0x02479F5CEE51B49A),
- UINT64_C(0x007A588E4A1470CD) } },
- { { UINT64_C(0x006FD0B27FF5FDD9), UINT64_C(0x0315207EADCA6EB7),
- UINT64_C(0x038531FDE9E82663), UINT64_C(0x03E9C7DA1307DC24),
- UINT64_C(0x007FCF66FC293D27), UINT64_C(0x0073411170172CF4),
- UINT64_C(0x03FA0B1709D86BA1), UINT64_C(0x0023FC735B565525),
- UINT64_C(0x00C65EABD8A0D474) },
- { UINT64_C(0x001EA477B6B64713), UINT64_C(0x03CAD4127E803700),
- UINT64_C(0x02F97EFCE2EC6148), UINT64_C(0x021B881732700041),
- UINT64_C(0x01A6D874ACACA115), UINT64_C(0x00A7CA705835C220),
- UINT64_C(0x01191B137DD5C14D), UINT64_C(0x02CB4161AB1B2384),
- UINT64_C(0x01EA96470F229677) } },
- { { UINT64_C(0x016F41AA44BE78BD), UINT64_C(0x00DBC87805312BB8),
- UINT64_C(0x0318156EA17D7B54), UINT64_C(0x026CDF0148DE5C45),
- UINT64_C(0x03F974EA0D77EB08), UINT64_C(0x02136BB03794FF4E),
- UINT64_C(0x01B53A227C4C2E9C), UINT64_C(0x02B0229F1C11498E),
- UINT64_C(0x01CDAB34CEF9122C) },
- { UINT64_C(0x01942B2B520FED74), UINT64_C(0x0278BB0606178C91),
- UINT64_C(0x03C70799A5848E33), UINT64_C(0x01024AF0188FBCA7),
- UINT64_C(0x017502FD5E81CD21), UINT64_C(0x0341AC8FD5BE6E9F),
- UINT64_C(0x03807308C0C55507), UINT64_C(0x02DA9120D7D39BD9),
- UINT64_C(0x0078E0C0ADC9F3B8) } },
- { { UINT64_C(0x0249E4056736B7A8), UINT64_C(0x000AD5FD0E326A32),
- UINT64_C(0x00F1D8DD5BD49BAE), UINT64_C(0x03C65D240FD61C7B),
- UINT64_C(0x0348AA1A2246B05E), UINT64_C(0x03D6D10E55244A30),
- UINT64_C(0x02E9906E8F8D085E), UINT64_C(0x0187FD8BEFA8BFBF),
- UINT64_C(0x00F8ECD06F55C492) },
- { UINT64_C(0x003A56FE1DEF19D6), UINT64_C(0x0197C74F933E6798),
- UINT64_C(0x005694559A51C48D), UINT64_C(0x028423114901AE4B),
- UINT64_C(0x006C134B2FD133CC), UINT64_C(0x01F5B1FDE595A9F1),
- UINT64_C(0x037CDF87E407C290), UINT64_C(0x01C9430D19026B6E),
- UINT64_C(0x00AE4EBC0B91EEC4) } },
- { { UINT64_C(0x0027F5A2CFACC519), UINT64_C(0x0007D8CA3F95188A),
- UINT64_C(0x02386E76D1ED1FA2), UINT64_C(0x012CFC615ECB44AE),
- UINT64_C(0x02BAC8E16C4EECC0), UINT64_C(0x030FC8B6EACB48A4),
- UINT64_C(0x0356F1C94FF8F3DD), UINT64_C(0x00E7898C9228D80E),
- UINT64_C(0x0100391DE5D28C45) },
- { UINT64_C(0x00DDA167BAEA3E6E), UINT64_C(0x024E9B6238591A96),
- UINT64_C(0x000B124B20D76C9C), UINT64_C(0x00844E80DAD85B15),
- UINT64_C(0x006322B9CC9CFBC9), UINT64_C(0x03C3F3E68B0EC1FB),
- UINT64_C(0x0198C8988C8CDF43), UINT64_C(0x012F63F58B2E6769),
- UINT64_C(0x0146D6A4BBF8FA16) } },
- { { UINT64_C(0x025929A379C36058), UINT64_C(0x03AA8D69D0F228FC),
- UINT64_C(0x03137C58503106D0), UINT64_C(0x031D3407BEC09250),
- UINT64_C(0x012A5E9F3CB78FCD), UINT64_C(0x03C89A97F7DE8B2F),
- UINT64_C(0x03FFA336D8C2CB9D), UINT64_C(0x03CDFCCBE0B2ABB7),
- UINT64_C(0x018DB520A44381C3) },
- { UINT64_C(0x037F91B7E71EFA02), UINT64_C(0x02CD2A4F8F2A0051),
- UINT64_C(0x03247FBAA82739BD), UINT64_C(0x004F7652DC5CA6F6),
- UINT64_C(0x0247D54BFA1094B5), UINT64_C(0x01201F41A5F24EA8),
- UINT64_C(0x036AE048899075C8), UINT64_C(0x008DE5B2C2092D5F),
- UINT64_C(0x01A05D1DEF90E6C9) } },
- { { UINT64_C(0x009C63F00DDEF055), UINT64_C(0x029E867514AE17BD),
- UINT64_C(0x0071477B7FA6548A), UINT64_C(0x01DCF23B30CCB894),
- UINT64_C(0x039F3EAF10214846), UINT64_C(0x0131314742EE42E6),
- UINT64_C(0x025A42537B162041), UINT64_C(0x0344D321CAEDE286),
- UINT64_C(0x00C49346566A2F80) },
- { UINT64_C(0x00AC1057A1A2F1BD), UINT64_C(0x01B16F3F4CF6D85A),
- UINT64_C(0x00470A35FA26D12C), UINT64_C(0x02FDF7EC571664A6),
- UINT64_C(0x00357DE22954AF5D), UINT64_C(0x01CB9B6C3295D89E),
- UINT64_C(0x02A6D5E003D32198), UINT64_C(0x02BCFEFCD08395C8),
- UINT64_C(0x0024E3256C9EC29E) } },
- { { UINT64_C(0x02E3E3726899A80A), UINT64_C(0x0026F9277D12E5D8),
- UINT64_C(0x03A9F147B7CC784D), UINT64_C(0x02D1E1BE2785B816),
- UINT64_C(0x035FD35148DBC7EB), UINT64_C(0x008735EF566F4D0B),
- UINT64_C(0x023A56774FF10ABF), UINT64_C(0x02650BA6B7B26925),
- UINT64_C(0x016ADF49024BBCF1) },
- { UINT64_C(0x003AD342E4E67976), UINT64_C(0x03C92192D00DAB16),
- UINT64_C(0x020460FDED50A384), UINT64_C(0x034C8C7A7CCCB477),
- UINT64_C(0x026F1F63625979C2), UINT64_C(0x01C81B4E10D5FC66),
- UINT64_C(0x036A3D003DC0490C), UINT64_C(0x012B902A026C1347),
- UINT64_C(0x01F7B86A36390DAD) } },
- { { UINT64_C(0x000691E2EC112CB8), UINT64_C(0x024EF99D143B7D60),
- UINT64_C(0x0115A42EEFCFA47F), UINT64_C(0x01E802D725D2BBE5),
- UINT64_C(0x0121B37EFA442937), UINT64_C(0x0017BB506D32E10E),
- UINT64_C(0x026AAA87600CCD57), UINT64_C(0x016CF4C8E0A70FF4),
- UINT64_C(0x009FFBF163AE94B4) },
- { UINT64_C(0x0295886926814D18), UINT64_C(0x03A0FBF4C1A9E1DB),
- UINT64_C(0x03C42214E510B980), UINT64_C(0x01795048E2D2FBCB),
- UINT64_C(0x007E6ECA8AF45230), UINT64_C(0x03B7348F6C6F8B62),
- UINT64_C(0x0082EEE297D2810F), UINT64_C(0x001262A01DEC143A),
- UINT64_C(0x01B9903A2D05B891) } },
- { { UINT64_C(0x023634A86BE77EA4), UINT64_C(0x00A0B41ED63F1BFE),
- UINT64_C(0x0275C4824374C264), UINT64_C(0x02608A7A328E460A),
- UINT64_C(0x00FED89AAE8DD2B7), UINT64_C(0x02109029EF3CE021),
- UINT64_C(0x011969F67E04BEBE), UINT64_C(0x01A57DE74BB6D7CF),
- UINT64_C(0x0032260FF5FAEF2A) },
- { UINT64_C(0x02058C1764B8EB93), UINT64_C(0x034A7BEAEE142796),
- UINT64_C(0x01C4178E14455ABA), UINT64_C(0x0089C0C3FD3F4E75),
- UINT64_C(0x006C6AD7C0E981DA), UINT64_C(0x0228FCA3E86007B0),
- UINT64_C(0x025CE2ECCA48B8F4), UINT64_C(0x01E5A636E10EA6E7),
- UINT64_C(0x00B998D460C196E1) } },
- { { UINT64_C(0x0160926185730C8D), UINT64_C(0x032DE7C19EF3EB5F),
- UINT64_C(0x01B89DB78DA4AF19), UINT64_C(0x03E8BF1A8A7D683F),
- UINT64_C(0x00C74484F132486E), UINT64_C(0x0020C78A33777ADF),
- UINT64_C(0x028B418FCCA39E1E), UINT64_C(0x03C6B30F7BDFA864),
- UINT64_C(0x012E1D3651FF3815) },
- { UINT64_C(0x023FC40DA01A8D36), UINT64_C(0x0396DC8A8E0AC356),
- UINT64_C(0x0257ECBA277518BE), UINT64_C(0x015E0BE8CDCF0B5F),
- UINT64_C(0x017CA95C0BC967EE), UINT64_C(0x0305AA19591EC746),
- UINT64_C(0x00ECEE9B1C5E531F), UINT64_C(0x017F62DDF7CD8C93),
- UINT64_C(0x01843F3A5D58D681) } },
- { { UINT64_C(0x008235BF1CE87EAC), UINT64_C(0x0337B13BA7D5C15E),
- UINT64_C(0x03846B02056DE241), UINT64_C(0x033C6CAEB5DEAB90),
- UINT64_C(0x030248638020D787), UINT64_C(0x0224F8D01B9221DD),
- UINT64_C(0x01F402C62FF58E8A), UINT64_C(0x03AAD9850E5506F5),
- UINT64_C(0x003902A9875C05FB) },
- { UINT64_C(0x0020DA18AA01F6F0), UINT64_C(0x030A6715F4E78D18),
- UINT64_C(0x037807033B777232), UINT64_C(0x01B7606FD787D415),
- UINT64_C(0x008A9CC327698B87), UINT64_C(0x0061BCA066C82FF1),
- UINT64_C(0x01BFA28EB25A2709), UINT64_C(0x024D6272DC7593CB),
- UINT64_C(0x00EC0BB76A281871) } },
- { { UINT64_C(0x032999435C8AA41D), UINT64_C(0x01A489157A228E17),
- UINT64_C(0x0156F793B6B0E956), UINT64_C(0x028D96D92EBD33D6),
- UINT64_C(0x0359740492EFE167), UINT64_C(0x015A71262E572E91),
- UINT64_C(0x01FA4485B8FC6399), UINT64_C(0x0347A0956647A542),
- UINT64_C(0x010E38E5A425F12F) },
- { UINT64_C(0x00AEFDFC244C41BB), UINT64_C(0x003952945BE8B3B5),
- UINT64_C(0x0319FE9C6BCFD1F0), UINT64_C(0x03F504A658EDEE0B),
- UINT64_C(0x02ED873A43F5A1E1), UINT64_C(0x02712F6EE0434187),
- UINT64_C(0x03F8F26F084CADB4), UINT64_C(0x0037A2587E5D9BC4),
- UINT64_C(0x007E3E8815CB75BB) } },
- { { UINT64_C(0x00D0B08F2FB80E07), UINT64_C(0x001F1C3F02C8AA99),
- UINT64_C(0x02C965AB70A7B621), UINT64_C(0x02934839B849A6F8),
- UINT64_C(0x003F88BA718D98ED), UINT64_C(0x02899A10EC155762),
- UINT64_C(0x0019825E2EA0BBFE), UINT64_C(0x031BADAF50BB1556),
- UINT64_C(0x00C2052564BF2D01) },
- { UINT64_C(0x02BBD600B64986F4), UINT64_C(0x0001308CBE96F1C1),
- UINT64_C(0x00C849F303B9F9E3), UINT64_C(0x02D14076FC63D1DE),
- UINT64_C(0x0236169D2D35EA78), UINT64_C(0x0264B3B8EE95BD05),
- UINT64_C(0x002F66E82F19619B), UINT64_C(0x0095E5BD3AAECF3F),
- UINT64_C(0x004DAC1BA614BE0C) } },
- { { UINT64_C(0x031F00ED67DF6D6E), UINT64_C(0x03D70047AC4E0BA7),
- UINT64_C(0x02D8711992AA1754), UINT64_C(0x036ECAEB89D30859),
- UINT64_C(0x0036A42A32CE3566), UINT64_C(0x01D98A9D0A6301E2),
- UINT64_C(0x0254343364F9506D), UINT64_C(0x00BA44E9D5246E7C),
- UINT64_C(0x01A19768E78BDB19) },
- { UINT64_C(0x01612B559D4C1CFE), UINT64_C(0x00FD06AC0FA53998),
- UINT64_C(0x01000FCBA8F910A9), UINT64_C(0x02941E6AFC5E6D3F),
- UINT64_C(0x00CAEFF18F01E2A7), UINT64_C(0x00C3611A9DC5189A),
- UINT64_C(0x004BD42C721A7B6E), UINT64_C(0x02CFCE0AB6DE8255),
- UINT64_C(0x0157E0604D9A6299) } },
- { { UINT64_C(0x004C36A17F3F00C1), UINT64_C(0x03AAE85897960B4C),
- UINT64_C(0x00162519D94A771E), UINT64_C(0x00EFA894195CFB14),
- UINT64_C(0x0377393E0BEA5785), UINT64_C(0x01275D68934C0C3C),
- UINT64_C(0x020E33D09CE0D489), UINT64_C(0x00636664BBECE0A2),
- UINT64_C(0x01D94E3BA2F10531) },
- { UINT64_C(0x00F1D932B72461C9), UINT64_C(0x030803CCCD33A980),
- UINT64_C(0x03D527D0F91F6DBE), UINT64_C(0x032A75271076B0B3),
- UINT64_C(0x00618C0762DDDF10), UINT64_C(0x0023381E1F452B93),
- UINT64_C(0x02E55888093553F9), UINT64_C(0x0179B91A78A3270C),
- UINT64_C(0x008109452184E2A2) } },
- },
- {
- { { UINT64_C(0x039BF352B2648196), UINT64_C(0x0255A7410BF9D82B),
- UINT64_C(0x00E69B9D9444400A), UINT64_C(0x0115B8CE4ADD0E15),
- UINT64_C(0x0286C0702CA01A26), UINT64_C(0x0343E585D0F62B8D),
- UINT64_C(0x0270AB3B658EDEED), UINT64_C(0x00BDF019DAC3BE2C),
- UINT64_C(0x01DA71CEBA8F0207) },
- { UINT64_C(0x031B398D4D9BC7BB), UINT64_C(0x000CF24C3929C7AB),
- UINT64_C(0x01B421C8D3FD5E6F), UINT64_C(0x007CC4196EE4E246),
- UINT64_C(0x020BD4BEA34DCA8A), UINT64_C(0x0290B50CAE9698DF),
- UINT64_C(0x00FCD1330F886EB9), UINT64_C(0x01E1AC79F03E8C00),
- UINT64_C(0x00DA9DFFAC1D7299) } },
- { { UINT64_C(0x023B6F4171DE62A2), UINT64_C(0x02483565211B08E1),
- UINT64_C(0x03590C48E9F4C557), UINT64_C(0x0300655D7CA7761E),
- UINT64_C(0x000FC94679705CC8), UINT64_C(0x03F1F51E4C554176),
- UINT64_C(0x02F4AA91C9B85DEC), UINT64_C(0x01830B06FDF1C0BD),
- UINT64_C(0x01705BC114A4818F) },
- { UINT64_C(0x026AF34683BFC242), UINT64_C(0x02704B0386A138E6),
- UINT64_C(0x0201A2D902335BC5), UINT64_C(0x00F97548337FE82F),
- UINT64_C(0x0068481E95BAAC46), UINT64_C(0x02198BC38D3244C8),
- UINT64_C(0x02FB3AE37E76F25B), UINT64_C(0x0051FD7A6C46B763),
- UINT64_C(0x00BB4F63544525E2) } },
- { { UINT64_C(0x0184463DCFE3927A), UINT64_C(0x038592C4A5446C69),
- UINT64_C(0x00820DA1FCA22B30), UINT64_C(0x01BE68F5BD638385),
- UINT64_C(0x01820BD08BDBAACC), UINT64_C(0x02A44306C3D5797E),
- UINT64_C(0x0038CCA1AA697778), UINT64_C(0x00C7C5B9FA5A6346),
- UINT64_C(0x00AF09862D4121FA) },
- { UINT64_C(0x01CB3F3FBEBC6638), UINT64_C(0x037E0A83514FED33),
- UINT64_C(0x03EACD5523409D6F), UINT64_C(0x020D6BA55D786340),
- UINT64_C(0x01CCC13F9ADFA032), UINT64_C(0x0019CA4869978150),
- UINT64_C(0x039E387EBA3B5F3E), UINT64_C(0x02E531E4CE95EAED),
- UINT64_C(0x019F9D4B6C1E271A) } },
- { { UINT64_C(0x03D9C637E6B4D0F2), UINT64_C(0x02F39727B4A2B4A9),
- UINT64_C(0x03B1C91C466BE1FF), UINT64_C(0x0002CA1D422DB470),
- UINT64_C(0x035959F6F8064E3B), UINT64_C(0x01A06409B64B70C1),
- UINT64_C(0x0138166589198416), UINT64_C(0x01E4D2E6E69DFBF6),
- UINT64_C(0x01235B6CCAD8ED3A) },
- { UINT64_C(0x036BC004511EBBDB), UINT64_C(0x03C77128404EB6AD),
- UINT64_C(0x02C7DBC63944D083), UINT64_C(0x00A0B83D92DC53A7),
- UINT64_C(0x0236B4A39AE88503), UINT64_C(0x03A8D6E5C0E1C279),
- UINT64_C(0x029FE38FA8BE1456), UINT64_C(0x03585B0A0A7CC668),
- UINT64_C(0x00A7641453F65799) } },
- { { UINT64_C(0x00158306BEA400A9), UINT64_C(0x007F40534A2A445F),
- UINT64_C(0x01C35C303D86F4A4), UINT64_C(0x00EDDE592FDFA8FD),
- UINT64_C(0x0103A9EFC14289AA), UINT64_C(0x03407BDDBE6E50BA),
- UINT64_C(0x009401AB57CFB13E), UINT64_C(0x0399C8A12EA5A5B1),
- UINT64_C(0x00FC6AFA631B2401) },
- { UINT64_C(0x03676F7FA3EA1F68), UINT64_C(0x0292D21900F132BA),
- UINT64_C(0x023C1FDE32777454), UINT64_C(0x016AD44E9E4A043B),
- UINT64_C(0x034CE0B6BF5A83B8), UINT64_C(0x007C5DBECEE12BCA),
- UINT64_C(0x034C6521C9D71204), UINT64_C(0x0295DA0F38E7DE8B),
- UINT64_C(0x0062381F9092A871) } },
- { { UINT64_C(0x021E20A63FBBA24C), UINT64_C(0x036388882DF52B55),
- UINT64_C(0x00530F2F7C7C2371), UINT64_C(0x03643DB108CC955E),
- UINT64_C(0x024B18165F1B6107), UINT64_C(0x02769559E8B8FA46),
- UINT64_C(0x00ABDA3964357585), UINT64_C(0x006A3DE26D6BDE65),
- UINT64_C(0x00FA0EF45FF0F7F0) },
- { UINT64_C(0x0328AF72F4ADEFE3), UINT64_C(0x00F209DB1F3C181A),
- UINT64_C(0x01A0AC16B36B8052), UINT64_C(0x03FE68F1AFEB358F),
- UINT64_C(0x011BB7B356C432BB), UINT64_C(0x03D087AF0D447953),
- UINT64_C(0x00088B00BECEF91E), UINT64_C(0x0330A2DA3B763B85),
- UINT64_C(0x01CC26379FF0902A) } },
- { { UINT64_C(0x02451A0F72841A85), UINT64_C(0x0354FC0056ED797F),
- UINT64_C(0x03F4EAB6EB12B346), UINT64_C(0x0032B842273C8FB8),
- UINT64_C(0x024B836D935DD874), UINT64_C(0x0090627CCD9E0492),
- UINT64_C(0x0244927C3C49DF5D), UINT64_C(0x0042534A4E5AA66E),
- UINT64_C(0x00B4C23CB62729C6) },
- { UINT64_C(0x00295DE15E7B0D82), UINT64_C(0x003481AED4B38216),
- UINT64_C(0x020CB574DA2A8CEB), UINT64_C(0x03DB292DC006EFC3),
- UINT64_C(0x03153DE3966C31DB), UINT64_C(0x0398C0D13BB538D2),
- UINT64_C(0x00D2735B5509DAE6), UINT64_C(0x00BBE1C7422AD656),
- UINT64_C(0x006495E2F55306CC) } },
- { { UINT64_C(0x00FC0E58752517BF), UINT64_C(0x0287DC3FE2714AA6),
- UINT64_C(0x024BBBD332D8AADB), UINT64_C(0x000BF6FA0D08504F),
- UINT64_C(0x02E724A624D71D7E), UINT64_C(0x01F16EF435B7F288),
- UINT64_C(0x024E6F71370923F3), UINT64_C(0x00C2B9525922566C),
- UINT64_C(0x005733338A43CFE0) },
- { UINT64_C(0x0372270A8BB6E5C0), UINT64_C(0x0023295E1C578E27),
- UINT64_C(0x01EA019B1BDD171A), UINT64_C(0x0243564F2EC5E9B6),
- UINT64_C(0x01283B58FFA9DAE7), UINT64_C(0x00215CCB462BFC41),
- UINT64_C(0x03E3900D562119A3), UINT64_C(0x0273C10EF622442D),
- UINT64_C(0x00D7B5F5A5718A0A) } },
- { { UINT64_C(0x03E792204254F3D7), UINT64_C(0x0197A7FB52460AD3),
- UINT64_C(0x0387DC97132E1376), UINT64_C(0x00D82DE34F7F5873),
- UINT64_C(0x03B853655C8CF8AC), UINT64_C(0x0173E013A8BD55E9),
- UINT64_C(0x008A7D4896369A87), UINT64_C(0x024DBCC16EA9BB3A),
- UINT64_C(0x010910C0CEC40352) },
- { UINT64_C(0x03B95A34F108C612), UINT64_C(0x0333E2F3D8672331),
- UINT64_C(0x028C77D48D5C235B), UINT64_C(0x0233CC3106C11962),
- UINT64_C(0x03EBBF90DDDA15FE), UINT64_C(0x0369066DD81ED647),
- UINT64_C(0x03BD05AA96CD4304), UINT64_C(0x039E3FFACDB3BA32),
- UINT64_C(0x01EAC4B260DDEC7F) } },
- { { UINT64_C(0x035858F23BBE227D), UINT64_C(0x00EAE5030697E923),
- UINT64_C(0x02368A87F3DE71C5), UINT64_C(0x0168E7B6DEE0F7C3),
- UINT64_C(0x00527543ED139D52), UINT64_C(0x0127219B1CDD187E),
- UINT64_C(0x023DB1516D99AC2E), UINT64_C(0x008101C88F395DB5),
- UINT64_C(0x00C6A87659F9030E) },
- { UINT64_C(0x039C69A3A7EC3A20), UINT64_C(0x02842173900384B8),
- UINT64_C(0x0136BA0852E2F7FE), UINT64_C(0x034921364764BE1F),
- UINT64_C(0x02C74764840F38B3), UINT64_C(0x02F37D32908AE4DC),
- UINT64_C(0x0138C24B162396AC), UINT64_C(0x02A70AD1A514245D),
- UINT64_C(0x00C442ABF244BFAF) } },
- { { UINT64_C(0x02A6B09F093E7BB1), UINT64_C(0x027395A268EC7AC7),
- UINT64_C(0x028CC643D554CA43), UINT64_C(0x0035243849E2C949),
- UINT64_C(0x03CF25745B571D36), UINT64_C(0x00F8968B891A06D4),
- UINT64_C(0x03F9158462DF4912), UINT64_C(0x0277B23F176B632C),
- UINT64_C(0x0100FDC9203FE38B) },
- { UINT64_C(0x024667E35C0213B3), UINT64_C(0x001C9D8E55C59D73),
- UINT64_C(0x03C67911C028CE7C), UINT64_C(0x01D6BE78640D4CA8),
- UINT64_C(0x024E359FD8B3F600), UINT64_C(0x03240449153262A6),
- UINT64_C(0x03B253E7A16A83A5), UINT64_C(0x02FDB9879C3019FF),
- UINT64_C(0x01D5771531A45180) } },
- { { UINT64_C(0x02FFF1EEAD72BA02), UINT64_C(0x01773B2AD40CD7B5),
- UINT64_C(0x00B549067C93A24B), UINT64_C(0x0040E568D769A5B9),
- UINT64_C(0x01CBA8C547CFD559), UINT64_C(0x01B900D1740D29F8),
- UINT64_C(0x0153A5FEC2807EDD), UINT64_C(0x003616B13CBFDC6E),
- UINT64_C(0x014FA30FBEC2B9FF) },
- { UINT64_C(0x03CEBD84555A3B73), UINT64_C(0x011642C087A74BA4),
- UINT64_C(0x03FAF4C90C28B568), UINT64_C(0x00D2B6FE13831FC3),
- UINT64_C(0x02F1845F4A404C99), UINT64_C(0x03031352DB2945ED),
- UINT64_C(0x0192B108B24A2CC8), UINT64_C(0x008B79F2C497B8AE),
- UINT64_C(0x016844B1F9A48A1A) } },
- { { UINT64_C(0x033F1B159EA0B318), UINT64_C(0x015BA4F73890FCA5),
- UINT64_C(0x03AB1671767AEB58), UINT64_C(0x0190DE3F4B53983C),
- UINT64_C(0x01C67D39EE1606B7), UINT64_C(0x02092898897E0832),
- UINT64_C(0x016BC61B17E221D9), UINT64_C(0x0302B2A3F7863F1A),
- UINT64_C(0x0153FC11A3315E45) },
- { UINT64_C(0x02AC9E25352466CC), UINT64_C(0x03A49408E6FA3892),
- UINT64_C(0x03B3B7FC83F96BAA), UINT64_C(0x02447E01B52DE677),
- UINT64_C(0x01EB6353F032192D), UINT64_C(0x00910C3CF3E5926D),
- UINT64_C(0x02261F650A5EA2DB), UINT64_C(0x03AA8819EC45E274),
- UINT64_C(0x01F274F4B47595FA) } },
- { { UINT64_C(0x0026282EB3F78C83), UINT64_C(0x00C28C0709CFCB19),
- UINT64_C(0x01821376CE1FE0A2), UINT64_C(0x01FDCED392DF4511),
- UINT64_C(0x007CEFA4CDFC46EC), UINT64_C(0x01C18D201835A1D3),
- UINT64_C(0x021190BA9D0FC1B3), UINT64_C(0x01CF1181F215C327),
- UINT64_C(0x0144F63DC1DC2337) },
- { UINT64_C(0x02467154F82AE76F), UINT64_C(0x00A8E4BC6B21A6C1),
- UINT64_C(0x003C5960D11DFC29), UINT64_C(0x02CCE05B7F97DFEA),
- UINT64_C(0x0155EBEF61A21A64), UINT64_C(0x02E5A1DD22DB3809),
- UINT64_C(0x008CACD3BAEA4ADC), UINT64_C(0x01AF102BA92E48C7),
- UINT64_C(0x0060B7381DB1721E) } },
- { { UINT64_C(0x03861A0264B1FB35), UINT64_C(0x02F8C8B3CD33A6FA),
- UINT64_C(0x030806F41BBA295F), UINT64_C(0x0164D82631325495),
- UINT64_C(0x00CE9EA6FF0E358B), UINT64_C(0x0079012DD18DCC6B),
- UINT64_C(0x000CC353D3BB1AC0), UINT64_C(0x03AB6D47DE397D50),
- UINT64_C(0x00AD096897EA08E2) },
- { UINT64_C(0x023B78EFC3812C10), UINT64_C(0x0089EFA9532A659C),
- UINT64_C(0x0281A0EB9A3DF013), UINT64_C(0x03AE4559CDF48DB0),
- UINT64_C(0x00CF5D05BA21B5A4), UINT64_C(0x000FB2B315217C86),
- UINT64_C(0x018D07209C8D7927), UINT64_C(0x0142BF514B4FAA4C),
- UINT64_C(0x002374D59706AD5B) } },
- { { UINT64_C(0x00C15F67DD00894F), UINT64_C(0x0365718AE78487A2),
- UINT64_C(0x01F5CF8A8DD7221A), UINT64_C(0x00B966824944DA72),
- UINT64_C(0x039495E53E96A028), UINT64_C(0x017A489926C99CDF),
- UINT64_C(0x03E7DBA2A6042AD8), UINT64_C(0x0070896FE2C77ED8),
- UINT64_C(0x01DE2D3E99009396) },
- { UINT64_C(0x02CDACE519305F18), UINT64_C(0x0199321FCFA0FFC9),
- UINT64_C(0x01FDEB80C6DC481C), UINT64_C(0x02944307EF501A18),
- UINT64_C(0x0007F535095DB6A0), UINT64_C(0x01898CF112F16E56),
- UINT64_C(0x00CB5741AFE7E00B), UINT64_C(0x01926B1FD8D17FCB),
- UINT64_C(0x015E5CD28BDE5A59) } },
- },
- {
- { { UINT64_C(0x0287283D0F0DB502), UINT64_C(0x01F7D518BD1DEC47),
- UINT64_C(0x0110E901D0288278), UINT64_C(0x000A9C8AA5A57C0C),
- UINT64_C(0x03B765C5FA16BDCF), UINT64_C(0x03E5DF4E7DE798D7),
- UINT64_C(0x00F43CD382F586CB), UINT64_C(0x016DF729B4C5BFE2),
- UINT64_C(0x00F84CAB1D3D3490) },
- { UINT64_C(0x03C62F43F45CE248), UINT64_C(0x01779CCA073E2076),
- UINT64_C(0x003E7EB22E4B1573), UINT64_C(0x0192926CE48BFBEA),
- UINT64_C(0x00AEAE190B45D381), UINT64_C(0x02BD36FBE7AB443A),
- UINT64_C(0x00906E0CD124F126), UINT64_C(0x025881B2A14C49E4),
- UINT64_C(0x016E768F54273911) } },
- { { UINT64_C(0x0339D7B298B06389), UINT64_C(0x00171C63E44DC1B1),
- UINT64_C(0x00C31B1589FD2080), UINT64_C(0x00B27F131898A9FA),
- UINT64_C(0x0342FE5ADE76B5A2), UINT64_C(0x01090D97105A2655),
- UINT64_C(0x0388BB1432187198), UINT64_C(0x02D27D0C82BF52D7),
- UINT64_C(0x00807B9F1B11A583) },
- { UINT64_C(0x01F3344975177EBC), UINT64_C(0x00D1C4854243F6DB),
- UINT64_C(0x00CF85E1839AB312), UINT64_C(0x00D9C19A12D20012),
- UINT64_C(0x01709110819085E7), UINT64_C(0x011FEDA170483D5C),
- UINT64_C(0x01B28F055EEB31A0), UINT64_C(0x02289D0F2CBAB0E6),
- UINT64_C(0x000867BA2963A0E1) } },
- { { UINT64_C(0x03F6911B90581DC0), UINT64_C(0x01F1FB19987F20FB),
- UINT64_C(0x0134E22EFA2F437F), UINT64_C(0x00398E1EB156A4E0),
- UINT64_C(0x0325F4C0DBD2FAF4), UINT64_C(0x0204D252D5C55B5B),
- UINT64_C(0x00E279F64EA373DA), UINT64_C(0x01DB9B5CD34A8E6F),
- UINT64_C(0x00D14F2FC1B2EE3D) },
- { UINT64_C(0x0391CF084FAB453E), UINT64_C(0x016D9E632F3C4388),
- UINT64_C(0x01D15FD339420C4A), UINT64_C(0x026356CC61C907C7),
- UINT64_C(0x026E23E3D6197795), UINT64_C(0x0142F5E058DB2B6C),
- UINT64_C(0x020EFE8EAFF59180), UINT64_C(0x00A481A4F4563A8C),
- UINT64_C(0x012FEE21C8B4C4E9) } },
- { { UINT64_C(0x02056DCD3DB8A57B), UINT64_C(0x0317AAE4B46AB720),
- UINT64_C(0x031833D064C1F1CD), UINT64_C(0x03A3CC17BEBD056B),
- UINT64_C(0x03F05A7034003715), UINT64_C(0x009FAC41671C58C9),
- UINT64_C(0x01BEE4D8BD8671CA), UINT64_C(0x0004BC6DBD8A8392),
- UINT64_C(0x01F15A2D6E92E74A) },
- { UINT64_C(0x010933993D4BD6B6), UINT64_C(0x028502613D6FDD77),
- UINT64_C(0x0134D55E73D97A09), UINT64_C(0x001DB5E602D2AA86),
- UINT64_C(0x00FE1E6979BF531F), UINT64_C(0x02AC99028117960B),
- UINT64_C(0x03849A42EAAB4E66), UINT64_C(0x0190FBBD3B94D87F),
- UINT64_C(0x011CAB9AC249065C) } },
- { { UINT64_C(0x03000D01D5AD0B4E), UINT64_C(0x01E094F415439045),
- UINT64_C(0x0071645EF32A823C), UINT64_C(0x013C18E27FCF9EA5),
- UINT64_C(0x00B2733886CDC7A9), UINT64_C(0x02902330EF732EA5),
- UINT64_C(0x003C25CEA5C5686B), UINT64_C(0x029DF5773028F0CD),
- UINT64_C(0x016FB941FCD6583D) },
- { UINT64_C(0x01DEA99AF3494AD9), UINT64_C(0x03BA2C1B9C712901),
- UINT64_C(0x02E32E4B0A8430F2), UINT64_C(0x00CB695E8BF6F96B),
- UINT64_C(0x0161F767B32907C2), UINT64_C(0x002FC8531B5E7CEC),
- UINT64_C(0x00298C1304153AFA), UINT64_C(0x0189BCBF02EE4544),
- UINT64_C(0x0035592EC7CAC39B) } },
- { { UINT64_C(0x0359513866647B76), UINT64_C(0x00DB6945523879DD),
- UINT64_C(0x0349C662AF030344), UINT64_C(0x03638440AAB5A275),
- UINT64_C(0x02A0720FE9DC8A6B), UINT64_C(0x011CEE4DF271AE5F),
- UINT64_C(0x00BC676869500BE5), UINT64_C(0x02F5135FF9B7674F),
- UINT64_C(0x00142511483B55E9) },
- { UINT64_C(0x02DE083E6D8A2C33), UINT64_C(0x014C0545D4B8062F),
- UINT64_C(0x01AD94143AC28589), UINT64_C(0x01AEBAA37C00A634),
- UINT64_C(0x0078E06973DA0209), UINT64_C(0x03F56A237FA0E6B0),
- UINT64_C(0x02879F4A94D49E71), UINT64_C(0x01BE6BF822D1FD4F),
- UINT64_C(0x00F9E2018F9FBF87) } },
- { { UINT64_C(0x025B8DCB938F6A40), UINT64_C(0x0026725B42FA4F9B),
- UINT64_C(0x039198D12A999847), UINT64_C(0x010A9C957A1EFA18),
- UINT64_C(0x012FAA8E7E5D1356), UINT64_C(0x0205AB8BB7E3A8BA),
- UINT64_C(0x015652F190E95489), UINT64_C(0x0231452E385A88C6),
- UINT64_C(0x0096A500D25B0C46) },
- { UINT64_C(0x01B6696514F1EAD3), UINT64_C(0x026BE39E6BD0E127),
- UINT64_C(0x01725DEFE2C66DD3), UINT64_C(0x01FEAE05ECA5B5BB),
- UINT64_C(0x015AA101430609C7), UINT64_C(0x0274AAB1807123A3),
- UINT64_C(0x02A446B243B7DBAC), UINT64_C(0x007DC3A911987A6B),
- UINT64_C(0x005309D7E2813F76) } },
- { { UINT64_C(0x01966924104023FD), UINT64_C(0x0020B1F67AD27833),
- UINT64_C(0x03DFD742FB1D5AC6), UINT64_C(0x017F6DD6D843D1C9),
- UINT64_C(0x01DEAB06F70CFD0B), UINT64_C(0x00F3AAA1D84BA46E),
- UINT64_C(0x01535D03B00F23FA), UINT64_C(0x02F223786ADE70A7),
- UINT64_C(0x00DC3F149A4B2AAE) },
- { UINT64_C(0x0318A8079CA626DD), UINT64_C(0x00A1DE38CE5C6BE6),
- UINT64_C(0x032F55E2E4E50992), UINT64_C(0x0192257A6FB7EED9),
- UINT64_C(0x020B9106C175FDEB), UINT64_C(0x001ACA988C739470),
- UINT64_C(0x02A12D0A78C3DAD7), UINT64_C(0x02A0BFDBC1802E4D),
- UINT64_C(0x0138CB75E6BBB8BA) } },
- { { UINT64_C(0x00B271637F32AB3F), UINT64_C(0x02196867BE3CDC78),
- UINT64_C(0x00647C1710CC4F5D), UINT64_C(0x00A0EDE0B8D8DB71),
- UINT64_C(0x0092AB51B9BB942A), UINT64_C(0x030CEE5FF47C8C77),
- UINT64_C(0x0172B6296758CE89), UINT64_C(0x03FBF70A184CFE5F),
- UINT64_C(0x0101B88E67F1E05D) },
- { UINT64_C(0x02FFBCD12737D38E), UINT64_C(0x02754305441EA3F7),
- UINT64_C(0x0174766ADA98B6A0), UINT64_C(0x00EEEAD822C29CD7),
- UINT64_C(0x02D88F6B991FA26B), UINT64_C(0x02CB655B1E5DF95B),
- UINT64_C(0x03DD0BD505307E4F), UINT64_C(0x010182FDFC359D4A),
- UINT64_C(0x00755C3675A01A9E) } },
- { { UINT64_C(0x00371ACBFD4D4113), UINT64_C(0x01CD0CEE90EDA0C0),
- UINT64_C(0x023F0667BA099F71), UINT64_C(0x0122476EC028AFF8),
- UINT64_C(0x0057490C1B9D3C8E), UINT64_C(0x0037D1A2CAFBC030),
- UINT64_C(0x0357613B144BA059), UINT64_C(0x030B5ED5F7E2DFAA),
- UINT64_C(0x00C03407E66571BC) },
- { UINT64_C(0x015B2051592A3113), UINT64_C(0x033C0B977FE1CA61),
- UINT64_C(0x0114564ECE17F466), UINT64_C(0x02770F5D995C1ECC),
- UINT64_C(0x01D8797648C617E7), UINT64_C(0x00B30F6FB78CAD34),
- UINT64_C(0x036CD504495109EC), UINT64_C(0x02EA78A9F6758E7F),
- UINT64_C(0x007A71C9E769E9C6) } },
- { { UINT64_C(0x011D5BE35201CD59), UINT64_C(0x0209D1C58765C0EE),
- UINT64_C(0x01D25192839B1DB8), UINT64_C(0x03EAD38ED4A2B60E),
- UINT64_C(0x0057B36709A7B7AA), UINT64_C(0x0085B62AF338BC2B),
- UINT64_C(0x030F3BEF5577F894), UINT64_C(0x0390BAA242140FD9),
- UINT64_C(0x011B9BF27FA21CD6) },
- { UINT64_C(0x031FF60458FFB263), UINT64_C(0x00D71C9EC589C2CE),
- UINT64_C(0x006C50B6449B7493), UINT64_C(0x034EF7D63824AD56),
- UINT64_C(0x038578A6820938F3), UINT64_C(0x00843B021ED27247),
- UINT64_C(0x02672B0B7E864C01), UINT64_C(0x00FE28A0AD914F56),
- UINT64_C(0x01870F7E6544AD26) } },
- { { UINT64_C(0x03FABFF21E593E49), UINT64_C(0x01EB902CACEDCD38),
- UINT64_C(0x010907F07EA1634E), UINT64_C(0x013A3B3D20F1ACCD),
- UINT64_C(0x035F3C751269190C), UINT64_C(0x02F6BAE3746C46A6),
- UINT64_C(0x00097CBB9F7B998C), UINT64_C(0x016B88BF2C151BD8),
- UINT64_C(0x01317587E7C4BAF5) },
- { UINT64_C(0x027516E2062B46F6), UINT64_C(0x01703ECD4583F2AB),
- UINT64_C(0x007D01ABE67B4364), UINT64_C(0x00F1753628034E7C),
- UINT64_C(0x0108FF0FECD3BD76), UINT64_C(0x033B697531A2F0AC),
- UINT64_C(0x010AC9943B9A6425), UINT64_C(0x020BC633526FFAA7),
- UINT64_C(0x0006E03EC9A132B1) } },
- { { UINT64_C(0x016BC247531FFCBB), UINT64_C(0x02EE2DDBF721D516),
- UINT64_C(0x0052E0725E10638A), UINT64_C(0x013566F49B1AAC88),
- UINT64_C(0x007343ED5106C60D), UINT64_C(0x02985C4AAAB232AC),
- UINT64_C(0x0113830C6312DE7A), UINT64_C(0x0136F1CF05895FFF),
- UINT64_C(0x01ED7817C0B0027B) },
- { UINT64_C(0x02716A42F749B010), UINT64_C(0x039DC807B7BDBC44),
- UINT64_C(0x035DFD64A2C7F19C), UINT64_C(0x00AFE5B488D67F84),
- UINT64_C(0x03831B1AD5D8B241), UINT64_C(0x00FEF3BA557CC901),
- UINT64_C(0x0082C2A38F96B970), UINT64_C(0x027380F80F3D96E5),
- UINT64_C(0x014FDF6544812C07) } },
- { { UINT64_C(0x03600187B0C6A752), UINT64_C(0x019E405A0263FA53),
- UINT64_C(0x000E0EA369E1C1BF), UINT64_C(0x0130C422E3895E24),
- UINT64_C(0x035F4072E884BDCB), UINT64_C(0x0284B4DBC9FDB267),
- UINT64_C(0x0159D4401B2054DE), UINT64_C(0x03649FACE16E526C),
- UINT64_C(0x0100AC3AAFFE225D) },
- { UINT64_C(0x03BA224ACAFA8C2B), UINT64_C(0x031E5C26E31FAF8C),
- UINT64_C(0x00B183566D47E97E), UINT64_C(0x0020C64F9C9C2688),
- UINT64_C(0x02F6655D04CC893B), UINT64_C(0x03908BE8D4648FE4),
- UINT64_C(0x02F14F85922DC116), UINT64_C(0x031D345610C10114),
- UINT64_C(0x00FC287447A5FA2D) } },
- { { UINT64_C(0x020880798CEE5802), UINT64_C(0x03BE370A4C38C7FF),
- UINT64_C(0x00934BE76CF041A3), UINT64_C(0x011B7A12BC50EEE4),
- UINT64_C(0x0301BD4FC9636CD4), UINT64_C(0x03C53C2A0264C2CE),
- UINT64_C(0x0347FF0A389DC319), UINT64_C(0x03A848048891AD07),
- UINT64_C(0x0110D35394388CFB) },
- { UINT64_C(0x0042E86EE18DA0C0), UINT64_C(0x0359DB5D730A12EE),
- UINT64_C(0x03D8CD72D5690026), UINT64_C(0x01FD191FD18F2690),
- UINT64_C(0x00B8691FD8727A16), UINT64_C(0x0135130205267C55),
- UINT64_C(0x011FDBAF57A304DB), UINT64_C(0x012D7FC9DED7342D),
- UINT64_C(0x01BFE56058019C74) } },
- { { UINT64_C(0x00ADCF21754184BF), UINT64_C(0x02532EC18F101A1B),
- UINT64_C(0x02E7AA58B7598AF4), UINT64_C(0x0297C67528666348),
- UINT64_C(0x022BAF11DF85DAD5), UINT64_C(0x0097F7BCDA9CFFA7),
- UINT64_C(0x03F0C563228A2E65), UINT64_C(0x0316126723B57D49),
- UINT64_C(0x019B45ECCD3F5983) },
- { UINT64_C(0x02B86D25E0A95EDC), UINT64_C(0x027ED42D9C73BD22),
- UINT64_C(0x0385F10181D77392), UINT64_C(0x02C8AA05E16378DB),
- UINT64_C(0x02962E884B04947C), UINT64_C(0x00A054D788CF48A9),
- UINT64_C(0x006616654F6E2CF7), UINT64_C(0x021848D66B0ACC97),
- UINT64_C(0x00E73704171C5696) } },
+ SECStatus res = SECSuccess;
+ if (!pt || !pt->data) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
}
-};
-
-/*-
- * Finite field inversion.
- * Computed with exponentiation via FLT.
- * Autogenerated: ecp/secp521r1/fe_inv.op3
- * custom repunit addition chain
- * NB: this is not a real fiat-crypto function, just named that way for consistency.
- */
-static void
-fiat_secp521r1_inv(fe_t output, const fe_t t1)
-{
- int i;
- /* temporary variables */
- fe_t acc, t128, t16, t2, t256, t32, t4, t512, t516, t518, t519, t64, t8;
-
- fiat_secp521r1_carry_square(acc, t1);
- fiat_secp521r1_carry_mul(t2, acc, t1);
- fiat_secp521r1_carry_square(acc, t2);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t4, acc, t2);
- fiat_secp521r1_carry_square(acc, t4);
- for (i = 0; i < 3; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t8, acc, t4);
- fiat_secp521r1_carry_square(acc, t8);
- for (i = 0; i < 7; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t16, acc, t8);
- fiat_secp521r1_carry_square(acc, t16);
- for (i = 0; i < 15; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t32, acc, t16);
- fiat_secp521r1_carry_square(acc, t32);
- for (i = 0; i < 31; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t64, acc, t32);
- fiat_secp521r1_carry_square(acc, t64);
- for (i = 0; i < 63; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t128, acc, t64);
- fiat_secp521r1_carry_square(acc, t128);
- for (i = 0; i < 127; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t256, acc, t128);
- fiat_secp521r1_carry_square(acc, t256);
- for (i = 0; i < 255; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t512, acc, t256);
- fiat_secp521r1_carry_square(acc, t512);
- for (i = 0; i < 3; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t516, acc, t4);
- fiat_secp521r1_carry_square(acc, t516);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t518, acc, t2);
- fiat_secp521r1_carry_square(acc, t518);
- fiat_secp521r1_carry_mul(t519, acc, t1);
- fiat_secp521r1_carry_square(acc, t519);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(output, acc, t1);
-}
-
-/*-
- * Q := 2P, both projective, Q and P same pointers OK
- * Autogenerated: op3/dbl_proj.op3
- * https://eprint.iacr.org/2015/1060 Alg 6
- * ASSERT: a = -3
- */
-static void
-point_double(pt_prj_t *Q, const pt_prj_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X = P->X;
- const limb_t *Y = P->Y;
- const limb_t *Z = P->Z;
- limb_t *X3 = Q->X;
- limb_t *Y3 = Q->Y;
- limb_t *Z3 = Q->Z;
-
- /* the curve arith formula */
- fiat_secp521r1_carry_square(t0, X);
- fiat_secp521r1_carry_square(t1, Y);
- fiat_secp521r1_carry_square(t2, Z);
- fiat_secp521r1_carry_mul(t3, X, Y);
- fiat_secp521r1_carry_add(t3, t3, t3);
- fiat_secp521r1_carry_mul(t4, Y, Z);
- fiat_secp521r1_carry_mul(Z3, X, Z);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
- fiat_secp521r1_carry_mul(Y3, b, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, Z3);
- fiat_secp521r1_carry_add(X3, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, X3, Y3);
- fiat_secp521r1_carry_sub(X3, t1, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Y3);
- fiat_secp521r1_carry_mul(X3, X3, t3);
- fiat_secp521r1_carry_add(t3, t2, t2);
- fiat_secp521r1_carry_add(t2, t2, t3);
- fiat_secp521r1_carry_mul(Z3, b, Z3);
- fiat_secp521r1_carry_sub(Z3, Z3, t2);
- fiat_secp521r1_carry_sub(Z3, Z3, t0);
- fiat_secp521r1_carry_add(t3, Z3, Z3);
- fiat_secp521r1_carry_add(Z3, Z3, t3);
- fiat_secp521r1_carry_add(t3, t0, t0);
- fiat_secp521r1_carry_add(t0, t3, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t0, t0, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t0, t4, t4);
- fiat_secp521r1_carry_mul(Z3, t0, Z3);
- fiat_secp521r1_carry_sub(X3, X3, Z3);
- fiat_secp521r1_carry_mul(Z3, t0, t1);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
-}
-
-/*-
- * out1 = (arg1 == 0) ? 0 : nz
- * NB: this is not a "mod p equiv" 0, but literal 0
- * NB: this is not a real fiat-crypto function, just named that way for consistency.
- */
-static void
-fiat_secp521r1_nonzero(limb_t *out1, const fe_t arg1)
-{
- limb_t x1 = 0;
- int i;
-
- for (i = 0; i < LIMB_CNT; i++)
- x1 |= arg1[i];
- *out1 = x1;
-}
-
-/*-
- * R := Q + P where R and Q are projective, P affine.
- * R and Q same pointers OK
- * R and P same pointers not OK
- * Autogenerated: op3/add_mixed.op3
- * https://eprint.iacr.org/2015/1060 Alg 5
- * ASSERT: a = -3
- */
-static void
-point_add_mixed(pt_prj_t *R, const pt_prj_t *Q, const pt_aff_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X1 = Q->X;
- const limb_t *Y1 = Q->Y;
- const limb_t *Z1 = Q->Z;
- const limb_t *X2 = P->X;
- const limb_t *Y2 = P->Y;
- fe_t X3;
- fe_t Y3;
- fe_t Z3;
- limb_t nz;
- /* check P for affine inf */
- fiat_secp521r1_nonzero(&nz, P->Y);
-
- /* the curve arith formula */
- fiat_secp521r1_carry_mul(t0, X1, X2);
- fiat_secp521r1_carry_mul(t1, Y1, Y2);
- fiat_secp521r1_carry_add(t3, X2, Y2);
- fiat_secp521r1_carry_add(t4, X1, Y1);
- fiat_secp521r1_carry_mul(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, t0, t1);
- fiat_secp521r1_carry_sub(t3, t3, t4);
- fiat_secp521r1_carry_mul(t4, Y2, Z1);
- fiat_secp521r1_carry_add(t4, t4, Y1);
- fiat_secp521r1_carry_mul(Y3, X2, Z1);
- fiat_secp521r1_carry_add(Y3, Y3, X1);
- fiat_secp521r1_carry_mul(Z3, b, Z1);
- fiat_secp521r1_carry_sub(X3, Y3, Z3);
- fiat_secp521r1_carry_add(Z3, X3, X3);
- fiat_secp521r1_carry_add(X3, X3, Z3);
- fiat_secp521r1_carry_sub(Z3, t1, X3);
- fiat_secp521r1_carry_add(X3, t1, X3);
- fiat_secp521r1_carry_mul(Y3, b, Y3);
- fiat_secp521r1_carry_add(t1, Z1, Z1);
- fiat_secp521r1_carry_add(t2, t1, Z1);
- fiat_secp521r1_carry_sub(Y3, Y3, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t1, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_add(t1, t0, t0);
- fiat_secp521r1_carry_add(t0, t1, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t1, t4, Y3);
- fiat_secp521r1_carry_mul(t2, t0, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t2);
- fiat_secp521r1_carry_mul(X3, t3, X3);
- fiat_secp521r1_carry_sub(X3, X3, t1);
- fiat_secp521r1_carry_mul(Z3, t4, Z3);
- fiat_secp521r1_carry_mul(t1, t3, t0);
- fiat_secp521r1_carry_add(Z3, Z3, t1);
-
- /* if P is inf, throw all that away and take Q */
- fiat_secp521r1_selectznz(R->X, nz, Q->X, X3);
- fiat_secp521r1_selectznz(R->Y, nz, Q->Y, Y3);
- fiat_secp521r1_selectznz(R->Z, nz, Q->Z, Z3);
-}
-
-/*-
- * R := Q + P all projective.
- * R and Q same pointers OK
- * R and P same pointers not OK
- * Autogenerated: op3/add_proj.op3
- * https://eprint.iacr.org/2015/1060 Alg 4
- * ASSERT: a = -3
- */
-static void
-point_add_proj(pt_prj_t *R, const pt_prj_t *Q, const pt_prj_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4, t5;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X1 = Q->X;
- const limb_t *Y1 = Q->Y;
- const limb_t *Z1 = Q->Z;
- const limb_t *X2 = P->X;
- const limb_t *Y2 = P->Y;
- const limb_t *Z2 = P->Z;
- limb_t *X3 = R->X;
- limb_t *Y3 = R->Y;
- limb_t *Z3 = R->Z;
-
- /* the curve arith formula */
- fiat_secp521r1_carry_mul(t0, X1, X2);
- fiat_secp521r1_carry_mul(t1, Y1, Y2);
- fiat_secp521r1_carry_mul(t2, Z1, Z2);
- fiat_secp521r1_carry_add(t3, X1, Y1);
- fiat_secp521r1_carry_add(t4, X2, Y2);
- fiat_secp521r1_carry_mul(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, t0, t1);
- fiat_secp521r1_carry_sub(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, Y1, Z1);
- fiat_secp521r1_carry_add(t5, Y2, Z2);
- fiat_secp521r1_carry_mul(t4, t4, t5);
- fiat_secp521r1_carry_add(t5, t1, t2);
- fiat_secp521r1_carry_sub(t4, t4, t5);
- fiat_secp521r1_carry_add(X3, X1, Z1);
- fiat_secp521r1_carry_add(Y3, X2, Z2);
- fiat_secp521r1_carry_mul(X3, X3, Y3);
- fiat_secp521r1_carry_add(Y3, t0, t2);
- fiat_secp521r1_carry_sub(Y3, X3, Y3);
- fiat_secp521r1_carry_mul(Z3, b, t2);
- fiat_secp521r1_carry_sub(X3, Y3, Z3);
- fiat_secp521r1_carry_add(Z3, X3, X3);
- fiat_secp521r1_carry_add(X3, X3, Z3);
- fiat_secp521r1_carry_sub(Z3, t1, X3);
- fiat_secp521r1_carry_add(X3, t1, X3);
- fiat_secp521r1_carry_mul(Y3, b, Y3);
- fiat_secp521r1_carry_add(t1, t2, t2);
- fiat_secp521r1_carry_add(t2, t1, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t1, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_add(t1, t0, t0);
- fiat_secp521r1_carry_add(t0, t1, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t1, t4, Y3);
- fiat_secp521r1_carry_mul(t2, t0, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t2);
- fiat_secp521r1_carry_mul(X3, t3, X3);
- fiat_secp521r1_carry_sub(X3, X3, t1);
- fiat_secp521r1_carry_mul(Z3, t4, Z3);
- fiat_secp521r1_carry_mul(t1, t3, t0);
- fiat_secp521r1_carry_add(Z3, Z3, t1);
-}
-
-/* constants */
-#define RADIX 5
-#define DRADIX (1 << RADIX)
-#define DRADIX_WNAF ((DRADIX) << 1)
-
-/*-
- * precomp for wnaf scalar multiplication:
- * precomp[0] = 1P
- * precomp[1] = 3P
- * precomp[2] = 5P
- * precomp[3] = 7P
- * precomp[4] = 9P
- * ...
- */
-static void
-precomp_wnaf(pt_prj_t precomp[DRADIX / 2], const pt_aff_t *P)
-{
- int i;
-
- fe_copy(precomp[0].X, P->X);
- fe_copy(precomp[0].Y, P->Y);
- fe_copy(precomp[0].Z, const_one);
- point_double(&precomp[DRADIX / 2 - 1], &precomp[0]);
-
- for (i = 1; i < DRADIX / 2; i++)
- point_add_proj(&precomp[i], &precomp[DRADIX / 2 - 1], &precomp[i - 1]);
-}
-
-/* fetch a scalar bit */
-static int
-scalar_get_bit(const unsigned char in[66], int idx)
-{
- int widx, rshift;
-
- widx = idx >> 3;
- rshift = idx & 0x7;
-
- if (idx < 0 || widx >= 66)
- return 0;
-
- return (in[widx] >> rshift) & 0x1;
-}
-
-/*-
- * Compute "regular" wnaf representation of a scalar.
- * See "Exponent Recoding and Regular Exponentiation Algorithms",
- * Tunstall et al., AfricaCrypt 2009, Alg 6.
- * It forces an odd scalar and outputs digits in
- * {\pm 1, \pm 3, \pm 5, \pm 7, \pm 9, ...}
- * i.e. signed odd digits with _no zeroes_ -- that makes it "regular".
- */
-static void
-scalar_rwnaf(int8_t out[106], const unsigned char in[66])
-{
- int i;
- int8_t window, d;
-
- window = (in[0] & (DRADIX_WNAF - 1)) | 1;
- for (i = 0; i < 105; i++) {
- d = (window & (DRADIX_WNAF - 1)) - DRADIX;
- out[i] = d;
- window = (window - d) >> RADIX;
- window += scalar_get_bit(in, (i + 1) * RADIX + 1) << 1;
- window += scalar_get_bit(in, (i + 1) * RADIX + 2) << 2;
- window += scalar_get_bit(in, (i + 1) * RADIX + 3) << 3;
- window += scalar_get_bit(in, (i + 1) * RADIX + 4) << 4;
- window += scalar_get_bit(in, (i + 1) * RADIX + 5) << 5;
- }
- out[i] = window;
-}
-
-/*-
- * Compute "textbook" wnaf representation of a scalar.
- * NB: not constant time
- */
-static void
-scalar_wnaf(int8_t out[529], const unsigned char in[66])
-{
- int i;
- int8_t window, d;
-
- window = in[0] & (DRADIX_WNAF - 1);
- for (i = 0; i < 529; i++) {
- d = 0;
- if ((window & 1) && ((d = window & (DRADIX_WNAF - 1)) & DRADIX))
- d -= DRADIX_WNAF;
- out[i] = d;
- window = (window - d) >> 1;
- window += scalar_get_bit(in, i + 1 + RADIX) << RADIX;
- }
-}
-
-/*-
- * Simultaneous scalar multiplication: interleaved "textbook" wnaf.
- * NB: not constant time
- */
-static void
-var_smul_wnaf_two(pt_aff_t *out, const unsigned char a[66],
- const unsigned char b[66], const pt_aff_t *P)
-{
- int i, d, is_neg, is_inf = 1, flipped = 0;
- int8_t anaf[529] = { 0 };
- int8_t bnaf[529] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } };
- pt_prj_t precomp[DRADIX / 2];
-
- precomp_wnaf(precomp, P);
- scalar_wnaf(anaf, a);
- scalar_wnaf(bnaf, b);
-
- for (i = 528; i >= 0; i--) {
- if (!is_inf)
- point_double(&Q, &Q);
- if ((d = bnaf[i])) {
- if ((is_neg = d < 0) != flipped) {
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
- flipped ^= 1;
- }
- d = (is_neg) ? (-d - 1) >> 1 : (d - 1) >> 1;
- if (is_inf) {
- /* initialize accumulator */
- fe_copy(Q.X, &precomp[d].X);
- fe_copy(Q.Y, &precomp[d].Y);
- fe_copy(Q.Z, &precomp[d].Z);
- is_inf = 0;
- } else
- point_add_proj(&Q, &Q, &precomp[d]);
- }
- if ((d = anaf[i])) {
- if ((is_neg = d < 0) != flipped) {
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
- flipped ^= 1;
- }
- d = (is_neg) ? (-d - 1) >> 1 : (d - 1) >> 1;
- if (is_inf) {
- /* initialize accumulator */
- fe_copy(Q.X, &lut_cmb[0][d].X);
- fe_copy(Q.Y, &lut_cmb[0][d].Y);
- fe_copy(Q.Z, const_one);
- is_inf = 0;
- } else
- point_add_mixed(&Q, &Q, &lut_cmb[0][d]);
- }
- }
-
- if (is_inf) {
- /* initialize accumulator to inf: all-zero scalars */
- fe_set_zero(Q.X);
- fe_copy(Q.Y, const_one);
- fe_set_zero(Q.Z);
- }
-
- if (flipped) {
- /* correct sign */
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
- }
-
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
-}
-
-/*-
- * Variable point scalar multiplication with "regular" wnaf.
- * Here "regular" means _no zeroes_, so the sequence of
- * EC arithmetic ops is fixed.
- */
-static void
-var_smul_rwnaf(pt_aff_t *out, const unsigned char scalar[66],
- const pt_aff_t *P)
-{
- int i, j, d, diff, is_neg;
- int8_t rnaf[106] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } }, lut = { { 0 }, { 0 }, { 0 } };
- pt_prj_t precomp[DRADIX / 2];
-
- precomp_wnaf(precomp, P);
- scalar_rwnaf(rnaf, scalar);
-
-#if defined(_MSC_VER)
- /* result still unsigned: yes we know */
-#pragma warning(push)
-#pragma warning(disable : 4146)
-#endif
-
- /* initialize accumulator to high digit */
- d = (rnaf[105] - 1) >> 1;
- for (j = 0; j < DRADIX / 2; j++) {
- diff = (1 - (-(d ^ j) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(Q.X, diff, Q.X, precomp[j].X);
- fiat_secp521r1_selectznz(Q.Y, diff, Q.Y, precomp[j].Y);
- fiat_secp521r1_selectznz(Q.Z, diff, Q.Z, precomp[j].Z);
+ if (pt->len != 133) {
+ PORT_SetError(SEC_ERROR_BAD_KEY);
+ res = SECFailure;
+ return res;
}
- for (i = 104; i >= 0; i--) {
- for (j = 0; j < RADIX; j++)
- point_double(&Q, &Q);
- d = rnaf[i];
- /* is_neg = (d < 0) ? 1 : 0 */
- is_neg = (d >> (8 * sizeof(int) - 1)) & 1;
- /* d = abs(d) */
- d = (d ^ -is_neg) + is_neg;
- d = (d - 1) >> 1;
- for (j = 0; j < DRADIX / 2; j++) {
- diff = (1 - (-(d ^ j) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(lut.X, diff, lut.X, precomp[j].X);
- fiat_secp521r1_selectznz(lut.Y, diff, lut.Y, precomp[j].Y);
- fiat_secp521r1_selectznz(lut.Z, diff, lut.Z, precomp[j].Z);
- }
- /* negate lut point if digit is negative */
- fiat_secp521r1_carry_opp(out->Y, lut.Y);
- fiat_secp521r1_selectznz(lut.Y, is_neg, lut.Y, out->Y);
- point_add_proj(&Q, &Q, &lut);
+ if (pt->data[0] != EC_POINT_FORM_UNCOMPRESSED) {
+ PORT_SetError(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM);
+ res = SECFailure;
+ return res;
}
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
- /* conditionally subtract P if the scalar was even */
- fe_copy(lut.X, precomp[0].X);
- fiat_secp521r1_carry_opp(lut.Y, precomp[0].Y);
- fe_copy(lut.Z, precomp[0].Z);
- point_add_proj(&lut, &lut, &Q);
- fiat_secp521r1_selectznz(Q.X, scalar[0] & 1, lut.X, Q.X);
- fiat_secp521r1_selectznz(Q.Y, scalar[0] & 1, lut.Y, Q.Y);
- fiat_secp521r1_selectznz(Q.Z, scalar[0] & 1, lut.Z, Q.Z);
-
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
-}
-
-/*-
- * Fixed scalar multiplication: comb with interleaving.
- */
-static void
-fixed_smul_cmb(pt_aff_t *out, const unsigned char scalar[66])
-{
- int i, j, k, d, diff, is_neg = 0;
- int8_t rnaf[106] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } }, R = { { 0 }, { 0 }, { 0 } };
- pt_aff_t lut = { { 0 }, { 0 } };
+ bool b = Hacl_P521_validate_public_key(pt->data + 1);
- scalar_rwnaf(rnaf, scalar);
-
- /* initalize accumulator to inf */
- fe_set_zero(Q.X);
- fe_copy(Q.Y, const_one);
- fe_set_zero(Q.Z);
-
-#if defined(_MSC_VER)
- /* result still unsigned: yes we know */
-#pragma warning(push)
-#pragma warning(disable : 4146)
-#endif
-
- for (i = 8; i >= 0; i--) {
- for (j = 0; i != 8 && j < RADIX; j++)
- point_double(&Q, &Q);
- for (j = 0; j < 13; j++) {
- if (j * 9 + i > 105)
- continue;
- d = rnaf[j * 9 + i];
- /* is_neg = (d < 0) ? 1 : 0 */
- is_neg = (d >> (8 * sizeof(int) - 1)) & 1;
- /* d = abs(d) */
- d = (d ^ -is_neg) + is_neg;
- d = (d - 1) >> 1;
- for (k = 0; k < DRADIX / 2; k++) {
- diff = (1 - (-(d ^ k) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(lut.X, diff, lut.X, lut_cmb[j][k].X);
- fiat_secp521r1_selectznz(lut.Y, diff, lut.Y, lut_cmb[j][k].Y);
- }
- /* negate lut point if digit is negative */
- fiat_secp521r1_carry_opp(out->Y, lut.Y);
- fiat_secp521r1_selectznz(lut.Y, is_neg, lut.Y, out->Y);
- point_add_mixed(&Q, &Q, &lut);
- }
+ if (!b) {
+ PORT_SetError(SEC_ERROR_BAD_KEY);
+ res = SECFailure;
}
-
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
- /* conditionally subtract P if the scalar was even */
- fe_copy(lut.X, lut_cmb[0][0].X);
- fiat_secp521r1_carry_opp(lut.Y, lut_cmb[0][0].Y);
- point_add_mixed(&R, &Q, &lut);
- fiat_secp521r1_selectznz(Q.X, scalar[0] & 1, R.X, Q.X);
- fiat_secp521r1_selectznz(Q.Y, scalar[0] & 1, R.Y, Q.Y);
- fiat_secp521r1_selectznz(Q.Z, scalar[0] & 1, R.Z, Q.Z);
-
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
-}
-
-/*-
- * Wrapper: simultaneous scalar mutiplication.
- * outx, outy := a * G + b * P
- * where P = (inx, iny).
- * Everything is LE byte ordering.
- */
-static void
-point_mul_two_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char a[66],
- const unsigned char b[66],
- const unsigned char inx[66],
- const unsigned char iny[66])
-{
- pt_aff_t P;
-
- fiat_secp521r1_from_bytes(P.X, inx);
- fiat_secp521r1_from_bytes(P.Y, iny);
- /* simultaneous scalar multiplication */
- var_smul_wnaf_two(&P, a, b, &P);
-
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-/*-
- * Wrapper: fixed scalar mutiplication.
- * outx, outy := scalar * G
- * Everything is LE byte ordering.
- */
-static void
-point_mul_g_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char scalar[66])
-{
- pt_aff_t P;
-
- /* fixed scmul function */
- fixed_smul_cmb(&P, scalar);
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-/*-
- * Wrapper: variable point scalar mutiplication.
- * outx, outy := scalar * P
- * where P = (inx, iny).
- * Everything is LE byte ordering.
- */
-static void
-point_mul_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char scalar[66],
- const unsigned char inx[66],
- const unsigned char iny[66])
-{
- pt_aff_t P;
-
- fiat_secp521r1_from_bytes(P.X, inx);
- fiat_secp521r1_from_bytes(P.Y, iny);
- /* var scmul function */
- var_smul_rwnaf(&P, scalar, &P);
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-#undef RADIX
-#include "ecp.h"
-#include "mpi-priv.h"
-#include "mplogic.h"
-
-/*-
- * reverse bytes -- total hack
- */
-#define MP_BE2LE(a) \
- do { \
- unsigned char z_bswap; \
- z_bswap = a[0]; \
- a[0] = a[65]; \
- a[65] = z_bswap; \
- z_bswap = a[1]; \
- a[1] = a[64]; \
- a[64] = z_bswap; \
- z_bswap = a[2]; \
- a[2] = a[63]; \
- a[63] = z_bswap; \
- z_bswap = a[3]; \
- a[3] = a[62]; \
- a[62] = z_bswap; \
- z_bswap = a[4]; \
- a[4] = a[61]; \
- a[61] = z_bswap; \
- z_bswap = a[5]; \
- a[5] = a[60]; \
- a[60] = z_bswap; \
- z_bswap = a[6]; \
- a[6] = a[59]; \
- a[59] = z_bswap; \
- z_bswap = a[7]; \
- a[7] = a[58]; \
- a[58] = z_bswap; \
- z_bswap = a[8]; \
- a[8] = a[57]; \
- a[57] = z_bswap; \
- z_bswap = a[9]; \
- a[9] = a[56]; \
- a[56] = z_bswap; \
- z_bswap = a[10]; \
- a[10] = a[55]; \
- a[55] = z_bswap; \
- z_bswap = a[11]; \
- a[11] = a[54]; \
- a[54] = z_bswap; \
- z_bswap = a[12]; \
- a[12] = a[53]; \
- a[53] = z_bswap; \
- z_bswap = a[13]; \
- a[13] = a[52]; \
- a[52] = z_bswap; \
- z_bswap = a[14]; \
- a[14] = a[51]; \
- a[51] = z_bswap; \
- z_bswap = a[15]; \
- a[15] = a[50]; \
- a[50] = z_bswap; \
- z_bswap = a[16]; \
- a[16] = a[49]; \
- a[49] = z_bswap; \
- z_bswap = a[17]; \
- a[17] = a[48]; \
- a[48] = z_bswap; \
- z_bswap = a[18]; \
- a[18] = a[47]; \
- a[47] = z_bswap; \
- z_bswap = a[19]; \
- a[19] = a[46]; \
- a[46] = z_bswap; \
- z_bswap = a[20]; \
- a[20] = a[45]; \
- a[45] = z_bswap; \
- z_bswap = a[21]; \
- a[21] = a[44]; \
- a[44] = z_bswap; \
- z_bswap = a[22]; \
- a[22] = a[43]; \
- a[43] = z_bswap; \
- z_bswap = a[23]; \
- a[23] = a[42]; \
- a[42] = z_bswap; \
- z_bswap = a[24]; \
- a[24] = a[41]; \
- a[41] = z_bswap; \
- z_bswap = a[25]; \
- a[25] = a[40]; \
- a[40] = z_bswap; \
- z_bswap = a[26]; \
- a[26] = a[39]; \
- a[39] = z_bswap; \
- z_bswap = a[27]; \
- a[27] = a[38]; \
- a[38] = z_bswap; \
- z_bswap = a[28]; \
- a[28] = a[37]; \
- a[37] = z_bswap; \
- z_bswap = a[29]; \
- a[29] = a[36]; \
- a[36] = z_bswap; \
- z_bswap = a[30]; \
- a[30] = a[35]; \
- a[35] = z_bswap; \
- z_bswap = a[31]; \
- a[31] = a[34]; \
- a[34] = z_bswap; \
- z_bswap = a[32]; \
- a[32] = a[33]; \
- a[33] = z_bswap; \
- } while (0)
-
-static mp_err
-point_mul_g_secp521r1_wrap(const mp_int *n, mp_int *out_x,
- mp_int *out_y, const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n[66];
- mp_err res;
-
- ARGCHK(n != NULL && out_x != NULL && out_y != NULL, MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n) > 521 || mp_cmp_z(n) != MP_GT)
- return MP_RANGE;
-
- MP_CHECKOK(mp_to_fixlen_octets(n, b_n, 66));
- MP_BE2LE(b_n);
- point_mul_g_secp521r1(b_x, b_y, b_n);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
-
-CLEANUP:
- return res;
-}
-
-static mp_err
-point_mul_secp521r1_wrap(const mp_int *n, const mp_int *in_x,
- const mp_int *in_y, mp_int *out_x,
- mp_int *out_y, const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n[66];
- mp_err res;
-
- ARGCHK(n != NULL && in_x != NULL && in_y != NULL && out_x != NULL &&
- out_y != NULL,
- MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n) > 521 || mp_cmp_z(n) != MP_GT)
- return MP_RANGE;
-
- MP_CHECKOK(mp_to_fixlen_octets(n, b_n, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_x, b_x, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_y, b_y, 66));
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_BE2LE(b_n);
- point_mul_secp521r1(b_x, b_y, b_n, b_x, b_y);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
-
-CLEANUP:
- return res;
-}
-
-static mp_err
-point_mul_two_secp521r1_wrap(const mp_int *n1, const mp_int *n2,
- const mp_int *in_x,
- const mp_int *in_y, mp_int *out_x,
- mp_int *out_y,
- const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n1[66];
- unsigned char b_n2[66];
- mp_err res;
-
- /* If n2 == NULL or 0, this is just a base-point multiplication. */
- if (n2 == NULL || mp_cmp_z(n2) == MP_EQ)
- return point_mul_g_secp521r1_wrap(n1, out_x, out_y, group);
-
- /* If n1 == NULL or 0, this is just an arbitary-point multiplication. */
- if (n1 == NULL || mp_cmp_z(n1) == MP_EQ)
- return point_mul_secp521r1_wrap(n2, in_x, in_y, out_x, out_y, group);
-
- ARGCHK(in_x != NULL && in_y != NULL && out_x != NULL && out_y != NULL,
- MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n1) > 521 || mp_cmp_z(n1) != MP_GT ||
- mpl_significant_bits(n2) > 521 || mp_cmp_z(n2) != MP_GT)
- return MP_RANGE;
-
- MP_CHECKOK(mp_to_fixlen_octets(n1, b_n1, 66));
- MP_CHECKOK(mp_to_fixlen_octets(n2, b_n2, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_x, b_x, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_y, b_y, 66));
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_BE2LE(b_n1);
- MP_BE2LE(b_n2);
- point_mul_two_secp521r1(b_x, b_y, b_n1, b_n2, b_x, b_y);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
-
-CLEANUP:
return res;
}
-mp_err
-ec_group_set_secp521r1(ECGroup *group, ECCurveName name)
-{
- if (name == ECCurve_NIST_P521) {
- group->base_point_mul = &point_mul_g_secp521r1_wrap;
- group->point_mul = &point_mul_secp521r1_wrap;
- group->points_mul = &point_mul_two_secp521r1_wrap;
- }
- return MP_OKAY;
-}
-
-#else /* __SIZEOF_INT128__ */
-
-#include <stdint.h>
-#include <string.h>
-#define LIMB_BITS 32
-#define LIMB_CNT 19
-/* Field elements */
-typedef uint32_t fe_t[LIMB_CNT];
-typedef uint32_t limb_t;
-
-#define fe_copy(d, s) memcpy(d, s, sizeof(fe_t))
-#define fe_set_zero(d) memset(d, 0, sizeof(fe_t))
-
-/* Projective points */
-typedef struct {
- fe_t X;
- fe_t Y;
- fe_t Z;
-} pt_prj_t;
-
-/* Affine points */
-typedef struct {
- fe_t X;
- fe_t Y;
-} pt_aff_t;
-
-/* BEGIN verbatim fiat code https://github.com/mit-plv/fiat-crypto */
-/*-
- * MIT License
- *
- * Copyright (c) 2015-2021 the fiat-crypto authors (see the AUTHORS file).
- * https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-/* Autogenerated: unsaturated_solinas --static --use-value-barrier secp521r1 32 '(auto)' '2^521 - 1' */
-/* curve description: secp521r1 */
-/* machine_wordsize = 32 (from "32") */
-/* requested operations: (all) */
-/* n = 19 (from "(auto)") */
-/* s-c = 2^521 - [(1, 1)] (from "2^521 - 1") */
-/* tight_bounds_multiplier = 1 (from "") */
-/* */
-/* Computed values: */
-/* carry_chain = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 0, 1] */
-/* eval z = z[0] + (z[1] << 28) + (z[2] << 55) + (z[3] << 83) + (z[4] << 110) + (z[5] << 138) + (z[6] << 165) + (z[7] << 192) + (z[8] << 220) + (z[9] << 247) + (z[10] << 0x113) + (z[11] << 0x12e) + (z[12] << 0x14a) + (z[13] << 0x165) + (z[14] << 0x180) + (z[15] << 0x19c) + (z[16] << 0x1b7) + (z[17] << 0x1d3) + (z[18] << 0x1ee) */
-/* bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) + (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) + (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96) + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17] << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168) + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26] << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240) + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) + (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) + (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) + (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) + (z[47] << 0x178) + (z[48] << 0x180) + (z[49] << 0x188) + (z[50] << 0x190) + (z[51] << 0x198) + (z[52] << 0x1a0) + (z[53] << 0x1a8) + (z[54] << 0x1b0) + (z[55] << 0x1b8) + (z[56] << 0x1c0) + (z[57] << 0x1c8) + (z[58] << 0x1d0) + (z[59] << 0x1d8) + (z[60] << 0x1e0) + (z[61] << 0x1e8) + (z[62] << 0x1f0) + (z[63] << 0x1f8) + (z[64] << 2^9) + (z[65] << 0x208) */
-/* balance = [0x1ffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0x1ffffffe, 0xffffffe, 0xffffffe] */
-
-#include <stdint.h>
-typedef unsigned char fiat_secp521r1_uint1;
-typedef signed char fiat_secp521r1_int1;
-#ifdef __GNUC__
-#define FIAT_SECP521R1_FIAT_INLINE __inline__
-#else
-#define FIAT_SECP521R1_FIAT_INLINE
-#endif
-
-/* The type fiat_secp521r1_loose_field_element is a field element with loose bounds. */
-/* Bounds: [[0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x30000000], [0x0 ~> 0x18000000], [0x0 ~> 0x18000000]] */
-typedef uint32_t fiat_secp521r1_loose_field_element[19];
-
-/* The type fiat_secp521r1_tight_field_element is a field element with tight bounds. */
-/* Bounds: [[0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x10000000], [0x0 ~> 0x8000000], [0x0 ~> 0x8000000]] */
-typedef uint32_t fiat_secp521r1_tight_field_element[19];
-
-#if (-1 & 3) != 3
-#error "This code only works on a two's complement system"
-#endif
-
-#if !defined(FIAT_SECP521R1_NO_ASM) && (defined(__GNUC__) || defined(__clang__))
-static __inline__ uint32_t
-fiat_secp521r1_value_barrier_u32(uint32_t a)
-{
- __asm__(""
- : "+r"(a)
- : /* no inputs */);
- return a;
-}
-#else
-#define fiat_secp521r1_value_barrier_u32(x) (x)
-#endif
-
/*
- * The function fiat_secp521r1_addcarryx_u28 is an addition with carry.
- *
- * Postconditions:
- * out1 = (arg1 + arg2 + arg3) mod 2^28
- * out2 = ⌊(arg1 + arg2 + arg3) / 2^28⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0xfffffff]
- * arg3: [0x0 ~> 0xfffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0xfffffff]
- * out2: [0x0 ~> 0x1]
+ * Scalar multiplication for P-521.
+ * If P == NULL, the base point is used.
+ * Returns X = k*P
*/
-static void
-fiat_secp521r1_addcarryx_u28(uint32_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint32_t arg2, uint32_t arg3)
-{
- uint32_t x1;
- uint32_t x2;
- fiat_secp521r1_uint1 x3;
- x1 = ((arg1 + arg2) + arg3);
- x2 = (x1 & UINT32_C(0xfffffff));
- x3 = (fiat_secp521r1_uint1)(x1 >> 28);
- *out1 = x2;
- *out2 = x3;
-}
-
-/*
- * The function fiat_secp521r1_subborrowx_u28 is a subtraction with borrow.
- *
- * Postconditions:
- * out1 = (-arg1 + arg2 + -arg3) mod 2^28
- * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^28⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0xfffffff]
- * arg3: [0x0 ~> 0xfffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0xfffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_subborrowx_u28(uint32_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint32_t arg2, uint32_t arg3)
-{
- int32_t x1;
- fiat_secp521r1_int1 x2;
- uint32_t x3;
- x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3);
- x2 = (fiat_secp521r1_int1)(x1 >> 28);
- x3 = (x1 & UINT32_C(0xfffffff));
- *out1 = x3;
- *out2 = (fiat_secp521r1_uint1)(0x0 - x2);
-}
-
-/*
- * The function fiat_secp521r1_addcarryx_u27 is an addition with carry.
- *
- * Postconditions:
- * out1 = (arg1 + arg2 + arg3) mod 2^27
- * out2 = ⌊(arg1 + arg2 + arg3) / 2^27⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x7ffffff]
- * arg3: [0x0 ~> 0x7ffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x7ffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_addcarryx_u27(uint32_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint32_t arg2, uint32_t arg3)
-{
- uint32_t x1;
- uint32_t x2;
- fiat_secp521r1_uint1 x3;
- x1 = ((arg1 + arg2) + arg3);
- x2 = (x1 & UINT32_C(0x7ffffff));
- x3 = (fiat_secp521r1_uint1)(x1 >> 27);
- *out1 = x2;
- *out2 = x3;
-}
-
-/*
- * The function fiat_secp521r1_subborrowx_u27 is a subtraction with borrow.
- *
- * Postconditions:
- * out1 = (-arg1 + arg2 + -arg3) mod 2^27
- * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^27⌋
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0x7ffffff]
- * arg3: [0x0 ~> 0x7ffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0x7ffffff]
- * out2: [0x0 ~> 0x1]
- */
-static void
-fiat_secp521r1_subborrowx_u27(uint32_t *out1,
- fiat_secp521r1_uint1 *out2,
- fiat_secp521r1_uint1 arg1,
- uint32_t arg2, uint32_t arg3)
-{
- int32_t x1;
- fiat_secp521r1_int1 x2;
- uint32_t x3;
- x1 = ((int32_t)(arg2 - arg1) - (int32_t)arg3);
- x2 = (fiat_secp521r1_int1)(x1 >> 27);
- x3 = (x1 & UINT32_C(0x7ffffff));
- *out1 = x3;
- *out2 = (fiat_secp521r1_uint1)(0x0 - x2);
-}
-/*
- * The function fiat_secp521r1_cmovznz_u32 is a single-word conditional move.
- *
- * Postconditions:
- * out1 = (if arg1 = 0 then arg2 else arg3)
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [0x0 ~> 0xffffffff]
- * arg3: [0x0 ~> 0xffffffff]
- * Output Bounds:
- * out1: [0x0 ~> 0xffffffff]
- */
-static void
-fiat_secp521r1_cmovznz_u32(uint32_t *out1,
- fiat_secp521r1_uint1 arg1, uint32_t arg2,
- uint32_t arg3)
+SECStatus
+ec_secp521r1_pt_mul(SECItem *X, SECItem *k, SECItem *P)
{
- fiat_secp521r1_uint1 x1;
- uint32_t x2;
- uint32_t x3;
- x1 = (!(!arg1));
- x2 = ((fiat_secp521r1_int1)(0x0 - x1) & UINT32_C(0xffffffff));
- x3 = ((fiat_secp521r1_value_barrier_u32(x2) & arg3) |
- (fiat_secp521r1_value_barrier_u32((~x2)) & arg2));
- *out1 = x3;
-}
+ SECStatus res = SECSuccess;
+ if (!P) {
+ uint8_t derived[132] = { 0 };
-/*
- * The function fiat_secp521r1_carry_mul multiplies two field elements and reduces the result.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 * eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_mul(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_loose_field_element arg1,
- const fiat_secp521r1_loose_field_element arg2)
-{
- uint64_t x1;
- uint64_t x2;
- uint64_t x3;
- uint64_t x4;
- uint64_t x5;
- uint64_t x6;
- uint64_t x7;
- uint64_t x8;
- uint64_t x9;
- uint64_t x10;
- uint64_t x11;
- uint64_t x12;
- uint64_t x13;
- uint64_t x14;
- uint64_t x15;
- uint64_t x16;
- uint64_t x17;
- uint64_t x18;
- uint64_t x19;
- uint64_t x20;
- uint64_t x21;
- uint64_t x22;
- uint64_t x23;
- uint64_t x24;
- uint64_t x25;
- uint64_t x26;
- uint64_t x27;
- uint64_t x28;
- uint64_t x29;
- uint64_t x30;
- uint64_t x31;
- uint64_t x32;
- uint64_t x33;
- uint64_t x34;
- uint64_t x35;
- uint64_t x36;
- uint64_t x37;
- uint64_t x38;
- uint64_t x39;
- uint64_t x40;
- uint64_t x41;
- uint64_t x42;
- uint64_t x43;
- uint64_t x44;
- uint64_t x45;
- uint64_t x46;
- uint64_t x47;
- uint64_t x48;
- uint64_t x49;
- uint64_t x50;
- uint64_t x51;
- uint64_t x52;
- uint64_t x53;
- uint64_t x54;
- uint64_t x55;
- uint64_t x56;
- uint64_t x57;
- uint64_t x58;
- uint64_t x59;
- uint64_t x60;
- uint64_t x61;
- uint64_t x62;
- uint64_t x63;
- uint64_t x64;
- uint64_t x65;
- uint64_t x66;
- uint64_t x67;
- uint64_t x68;
- uint64_t x69;
- uint64_t x70;
- uint64_t x71;
- uint64_t x72;
- uint64_t x73;
- uint64_t x74;
- uint64_t x75;
- uint64_t x76;
- uint64_t x77;
- uint64_t x78;
- uint64_t x79;
- uint64_t x80;
- uint64_t x81;
- uint64_t x82;
- uint64_t x83;
- uint64_t x84;
- uint64_t x85;
- uint64_t x86;
- uint64_t x87;
- uint64_t x88;
- uint64_t x89;
- uint64_t x90;
- uint64_t x91;
- uint64_t x92;
- uint64_t x93;
- uint64_t x94;
- uint64_t x95;
- uint64_t x96;
- uint64_t x97;
- uint64_t x98;
- uint64_t x99;
- uint64_t x100;
- uint64_t x101;
- uint64_t x102;
- uint64_t x103;
- uint64_t x104;
- uint64_t x105;
- uint64_t x106;
- uint64_t x107;
- uint64_t x108;
- uint64_t x109;
- uint64_t x110;
- uint64_t x111;
- uint64_t x112;
- uint64_t x113;
- uint64_t x114;
- uint64_t x115;
- uint64_t x116;
- uint64_t x117;
- uint64_t x118;
- uint64_t x119;
- uint64_t x120;
- uint64_t x121;
- uint64_t x122;
- uint64_t x123;
- uint64_t x124;
- uint64_t x125;
- uint64_t x126;
- uint64_t x127;
- uint64_t x128;
- uint64_t x129;
- uint64_t x130;
- uint64_t x131;
- uint64_t x132;
- uint64_t x133;
- uint64_t x134;
- uint64_t x135;
- uint64_t x136;
- uint64_t x137;
- uint64_t x138;
- uint64_t x139;
- uint64_t x140;
- uint64_t x141;
- uint64_t x142;
- uint64_t x143;
- uint64_t x144;
- uint64_t x145;
- uint64_t x146;
- uint64_t x147;
- uint64_t x148;
- uint64_t x149;
- uint64_t x150;
- uint64_t x151;
- uint64_t x152;
- uint64_t x153;
- uint64_t x154;
- uint64_t x155;
- uint64_t x156;
- uint64_t x157;
- uint64_t x158;
- uint64_t x159;
- uint64_t x160;
- uint64_t x161;
- uint64_t x162;
- uint64_t x163;
- uint64_t x164;
- uint64_t x165;
- uint64_t x166;
- uint64_t x167;
- uint64_t x168;
- uint64_t x169;
- uint64_t x170;
- uint64_t x171;
- uint64_t x172;
- uint64_t x173;
- uint64_t x174;
- uint64_t x175;
- uint64_t x176;
- uint64_t x177;
- uint64_t x178;
- uint64_t x179;
- uint64_t x180;
- uint64_t x181;
- uint64_t x182;
- uint64_t x183;
- uint64_t x184;
- uint64_t x185;
- uint64_t x186;
- uint64_t x187;
- uint64_t x188;
- uint64_t x189;
- uint64_t x190;
- uint64_t x191;
- uint64_t x192;
- uint64_t x193;
- uint64_t x194;
- uint64_t x195;
- uint64_t x196;
- uint64_t x197;
- uint64_t x198;
- uint64_t x199;
- uint64_t x200;
- uint64_t x201;
- uint64_t x202;
- uint64_t x203;
- uint64_t x204;
- uint64_t x205;
- uint64_t x206;
- uint64_t x207;
- uint64_t x208;
- uint64_t x209;
- uint64_t x210;
- uint64_t x211;
- uint64_t x212;
- uint64_t x213;
- uint64_t x214;
- uint64_t x215;
- uint64_t x216;
- uint64_t x217;
- uint64_t x218;
- uint64_t x219;
- uint64_t x220;
- uint64_t x221;
- uint64_t x222;
- uint64_t x223;
- uint64_t x224;
- uint64_t x225;
- uint64_t x226;
- uint64_t x227;
- uint64_t x228;
- uint64_t x229;
- uint64_t x230;
- uint64_t x231;
- uint64_t x232;
- uint64_t x233;
- uint64_t x234;
- uint64_t x235;
- uint64_t x236;
- uint64_t x237;
- uint64_t x238;
- uint64_t x239;
- uint64_t x240;
- uint64_t x241;
- uint64_t x242;
- uint64_t x243;
- uint64_t x244;
- uint64_t x245;
- uint64_t x246;
- uint64_t x247;
- uint64_t x248;
- uint64_t x249;
- uint64_t x250;
- uint64_t x251;
- uint64_t x252;
- uint64_t x253;
- uint64_t x254;
- uint64_t x255;
- uint64_t x256;
- uint64_t x257;
- uint64_t x258;
- uint64_t x259;
- uint64_t x260;
- uint64_t x261;
- uint64_t x262;
- uint64_t x263;
- uint64_t x264;
- uint64_t x265;
- uint64_t x266;
- uint64_t x267;
- uint64_t x268;
- uint64_t x269;
- uint64_t x270;
- uint64_t x271;
- uint64_t x272;
- uint64_t x273;
- uint64_t x274;
- uint64_t x275;
- uint64_t x276;
- uint64_t x277;
- uint64_t x278;
- uint64_t x279;
- uint64_t x280;
- uint64_t x281;
- uint64_t x282;
- uint64_t x283;
- uint64_t x284;
- uint64_t x285;
- uint64_t x286;
- uint64_t x287;
- uint64_t x288;
- uint64_t x289;
- uint64_t x290;
- uint64_t x291;
- uint64_t x292;
- uint64_t x293;
- uint64_t x294;
- uint64_t x295;
- uint64_t x296;
- uint64_t x297;
- uint64_t x298;
- uint64_t x299;
- uint64_t x300;
- uint64_t x301;
- uint64_t x302;
- uint64_t x303;
- uint64_t x304;
- uint64_t x305;
- uint64_t x306;
- uint64_t x307;
- uint64_t x308;
- uint64_t x309;
- uint64_t x310;
- uint64_t x311;
- uint64_t x312;
- uint64_t x313;
- uint64_t x314;
- uint64_t x315;
- uint64_t x316;
- uint64_t x317;
- uint64_t x318;
- uint64_t x319;
- uint64_t x320;
- uint64_t x321;
- uint64_t x322;
- uint64_t x323;
- uint64_t x324;
- uint64_t x325;
- uint64_t x326;
- uint64_t x327;
- uint64_t x328;
- uint64_t x329;
- uint64_t x330;
- uint64_t x331;
- uint64_t x332;
- uint64_t x333;
- uint64_t x334;
- uint64_t x335;
- uint64_t x336;
- uint64_t x337;
- uint64_t x338;
- uint64_t x339;
- uint64_t x340;
- uint64_t x341;
- uint64_t x342;
- uint64_t x343;
- uint64_t x344;
- uint64_t x345;
- uint64_t x346;
- uint64_t x347;
- uint64_t x348;
- uint64_t x349;
- uint64_t x350;
- uint64_t x351;
- uint64_t x352;
- uint64_t x353;
- uint64_t x354;
- uint64_t x355;
- uint64_t x356;
- uint64_t x357;
- uint64_t x358;
- uint64_t x359;
- uint64_t x360;
- uint64_t x361;
- uint64_t x362;
- uint64_t x363;
- uint32_t x364;
- uint64_t x365;
- uint64_t x366;
- uint64_t x367;
- uint64_t x368;
- uint64_t x369;
- uint64_t x370;
- uint64_t x371;
- uint64_t x372;
- uint64_t x373;
- uint64_t x374;
- uint64_t x375;
- uint64_t x376;
- uint64_t x377;
- uint64_t x378;
- uint64_t x379;
- uint64_t x380;
- uint64_t x381;
- uint64_t x382;
- uint64_t x383;
- uint64_t x384;
- uint32_t x385;
- uint64_t x386;
- uint64_t x387;
- uint32_t x388;
- uint64_t x389;
- uint64_t x390;
- uint32_t x391;
- uint64_t x392;
- uint64_t x393;
- uint32_t x394;
- uint64_t x395;
- uint64_t x396;
- uint32_t x397;
- uint64_t x398;
- uint64_t x399;
- uint32_t x400;
- uint64_t x401;
- uint64_t x402;
- uint32_t x403;
- uint64_t x404;
- uint64_t x405;
- uint32_t x406;
- uint64_t x407;
- uint64_t x408;
- uint32_t x409;
- uint64_t x410;
- uint64_t x411;
- uint32_t x412;
- uint64_t x413;
- uint64_t x414;
- uint32_t x415;
- uint64_t x416;
- uint64_t x417;
- uint32_t x418;
- uint64_t x419;
- uint64_t x420;
- uint32_t x421;
- uint64_t x422;
- uint64_t x423;
- uint32_t x424;
- uint64_t x425;
- uint64_t x426;
- uint32_t x427;
- uint64_t x428;
- uint64_t x429;
- uint32_t x430;
- uint64_t x431;
- uint64_t x432;
- uint32_t x433;
- uint64_t x434;
- uint64_t x435;
- uint32_t x436;
- uint64_t x437;
- uint32_t x438;
- uint32_t x439;
- uint32_t x440;
- fiat_secp521r1_uint1 x441;
- uint32_t x442;
- uint32_t x443;
- x1 = ((uint64_t)(arg1[18]) * (arg2[18]));
- x2 = ((uint64_t)(arg1[18]) * ((arg2[17]) * 0x2));
- x3 = ((uint64_t)(arg1[18]) * (arg2[16]));
- x4 = ((uint64_t)(arg1[18]) * ((arg2[15]) * 0x2));
- x5 = ((uint64_t)(arg1[18]) * (arg2[14]));
- x6 = ((uint64_t)(arg1[18]) * (arg2[13]));
- x7 = ((uint64_t)(arg1[18]) * ((arg2[12]) * 0x2));
- x8 = ((uint64_t)(arg1[18]) * (arg2[11]));
- x9 = ((uint64_t)(arg1[18]) * ((arg2[10]) * 0x2));
- x10 = ((uint64_t)(arg1[18]) * (arg2[9]));
- x11 = ((uint64_t)(arg1[18]) * ((arg2[8]) * 0x2));
- x12 = ((uint64_t)(arg1[18]) * (arg2[7]));
- x13 = ((uint64_t)(arg1[18]) * (arg2[6]));
- x14 = ((uint64_t)(arg1[18]) * ((arg2[5]) * 0x2));
- x15 = ((uint64_t)(arg1[18]) * (arg2[4]));
- x16 = ((uint64_t)(arg1[18]) * ((arg2[3]) * 0x2));
- x17 = ((uint64_t)(arg1[18]) * (arg2[2]));
- x18 = ((uint64_t)(arg1[18]) * ((arg2[1]) * 0x2));
- x19 = ((uint64_t)(arg1[17]) * ((arg2[18]) * 0x2));
- x20 = ((uint64_t)(arg1[17]) * ((arg2[17]) * 0x2));
- x21 = ((uint64_t)(arg1[17]) * ((arg2[16]) * 0x2));
- x22 = ((uint64_t)(arg1[17]) * ((arg2[15]) * 0x2));
- x23 = ((uint64_t)(arg1[17]) * (arg2[14]));
- x24 = ((uint64_t)(arg1[17]) * ((arg2[13]) * 0x2));
- x25 = ((uint64_t)(arg1[17]) * ((arg2[12]) * 0x2));
- x26 = ((uint64_t)(arg1[17]) * ((arg2[11]) * 0x2));
- x27 = ((uint64_t)(arg1[17]) * ((arg2[10]) * 0x2));
- x28 = ((uint64_t)(arg1[17]) * ((arg2[9]) * 0x2));
- x29 = ((uint64_t)(arg1[17]) * ((arg2[8]) * 0x2));
- x30 = ((uint64_t)(arg1[17]) * (arg2[7]));
- x31 = ((uint64_t)(arg1[17]) * ((arg2[6]) * 0x2));
- x32 = ((uint64_t)(arg1[17]) * ((arg2[5]) * 0x2));
- x33 = ((uint64_t)(arg1[17]) * ((arg2[4]) * 0x2));
- x34 = ((uint64_t)(arg1[17]) * ((arg2[3]) * 0x2));
- x35 = ((uint64_t)(arg1[17]) * ((arg2[2]) * 0x2));
- x36 = ((uint64_t)(arg1[16]) * (arg2[18]));
- x37 = ((uint64_t)(arg1[16]) * ((arg2[17]) * 0x2));
- x38 = ((uint64_t)(arg1[16]) * (arg2[16]));
- x39 = ((uint64_t)(arg1[16]) * (arg2[15]));
- x40 = ((uint64_t)(arg1[16]) * (arg2[14]));
- x41 = ((uint64_t)(arg1[16]) * (arg2[13]));
- x42 = ((uint64_t)(arg1[16]) * ((arg2[12]) * 0x2));
- x43 = ((uint64_t)(arg1[16]) * (arg2[11]));
- x44 = ((uint64_t)(arg1[16]) * ((arg2[10]) * 0x2));
- x45 = ((uint64_t)(arg1[16]) * (arg2[9]));
- x46 = ((uint64_t)(arg1[16]) * (arg2[8]));
- x47 = ((uint64_t)(arg1[16]) * (arg2[7]));
- x48 = ((uint64_t)(arg1[16]) * (arg2[6]));
- x49 = ((uint64_t)(arg1[16]) * ((arg2[5]) * 0x2));
- x50 = ((uint64_t)(arg1[16]) * (arg2[4]));
- x51 = ((uint64_t)(arg1[16]) * ((arg2[3]) * 0x2));
- x52 = ((uint64_t)(arg1[15]) * ((arg2[18]) * 0x2));
- x53 = ((uint64_t)(arg1[15]) * ((arg2[17]) * 0x2));
- x54 = ((uint64_t)(arg1[15]) * (arg2[16]));
- x55 = ((uint64_t)(arg1[15]) * ((arg2[15]) * 0x2));
- x56 = ((uint64_t)(arg1[15]) * (arg2[14]));
- x57 = ((uint64_t)(arg1[15]) * ((arg2[13]) * 0x2));
- x58 = ((uint64_t)(arg1[15]) * ((arg2[12]) * 0x2));
- x59 = ((uint64_t)(arg1[15]) * ((arg2[11]) * 0x2));
- x60 = ((uint64_t)(arg1[15]) * ((arg2[10]) * 0x2));
- x61 = ((uint64_t)(arg1[15]) * (arg2[9]));
- x62 = ((uint64_t)(arg1[15]) * ((arg2[8]) * 0x2));
- x63 = ((uint64_t)(arg1[15]) * (arg2[7]));
- x64 = ((uint64_t)(arg1[15]) * ((arg2[6]) * 0x2));
- x65 = ((uint64_t)(arg1[15]) * ((arg2[5]) * 0x2));
- x66 = ((uint64_t)(arg1[15]) * ((arg2[4]) * 0x2));
- x67 = ((uint64_t)(arg1[14]) * (arg2[18]));
- x68 = ((uint64_t)(arg1[14]) * (arg2[17]));
- x69 = ((uint64_t)(arg1[14]) * (arg2[16]));
- x70 = ((uint64_t)(arg1[14]) * (arg2[15]));
- x71 = ((uint64_t)(arg1[14]) * (arg2[14]));
- x72 = ((uint64_t)(arg1[14]) * (arg2[13]));
- x73 = ((uint64_t)(arg1[14]) * ((arg2[12]) * 0x2));
- x74 = ((uint64_t)(arg1[14]) * (arg2[11]));
- x75 = ((uint64_t)(arg1[14]) * (arg2[10]));
- x76 = ((uint64_t)(arg1[14]) * (arg2[9]));
- x77 = ((uint64_t)(arg1[14]) * (arg2[8]));
- x78 = ((uint64_t)(arg1[14]) * (arg2[7]));
- x79 = ((uint64_t)(arg1[14]) * (arg2[6]));
- x80 = ((uint64_t)(arg1[14]) * ((arg2[5]) * 0x2));
- x81 = ((uint64_t)(arg1[13]) * (arg2[18]));
- x82 = ((uint64_t)(arg1[13]) * ((arg2[17]) * 0x2));
- x83 = ((uint64_t)(arg1[13]) * (arg2[16]));
- x84 = ((uint64_t)(arg1[13]) * ((arg2[15]) * 0x2));
- x85 = ((uint64_t)(arg1[13]) * (arg2[14]));
- x86 = ((uint64_t)(arg1[13]) * ((arg2[13]) * 0x2));
- x87 = ((uint64_t)(arg1[13]) * ((arg2[12]) * 0x2));
- x88 = ((uint64_t)(arg1[13]) * (arg2[11]));
- x89 = ((uint64_t)(arg1[13]) * ((arg2[10]) * 0x2));
- x90 = ((uint64_t)(arg1[13]) * (arg2[9]));
- x91 = ((uint64_t)(arg1[13]) * ((arg2[8]) * 0x2));
- x92 = ((uint64_t)(arg1[13]) * (arg2[7]));
- x93 = ((uint64_t)(arg1[13]) * ((arg2[6]) * 0x2));
- x94 = ((uint64_t)(arg1[12]) * ((arg2[18]) * 0x2));
- x95 = ((uint64_t)(arg1[12]) * ((arg2[17]) * 0x2));
- x96 = ((uint64_t)(arg1[12]) * ((arg2[16]) * 0x2));
- x97 = ((uint64_t)(arg1[12]) * ((arg2[15]) * 0x2));
- x98 = ((uint64_t)(arg1[12]) * ((arg2[14]) * 0x2));
- x99 = ((uint64_t)(arg1[12]) * ((arg2[13]) * 0x2));
- x100 = ((uint64_t)(arg1[12]) * ((arg2[12]) * 0x2));
- x101 = ((uint64_t)(arg1[12]) * ((arg2[11]) * 0x2));
- x102 = ((uint64_t)(arg1[12]) * ((arg2[10]) * 0x2));
- x103 = ((uint64_t)(arg1[12]) * ((arg2[9]) * 0x2));
- x104 = ((uint64_t)(arg1[12]) * ((arg2[8]) * 0x2));
- x105 = ((uint64_t)(arg1[12]) * ((arg2[7]) * 0x2));
- x106 = ((uint64_t)(arg1[11]) * (arg2[18]));
- x107 = ((uint64_t)(arg1[11]) * ((arg2[17]) * 0x2));
- x108 = ((uint64_t)(arg1[11]) * (arg2[16]));
- x109 = ((uint64_t)(arg1[11]) * ((arg2[15]) * 0x2));
- x110 = ((uint64_t)(arg1[11]) * (arg2[14]));
- x111 = ((uint64_t)(arg1[11]) * (arg2[13]));
- x112 = ((uint64_t)(arg1[11]) * ((arg2[12]) * 0x2));
- x113 = ((uint64_t)(arg1[11]) * (arg2[11]));
- x114 = ((uint64_t)(arg1[11]) * ((arg2[10]) * 0x2));
- x115 = ((uint64_t)(arg1[11]) * (arg2[9]));
- x116 = ((uint64_t)(arg1[11]) * ((arg2[8]) * 0x2));
- x117 = ((uint64_t)(arg1[10]) * ((arg2[18]) * 0x2));
- x118 = ((uint64_t)(arg1[10]) * ((arg2[17]) * 0x2));
- x119 = ((uint64_t)(arg1[10]) * ((arg2[16]) * 0x2));
- x120 = ((uint64_t)(arg1[10]) * ((arg2[15]) * 0x2));
- x121 = ((uint64_t)(arg1[10]) * (arg2[14]));
- x122 = ((uint64_t)(arg1[10]) * ((arg2[13]) * 0x2));
- x123 = ((uint64_t)(arg1[10]) * ((arg2[12]) * 0x2));
- x124 = ((uint64_t)(arg1[10]) * ((arg2[11]) * 0x2));
- x125 = ((uint64_t)(arg1[10]) * ((arg2[10]) * 0x2));
- x126 = ((uint64_t)(arg1[10]) * ((arg2[9]) * 0x2));
- x127 = ((uint64_t)(arg1[9]) * (arg2[18]));
- x128 = ((uint64_t)(arg1[9]) * ((arg2[17]) * 0x2));
- x129 = ((uint64_t)(arg1[9]) * (arg2[16]));
- x130 = ((uint64_t)(arg1[9]) * (arg2[15]));
- x131 = ((uint64_t)(arg1[9]) * (arg2[14]));
- x132 = ((uint64_t)(arg1[9]) * (arg2[13]));
- x133 = ((uint64_t)(arg1[9]) * ((arg2[12]) * 0x2));
- x134 = ((uint64_t)(arg1[9]) * (arg2[11]));
- x135 = ((uint64_t)(arg1[9]) * ((arg2[10]) * 0x2));
- x136 = ((uint64_t)(arg1[8]) * ((arg2[18]) * 0x2));
- x137 = ((uint64_t)(arg1[8]) * ((arg2[17]) * 0x2));
- x138 = ((uint64_t)(arg1[8]) * (arg2[16]));
- x139 = ((uint64_t)(arg1[8]) * ((arg2[15]) * 0x2));
- x140 = ((uint64_t)(arg1[8]) * (arg2[14]));
- x141 = ((uint64_t)(arg1[8]) * ((arg2[13]) * 0x2));
- x142 = ((uint64_t)(arg1[8]) * ((arg2[12]) * 0x2));
- x143 = ((uint64_t)(arg1[8]) * ((arg2[11]) * 0x2));
- x144 = ((uint64_t)(arg1[7]) * (arg2[18]));
- x145 = ((uint64_t)(arg1[7]) * (arg2[17]));
- x146 = ((uint64_t)(arg1[7]) * (arg2[16]));
- x147 = ((uint64_t)(arg1[7]) * (arg2[15]));
- x148 = ((uint64_t)(arg1[7]) * (arg2[14]));
- x149 = ((uint64_t)(arg1[7]) * (arg2[13]));
- x150 = ((uint64_t)(arg1[7]) * ((arg2[12]) * 0x2));
- x151 = ((uint64_t)(arg1[6]) * (arg2[18]));
- x152 = ((uint64_t)(arg1[6]) * ((arg2[17]) * 0x2));
- x153 = ((uint64_t)(arg1[6]) * (arg2[16]));
- x154 = ((uint64_t)(arg1[6]) * ((arg2[15]) * 0x2));
- x155 = ((uint64_t)(arg1[6]) * (arg2[14]));
- x156 = ((uint64_t)(arg1[6]) * ((arg2[13]) * 0x2));
- x157 = ((uint64_t)(arg1[5]) * ((arg2[18]) * 0x2));
- x158 = ((uint64_t)(arg1[5]) * ((arg2[17]) * 0x2));
- x159 = ((uint64_t)(arg1[5]) * ((arg2[16]) * 0x2));
- x160 = ((uint64_t)(arg1[5]) * ((arg2[15]) * 0x2));
- x161 = ((uint64_t)(arg1[5]) * ((arg2[14]) * 0x2));
- x162 = ((uint64_t)(arg1[4]) * (arg2[18]));
- x163 = ((uint64_t)(arg1[4]) * ((arg2[17]) * 0x2));
- x164 = ((uint64_t)(arg1[4]) * (arg2[16]));
- x165 = ((uint64_t)(arg1[4]) * ((arg2[15]) * 0x2));
- x166 = ((uint64_t)(arg1[3]) * ((arg2[18]) * 0x2));
- x167 = ((uint64_t)(arg1[3]) * ((arg2[17]) * 0x2));
- x168 = ((uint64_t)(arg1[3]) * ((arg2[16]) * 0x2));
- x169 = ((uint64_t)(arg1[2]) * (arg2[18]));
- x170 = ((uint64_t)(arg1[2]) * ((arg2[17]) * 0x2));
- x171 = ((uint64_t)(arg1[1]) * ((arg2[18]) * 0x2));
- x172 = ((uint64_t)(arg1[18]) * (arg2[0]));
- x173 = ((uint64_t)(arg1[17]) * ((arg2[1]) * 0x2));
- x174 = ((uint64_t)(arg1[17]) * (arg2[0]));
- x175 = ((uint64_t)(arg1[16]) * (arg2[2]));
- x176 = ((uint64_t)(arg1[16]) * (arg2[1]));
- x177 = ((uint64_t)(arg1[16]) * (arg2[0]));
- x178 = ((uint64_t)(arg1[15]) * ((arg2[3]) * 0x2));
- x179 = ((uint64_t)(arg1[15]) * (arg2[2]));
- x180 = ((uint64_t)(arg1[15]) * ((arg2[1]) * 0x2));
- x181 = ((uint64_t)(arg1[15]) * (arg2[0]));
- x182 = ((uint64_t)(arg1[14]) * (arg2[4]));
- x183 = ((uint64_t)(arg1[14]) * (arg2[3]));
- x184 = ((uint64_t)(arg1[14]) * (arg2[2]));
- x185 = ((uint64_t)(arg1[14]) * (arg2[1]));
- x186 = ((uint64_t)(arg1[14]) * (arg2[0]));
- x187 = ((uint64_t)(arg1[13]) * ((arg2[5]) * 0x2));
- x188 = ((uint64_t)(arg1[13]) * (arg2[4]));
- x189 = ((uint64_t)(arg1[13]) * ((arg2[3]) * 0x2));
- x190 = ((uint64_t)(arg1[13]) * (arg2[2]));
- x191 = ((uint64_t)(arg1[13]) * ((arg2[1]) * 0x2));
- x192 = ((uint64_t)(arg1[13]) * (arg2[0]));
- x193 = ((uint64_t)(arg1[12]) * ((arg2[6]) * 0x2));
- x194 = ((uint64_t)(arg1[12]) * ((arg2[5]) * 0x2));
- x195 = ((uint64_t)(arg1[12]) * ((arg2[4]) * 0x2));
- x196 = ((uint64_t)(arg1[12]) * ((arg2[3]) * 0x2));
- x197 = ((uint64_t)(arg1[12]) * ((arg2[2]) * 0x2));
- x198 = ((uint64_t)(arg1[12]) * ((arg2[1]) * 0x2));
- x199 = ((uint64_t)(arg1[12]) * (arg2[0]));
- x200 = ((uint64_t)(arg1[11]) * (arg2[7]));
- x201 = ((uint64_t)(arg1[11]) * (arg2[6]));
- x202 = ((uint64_t)(arg1[11]) * ((arg2[5]) * 0x2));
- x203 = ((uint64_t)(arg1[11]) * (arg2[4]));
- x204 = ((uint64_t)(arg1[11]) * ((arg2[3]) * 0x2));
- x205 = ((uint64_t)(arg1[11]) * (arg2[2]));
- x206 = ((uint64_t)(arg1[11]) * (arg2[1]));
- x207 = ((uint64_t)(arg1[11]) * (arg2[0]));
- x208 = ((uint64_t)(arg1[10]) * ((arg2[8]) * 0x2));
- x209 = ((uint64_t)(arg1[10]) * (arg2[7]));
- x210 = ((uint64_t)(arg1[10]) * ((arg2[6]) * 0x2));
- x211 = ((uint64_t)(arg1[10]) * ((arg2[5]) * 0x2));
- x212 = ((uint64_t)(arg1[10]) * ((arg2[4]) * 0x2));
- x213 = ((uint64_t)(arg1[10]) * ((arg2[3]) * 0x2));
- x214 = ((uint64_t)(arg1[10]) * (arg2[2]));
- x215 = ((uint64_t)(arg1[10]) * ((arg2[1]) * 0x2));
- x216 = ((uint64_t)(arg1[10]) * (arg2[0]));
- x217 = ((uint64_t)(arg1[9]) * (arg2[9]));
- x218 = ((uint64_t)(arg1[9]) * (arg2[8]));
- x219 = ((uint64_t)(arg1[9]) * (arg2[7]));
- x220 = ((uint64_t)(arg1[9]) * (arg2[6]));
- x221 = ((uint64_t)(arg1[9]) * ((arg2[5]) * 0x2));
- x222 = ((uint64_t)(arg1[9]) * (arg2[4]));
- x223 = ((uint64_t)(arg1[9]) * (arg2[3]));
- x224 = ((uint64_t)(arg1[9]) * (arg2[2]));
- x225 = ((uint64_t)(arg1[9]) * (arg2[1]));
- x226 = ((uint64_t)(arg1[9]) * (arg2[0]));
- x227 = ((uint64_t)(arg1[8]) * ((arg2[10]) * 0x2));
- x228 = ((uint64_t)(arg1[8]) * (arg2[9]));
- x229 = ((uint64_t)(arg1[8]) * ((arg2[8]) * 0x2));
- x230 = ((uint64_t)(arg1[8]) * (arg2[7]));
- x231 = ((uint64_t)(arg1[8]) * ((arg2[6]) * 0x2));
- x232 = ((uint64_t)(arg1[8]) * ((arg2[5]) * 0x2));
- x233 = ((uint64_t)(arg1[8]) * (arg2[4]));
- x234 = ((uint64_t)(arg1[8]) * ((arg2[3]) * 0x2));
- x235 = ((uint64_t)(arg1[8]) * (arg2[2]));
- x236 = ((uint64_t)(arg1[8]) * ((arg2[1]) * 0x2));
- x237 = ((uint64_t)(arg1[8]) * (arg2[0]));
- x238 = ((uint64_t)(arg1[7]) * (arg2[11]));
- x239 = ((uint64_t)(arg1[7]) * (arg2[10]));
- x240 = ((uint64_t)(arg1[7]) * (arg2[9]));
- x241 = ((uint64_t)(arg1[7]) * (arg2[8]));
- x242 = ((uint64_t)(arg1[7]) * (arg2[7]));
- x243 = ((uint64_t)(arg1[7]) * (arg2[6]));
- x244 = ((uint64_t)(arg1[7]) * (arg2[5]));
- x245 = ((uint64_t)(arg1[7]) * (arg2[4]));
- x246 = ((uint64_t)(arg1[7]) * (arg2[3]));
- x247 = ((uint64_t)(arg1[7]) * (arg2[2]));
- x248 = ((uint64_t)(arg1[7]) * (arg2[1]));
- x249 = ((uint64_t)(arg1[7]) * (arg2[0]));
- x250 = ((uint64_t)(arg1[6]) * ((arg2[12]) * 0x2));
- x251 = ((uint64_t)(arg1[6]) * (arg2[11]));
- x252 = ((uint64_t)(arg1[6]) * ((arg2[10]) * 0x2));
- x253 = ((uint64_t)(arg1[6]) * (arg2[9]));
- x254 = ((uint64_t)(arg1[6]) * ((arg2[8]) * 0x2));
- x255 = ((uint64_t)(arg1[6]) * (arg2[7]));
- x256 = ((uint64_t)(arg1[6]) * (arg2[6]));
- x257 = ((uint64_t)(arg1[6]) * ((arg2[5]) * 0x2));
- x258 = ((uint64_t)(arg1[6]) * (arg2[4]));
- x259 = ((uint64_t)(arg1[6]) * ((arg2[3]) * 0x2));
- x260 = ((uint64_t)(arg1[6]) * (arg2[2]));
- x261 = ((uint64_t)(arg1[6]) * ((arg2[1]) * 0x2));
- x262 = ((uint64_t)(arg1[6]) * (arg2[0]));
- x263 = ((uint64_t)(arg1[5]) * ((arg2[13]) * 0x2));
- x264 = ((uint64_t)(arg1[5]) * ((arg2[12]) * 0x2));
- x265 = ((uint64_t)(arg1[5]) * ((arg2[11]) * 0x2));
- x266 = ((uint64_t)(arg1[5]) * ((arg2[10]) * 0x2));
- x267 = ((uint64_t)(arg1[5]) * ((arg2[9]) * 0x2));
- x268 = ((uint64_t)(arg1[5]) * ((arg2[8]) * 0x2));
- x269 = ((uint64_t)(arg1[5]) * (arg2[7]));
- x270 = ((uint64_t)(arg1[5]) * ((arg2[6]) * 0x2));
- x271 = ((uint64_t)(arg1[5]) * ((arg2[5]) * 0x2));
- x272 = ((uint64_t)(arg1[5]) * ((arg2[4]) * 0x2));
- x273 = ((uint64_t)(arg1[5]) * ((arg2[3]) * 0x2));
- x274 = ((uint64_t)(arg1[5]) * ((arg2[2]) * 0x2));
- x275 = ((uint64_t)(arg1[5]) * ((arg2[1]) * 0x2));
- x276 = ((uint64_t)(arg1[5]) * (arg2[0]));
- x277 = ((uint64_t)(arg1[4]) * (arg2[14]));
- x278 = ((uint64_t)(arg1[4]) * (arg2[13]));
- x279 = ((uint64_t)(arg1[4]) * ((arg2[12]) * 0x2));
- x280 = ((uint64_t)(arg1[4]) * (arg2[11]));
- x281 = ((uint64_t)(arg1[4]) * ((arg2[10]) * 0x2));
- x282 = ((uint64_t)(arg1[4]) * (arg2[9]));
- x283 = ((uint64_t)(arg1[4]) * (arg2[8]));
- x284 = ((uint64_t)(arg1[4]) * (arg2[7]));
- x285 = ((uint64_t)(arg1[4]) * (arg2[6]));
- x286 = ((uint64_t)(arg1[4]) * ((arg2[5]) * 0x2));
- x287 = ((uint64_t)(arg1[4]) * (arg2[4]));
- x288 = ((uint64_t)(arg1[4]) * ((arg2[3]) * 0x2));
- x289 = ((uint64_t)(arg1[4]) * (arg2[2]));
- x290 = ((uint64_t)(arg1[4]) * (arg2[1]));
- x291 = ((uint64_t)(arg1[4]) * (arg2[0]));
- x292 = ((uint64_t)(arg1[3]) * ((arg2[15]) * 0x2));
- x293 = ((uint64_t)(arg1[3]) * (arg2[14]));
- x294 = ((uint64_t)(arg1[3]) * ((arg2[13]) * 0x2));
- x295 = ((uint64_t)(arg1[3]) * ((arg2[12]) * 0x2));
- x296 = ((uint64_t)(arg1[3]) * ((arg2[11]) * 0x2));
- x297 = ((uint64_t)(arg1[3]) * ((arg2[10]) * 0x2));
- x298 = ((uint64_t)(arg1[3]) * (arg2[9]));
- x299 = ((uint64_t)(arg1[3]) * ((arg2[8]) * 0x2));
- x300 = ((uint64_t)(arg1[3]) * (arg2[7]));
- x301 = ((uint64_t)(arg1[3]) * ((arg2[6]) * 0x2));
- x302 = ((uint64_t)(arg1[3]) * ((arg2[5]) * 0x2));
- x303 = ((uint64_t)(arg1[3]) * ((arg2[4]) * 0x2));
- x304 = ((uint64_t)(arg1[3]) * ((arg2[3]) * 0x2));
- x305 = ((uint64_t)(arg1[3]) * (arg2[2]));
- x306 = ((uint64_t)(arg1[3]) * ((arg2[1]) * 0x2));
- x307 = ((uint64_t)(arg1[3]) * (arg2[0]));
- x308 = ((uint64_t)(arg1[2]) * (arg2[16]));
- x309 = ((uint64_t)(arg1[2]) * (arg2[15]));
- x310 = ((uint64_t)(arg1[2]) * (arg2[14]));
- x311 = ((uint64_t)(arg1[2]) * (arg2[13]));
- x312 = ((uint64_t)(arg1[2]) * ((arg2[12]) * 0x2));
- x313 = ((uint64_t)(arg1[2]) * (arg2[11]));
- x314 = ((uint64_t)(arg1[2]) * (arg2[10]));
- x315 = ((uint64_t)(arg1[2]) * (arg2[9]));
- x316 = ((uint64_t)(arg1[2]) * (arg2[8]));
- x317 = ((uint64_t)(arg1[2]) * (arg2[7]));
- x318 = ((uint64_t)(arg1[2]) * (arg2[6]));
- x319 = ((uint64_t)(arg1[2]) * ((arg2[5]) * 0x2));
- x320 = ((uint64_t)(arg1[2]) * (arg2[4]));
- x321 = ((uint64_t)(arg1[2]) * (arg2[3]));
- x322 = ((uint64_t)(arg1[2]) * (arg2[2]));
- x323 = ((uint64_t)(arg1[2]) * (arg2[1]));
- x324 = ((uint64_t)(arg1[2]) * (arg2[0]));
- x325 = ((uint64_t)(arg1[1]) * ((arg2[17]) * 0x2));
- x326 = ((uint64_t)(arg1[1]) * (arg2[16]));
- x327 = ((uint64_t)(arg1[1]) * ((arg2[15]) * 0x2));
- x328 = ((uint64_t)(arg1[1]) * (arg2[14]));
- x329 = ((uint64_t)(arg1[1]) * ((arg2[13]) * 0x2));
- x330 = ((uint64_t)(arg1[1]) * ((arg2[12]) * 0x2));
- x331 = ((uint64_t)(arg1[1]) * (arg2[11]));
- x332 = ((uint64_t)(arg1[1]) * ((arg2[10]) * 0x2));
- x333 = ((uint64_t)(arg1[1]) * (arg2[9]));
- x334 = ((uint64_t)(arg1[1]) * ((arg2[8]) * 0x2));
- x335 = ((uint64_t)(arg1[1]) * (arg2[7]));
- x336 = ((uint64_t)(arg1[1]) * ((arg2[6]) * 0x2));
- x337 = ((uint64_t)(arg1[1]) * ((arg2[5]) * 0x2));
- x338 = ((uint64_t)(arg1[1]) * (arg2[4]));
- x339 = ((uint64_t)(arg1[1]) * ((arg2[3]) * 0x2));
- x340 = ((uint64_t)(arg1[1]) * (arg2[2]));
- x341 = ((uint64_t)(arg1[1]) * ((arg2[1]) * 0x2));
- x342 = ((uint64_t)(arg1[1]) * (arg2[0]));
- x343 = ((uint64_t)(arg1[0]) * (arg2[18]));
- x344 = ((uint64_t)(arg1[0]) * (arg2[17]));
- x345 = ((uint64_t)(arg1[0]) * (arg2[16]));
- x346 = ((uint64_t)(arg1[0]) * (arg2[15]));
- x347 = ((uint64_t)(arg1[0]) * (arg2[14]));
- x348 = ((uint64_t)(arg1[0]) * (arg2[13]));
- x349 = ((uint64_t)(arg1[0]) * (arg2[12]));
- x350 = ((uint64_t)(arg1[0]) * (arg2[11]));
- x351 = ((uint64_t)(arg1[0]) * (arg2[10]));
- x352 = ((uint64_t)(arg1[0]) * (arg2[9]));
- x353 = ((uint64_t)(arg1[0]) * (arg2[8]));
- x354 = ((uint64_t)(arg1[0]) * (arg2[7]));
- x355 = ((uint64_t)(arg1[0]) * (arg2[6]));
- x356 = ((uint64_t)(arg1[0]) * (arg2[5]));
- x357 = ((uint64_t)(arg1[0]) * (arg2[4]));
- x358 = ((uint64_t)(arg1[0]) * (arg2[3]));
- x359 = ((uint64_t)(arg1[0]) * (arg2[2]));
- x360 = ((uint64_t)(arg1[0]) * (arg2[1]));
- x361 = ((uint64_t)(arg1[0]) * (arg2[0]));
- x362 =
- (x361 +
- (x171 +
- (x170 +
- (x168 +
- (x165 +
- (x161 +
- (x156 +
- (x150 +
- (x143 +
- (x135 +
- (x126 +
- (x116 +
- (x105 +
- (x93 + (x80 + (x66 + (x51 + (x35 + x18))))))))))))))))));
- x363 = (x362 >> 28);
- x364 = (uint32_t)(x362 & UINT32_C(0xfffffff));
- x365 = (x343 +
- (x325 +
- (x308 +
- (x292 +
- (x277 +
- (x263 +
- (x250 +
- (x238 +
- (x227 +
- (x217 +
- (x208 +
- (x200 +
- (x193 +
- (x187 +
- (x182 + (x178 + (x175 + (x173 + x172))))))))))))))))));
- x366 = (x344 +
- (x326 +
- (x309 +
- (x293 +
- (x278 +
- (x264 +
- (x251 +
- (x239 +
- (x228 +
- (x218 +
- (x209 +
- (x201 +
- (x194 +
- (x188 +
- (x183 + (x179 + (x176 + (x174 + x1))))))))))))))))));
- x367 = (x345 +
- (x327 +
- (x310 +
- (x294 +
- (x279 +
- (x265 +
- (x252 +
- (x240 +
- (x229 +
- (x219 +
- (x210 +
- (x202 +
- (x195 +
- (x189 +
- (x184 + (x180 + (x177 + (x19 + x2))))))))))))))))));
- x368 =
- (x346 +
- (x328 +
- (x311 +
- (x295 +
- (x280 +
- (x266 +
- (x253 +
- (x241 +
- (x230 +
- (x220 +
- (x211 +
- (x203 +
- (x196 +
- (x190 + (x185 + (x181 + (x36 + (x20 + x3))))))))))))))))));
- x369 =
- (x347 +
- (x329 +
- (x312 +
- (x296 +
- (x281 +
- (x267 +
- (x254 +
- (x242 +
- (x231 +
- (x221 +
- (x212 +
- (x204 +
- (x197 +
- (x191 + (x186 + (x52 + (x37 + (x21 + x4))))))))))))))))));
- x370 =
- (x348 +
- (x330 +
- (x313 +
- (x297 +
- (x282 +
- (x268 +
- (x255 +
- (x243 +
- (x232 +
- (x222 +
- (x213 +
- (x205 +
- (x198 +
- (x192 + (x67 + (x53 + (x38 + (x22 + x5))))))))))))))))));
- x371 = (x349 +
- (x331 +
- (x314 +
- (x298 +
- (x283 +
- (x269 +
- (x256 +
- (x244 +
- (x233 +
- (x223 +
- (x214 +
- (x206 +
- (x199 +
- (x81 + (x68 + (x54 + (x39 + (x23 + x6))))))))))))))))));
- x372 = (x350 +
- (x332 +
- (x315 +
- (x299 +
- (x284 +
- (x270 +
- (x257 +
- (x245 +
- (x234 +
- (x224 +
- (x215 +
- (x207 +
- (x94 +
- (x82 + (x69 + (x55 + (x40 + (x24 + x7))))))))))))))))));
- x373 = (x351 +
- (x333 +
- (x316 +
- (x300 +
- (x285 +
- (x271 +
- (x258 +
- (x246 +
- (x235 +
- (x225 +
- (x216 +
- (x106 +
- (x95 +
- (x83 + (x70 + (x56 + (x41 + (x25 + x8))))))))))))))))));
- x374 = (x352 +
- (x334 +
- (x317 +
- (x301 +
- (x286 +
- (x272 +
- (x259 +
- (x247 +
- (x236 +
- (x226 +
- (x117 +
- (x107 +
- (x96 +
- (x84 + (x71 + (x57 + (x42 + (x26 + x9))))))))))))))))));
- x375 =
- (x353 +
- (x335 +
- (x318 +
- (x302 +
- (x287 +
- (x273 +
- (x260 +
- (x248 +
- (x237 +
- (x127 +
- (x118 +
- (x108 +
- (x97 +
- (x85 + (x72 + (x58 + (x43 + (x27 + x10))))))))))))))))));
- x376 =
- (x354 +
- (x336 +
- (x319 +
- (x303 +
- (x288 +
- (x274 +
- (x261 +
- (x249 +
- (x136 +
- (x128 +
- (x119 +
- (x109 +
- (x98 +
- (x86 + (x73 + (x59 + (x44 + (x28 + x11))))))))))))))))));
- x377 =
- (x355 +
- (x337 +
- (x320 +
- (x304 +
- (x289 +
- (x275 +
- (x262 +
- (x144 +
- (x137 +
- (x129 +
- (x120 +
- (x110 +
- (x99 +
- (x87 + (x74 + (x60 + (x45 + (x29 + x12))))))))))))))))));
- x378 =
- (x356 +
- (x338 +
- (x321 +
- (x305 +
- (x290 +
- (x276 +
- (x151 +
- (x145 +
- (x138 +
- (x130 +
- (x121 +
- (x111 +
- (x100 +
- (x88 + (x75 + (x61 + (x46 + (x30 + x13))))))))))))))))));
- x379 =
- (x357 +
- (x339 +
- (x322 +
- (x306 +
- (x291 +
- (x157 +
- (x152 +
- (x146 +
- (x139 +
- (x131 +
- (x122 +
- (x112 +
- (x101 +
- (x89 + (x76 + (x62 + (x47 + (x31 + x14))))))))))))))))));
- x380 =
- (x358 +
- (x340 +
- (x323 +
- (x307 +
- (x162 +
- (x158 +
- (x153 +
- (x147 +
- (x140 +
- (x132 +
- (x123 +
- (x113 +
- (x102 +
- (x90 + (x77 + (x63 + (x48 + (x32 + x15))))))))))))))))));
- x381 =
- (x359 +
- (x341 +
- (x324 +
- (x166 +
- (x163 +
- (x159 +
- (x154 +
- (x148 +
- (x141 +
- (x133 +
- (x124 +
- (x114 +
- (x103 +
- (x91 + (x78 + (x64 + (x49 + (x33 + x16))))))))))))))))));
- x382 =
- (x360 +
- (x342 +
- (x169 +
- (x167 +
- (x164 +
- (x160 +
- (x155 +
- (x149 +
- (x142 +
- (x134 +
- (x125 +
- (x115 +
- (x104 +
- (x92 + (x79 + (x65 + (x50 + (x34 + x17))))))))))))))))));
- x383 = (x363 + x382);
- x384 = (x383 >> 27);
- x385 = (uint32_t)(x383 & UINT32_C(0x7ffffff));
- x386 = (x384 + x381);
- x387 = (x386 >> 28);
- x388 = (uint32_t)(x386 & UINT32_C(0xfffffff));
- x389 = (x387 + x380);
- x390 = (x389 >> 27);
- x391 = (uint32_t)(x389 & UINT32_C(0x7ffffff));
- x392 = (x390 + x379);
- x393 = (x392 >> 28);
- x394 = (uint32_t)(x392 & UINT32_C(0xfffffff));
- x395 = (x393 + x378);
- x396 = (x395 >> 27);
- x397 = (uint32_t)(x395 & UINT32_C(0x7ffffff));
- x398 = (x396 + x377);
- x399 = (x398 >> 27);
- x400 = (uint32_t)(x398 & UINT32_C(0x7ffffff));
- x401 = (x399 + x376);
- x402 = (x401 >> 28);
- x403 = (uint32_t)(x401 & UINT32_C(0xfffffff));
- x404 = (x402 + x375);
- x405 = (x404 >> 27);
- x406 = (uint32_t)(x404 & UINT32_C(0x7ffffff));
- x407 = (x405 + x374);
- x408 = (x407 >> 28);
- x409 = (uint32_t)(x407 & UINT32_C(0xfffffff));
- x410 = (x408 + x373);
- x411 = (x410 >> 27);
- x412 = (uint32_t)(x410 & UINT32_C(0x7ffffff));
- x413 = (x411 + x372);
- x414 = (x413 >> 28);
- x415 = (uint32_t)(x413 & UINT32_C(0xfffffff));
- x416 = (x414 + x371);
- x417 = (x416 >> 27);
- x418 = (uint32_t)(x416 & UINT32_C(0x7ffffff));
- x419 = (x417 + x370);
- x420 = (x419 >> 27);
- x421 = (uint32_t)(x419 & UINT32_C(0x7ffffff));
- x422 = (x420 + x369);
- x423 = (x422 >> 28);
- x424 = (uint32_t)(x422 & UINT32_C(0xfffffff));
- x425 = (x423 + x368);
- x426 = (x425 >> 27);
- x427 = (uint32_t)(x425 & UINT32_C(0x7ffffff));
- x428 = (x426 + x367);
- x429 = (x428 >> 28);
- x430 = (uint32_t)(x428 & UINT32_C(0xfffffff));
- x431 = (x429 + x366);
- x432 = (x431 >> 27);
- x433 = (uint32_t)(x431 & UINT32_C(0x7ffffff));
- x434 = (x432 + x365);
- x435 = (x434 >> 27);
- x436 = (uint32_t)(x434 & UINT32_C(0x7ffffff));
- x437 = (x364 + x435);
- x438 = (uint32_t)(x437 >> 28);
- x439 = (uint32_t)(x437 & UINT32_C(0xfffffff));
- x440 = (x438 + x385);
- x441 = (fiat_secp521r1_uint1)(x440 >> 27);
- x442 = (x440 & UINT32_C(0x7ffffff));
- x443 = (x441 + x388);
- out1[0] = x439;
- out1[1] = x442;
- out1[2] = x443;
- out1[3] = x391;
- out1[4] = x394;
- out1[5] = x397;
- out1[6] = x400;
- out1[7] = x403;
- out1[8] = x406;
- out1[9] = x409;
- out1[10] = x412;
- out1[11] = x415;
- out1[12] = x418;
- out1[13] = x421;
- out1[14] = x424;
- out1[15] = x427;
- out1[16] = x430;
- out1[17] = x433;
- out1[18] = x436;
-}
-
-/*
- * The function fiat_secp521r1_carry_square squares a field element and reduces the result.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 * eval arg1) mod m
- *
- */
-static void
-fiat_secp521r1_carry_square(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_loose_field_element arg1)
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint32_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint32_t x18;
- uint32_t x19;
- uint32_t x20;
- uint32_t x21;
- uint32_t x22;
- uint32_t x23;
- uint32_t x24;
- uint32_t x25;
- uint32_t x26;
- uint32_t x27;
- uint32_t x28;
- uint32_t x29;
- uint32_t x30;
- uint32_t x31;
- uint32_t x32;
- uint32_t x33;
- uint32_t x34;
- uint32_t x35;
- uint32_t x36;
- uint64_t x37;
- uint64_t x38;
- uint64_t x39;
- uint64_t x40;
- uint64_t x41;
- uint64_t x42;
- uint64_t x43;
- uint64_t x44;
- uint64_t x45;
- uint64_t x46;
- uint64_t x47;
- uint64_t x48;
- uint64_t x49;
- uint64_t x50;
- uint64_t x51;
- uint64_t x52;
- uint64_t x53;
- uint64_t x54;
- uint64_t x55;
- uint64_t x56;
- uint64_t x57;
- uint64_t x58;
- uint64_t x59;
- uint64_t x60;
- uint64_t x61;
- uint64_t x62;
- uint64_t x63;
- uint64_t x64;
- uint64_t x65;
- uint64_t x66;
- uint64_t x67;
- uint64_t x68;
- uint64_t x69;
- uint64_t x70;
- uint64_t x71;
- uint64_t x72;
- uint64_t x73;
- uint64_t x74;
- uint64_t x75;
- uint64_t x76;
- uint64_t x77;
- uint64_t x78;
- uint64_t x79;
- uint64_t x80;
- uint64_t x81;
- uint64_t x82;
- uint64_t x83;
- uint64_t x84;
- uint64_t x85;
- uint64_t x86;
- uint64_t x87;
- uint64_t x88;
- uint64_t x89;
- uint64_t x90;
- uint64_t x91;
- uint64_t x92;
- uint64_t x93;
- uint64_t x94;
- uint64_t x95;
- uint64_t x96;
- uint64_t x97;
- uint64_t x98;
- uint64_t x99;
- uint64_t x100;
- uint64_t x101;
- uint64_t x102;
- uint64_t x103;
- uint64_t x104;
- uint64_t x105;
- uint64_t x106;
- uint64_t x107;
- uint64_t x108;
- uint64_t x109;
- uint64_t x110;
- uint64_t x111;
- uint64_t x112;
- uint64_t x113;
- uint64_t x114;
- uint64_t x115;
- uint64_t x116;
- uint64_t x117;
- uint64_t x118;
- uint64_t x119;
- uint64_t x120;
- uint64_t x121;
- uint64_t x122;
- uint64_t x123;
- uint64_t x124;
- uint64_t x125;
- uint64_t x126;
- uint64_t x127;
- uint64_t x128;
- uint64_t x129;
- uint64_t x130;
- uint64_t x131;
- uint64_t x132;
- uint64_t x133;
- uint64_t x134;
- uint64_t x135;
- uint64_t x136;
- uint64_t x137;
- uint64_t x138;
- uint64_t x139;
- uint64_t x140;
- uint64_t x141;
- uint64_t x142;
- uint64_t x143;
- uint64_t x144;
- uint64_t x145;
- uint64_t x146;
- uint64_t x147;
- uint64_t x148;
- uint64_t x149;
- uint64_t x150;
- uint64_t x151;
- uint64_t x152;
- uint64_t x153;
- uint64_t x154;
- uint64_t x155;
- uint64_t x156;
- uint64_t x157;
- uint64_t x158;
- uint64_t x159;
- uint64_t x160;
- uint64_t x161;
- uint64_t x162;
- uint64_t x163;
- uint64_t x164;
- uint64_t x165;
- uint64_t x166;
- uint64_t x167;
- uint64_t x168;
- uint64_t x169;
- uint64_t x170;
- uint64_t x171;
- uint64_t x172;
- uint64_t x173;
- uint64_t x174;
- uint64_t x175;
- uint64_t x176;
- uint64_t x177;
- uint64_t x178;
- uint64_t x179;
- uint64_t x180;
- uint64_t x181;
- uint64_t x182;
- uint64_t x183;
- uint64_t x184;
- uint64_t x185;
- uint64_t x186;
- uint64_t x187;
- uint64_t x188;
- uint64_t x189;
- uint64_t x190;
- uint64_t x191;
- uint64_t x192;
- uint64_t x193;
- uint64_t x194;
- uint64_t x195;
- uint64_t x196;
- uint64_t x197;
- uint64_t x198;
- uint64_t x199;
- uint64_t x200;
- uint64_t x201;
- uint64_t x202;
- uint64_t x203;
- uint64_t x204;
- uint64_t x205;
- uint64_t x206;
- uint64_t x207;
- uint64_t x208;
- uint64_t x209;
- uint64_t x210;
- uint64_t x211;
- uint64_t x212;
- uint64_t x213;
- uint64_t x214;
- uint64_t x215;
- uint64_t x216;
- uint64_t x217;
- uint64_t x218;
- uint64_t x219;
- uint64_t x220;
- uint64_t x221;
- uint64_t x222;
- uint64_t x223;
- uint64_t x224;
- uint64_t x225;
- uint64_t x226;
- uint64_t x227;
- uint64_t x228;
- uint32_t x229;
- uint64_t x230;
- uint64_t x231;
- uint64_t x232;
- uint64_t x233;
- uint64_t x234;
- uint64_t x235;
- uint64_t x236;
- uint64_t x237;
- uint64_t x238;
- uint64_t x239;
- uint64_t x240;
- uint64_t x241;
- uint64_t x242;
- uint64_t x243;
- uint64_t x244;
- uint64_t x245;
- uint64_t x246;
- uint64_t x247;
- uint64_t x248;
- uint64_t x249;
- uint32_t x250;
- uint64_t x251;
- uint64_t x252;
- uint32_t x253;
- uint64_t x254;
- uint64_t x255;
- uint32_t x256;
- uint64_t x257;
- uint64_t x258;
- uint32_t x259;
- uint64_t x260;
- uint64_t x261;
- uint32_t x262;
- uint64_t x263;
- uint64_t x264;
- uint32_t x265;
- uint64_t x266;
- uint64_t x267;
- uint32_t x268;
- uint64_t x269;
- uint64_t x270;
- uint32_t x271;
- uint64_t x272;
- uint64_t x273;
- uint32_t x274;
- uint64_t x275;
- uint64_t x276;
- uint32_t x277;
- uint64_t x278;
- uint64_t x279;
- uint32_t x280;
- uint64_t x281;
- uint64_t x282;
- uint32_t x283;
- uint64_t x284;
- uint64_t x285;
- uint32_t x286;
- uint64_t x287;
- uint64_t x288;
- uint32_t x289;
- uint64_t x290;
- uint64_t x291;
- uint32_t x292;
- uint64_t x293;
- uint64_t x294;
- uint32_t x295;
- uint64_t x296;
- uint64_t x297;
- uint32_t x298;
- uint64_t x299;
- uint64_t x300;
- uint32_t x301;
- uint64_t x302;
- uint32_t x303;
- uint32_t x304;
- uint32_t x305;
- fiat_secp521r1_uint1 x306;
- uint32_t x307;
- uint32_t x308;
- x1 = (arg1[18]);
- x2 = (x1 * 0x2);
- x3 = ((arg1[18]) * 0x2);
- x4 = (arg1[17]);
- x5 = (x4 * 0x2);
- x6 = ((arg1[17]) * 0x2);
- x7 = (arg1[16]);
- x8 = (x7 * 0x2);
- x9 = ((arg1[16]) * 0x2);
- x10 = (arg1[15]);
- x11 = (x10 * 0x2);
- x12 = ((arg1[15]) * 0x2);
- x13 = (arg1[14]);
- x14 = (x13 * 0x2);
- x15 = ((arg1[14]) * 0x2);
- x16 = (arg1[13]);
- x17 = (x16 * 0x2);
- x18 = ((arg1[13]) * 0x2);
- x19 = (arg1[12]);
- x20 = (x19 * 0x2);
- x21 = ((arg1[12]) * 0x2);
- x22 = (arg1[11]);
- x23 = (x22 * 0x2);
- x24 = ((arg1[11]) * 0x2);
- x25 = (arg1[10]);
- x26 = (x25 * 0x2);
- x27 = ((arg1[10]) * 0x2);
- x28 = ((arg1[9]) * 0x2);
- x29 = ((arg1[8]) * 0x2);
- x30 = ((arg1[7]) * 0x2);
- x31 = ((arg1[6]) * 0x2);
- x32 = ((arg1[5]) * 0x2);
- x33 = ((arg1[4]) * 0x2);
- x34 = ((arg1[3]) * 0x2);
- x35 = ((arg1[2]) * 0x2);
- x36 = ((arg1[1]) * 0x2);
- x37 = ((uint64_t)(arg1[18]) * x1);
- x38 = ((uint64_t)(arg1[17]) * (x2 * 0x2));
- x39 = ((uint64_t)(arg1[17]) * (x4 * 0x2));
- x40 = ((uint64_t)(arg1[16]) * x2);
- x41 = ((uint64_t)(arg1[16]) * (x5 * 0x2));
- x42 = ((uint64_t)(arg1[16]) * x7);
- x43 = ((uint64_t)(arg1[15]) * (x2 * 0x2));
- x44 = ((uint64_t)(arg1[15]) * (x5 * 0x2));
- x45 = ((uint64_t)(arg1[15]) * x8);
- x46 = ((uint64_t)(arg1[15]) * (x10 * 0x2));
- x47 = ((uint64_t)(arg1[14]) * x2);
- x48 = ((uint64_t)(arg1[14]) * x5);
- x49 = ((uint64_t)(arg1[14]) * x8);
- x50 = ((uint64_t)(arg1[14]) * x11);
- x51 = ((uint64_t)(arg1[14]) * x13);
- x52 = ((uint64_t)(arg1[13]) * x2);
- x53 = ((uint64_t)(arg1[13]) * (x5 * 0x2));
- x54 = ((uint64_t)(arg1[13]) * x8);
- x55 = ((uint64_t)(arg1[13]) * (x11 * 0x2));
- x56 = ((uint64_t)(arg1[13]) * x14);
- x57 = ((uint64_t)(arg1[13]) * (x16 * 0x2));
- x58 = ((uint64_t)(arg1[12]) * (x2 * 0x2));
- x59 = ((uint64_t)(arg1[12]) * (x5 * 0x2));
- x60 = ((uint64_t)(arg1[12]) * (x8 * 0x2));
- x61 = ((uint64_t)(arg1[12]) * (x11 * 0x2));
- x62 = ((uint64_t)(arg1[12]) * (x14 * 0x2));
- x63 = ((uint64_t)(arg1[12]) * (x17 * 0x2));
- x64 = ((uint64_t)(arg1[12]) * (x19 * 0x2));
- x65 = ((uint64_t)(arg1[11]) * x2);
- x66 = ((uint64_t)(arg1[11]) * (x5 * 0x2));
- x67 = ((uint64_t)(arg1[11]) * x8);
- x68 = ((uint64_t)(arg1[11]) * (x11 * 0x2));
- x69 = ((uint64_t)(arg1[11]) * x14);
- x70 = ((uint64_t)(arg1[11]) * x17);
- x71 = ((uint64_t)(arg1[11]) * (x20 * 0x2));
- x72 = ((uint64_t)(arg1[11]) * x22);
- x73 = ((uint64_t)(arg1[10]) * (x2 * 0x2));
- x74 = ((uint64_t)(arg1[10]) * (x5 * 0x2));
- x75 = ((uint64_t)(arg1[10]) * (x8 * 0x2));
- x76 = ((uint64_t)(arg1[10]) * (x11 * 0x2));
- x77 = ((uint64_t)(arg1[10]) * x14);
- x78 = ((uint64_t)(arg1[10]) * (x17 * 0x2));
- x79 = ((uint64_t)(arg1[10]) * (x20 * 0x2));
- x80 = ((uint64_t)(arg1[10]) * (x23 * 0x2));
- x81 = ((uint64_t)(arg1[10]) * (x25 * 0x2));
- x82 = ((uint64_t)(arg1[9]) * x2);
- x83 = ((uint64_t)(arg1[9]) * (x5 * 0x2));
- x84 = ((uint64_t)(arg1[9]) * x8);
- x85 = ((uint64_t)(arg1[9]) * x11);
- x86 = ((uint64_t)(arg1[9]) * x14);
- x87 = ((uint64_t)(arg1[9]) * x17);
- x88 = ((uint64_t)(arg1[9]) * (x20 * 0x2));
- x89 = ((uint64_t)(arg1[9]) * x23);
- x90 = ((uint64_t)(arg1[9]) * (x26 * 0x2));
- x91 = ((uint64_t)(arg1[9]) * (arg1[9]));
- x92 = ((uint64_t)(arg1[8]) * (x2 * 0x2));
- x93 = ((uint64_t)(arg1[8]) * (x5 * 0x2));
- x94 = ((uint64_t)(arg1[8]) * x8);
- x95 = ((uint64_t)(arg1[8]) * (x11 * 0x2));
- x96 = ((uint64_t)(arg1[8]) * x14);
- x97 = ((uint64_t)(arg1[8]) * (x17 * 0x2));
- x98 = ((uint64_t)(arg1[8]) * (x20 * 0x2));
- x99 = ((uint64_t)(arg1[8]) * (x23 * 0x2));
- x100 = ((uint64_t)(arg1[8]) * (x27 * 0x2));
- x101 = ((uint64_t)(arg1[8]) * x28);
- x102 = ((uint64_t)(arg1[8]) * ((arg1[8]) * 0x2));
- x103 = ((uint64_t)(arg1[7]) * x2);
- x104 = ((uint64_t)(arg1[7]) * x5);
- x105 = ((uint64_t)(arg1[7]) * x8);
- x106 = ((uint64_t)(arg1[7]) * x11);
- x107 = ((uint64_t)(arg1[7]) * x14);
- x108 = ((uint64_t)(arg1[7]) * x17);
- x109 = ((uint64_t)(arg1[7]) * (x20 * 0x2));
- x110 = ((uint64_t)(arg1[7]) * x24);
- x111 = ((uint64_t)(arg1[7]) * x27);
- x112 = ((uint64_t)(arg1[7]) * x28);
- x113 = ((uint64_t)(arg1[7]) * x29);
- x114 = ((uint64_t)(arg1[7]) * (arg1[7]));
- x115 = ((uint64_t)(arg1[6]) * x2);
- x116 = ((uint64_t)(arg1[6]) * (x5 * 0x2));
- x117 = ((uint64_t)(arg1[6]) * x8);
- x118 = ((uint64_t)(arg1[6]) * (x11 * 0x2));
- x119 = ((uint64_t)(arg1[6]) * x14);
- x120 = ((uint64_t)(arg1[6]) * (x17 * 0x2));
- x121 = ((uint64_t)(arg1[6]) * (x21 * 0x2));
- x122 = ((uint64_t)(arg1[6]) * x24);
- x123 = ((uint64_t)(arg1[6]) * (x27 * 0x2));
- x124 = ((uint64_t)(arg1[6]) * x28);
- x125 = ((uint64_t)(arg1[6]) * (x29 * 0x2));
- x126 = ((uint64_t)(arg1[6]) * x30);
- x127 = ((uint64_t)(arg1[6]) * (arg1[6]));
- x128 = ((uint64_t)(arg1[5]) * (x2 * 0x2));
- x129 = ((uint64_t)(arg1[5]) * (x5 * 0x2));
- x130 = ((uint64_t)(arg1[5]) * (x8 * 0x2));
- x131 = ((uint64_t)(arg1[5]) * (x11 * 0x2));
- x132 = ((uint64_t)(arg1[5]) * (x14 * 0x2));
- x133 = ((uint64_t)(arg1[5]) * (x18 * 0x2));
- x134 = ((uint64_t)(arg1[5]) * (x21 * 0x2));
- x135 = ((uint64_t)(arg1[5]) * (x24 * 0x2));
- x136 = ((uint64_t)(arg1[5]) * (x27 * 0x2));
- x137 = ((uint64_t)(arg1[5]) * (x28 * 0x2));
- x138 = ((uint64_t)(arg1[5]) * (x29 * 0x2));
- x139 = ((uint64_t)(arg1[5]) * x30);
- x140 = ((uint64_t)(arg1[5]) * (x31 * 0x2));
- x141 = ((uint64_t)(arg1[5]) * ((arg1[5]) * 0x2));
- x142 = ((uint64_t)(arg1[4]) * x2);
- x143 = ((uint64_t)(arg1[4]) * (x5 * 0x2));
- x144 = ((uint64_t)(arg1[4]) * x8);
- x145 = ((uint64_t)(arg1[4]) * (x11 * 0x2));
- x146 = ((uint64_t)(arg1[4]) * x15);
- x147 = ((uint64_t)(arg1[4]) * x18);
- x148 = ((uint64_t)(arg1[4]) * (x21 * 0x2));
- x149 = ((uint64_t)(arg1[4]) * x24);
- x150 = ((uint64_t)(arg1[4]) * (x27 * 0x2));
- x151 = ((uint64_t)(arg1[4]) * x28);
- x152 = ((uint64_t)(arg1[4]) * x29);
- x153 = ((uint64_t)(arg1[4]) * x30);
- x154 = ((uint64_t)(arg1[4]) * x31);
- x155 = ((uint64_t)(arg1[4]) * (x32 * 0x2));
- x156 = ((uint64_t)(arg1[4]) * (arg1[4]));
- x157 = ((uint64_t)(arg1[3]) * (x2 * 0x2));
- x158 = ((uint64_t)(arg1[3]) * (x5 * 0x2));
- x159 = ((uint64_t)(arg1[3]) * (x8 * 0x2));
- x160 = ((uint64_t)(arg1[3]) * (x12 * 0x2));
- x161 = ((uint64_t)(arg1[3]) * x15);
- x162 = ((uint64_t)(arg1[3]) * (x18 * 0x2));
- x163 = ((uint64_t)(arg1[3]) * (x21 * 0x2));
- x164 = ((uint64_t)(arg1[3]) * (x24 * 0x2));
- x165 = ((uint64_t)(arg1[3]) * (x27 * 0x2));
- x166 = ((uint64_t)(arg1[3]) * x28);
- x167 = ((uint64_t)(arg1[3]) * (x29 * 0x2));
- x168 = ((uint64_t)(arg1[3]) * x30);
- x169 = ((uint64_t)(arg1[3]) * (x31 * 0x2));
- x170 = ((uint64_t)(arg1[3]) * (x32 * 0x2));
- x171 = ((uint64_t)(arg1[3]) * (x33 * 0x2));
- x172 = ((uint64_t)(arg1[3]) * ((arg1[3]) * 0x2));
- x173 = ((uint64_t)(arg1[2]) * x2);
- x174 = ((uint64_t)(arg1[2]) * (x5 * 0x2));
- x175 = ((uint64_t)(arg1[2]) * x9);
- x176 = ((uint64_t)(arg1[2]) * x12);
- x177 = ((uint64_t)(arg1[2]) * x15);
- x178 = ((uint64_t)(arg1[2]) * x18);
- x179 = ((uint64_t)(arg1[2]) * (x21 * 0x2));
- x180 = ((uint64_t)(arg1[2]) * x24);
- x181 = ((uint64_t)(arg1[2]) * x27);
- x182 = ((uint64_t)(arg1[2]) * x28);
- x183 = ((uint64_t)(arg1[2]) * x29);
- x184 = ((uint64_t)(arg1[2]) * x30);
- x185 = ((uint64_t)(arg1[2]) * x31);
- x186 = ((uint64_t)(arg1[2]) * (x32 * 0x2));
- x187 = ((uint64_t)(arg1[2]) * x33);
- x188 = ((uint64_t)(arg1[2]) * x34);
- x189 = ((uint64_t)(arg1[2]) * (arg1[2]));
- x190 = ((uint64_t)(arg1[1]) * (x2 * 0x2));
- x191 = ((uint64_t)(arg1[1]) * (x6 * 0x2));
- x192 = ((uint64_t)(arg1[1]) * x9);
- x193 = ((uint64_t)(arg1[1]) * (x12 * 0x2));
- x194 = ((uint64_t)(arg1[1]) * x15);
- x195 = ((uint64_t)(arg1[1]) * (x18 * 0x2));
- x196 = ((uint64_t)(arg1[1]) * (x21 * 0x2));
- x197 = ((uint64_t)(arg1[1]) * x24);
- x198 = ((uint64_t)(arg1[1]) * (x27 * 0x2));
- x199 = ((uint64_t)(arg1[1]) * x28);
- x200 = ((uint64_t)(arg1[1]) * (x29 * 0x2));
- x201 = ((uint64_t)(arg1[1]) * x30);
- x202 = ((uint64_t)(arg1[1]) * (x31 * 0x2));
- x203 = ((uint64_t)(arg1[1]) * (x32 * 0x2));
- x204 = ((uint64_t)(arg1[1]) * x33);
- x205 = ((uint64_t)(arg1[1]) * (x34 * 0x2));
- x206 = ((uint64_t)(arg1[1]) * x35);
- x207 = ((uint64_t)(arg1[1]) * ((arg1[1]) * 0x2));
- x208 = ((uint64_t)(arg1[0]) * x3);
- x209 = ((uint64_t)(arg1[0]) * x6);
- x210 = ((uint64_t)(arg1[0]) * x9);
- x211 = ((uint64_t)(arg1[0]) * x12);
- x212 = ((uint64_t)(arg1[0]) * x15);
- x213 = ((uint64_t)(arg1[0]) * x18);
- x214 = ((uint64_t)(arg1[0]) * x21);
- x215 = ((uint64_t)(arg1[0]) * x24);
- x216 = ((uint64_t)(arg1[0]) * x27);
- x217 = ((uint64_t)(arg1[0]) * x28);
- x218 = ((uint64_t)(arg1[0]) * x29);
- x219 = ((uint64_t)(arg1[0]) * x30);
- x220 = ((uint64_t)(arg1[0]) * x31);
- x221 = ((uint64_t)(arg1[0]) * x32);
- x222 = ((uint64_t)(arg1[0]) * x33);
- x223 = ((uint64_t)(arg1[0]) * x34);
- x224 = ((uint64_t)(arg1[0]) * x35);
- x225 = ((uint64_t)(arg1[0]) * x36);
- x226 = ((uint64_t)(arg1[0]) * (arg1[0]));
- x227 =
- (x226 +
- (x190 +
- (x174 + (x159 + (x145 + (x132 + (x120 + (x109 + (x99 + x90)))))))));
- x228 = (x227 >> 28);
- x229 = (uint32_t)(x227 & UINT32_C(0xfffffff));
- x230 =
- (x208 +
- (x191 +
- (x175 + (x160 + (x146 + (x133 + (x121 + (x110 + (x100 + x91)))))))));
- x231 =
- (x209 +
- (x192 +
- (x176 + (x161 + (x147 + (x134 + (x122 + (x111 + (x101 + x37)))))))));
- x232 =
- (x210 +
- (x193 +
- (x177 + (x162 + (x148 + (x135 + (x123 + (x112 + (x102 + x38)))))))));
- x233 =
- (x211 +
- (x194 +
- (x178 + (x163 + (x149 + (x136 + (x124 + (x113 + (x40 + x39)))))))));
- x234 =
- (x212 +
- (x195 +
- (x179 + (x164 + (x150 + (x137 + (x125 + (x114 + (x43 + x41)))))))));
- x235 = (x213 +
- (x196 +
- (x180 + (x165 + (x151 + (x138 + (x126 + (x47 + (x44 + x42)))))))));
- x236 = (x214 +
- (x197 +
- (x181 + (x166 + (x152 + (x139 + (x127 + (x52 + (x48 + x45)))))))));
- x237 = (x215 +
- (x198 +
- (x182 + (x167 + (x153 + (x140 + (x58 + (x53 + (x49 + x46)))))))));
- x238 = (x216 +
- (x199 +
- (x183 + (x168 + (x154 + (x141 + (x65 + (x59 + (x54 + x50)))))))));
- x239 = (x217 +
- (x200 +
- (x184 + (x169 + (x155 + (x73 + (x66 + (x60 + (x55 + x51)))))))));
- x240 = (x218 +
- (x201 +
- (x185 + (x170 + (x156 + (x82 + (x74 + (x67 + (x61 + x56)))))))));
- x241 = (x219 +
- (x202 +
- (x186 + (x171 + (x92 + (x83 + (x75 + (x68 + (x62 + x57)))))))));
- x242 = (x220 +
- (x203 +
- (x187 + (x172 + (x103 + (x93 + (x84 + (x76 + (x69 + x63)))))))));
- x243 = (x221 +
- (x204 +
- (x188 + (x115 + (x104 + (x94 + (x85 + (x77 + (x70 + x64)))))))));
- x244 = (x222 +
- (x205 +
- (x189 + (x128 + (x116 + (x105 + (x95 + (x86 + (x78 + x71)))))))));
- x245 = (x223 +
- (x206 +
- (x142 + (x129 + (x117 + (x106 + (x96 + (x87 + (x79 + x72)))))))));
- x246 = (x224 +
- (x207 +
- (x157 + (x143 + (x130 + (x118 + (x107 + (x97 + (x88 + x80)))))))));
- x247 = (x225 +
- (x173 +
- (x158 + (x144 + (x131 + (x119 + (x108 + (x98 + (x89 + x81)))))))));
- x248 = (x228 + x247);
- x249 = (x248 >> 27);
- x250 = (uint32_t)(x248 & UINT32_C(0x7ffffff));
- x251 = (x249 + x246);
- x252 = (x251 >> 28);
- x253 = (uint32_t)(x251 & UINT32_C(0xfffffff));
- x254 = (x252 + x245);
- x255 = (x254 >> 27);
- x256 = (uint32_t)(x254 & UINT32_C(0x7ffffff));
- x257 = (x255 + x244);
- x258 = (x257 >> 28);
- x259 = (uint32_t)(x257 & UINT32_C(0xfffffff));
- x260 = (x258 + x243);
- x261 = (x260 >> 27);
- x262 = (uint32_t)(x260 & UINT32_C(0x7ffffff));
- x263 = (x261 + x242);
- x264 = (x263 >> 27);
- x265 = (uint32_t)(x263 & UINT32_C(0x7ffffff));
- x266 = (x264 + x241);
- x267 = (x266 >> 28);
- x268 = (uint32_t)(x266 & UINT32_C(0xfffffff));
- x269 = (x267 + x240);
- x270 = (x269 >> 27);
- x271 = (uint32_t)(x269 & UINT32_C(0x7ffffff));
- x272 = (x270 + x239);
- x273 = (x272 >> 28);
- x274 = (uint32_t)(x272 & UINT32_C(0xfffffff));
- x275 = (x273 + x238);
- x276 = (x275 >> 27);
- x277 = (uint32_t)(x275 & UINT32_C(0x7ffffff));
- x278 = (x276 + x237);
- x279 = (x278 >> 28);
- x280 = (uint32_t)(x278 & UINT32_C(0xfffffff));
- x281 = (x279 + x236);
- x282 = (x281 >> 27);
- x283 = (uint32_t)(x281 & UINT32_C(0x7ffffff));
- x284 = (x282 + x235);
- x285 = (x284 >> 27);
- x286 = (uint32_t)(x284 & UINT32_C(0x7ffffff));
- x287 = (x285 + x234);
- x288 = (x287 >> 28);
- x289 = (uint32_t)(x287 & UINT32_C(0xfffffff));
- x290 = (x288 + x233);
- x291 = (x290 >> 27);
- x292 = (uint32_t)(x290 & UINT32_C(0x7ffffff));
- x293 = (x291 + x232);
- x294 = (x293 >> 28);
- x295 = (uint32_t)(x293 & UINT32_C(0xfffffff));
- x296 = (x294 + x231);
- x297 = (x296 >> 27);
- x298 = (uint32_t)(x296 & UINT32_C(0x7ffffff));
- x299 = (x297 + x230);
- x300 = (x299 >> 27);
- x301 = (uint32_t)(x299 & UINT32_C(0x7ffffff));
- x302 = (x229 + x300);
- x303 = (uint32_t)(x302 >> 28);
- x304 = (uint32_t)(x302 & UINT32_C(0xfffffff));
- x305 = (x303 + x250);
- x306 = (fiat_secp521r1_uint1)(x305 >> 27);
- x307 = (x305 & UINT32_C(0x7ffffff));
- x308 = (x306 + x253);
- out1[0] = x304;
- out1[1] = x307;
- out1[2] = x308;
- out1[3] = x256;
- out1[4] = x259;
- out1[5] = x262;
- out1[6] = x265;
- out1[7] = x268;
- out1[8] = x271;
- out1[9] = x274;
- out1[10] = x277;
- out1[11] = x280;
- out1[12] = x283;
- out1[13] = x286;
- out1[14] = x289;
- out1[15] = x292;
- out1[16] = x295;
- out1[17] = x298;
- out1[18] = x301;
-}
-
-/*
- * The function fiat_secp521r1_carry_add adds two field elements.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 + eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_add(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1,
- const fiat_secp521r1_tight_field_element arg2)
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint32_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint32_t x18;
- uint32_t x19;
- uint32_t x20;
- uint32_t x21;
- uint32_t x22;
- uint32_t x23;
- uint32_t x24;
- uint32_t x25;
- uint32_t x26;
- uint32_t x27;
- uint32_t x28;
- uint32_t x29;
- uint32_t x30;
- uint32_t x31;
- uint32_t x32;
- uint32_t x33;
- uint32_t x34;
- uint32_t x35;
- uint32_t x36;
- uint32_t x37;
- uint32_t x38;
- uint32_t x39;
- uint32_t x40;
- x1 = ((arg1[0]) + (arg2[0]));
- x2 = ((x1 >> 28) + ((arg1[1]) + (arg2[1])));
- x3 = ((x2 >> 27) + ((arg1[2]) + (arg2[2])));
- x4 = ((x3 >> 28) + ((arg1[3]) + (arg2[3])));
- x5 = ((x4 >> 27) + ((arg1[4]) + (arg2[4])));
- x6 = ((x5 >> 28) + ((arg1[5]) + (arg2[5])));
- x7 = ((x6 >> 27) + ((arg1[6]) + (arg2[6])));
- x8 = ((x7 >> 27) + ((arg1[7]) + (arg2[7])));
- x9 = ((x8 >> 28) + ((arg1[8]) + (arg2[8])));
- x10 = ((x9 >> 27) + ((arg1[9]) + (arg2[9])));
- x11 = ((x10 >> 28) + ((arg1[10]) + (arg2[10])));
- x12 = ((x11 >> 27) + ((arg1[11]) + (arg2[11])));
- x13 = ((x12 >> 28) + ((arg1[12]) + (arg2[12])));
- x14 = ((x13 >> 27) + ((arg1[13]) + (arg2[13])));
- x15 = ((x14 >> 27) + ((arg1[14]) + (arg2[14])));
- x16 = ((x15 >> 28) + ((arg1[15]) + (arg2[15])));
- x17 = ((x16 >> 27) + ((arg1[16]) + (arg2[16])));
- x18 = ((x17 >> 28) + ((arg1[17]) + (arg2[17])));
- x19 = ((x18 >> 27) + ((arg1[18]) + (arg2[18])));
- x20 = ((x1 & UINT32_C(0xfffffff)) + (x19 >> 27));
- x21 = ((fiat_secp521r1_uint1)(x20 >> 28) + (x2 & UINT32_C(0x7ffffff)));
- x22 = (x20 & UINT32_C(0xfffffff));
- x23 = (x21 & UINT32_C(0x7ffffff));
- x24 = ((fiat_secp521r1_uint1)(x21 >> 27) + (x3 & UINT32_C(0xfffffff)));
- x25 = (x4 & UINT32_C(0x7ffffff));
- x26 = (x5 & UINT32_C(0xfffffff));
- x27 = (x6 & UINT32_C(0x7ffffff));
- x28 = (x7 & UINT32_C(0x7ffffff));
- x29 = (x8 & UINT32_C(0xfffffff));
- x30 = (x9 & UINT32_C(0x7ffffff));
- x31 = (x10 & UINT32_C(0xfffffff));
- x32 = (x11 & UINT32_C(0x7ffffff));
- x33 = (x12 & UINT32_C(0xfffffff));
- x34 = (x13 & UINT32_C(0x7ffffff));
- x35 = (x14 & UINT32_C(0x7ffffff));
- x36 = (x15 & UINT32_C(0xfffffff));
- x37 = (x16 & UINT32_C(0x7ffffff));
- x38 = (x17 & UINT32_C(0xfffffff));
- x39 = (x18 & UINT32_C(0x7ffffff));
- x40 = (x19 & UINT32_C(0x7ffffff));
- out1[0] = x22;
- out1[1] = x23;
- out1[2] = x24;
- out1[3] = x25;
- out1[4] = x26;
- out1[5] = x27;
- out1[6] = x28;
- out1[7] = x29;
- out1[8] = x30;
- out1[9] = x31;
- out1[10] = x32;
- out1[11] = x33;
- out1[12] = x34;
- out1[13] = x35;
- out1[14] = x36;
- out1[15] = x37;
- out1[16] = x38;
- out1[17] = x39;
- out1[18] = x40;
-}
-
-/*
- * The function fiat_secp521r1_carry_sub subtracts two field elements.
- *
- * Postconditions:
- * eval out1 mod m = (eval arg1 - eval arg2) mod m
- *
- */
-static void
-fiat_secp521r1_carry_sub(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1,
- const fiat_secp521r1_tight_field_element arg2)
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint32_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint32_t x18;
- uint32_t x19;
- uint32_t x20;
- uint32_t x21;
- uint32_t x22;
- uint32_t x23;
- uint32_t x24;
- uint32_t x25;
- uint32_t x26;
- uint32_t x27;
- uint32_t x28;
- uint32_t x29;
- uint32_t x30;
- uint32_t x31;
- uint32_t x32;
- uint32_t x33;
- uint32_t x34;
- uint32_t x35;
- uint32_t x36;
- uint32_t x37;
- uint32_t x38;
- uint32_t x39;
- uint32_t x40;
- x1 = ((UINT32_C(0x1ffffffe) + (arg1[0])) - (arg2[0]));
- x2 = ((x1 >> 28) + ((UINT32_C(0xffffffe) + (arg1[1])) - (arg2[1])));
- x3 = ((x2 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[2])) - (arg2[2])));
- x4 = ((x3 >> 28) + ((UINT32_C(0xffffffe) + (arg1[3])) - (arg2[3])));
- x5 = ((x4 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[4])) - (arg2[4])));
- x6 = ((x5 >> 28) + ((UINT32_C(0xffffffe) + (arg1[5])) - (arg2[5])));
- x7 = ((x6 >> 27) + ((UINT32_C(0xffffffe) + (arg1[6])) - (arg2[6])));
- x8 = ((x7 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[7])) - (arg2[7])));
- x9 = ((x8 >> 28) + ((UINT32_C(0xffffffe) + (arg1[8])) - (arg2[8])));
- x10 = ((x9 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[9])) - (arg2[9])));
- x11 = ((x10 >> 28) + ((UINT32_C(0xffffffe) + (arg1[10])) - (arg2[10])));
- x12 = ((x11 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[11])) - (arg2[11])));
- x13 = ((x12 >> 28) + ((UINT32_C(0xffffffe) + (arg1[12])) - (arg2[12])));
- x14 = ((x13 >> 27) + ((UINT32_C(0xffffffe) + (arg1[13])) - (arg2[13])));
- x15 = ((x14 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[14])) - (arg2[14])));
- x16 = ((x15 >> 28) + ((UINT32_C(0xffffffe) + (arg1[15])) - (arg2[15])));
- x17 = ((x16 >> 27) + ((UINT32_C(0x1ffffffe) + (arg1[16])) - (arg2[16])));
- x18 = ((x17 >> 28) + ((UINT32_C(0xffffffe) + (arg1[17])) - (arg2[17])));
- x19 = ((x18 >> 27) + ((UINT32_C(0xffffffe) + (arg1[18])) - (arg2[18])));
- x20 = ((x1 & UINT32_C(0xfffffff)) + (x19 >> 27));
- x21 = ((fiat_secp521r1_uint1)(x20 >> 28) + (x2 & UINT32_C(0x7ffffff)));
- x22 = (x20 & UINT32_C(0xfffffff));
- x23 = (x21 & UINT32_C(0x7ffffff));
- x24 = ((fiat_secp521r1_uint1)(x21 >> 27) + (x3 & UINT32_C(0xfffffff)));
- x25 = (x4 & UINT32_C(0x7ffffff));
- x26 = (x5 & UINT32_C(0xfffffff));
- x27 = (x6 & UINT32_C(0x7ffffff));
- x28 = (x7 & UINT32_C(0x7ffffff));
- x29 = (x8 & UINT32_C(0xfffffff));
- x30 = (x9 & UINT32_C(0x7ffffff));
- x31 = (x10 & UINT32_C(0xfffffff));
- x32 = (x11 & UINT32_C(0x7ffffff));
- x33 = (x12 & UINT32_C(0xfffffff));
- x34 = (x13 & UINT32_C(0x7ffffff));
- x35 = (x14 & UINT32_C(0x7ffffff));
- x36 = (x15 & UINT32_C(0xfffffff));
- x37 = (x16 & UINT32_C(0x7ffffff));
- x38 = (x17 & UINT32_C(0xfffffff));
- x39 = (x18 & UINT32_C(0x7ffffff));
- x40 = (x19 & UINT32_C(0x7ffffff));
- out1[0] = x22;
- out1[1] = x23;
- out1[2] = x24;
- out1[3] = x25;
- out1[4] = x26;
- out1[5] = x27;
- out1[6] = x28;
- out1[7] = x29;
- out1[8] = x30;
- out1[9] = x31;
- out1[10] = x32;
- out1[11] = x33;
- out1[12] = x34;
- out1[13] = x35;
- out1[14] = x36;
- out1[15] = x37;
- out1[16] = x38;
- out1[17] = x39;
- out1[18] = x40;
-}
+ if (!X || !k || !X->data || !k->data ||
+ X->len < 133 || k->len != 66) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
+ }
-/*
- * The function fiat_secp521r1_carry_opp negates a field element.
- *
- * Postconditions:
- * eval out1 mod m = -eval arg1 mod m
- *
- */
-static void
-fiat_secp521r1_carry_opp(
- fiat_secp521r1_tight_field_element out1,
- const fiat_secp521r1_tight_field_element arg1)
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint32_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint32_t x18;
- uint32_t x19;
- uint32_t x20;
- uint32_t x21;
- uint32_t x22;
- uint32_t x23;
- uint32_t x24;
- uint32_t x25;
- uint32_t x26;
- uint32_t x27;
- uint32_t x28;
- uint32_t x29;
- uint32_t x30;
- uint32_t x31;
- uint32_t x32;
- uint32_t x33;
- uint32_t x34;
- uint32_t x35;
- uint32_t x36;
- uint32_t x37;
- uint32_t x38;
- uint32_t x39;
- uint32_t x40;
- x1 = (UINT32_C(0x1ffffffe) - (arg1[0]));
- x2 = ((fiat_secp521r1_uint1)(x1 >> 28) + (UINT32_C(0xffffffe) - (arg1[1])));
- x3 =
- ((fiat_secp521r1_uint1)(x2 >> 27) + (UINT32_C(0x1ffffffe) - (arg1[2])));
- x4 = ((fiat_secp521r1_uint1)(x3 >> 28) + (UINT32_C(0xffffffe) - (arg1[3])));
- x5 =
- ((fiat_secp521r1_uint1)(x4 >> 27) + (UINT32_C(0x1ffffffe) - (arg1[4])));
- x6 = ((fiat_secp521r1_uint1)(x5 >> 28) + (UINT32_C(0xffffffe) - (arg1[5])));
- x7 = ((fiat_secp521r1_uint1)(x6 >> 27) + (UINT32_C(0xffffffe) - (arg1[6])));
- x8 =
- ((fiat_secp521r1_uint1)(x7 >> 27) + (UINT32_C(0x1ffffffe) - (arg1[7])));
- x9 = ((fiat_secp521r1_uint1)(x8 >> 28) + (UINT32_C(0xffffffe) - (arg1[8])));
- x10 =
- ((fiat_secp521r1_uint1)(x9 >> 27) + (UINT32_C(0x1ffffffe) - (arg1[9])));
- x11 = ((fiat_secp521r1_uint1)(x10 >> 28) +
- (UINT32_C(0xffffffe) - (arg1[10])));
- x12 = ((fiat_secp521r1_uint1)(x11 >> 27) +
- (UINT32_C(0x1ffffffe) - (arg1[11])));
- x13 = ((fiat_secp521r1_uint1)(x12 >> 28) +
- (UINT32_C(0xffffffe) - (arg1[12])));
- x14 = ((fiat_secp521r1_uint1)(x13 >> 27) +
- (UINT32_C(0xffffffe) - (arg1[13])));
- x15 = ((fiat_secp521r1_uint1)(x14 >> 27) +
- (UINT32_C(0x1ffffffe) - (arg1[14])));
- x16 = ((fiat_secp521r1_uint1)(x15 >> 28) +
- (UINT32_C(0xffffffe) - (arg1[15])));
- x17 = ((fiat_secp521r1_uint1)(x16 >> 27) +
- (UINT32_C(0x1ffffffe) - (arg1[16])));
- x18 = ((fiat_secp521r1_uint1)(x17 >> 28) +
- (UINT32_C(0xffffffe) - (arg1[17])));
- x19 = ((fiat_secp521r1_uint1)(x18 >> 27) +
- (UINT32_C(0xffffffe) - (arg1[18])));
- x20 = ((x1 & UINT32_C(0xfffffff)) +
- (uint32_t)(fiat_secp521r1_uint1)(x19 >> 27));
- x21 = ((fiat_secp521r1_uint1)(x20 >> 28) + (x2 & UINT32_C(0x7ffffff)));
- x22 = (x20 & UINT32_C(0xfffffff));
- x23 = (x21 & UINT32_C(0x7ffffff));
- x24 = ((fiat_secp521r1_uint1)(x21 >> 27) + (x3 & UINT32_C(0xfffffff)));
- x25 = (x4 & UINT32_C(0x7ffffff));
- x26 = (x5 & UINT32_C(0xfffffff));
- x27 = (x6 & UINT32_C(0x7ffffff));
- x28 = (x7 & UINT32_C(0x7ffffff));
- x29 = (x8 & UINT32_C(0xfffffff));
- x30 = (x9 & UINT32_C(0x7ffffff));
- x31 = (x10 & UINT32_C(0xfffffff));
- x32 = (x11 & UINT32_C(0x7ffffff));
- x33 = (x12 & UINT32_C(0xfffffff));
- x34 = (x13 & UINT32_C(0x7ffffff));
- x35 = (x14 & UINT32_C(0x7ffffff));
- x36 = (x15 & UINT32_C(0xfffffff));
- x37 = (x16 & UINT32_C(0x7ffffff));
- x38 = (x17 & UINT32_C(0xfffffff));
- x39 = (x18 & UINT32_C(0x7ffffff));
- x40 = (x19 & UINT32_C(0x7ffffff));
- out1[0] = x22;
- out1[1] = x23;
- out1[2] = x24;
- out1[3] = x25;
- out1[4] = x26;
- out1[5] = x27;
- out1[6] = x28;
- out1[7] = x29;
- out1[8] = x30;
- out1[9] = x31;
- out1[10] = x32;
- out1[11] = x33;
- out1[12] = x34;
- out1[13] = x35;
- out1[14] = x36;
- out1[15] = x37;
- out1[16] = x38;
- out1[17] = x39;
- out1[18] = x40;
-}
+ bool b = Hacl_P521_dh_initiator(derived, k->data);
-/*
- * The function fiat_secp521r1_selectznz is a multi-limb conditional select.
- *
- * Postconditions:
- * eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)
- *
- * Input Bounds:
- * arg1: [0x0 ~> 0x1]
- * arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
- * arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
- * Output Bounds:
- * out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]
- */
-static void
-fiat_secp521r1_selectznz(uint32_t out1[19],
- fiat_secp521r1_uint1 arg1,
- const uint32_t arg2[19],
- const uint32_t arg3[19])
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint32_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint32_t x18;
- uint32_t x19;
- fiat_secp521r1_cmovznz_u32(&x1, arg1, (arg2[0]), (arg3[0]));
- fiat_secp521r1_cmovznz_u32(&x2, arg1, (arg2[1]), (arg3[1]));
- fiat_secp521r1_cmovznz_u32(&x3, arg1, (arg2[2]), (arg3[2]));
- fiat_secp521r1_cmovznz_u32(&x4, arg1, (arg2[3]), (arg3[3]));
- fiat_secp521r1_cmovznz_u32(&x5, arg1, (arg2[4]), (arg3[4]));
- fiat_secp521r1_cmovznz_u32(&x6, arg1, (arg2[5]), (arg3[5]));
- fiat_secp521r1_cmovznz_u32(&x7, arg1, (arg2[6]), (arg3[6]));
- fiat_secp521r1_cmovznz_u32(&x8, arg1, (arg2[7]), (arg3[7]));
- fiat_secp521r1_cmovznz_u32(&x9, arg1, (arg2[8]), (arg3[8]));
- fiat_secp521r1_cmovznz_u32(&x10, arg1, (arg2[9]), (arg3[9]));
- fiat_secp521r1_cmovznz_u32(&x11, arg1, (arg2[10]), (arg3[10]));
- fiat_secp521r1_cmovznz_u32(&x12, arg1, (arg2[11]), (arg3[11]));
- fiat_secp521r1_cmovznz_u32(&x13, arg1, (arg2[12]), (arg3[12]));
- fiat_secp521r1_cmovznz_u32(&x14, arg1, (arg2[13]), (arg3[13]));
- fiat_secp521r1_cmovznz_u32(&x15, arg1, (arg2[14]), (arg3[14]));
- fiat_secp521r1_cmovznz_u32(&x16, arg1, (arg2[15]), (arg3[15]));
- fiat_secp521r1_cmovznz_u32(&x17, arg1, (arg2[16]), (arg3[16]));
- fiat_secp521r1_cmovznz_u32(&x18, arg1, (arg2[17]), (arg3[17]));
- fiat_secp521r1_cmovznz_u32(&x19, arg1, (arg2[18]), (arg3[18]));
- out1[0] = x1;
- out1[1] = x2;
- out1[2] = x3;
- out1[3] = x4;
- out1[4] = x5;
- out1[5] = x6;
- out1[6] = x7;
- out1[7] = x8;
- out1[8] = x9;
- out1[9] = x10;
- out1[10] = x11;
- out1[11] = x12;
- out1[12] = x13;
- out1[13] = x14;
- out1[14] = x15;
- out1[15] = x16;
- out1[16] = x17;
- out1[17] = x18;
- out1[18] = x19;
-}
+ if (!b) {
+ PORT_SetError(SEC_ERROR_BAD_KEY);
+ res = SECFailure;
+ return res;
+ }
-/*
- * The function fiat_secp521r1_to_bytes serializes a field element to bytes in little-endian order.
- *
- * Postconditions:
- * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..65]
- *
- * Output Bounds:
- * out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
- */
-static void
-fiat_secp521r1_to_bytes(
- uint8_t out1[66], const fiat_secp521r1_tight_field_element arg1)
-{
- uint32_t x1;
- fiat_secp521r1_uint1 x2;
- uint32_t x3;
- fiat_secp521r1_uint1 x4;
- uint32_t x5;
- fiat_secp521r1_uint1 x6;
- uint32_t x7;
- fiat_secp521r1_uint1 x8;
- uint32_t x9;
- fiat_secp521r1_uint1 x10;
- uint32_t x11;
- fiat_secp521r1_uint1 x12;
- uint32_t x13;
- fiat_secp521r1_uint1 x14;
- uint32_t x15;
- fiat_secp521r1_uint1 x16;
- uint32_t x17;
- fiat_secp521r1_uint1 x18;
- uint32_t x19;
- fiat_secp521r1_uint1 x20;
- uint32_t x21;
- fiat_secp521r1_uint1 x22;
- uint32_t x23;
- fiat_secp521r1_uint1 x24;
- uint32_t x25;
- fiat_secp521r1_uint1 x26;
- uint32_t x27;
- fiat_secp521r1_uint1 x28;
- uint32_t x29;
- fiat_secp521r1_uint1 x30;
- uint32_t x31;
- fiat_secp521r1_uint1 x32;
- uint32_t x33;
- fiat_secp521r1_uint1 x34;
- uint32_t x35;
- fiat_secp521r1_uint1 x36;
- uint32_t x37;
- fiat_secp521r1_uint1 x38;
- uint32_t x39;
- uint32_t x40;
- fiat_secp521r1_uint1 x41;
- uint32_t x42;
- fiat_secp521r1_uint1 x43;
- uint32_t x44;
- fiat_secp521r1_uint1 x45;
- uint32_t x46;
- fiat_secp521r1_uint1 x47;
- uint32_t x48;
- fiat_secp521r1_uint1 x49;
- uint32_t x50;
- fiat_secp521r1_uint1 x51;
- uint32_t x52;
- fiat_secp521r1_uint1 x53;
- uint32_t x54;
- fiat_secp521r1_uint1 x55;
- uint32_t x56;
- fiat_secp521r1_uint1 x57;
- uint32_t x58;
- fiat_secp521r1_uint1 x59;
- uint32_t x60;
- fiat_secp521r1_uint1 x61;
- uint32_t x62;
- fiat_secp521r1_uint1 x63;
- uint32_t x64;
- fiat_secp521r1_uint1 x65;
- uint32_t x66;
- fiat_secp521r1_uint1 x67;
- uint32_t x68;
- fiat_secp521r1_uint1 x69;
- uint32_t x70;
- fiat_secp521r1_uint1 x71;
- uint32_t x72;
- fiat_secp521r1_uint1 x73;
- uint32_t x74;
- fiat_secp521r1_uint1 x75;
- uint32_t x76;
- fiat_secp521r1_uint1 x77;
- uint64_t x78;
- uint32_t x79;
- uint64_t x80;
- uint32_t x81;
- uint32_t x82;
- uint32_t x83;
- uint64_t x84;
- uint32_t x85;
- uint64_t x86;
- uint32_t x87;
- uint32_t x88;
- uint32_t x89;
- uint64_t x90;
- uint32_t x91;
- uint64_t x92;
- uint32_t x93;
- uint8_t x94;
- uint32_t x95;
- uint8_t x96;
- uint32_t x97;
- uint8_t x98;
- uint8_t x99;
- uint32_t x100;
- uint8_t x101;
- uint32_t x102;
- uint8_t x103;
- uint32_t x104;
- uint8_t x105;
- uint8_t x106;
- uint64_t x107;
- uint8_t x108;
- uint32_t x109;
- uint8_t x110;
- uint32_t x111;
- uint8_t x112;
- uint32_t x113;
- uint8_t x114;
- uint8_t x115;
- uint32_t x116;
- uint8_t x117;
- uint32_t x118;
- uint8_t x119;
- uint32_t x120;
- uint8_t x121;
- uint8_t x122;
- uint64_t x123;
- uint8_t x124;
- uint32_t x125;
- uint8_t x126;
- uint32_t x127;
- uint8_t x128;
- uint32_t x129;
- uint8_t x130;
- uint8_t x131;
- uint32_t x132;
- uint8_t x133;
- uint32_t x134;
- uint8_t x135;
- uint32_t x136;
- uint8_t x137;
- uint8_t x138;
- uint32_t x139;
- uint8_t x140;
- uint32_t x141;
- uint8_t x142;
- uint32_t x143;
- uint8_t x144;
- uint8_t x145;
- uint8_t x146;
- uint32_t x147;
- uint8_t x148;
- uint32_t x149;
- uint8_t x150;
- uint8_t x151;
- uint32_t x152;
- uint8_t x153;
- uint32_t x154;
- uint8_t x155;
- uint32_t x156;
- uint8_t x157;
- uint8_t x158;
- uint64_t x159;
- uint8_t x160;
- uint32_t x161;
- uint8_t x162;
- uint32_t x163;
- uint8_t x164;
- uint32_t x165;
- uint8_t x166;
- uint8_t x167;
- uint32_t x168;
- uint8_t x169;
- uint32_t x170;
- uint8_t x171;
- uint32_t x172;
- uint8_t x173;
- uint8_t x174;
- uint64_t x175;
- uint8_t x176;
- uint32_t x177;
- uint8_t x178;
- uint32_t x179;
- uint8_t x180;
- uint32_t x181;
- uint8_t x182;
- uint8_t x183;
- uint32_t x184;
- uint8_t x185;
- uint32_t x186;
- uint8_t x187;
- uint32_t x188;
- uint8_t x189;
- uint8_t x190;
- uint32_t x191;
- uint8_t x192;
- uint32_t x193;
- uint8_t x194;
- uint32_t x195;
- uint8_t x196;
- uint8_t x197;
- uint8_t x198;
- uint32_t x199;
- uint8_t x200;
- uint32_t x201;
- uint8_t x202;
- uint8_t x203;
- uint32_t x204;
- uint8_t x205;
- uint32_t x206;
- uint8_t x207;
- uint32_t x208;
- uint8_t x209;
- uint8_t x210;
- uint64_t x211;
- uint8_t x212;
- uint32_t x213;
- uint8_t x214;
- uint32_t x215;
- uint8_t x216;
- uint32_t x217;
- uint8_t x218;
- uint8_t x219;
- uint32_t x220;
- uint8_t x221;
- uint32_t x222;
- uint8_t x223;
- uint32_t x224;
- uint8_t x225;
- uint8_t x226;
- uint64_t x227;
- uint8_t x228;
- uint32_t x229;
- uint8_t x230;
- uint32_t x231;
- uint8_t x232;
- uint32_t x233;
- uint8_t x234;
- fiat_secp521r1_uint1 x235;
- fiat_secp521r1_subborrowx_u28(&x1, &x2, 0x0, (arg1[0]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x3, &x4, x2, (arg1[1]), UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x5, &x6, x4, (arg1[2]), UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x7, &x8, x6, (arg1[3]), UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x9, &x10, x8, (arg1[4]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x11, &x12, x10, (arg1[5]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u27(&x13, &x14, x12, (arg1[6]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x15, &x16, x14, (arg1[7]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x17, &x18, x16, (arg1[8]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x19, &x20, x18, (arg1[9]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x21, &x22, x20, (arg1[10]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x23, &x24, x22, (arg1[11]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x25, &x26, x24, (arg1[12]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u27(&x27, &x28, x26, (arg1[13]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x29, &x30, x28, (arg1[14]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x31, &x32, x30, (arg1[15]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u28(&x33, &x34, x32, (arg1[16]),
- UINT32_C(0xfffffff));
- fiat_secp521r1_subborrowx_u27(&x35, &x36, x34, (arg1[17]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_subborrowx_u27(&x37, &x38, x36, (arg1[18]),
- UINT32_C(0x7ffffff));
- fiat_secp521r1_cmovznz_u32(&x39, x38, 0x0, UINT32_C(0xffffffff));
- fiat_secp521r1_addcarryx_u28(&x40, &x41, 0x0, x1,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x42, &x43, x41, x3,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x44, &x45, x43, x5,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x46, &x47, x45, x7,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x48, &x49, x47, x9,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x50, &x51, x49, x11,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u27(&x52, &x53, x51, x13,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x54, &x55, x53, x15,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x56, &x57, x55, x17,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x58, &x59, x57, x19,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x60, &x61, x59, x21,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x62, &x63, x61, x23,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x64, &x65, x63, x25,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u27(&x66, &x67, x65, x27,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x68, &x69, x67, x29,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x70, &x71, x69, x31,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u28(&x72, &x73, x71, x33,
- (x39 & UINT32_C(0xfffffff)));
- fiat_secp521r1_addcarryx_u27(&x74, &x75, x73, x35,
- (x39 & UINT32_C(0x7ffffff)));
- fiat_secp521r1_addcarryx_u27(&x76, &x77, x75, x37,
- (x39 & UINT32_C(0x7ffffff)));
- x78 = ((uint64_t)x76 << 6);
- x79 = (x74 << 3);
- x80 = ((uint64_t)x72 << 7);
- x81 = (x70 << 4);
- x82 = (x66 << 5);
- x83 = (x64 << 2);
- x84 = ((uint64_t)x62 << 6);
- x85 = (x60 << 3);
- x86 = ((uint64_t)x58 << 7);
- x87 = (x56 << 4);
- x88 = (x52 << 5);
- x89 = (x50 << 2);
- x90 = ((uint64_t)x48 << 6);
- x91 = (x46 << 3);
- x92 = ((uint64_t)x44 << 7);
- x93 = (x42 << 4);
- x94 = (uint8_t)(x40 & UINT8_C(0xff));
- x95 = (x40 >> 8);
- x96 = (uint8_t)(x95 & UINT8_C(0xff));
- x97 = (x95 >> 8);
- x98 = (uint8_t)(x97 & UINT8_C(0xff));
- x99 = (uint8_t)(x97 >> 8);
- x100 = (x93 + (uint32_t)x99);
- x101 = (uint8_t)(x100 & UINT8_C(0xff));
- x102 = (x100 >> 8);
- x103 = (uint8_t)(x102 & UINT8_C(0xff));
- x104 = (x102 >> 8);
- x105 = (uint8_t)(x104 & UINT8_C(0xff));
- x106 = (uint8_t)(x104 >> 8);
- x107 = (x92 + (uint64_t)x106);
- x108 = (uint8_t)(x107 & UINT8_C(0xff));
- x109 = (uint32_t)(x107 >> 8);
- x110 = (uint8_t)(x109 & UINT8_C(0xff));
- x111 = (x109 >> 8);
- x112 = (uint8_t)(x111 & UINT8_C(0xff));
- x113 = (x111 >> 8);
- x114 = (uint8_t)(x113 & UINT8_C(0xff));
- x115 = (uint8_t)(x113 >> 8);
- x116 = (x91 + (uint32_t)x115);
- x117 = (uint8_t)(x116 & UINT8_C(0xff));
- x118 = (x116 >> 8);
- x119 = (uint8_t)(x118 & UINT8_C(0xff));
- x120 = (x118 >> 8);
- x121 = (uint8_t)(x120 & UINT8_C(0xff));
- x122 = (uint8_t)(x120 >> 8);
- x123 = (x90 + (uint64_t)x122);
- x124 = (uint8_t)(x123 & UINT8_C(0xff));
- x125 = (uint32_t)(x123 >> 8);
- x126 = (uint8_t)(x125 & UINT8_C(0xff));
- x127 = (x125 >> 8);
- x128 = (uint8_t)(x127 & UINT8_C(0xff));
- x129 = (x127 >> 8);
- x130 = (uint8_t)(x129 & UINT8_C(0xff));
- x131 = (uint8_t)(x129 >> 8);
- x132 = (x89 + (uint32_t)x131);
- x133 = (uint8_t)(x132 & UINT8_C(0xff));
- x134 = (x132 >> 8);
- x135 = (uint8_t)(x134 & UINT8_C(0xff));
- x136 = (x134 >> 8);
- x137 = (uint8_t)(x136 & UINT8_C(0xff));
- x138 = (uint8_t)(x136 >> 8);
- x139 = (x88 + (uint32_t)x138);
- x140 = (uint8_t)(x139 & UINT8_C(0xff));
- x141 = (x139 >> 8);
- x142 = (uint8_t)(x141 & UINT8_C(0xff));
- x143 = (x141 >> 8);
- x144 = (uint8_t)(x143 & UINT8_C(0xff));
- x145 = (uint8_t)(x143 >> 8);
- x146 = (uint8_t)(x54 & UINT8_C(0xff));
- x147 = (x54 >> 8);
- x148 = (uint8_t)(x147 & UINT8_C(0xff));
- x149 = (x147 >> 8);
- x150 = (uint8_t)(x149 & UINT8_C(0xff));
- x151 = (uint8_t)(x149 >> 8);
- x152 = (x87 + (uint32_t)x151);
- x153 = (uint8_t)(x152 & UINT8_C(0xff));
- x154 = (x152 >> 8);
- x155 = (uint8_t)(x154 & UINT8_C(0xff));
- x156 = (x154 >> 8);
- x157 = (uint8_t)(x156 & UINT8_C(0xff));
- x158 = (uint8_t)(x156 >> 8);
- x159 = (x86 + (uint64_t)x158);
- x160 = (uint8_t)(x159 & UINT8_C(0xff));
- x161 = (uint32_t)(x159 >> 8);
- x162 = (uint8_t)(x161 & UINT8_C(0xff));
- x163 = (x161 >> 8);
- x164 = (uint8_t)(x163 & UINT8_C(0xff));
- x165 = (x163 >> 8);
- x166 = (uint8_t)(x165 & UINT8_C(0xff));
- x167 = (uint8_t)(x165 >> 8);
- x168 = (x85 + (uint32_t)x167);
- x169 = (uint8_t)(x168 & UINT8_C(0xff));
- x170 = (x168 >> 8);
- x171 = (uint8_t)(x170 & UINT8_C(0xff));
- x172 = (x170 >> 8);
- x173 = (uint8_t)(x172 & UINT8_C(0xff));
- x174 = (uint8_t)(x172 >> 8);
- x175 = (x84 + (uint64_t)x174);
- x176 = (uint8_t)(x175 & UINT8_C(0xff));
- x177 = (uint32_t)(x175 >> 8);
- x178 = (uint8_t)(x177 & UINT8_C(0xff));
- x179 = (x177 >> 8);
- x180 = (uint8_t)(x179 & UINT8_C(0xff));
- x181 = (x179 >> 8);
- x182 = (uint8_t)(x181 & UINT8_C(0xff));
- x183 = (uint8_t)(x181 >> 8);
- x184 = (x83 + (uint32_t)x183);
- x185 = (uint8_t)(x184 & UINT8_C(0xff));
- x186 = (x184 >> 8);
- x187 = (uint8_t)(x186 & UINT8_C(0xff));
- x188 = (x186 >> 8);
- x189 = (uint8_t)(x188 & UINT8_C(0xff));
- x190 = (uint8_t)(x188 >> 8);
- x191 = (x82 + (uint32_t)x190);
- x192 = (uint8_t)(x191 & UINT8_C(0xff));
- x193 = (x191 >> 8);
- x194 = (uint8_t)(x193 & UINT8_C(0xff));
- x195 = (x193 >> 8);
- x196 = (uint8_t)(x195 & UINT8_C(0xff));
- x197 = (uint8_t)(x195 >> 8);
- x198 = (uint8_t)(x68 & UINT8_C(0xff));
- x199 = (x68 >> 8);
- x200 = (uint8_t)(x199 & UINT8_C(0xff));
- x201 = (x199 >> 8);
- x202 = (uint8_t)(x201 & UINT8_C(0xff));
- x203 = (uint8_t)(x201 >> 8);
- x204 = (x81 + (uint32_t)x203);
- x205 = (uint8_t)(x204 & UINT8_C(0xff));
- x206 = (x204 >> 8);
- x207 = (uint8_t)(x206 & UINT8_C(0xff));
- x208 = (x206 >> 8);
- x209 = (uint8_t)(x208 & UINT8_C(0xff));
- x210 = (uint8_t)(x208 >> 8);
- x211 = (x80 + (uint64_t)x210);
- x212 = (uint8_t)(x211 & UINT8_C(0xff));
- x213 = (uint32_t)(x211 >> 8);
- x214 = (uint8_t)(x213 & UINT8_C(0xff));
- x215 = (x213 >> 8);
- x216 = (uint8_t)(x215 & UINT8_C(0xff));
- x217 = (x215 >> 8);
- x218 = (uint8_t)(x217 & UINT8_C(0xff));
- x219 = (uint8_t)(x217 >> 8);
- x220 = (x79 + (uint32_t)x219);
- x221 = (uint8_t)(x220 & UINT8_C(0xff));
- x222 = (x220 >> 8);
- x223 = (uint8_t)(x222 & UINT8_C(0xff));
- x224 = (x222 >> 8);
- x225 = (uint8_t)(x224 & UINT8_C(0xff));
- x226 = (uint8_t)(x224 >> 8);
- x227 = (x78 + (uint64_t)x226);
- x228 = (uint8_t)(x227 & UINT8_C(0xff));
- x229 = (uint32_t)(x227 >> 8);
- x230 = (uint8_t)(x229 & UINT8_C(0xff));
- x231 = (x229 >> 8);
- x232 = (uint8_t)(x231 & UINT8_C(0xff));
- x233 = (x231 >> 8);
- x234 = (uint8_t)(x233 & UINT8_C(0xff));
- x235 = (fiat_secp521r1_uint1)(x233 >> 8);
- out1[0] = x94;
- out1[1] = x96;
- out1[2] = x98;
- out1[3] = x101;
- out1[4] = x103;
- out1[5] = x105;
- out1[6] = x108;
- out1[7] = x110;
- out1[8] = x112;
- out1[9] = x114;
- out1[10] = x117;
- out1[11] = x119;
- out1[12] = x121;
- out1[13] = x124;
- out1[14] = x126;
- out1[15] = x128;
- out1[16] = x130;
- out1[17] = x133;
- out1[18] = x135;
- out1[19] = x137;
- out1[20] = x140;
- out1[21] = x142;
- out1[22] = x144;
- out1[23] = x145;
- out1[24] = x146;
- out1[25] = x148;
- out1[26] = x150;
- out1[27] = x153;
- out1[28] = x155;
- out1[29] = x157;
- out1[30] = x160;
- out1[31] = x162;
- out1[32] = x164;
- out1[33] = x166;
- out1[34] = x169;
- out1[35] = x171;
- out1[36] = x173;
- out1[37] = x176;
- out1[38] = x178;
- out1[39] = x180;
- out1[40] = x182;
- out1[41] = x185;
- out1[42] = x187;
- out1[43] = x189;
- out1[44] = x192;
- out1[45] = x194;
- out1[46] = x196;
- out1[47] = x197;
- out1[48] = x198;
- out1[49] = x200;
- out1[50] = x202;
- out1[51] = x205;
- out1[52] = x207;
- out1[53] = x209;
- out1[54] = x212;
- out1[55] = x214;
- out1[56] = x216;
- out1[57] = x218;
- out1[58] = x221;
- out1[59] = x223;
- out1[60] = x225;
- out1[61] = x228;
- out1[62] = x230;
- out1[63] = x232;
- out1[64] = x234;
- out1[65] = x235;
-}
+ X->len = 133;
+ X->data[0] = EC_POINT_FORM_UNCOMPRESSED;
+ memcpy(X->data + 1, derived, 132);
-/*
- * The function fiat_secp521r1_from_bytes deserializes a field element from bytes in little-endian order.
- *
- * Postconditions:
- * eval out1 mod m = bytes_eval arg1 mod m
- *
- * Input Bounds:
- * arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0x1]]
- */
-static void
-fiat_secp521r1_from_bytes(fiat_secp521r1_tight_field_element out1,
- const uint8_t arg1[66])
-{
- uint32_t x1;
- uint32_t x2;
- uint32_t x3;
- uint32_t x4;
- uint32_t x5;
- uint32_t x6;
- uint32_t x7;
- uint64_t x8;
- uint32_t x9;
- uint32_t x10;
- uint32_t x11;
- uint32_t x12;
- uint32_t x13;
- uint32_t x14;
- uint32_t x15;
- uint32_t x16;
- uint32_t x17;
- uint8_t x18;
- uint32_t x19;
- uint32_t x20;
- uint32_t x21;
- uint32_t x22;
- uint32_t x23;
- uint32_t x24;
- uint64_t x25;
- uint32_t x26;
- uint32_t x27;
- uint32_t x28;
- uint32_t x29;
- uint32_t x30;
- uint32_t x31;
- uint64_t x32;
- uint32_t x33;
- uint32_t x34;
- uint32_t x35;
- uint32_t x36;
- uint32_t x37;
- uint32_t x38;
- uint32_t x39;
- uint32_t x40;
- uint32_t x41;
- uint8_t x42;
- uint32_t x43;
- uint32_t x44;
- uint32_t x45;
- uint32_t x46;
- uint32_t x47;
- uint32_t x48;
- uint64_t x49;
- uint32_t x50;
- uint32_t x51;
- uint32_t x52;
- uint32_t x53;
- uint32_t x54;
- uint32_t x55;
- uint64_t x56;
- uint32_t x57;
- uint32_t x58;
- uint32_t x59;
- uint32_t x60;
- uint32_t x61;
- uint32_t x62;
- uint32_t x63;
- uint32_t x64;
- uint32_t x65;
- uint8_t x66;
- uint32_t x67;
- uint32_t x68;
- uint32_t x69;
- uint32_t x70;
- uint8_t x71;
- uint32_t x72;
- uint32_t x73;
- uint32_t x74;
- uint32_t x75;
- fiat_secp521r1_uint1 x76;
- uint32_t x77;
- uint32_t x78;
- uint32_t x79;
- uint64_t x80;
- uint32_t x81;
- uint8_t x82;
- uint32_t x83;
- uint32_t x84;
- uint32_t x85;
- uint32_t x86;
- uint8_t x87;
- uint32_t x88;
- uint32_t x89;
- uint32_t x90;
- uint64_t x91;
- uint32_t x92;
- uint8_t x93;
- uint32_t x94;
- uint32_t x95;
- uint32_t x96;
- uint32_t x97;
- uint8_t x98;
- uint32_t x99;
- uint32_t x100;
- uint32_t x101;
- uint32_t x102;
- uint32_t x103;
- uint32_t x104;
- uint32_t x105;
- uint8_t x106;
- uint32_t x107;
- uint32_t x108;
- uint32_t x109;
- uint32_t x110;
- fiat_secp521r1_uint1 x111;
- uint32_t x112;
- uint32_t x113;
- uint32_t x114;
- uint64_t x115;
- uint32_t x116;
- uint8_t x117;
- uint32_t x118;
- uint32_t x119;
- uint32_t x120;
- uint32_t x121;
- uint8_t x122;
- uint32_t x123;
- uint32_t x124;
- uint32_t x125;
- uint64_t x126;
- uint32_t x127;
- uint8_t x128;
- uint32_t x129;
- uint32_t x130;
- uint32_t x131;
- uint32_t x132;
- uint8_t x133;
- uint32_t x134;
- uint32_t x135;
- uint32_t x136;
- uint32_t x137;
- uint32_t x138;
- uint32_t x139;
- uint32_t x140;
- uint8_t x141;
- uint32_t x142;
- uint32_t x143;
- uint32_t x144;
- uint32_t x145;
- fiat_secp521r1_uint1 x146;
- uint32_t x147;
- uint32_t x148;
- uint32_t x149;
- uint64_t x150;
- uint32_t x151;
- uint8_t x152;
- uint32_t x153;
- uint32_t x154;
- uint32_t x155;
- uint32_t x156;
- uint8_t x157;
- uint32_t x158;
- uint32_t x159;
- uint32_t x160;
- uint32_t x161;
- x1 = ((uint32_t)(fiat_secp521r1_uint1)(arg1[65]) << 26);
- x2 = ((uint32_t)(arg1[64]) << 18);
- x3 = ((uint32_t)(arg1[63]) << 10);
- x4 = ((uint32_t)(arg1[62]) << 2);
- x5 = ((uint32_t)(arg1[61]) << 21);
- x6 = ((uint32_t)(arg1[60]) << 13);
- x7 = ((uint32_t)(arg1[59]) << 5);
- x8 = ((uint64_t)(arg1[58]) << 25);
- x9 = ((uint32_t)(arg1[57]) << 17);
- x10 = ((uint32_t)(arg1[56]) << 9);
- x11 = ((uint32_t)(arg1[55]) * 0x2);
- x12 = ((uint32_t)(arg1[54]) << 20);
- x13 = ((uint32_t)(arg1[53]) << 12);
- x14 = ((uint32_t)(arg1[52]) << 4);
- x15 = ((uint32_t)(arg1[51]) << 24);
- x16 = ((uint32_t)(arg1[50]) << 16);
- x17 = ((uint32_t)(arg1[49]) << 8);
- x18 = (arg1[48]);
- x19 = ((uint32_t)(arg1[47]) << 19);
- x20 = ((uint32_t)(arg1[46]) << 11);
- x21 = ((uint32_t)(arg1[45]) << 3);
- x22 = ((uint32_t)(arg1[44]) << 22);
- x23 = ((uint32_t)(arg1[43]) << 14);
- x24 = ((uint32_t)(arg1[42]) << 6);
- x25 = ((uint64_t)(arg1[41]) << 26);
- x26 = ((uint32_t)(arg1[40]) << 18);
- x27 = ((uint32_t)(arg1[39]) << 10);
- x28 = ((uint32_t)(arg1[38]) << 2);
- x29 = ((uint32_t)(arg1[37]) << 21);
- x30 = ((uint32_t)(arg1[36]) << 13);
- x31 = ((uint32_t)(arg1[35]) << 5);
- x32 = ((uint64_t)(arg1[34]) << 25);
- x33 = ((uint32_t)(arg1[33]) << 17);
- x34 = ((uint32_t)(arg1[32]) << 9);
- x35 = ((uint32_t)(arg1[31]) * 0x2);
- x36 = ((uint32_t)(arg1[30]) << 20);
- x37 = ((uint32_t)(arg1[29]) << 12);
- x38 = ((uint32_t)(arg1[28]) << 4);
- x39 = ((uint32_t)(arg1[27]) << 24);
- x40 = ((uint32_t)(arg1[26]) << 16);
- x41 = ((uint32_t)(arg1[25]) << 8);
- x42 = (arg1[24]);
- x43 = ((uint32_t)(arg1[23]) << 19);
- x44 = ((uint32_t)(arg1[22]) << 11);
- x45 = ((uint32_t)(arg1[21]) << 3);
- x46 = ((uint32_t)(arg1[20]) << 22);
- x47 = ((uint32_t)(arg1[19]) << 14);
- x48 = ((uint32_t)(arg1[18]) << 6);
- x49 = ((uint64_t)(arg1[17]) << 26);
- x50 = ((uint32_t)(arg1[16]) << 18);
- x51 = ((uint32_t)(arg1[15]) << 10);
- x52 = ((uint32_t)(arg1[14]) << 2);
- x53 = ((uint32_t)(arg1[13]) << 21);
- x54 = ((uint32_t)(arg1[12]) << 13);
- x55 = ((uint32_t)(arg1[11]) << 5);
- x56 = ((uint64_t)(arg1[10]) << 25);
- x57 = ((uint32_t)(arg1[9]) << 17);
- x58 = ((uint32_t)(arg1[8]) << 9);
- x59 = ((uint32_t)(arg1[7]) * 0x2);
- x60 = ((uint32_t)(arg1[6]) << 20);
- x61 = ((uint32_t)(arg1[5]) << 12);
- x62 = ((uint32_t)(arg1[4]) << 4);
- x63 = ((uint32_t)(arg1[3]) << 24);
- x64 = ((uint32_t)(arg1[2]) << 16);
- x65 = ((uint32_t)(arg1[1]) << 8);
- x66 = (arg1[0]);
- x67 = (x65 + (uint32_t)x66);
- x68 = (x64 + x67);
- x69 = (x63 + x68);
- x70 = (x69 & UINT32_C(0xfffffff));
- x71 = (uint8_t)(x69 >> 28);
- x72 = (x62 + (uint32_t)x71);
- x73 = (x61 + x72);
- x74 = (x60 + x73);
- x75 = (x74 & UINT32_C(0x7ffffff));
- x76 = (fiat_secp521r1_uint1)(x74 >> 27);
- x77 = (x59 + (uint32_t)x76);
- x78 = (x58 + x77);
- x79 = (x57 + x78);
- x80 = (x56 + x79);
- x81 = (uint32_t)(x80 & UINT32_C(0xfffffff));
- x82 = (uint8_t)(x80 >> 28);
- x83 = (x55 + (uint32_t)x82);
- x84 = (x54 + x83);
- x85 = (x53 + x84);
- x86 = (x85 & UINT32_C(0x7ffffff));
- x87 = (uint8_t)(x85 >> 27);
- x88 = (x52 + (uint32_t)x87);
- x89 = (x51 + x88);
- x90 = (x50 + x89);
- x91 = (x49 + x90);
- x92 = (uint32_t)(x91 & UINT32_C(0xfffffff));
- x93 = (uint8_t)(x91 >> 28);
- x94 = (x48 + (uint32_t)x93);
- x95 = (x47 + x94);
- x96 = (x46 + x95);
- x97 = (x96 & UINT32_C(0x7ffffff));
- x98 = (uint8_t)(x96 >> 27);
- x99 = (x45 + (uint32_t)x98);
- x100 = (x44 + x99);
- x101 = (x43 + x100);
- x102 = (x41 + (uint32_t)x42);
- x103 = (x40 + x102);
- x104 = (x39 + x103);
- x105 = (x104 & UINT32_C(0xfffffff));
- x106 = (uint8_t)(x104 >> 28);
- x107 = (x38 + (uint32_t)x106);
- x108 = (x37 + x107);
- x109 = (x36 + x108);
- x110 = (x109 & UINT32_C(0x7ffffff));
- x111 = (fiat_secp521r1_uint1)(x109 >> 27);
- x112 = (x35 + (uint32_t)x111);
- x113 = (x34 + x112);
- x114 = (x33 + x113);
- x115 = (x32 + x114);
- x116 = (uint32_t)(x115 & UINT32_C(0xfffffff));
- x117 = (uint8_t)(x115 >> 28);
- x118 = (x31 + (uint32_t)x117);
- x119 = (x30 + x118);
- x120 = (x29 + x119);
- x121 = (x120 & UINT32_C(0x7ffffff));
- x122 = (uint8_t)(x120 >> 27);
- x123 = (x28 + (uint32_t)x122);
- x124 = (x27 + x123);
- x125 = (x26 + x124);
- x126 = (x25 + x125);
- x127 = (uint32_t)(x126 & UINT32_C(0xfffffff));
- x128 = (uint8_t)(x126 >> 28);
- x129 = (x24 + (uint32_t)x128);
- x130 = (x23 + x129);
- x131 = (x22 + x130);
- x132 = (x131 & UINT32_C(0x7ffffff));
- x133 = (uint8_t)(x131 >> 27);
- x134 = (x21 + (uint32_t)x133);
- x135 = (x20 + x134);
- x136 = (x19 + x135);
- x137 = (x17 + (uint32_t)x18);
- x138 = (x16 + x137);
- x139 = (x15 + x138);
- x140 = (x139 & UINT32_C(0xfffffff));
- x141 = (uint8_t)(x139 >> 28);
- x142 = (x14 + (uint32_t)x141);
- x143 = (x13 + x142);
- x144 = (x12 + x143);
- x145 = (x144 & UINT32_C(0x7ffffff));
- x146 = (fiat_secp521r1_uint1)(x144 >> 27);
- x147 = (x11 + (uint32_t)x146);
- x148 = (x10 + x147);
- x149 = (x9 + x148);
- x150 = (x8 + x149);
- x151 = (uint32_t)(x150 & UINT32_C(0xfffffff));
- x152 = (uint8_t)(x150 >> 28);
- x153 = (x7 + (uint32_t)x152);
- x154 = (x6 + x153);
- x155 = (x5 + x154);
- x156 = (x155 & UINT32_C(0x7ffffff));
- x157 = (uint8_t)(x155 >> 27);
- x158 = (x4 + (uint32_t)x157);
- x159 = (x3 + x158);
- x160 = (x2 + x159);
- x161 = (x1 + x160);
- out1[0] = x70;
- out1[1] = x75;
- out1[2] = x81;
- out1[3] = x86;
- out1[4] = x92;
- out1[5] = x97;
- out1[6] = x101;
- out1[7] = x105;
- out1[8] = x110;
- out1[9] = x116;
- out1[10] = x121;
- out1[11] = x127;
- out1[12] = x132;
- out1[13] = x136;
- out1[14] = x140;
- out1[15] = x145;
- out1[16] = x151;
- out1[17] = x156;
- out1[18] = x161;
-}
+ } else {
+ uint8_t full_key[66] = { 0 };
+ uint8_t *key;
+ uint8_t derived[132] = { 0 };
-/* END verbatim fiat code */
+ if (!X || !k || !P || !X->data || !k->data || !P->data ||
+ X->len < 66 || P->len != 133 ||
+ P->data[0] != EC_POINT_FORM_UNCOMPRESSED) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
+ }
-/* curve-related constants */
+ /* We consider keys of up to size 66, or of size 67 with a single leading 0 */
+ if (k->len < 66) {
+ memcpy(full_key + 66 - k->len, k->data, k->len);
+ key = full_key;
+ } else if (k->len == 66) {
+ key = k->data;
+ } else if (k->len == 67 && k->data[0] == 0) {
+ key = k->data + 1;
+ } else {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
+ }
-static const limb_t const_one[19] = {
- UINT32_C(0x00000001), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000), UINT32_C(0x00000000), UINT32_C(0x00000000),
- UINT32_C(0x00000000)
-};
+ bool b = Hacl_P521_dh_responder(derived, P->data + 1, key);
-static const limb_t const_b[19] = {
- UINT32_C(0x0B503F00), UINT32_C(0x0451FD46), UINT32_C(0x0869E3DE),
- UINT32_C(0x03F107A5), UINT32_C(0x0C1CD5CF), UINT32_C(0x074EEC6F),
- UINT32_C(0x00B29605), UINT32_C(0x0C7E937B), UINT32_C(0x0193951E),
- UINT32_C(0x0213C2AC), UINT32_C(0x013231DE), UINT32_C(0x07CEE2D2),
- UINT32_C(0x06E66CC5), UINT32_C(0x0516D392), UINT32_C(0x068540EE),
- UINT32_C(0x01A21A0B), UINT32_C(0x09343F25), UINT32_C(0x072C31C3),
- UINT32_C(0x014654FA)
-};
+ if (!b) {
+ PORT_SetError(SEC_ERROR_BAD_KEY);
+ res = SECFailure;
+ return res;
+ }
-/* LUT for scalar multiplication by comb interleaving */
-static const pt_aff_t lut_cmb[13][16] = {
- {
- { { UINT32_C(0x02E5BD66), UINT32_C(0x07E7E31C), UINT32_C(0x048537F2),
- UINT32_C(0x067830AD), UINT32_C(0x0378CD22), UINT32_C(0x01E8BFEA),
- UINT32_C(0x07F0EE09), UINT32_C(0x0FE75928), UINT32_C(0x04B5E77E),
- UINT32_C(0x0A7B7542), UINT32_C(0x05EC0D69), UINT32_C(0x0487E0A2),
- UINT32_C(0x06414FED), UINT32_C(0x04E32409), UINT32_C(0x0395B442),
- UINT32_C(0x03ECB662), UINT32_C(0x09D39B3C), UINT32_C(0x00D6E080),
- UINT32_C(0x031A1638) },
- { UINT32_C(0x0FD16650), UINT32_C(0x03E94769), UINT32_C(0x05848111),
- UINT32_C(0x0610D44E), UINT32_C(0x0D84D4F1), UINT32_C(0x004FEB41),
- UINT32_C(0x062A85C8), UINT32_C(0x0EF42640), UINT32_C(0x06E72995),
- UINT32_C(0x0CCC592F), UINT32_C(0x07A2E4E7), UINT32_C(0x01A05EBE),
- UINT32_C(0x0255E6D1), UINT32_C(0x04C7AA22), UINT32_C(0x0C7D1BD9),
- UINT32_C(0x00A5FB42), UINT32_C(0x078008B9), UINT32_C(0x054F1347),
- UINT32_C(0x0460E4A5) } },
- { { UINT32_C(0x0E37AD7D), UINT32_C(0x0119D2ED), UINT32_C(0x05D40B4B),
- UINT32_C(0x0210C586), UINT32_C(0x086EBAD2), UINT32_C(0x05AD67F8),
- UINT32_C(0x00ED35E8), UINT32_C(0x0A483205), UINT32_C(0x03F164A3),
- UINT32_C(0x051BA35A), UINT32_C(0x074225AF), UINT32_C(0x0AE796B5),
- UINT32_C(0x06C48F66), UINT32_C(0x05A95372), UINT32_C(0x05959479),
- UINT32_C(0x01D6A64B), UINT32_C(0x0232BBB2), UINT32_C(0x04887BC5),
- UINT32_C(0x069CF4D4) },
- { UINT32_C(0x0E86C0E5), UINT32_C(0x0588CA1E), UINT32_C(0x0B2084BE),
- UINT32_C(0x01379274), UINT32_C(0x0C33C417), UINT32_C(0x0477B0F1),
- UINT32_C(0x016AD676), UINT32_C(0x0DC575B0), UINT32_C(0x02DD4CF8),
- UINT32_C(0x0B9DD85C), UINT32_C(0x0563F46A), UINT32_C(0x0C5F4BE2),
- UINT32_C(0x020AA740), UINT32_C(0x078AABFD), UINT32_C(0x0AB814F2),
- UINT32_C(0x01F86C6C), UINT32_C(0x05BBB32F), UINT32_C(0x072FBF4C),
- UINT32_C(0x04FA6C0E) } },
- { { UINT32_C(0x0C8F3078), UINT32_C(0x02B5096E), UINT32_C(0x062E71AB),
- UINT32_C(0x043CDB12), UINT32_C(0x068CA75F), UINT32_C(0x03C4DF9E),
- UINT32_C(0x038897F5), UINT32_C(0x0E301423), UINT32_C(0x03C0C6D5),
- UINT32_C(0x0F59C870), UINT32_C(0x03571E2E), UINT32_C(0x04933C0F),
- UINT32_C(0x076D4FC3), UINT32_C(0x03D2CB77), UINT32_C(0x004EB0BF),
- UINT32_C(0x03C3391C), UINT32_C(0x08658E7B), UINT32_C(0x00A524F4),
- UINT32_C(0x0194AFCF) },
- { UINT32_C(0x0EB090CB), UINT32_C(0x03CC3E8D), UINT32_C(0x09EFF02E),
- UINT32_C(0x00E4AE6A), UINT32_C(0x0DE747C0), UINT32_C(0x00473D7F),
- UINT32_C(0x0188AA01), UINT32_C(0x072CF374), UINT32_C(0x06897C90),
- UINT32_C(0x08E10F76), UINT32_C(0x02F93406), UINT32_C(0x0147B760),
- UINT32_C(0x03A1CB80), UINT32_C(0x00E6C7F4), UINT32_C(0x0A811291),
- UINT32_C(0x02B73114), UINT32_C(0x03ADD914), UINT32_C(0x037BACC0),
- UINT32_C(0x056F9BBC) } },
- { { UINT32_C(0x0816ECD4), UINT32_C(0x04EAD882), UINT32_C(0x04C33403),
- UINT32_C(0x07EA1FB8), UINT32_C(0x0F11BE54), UINT32_C(0x043738EE),
- UINT32_C(0x064D36F9), UINT32_C(0x0FC698D8), UINT32_C(0x0308D0AB),
- UINT32_C(0x0298BB18), UINT32_C(0x02585EE2), UINT32_C(0x08A3C063),
- UINT32_C(0x023D520C), UINT32_C(0x02F91707), UINT32_C(0x0B073A0C),
- UINT32_C(0x0365FDA0), UINT32_C(0x0EC68DDD), UINT32_C(0x0333AB6F),
- UINT32_C(0x015B5747) },
- { UINT32_C(0x0525251B), UINT32_C(0x06B8BC90), UINT32_C(0x0DF8F6B8),
- UINT32_C(0x06254BBB), UINT32_C(0x097E79D9), UINT32_C(0x01647386),
- UINT32_C(0x04A91D1A), UINT32_C(0x0DEC9E2B), UINT32_C(0x050F293C),
- UINT32_C(0x07BCAAD7), UINT32_C(0x033144D9), UINT32_C(0x0375C76F),
- UINT32_C(0x040A093C), UINT32_C(0x05AE2C16), UINT32_C(0x09D68478),
- UINT32_C(0x058317A3), UINT32_C(0x054221A3), UINT32_C(0x07B37554),
- UINT32_C(0x00F4B46D) } },
- { { UINT32_C(0x07CBE207), UINT32_C(0x04562796), UINT32_C(0x0A50CC3E),
- UINT32_C(0x0757B0B9), UINT32_C(0x063D3D42), UINT32_C(0x07DC968C),
- UINT32_C(0x079E2AB6), UINT32_C(0x0134DA35), UINT32_C(0x029E1396),
- UINT32_C(0x0D6CCAE8), UINT32_C(0x0628B718), UINT32_C(0x0A64B12A),
- UINT32_C(0x06E621D1), UINT32_C(0x0769A2A0), UINT32_C(0x0156D488),
- UINT32_C(0x075BF157), UINT32_C(0x04304D45), UINT32_C(0x046B3C3C),
- UINT32_C(0x05614E27) },
- { UINT32_C(0x09AD2A4E), UINT32_C(0x020EA86B), UINT32_C(0x001E6875),
- UINT32_C(0x055D2511), UINT32_C(0x01F5CDB0), UINT32_C(0x03D2AFF6),
- UINT32_C(0x007FAB76), UINT32_C(0x0057AC84), UINT32_C(0x069E5756),
- UINT32_C(0x0688DC1A), UINT32_C(0x0744C7BB), UINT32_C(0x0EDB2096),
- UINT32_C(0x053B873A), UINT32_C(0x01844532), UINT32_C(0x07AE938E),
- UINT32_C(0x055557A2), UINT32_C(0x0BE73E16), UINT32_C(0x0193515D),
- UINT32_C(0x00A8B986) } },
- { { UINT32_C(0x0A0CDB9A), UINT32_C(0x040E02DD), UINT32_C(0x035205D9),
- UINT32_C(0x0049F499), UINT32_C(0x02140570), UINT32_C(0x02F8C644),
- UINT32_C(0x068CD8D7), UINT32_C(0x0663DA1B), UINT32_C(0x05BC5332),
- UINT32_C(0x022CA5E7), UINT32_C(0x058A9E53), UINT32_C(0x02550FBC),
- UINT32_C(0x035F05E1), UINT32_C(0x076AEE3F), UINT32_C(0x0B4315CF),
- UINT32_C(0x01A39573), UINT32_C(0x0BFEA8DE), UINT32_C(0x024B3FBD),
- UINT32_C(0x0229D610) },
- { UINT32_C(0x0E48C808), UINT32_C(0x0074F92C), UINT32_C(0x0336BAB1),
- UINT32_C(0x001C7E90), UINT32_C(0x0CDB72B2), UINT32_C(0x06452A54),
- UINT32_C(0x01C49198), UINT32_C(0x0B42A4AB), UINT32_C(0x048A90E8),
- UINT32_C(0x03705637), UINT32_C(0x02BA9C17), UINT32_C(0x024FB4BA),
- UINT32_C(0x00842F41), UINT32_C(0x01D6EAB3), UINT32_C(0x054FB229),
- UINT32_C(0x00CA8770), UINT32_C(0x0253093A), UINT32_C(0x07F97744),
- UINT32_C(0x025BECC0) } },
- { { UINT32_C(0x02FBCDA7), UINT32_C(0x007848D3), UINT32_C(0x01DFF031),
- UINT32_C(0x07601567), UINT32_C(0x0BA52FB0), UINT32_C(0x01E6AE23),
- UINT32_C(0x01AA852F), UINT32_C(0x003C996A), UINT32_C(0x0445908E),
- UINT32_C(0x070CC265), UINT32_C(0x0257D5EB), UINT32_C(0x08E13BB7),
- UINT32_C(0x03786D30), UINT32_C(0x049FB9B6), UINT32_C(0x0924861A),
- UINT32_C(0x0065D2B4), UINT32_C(0x0D5B39AF), UINT32_C(0x07309872),
- UINT32_C(0x01F8FA63) },
- { UINT32_C(0x022A71C9), UINT32_C(0x01A01FB0), UINT32_C(0x0FD3EE52),
- UINT32_C(0x0555F222), UINT32_C(0x0F0D8667), UINT32_C(0x05472FEE),
- UINT32_C(0x0136FEE9), UINT32_C(0x08BC763F), UINT32_C(0x03D5D583),
- UINT32_C(0x0C425583), UINT32_C(0x04F5CB83), UINT32_C(0x071A71E9),
- UINT32_C(0x061B5508), UINT32_C(0x0676A851), UINT32_C(0x03ED5A08),
- UINT32_C(0x01926DAA), UINT32_C(0x0FDB5234), UINT32_C(0x056DAF03),
- UINT32_C(0x0423B963) } },
- { { UINT32_C(0x0CB8DB55), UINT32_C(0x02FE337B), UINT32_C(0x0F257BD3),
- UINT32_C(0x02D303C7), UINT32_C(0x0C766E36), UINT32_C(0x0723F00C),
- UINT32_C(0x03C3ADE8), UINT32_C(0x0BD00FFE), UINT32_C(0x01CCE27D),
- UINT32_C(0x051C2372), UINT32_C(0x06A65BE2), UINT32_C(0x014B5A5E),
- UINT32_C(0x042D0282), UINT32_C(0x05C7DE61), UINT32_C(0x06D4300F),
- UINT32_C(0x0558FC54), UINT32_C(0x08CBE082), UINT32_C(0x03579724),
- UINT32_C(0x01ADAB62) },
- { UINT32_C(0x01475465), UINT32_C(0x0343480A), UINT32_C(0x057BB2AC),
- UINT32_C(0x0219888D), UINT32_C(0x06491BF6), UINT32_C(0x00CB25B2),
- UINT32_C(0x010A4711), UINT32_C(0x09470A80), UINT32_C(0x01062C89),
- UINT32_C(0x00BDAAFD), UINT32_C(0x020D32E9), UINT32_C(0x02E92D88),
- UINT32_C(0x026EB483), UINT32_C(0x06F824B5), UINT32_C(0x03EDBF63),
- UINT32_C(0x0664D233), UINT32_C(0x023AD4F9), UINT32_C(0x04E2AE27),
- UINT32_C(0x06D1A368) } },
- { { UINT32_C(0x03110AE0), UINT32_C(0x07817A85), UINT32_C(0x034820ED),
- UINT32_C(0x00855E1A), UINT32_C(0x003FE30C), UINT32_C(0x06D5A04E),
- UINT32_C(0x06FA73CC), UINT32_C(0x04FE0287), UINT32_C(0x00A69E67),
- UINT32_C(0x0A10B0EC), UINT32_C(0x049E4D24), UINT32_C(0x0ED35994),
- UINT32_C(0x01A7E8AC), UINT32_C(0x04CF74F1), UINT32_C(0x0923906A),
- UINT32_C(0x03874645), UINT32_C(0x0DB42741), UINT32_C(0x060FE261),
- UINT32_C(0x06C0376D) },
- { UINT32_C(0x00E64647), UINT32_C(0x039CB7C7), UINT32_C(0x0EABEA6B),
- UINT32_C(0x02B29856), UINT32_C(0x00839A41), UINT32_C(0x07C5AB7D),
- UINT32_C(0x0697B3AB), UINT32_C(0x06DD0BF0), UINT32_C(0x05A564EF),
- UINT32_C(0x02647BF3), UINT32_C(0x05856454), UINT32_C(0x02A635A2),
- UINT32_C(0x033DA644), UINT32_C(0x05BCCA9A), UINT32_C(0x0EDDD106),
- UINT32_C(0x011D4E4A), UINT32_C(0x0AEDB782), UINT32_C(0x03AFB62C),
- UINT32_C(0x0215A0FC) } },
- { { UINT32_C(0x08D6A19B), UINT32_C(0x07F0B241), UINT32_C(0x077BC8F1),
- UINT32_C(0x0063CE4B), UINT32_C(0x0C37FB3D), UINT32_C(0x075E9165),
- UINT32_C(0x049192AB), UINT32_C(0x06266967), UINT32_C(0x03B30963),
- UINT32_C(0x01CFE3F4), UINT32_C(0x059B66F2), UINT32_C(0x01FBFFC2),
- UINT32_C(0x01D577D5), UINT32_C(0x022DBBF0), UINT32_C(0x05A1A072),
- UINT32_C(0x07948C2D), UINT32_C(0x08690F81), UINT32_C(0x0490C833),
- UINT32_C(0x02663733) },
- { UINT32_C(0x0BFD0575), UINT32_C(0x0091A695), UINT32_C(0x07FC8952),
- UINT32_C(0x0313D53F), UINT32_C(0x0DDFD693), UINT32_C(0x06458C70),
- UINT32_C(0x058761CC), UINT32_C(0x02EB8CF9), UINT32_C(0x02D963FF),
- UINT32_C(0x0AEE4EE7), UINT32_C(0x05DC6CA8), UINT32_C(0x0D2B3143),
- UINT32_C(0x038ADEF3), UINT32_C(0x033E9457), UINT32_C(0x035B245D),
- UINT32_C(0x01424975), UINT32_C(0x03DAB987), UINT32_C(0x00C4D404),
- UINT32_C(0x04DF5768) } },
- { { UINT32_C(0x03C8C9ED), UINT32_C(0x06F39969), UINT32_C(0x08DA5A85),
- UINT32_C(0x02407274), UINT32_C(0x0D6CDEB2), UINT32_C(0x03B609F5),
- UINT32_C(0x06CA4BF5), UINT32_C(0x0D62A309), UINT32_C(0x0257EAE4),
- UINT32_C(0x0CFF528C), UINT32_C(0x07CEB388), UINT32_C(0x0A606548),
- UINT32_C(0x030BB457), UINT32_C(0x01345DCC), UINT32_C(0x09ED3B10),
- UINT32_C(0x04855085), UINT32_C(0x07A5F679), UINT32_C(0x00234E85),
- UINT32_C(0x06872ECB) },
- { UINT32_C(0x0CBA4DF5), UINT32_C(0x00BC43C9), UINT32_C(0x0996C3CC),
- UINT32_C(0x01E2EC93), UINT32_C(0x0B15F26C), UINT32_C(0x05CB18FB),
- UINT32_C(0x05F5A1D1), UINT32_C(0x0A483295), UINT32_C(0x0741A53D),
- UINT32_C(0x0F4FEFBE), UINT32_C(0x052DED75), UINT32_C(0x09B06028),
- UINT32_C(0x0671464F), UINT32_C(0x0741E002), UINT32_C(0x0E40CE62),
- UINT32_C(0x012DA7C5), UINT32_C(0x067A9058), UINT32_C(0x07A9F1DD),
- UINT32_C(0x04688275) } },
- { { UINT32_C(0x02AF535C), UINT32_C(0x046A5ECE), UINT32_C(0x0CB00D43),
- UINT32_C(0x063584D5), UINT32_C(0x0F881F87), UINT32_C(0x02697B14),
- UINT32_C(0x074F1FC7), UINT32_C(0x0AF5B0AF), UINT32_C(0x06F83FC9),
- UINT32_C(0x0A8A203E), UINT32_C(0x0469A19B), UINT32_C(0x0A092434),
- UINT32_C(0x069E17EC), UINT32_C(0x0773D1CD), UINT32_C(0x0F547B8E),
- UINT32_C(0x01CACEC5), UINT32_C(0x0B26EDB6), UINT32_C(0x03AE5202),
- UINT32_C(0x06B82C9D) },
- { UINT32_C(0x0FA0D000), UINT32_C(0x015C3536), UINT32_C(0x0470ADB0),
- UINT32_C(0x008A151A), UINT32_C(0x030884ED), UINT32_C(0x06EC1F74),
- UINT32_C(0x01E13D93), UINT32_C(0x0E97FCF4), UINT32_C(0x0043361E),
- UINT32_C(0x05B81C21), UINT32_C(0x048F0898), UINT32_C(0x00CAD0C5),
- UINT32_C(0x06243416), UINT32_C(0x03EBACFF), UINT32_C(0x0068471C),
- UINT32_C(0x022858FC), UINT32_C(0x0A700CD1), UINT32_C(0x004BCA70),
- UINT32_C(0x03CB25EA) } },
- { { UINT32_C(0x0F70ACE0), UINT32_C(0x00C2460B), UINT32_C(0x0A7F627F),
- UINT32_C(0x01D6384B), UINT32_C(0x0C9F9078), UINT32_C(0x02A9923F),
- UINT32_C(0x02B743F1), UINT32_C(0x0C36EE4D), UINT32_C(0x01856917),
- UINT32_C(0x03329552), UINT32_C(0x05918A93), UINT32_C(0x0EC471DC),
- UINT32_C(0x01946C41), UINT32_C(0x00039881), UINT32_C(0x05DFF9D2),
- UINT32_C(0x05874A6F), UINT32_C(0x04306946), UINT32_C(0x05AB8B53),
- UINT32_C(0x0553A131) },
- { UINT32_C(0x04C78230), UINT32_C(0x025BCE40), UINT32_C(0x0CD6DA86),
- UINT32_C(0x054A8CE5), UINT32_C(0x0BD7BB78), UINT32_C(0x029A965C),
- UINT32_C(0x068F11B8), UINT32_C(0x02FBC1A0), UINT32_C(0x06354357),
- UINT32_C(0x0CCD4DBD), UINT32_C(0x051102A2), UINT32_C(0x031FD9B0),
- UINT32_C(0x02C008A8), UINT32_C(0x00AD491F), UINT32_C(0x0BB60D3F),
- UINT32_C(0x02A28F80), UINT32_C(0x008E75C4), UINT32_C(0x0522E322),
- UINT32_C(0x03343F73) } },
- { { UINT32_C(0x0002D68B), UINT32_C(0x07643017), UINT32_C(0x088AD06A),
- UINT32_C(0x0408925D), UINT32_C(0x08F2C855), UINT32_C(0x036834C5),
- UINT32_C(0x0289A9D7), UINT32_C(0x0719D483), UINT32_C(0x032123DA),
- UINT32_C(0x0B0A9B01), UINT32_C(0x0230FC26), UINT32_C(0x08B0CFCD),
- UINT32_C(0x074393E1), UINT32_C(0x0439CA9A), UINT32_C(0x089E646F),
- UINT32_C(0x024D4EB8), UINT32_C(0x036D4EC5), UINT32_C(0x03F0431F),
- UINT32_C(0x0580DCFB) },
- { UINT32_C(0x0D90B740), UINT32_C(0x066AECA5), UINT32_C(0x0B5967E7),
- UINT32_C(0x07CE13A8), UINT32_C(0x0CB918FF), UINT32_C(0x052A2ED5),
- UINT32_C(0x009DC3A7), UINT32_C(0x092EBC54), UINT32_C(0x07A491ED),
- UINT32_C(0x0644023D), UINT32_C(0x06F1C343), UINT32_C(0x0EED295B),
- UINT32_C(0x0173D4B0), UINT32_C(0x04FE8C9E), UINT32_C(0x0C06A3FA),
- UINT32_C(0x0028401A), UINT32_C(0x0FC38BCB), UINT32_C(0x020029B9),
- UINT32_C(0x03C565C1) } },
- { { UINT32_C(0x0EDA25DC), UINT32_C(0x03927618), UINT32_C(0x0EDB2C58),
- UINT32_C(0x00B2BAA3), UINT32_C(0x0E7BCCF6), UINT32_C(0x03A11FFE),
- UINT32_C(0x02001D5C), UINT32_C(0x076D7291), UINT32_C(0x029BC068),
- UINT32_C(0x094260B9), UINT32_C(0x0671EECC), UINT32_C(0x07B0A2FB),
- UINT32_C(0x047A1899), UINT32_C(0x07CFA289), UINT32_C(0x065A085F),
- UINT32_C(0x041FBFCB), UINT32_C(0x0050FB67), UINT32_C(0x02D9296D),
- UINT32_C(0x05D31913) },
- { UINT32_C(0x021A0C30), UINT32_C(0x07BBBC48), UINT32_C(0x077F7A30),
- UINT32_C(0x024F84DD), UINT32_C(0x00FC19E6), UINT32_C(0x035C1B4C),
- UINT32_C(0x02861399), UINT32_C(0x0CE0D90B), UINT32_C(0x00E21952),
- UINT32_C(0x0A696F7C), UINT32_C(0x03D6F2B5), UINT32_C(0x07F2D73D),
- UINT32_C(0x03F2D910), UINT32_C(0x00119F7C), UINT32_C(0x01B7B782),
- UINT32_C(0x02CC95B4), UINT32_C(0x033CD00B), UINT32_C(0x005F0FE8),
- UINT32_C(0x046BCE9F) } },
- { { UINT32_C(0x016A8803), UINT32_C(0x057D0E0C), UINT32_C(0x04902444),
- UINT32_C(0x06BC911C), UINT32_C(0x0C88373E), UINT32_C(0x0302735A),
- UINT32_C(0x07E0A60D), UINT32_C(0x04C9D429), UINT32_C(0x05543A90),
- UINT32_C(0x0EE4D9AC), UINT32_C(0x050794BC), UINT32_C(0x0985C982),
- UINT32_C(0x0595F0A9), UINT32_C(0x05ABA2C4), UINT32_C(0x07307B7D),
- UINT32_C(0x06A58CDB), UINT32_C(0x08CC2A00), UINT32_C(0x019E61E1),
- UINT32_C(0x0363A648) },
- { UINT32_C(0x09792D19), UINT32_C(0x04677C73), UINT32_C(0x08631594),
- UINT32_C(0x032F8F6A), UINT32_C(0x098EA86F), UINT32_C(0x032B9330),
- UINT32_C(0x009CD434), UINT32_C(0x04D14790), UINT32_C(0x06B8C324),
- UINT32_C(0x035461EE), UINT32_C(0x06E597DA), UINT32_C(0x00182BBE),
- UINT32_C(0x04A3C432), UINT32_C(0x045AA031), UINT32_C(0x014A30EC),
- UINT32_C(0x009C13A2), UINT32_C(0x0C730FBE), UINT32_C(0x06A8A94C),
- UINT32_C(0x049EC08E) } },
- },
- {
- { { UINT32_C(0x043C6A8B), UINT32_C(0x069E114E), UINT32_C(0x02D17119),
- UINT32_C(0x07161008), UINT32_C(0x04253BA7), UINT32_C(0x06D7E9D1),
- UINT32_C(0x07AFFFEA), UINT32_C(0x0C20088E), UINT32_C(0x009D84CD),
- UINT32_C(0x094B5A8B), UINT32_C(0x070C9B19), UINT32_C(0x0A140336),
- UINT32_C(0x059D32DC), UINT32_C(0x07D5C770), UINT32_C(0x0B702098),
- UINT32_C(0x0646FC6A), UINT32_C(0x06312DAB), UINT32_C(0x05DEF39B),
- UINT32_C(0x07B32BAC) },
- { UINT32_C(0x06B04438), UINT32_C(0x0086BBC2), UINT32_C(0x0CE331EB),
- UINT32_C(0x07A1DB2A), UINT32_C(0x04798584), UINT32_C(0x0632A66E),
- UINT32_C(0x03A4F5AE), UINT32_C(0x03B41996), UINT32_C(0x061944D5),
- UINT32_C(0x0E8ECAB0), UINT32_C(0x00E38A9B), UINT32_C(0x0BBF7088),
- UINT32_C(0x022E1052), UINT32_C(0x00FB1445), UINT32_C(0x0FF1C5EA),
- UINT32_C(0x034DB2F7), UINT32_C(0x04C560D6), UINT32_C(0x050E7FEA),
- UINT32_C(0x00B97B7C) } },
- { { UINT32_C(0x004ED5E3), UINT32_C(0x012DA268), UINT32_C(0x08C92EF3),
- UINT32_C(0x06F60BF9), UINT32_C(0x0656B119), UINT32_C(0x014823AF),
- UINT32_C(0x058D04AC), UINT32_C(0x099D3419), UINT32_C(0x00CFAE71),
- UINT32_C(0x0B423A38), UINT32_C(0x05EA80E2), UINT32_C(0x06C1F218),
- UINT32_C(0x03E72AD5), UINT32_C(0x0691F49A), UINT32_C(0x04310FAB),
- UINT32_C(0x05D250AD), UINT32_C(0x084D7BFA), UINT32_C(0x070595DE),
- UINT32_C(0x017825D9) },
- { UINT32_C(0x0A7D5B37), UINT32_C(0x00B0A7A2), UINT32_C(0x0ED3BDEF),
- UINT32_C(0x02B29FDB), UINT32_C(0x085BCC71), UINT32_C(0x0455FDD9),
- UINT32_C(0x0595CF1F), UINT32_C(0x0040CCA6), UINT32_C(0x04FA2F23),
- UINT32_C(0x04A05DD3), UINT32_C(0x07E18B4E), UINT32_C(0x045A2A46),
- UINT32_C(0x058F2043), UINT32_C(0x038FC52D), UINT32_C(0x0A7666DC),
- UINT32_C(0x0701CE42), UINT32_C(0x04B38B92), UINT32_C(0x01AD842D),
- UINT32_C(0x07A0B6A0) } },
- { { UINT32_C(0x029D2024), UINT32_C(0x0728395A), UINT32_C(0x04DB516D),
- UINT32_C(0x0504C2CE), UINT32_C(0x03C5DEB1), UINT32_C(0x041CFF48),
- UINT32_C(0x014AE223), UINT32_C(0x0856531F), UINT32_C(0x02EC3F65),
- UINT32_C(0x0A46F536), UINT32_C(0x04ECB2AA), UINT32_C(0x0FB7289E),
- UINT32_C(0x03DE9EFF), UINT32_C(0x0724BAA3), UINT32_C(0x0508D541),
- UINT32_C(0x051B73BA), UINT32_C(0x0B38749E), UINT32_C(0x044097DF),
- UINT32_C(0x00E5AC8E) },
- { UINT32_C(0x0DDD93A9), UINT32_C(0x04295052), UINT32_C(0x0E03B84C),
- UINT32_C(0x00B38799), UINT32_C(0x037F6A48), UINT32_C(0x07614753),
- UINT32_C(0x05765258), UINT32_C(0x0E0CA450), UINT32_C(0x07CFB537),
- UINT32_C(0x07342BEF), UINT32_C(0x05C319BB), UINT32_C(0x04F3A1F5),
- UINT32_C(0x04762545), UINT32_C(0x0589360C), UINT32_C(0x0E5A46C8),
- UINT32_C(0x02744137), UINT32_C(0x05E9E991), UINT32_C(0x01523BC2),
- UINT32_C(0x062CDAB6) } },
- { { UINT32_C(0x090E92D6), UINT32_C(0x00FA75A5), UINT32_C(0x040D6969),
- UINT32_C(0x011D7DDB), UINT32_C(0x0B02AC62), UINT32_C(0x07679C7F),
- UINT32_C(0x07FD8A06), UINT32_C(0x0A623D2A), UINT32_C(0x034C8ED2),
- UINT32_C(0x07FB351F), UINT32_C(0x008857BA), UINT32_C(0x09AD9171),
- UINT32_C(0x03CB7A5B), UINT32_C(0x01A56DB4), UINT32_C(0x09225D29),
- UINT32_C(0x07819EC5), UINT32_C(0x0645D37A), UINT32_C(0x0618AED1),
- UINT32_C(0x053A82A2) },
- { UINT32_C(0x0662F537), UINT32_C(0x00AB8407), UINT32_C(0x0FF98DF8),
- UINT32_C(0x03C0F116), UINT32_C(0x0C87DD6F), UINT32_C(0x00995A87),
- UINT32_C(0x036E7BF1), UINT32_C(0x0318B15E), UINT32_C(0x01116415),
- UINT32_C(0x00A53CD8), UINT32_C(0x0237AEF5), UINT32_C(0x065DCC5D),
- UINT32_C(0x048F2118), UINT32_C(0x011F3E13), UINT32_C(0x0AD27061),
- UINT32_C(0x02B7B666), UINT32_C(0x01CB618D), UINT32_C(0x02EC555A),
- UINT32_C(0x058DF8C5) } },
- { { UINT32_C(0x0B9839DA), UINT32_C(0x0047D336), UINT32_C(0x09E93377),
- UINT32_C(0x00074C09), UINT32_C(0x08B5F722), UINT32_C(0x06A0986D),
- UINT32_C(0x03ABD41C), UINT32_C(0x057C1CAA), UINT32_C(0x02B2ACCA),
- UINT32_C(0x0FC9B996), UINT32_C(0x05488187), UINT32_C(0x07861011),
- UINT32_C(0x0163907B), UINT32_C(0x07F6DAF7), UINT32_C(0x0363BC0E),
- UINT32_C(0x058EF00F), UINT32_C(0x05446B66), UINT32_C(0x0514AA79),
- UINT32_C(0x04A03953) },
- { UINT32_C(0x0C1962CE), UINT32_C(0x06493BB1), UINT32_C(0x086D6126),
- UINT32_C(0x00FCE569), UINT32_C(0x0DC92336), UINT32_C(0x015B8163),
- UINT32_C(0x0432A31C), UINT32_C(0x0133A6EE), UINT32_C(0x0578D7AF),
- UINT32_C(0x0840A2D3), UINT32_C(0x064C1FC2), UINT32_C(0x085837C8),
- UINT32_C(0x0641237D), UINT32_C(0x054AF205), UINT32_C(0x0657C4E2),
- UINT32_C(0x04B8B1E0), UINT32_C(0x00272237), UINT32_C(0x05B53E59),
- UINT32_C(0x001FEA03) } },
- { { UINT32_C(0x0D2BF9A7), UINT32_C(0x01A65815), UINT32_C(0x06FC3341),
- UINT32_C(0x065823F4), UINT32_C(0x01599DE7), UINT32_C(0x070CA981),
- UINT32_C(0x067E13C8), UINT32_C(0x009A9A6A), UINT32_C(0x0229B72F),
- UINT32_C(0x09B1BC4A), UINT32_C(0x06BCE69A), UINT32_C(0x0FA69B0D),
- UINT32_C(0x078B83C0), UINT32_C(0x06E62A5C), UINT32_C(0x021D206C),
- UINT32_C(0x04E0CE16), UINT32_C(0x0F728EF3), UINT32_C(0x0453D52E),
- UINT32_C(0x01844B54) },
- { UINT32_C(0x020C30CB), UINT32_C(0x04E85BEE), UINT32_C(0x095E4EAF),
- UINT32_C(0x075E0168), UINT32_C(0x039C14AF), UINT32_C(0x0370EA5A),
- UINT32_C(0x05B0F157), UINT32_C(0x02E11B96), UINT32_C(0x042E3824),
- UINT32_C(0x0D5DC5BB), UINT32_C(0x00451C96), UINT32_C(0x0E911392),
- UINT32_C(0x0724269B), UINT32_C(0x04003692), UINT32_C(0x076FEA68),
- UINT32_C(0x033CBDE1), UINT32_C(0x0417AF7D), UINT32_C(0x00B9592D),
- UINT32_C(0x027FA0B4) } },
- { { UINT32_C(0x0B2E6D92), UINT32_C(0x06E8F69A), UINT32_C(0x0DCD1AA5),
- UINT32_C(0x01FB27B9), UINT32_C(0x04974F21), UINT32_C(0x027768BA),
- UINT32_C(0x02769E05), UINT32_C(0x08C4A5CC), UINT32_C(0x047AF64B),
- UINT32_C(0x08B89BB2), UINT32_C(0x02ED5662), UINT32_C(0x03939461),
- UINT32_C(0x01F7401B), UINT32_C(0x06FDF357), UINT32_C(0x019C98D9),
- UINT32_C(0x07B1E9DD), UINT32_C(0x075DC034), UINT32_C(0x01E0054F),
- UINT32_C(0x02A2F727) },
- { UINT32_C(0x0EB71C5F), UINT32_C(0x023BF702), UINT32_C(0x02236711),
- UINT32_C(0x012F6D73), UINT32_C(0x0CA22E0A), UINT32_C(0x02359757),
- UINT32_C(0x0157DA08), UINT32_C(0x05CB0525), UINT32_C(0x0102CBFE),
- UINT32_C(0x0854B694), UINT32_C(0x07F9F306), UINT32_C(0x0A6E3855),
- UINT32_C(0x024CCD83), UINT32_C(0x0220CC0E), UINT32_C(0x0AAD6848),
- UINT32_C(0x0783A366), UINT32_C(0x0B9AD104), UINT32_C(0x02844B14),
- UINT32_C(0x07B5BC13) } },
- { { UINT32_C(0x01490429), UINT32_C(0x07C3B47C), UINT32_C(0x0DB7A58B),
- UINT32_C(0x04D10D93), UINT32_C(0x08CA405B), UINT32_C(0x07FD087B),
- UINT32_C(0x07C88AC9), UINT32_C(0x07D54451), UINT32_C(0x07010F32),
- UINT32_C(0x06D62976), UINT32_C(0x03752EE7), UINT32_C(0x0A2326FD),
- UINT32_C(0x00445040), UINT32_C(0x03605DB9), UINT32_C(0x03194920),
- UINT32_C(0x01F8F0DF), UINT32_C(0x0F321EF5), UINT32_C(0x0297EC47),
- UINT32_C(0x05C97D9A) },
- { UINT32_C(0x087CA374), UINT32_C(0x04D9BD85), UINT32_C(0x09E4C1E2),
- UINT32_C(0x05C6B60F), UINT32_C(0x03338BE0), UINT32_C(0x06C38E9F),
- UINT32_C(0x030527CA), UINT32_C(0x0F28850A), UINT32_C(0x039421C7),
- UINT32_C(0x02DE48C5), UINT32_C(0x0652719F), UINT32_C(0x097E2E6B),
- UINT32_C(0x0758DD1C), UINT32_C(0x06788A64), UINT32_C(0x01CDEC4A),
- UINT32_C(0x0314A216), UINT32_C(0x022EE734), UINT32_C(0x023BD455),
- UINT32_C(0x05EC7716) } },
- { { UINT32_C(0x03ACF0F9), UINT32_C(0x0203D95A), UINT32_C(0x0286435B),
- UINT32_C(0x01818DC4), UINT32_C(0x02821B92), UINT32_C(0x06AE5102),
- UINT32_C(0x07066934), UINT32_C(0x07BC9150), UINT32_C(0x07BA5607),
- UINT32_C(0x0EC5981C), UINT32_C(0x04C69569), UINT32_C(0x03CC0C2A),
- UINT32_C(0x07DA94A0), UINT32_C(0x07E65511), UINT32_C(0x086234FB),
- UINT32_C(0x05407465), UINT32_C(0x0F825CD7), UINT32_C(0x03F370CC),
- UINT32_C(0x00DC963A) },
- { UINT32_C(0x09436D81), UINT32_C(0x04465793), UINT32_C(0x041DBE76),
- UINT32_C(0x0384C090), UINT32_C(0x005C5350), UINT32_C(0x07296D6A),
- UINT32_C(0x04712C6D), UINT32_C(0x0B8974CF), UINT32_C(0x07A230E5),
- UINT32_C(0x0CBF52A8), UINT32_C(0x016C1814), UINT32_C(0x06EDC3F7),
- UINT32_C(0x0627F679), UINT32_C(0x0750029A), UINT32_C(0x06E2AA55),
- UINT32_C(0x0245FF68), UINT32_C(0x0F8F41C6), UINT32_C(0x00A2BB27),
- UINT32_C(0x052BDC1F) } },
- { { UINT32_C(0x06C8D427), UINT32_C(0x0648C043), UINT32_C(0x045E9C01),
- UINT32_C(0x042CC909), UINT32_C(0x089A90AA), UINT32_C(0x007114E3),
- UINT32_C(0x0085B7C3), UINT32_C(0x0B9DE134), UINT32_C(0x06B0A9E9),
- UINT32_C(0x0AAAEBCC), UINT32_C(0x0092A52A), UINT32_C(0x0D6E2713),
- UINT32_C(0x05857362), UINT32_C(0x0118376C), UINT32_C(0x000A08F8),
- UINT32_C(0x003DE32F), UINT32_C(0x0E3FE6ED), UINT32_C(0x06CFB412),
- UINT32_C(0x043D1662) },
- { UINT32_C(0x0D400463), UINT32_C(0x0448C05A), UINT32_C(0x0AE67E6E),
- UINT32_C(0x059369CB), UINT32_C(0x0A23C77C), UINT32_C(0x06E7F666),
- UINT32_C(0x05BB8233), UINT32_C(0x095E95B6), UINT32_C(0x0284C07C),
- UINT32_C(0x0F6C7097), UINT32_C(0x0443F5D5), UINT32_C(0x0301FE7F),
- UINT32_C(0x023010C9), UINT32_C(0x009D2363), UINT32_C(0x07BD65C2),
- UINT32_C(0x07E297A0), UINT32_C(0x034DDA50), UINT32_C(0x07ADC7E7),
- UINT32_C(0x03060E2B) } },
- { { UINT32_C(0x0924C15F), UINT32_C(0x04E07505), UINT32_C(0x08D0DCCF),
- UINT32_C(0x01D04769), UINT32_C(0x02E2E204), UINT32_C(0x0713097A),
- UINT32_C(0x07E9B59C), UINT32_C(0x07FDCF7A), UINT32_C(0x03E60E03),
- UINT32_C(0x0423C6CD), UINT32_C(0x06A163F7), UINT32_C(0x07C0FA8B),
- UINT32_C(0x01341D2B), UINT32_C(0x06745C51), UINT32_C(0x03C9DE3A),
- UINT32_C(0x06D6D6F5), UINT32_C(0x0F5AF83F), UINT32_C(0x02698DEF),
- UINT32_C(0x06091F29) },
- { UINT32_C(0x0DBEEE78), UINT32_C(0x060A02B3), UINT32_C(0x0558AE6B),
- UINT32_C(0x07100333), UINT32_C(0x0A312381), UINT32_C(0x02FA9A13),
- UINT32_C(0x06D1C0C3), UINT32_C(0x0C625336), UINT32_C(0x03B853CF),
- UINT32_C(0x08B3BE37), UINT32_C(0x0104E5D9), UINT32_C(0x053B9B53),
- UINT32_C(0x02A2D06C), UINT32_C(0x01CDC864), UINT32_C(0x0F04A867),
- UINT32_C(0x07663226), UINT32_C(0x0FD6C54B), UINT32_C(0x040943C5),
- UINT32_C(0x03C04D10) } },
- { { UINT32_C(0x090F8C80), UINT32_C(0x0582A686), UINT32_C(0x0BA42ED6),
- UINT32_C(0x070A8F1E), UINT32_C(0x0AB02D12), UINT32_C(0x01EB5C3D),
- UINT32_C(0x07479B29), UINT32_C(0x04D72C41), UINT32_C(0x0362562E),
- UINT32_C(0x06FAF4FC), UINT32_C(0x033FED54), UINT32_C(0x0229578C),
- UINT32_C(0x005B4CFB), UINT32_C(0x03BA05BF), UINT32_C(0x0B4A3FBC),
- UINT32_C(0x07DBD5D5), UINT32_C(0x05E8639D), UINT32_C(0x07D5867F),
- UINT32_C(0x027FE947) },
- { UINT32_C(0x01982847), UINT32_C(0x008A8D79), UINT32_C(0x0B215B64),
- UINT32_C(0x06EDECCB), UINT32_C(0x045309BE), UINT32_C(0x055465DE),
- UINT32_C(0x0426ED2E), UINT32_C(0x0D49D672), UINT32_C(0x01000B74),
- UINT32_C(0x01206E3C), UINT32_C(0x061A0CA8), UINT32_C(0x020BEC03),
- UINT32_C(0x02104AC7), UINT32_C(0x03FB64AC), UINT32_C(0x097C06BE),
- UINT32_C(0x05DF7C1D), UINT32_C(0x0EFD23AB), UINT32_C(0x042BC8D8),
- UINT32_C(0x02A649D7) } },
- { { UINT32_C(0x0643409F), UINT32_C(0x06A50E0A), UINT32_C(0x00C269C2),
- UINT32_C(0x0130B8C0), UINT32_C(0x0B25EAD2), UINT32_C(0x07A4A516),
- UINT32_C(0x0375B082), UINT32_C(0x0E197F8C), UINT32_C(0x0546B686),
- UINT32_C(0x0B8287C5), UINT32_C(0x04A367C1), UINT32_C(0x07DF58A1),
- UINT32_C(0x05B7DD15), UINT32_C(0x061763FD), UINT32_C(0x0E2DF8E8),
- UINT32_C(0x05ABFC51), UINT32_C(0x087018C8), UINT32_C(0x05935143),
- UINT32_C(0x05E9EFA4) },
- { UINT32_C(0x0AF2F29D), UINT32_C(0x0063F9B1), UINT32_C(0x0FB11A34),
- UINT32_C(0x02D7C22E), UINT32_C(0x08AF67E7), UINT32_C(0x005AC16C),
- UINT32_C(0x047EE080), UINT32_C(0x0B7677A2), UINT32_C(0x04500DDC),
- UINT32_C(0x0137CD80), UINT32_C(0x01CF2369), UINT32_C(0x0DE177B8),
- UINT32_C(0x018122DE), UINT32_C(0x00EDFC0C), UINT32_C(0x0048B9ED),
- UINT32_C(0x043633B7), UINT32_C(0x0666D33E), UINT32_C(0x00317E10),
- UINT32_C(0x066100C3) } },
- { { UINT32_C(0x037B93A2), UINT32_C(0x07917621), UINT32_C(0x048F411C),
- UINT32_C(0x04EF1E2A), UINT32_C(0x0FC8F91F), UINT32_C(0x04090E1D),
- UINT32_C(0x066F78F2), UINT32_C(0x0C2C0207), UINT32_C(0x065E2513),
- UINT32_C(0x0F03BADB), UINT32_C(0x03689AF4), UINT32_C(0x0FE959E2),
- UINT32_C(0x028B6A5E), UINT32_C(0x0101C577), UINT32_C(0x0C3A5192),
- UINT32_C(0x03042F53), UINT32_C(0x0E2A6A29), UINT32_C(0x0231095D),
- UINT32_C(0x06E29445) },
- { UINT32_C(0x07A00331), UINT32_C(0x041D85F7), UINT32_C(0x0D189E24),
- UINT32_C(0x0294578C), UINT32_C(0x04A9E7A3), UINT32_C(0x037F260A),
- UINT32_C(0x060D62BB), UINT32_C(0x07AED3DE), UINT32_C(0x0727FEAB),
- UINT32_C(0x0283C99C), UINT32_C(0x05A11B56), UINT32_C(0x08953348),
- UINT32_C(0x01A388E1), UINT32_C(0x028932F2), UINT32_C(0x0AFFD5A7),
- UINT32_C(0x042CF6C6), UINT32_C(0x072339BA), UINT32_C(0x06344724),
- UINT32_C(0x0395F757) } },
- { { UINT32_C(0x01328CE4), UINT32_C(0x01D69A89), UINT32_C(0x03D3B2E3),
- UINT32_C(0x0780829F), UINT32_C(0x0848A488), UINT32_C(0x057B85BD),
- UINT32_C(0x02051385), UINT32_C(0x06706AD6), UINT32_C(0x02D6482A),
- UINT32_C(0x0A8717D0), UINT32_C(0x05383AC5), UINT32_C(0x03250B87),
- UINT32_C(0x05C77D8D), UINT32_C(0x05198B6D), UINT32_C(0x03FACF90),
- UINT32_C(0x062058A1), UINT32_C(0x008F96B1), UINT32_C(0x01F29CAF),
- UINT32_C(0x00358EC7) },
- { UINT32_C(0x0B620A88), UINT32_C(0x06288694), UINT32_C(0x05B21FAC),
- UINT32_C(0x03F64B44), UINT32_C(0x0DBD251D), UINT32_C(0x06B0D130),
- UINT32_C(0x04314394), UINT32_C(0x02479C97), UINT32_C(0x003417DF),
- UINT32_C(0x0318B1D4), UINT32_C(0x0762DFD7), UINT32_C(0x0DDA6BF1),
- UINT32_C(0x0214A508), UINT32_C(0x0231DEBD), UINT32_C(0x0D8733B2),
- UINT32_C(0x02ACA66C), UINT32_C(0x05C275E4), UINT32_C(0x07A8A625),
- UINT32_C(0x001D2426) } },
- { { UINT32_C(0x0C95FF29), UINT32_C(0x0608C2C5), UINT32_C(0x0404108F),
- UINT32_C(0x03383226), UINT32_C(0x07F8CE0C), UINT32_C(0x0600859C),
- UINT32_C(0x04899A96), UINT32_C(0x00CCD8EA), UINT32_C(0x02796E7C),
- UINT32_C(0x0FB706CC), UINT32_C(0x0111E6FC), UINT32_C(0x027E2706),
- UINT32_C(0x03EBDDF3), UINT32_C(0x02838065), UINT32_C(0x0585FBC0),
- UINT32_C(0x07572ED5), UINT32_C(0x0907E1E4), UINT32_C(0x017E67B8),
- UINT32_C(0x041786F0) },
- { UINT32_C(0x04519732), UINT32_C(0x073D0689), UINT32_C(0x0DF32FF7),
- UINT32_C(0x01246800), UINT32_C(0x068478E9), UINT32_C(0x031DEA3C),
- UINT32_C(0x03E71E8F), UINT32_C(0x08C6C89E), UINT32_C(0x012CDD96),
- UINT32_C(0x0AEEE8F4), UINT32_C(0x0121A9C4), UINT32_C(0x01F73DAA),
- UINT32_C(0x033160E0), UINT32_C(0x062B3F6E), UINT32_C(0x081E3B9C),
- UINT32_C(0x029ED0A5), UINT32_C(0x05F0DBFB), UINT32_C(0x0765E7EB),
- UINT32_C(0x06026E18) } },
- },
- {
- { { UINT32_C(0x0ED2EB86), UINT32_C(0x073B24CD), UINT32_C(0x01308B7E),
- UINT32_C(0x001667D5), UINT32_C(0x06D840A4), UINT32_C(0x01CE15F3),
- UINT32_C(0x00EC4628), UINT32_C(0x0BE255D7), UINT32_C(0x039A76B9),
- UINT32_C(0x0CA76752), UINT32_C(0x02EA45FE), UINT32_C(0x0CB0A354),
- UINT32_C(0x019D90B7), UINT32_C(0x036C0B82), UINT32_C(0x07E353B2),
- UINT32_C(0x00B45E15), UINT32_C(0x0E1E3229), UINT32_C(0x06EED669),
- UINT32_C(0x07975597) },
- { UINT32_C(0x04B5DE1E), UINT32_C(0x05185A2C), UINT32_C(0x0F1C1594),
- UINT32_C(0x01D7FD5B), UINT32_C(0x0CD949EB), UINT32_C(0x02E191E5),
- UINT32_C(0x03295CCA), UINT32_C(0x02F97A05), UINT32_C(0x052209AD),
- UINT32_C(0x0C0AF1C4), UINT32_C(0x07F93AD2), UINT32_C(0x060F26C1),
- UINT32_C(0x0274993E), UINT32_C(0x023CDD4A), UINT32_C(0x08D9B938),
- UINT32_C(0x00D32B5E), UINT32_C(0x04FE5190), UINT32_C(0x01AB014D),
- UINT32_C(0x05DD64A0) } },
- { { UINT32_C(0x0C2CA70B), UINT32_C(0x0346AE90), UINT32_C(0x0F8387AC),
- UINT32_C(0x03ABE62A), UINT32_C(0x029DA053), UINT32_C(0x0041F61B),
- UINT32_C(0x02CBC0BF), UINT32_C(0x05243AE9), UINT32_C(0x0360C16B),
- UINT32_C(0x0C28A299), UINT32_C(0x0795D938), UINT32_C(0x02AC475A),
- UINT32_C(0x0113BEAF), UINT32_C(0x05A671E6), UINT32_C(0x05C8C591),
- UINT32_C(0x06924739), UINT32_C(0x02A54EEF), UINT32_C(0x02F274E3),
- UINT32_C(0x0049A1CD) },
- { UINT32_C(0x0426994D), UINT32_C(0x07F97B31), UINT32_C(0x0DA0C788),
- UINT32_C(0x04B6F8C8), UINT32_C(0x05463D1A), UINT32_C(0x07C155D5),
- UINT32_C(0x00BA793E), UINT32_C(0x0AB08953), UINT32_C(0x042C3976),
- UINT32_C(0x069C681F), UINT32_C(0x02ABCC5A), UINT32_C(0x024C8F72),
- UINT32_C(0x067DF148), UINT32_C(0x0180DD65), UINT32_C(0x042A4819),
- UINT32_C(0x01AFAAD4), UINT32_C(0x0334701F), UINT32_C(0x031ADC33),
- UINT32_C(0x03AA0140) } },
- { { UINT32_C(0x0BEE1F7B), UINT32_C(0x07EA5E6A), UINT32_C(0x06C716A1),
- UINT32_C(0x01C6DCD9), UINT32_C(0x00C62805), UINT32_C(0x06E99086),
- UINT32_C(0x047E4182), UINT32_C(0x04E699EA), UINT32_C(0x017F98AF),
- UINT32_C(0x0C64E476), UINT32_C(0x0464A2AE), UINT32_C(0x0AF646E7),
- UINT32_C(0x0734C8DA), UINT32_C(0x069B3D13), UINT32_C(0x0BD58EFB),
- UINT32_C(0x0572D3C4), UINT32_C(0x0889BAF4), UINT32_C(0x049A880A),
- UINT32_C(0x01790356) },
- { UINT32_C(0x0D71A4FA), UINT32_C(0x017475C1), UINT32_C(0x0B53C845),
- UINT32_C(0x00ED5EC3), UINT32_C(0x072B9DBC), UINT32_C(0x032C8366),
- UINT32_C(0x02B3D21C), UINT32_C(0x0E8E8016), UINT32_C(0x04B6FF58),
- UINT32_C(0x017276EC), UINT32_C(0x069855EF), UINT32_C(0x0342CFC2),
- UINT32_C(0x00D109A0), UINT32_C(0x07614A72), UINT32_C(0x09DC301B),
- UINT32_C(0x036B57F5), UINT32_C(0x06CB91C2), UINT32_C(0x03E8DF1A),
- UINT32_C(0x070FD727) } },
- { { UINT32_C(0x032574BE), UINT32_C(0x04115A04), UINT32_C(0x0F98172F),
- UINT32_C(0x04AEDED0), UINT32_C(0x02519CD4), UINT32_C(0x05A01A73),
- UINT32_C(0x06EEA282), UINT32_C(0x0BBAAC38), UINT32_C(0x02CC4028),
- UINT32_C(0x03AACD20), UINT32_C(0x01A067DD), UINT32_C(0x0AFED584),
- UINT32_C(0x06846B34), UINT32_C(0x01F4D8B2), UINT32_C(0x00AB5080),
- UINT32_C(0x02EFB0FB), UINT32_C(0x09F1C68E), UINT32_C(0x01829F05),
- UINT32_C(0x008F3C67) },
- { UINT32_C(0x062EC0F0), UINT32_C(0x04CAAFE4), UINT32_C(0x08147733),
- UINT32_C(0x038A422E), UINT32_C(0x0085656E), UINT32_C(0x02D1FFD4),
- UINT32_C(0x0731016E), UINT32_C(0x022AA6C1), UINT32_C(0x04385C24),
- UINT32_C(0x06B4D30A), UINT32_C(0x04FF86E3), UINT32_C(0x0540E9AE),
- UINT32_C(0x039185FE), UINT32_C(0x0278D41E), UINT32_C(0x05EEE86F),
- UINT32_C(0x05D399FD), UINT32_C(0x07D5B982), UINT32_C(0x0364A589),
- UINT32_C(0x07E1654F) } },
- { { UINT32_C(0x0D8CB3CC), UINT32_C(0x06C254BF), UINT32_C(0x0FBC2C5D),
- UINT32_C(0x07F746F2), UINT32_C(0x07E4259D), UINT32_C(0x022B49C4),
- UINT32_C(0x04CE0ECE), UINT32_C(0x095F3130), UINT32_C(0x064022C7),
- UINT32_C(0x076A7307), UINT32_C(0x074FEA23), UINT32_C(0x09CDD626),
- UINT32_C(0x0612A401), UINT32_C(0x0562E226), UINT32_C(0x027BA2E0),
- UINT32_C(0x01D98EB5), UINT32_C(0x0A54B2FF), UINT32_C(0x0345BAFC),
- UINT32_C(0x05CE5083) },
- { UINT32_C(0x082FB619), UINT32_C(0x01E59C7B), UINT32_C(0x07C56C18),
- UINT32_C(0x0594E677), UINT32_C(0x0EBA4C47), UINT32_C(0x01F1C6FF),
- UINT32_C(0x016B9F48), UINT32_C(0x0443B057), UINT32_C(0x017930FC),
- UINT32_C(0x0D94B0A6), UINT32_C(0x0501D4ED), UINT32_C(0x0EB5EA2F),
- UINT32_C(0x03F2D8D0), UINT32_C(0x04A1DA92), UINT32_C(0x0A702231),
- UINT32_C(0x063C2830), UINT32_C(0x06F5E127), UINT32_C(0x06BE79CE),
- UINT32_C(0x06600B2F) } },
- { { UINT32_C(0x0F26ECDA), UINT32_C(0x0052168B), UINT32_C(0x0CBDB9E3),
- UINT32_C(0x052FFD0A), UINT32_C(0x02FDCD7B), UINT32_C(0x05791EA2),
- UINT32_C(0x03DF5472), UINT32_C(0x0544715D), UINT32_C(0x032F4FBD),
- UINT32_C(0x05DA4E99), UINT32_C(0x000977D5), UINT32_C(0x0AEE5E82),
- UINT32_C(0x07B5A2B7), UINT32_C(0x02494676), UINT32_C(0x0B416152),
- UINT32_C(0x03AC76C7), UINT32_C(0x0B21FDC6), UINT32_C(0x04ECC50E),
- UINT32_C(0x02A4E6AB) },
- { UINT32_C(0x031E0BB4), UINT32_C(0x05FC9964), UINT32_C(0x014AC466),
- UINT32_C(0x038F82D0), UINT32_C(0x0C0B56B8), UINT32_C(0x0217513C),
- UINT32_C(0x0498C923), UINT32_C(0x076EEC28), UINT32_C(0x03824F59),
- UINT32_C(0x0B7B1382), UINT32_C(0x056FE399), UINT32_C(0x00794841),
- UINT32_C(0x076FEEC8), UINT32_C(0x0219F413), UINT32_C(0x04ABDD19),
- UINT32_C(0x04CE2F28), UINT32_C(0x0F2E86F7), UINT32_C(0x02F472AF),
- UINT32_C(0x06774781) } },
- { { UINT32_C(0x0CEBC7BE), UINT32_C(0x00221686), UINT32_C(0x04E2E2B5),
- UINT32_C(0x02865641), UINT32_C(0x0400F945), UINT32_C(0x01CF69C4),
- UINT32_C(0x002D7B22), UINT32_C(0x04D5A98C), UINT32_C(0x075AA74B),
- UINT32_C(0x0926F727), UINT32_C(0x0318AD6B), UINT32_C(0x009AE911),
- UINT32_C(0x00216BA5), UINT32_C(0x0794C1D5), UINT32_C(0x047BB387),
- UINT32_C(0x05890517), UINT32_C(0x0C438287), UINT32_C(0x04D6AF1C),
- UINT32_C(0x010C34E7) },
- { UINT32_C(0x02E3859D), UINT32_C(0x06690EFE), UINT32_C(0x0F063DCD),
- UINT32_C(0x068C490B), UINT32_C(0x06DE5321), UINT32_C(0x0225E5EC),
- UINT32_C(0x0573AFDE), UINT32_C(0x0C5AD59A), UINT32_C(0x064D175A),
- UINT32_C(0x09D71327), UINT32_C(0x03D7526B), UINT32_C(0x04C7D696),
- UINT32_C(0x05C7C0BF), UINT32_C(0x04314949), UINT32_C(0x064EA7B0),
- UINT32_C(0x008652D7), UINT32_C(0x0EA31279), UINT32_C(0x0668F188),
- UINT32_C(0x035A0886) } },
- { { UINT32_C(0x02EB8133), UINT32_C(0x03EC558C), UINT32_C(0x088B2CEF),
- UINT32_C(0x008352FC), UINT32_C(0x0ECF2FB1), UINT32_C(0x01F0E6BB),
- UINT32_C(0x023E4A68), UINT32_C(0x0B9CC299), UINT32_C(0x02937BC1),
- UINT32_C(0x0A4FE033), UINT32_C(0x03BAB078), UINT32_C(0x078C8608),
- UINT32_C(0x000D53E7), UINT32_C(0x06DA1D39), UINT32_C(0x05E14C61),
- UINT32_C(0x035624BE), UINT32_C(0x06669427), UINT32_C(0x079FAB65),
- UINT32_C(0x0663AC20) },
- { UINT32_C(0x06835A15), UINT32_C(0x013B136D), UINT32_C(0x08DB323F),
- UINT32_C(0x068809A4), UINT32_C(0x02A3957E), UINT32_C(0x0081A010),
- UINT32_C(0x06B7C838), UINT32_C(0x074F156F), UINT32_C(0x00F3A4DB),
- UINT32_C(0x07ADF165), UINT32_C(0x05A07A0A), UINT32_C(0x0585D310),
- UINT32_C(0x02A4FAF9), UINT32_C(0x03A5C451), UINT32_C(0x00426908),
- UINT32_C(0x03C76306), UINT32_C(0x0D3289C2), UINT32_C(0x04FD8A7B),
- UINT32_C(0x03974EFE) } },
- { { UINT32_C(0x01D85118), UINT32_C(0x03F039A9), UINT32_C(0x0A744F66),
- UINT32_C(0x00B874D3), UINT32_C(0x0AD31A3A), UINT32_C(0x07A3C5F8),
- UINT32_C(0x045FFFF5), UINT32_C(0x023754A5), UINT32_C(0x02E38CB8),
- UINT32_C(0x05910E6C), UINT32_C(0x01773ED0), UINT32_C(0x0835A72A),
- UINT32_C(0x01BE848A), UINT32_C(0x07BD444B), UINT32_C(0x0B4AFA36),
- UINT32_C(0x03B51CEC), UINT32_C(0x076A82F4), UINT32_C(0x049B5424),
- UINT32_C(0x01EDBBC3) },
- { UINT32_C(0x0D472029), UINT32_C(0x07322E8C), UINT32_C(0x0891E31F),
- UINT32_C(0x0598F9A4), UINT32_C(0x0B8A6C89), UINT32_C(0x065A918E),
- UINT32_C(0x01B36F21), UINT32_C(0x05650472), UINT32_C(0x053A7D69),
- UINT32_C(0x05F09FDE), UINT32_C(0x03CE6055), UINT32_C(0x017487DC),
- UINT32_C(0x01B03227), UINT32_C(0x013D4913), UINT32_C(0x096CA6AE),
- UINT32_C(0x000E46D4), UINT32_C(0x07F35B2C), UINT32_C(0x06FDC86A),
- UINT32_C(0x0191F319) } },
- { { UINT32_C(0x0CE12393), UINT32_C(0x015F4FB3), UINT32_C(0x0C3E8E50),
- UINT32_C(0x06CE6B2D), UINT32_C(0x0B3C1693), UINT32_C(0x045162F6),
- UINT32_C(0x0407EFF6), UINT32_C(0x00A9135E), UINT32_C(0x047CF46F),
- UINT32_C(0x04E91DC4), UINT32_C(0x036B9A3C), UINT32_C(0x0134193D),
- UINT32_C(0x003E5C05), UINT32_C(0x00082BD9), UINT32_C(0x067D8D47),
- UINT32_C(0x02764530), UINT32_C(0x01E6C320), UINT32_C(0x04A28C2A),
- UINT32_C(0x048FBA5C) },
- { UINT32_C(0x0CE5DBF5), UINT32_C(0x0385772C), UINT32_C(0x019E313F),
- UINT32_C(0x073071A7), UINT32_C(0x0F5FC824), UINT32_C(0x02D63EF3),
- UINT32_C(0x02B70267), UINT32_C(0x0A6BE174), UINT32_C(0x076EA84E),
- UINT32_C(0x0FA0EBFC), UINT32_C(0x06D310F3), UINT32_C(0x01962AC7),
- UINT32_C(0x0209883D), UINT32_C(0x03B86C97), UINT32_C(0x00441CDD),
- UINT32_C(0x0066501C), UINT32_C(0x03267C1F), UINT32_C(0x03EAC5C9),
- UINT32_C(0x00069F5A) } },
- { { UINT32_C(0x01D1EEDB), UINT32_C(0x0706D366), UINT32_C(0x04DB59F7),
- UINT32_C(0x03130058), UINT32_C(0x0FBF1E90), UINT32_C(0x02990341),
- UINT32_C(0x052D42D0), UINT32_C(0x0D9F883C), UINT32_C(0x01C3CC5F),
- UINT32_C(0x0602F8E0), UINT32_C(0x0719E908), UINT32_C(0x0152A103),
- UINT32_C(0x05A33891), UINT32_C(0x0095E49C), UINT32_C(0x07DC00AE),
- UINT32_C(0x00D04AA8), UINT32_C(0x034051A0), UINT32_C(0x01C589DC),
- UINT32_C(0x044769AA) },
- { UINT32_C(0x05A4238D), UINT32_C(0x038BBADC), UINT32_C(0x024C6D7A),
- UINT32_C(0x058D2A82), UINT32_C(0x0BE67DEB), UINT32_C(0x057F5E80),
- UINT32_C(0x055D31EA), UINT32_C(0x0DB49C5A), UINT32_C(0x070BEC2C),
- UINT32_C(0x0F3322C2), UINT32_C(0x06C3108C), UINT32_C(0x0A1130EB),
- UINT32_C(0x01DE1843), UINT32_C(0x002476B9), UINT32_C(0x0C1602A0),
- UINT32_C(0x020FD705), UINT32_C(0x0E87B144), UINT32_C(0x00271FD2),
- UINT32_C(0x02A1E7C8) } },
- { { UINT32_C(0x0BB71E17), UINT32_C(0x00B697E6), UINT32_C(0x027C50D2),
- UINT32_C(0x02FF8F72), UINT32_C(0x052B77CA), UINT32_C(0x02997C16),
- UINT32_C(0x013C0178), UINT32_C(0x0F7FCEE6), UINT32_C(0x040B66E5),
- UINT32_C(0x03A69C37), UINT32_C(0x02E55D76), UINT32_C(0x00F908D4),
- UINT32_C(0x052718AB), UINT32_C(0x0076528F), UINT32_C(0x0306D84E),
- UINT32_C(0x07EBCA7C), UINT32_C(0x01165F7E), UINT32_C(0x01DB45A9),
- UINT32_C(0x067FCC94) },
- { UINT32_C(0x0791633D), UINT32_C(0x047BD9A1), UINT32_C(0x0A26D9CC),
- UINT32_C(0x000BE536), UINT32_C(0x0F022B81), UINT32_C(0x064B6F3C),
- UINT32_C(0x03B7DA09), UINT32_C(0x0F632491), UINT32_C(0x02A9B2EF),
- UINT32_C(0x029A6C74), UINT32_C(0x039178C1), UINT32_C(0x06C1B980),
- UINT32_C(0x025426C4), UINT32_C(0x00AC18E2), UINT32_C(0x0854C009),
- UINT32_C(0x07A990A9), UINT32_C(0x0BA40528), UINT32_C(0x05C4D8A8),
- UINT32_C(0x0628B343) } },
- { { UINT32_C(0x07812A25), UINT32_C(0x0179F4F9), UINT32_C(0x09DE2C08),
- UINT32_C(0x02F4F1F9), UINT32_C(0x04F48E6A), UINT32_C(0x07549212),
- UINT32_C(0x016DCA05), UINT32_C(0x07A3A534), UINT32_C(0x0359AADF),
- UINT32_C(0x0E969384), UINT32_C(0x061DBB0C), UINT32_C(0x0E368BE3),
- UINT32_C(0x07060163), UINT32_C(0x07CA82E3), UINT32_C(0x07332717),
- UINT32_C(0x0002DFB2), UINT32_C(0x03AD0A18), UINT32_C(0x0417995E),
- UINT32_C(0x0326668F) },
- { UINT32_C(0x09EF75E3), UINT32_C(0x07B04772), UINT32_C(0x0852DCD8),
- UINT32_C(0x06097708), UINT32_C(0x0B957C2C), UINT32_C(0x038B98A1),
- UINT32_C(0x02B82598), UINT32_C(0x0F132C73), UINT32_C(0x04CE431B),
- UINT32_C(0x07D4CBE1), UINT32_C(0x049BA972), UINT32_C(0x00D3788D),
- UINT32_C(0x07EDE5A2), UINT32_C(0x0635F8BD), UINT32_C(0x0EB9AB1A),
- UINT32_C(0x02C621B4), UINT32_C(0x0BCBFF41), UINT32_C(0x0439D1F9),
- UINT32_C(0x003044A8) } },
- { { UINT32_C(0x0CF8D334), UINT32_C(0x037C1C48), UINT32_C(0x05CD52D5),
- UINT32_C(0x047578F0), UINT32_C(0x0BE7BC07), UINT32_C(0x06E68827),
- UINT32_C(0x076445CB), UINT32_C(0x0FEBF611), UINT32_C(0x00142073),
- UINT32_C(0x029F031E), UINT32_C(0x076C6434), UINT32_C(0x0F98F9D0),
- UINT32_C(0x034E14D3), UINT32_C(0x038E0268), UINT32_C(0x0191305B),
- UINT32_C(0x032A0200), UINT32_C(0x05EF4C75), UINT32_C(0x02826331),
- UINT32_C(0x04D82A88) },
- { UINT32_C(0x0D51E170), UINT32_C(0x00D3F07F), UINT32_C(0x08365D15),
- UINT32_C(0x0781A3A1), UINT32_C(0x0D4BE663), UINT32_C(0x00175259),
- UINT32_C(0x000C1FA1), UINT32_C(0x0F00FCE0), UINT32_C(0x00299B52),
- UINT32_C(0x0C7D7E01), UINT32_C(0x052A3C59), UINT32_C(0x07C9CF44),
- UINT32_C(0x05E7EE2B), UINT32_C(0x035E7031), UINT32_C(0x0FE2CB7C),
- UINT32_C(0x0403D2B4), UINT32_C(0x0FC9A748), UINT32_C(0x07D461AF),
- UINT32_C(0x006E35B5) } },
- { { UINT32_C(0x0594D02E), UINT32_C(0x075E6F14), UINT32_C(0x03360822),
- UINT32_C(0x03E7DDDB), UINT32_C(0x0F1C6110), UINT32_C(0x072483CF),
- UINT32_C(0x03ECF221), UINT32_C(0x0D658C87), UINT32_C(0x060AC74F),
- UINT32_C(0x0F51CC4C), UINT32_C(0x03EB69F7), UINT32_C(0x07B2F64B),
- UINT32_C(0x0242F07B), UINT32_C(0x058E5984), UINT32_C(0x03A0B7A4),
- UINT32_C(0x03CE806B), UINT32_C(0x06139B85), UINT32_C(0x01DAAFE3),
- UINT32_C(0x0130F7E5) },
- { UINT32_C(0x020891BB), UINT32_C(0x077E28D4), UINT32_C(0x0AAEAA8D),
- UINT32_C(0x00B2D799), UINT32_C(0x0E10388A), UINT32_C(0x001DFD31),
- UINT32_C(0x059F85F1), UINT32_C(0x00BC7E55), UINT32_C(0x05309429),
- UINT32_C(0x0FEDF8A8), UINT32_C(0x06B52B0D), UINT32_C(0x0E3F8A44),
- UINT32_C(0x07A8E2A2), UINT32_C(0x07D5866C), UINT32_C(0x02DBCD7C),
- UINT32_C(0x02895FBE), UINT32_C(0x0F66BDAD), UINT32_C(0x048C3CAD),
- UINT32_C(0x078587AD) } },
- { { UINT32_C(0x0B1B7656), UINT32_C(0x02A1E440), UINT32_C(0x04EF5EA7),
- UINT32_C(0x059FA6A2), UINT32_C(0x0C68CD6D), UINT32_C(0x005E8043),
- UINT32_C(0x01AE592B), UINT32_C(0x00DD5F88), UINT32_C(0x0559B430),
- UINT32_C(0x0BF3DF59), UINT32_C(0x011CBD52), UINT32_C(0x0DDDE17B),
- UINT32_C(0x031D26D8), UINT32_C(0x0148FB57), UINT32_C(0x04EDBF2D),
- UINT32_C(0x07220D0D), UINT32_C(0x0F7B0807), UINT32_C(0x076B1F6E),
- UINT32_C(0x0306320E) },
- { UINT32_C(0x07EEE80E), UINT32_C(0x0754C15A), UINT32_C(0x093487F6),
- UINT32_C(0x023D5CA0), UINT32_C(0x00BD77C2), UINT32_C(0x0271EF5D),
- UINT32_C(0x04FAEAB7), UINT32_C(0x07EBA560), UINT32_C(0x015A18D8),
- UINT32_C(0x039861D4), UINT32_C(0x041FD3C8), UINT32_C(0x0D5863CB),
- UINT32_C(0x066C5F53), UINT32_C(0x06380D15), UINT32_C(0x0E825C9F),
- UINT32_C(0x00BA76BE), UINT32_C(0x0BC4E3B8), UINT32_C(0x06216B12),
- UINT32_C(0x03B4F0D4) } },
- },
- {
- { { UINT32_C(0x0201C48B), UINT32_C(0x073C85A8), UINT32_C(0x095DC61E),
- UINT32_C(0x05F14993), UINT32_C(0x0123BD40), UINT32_C(0x05907610),
- UINT32_C(0x046FBB4C), UINT32_C(0x0A0F3B82), UINT32_C(0x078A34BB),
- UINT32_C(0x003DB127), UINT32_C(0x052D9AD5), UINT32_C(0x05103EE9),
- UINT32_C(0x0465988A), UINT32_C(0x005F3641), UINT32_C(0x085495F9),
- UINT32_C(0x069A8F20), UINT32_C(0x064AA21B), UINT32_C(0x007CCB01),
- UINT32_C(0x04384B61) },
- { UINT32_C(0x051DE678), UINT32_C(0x07820FBE), UINT32_C(0x063426A0),
- UINT32_C(0x01B262F0), UINT32_C(0x0B0B9013), UINT32_C(0x045C8465),
- UINT32_C(0x0240C64E), UINT32_C(0x0DDA697F), UINT32_C(0x0201A64C),
- UINT32_C(0x016B17DF), UINT32_C(0x065E1757), UINT32_C(0x0F6B7334),
- UINT32_C(0x07ED2866), UINT32_C(0x028D6370), UINT32_C(0x0E25340A),
- UINT32_C(0x002693F4), UINT32_C(0x07D889A8), UINT32_C(0x06B215F7),
- UINT32_C(0x062B5959) } },
- { { UINT32_C(0x0D9C3B89), UINT32_C(0x077CC1DC), UINT32_C(0x013DDAA7),
- UINT32_C(0x0111C6F8), UINT32_C(0x0577407F), UINT32_C(0x01FF52EA),
- UINT32_C(0x06D56CA6), UINT32_C(0x06331227), UINT32_C(0x03AB576F),
- UINT32_C(0x0CD7FD4F), UINT32_C(0x06AF74C0), UINT32_C(0x0AD52465),
- UINT32_C(0x041865E8), UINT32_C(0x0546A928), UINT32_C(0x00FE8F9D),
- UINT32_C(0x07C2CDD8), UINT32_C(0x0C0D3434), UINT32_C(0x030F8525),
- UINT32_C(0x05B51E81) },
- { UINT32_C(0x08A5170B), UINT32_C(0x074FC061), UINT32_C(0x0060E606),
- UINT32_C(0x017D8D1E), UINT32_C(0x0A8E0395), UINT32_C(0x0428DCF1),
- UINT32_C(0x046F46B8), UINT32_C(0x05E254D7), UINT32_C(0x05D05211),
- UINT32_C(0x0B46AD84), UINT32_C(0x03446BA1), UINT32_C(0x00CA5FED),
- UINT32_C(0x02A8C267), UINT32_C(0x0570EC98), UINT32_C(0x0750367D),
- UINT32_C(0x0362D78B), UINT32_C(0x0C84DA94), UINT32_C(0x07AF8D8F),
- UINT32_C(0x0583AA8B) } },
- { { UINT32_C(0x09126FAC), UINT32_C(0x06B05898), UINT32_C(0x0872DF85),
- UINT32_C(0x048C3352), UINT32_C(0x0331E5B3), UINT32_C(0x076671FB),
- UINT32_C(0x02076524), UINT32_C(0x0492A4A3), UINT32_C(0x06D57C7C),
- UINT32_C(0x052A5C41), UINT32_C(0x052CA0DF), UINT32_C(0x0E7D0224),
- UINT32_C(0x07241BC6), UINT32_C(0x0234848A), UINT32_C(0x048CE05E),
- UINT32_C(0x01B286B5), UINT32_C(0x0B054813), UINT32_C(0x02F6EDFC),
- UINT32_C(0x0250A4D8) },
- { UINT32_C(0x0831CD9D), UINT32_C(0x04B04313), UINT32_C(0x0F484946),
- UINT32_C(0x03B996C8), UINT32_C(0x00F547BB), UINT32_C(0x007A0AA7),
- UINT32_C(0x065BBAA5), UINT32_C(0x014C49BC), UINT32_C(0x03D6CABB),
- UINT32_C(0x01EF46B3), UINT32_C(0x05A5D159), UINT32_C(0x0EDE3DB4),
- UINT32_C(0x00D1B3A0), UINT32_C(0x02F97DFA), UINT32_C(0x0D68EB87),
- UINT32_C(0x06CE81C0), UINT32_C(0x00D73B27), UINT32_C(0x0342609A),
- UINT32_C(0x019C049C) } },
- { { UINT32_C(0x08BC45E5), UINT32_C(0x015B0C25), UINT32_C(0x0B2A43B0),
- UINT32_C(0x00067BBC), UINT32_C(0x07B24685), UINT32_C(0x0046140C),
- UINT32_C(0x0157806B), UINT32_C(0x049AE2AD), UINT32_C(0x0113F8DF),
- UINT32_C(0x06BBA162), UINT32_C(0x0534E07B), UINT32_C(0x086988E1),
- UINT32_C(0x00E2C213), UINT32_C(0x0513FA95), UINT32_C(0x0EC2A78F),
- UINT32_C(0x02E28447), UINT32_C(0x011B9FFF), UINT32_C(0x01506FAF),
- UINT32_C(0x07B4C5A9) },
- { UINT32_C(0x0AE71753), UINT32_C(0x0151FA30), UINT32_C(0x091691B4),
- UINT32_C(0x02ACCC22), UINT32_C(0x0BA74B18), UINT32_C(0x0073B635),
- UINT32_C(0x02F0EB55), UINT32_C(0x0CC9DF51), UINT32_C(0x0784FCDA),
- UINT32_C(0x0BFAD098), UINT32_C(0x03F5BFD6), UINT32_C(0x006AD5C5),
- UINT32_C(0x014F12F5), UINT32_C(0x0745527A), UINT32_C(0x03A6506B),
- UINT32_C(0x015CF2C8), UINT32_C(0x039A3185), UINT32_C(0x077CD12B),
- UINT32_C(0x02A9BAF3) } },
- { { UINT32_C(0x00D9229F), UINT32_C(0x039D37CD), UINT32_C(0x0948ECC6),
- UINT32_C(0x0072BCB0), UINT32_C(0x0A458017), UINT32_C(0x038A159B),
- UINT32_C(0x0368034D), UINT32_C(0x0B0315FA), UINT32_C(0x01756900),
- UINT32_C(0x04149285), UINT32_C(0x03FFBD8A), UINT32_C(0x0079E774),
- UINT32_C(0x0702A2CF), UINT32_C(0x0641C3A8), UINT32_C(0x0F3751BA),
- UINT32_C(0x028EDF14), UINT32_C(0x090F681A), UINT32_C(0x012CF177),
- UINT32_C(0x04614034) },
- { UINT32_C(0x04E4C072), UINT32_C(0x07E207E1), UINT32_C(0x02D8F8F8),
- UINT32_C(0x013BFA68), UINT32_C(0x0CC798F9), UINT32_C(0x014BAAD6),
- UINT32_C(0x023BD550), UINT32_C(0x0919F8D1), UINT32_C(0x03C00ADA),
- UINT32_C(0x0758236E), UINT32_C(0x058602C2), UINT32_C(0x0FA0FE24),
- UINT32_C(0x01A8C5A6), UINT32_C(0x0026B4C4), UINT32_C(0x0534F014),
- UINT32_C(0x02CF2A7F), UINT32_C(0x00192714), UINT32_C(0x04B51417),
- UINT32_C(0x0168C607) } },
- { { UINT32_C(0x019403A6), UINT32_C(0x04E6BA92), UINT32_C(0x0065202D),
- UINT32_C(0x06FDAE5F), UINT32_C(0x0AD1C130), UINT32_C(0x05C03BED),
- UINT32_C(0x00D7CFCE), UINT32_C(0x02B63E74), UINT32_C(0x06CD8D97),
- UINT32_C(0x00E7608A), UINT32_C(0x05009FCD), UINT32_C(0x01026095),
- UINT32_C(0x058890EC), UINT32_C(0x0662F635), UINT32_C(0x0F16F3A2),
- UINT32_C(0x06B88A1B), UINT32_C(0x000D681A), UINT32_C(0x05689B12),
- UINT32_C(0x0620658C) },
- { UINT32_C(0x0B48EFBA), UINT32_C(0x01574FA6), UINT32_C(0x0FC77D17),
- UINT32_C(0x06CDF2A2), UINT32_C(0x0DCEA8A9), UINT32_C(0x00B1DE26),
- UINT32_C(0x009A7C7A), UINT32_C(0x0435CC54), UINT32_C(0x06E8AF2E),
- UINT32_C(0x09AFC5BC), UINT32_C(0x05124055), UINT32_C(0x045BF6E2),
- UINT32_C(0x0536C8AD), UINT32_C(0x073FE4CD), UINT32_C(0x0A467A40),
- UINT32_C(0x03EB6B38), UINT32_C(0x05F039C6), UINT32_C(0x00622055),
- UINT32_C(0x045DF262) } },
- { { UINT32_C(0x0C5E165D), UINT32_C(0x00A8610A), UINT32_C(0x062AF616),
- UINT32_C(0x055190B9), UINT32_C(0x0F988454), UINT32_C(0x0395472A),
- UINT32_C(0x036DCD3E), UINT32_C(0x0FDA6187), UINT32_C(0x036EC91D),
- UINT32_C(0x0E66FCFC), UINT32_C(0x077BBD1F), UINT32_C(0x0DF3E1C9),
- UINT32_C(0x040454AC), UINT32_C(0x03004F37), UINT32_C(0x0CBDED62),
- UINT32_C(0x03DD5570), UINT32_C(0x05724DFF), UINT32_C(0x07B6002A),
- UINT32_C(0x00B93C70) },
- { UINT32_C(0x06C8A9BC), UINT32_C(0x032D8B60), UINT32_C(0x0C0850D6),
- UINT32_C(0x06C94F36), UINT32_C(0x0649CD3A), UINT32_C(0x000C0E51),
- UINT32_C(0x07B40760), UINT32_C(0x0BFA6092), UINT32_C(0x019FB910),
- UINT32_C(0x092A27FF), UINT32_C(0x02D6F975), UINT32_C(0x0E910EDA),
- UINT32_C(0x01FFB3D4), UINT32_C(0x01814FFF), UINT32_C(0x0985A6F8),
- UINT32_C(0x06787CA6), UINT32_C(0x0B7B7FC6), UINT32_C(0x01532265),
- UINT32_C(0x06228702) } },
- { { UINT32_C(0x0391B195), UINT32_C(0x01F1A68F), UINT32_C(0x0AB9DD28),
- UINT32_C(0x000B690E), UINT32_C(0x0C4FD58F), UINT32_C(0x05292C46),
- UINT32_C(0x0017D075), UINT32_C(0x010E0044), UINT32_C(0x0709FE41),
- UINT32_C(0x02F0CD13), UINT32_C(0x003D99BE), UINT32_C(0x0E6F68D8),
- UINT32_C(0x04608708), UINT32_C(0x05B1F159), UINT32_C(0x0A4CFC70),
- UINT32_C(0x02FB2946), UINT32_C(0x076D32E5), UINT32_C(0x0482F0ED),
- UINT32_C(0x06ED3305) },
- { UINT32_C(0x05C4416F), UINT32_C(0x02270E15), UINT32_C(0x073143E0),
- UINT32_C(0x02F4151F), UINT32_C(0x099069A7), UINT32_C(0x05437AEB),
- UINT32_C(0x027A90CA), UINT32_C(0x0A75E48C), UINT32_C(0x013FC627),
- UINT32_C(0x0300361B), UINT32_C(0x072745C2), UINT32_C(0x0C9DD555),
- UINT32_C(0x05D86308), UINT32_C(0x03713AF4), UINT32_C(0x01AF9EBC),
- UINT32_C(0x0157F18F), UINT32_C(0x0E008EAF), UINT32_C(0x0409010B),
- UINT32_C(0x074F85AA) } },
- { { UINT32_C(0x045C5FF5), UINT32_C(0x046845EE), UINT32_C(0x074B8893),
- UINT32_C(0x036C56E2), UINT32_C(0x0CC7B43B), UINT32_C(0x030C1789),
- UINT32_C(0x05916A34), UINT32_C(0x0F2AFB7C), UINT32_C(0x0154EDEB),
- UINT32_C(0x0407BF3E), UINT32_C(0x05362D80), UINT32_C(0x0CCA97B1),
- UINT32_C(0x041BFF6D), UINT32_C(0x05DAE466), UINT32_C(0x07D9D691),
- UINT32_C(0x023DBF89), UINT32_C(0x05162F52), UINT32_C(0x000CBF57),
- UINT32_C(0x0154EDFD) },
- { UINT32_C(0x08BF712A), UINT32_C(0x06009B91), UINT32_C(0x0AFFBD38),
- UINT32_C(0x03FD6332), UINT32_C(0x06CD1DC8), UINT32_C(0x06C678BF),
- UINT32_C(0x0040E5CE), UINT32_C(0x02743457), UINT32_C(0x060DF50E),
- UINT32_C(0x0691C947), UINT32_C(0x0746D675), UINT32_C(0x0D68B325),
- UINT32_C(0x0290D55C), UINT32_C(0x015B144C), UINT32_C(0x05A0332F),
- UINT32_C(0x0563DB53), UINT32_C(0x04CED890), UINT32_C(0x04AC67C8),
- UINT32_C(0x04387D35) } },
- { { UINT32_C(0x0A66FBB8), UINT32_C(0x05FDBF97), UINT32_C(0x0A47124E),
- UINT32_C(0x03FED0AF), UINT32_C(0x082B44B9), UINT32_C(0x0244ADCE),
- UINT32_C(0x05980D8A), UINT32_C(0x0687D615), UINT32_C(0x07E4662D),
- UINT32_C(0x03F2180A), UINT32_C(0x04BA4DB6), UINT32_C(0x03FE8141),
- UINT32_C(0x04B2BC20), UINT32_C(0x006DF40A), UINT32_C(0x0AB2698D),
- UINT32_C(0x0365D173), UINT32_C(0x08DE4017), UINT32_C(0x079E6BA2),
- UINT32_C(0x02C7A033) },
- { UINT32_C(0x075570A1), UINT32_C(0x06A48901), UINT32_C(0x0492AC74),
- UINT32_C(0x077D2844), UINT32_C(0x0DB87BFD), UINT32_C(0x01D218B2),
- UINT32_C(0x0522DA69), UINT32_C(0x0B4F7CF4), UINT32_C(0x00841BC4),
- UINT32_C(0x0E420155), UINT32_C(0x00BDBB35), UINT32_C(0x0BB5E945),
- UINT32_C(0x06FE4123), UINT32_C(0x0435B025), UINT32_C(0x0ACCEA16),
- UINT32_C(0x00BE381C), UINT32_C(0x0C3F4D0D), UINT32_C(0x03862E1B),
- UINT32_C(0x04A46652) } },
- { { UINT32_C(0x009B3F23), UINT32_C(0x00CFBD75), UINT32_C(0x069BE715),
- UINT32_C(0x009C9678), UINT32_C(0x013F2EB4), UINT32_C(0x04EE1278),
- UINT32_C(0x06387FDD), UINT32_C(0x0329F9F1), UINT32_C(0x048E212F),
- UINT32_C(0x0F24F073), UINT32_C(0x008F0FD5), UINT32_C(0x02F3DAFE),
- UINT32_C(0x039C6160), UINT32_C(0x018F4D1D), UINT32_C(0x0E9D0F18),
- UINT32_C(0x066F0916), UINT32_C(0x09931852), UINT32_C(0x040EEBEA),
- UINT32_C(0x032448BB) },
- { UINT32_C(0x0C226E2C), UINT32_C(0x07706840), UINT32_C(0x0D3C1C34),
- UINT32_C(0x07E4BA61), UINT32_C(0x0A51E4A1), UINT32_C(0x038E00FB),
- UINT32_C(0x06E25F2A), UINT32_C(0x0C263EC1), UINT32_C(0x078D29D8),
- UINT32_C(0x07C7272D), UINT32_C(0x0572E10B), UINT32_C(0x0B83C0DC),
- UINT32_C(0x02179CDB), UINT32_C(0x066C84E3), UINT32_C(0x07675170),
- UINT32_C(0x00BDF2F6), UINT32_C(0x0F52477D), UINT32_C(0x00FE3151),
- UINT32_C(0x05460029) } },
- { { UINT32_C(0x0DA35EBF), UINT32_C(0x066B421E), UINT32_C(0x07116B3C),
- UINT32_C(0x077330D7), UINT32_C(0x0CE4D316), UINT32_C(0x027318E8),
- UINT32_C(0x04CA0B0C), UINT32_C(0x06EFBBCB), UINT32_C(0x027FF80D),
- UINT32_C(0x07B56250), UINT32_C(0x03FBF443), UINT32_C(0x0E5E86E3),
- UINT32_C(0x01050837), UINT32_C(0x027F8C63), UINT32_C(0x0040889F),
- UINT32_C(0x0233D7DC), UINT32_C(0x085C1EB3), UINT32_C(0x0190948B),
- UINT32_C(0x02A42839) },
- { UINT32_C(0x046020F0), UINT32_C(0x04A9DB75), UINT32_C(0x0C1F003A),
- UINT32_C(0x05C091F8), UINT32_C(0x069D2F26), UINT32_C(0x05CBE28A),
- UINT32_C(0x00B98CA0), UINT32_C(0x0C44F77C), UINT32_C(0x06591FB2),
- UINT32_C(0x0336AA95), UINT32_C(0x05A28AC0), UINT32_C(0x0A8AC670),
- UINT32_C(0x0735C3E5), UINT32_C(0x049911B7), UINT32_C(0x04F28112),
- UINT32_C(0x0532B634), UINT32_C(0x00A3E84F), UINT32_C(0x06EA385D),
- UINT32_C(0x01F2A03A) } },
- { { UINT32_C(0x06A09384), UINT32_C(0x0260C3CA), UINT32_C(0x092529A6),
- UINT32_C(0x016D77CF), UINT32_C(0x0B8E2D9A), UINT32_C(0x01055E02),
- UINT32_C(0x055BC4FD), UINT32_C(0x0CA2C0AF), UINT32_C(0x03A4ABF9),
- UINT32_C(0x0290D54C), UINT32_C(0x07B6E3EE), UINT32_C(0x07074346),
- UINT32_C(0x047E1F90), UINT32_C(0x06D2B228), UINT32_C(0x064225A4),
- UINT32_C(0x06F125F2), UINT32_C(0x0D66264B), UINT32_C(0x01B0F052),
- UINT32_C(0x070B7573) },
- { UINT32_C(0x0B2264B8), UINT32_C(0x04D4A619), UINT32_C(0x0AC1F517),
- UINT32_C(0x049FE3F8), UINT32_C(0x08BEDBF0), UINT32_C(0x01EB5F66),
- UINT32_C(0x0145535A), UINT32_C(0x042D102F), UINT32_C(0x04447303),
- UINT32_C(0x067B60A3), UINT32_C(0x043A9645), UINT32_C(0x0D502303),
- UINT32_C(0x0669CEC4), UINT32_C(0x052699E3), UINT32_C(0x0E740F66),
- UINT32_C(0x011DF90D), UINT32_C(0x006017A2), UINT32_C(0x03C99A89),
- UINT32_C(0x069500E3) } },
- { { UINT32_C(0x0184B415), UINT32_C(0x06F26FDD), UINT32_C(0x01E5007E),
- UINT32_C(0x038A2542), UINT32_C(0x0DA8A807), UINT32_C(0x078F5424),
- UINT32_C(0x04D3FA96), UINT32_C(0x0A456FBD), UINT32_C(0x062853C6),
- UINT32_C(0x017211A6), UINT32_C(0x049854E5), UINT32_C(0x0A8F3585),
- UINT32_C(0x079A3009), UINT32_C(0x07AFB481), UINT32_C(0x081AFE37),
- UINT32_C(0x031A410E), UINT32_C(0x0EADF215), UINT32_C(0x02649FCC),
- UINT32_C(0x00A68E58) },
- { UINT32_C(0x0A87B468), UINT32_C(0x0744629E), UINT32_C(0x010788AE),
- UINT32_C(0x00DA10EC), UINT32_C(0x07BD591B), UINT32_C(0x07BC474E),
- UINT32_C(0x02AE7E4E), UINT32_C(0x074ED106), UINT32_C(0x059550A8),
- UINT32_C(0x0C2FBDF7), UINT32_C(0x078A0AB0), UINT32_C(0x019D9F46),
- UINT32_C(0x030FE4BE), UINT32_C(0x00DF9F6A), UINT32_C(0x04D2A38F),
- UINT32_C(0x052B1469), UINT32_C(0x005AE2E6), UINT32_C(0x07E6C02D),
- UINT32_C(0x0283843A) } },
- { { UINT32_C(0x0784F95B), UINT32_C(0x01616DEF), UINT32_C(0x056C696A),
- UINT32_C(0x03B98963), UINT32_C(0x085F2426), UINT32_C(0x07BDAC89),
- UINT32_C(0x05EAFBF9), UINT32_C(0x09A4C8CC), UINT32_C(0x0558AA78),
- UINT32_C(0x0D041BCD), UINT32_C(0x04BDD0B5), UINT32_C(0x037216D5),
- UINT32_C(0x06BD4C93), UINT32_C(0x0042A72A), UINT32_C(0x0B4A6F17),
- UINT32_C(0x0177EE47), UINT32_C(0x028752B7), UINT32_C(0x0750D182),
- UINT32_C(0x04BE36EA) },
- { UINT32_C(0x01DCCF70), UINT32_C(0x05249FC9), UINT32_C(0x063EE812),
- UINT32_C(0x0362E5A3), UINT32_C(0x017DB2F0), UINT32_C(0x05508041),
- UINT32_C(0x078C050C), UINT32_C(0x0C161A22), UINT32_C(0x078E338A),
- UINT32_C(0x0BB9EF36), UINT32_C(0x001185AB), UINT32_C(0x09058EAD),
- UINT32_C(0x00D3AF42), UINT32_C(0x02FBEDA9), UINT32_C(0x0996A3FA),
- UINT32_C(0x02E0B934), UINT32_C(0x08F57F1A), UINT32_C(0x025EB5CE),
- UINT32_C(0x0254456F) } },
- { { UINT32_C(0x08F9B528), UINT32_C(0x04174130), UINT32_C(0x013E12B3),
- UINT32_C(0x022B697D), UINT32_C(0x0B0CEF11), UINT32_C(0x03A2E8E2),
- UINT32_C(0x00D96F4F), UINT32_C(0x0B4B7DF9), UINT32_C(0x0056458A),
- UINT32_C(0x083BA433), UINT32_C(0x068A2473), UINT32_C(0x0D586B52),
- UINT32_C(0x00ACD634), UINT32_C(0x01D1EAD7), UINT32_C(0x03036203),
- UINT32_C(0x000C0094), UINT32_C(0x047A01B9), UINT32_C(0x0212F1A6),
- UINT32_C(0x04D19921) },
- { UINT32_C(0x0837554E), UINT32_C(0x02ECC2C4), UINT32_C(0x0B80FBFE),
- UINT32_C(0x07A5E03B), UINT32_C(0x041C1C48), UINT32_C(0x043DD0D4),
- UINT32_C(0x04C36416), UINT32_C(0x0869B643), UINT32_C(0x028DC568),
- UINT32_C(0x0F15A5D2), UINT32_C(0x00D7FC36), UINT32_C(0x04D7306E),
- UINT32_C(0x0306A221), UINT32_C(0x04950B4A), UINT32_C(0x06DC4FCA),
- UINT32_C(0x048D5878), UINT32_C(0x0032B7DE), UINT32_C(0x000E5973),
- UINT32_C(0x04FFCD15) } },
- },
- {
- { { UINT32_C(0x051368EE), UINT32_C(0x03C182D8), UINT32_C(0x0233E580),
- UINT32_C(0x0467AAF9), UINT32_C(0x038EEE52), UINT32_C(0x01F8CCEB),
- UINT32_C(0x04E7863B), UINT32_C(0x0974DE7F), UINT32_C(0x07C7D47D),
- UINT32_C(0x01F4B806), UINT32_C(0x0059F163), UINT32_C(0x07DFA5B8),
- UINT32_C(0x0449B3CD), UINT32_C(0x0378D1F4), UINT32_C(0x03486C59),
- UINT32_C(0x02FFDC03), UINT32_C(0x0854568F), UINT32_C(0x017FDD91),
- UINT32_C(0x0384B0DC) },
- { UINT32_C(0x08A3F84B), UINT32_C(0x065DE2C1), UINT32_C(0x085945B9),
- UINT32_C(0x04E5C55A), UINT32_C(0x06CB12ED), UINT32_C(0x07B741CC),
- UINT32_C(0x05B2C0EB), UINT32_C(0x0809AC7E), UINT32_C(0x04A46CA2),
- UINT32_C(0x061FF16D), UINT32_C(0x03744313), UINT32_C(0x0C777A3B),
- UINT32_C(0x0207FD18), UINT32_C(0x0539771F), UINT32_C(0x01004BCB),
- UINT32_C(0x04A8FC6F), UINT32_C(0x0F0A63E8), UINT32_C(0x02373910),
- UINT32_C(0x072840F7) } },
- { { UINT32_C(0x0E024391), UINT32_C(0x02781D5D), UINT32_C(0x05026331),
- UINT32_C(0x025635CD), UINT32_C(0x0492939D), UINT32_C(0x00222466),
- UINT32_C(0x0456BF4C), UINT32_C(0x07C8DEE7), UINT32_C(0x000178A5),
- UINT32_C(0x051D50AE), UINT32_C(0x02CE451F), UINT32_C(0x01814C6B),
- UINT32_C(0x0265AE7F), UINT32_C(0x0312E044), UINT32_C(0x0848FF64),
- UINT32_C(0x013BB3DA), UINT32_C(0x0C153136), UINT32_C(0x019DF825),
- UINT32_C(0x0462A6B6) },
- { UINT32_C(0x0E9AB68C), UINT32_C(0x04B05DA9), UINT32_C(0x04C2481A),
- UINT32_C(0x076E7298), UINT32_C(0x09F0C636), UINT32_C(0x01F7D7D4),
- UINT32_C(0x00F9BB8A), UINT32_C(0x0F077B4D), UINT32_C(0x0259165A),
- UINT32_C(0x0592DC29), UINT32_C(0x02303769), UINT32_C(0x0EDF23B9),
- UINT32_C(0x06E3C4F3), UINT32_C(0x026481C0), UINT32_C(0x033547D1),
- UINT32_C(0x04349C82), UINT32_C(0x0FB49FD0), UINT32_C(0x03D48B1E),
- UINT32_C(0x00EDD6A9) } },
- { { UINT32_C(0x09496A3E), UINT32_C(0x0779CC41), UINT32_C(0x0F31204C),
- UINT32_C(0x01DD9727), UINT32_C(0x0B88711D), UINT32_C(0x0531C3F2),
- UINT32_C(0x04294797), UINT32_C(0x043683B3), UINT32_C(0x05DBB4CC),
- UINT32_C(0x06B27F93), UINT32_C(0x04CEFE76), UINT32_C(0x02EF8CFB),
- UINT32_C(0x065C5182), UINT32_C(0x051D70E4), UINT32_C(0x0B92D89E),
- UINT32_C(0x015A48BA), UINT32_C(0x00689714), UINT32_C(0x02F0F899),
- UINT32_C(0x03A05527) },
- { UINT32_C(0x04B88B67), UINT32_C(0x0337896D), UINT32_C(0x0AC27DF4),
- UINT32_C(0x02CFE168), UINT32_C(0x003AC24A), UINT32_C(0x0287B4A1),
- UINT32_C(0x04C9337D), UINT32_C(0x0480FCAA), UINT32_C(0x0385E818),
- UINT32_C(0x0698332E), UINT32_C(0x00B177F0), UINT32_C(0x088F3F24),
- UINT32_C(0x056A2745), UINT32_C(0x06A53116), UINT32_C(0x0101CC1F),
- UINT32_C(0x013E9DBA), UINT32_C(0x06227F55), UINT32_C(0x03D027B4),
- UINT32_C(0x02CD8668) } },
- { { UINT32_C(0x0076683D), UINT32_C(0x076BEE0D), UINT32_C(0x0D7D7B4C),
- UINT32_C(0x0108643A), UINT32_C(0x0F993C30), UINT32_C(0x07B71D95),
- UINT32_C(0x029E4008), UINT32_C(0x034C59B6), UINT32_C(0x00E01922),
- UINT32_C(0x062750BC), UINT32_C(0x00DA23D4), UINT32_C(0x0BF7FFAF),
- UINT32_C(0x016F2E12), UINT32_C(0x0546677C), UINT32_C(0x038327C5),
- UINT32_C(0x07930C31), UINT32_C(0x03297791), UINT32_C(0x06E93707),
- UINT32_C(0x0731AA7A) },
- { UINT32_C(0x0B99594F), UINT32_C(0x0300795B), UINT32_C(0x0C5F3D55),
- UINT32_C(0x01C1DE37), UINT32_C(0x02FD7C9F), UINT32_C(0x001493C6),
- UINT32_C(0x07BB523B), UINT32_C(0x08D81CF9), UINT32_C(0x000974EA),
- UINT32_C(0x04B4CFBC), UINT32_C(0x04354B41), UINT32_C(0x0644AB94),
- UINT32_C(0x0251A61B), UINT32_C(0x0555FAF5), UINT32_C(0x03713B98),
- UINT32_C(0x0597947C), UINT32_C(0x061DDC4D), UINT32_C(0x01C1E655),
- UINT32_C(0x05DDAC10) } },
- { { UINT32_C(0x02662A6A), UINT32_C(0x0721BA5B), UINT32_C(0x08BFB362),
- UINT32_C(0x02A23D78), UINT32_C(0x04F666A1), UINT32_C(0x060FB317),
- UINT32_C(0x0729C7ED), UINT32_C(0x09B1B389), UINT32_C(0x031F8856),
- UINT32_C(0x06913D9E), UINT32_C(0x0779217C), UINT32_C(0x0A3634CD),
- UINT32_C(0x06292B3F), UINT32_C(0x01E6FDE6), UINT32_C(0x0F97C1F0),
- UINT32_C(0x0698999D), UINT32_C(0x0D773548), UINT32_C(0x01ED7CE9),
- UINT32_C(0x00FFC55A) },
- { UINT32_C(0x0D76A58E), UINT32_C(0x0195519C), UINT32_C(0x02C2F7AB),
- UINT32_C(0x061D1820), UINT32_C(0x09A1252D), UINT32_C(0x07772B8E),
- UINT32_C(0x05554A30), UINT32_C(0x0687BCF0), UINT32_C(0x06CE8978),
- UINT32_C(0x0961AAB6), UINT32_C(0x0611194A), UINT32_C(0x097F9E4C),
- UINT32_C(0x07E8543A), UINT32_C(0x076F7FC5), UINT32_C(0x039F7F09),
- UINT32_C(0x074DF751), UINT32_C(0x000B4239), UINT32_C(0x010D59A8),
- UINT32_C(0x03F90438) } },
- { { UINT32_C(0x0DA09D54), UINT32_C(0x06AF7630), UINT32_C(0x02BF95A8),
- UINT32_C(0x055D4226), UINT32_C(0x059FD1D0), UINT32_C(0x06B060C9),
- UINT32_C(0x07D177E4), UINT32_C(0x03F4F180), UINT32_C(0x021C92CF),
- UINT32_C(0x02D3DD59), UINT32_C(0x048EB409), UINT32_C(0x07E17E45),
- UINT32_C(0x05EEE57B), UINT32_C(0x01B0CED0), UINT32_C(0x0E7E68AB),
- UINT32_C(0x043C0C09), UINT32_C(0x0A766549), UINT32_C(0x0006D7E3),
- UINT32_C(0x06CB262D) },
- { UINT32_C(0x045007F6), UINT32_C(0x077C78B0), UINT32_C(0x006040A8),
- UINT32_C(0x06713C8D), UINT32_C(0x09341EBC), UINT32_C(0x0236E27C),
- UINT32_C(0x055A82B4), UINT32_C(0x06F7750F), UINT32_C(0x0669305F),
- UINT32_C(0x017EE81A), UINT32_C(0x01216750), UINT32_C(0x0ED65974),
- UINT32_C(0x03FEF768), UINT32_C(0x01F1588F), UINT32_C(0x0E26B74A),
- UINT32_C(0x078B116C), UINT32_C(0x0B1F0885), UINT32_C(0x05EF5659),
- UINT32_C(0x02E63355) } },
- { { UINT32_C(0x0FB0D3ED), UINT32_C(0x003E5A50), UINT32_C(0x0C55AAAF),
- UINT32_C(0x0289AC3D), UINT32_C(0x05EF5174), UINT32_C(0x0719E0EE),
- UINT32_C(0x01A9C3D8), UINT32_C(0x0DE06CD1), UINT32_C(0x07ED918A),
- UINT32_C(0x0BF6A107), UINT32_C(0x06149FAB), UINT32_C(0x0880197B),
- UINT32_C(0x060CCF4B), UINT32_C(0x015F00A0), UINT32_C(0x026084C4),
- UINT32_C(0x06C15B05), UINT32_C(0x04E4098B), UINT32_C(0x063ED2C8),
- UINT32_C(0x058C6384) },
- { UINT32_C(0x040FA002), UINT32_C(0x01B4B412), UINT32_C(0x08A0A8F3),
- UINT32_C(0x015D5274), UINT32_C(0x0B3D6C31), UINT32_C(0x0241F67E),
- UINT32_C(0x0383A0C0), UINT32_C(0x0D2CCE25), UINT32_C(0x07A721DD),
- UINT32_C(0x0FD7994F), UINT32_C(0x04852FC2), UINT32_C(0x0EEB0BC8),
- UINT32_C(0x05CF0812), UINT32_C(0x06594895), UINT32_C(0x0F6294B1),
- UINT32_C(0x047E9685), UINT32_C(0x03C1ADBF), UINT32_C(0x00B567D9),
- UINT32_C(0x005C4AB1) } },
- { { UINT32_C(0x0696BA83), UINT32_C(0x06603D4F), UINT32_C(0x0885A978),
- UINT32_C(0x011657F3), UINT32_C(0x0774554D), UINT32_C(0x01806495),
- UINT32_C(0x01B33254), UINT32_C(0x0A1BB9D6), UINT32_C(0x03A6DF67),
- UINT32_C(0x03AB9C8C), UINT32_C(0x0737480A), UINT32_C(0x00203D86),
- UINT32_C(0x04CE906D), UINT32_C(0x0751DBBB), UINT32_C(0x01AB53E1),
- UINT32_C(0x01405C83), UINT32_C(0x0894C75D), UINT32_C(0x02ACD3EC),
- UINT32_C(0x02926ACF) },
- { UINT32_C(0x0E8C01EF), UINT32_C(0x043477F5), UINT32_C(0x068FA361),
- UINT32_C(0x07FC59F7), UINT32_C(0x04967BAC), UINT32_C(0x0236FCA8),
- UINT32_C(0x053E4F2C), UINT32_C(0x02BA3E65), UINT32_C(0x05F9F6F0),
- UINT32_C(0x064247B4), UINT32_C(0x021B5084), UINT32_C(0x0894325C),
- UINT32_C(0x04EFE79C), UINT32_C(0x0188ED3F), UINT32_C(0x0D4FE809),
- UINT32_C(0x044BAE94), UINT32_C(0x0C8112AE), UINT32_C(0x05C68229),
- UINT32_C(0x07D43896) } },
- { { UINT32_C(0x046C1FB6), UINT32_C(0x077D8036), UINT32_C(0x0295DD8C),
- UINT32_C(0x04452F28), UINT32_C(0x0B23C464), UINT32_C(0x0644D5BA),
- UINT32_C(0x05069E01), UINT32_C(0x090DF002), UINT32_C(0x03B40591),
- UINT32_C(0x01F28172), UINT32_C(0x06905D57), UINT32_C(0x0DF1C74E),
- UINT32_C(0x05CE4958), UINT32_C(0x079BDE8E), UINT32_C(0x0D3F2F1A),
- UINT32_C(0x04E07C5F), UINT32_C(0x088FF1FA), UINT32_C(0x05C72030),
- UINT32_C(0x03BE09B6) },
- { UINT32_C(0x0A78B572), UINT32_C(0x052D6B4B), UINT32_C(0x091101F1),
- UINT32_C(0x01EB64B1), UINT32_C(0x0AA87947), UINT32_C(0x01ECBA5D),
- UINT32_C(0x03E02CC6), UINT32_C(0x0FDA4839), UINT32_C(0x02FF59B8),
- UINT32_C(0x0CA6ED0F), UINT32_C(0x06C0BD08), UINT32_C(0x0948203F),
- UINT32_C(0x00417563), UINT32_C(0x03ED5E44), UINT32_C(0x09D9F1D1),
- UINT32_C(0x043138E9), UINT32_C(0x087C76A9), UINT32_C(0x0436C464),
- UINT32_C(0x065BC41C) } },
- { { UINT32_C(0x0878503F), UINT32_C(0x02F87D12), UINT32_C(0x02476646),
- UINT32_C(0x0245CC6E), UINT32_C(0x0D4C90B6), UINT32_C(0x03F5323B),
- UINT32_C(0x05B608C2), UINT32_C(0x0E11AA7B), UINT32_C(0x03BBF4CC),
- UINT32_C(0x0E62F0E5), UINT32_C(0x03FDD83B), UINT32_C(0x01FAF12E),
- UINT32_C(0x00E02D6E), UINT32_C(0x0404666D), UINT32_C(0x0A39480C),
- UINT32_C(0x05904EE4), UINT32_C(0x0D422EC7), UINT32_C(0x009272AF),
- UINT32_C(0x065E518B) },
- { UINT32_C(0x0947A480), UINT32_C(0x0638CCA2), UINT32_C(0x0B86EFCD),
- UINT32_C(0x04C5912B), UINT32_C(0x0416F142), UINT32_C(0x066CD9A8),
- UINT32_C(0x0062F342), UINT32_C(0x030CBA20), UINT32_C(0x0675D320),
- UINT32_C(0x02C4F492), UINT32_C(0x04263BD8), UINT32_C(0x0B10ED23),
- UINT32_C(0x00458FD7), UINT32_C(0x064D3804), UINT32_C(0x030CE729),
- UINT32_C(0x055F1902), UINT32_C(0x005C9288), UINT32_C(0x05B65212),
- UINT32_C(0x03463ED7) } },
- { { UINT32_C(0x0002FA40), UINT32_C(0x019C27F1), UINT32_C(0x00CBB750),
- UINT32_C(0x03DB3435), UINT32_C(0x07286E98), UINT32_C(0x0279AAFF),
- UINT32_C(0x06D46384), UINT32_C(0x0A49DB6A), UINT32_C(0x0137478E),
- UINT32_C(0x07036ADC), UINT32_C(0x0156A020), UINT32_C(0x03444CA2),
- UINT32_C(0x014A059C), UINT32_C(0x062920C4), UINT32_C(0x05340D48),
- UINT32_C(0x07AB2B40), UINT32_C(0x060E1CBF), UINT32_C(0x06DBC3C7),
- UINT32_C(0x02A6E451) },
- { UINT32_C(0x02203C97), UINT32_C(0x0318811D), UINT32_C(0x02528A1B),
- UINT32_C(0x04016192), UINT32_C(0x002C3086), UINT32_C(0x031D212C),
- UINT32_C(0x03FC1DA6), UINT32_C(0x0E3A234E), UINT32_C(0x048A2B44),
- UINT32_C(0x046AB91A), UINT32_C(0x03F8806B), UINT32_C(0x073943DE),
- UINT32_C(0x02B12570), UINT32_C(0x024DEAC9), UINT32_C(0x08C3B2AA),
- UINT32_C(0x06910619), UINT32_C(0x01EBE0ED), UINT32_C(0x04FB5E82),
- UINT32_C(0x068938E9) } },
- { { UINT32_C(0x06A8409F), UINT32_C(0x03819FA0), UINT32_C(0x04EBCC7D),
- UINT32_C(0x05295667), UINT32_C(0x00BD47C4), UINT32_C(0x02F397A5),
- UINT32_C(0x00B133A1), UINT32_C(0x073E4AFA), UINT32_C(0x0760D526),
- UINT32_C(0x0D372CAA), UINT32_C(0x0068759A), UINT32_C(0x09A7813F),
- UINT32_C(0x000A0F4E), UINT32_C(0x01EAF02F), UINT32_C(0x09F88085),
- UINT32_C(0x0117D84A), UINT32_C(0x0B583330), UINT32_C(0x07FFDDE3),
- UINT32_C(0x00C0B54F) },
- { UINT32_C(0x0593BC03), UINT32_C(0x05294489), UINT32_C(0x0C95575C),
- UINT32_C(0x06A16930), UINT32_C(0x07E57953), UINT32_C(0x04258C35),
- UINT32_C(0x027EF886), UINT32_C(0x09A129B5), UINT32_C(0x034A8854),
- UINT32_C(0x0BB5AF8F), UINT32_C(0x0469C5BA), UINT32_C(0x000C4849),
- UINT32_C(0x00CE9665), UINT32_C(0x02759E17), UINT32_C(0x087D763E),
- UINT32_C(0x03FB717D), UINT32_C(0x0F3FD635), UINT32_C(0x007CA5FC),
- UINT32_C(0x01D3A8B2) } },
- { { UINT32_C(0x068172DA), UINT32_C(0x05B9F788), UINT32_C(0x0612E973),
- UINT32_C(0x0052E050), UINT32_C(0x099B39D0), UINT32_C(0x061F5F0F),
- UINT32_C(0x0799AF1A), UINT32_C(0x0466C10B), UINT32_C(0x0680E8D3),
- UINT32_C(0x04361EC0), UINT32_C(0x05210B2E), UINT32_C(0x0DF23AB3),
- UINT32_C(0x02B3A0B2), UINT32_C(0x0380194E), UINT32_C(0x09D77AFB),
- UINT32_C(0x06BCE4AB), UINT32_C(0x05EAD2E7), UINT32_C(0x02DD9B74),
- UINT32_C(0x033D66F2) },
- { UINT32_C(0x0BF1C993), UINT32_C(0x04E38933), UINT32_C(0x02FC4FAF),
- UINT32_C(0x0461AE62), UINT32_C(0x0F6D1B38), UINT32_C(0x021B47B4),
- UINT32_C(0x01F061C9), UINT32_C(0x051CC234), UINT32_C(0x01C8E186),
- UINT32_C(0x001C7EF9), UINT32_C(0x0664E0E2), UINT32_C(0x048E8CC7),
- UINT32_C(0x015C9670), UINT32_C(0x0481B87A), UINT32_C(0x05BCAD05),
- UINT32_C(0x003B38E6), UINT32_C(0x00886CA1), UINT32_C(0x00B0D706),
- UINT32_C(0x026557A5) } },
- { { UINT32_C(0x05F0E5DA), UINT32_C(0x03682274), UINT32_C(0x0F4E352F),
- UINT32_C(0x0105AE83), UINT32_C(0x0A820E71), UINT32_C(0x022C5CEC),
- UINT32_C(0x03DD2CFC), UINT32_C(0x0298E61A), UINT32_C(0x00120917),
- UINT32_C(0x0B0B64DF), UINT32_C(0x03C1333E), UINT32_C(0x03C5D41B),
- UINT32_C(0x04B5D215), UINT32_C(0x0187971D), UINT32_C(0x0389EAD7),
- UINT32_C(0x03CFCCE2), UINT32_C(0x063F13FF), UINT32_C(0x0652C165),
- UINT32_C(0x07742EFC) },
- { UINT32_C(0x0931C0F0), UINT32_C(0x018F45E5), UINT32_C(0x0C4C756D),
- UINT32_C(0x0537A469), UINT32_C(0x0433FB52), UINT32_C(0x0754DECC),
- UINT32_C(0x04D896F7), UINT32_C(0x04335219), UINT32_C(0x073BBC0E),
- UINT32_C(0x083BA2C0), UINT32_C(0x012D3B9E), UINT32_C(0x023EABD5),
- UINT32_C(0x04475CF9), UINT32_C(0x07A0DA39), UINT32_C(0x088DDF48),
- UINT32_C(0x002FFFDF), UINT32_C(0x0D8B7000), UINT32_C(0x06504250),
- UINT32_C(0x00F1A818) } },
- { { UINT32_C(0x052228CC), UINT32_C(0x06FA4348), UINT32_C(0x0F049E30),
- UINT32_C(0x0713CA99), UINT32_C(0x0E5D39FE), UINT32_C(0x0057B8DA),
- UINT32_C(0x003125E1), UINT32_C(0x0CC15492), UINT32_C(0x07700BE8),
- UINT32_C(0x08CFE785), UINT32_C(0x00CEB57F), UINT32_C(0x0F478327),
- UINT32_C(0x05A00945), UINT32_C(0x0490F14E), UINT32_C(0x025BA378),
- UINT32_C(0x060ED998), UINT32_C(0x01B249B5), UINT32_C(0x0023BC4C),
- UINT32_C(0x04DEDEC8) },
- { UINT32_C(0x0BA1E090), UINT32_C(0x027EBAC8), UINT32_C(0x0DD6FE71),
- UINT32_C(0x01F0ADDC), UINT32_C(0x0549F634), UINT32_C(0x06BE8416),
- UINT32_C(0x02F156E2), UINT32_C(0x0A531A53), UINT32_C(0x00AFBE73),
- UINT32_C(0x0FFF18EB), UINT32_C(0x0020C1DC), UINT32_C(0x0F409F61),
- UINT32_C(0x04E3859C), UINT32_C(0x015D5ECF), UINT32_C(0x03B3F268),
- UINT32_C(0x0288B503), UINT32_C(0x03A276BD), UINT32_C(0x0286EE9C),
- UINT32_C(0x03166F91) } },
- { { UINT32_C(0x0F1CAC2C), UINT32_C(0x035777A8), UINT32_C(0x0AF34113),
- UINT32_C(0x050DD855), UINT32_C(0x0B6BC9C1), UINT32_C(0x07010D91),
- UINT32_C(0x0452008D), UINT32_C(0x0471A3DA), UINT32_C(0x05830FDC),
- UINT32_C(0x0F222BBE), UINT32_C(0x04848384), UINT32_C(0x049CFD4D),
- UINT32_C(0x01817D66), UINT32_C(0x0724627E), UINT32_C(0x082270B8),
- UINT32_C(0x07ED5A0F), UINT32_C(0x0EEA015A), UINT32_C(0x0700F77E),
- UINT32_C(0x007E36E1) },
- { UINT32_C(0x09244F78), UINT32_C(0x049DAC0A), UINT32_C(0x0573D581),
- UINT32_C(0x001D1B4C), UINT32_C(0x0F0116EB), UINT32_C(0x03CFFD42),
- UINT32_C(0x043FFF66), UINT32_C(0x048523A0), UINT32_C(0x0671CEF3),
- UINT32_C(0x0EC2D7AF), UINT32_C(0x0049EBD0), UINT32_C(0x0F4034B6),
- UINT32_C(0x05C34B54), UINT32_C(0x025E680B), UINT32_C(0x0D2C5BEA),
- UINT32_C(0x06F544F6), UINT32_C(0x0B0CFA5A), UINT32_C(0x018276AE),
- UINT32_C(0x077D6B16) } },
- },
- {
- { { UINT32_C(0x00E10587), UINT32_C(0x01885D11), UINT32_C(0x00A74863),
- UINT32_C(0x02F34C13), UINT32_C(0x0BD4B6A2), UINT32_C(0x00E26C23),
- UINT32_C(0x07F483FF), UINT32_C(0x0A97D9DC), UINT32_C(0x02338A61),
- UINT32_C(0x07F72547), UINT32_C(0x03535AFC), UINT32_C(0x0B8E96B4),
- UINT32_C(0x001E804D), UINT32_C(0x03BD1DFE), UINT32_C(0x0A6ED29A),
- UINT32_C(0x0634588A), UINT32_C(0x0F0F6D32), UINT32_C(0x0117DDE8),
- UINT32_C(0x037107C5) },
- { UINT32_C(0x0BF698BD), UINT32_C(0x0671195E), UINT32_C(0x0E9DC570),
- UINT32_C(0x052CBC52), UINT32_C(0x0C08C8ED), UINT32_C(0x04213081),
- UINT32_C(0x00A08E33), UINT32_C(0x0A4BC1ED), UINT32_C(0x00B396EB),
- UINT32_C(0x0FF34D08), UINT32_C(0x04A4BDD9), UINT32_C(0x0A6F615E),
- UINT32_C(0x0534B5A0), UINT32_C(0x0057D6A7), UINT32_C(0x0F6CE02C),
- UINT32_C(0x06F6315B), UINT32_C(0x0D666709), UINT32_C(0x050AF998),
- UINT32_C(0x006F0E3F) } },
- { { UINT32_C(0x06965640), UINT32_C(0x0081356B), UINT32_C(0x0F41E038),
- UINT32_C(0x06713218), UINT32_C(0x0FB9E806), UINT32_C(0x0121D001),
- UINT32_C(0x07B97EDD), UINT32_C(0x0CDDEFA2), UINT32_C(0x0585D94D),
- UINT32_C(0x065F4CD7), UINT32_C(0x03CFC91B), UINT32_C(0x06B603EF),
- UINT32_C(0x07128C67), UINT32_C(0x030595F0), UINT32_C(0x0E51FB71),
- UINT32_C(0x06217FBE), UINT32_C(0x0B730732), UINT32_C(0x06277C1D),
- UINT32_C(0x04AE17C6) },
- { UINT32_C(0x0CFB1D0D), UINT32_C(0x053AA14E), UINT32_C(0x0442F9BE),
- UINT32_C(0x0786EEC1), UINT32_C(0x0EF775DF), UINT32_C(0x07A66D5B),
- UINT32_C(0x032CDF98), UINT32_C(0x0CA3E106), UINT32_C(0x07042EBA),
- UINT32_C(0x00FD51A1), UINT32_C(0x02B743F2), UINT32_C(0x0D214308),
- UINT32_C(0x03293BD7), UINT32_C(0x0635DC49), UINT32_C(0x0EB86870),
- UINT32_C(0x03EB73BF), UINT32_C(0x07F02587), UINT32_C(0x0017A824),
- UINT32_C(0x01F012DD) } },
- { { UINT32_C(0x0E0BF039), UINT32_C(0x003B2CD3), UINT32_C(0x0C2C0F48),
- UINT32_C(0x039AED35), UINT32_C(0x044C7CCC), UINT32_C(0x0364D078),
- UINT32_C(0x02C04409), UINT32_C(0x0CAEF9C4), UINT32_C(0x05C37F4A),
- UINT32_C(0x0D99EE77), UINT32_C(0x0200140A), UINT32_C(0x0A3BBBDE),
- UINT32_C(0x041E7C9A), UINT32_C(0x0371B744), UINT32_C(0x05A165FF),
- UINT32_C(0x05A7216A), UINT32_C(0x0A9CE444), UINT32_C(0x03DD4951),
- UINT32_C(0x031EC3D2) },
- { UINT32_C(0x08EAF6EB), UINT32_C(0x0703CD67), UINT32_C(0x0DEBC6FB),
- UINT32_C(0x079F8F47), UINT32_C(0x090D3A5B), UINT32_C(0x05FF4EFE),
- UINT32_C(0x05A2BC42), UINT32_C(0x006C3961), UINT32_C(0x00795219),
- UINT32_C(0x0FF8315E), UINT32_C(0x05BD4244), UINT32_C(0x02EEA381),
- UINT32_C(0x02022F89), UINT32_C(0x07878373), UINT32_C(0x084B3FA1),
- UINT32_C(0x0715713B), UINT32_C(0x0EF55815), UINT32_C(0x0748BA61),
- UINT32_C(0x0445AEE6) } },
- { { UINT32_C(0x0DCBF5E2), UINT32_C(0x03557A9E), UINT32_C(0x063D2A67),
- UINT32_C(0x00EFE9F6), UINT32_C(0x09FA350B), UINT32_C(0x03896396),
- UINT32_C(0x01F8036E), UINT32_C(0x0DC0F10D), UINT32_C(0x02B56329),
- UINT32_C(0x02504A0F), UINT32_C(0x063A7100), UINT32_C(0x0FA5A9E7),
- UINT32_C(0x07665FD9), UINT32_C(0x05DE4FB8), UINT32_C(0x00484D0C),
- UINT32_C(0x03AEE4FB), UINT32_C(0x046B10E6), UINT32_C(0x04D5E0D6),
- UINT32_C(0x01F835F4) },
- { UINT32_C(0x047D2B4B), UINT32_C(0x05847634), UINT32_C(0x0C0A675C),
- UINT32_C(0x00120157), UINT32_C(0x07AF8F0E), UINT32_C(0x0251A99B),
- UINT32_C(0x00CEE4D0), UINT32_C(0x07351889), UINT32_C(0x0621596F),
- UINT32_C(0x00C5618B), UINT32_C(0x066E65D2), UINT32_C(0x049D9FBE),
- UINT32_C(0x01E37BCF), UINT32_C(0x01C629C9), UINT32_C(0x0EC1F561),
- UINT32_C(0x02AFE546), UINT32_C(0x0005751E), UINT32_C(0x018C42B2),
- UINT32_C(0x01EAA03C) } },
- { { UINT32_C(0x0D959BD9), UINT32_C(0x038EEBBB), UINT32_C(0x08419A01),
- UINT32_C(0x05F1CCBE), UINT32_C(0x03171501), UINT32_C(0x07C18C55),
- UINT32_C(0x035306D9), UINT32_C(0x011DBDEA), UINT32_C(0x036E5963),
- UINT32_C(0x090BCEBA), UINT32_C(0x01350854), UINT32_C(0x0BB28AF5),
- UINT32_C(0x04F74928), UINT32_C(0x0330FF01), UINT32_C(0x095BA009),
- UINT32_C(0x0578BFB6), UINT32_C(0x0FCF0801), UINT32_C(0x03302535),
- UINT32_C(0x06BFF304) },
- { UINT32_C(0x0384E611), UINT32_C(0x00AD5348), UINT32_C(0x0E493BE6),
- UINT32_C(0x03CA4CDB), UINT32_C(0x0C4D1BD5), UINT32_C(0x027B8CE4),
- UINT32_C(0x02E5B4CB), UINT32_C(0x0707AF6D), UINT32_C(0x06A39971),
- UINT32_C(0x0BA42E4C), UINT32_C(0x0755E74C), UINT32_C(0x04AD6360),
- UINT32_C(0x068A6F0D), UINT32_C(0x023144DE), UINT32_C(0x07375993),
- UINT32_C(0x02780B3A), UINT32_C(0x0E492027), UINT32_C(0x05808694),
- UINT32_C(0x07431A53) } },
- { { UINT32_C(0x010FBD04), UINT32_C(0x019723AA), UINT32_C(0x025CF109),
- UINT32_C(0x03F3A3A7), UINT32_C(0x0D9D8E3F), UINT32_C(0x02F7C4B0),
- UINT32_C(0x03DF7DF6), UINT32_C(0x0B60F06D), UINT32_C(0x02A5D26D),
- UINT32_C(0x0C5F86A4), UINT32_C(0x06E7FCD9), UINT32_C(0x0DEF388F),
- UINT32_C(0x05AC83A6), UINT32_C(0x0217A751), UINT32_C(0x00401D85),
- UINT32_C(0x075A320E), UINT32_C(0x01AE8195), UINT32_C(0x06F4F327),
- UINT32_C(0x04C77D2F) },
- { UINT32_C(0x09493BE8), UINT32_C(0x00A14C7B), UINT32_C(0x091C8FF9),
- UINT32_C(0x01DEAA22), UINT32_C(0x0AB4BA27), UINT32_C(0x0562E012),
- UINT32_C(0x07519BAB), UINT32_C(0x062D9AAA), UINT32_C(0x058B7863),
- UINT32_C(0x08A2419C), UINT32_C(0x035D8277), UINT32_C(0x0F5C3CF3),
- UINT32_C(0x03527C6B), UINT32_C(0x00F3B9E0), UINT32_C(0x0EF25B4A),
- UINT32_C(0x0127A8B4), UINT32_C(0x0CE17BD2), UINT32_C(0x0195E53E),
- UINT32_C(0x071B9B4C) } },
- { { UINT32_C(0x0DAA2FB7), UINT32_C(0x021B0EB2), UINT32_C(0x0B55E936),
- UINT32_C(0x057A20CC), UINT32_C(0x01398941), UINT32_C(0x06E0BA5C),
- UINT32_C(0x07DEDA3A), UINT32_C(0x00B1377E), UINT32_C(0x008093F5),
- UINT32_C(0x00F8C281), UINT32_C(0x05D4332E), UINT32_C(0x0CF54E5F),
- UINT32_C(0x039D7F62), UINT32_C(0x0699AB5B), UINT32_C(0x05FE8914),
- UINT32_C(0x01C38070), UINT32_C(0x0685A0AC), UINT32_C(0x0104BEEE),
- UINT32_C(0x06E340C1) },
- { UINT32_C(0x0FDAA949), UINT32_C(0x02A92433), UINT32_C(0x04E882FB),
- UINT32_C(0x0435EA3D), UINT32_C(0x0CFC4BD1), UINT32_C(0x065698D5),
- UINT32_C(0x02B61BEC), UINT32_C(0x0A7025E9), UINT32_C(0x06C77C84),
- UINT32_C(0x066340BA), UINT32_C(0x07C0B02F), UINT32_C(0x0F9B4BCA),
- UINT32_C(0x0207D1CA), UINT32_C(0x061D80D9), UINT32_C(0x061524CC),
- UINT32_C(0x03F6A9F8), UINT32_C(0x094B6D53), UINT32_C(0x017C53E1),
- UINT32_C(0x00BC771D) } },
- { { UINT32_C(0x0C8D6167), UINT32_C(0x0171F9BD), UINT32_C(0x05943DEC),
- UINT32_C(0x01837B9B), UINT32_C(0x06E46FBD), UINT32_C(0x050C893D),
- UINT32_C(0x0034F50C), UINT32_C(0x0E98EEDA), UINT32_C(0x06603ADA),
- UINT32_C(0x0FF3362D), UINT32_C(0x023406A4), UINT32_C(0x03DC7095),
- UINT32_C(0x03BCCC93), UINT32_C(0x033BDFE7), UINT32_C(0x0AA65D81),
- UINT32_C(0x0739E2AF), UINT32_C(0x03455112), UINT32_C(0x06643DC0),
- UINT32_C(0x020DF18F) },
- { UINT32_C(0x084BF04E), UINT32_C(0x024B7756), UINT32_C(0x059E51F9),
- UINT32_C(0x05998215), UINT32_C(0x03684ACA), UINT32_C(0x065BD6DC),
- UINT32_C(0x03075ACB), UINT32_C(0x01AD9C9A), UINT32_C(0x07375334),
- UINT32_C(0x01731A12), UINT32_C(0x000384D3), UINT32_C(0x02632FF6),
- UINT32_C(0x0023BB3A), UINT32_C(0x0348AF93), UINT32_C(0x088B02BB),
- UINT32_C(0x02C7DE6E), UINT32_C(0x0933F326), UINT32_C(0x00B1B61E),
- UINT32_C(0x076AC60E) } },
- { { UINT32_C(0x0757C756), UINT32_C(0x05545A21), UINT32_C(0x018FFA93),
- UINT32_C(0x06C9A78F), UINT32_C(0x02C61841), UINT32_C(0x040A1739),
- UINT32_C(0x04441B1D), UINT32_C(0x052E0E81), UINT32_C(0x07E14C4D),
- UINT32_C(0x0FFFC0D5), UINT32_C(0x03072E2E), UINT32_C(0x007584A9),
- UINT32_C(0x01259E6D), UINT32_C(0x002D25F5), UINT32_C(0x0C519B94),
- UINT32_C(0x01BB1C14), UINT32_C(0x02CEB824), UINT32_C(0x02BBBEA4),
- UINT32_C(0x035E112A) },
- { UINT32_C(0x0288CF7B), UINT32_C(0x0045C5C7), UINT32_C(0x002D8D8C),
- UINT32_C(0x03BE5B42), UINT32_C(0x0A81E4C6), UINT32_C(0x0141578F),
- UINT32_C(0x033F7AC2), UINT32_C(0x0EE71541), UINT32_C(0x067EAD7B),
- UINT32_C(0x07E75F23), UINT32_C(0x011AF108), UINT32_C(0x047CA170),
- UINT32_C(0x05308227), UINT32_C(0x054879D4), UINT32_C(0x0A37B132),
- UINT32_C(0x00E6D1CA), UINT32_C(0x0629367A), UINT32_C(0x03276C5F),
- UINT32_C(0x004CBC63) } },
- { { UINT32_C(0x00CF69E7), UINT32_C(0x0584FC9D), UINT32_C(0x06952F73),
- UINT32_C(0x0281D51C), UINT32_C(0x037663C6), UINT32_C(0x0537F046),
- UINT32_C(0x0725FFD4), UINT32_C(0x0C66B9FC), UINT32_C(0x049A3EDF),
- UINT32_C(0x0F4FB830), UINT32_C(0x06728E50), UINT32_C(0x07B188F6),
- UINT32_C(0x021C067A), UINT32_C(0x06F06BE8), UINT32_C(0x00AA347B),
- UINT32_C(0x031AABF8), UINT32_C(0x03347446), UINT32_C(0x04B62373),
- UINT32_C(0x043D128D) },
- { UINT32_C(0x02AE7427), UINT32_C(0x00F73AC9), UINT32_C(0x0095D833),
- UINT32_C(0x00E6005C), UINT32_C(0x007FD8B7), UINT32_C(0x074C2204),
- UINT32_C(0x00283649), UINT32_C(0x084EDD51), UINT32_C(0x05AC7321),
- UINT32_C(0x08C40328), UINT32_C(0x04BFB5EF), UINT32_C(0x0A555FE0),
- UINT32_C(0x04C70C7C), UINT32_C(0x076D0055), UINT32_C(0x0425B2E6),
- UINT32_C(0x029D910F), UINT32_C(0x0B0A51DB), UINT32_C(0x04B38F9B),
- UINT32_C(0x01028D80) } },
- { { UINT32_C(0x0F3DE4D2), UINT32_C(0x06047E27), UINT32_C(0x03505298),
- UINT32_C(0x062523ED), UINT32_C(0x0F0D4A9F), UINT32_C(0x0150EF42),
- UINT32_C(0x056CBCAD), UINT32_C(0x0B36A628), UINT32_C(0x071A352A),
- UINT32_C(0x0D7A2CB8), UINT32_C(0x050FEDFC), UINT32_C(0x02BAC823),
- UINT32_C(0x010EDF77), UINT32_C(0x0459668A), UINT32_C(0x04041659),
- UINT32_C(0x07432BB7), UINT32_C(0x0F9651D8), UINT32_C(0x01999DE2),
- UINT32_C(0x00CBECA1) },
- { UINT32_C(0x06A2607F), UINT32_C(0x06DC83E9), UINT32_C(0x005B1A08),
- UINT32_C(0x05B9405C), UINT32_C(0x091E04D3), UINT32_C(0x0546E232),
- UINT32_C(0x0566FE22), UINT32_C(0x0695BB9A), UINT32_C(0x0074A612),
- UINT32_C(0x0E9787A0), UINT32_C(0x077B1860), UINT32_C(0x05404661),
- UINT32_C(0x00184991), UINT32_C(0x02A1C038), UINT32_C(0x0A57F0B8),
- UINT32_C(0x0382A987), UINT32_C(0x0691AC01), UINT32_C(0x02D8A8A9),
- UINT32_C(0x05A19B11) } },
- { { UINT32_C(0x081DC2A6), UINT32_C(0x017A4663), UINT32_C(0x0209D21F),
- UINT32_C(0x06A6AA7F), UINT32_C(0x051CC44C), UINT32_C(0x000D763F),
- UINT32_C(0x034EFD90), UINT32_C(0x0DEE4042), UINT32_C(0x07CBAFFB),
- UINT32_C(0x082C34D9), UINT32_C(0x02EB3FE5), UINT32_C(0x0BF15295),
- UINT32_C(0x027D4089), UINT32_C(0x056DBCC8), UINT32_C(0x024595A7),
- UINT32_C(0x03EC08BE), UINT32_C(0x057085E2), UINT32_C(0x017E7356),
- UINT32_C(0x049CE745) },
- { UINT32_C(0x0123BA29), UINT32_C(0x0045804E), UINT32_C(0x08DEDF0E),
- UINT32_C(0x00CB57D1), UINT32_C(0x0F61E577), UINT32_C(0x06EB6B79),
- UINT32_C(0x05E3EED1), UINT32_C(0x09CB4DCD), UINT32_C(0x05DAE17F),
- UINT32_C(0x034F393E), UINT32_C(0x03F5164C), UINT32_C(0x05F3C4A2),
- UINT32_C(0x0708CC05), UINT32_C(0x04F2CAC7), UINT32_C(0x0798DD7C),
- UINT32_C(0x0513331D), UINT32_C(0x004B3A41), UINT32_C(0x00801443),
- UINT32_C(0x0196B762) } },
- { { UINT32_C(0x0356B52C), UINT32_C(0x03557744), UINT32_C(0x050104FE),
- UINT32_C(0x069B4687), UINT32_C(0x0337937D), UINT32_C(0x018C3F4F),
- UINT32_C(0x00568175), UINT32_C(0x01EE408E), UINT32_C(0x04092DE8),
- UINT32_C(0x05E59E83), UINT32_C(0x0299816F), UINT32_C(0x05556DCC),
- UINT32_C(0x038621D8), UINT32_C(0x0278A753), UINT32_C(0x05BC9211),
- UINT32_C(0x009E162C), UINT32_C(0x0A3409DC), UINT32_C(0x04076EA9),
- UINT32_C(0x0464CEC0) },
- { UINT32_C(0x0A659158), UINT32_C(0x022396D5), UINT32_C(0x08424377),
- UINT32_C(0x0054703B), UINT32_C(0x0D2722F5), UINT32_C(0x03BAEB8A),
- UINT32_C(0x04B65383), UINT32_C(0x07997DDA), UINT32_C(0x07F6A3B2),
- UINT32_C(0x0BAFF348), UINT32_C(0x0299F9D9), UINT32_C(0x0B97AA04),
- UINT32_C(0x02BA4DB8), UINT32_C(0x0696475F), UINT32_C(0x0B68D089),
- UINT32_C(0x0472CB9F), UINT32_C(0x08CACFAE), UINT32_C(0x028807A6),
- UINT32_C(0x009288EF) } },
- { { UINT32_C(0x0ED9CDF5), UINT32_C(0x00B31C4E), UINT32_C(0x0C549857),
- UINT32_C(0x02D7F964), UINT32_C(0x074F9F98), UINT32_C(0x0792DF5F),
- UINT32_C(0x020ED722), UINT32_C(0x0AA8C982), UINT32_C(0x02A2408C),
- UINT32_C(0x053CDF30), UINT32_C(0x01CF47E5), UINT32_C(0x08E3FF2F),
- UINT32_C(0x0333087A), UINT32_C(0x028090D6), UINT32_C(0x032F6CA0),
- UINT32_C(0x02CF642E), UINT32_C(0x0DAB4498), UINT32_C(0x04A66B66),
- UINT32_C(0x07248BCE) },
- { UINT32_C(0x092B1FE6), UINT32_C(0x02AD6EEE), UINT32_C(0x0EB5963E),
- UINT32_C(0x0621B6BD), UINT32_C(0x04A1A8EF), UINT32_C(0x0374D40D),
- UINT32_C(0x0573791F), UINT32_C(0x0DED8513), UINT32_C(0x03AEE0F5),
- UINT32_C(0x03420B85), UINT32_C(0x04366099), UINT32_C(0x087C7CA7),
- UINT32_C(0x00B9ADB9), UINT32_C(0x056E8EBA), UINT32_C(0x0E532676),
- UINT32_C(0x05D27A22), UINT32_C(0x0554F4E5), UINT32_C(0x0474B581),
- UINT32_C(0x02A6694F) } },
- { { UINT32_C(0x080DE633), UINT32_C(0x0639306E), UINT32_C(0x0CA4F76E),
- UINT32_C(0x05BB3DCB), UINT32_C(0x06DA081A), UINT32_C(0x052EA9E2),
- UINT32_C(0x017AF437), UINT32_C(0x07D25D54), UINT32_C(0x0772DE75),
- UINT32_C(0x05670178), UINT32_C(0x06E81696), UINT32_C(0x0D28F3A1),
- UINT32_C(0x07AF022A), UINT32_C(0x07B0D67B), UINT32_C(0x04C17950),
- UINT32_C(0x001B706E), UINT32_C(0x04CE5637), UINT32_C(0x04CE1F2F),
- UINT32_C(0x0211C385) },
- { UINT32_C(0x0E5D0D74), UINT32_C(0x0411D39E), UINT32_C(0x06137F67),
- UINT32_C(0x00487846), UINT32_C(0x01B15D1C), UINT32_C(0x02B65C31),
- UINT32_C(0x06027C03), UINT32_C(0x01F15577), UINT32_C(0x011F0564),
- UINT32_C(0x066BA415), UINT32_C(0x00520E15), UINT32_C(0x01F82222),
- UINT32_C(0x07F8C048), UINT32_C(0x05A09F41), UINT32_C(0x0BBA92E8),
- UINT32_C(0x017E3648), UINT32_C(0x0861CC16), UINT32_C(0x07A9DAF6),
- UINT32_C(0x05F2C6E5) } },
- { { UINT32_C(0x04DA7708), UINT32_C(0x057D4066), UINT32_C(0x01F6A8A0),
- UINT32_C(0x00EE18FE), UINT32_C(0x05BB3FCD), UINT32_C(0x071CB79F),
- UINT32_C(0x038BBCE0), UINT32_C(0x0AAFE87E), UINT32_C(0x0245536B),
- UINT32_C(0x0D0401C6), UINT32_C(0x027984FD), UINT32_C(0x0064D51F),
- UINT32_C(0x04DCF2A2), UINT32_C(0x037E99AD), UINT32_C(0x03487C33),
- UINT32_C(0x068353F1), UINT32_C(0x0BA863FC), UINT32_C(0x00721339),
- UINT32_C(0x0754D195) },
- { UINT32_C(0x09031706), UINT32_C(0x0327DD4E), UINT32_C(0x05DDA163),
- UINT32_C(0x03F893AE), UINT32_C(0x0F1F3959), UINT32_C(0x02EC658A),
- UINT32_C(0x05A438AD), UINT32_C(0x0AE93F30), UINT32_C(0x01D8B56B),
- UINT32_C(0x09592309), UINT32_C(0x0189BB66), UINT32_C(0x050E8D52),
- UINT32_C(0x0526168D), UINT32_C(0x07FD307D), UINT32_C(0x08A4C7BC),
- UINT32_C(0x03B12944), UINT32_C(0x08329BC8), UINT32_C(0x02A4A1CE),
- UINT32_C(0x0087B284) } },
- },
- {
- { { UINT32_C(0x01C86157), UINT32_C(0x0017ED5F), UINT32_C(0x079948D2),
- UINT32_C(0x02FD6755), UINT32_C(0x0A5E2B5C), UINT32_C(0x00395EB0),
- UINT32_C(0x070A6ECC), UINT32_C(0x031E307B), UINT32_C(0x070DA4B9),
- UINT32_C(0x0166FB85), UINT32_C(0x02AF3210), UINT32_C(0x079379FF),
- UINT32_C(0x010504D3), UINT32_C(0x022DFB7B), UINT32_C(0x0C019CF3),
- UINT32_C(0x05E0727A), UINT32_C(0x0CE73CB9), UINT32_C(0x005CF0C7),
- UINT32_C(0x039AD397) },
- { UINT32_C(0x08E15F36), UINT32_C(0x04E08562), UINT32_C(0x0EC12012),
- UINT32_C(0x009F68C4), UINT32_C(0x0733E4B1), UINT32_C(0x014872C8),
- UINT32_C(0x0490CCCC), UINT32_C(0x0E53957D), UINT32_C(0x05CD4F2D),
- UINT32_C(0x082FD79D), UINT32_C(0x05F2B6D8), UINT32_C(0x0C7600B1),
- UINT32_C(0x02D81D79), UINT32_C(0x007520D1), UINT32_C(0x09EEC681),
- UINT32_C(0x04D6FB1B), UINT32_C(0x0641B032), UINT32_C(0x0283E5C0),
- UINT32_C(0x072A39F3) } },
- { { UINT32_C(0x01C9C2EC), UINT32_C(0x03A87BAF), UINT32_C(0x056E06F3),
- UINT32_C(0x02AA4CD5), UINT32_C(0x0D64394D), UINT32_C(0x044B2642),
- UINT32_C(0x018E8ECB), UINT32_C(0x02C6B29E), UINT32_C(0x00B5D0E1),
- UINT32_C(0x0795603C), UINT32_C(0x027FEAC7), UINT32_C(0x07400535),
- UINT32_C(0x04BD90C2), UINT32_C(0x0212CC37), UINT32_C(0x018B9D6C),
- UINT32_C(0x05FC9D53), UINT32_C(0x03C7248E), UINT32_C(0x038A1FEB),
- UINT32_C(0x06C809CE) },
- { UINT32_C(0x06F1CACC), UINT32_C(0x0758DFC1), UINT32_C(0x019C0D17),
- UINT32_C(0x0749CD61), UINT32_C(0x00C0724E), UINT32_C(0x0667F861),
- UINT32_C(0x03CDAF01), UINT32_C(0x0DE66325), UINT32_C(0x0767BD47),
- UINT32_C(0x0A1FDF93), UINT32_C(0x04E66E27), UINT32_C(0x004977BC),
- UINT32_C(0x05EE6515), UINT32_C(0x018DEC59), UINT32_C(0x03B99628),
- UINT32_C(0x02B69F3F), UINT32_C(0x019CC516), UINT32_C(0x07CB4623),
- UINT32_C(0x0353C229) } },
- { { UINT32_C(0x05A2D6F0), UINT32_C(0x04982642), UINT32_C(0x088CE54F),
- UINT32_C(0x06602A66), UINT32_C(0x0A17C84E), UINT32_C(0x02BE4DCE),
- UINT32_C(0x0718C264), UINT32_C(0x0FDCB2D1), UINT32_C(0x01F7AC59),
- UINT32_C(0x0E4C2C6C), UINT32_C(0x01B5B9D3), UINT32_C(0x0CCEB9E5),
- UINT32_C(0x04C7FB08), UINT32_C(0x04600748), UINT32_C(0x09F19FD9),
- UINT32_C(0x011C0141), UINT32_C(0x0A08392D), UINT32_C(0x07099321),
- UINT32_C(0x075F26A3) },
- { UINT32_C(0x0AF35FA1), UINT32_C(0x01CA261B), UINT32_C(0x0FF7838D),
- UINT32_C(0x00432E0D), UINT32_C(0x08296922), UINT32_C(0x077D0499),
- UINT32_C(0x06A4988A), UINT32_C(0x0D91BD7B), UINT32_C(0x007D4895),
- UINT32_C(0x01A77EB2), UINT32_C(0x0491B2C9), UINT32_C(0x07D6BB4E),
- UINT32_C(0x065BB828), UINT32_C(0x05D28C77), UINT32_C(0x034C1831),
- UINT32_C(0x03111000), UINT32_C(0x048A3F8F), UINT32_C(0x007D19EE),
- UINT32_C(0x006FAC9D) } },
- { { UINT32_C(0x0719C87C), UINT32_C(0x07385BC9), UINT32_C(0x01F42502),
- UINT32_C(0x074D4561), UINT32_C(0x02CA79B8), UINT32_C(0x01BE905A),
- UINT32_C(0x044E03DC), UINT32_C(0x05034A1A), UINT32_C(0x012B4964),
- UINT32_C(0x0BF284CE), UINT32_C(0x0080C91A), UINT32_C(0x0B4EE205),
- UINT32_C(0x0121E876), UINT32_C(0x04C7D981), UINT32_C(0x09D6F0D5),
- UINT32_C(0x011438CC), UINT32_C(0x0906A777), UINT32_C(0x05FD89D1),
- UINT32_C(0x01D7C3AC) },
- { UINT32_C(0x0392D834), UINT32_C(0x0199066B), UINT32_C(0x0E53AECD),
- UINT32_C(0x0279A7E5), UINT32_C(0x0E8B313A), UINT32_C(0x04F8A2AF),
- UINT32_C(0x062A274F), UINT32_C(0x0869ED62), UINT32_C(0x01C4081F),
- UINT32_C(0x0DD27618), UINT32_C(0x0093ED89), UINT32_C(0x053869B6),
- UINT32_C(0x07CB8D0C), UINT32_C(0x00D79FE6), UINT32_C(0x04A20332),
- UINT32_C(0x03366324), UINT32_C(0x0C0B74C3), UINT32_C(0x070C316E),
- UINT32_C(0x066AD76F) } },
- { { UINT32_C(0x011FA55B), UINT32_C(0x0775F5E8), UINT32_C(0x0C7BF6F4),
- UINT32_C(0x07FCBE6F), UINT32_C(0x021BE3C2), UINT32_C(0x0017D919),
- UINT32_C(0x01644455), UINT32_C(0x0AEE3FD7), UINT32_C(0x0259DD5E),
- UINT32_C(0x002EC22F), UINT32_C(0x00D308F5), UINT32_C(0x038F6CBC),
- UINT32_C(0x04FDED85), UINT32_C(0x001A53FA), UINT32_C(0x03E09FE9),
- UINT32_C(0x0312E74F), UINT32_C(0x09B20907), UINT32_C(0x078CC1DB),
- UINT32_C(0x066D9E8D) },
- { UINT32_C(0x08C7A5B7), UINT32_C(0x038B0D82), UINT32_C(0x063E4030),
- UINT32_C(0x06CE3A75), UINT32_C(0x0488AD55), UINT32_C(0x0054AAAA),
- UINT32_C(0x044F068C), UINT32_C(0x0CCE69AA), UINT32_C(0x014EF6E0),
- UINT32_C(0x068C0346), UINT32_C(0x01443327), UINT32_C(0x0A416B3D),
- UINT32_C(0x04EB25A7), UINT32_C(0x00B6E80F), UINT32_C(0x0819D7FD),
- UINT32_C(0x061AFFF1), UINT32_C(0x070E8C81), UINT32_C(0x061C5530),
- UINT32_C(0x0473CB02) } },
- { { UINT32_C(0x08D8BE36), UINT32_C(0x057DE7D1), UINT32_C(0x06025FA9),
- UINT32_C(0x0039A5D5), UINT32_C(0x00FD02EF), UINT32_C(0x02EE7913),
- UINT32_C(0x04E5E224), UINT32_C(0x052DC251), UINT32_C(0x04138D66),
- UINT32_C(0x09FAF17A), UINT32_C(0x030D57A1), UINT32_C(0x08B8F06A),
- UINT32_C(0x01D015A2), UINT32_C(0x0153FCA9), UINT32_C(0x0C54D5DF),
- UINT32_C(0x00BAAE4A), UINT32_C(0x0940A0FA), UINT32_C(0x038292EA),
- UINT32_C(0x02C97BC9) },
- { UINT32_C(0x024BFA00), UINT32_C(0x057378C3), UINT32_C(0x0A92C578),
- UINT32_C(0x07A6310B), UINT32_C(0x0F28F901), UINT32_C(0x04ED3F57),
- UINT32_C(0x037C7D8A), UINT32_C(0x00B71701), UINT32_C(0x0173A01A),
- UINT32_C(0x0A9B43A3), UINT32_C(0x0196E612), UINT32_C(0x07111189),
- UINT32_C(0x03F5BC1D), UINT32_C(0x05154B49), UINT32_C(0x0DD68D97),
- UINT32_C(0x0220CC1D), UINT32_C(0x0895DF59), UINT32_C(0x0014717C),
- UINT32_C(0x0384CEF8) } },
- { { UINT32_C(0x05F8022D), UINT32_C(0x07431A94), UINT32_C(0x0A7A9097),
- UINT32_C(0x06FC555D), UINT32_C(0x0578029C), UINT32_C(0x00758DC8),
- UINT32_C(0x00FDAF66), UINT32_C(0x0AE902D1), UINT32_C(0x06FDDF4D),
- UINT32_C(0x056FCD2A), UINT32_C(0x0393CA27), UINT32_C(0x083EDDB9),
- UINT32_C(0x071C8D5E), UINT32_C(0x02DA7EE1), UINT32_C(0x091B7578),
- UINT32_C(0x022CF2B8), UINT32_C(0x08F559AF), UINT32_C(0x00F551D9),
- UINT32_C(0x04CE7872) },
- { UINT32_C(0x0450FD39), UINT32_C(0x05325A33), UINT32_C(0x06D04EAD),
- UINT32_C(0x0111017F), UINT32_C(0x04B7D043), UINT32_C(0x009CD030),
- UINT32_C(0x02760D24), UINT32_C(0x0B333C83), UINT32_C(0x0178F799),
- UINT32_C(0x06E56E99), UINT32_C(0x06AC4002), UINT32_C(0x06C6F55C),
- UINT32_C(0x04212C69), UINT32_C(0x0776C549), UINT32_C(0x05AD10F2),
- UINT32_C(0x07D4C443), UINT32_C(0x093443A3), UINT32_C(0x01E4DAC4),
- UINT32_C(0x062304F4) } },
- { { UINT32_C(0x09FFF942), UINT32_C(0x039E7FBF), UINT32_C(0x0E4E0544),
- UINT32_C(0x01C8EF03), UINT32_C(0x015953E4), UINT32_C(0x0641511A),
- UINT32_C(0x0340D7DD), UINT32_C(0x04FBA207), UINT32_C(0x04DCD411),
- UINT32_C(0x0CE5C435), UINT32_C(0x06C85A54), UINT32_C(0x0596F209),
- UINT32_C(0x006C47CF), UINT32_C(0x039823F7), UINT32_C(0x01721D4C),
- UINT32_C(0x03FE86B7), UINT32_C(0x044008FA), UINT32_C(0x05E107EC),
- UINT32_C(0x0146DF75) },
- { UINT32_C(0x03BF30CF), UINT32_C(0x034E0D17), UINT32_C(0x0C6EB8E1),
- UINT32_C(0x016786DE), UINT32_C(0x0B4F8D94), UINT32_C(0x01E54C18),
- UINT32_C(0x0409537F), UINT32_C(0x0AD69F59), UINT32_C(0x04423A96),
- UINT32_C(0x01427559), UINT32_C(0x0517F981), UINT32_C(0x0C655FF1),
- UINT32_C(0x072A4662), UINT32_C(0x014DB58F), UINT32_C(0x09979D6E),
- UINT32_C(0x05396DDB), UINT32_C(0x03E46CF7), UINT32_C(0x062B9D62),
- UINT32_C(0x0334D070) } },
- { { UINT32_C(0x0C8B2AF6), UINT32_C(0x04C4030A), UINT32_C(0x03F4EA61),
- UINT32_C(0x06B51CFD), UINT32_C(0x08530E96), UINT32_C(0x035106EB),
- UINT32_C(0x07ACB7C9), UINT32_C(0x003FAA6D), UINT32_C(0x005AFE21),
- UINT32_C(0x09C9266C), UINT32_C(0x02684731), UINT32_C(0x0745AC29),
- UINT32_C(0x06162CD8), UINT32_C(0x069A0B95), UINT32_C(0x090B8391),
- UINT32_C(0x0570D83A), UINT32_C(0x09AE0D06), UINT32_C(0x054A95B8),
- UINT32_C(0x02CB380B) },
- { UINT32_C(0x02779E4D), UINT32_C(0x04B32E43), UINT32_C(0x0C0582B0),
- UINT32_C(0x03521F35), UINT32_C(0x089A8F39), UINT32_C(0x03BF1933),
- UINT32_C(0x027659AD), UINT32_C(0x0607CE4F), UINT32_C(0x072A97A4),
- UINT32_C(0x0F6C2DAD), UINT32_C(0x0648C496), UINT32_C(0x02D0AF23),
- UINT32_C(0x036927AF), UINT32_C(0x032E9075), UINT32_C(0x01C0AD79),
- UINT32_C(0x02044936), UINT32_C(0x0DBCFEA2), UINT32_C(0x07DADFF1),
- UINT32_C(0x06EDBCF7) } },
- { { UINT32_C(0x0209B80C), UINT32_C(0x01E54056), UINT32_C(0x0E397930),
- UINT32_C(0x01AD9D0C), UINT32_C(0x0908F895), UINT32_C(0x02A9A26E),
- UINT32_C(0x00744EB0), UINT32_C(0x0B2D7673), UINT32_C(0x00736623),
- UINT32_C(0x0F9EEB98), UINT32_C(0x07E8C693), UINT32_C(0x05615D70),
- UINT32_C(0x077E9858), UINT32_C(0x045C88B2), UINT32_C(0x06BA3291),
- UINT32_C(0x02089363), UINT32_C(0x0D1148CA), UINT32_C(0x026B1CE4),
- UINT32_C(0x0267E39A) },
- { UINT32_C(0x0E9F76E1), UINT32_C(0x0700247A), UINT32_C(0x02F5C013),
- UINT32_C(0x045D6B0B), UINT32_C(0x02398752), UINT32_C(0x011414B8),
- UINT32_C(0x0189B0D8), UINT32_C(0x065621BE), UINT32_C(0x07214CB5),
- UINT32_C(0x0C72745E), UINT32_C(0x026E830D), UINT32_C(0x0BB5064F),
- UINT32_C(0x03BD6991), UINT32_C(0x067AABA6), UINT32_C(0x03AAD9C4),
- UINT32_C(0x01C748B3), UINT32_C(0x0F2AD6A8), UINT32_C(0x07B1AAD0),
- UINT32_C(0x0515A45B) } },
- { { UINT32_C(0x0D45283F), UINT32_C(0x033F0C2B), UINT32_C(0x0EF7ECBA),
- UINT32_C(0x03F31217), UINT32_C(0x0BF2BDDB), UINT32_C(0x05AE5F1D),
- UINT32_C(0x015A33AE), UINT32_C(0x0B1D94AB), UINT32_C(0x00BB377A),
- UINT32_C(0x077D4679), UINT32_C(0x056AF89C), UINT32_C(0x07165F99),
- UINT32_C(0x046A17A3), UINT32_C(0x04CF6178), UINT32_C(0x00269B9B),
- UINT32_C(0x03F1B9F6), UINT32_C(0x07453C34), UINT32_C(0x07253011),
- UINT32_C(0x074559A2) },
- { UINT32_C(0x08D82B0E), UINT32_C(0x00D12F5F), UINT32_C(0x01FD52F5),
- UINT32_C(0x03C4069B), UINT32_C(0x0B01B2FE), UINT32_C(0x05E81250),
- UINT32_C(0x035DC621), UINT32_C(0x034EA726), UINT32_C(0x04613127),
- UINT32_C(0x0B36D680), UINT32_C(0x06F52BC5), UINT32_C(0x04B16171),
- UINT32_C(0x02156292), UINT32_C(0x0180583E), UINT32_C(0x0C8D5B19),
- UINT32_C(0x043B9BE2), UINT32_C(0x097EF032), UINT32_C(0x0307A273),
- UINT32_C(0x02ECC50D) } },
- { { UINT32_C(0x0613AC50), UINT32_C(0x01BBB9CD), UINT32_C(0x032CF181),
- UINT32_C(0x04565F80), UINT32_C(0x09B00E52), UINT32_C(0x011EC5E2),
- UINT32_C(0x05E7561C), UINT32_C(0x05B6572C), UINT32_C(0x072FBF3A),
- UINT32_C(0x04311E38), UINT32_C(0x0350633E), UINT32_C(0x0C27E7E9),
- UINT32_C(0x02DC82FC), UINT32_C(0x01DE746D), UINT32_C(0x078E3236),
- UINT32_C(0x0712B6B0), UINT32_C(0x000A7E83), UINT32_C(0x0115CB1B),
- UINT32_C(0x04C1103F) },
- { UINT32_C(0x0359ED2E), UINT32_C(0x065ADF64), UINT32_C(0x025E3238),
- UINT32_C(0x076BEAFD), UINT32_C(0x072427F7), UINT32_C(0x05DBCD55),
- UINT32_C(0x07AB37FF), UINT32_C(0x0865BFD5), UINT32_C(0x04382D44),
- UINT32_C(0x0F1D5580), UINT32_C(0x06D00533), UINT32_C(0x08D6A784),
- UINT32_C(0x05BB29BF), UINT32_C(0x005CEC3F), UINT32_C(0x06575E68),
- UINT32_C(0x053585D5), UINT32_C(0x0403BCB0), UINT32_C(0x02F77540),
- UINT32_C(0x02470C7F) } },
- { { UINT32_C(0x02C087ED), UINT32_C(0x07961B4B), UINT32_C(0x0F657FC0),
- UINT32_C(0x00B16431), UINT32_C(0x01885C19), UINT32_C(0x029A3FB7),
- UINT32_C(0x0721535D), UINT32_C(0x02FAD79C), UINT32_C(0x0596E385),
- UINT32_C(0x02412161), UINT32_C(0x0289A97A), UINT32_C(0x01B54107),
- UINT32_C(0x0271E7BB), UINT32_C(0x02E3D256), UINT32_C(0x07E3B820),
- UINT32_C(0x07F5A8EE), UINT32_C(0x0C3BD541), UINT32_C(0x01BBC84D),
- UINT32_C(0x02D55A46) },
- { UINT32_C(0x006E7D53), UINT32_C(0x07982C04), UINT32_C(0x09C948A0),
- UINT32_C(0x00A62A93), UINT32_C(0x047CD945), UINT32_C(0x060F1A2B),
- UINT32_C(0x05764587), UINT32_C(0x02111992), UINT32_C(0x03CD3492),
- UINT32_C(0x0E5873CA), UINT32_C(0x04871D26), UINT32_C(0x0EBDD263),
- UINT32_C(0x07899288), UINT32_C(0x00105962), UINT32_C(0x07975B25),
- UINT32_C(0x00D6A34D), UINT32_C(0x02DF3799), UINT32_C(0x02807307),
- UINT32_C(0x06FCAC54) } },
- { { UINT32_C(0x0302E505), UINT32_C(0x02CAC37A), UINT32_C(0x01A79721),
- UINT32_C(0x03B2E74F), UINT32_C(0x0BE5B627), UINT32_C(0x019F58EA),
- UINT32_C(0x03B18976), UINT32_C(0x0663CE37), UINT32_C(0x04C1003E),
- UINT32_C(0x086DCC91), UINT32_C(0x0566BE13), UINT32_C(0x0A0C94D1),
- UINT32_C(0x04A0F522), UINT32_C(0x01CBC165), UINT32_C(0x03D621C1),
- UINT32_C(0x03F68C3D), UINT32_C(0x04156E0A), UINT32_C(0x04C1C807),
- UINT32_C(0x002BF853) },
- { UINT32_C(0x073938D8), UINT32_C(0x076E66F8), UINT32_C(0x0251205F),
- UINT32_C(0x01B82A4E), UINT32_C(0x0C9EAC88), UINT32_C(0x0736DBEE),
- UINT32_C(0x028732CD), UINT32_C(0x03522855), UINT32_C(0x0343EE5A),
- UINT32_C(0x053E49A4), UINT32_C(0x025D55C0), UINT32_C(0x0D4096DF),
- UINT32_C(0x01108518), UINT32_C(0x02AE724F), UINT32_C(0x07514106),
- UINT32_C(0x0301EB15), UINT32_C(0x0D82C2DE), UINT32_C(0x05E3A585),
- UINT32_C(0x036F14AF) } },
- { { UINT32_C(0x07452267), UINT32_C(0x01E0D6D7), UINT32_C(0x04A4A896),
- UINT32_C(0x06D1C7B5), UINT32_C(0x03C983EF), UINT32_C(0x017B4C4A),
- UINT32_C(0x07C8F2FB), UINT32_C(0x078C2CCC), UINT32_C(0x0676C9A3),
- UINT32_C(0x09CD585C), UINT32_C(0x0529FFB0), UINT32_C(0x020720BD),
- UINT32_C(0x07B793B3), UINT32_C(0x07E65DA3), UINT32_C(0x0C89EDD5),
- UINT32_C(0x04009C8D), UINT32_C(0x0EDC15A4), UINT32_C(0x077C8AC3),
- UINT32_C(0x074868C1) },
- { UINT32_C(0x0DBC2674), UINT32_C(0x07B6C41F), UINT32_C(0x0B10636B),
- UINT32_C(0x0607B000), UINT32_C(0x01B2C3EF), UINT32_C(0x014283CF),
- UINT32_C(0x07BD944A), UINT32_C(0x016DA691), UINT32_C(0x0147454E),
- UINT32_C(0x052DE117), UINT32_C(0x06E5CDC4), UINT32_C(0x0C7BE891),
- UINT32_C(0x03BD94DE), UINT32_C(0x00362FA3), UINT32_C(0x0608B5DA),
- UINT32_C(0x000C28A8), UINT32_C(0x06CFAD2C), UINT32_C(0x0502E5EB),
- UINT32_C(0x0081DDC6) } },
- { { UINT32_C(0x0A2FCC67), UINT32_C(0x050EED2A), UINT32_C(0x0EAC3925),
- UINT32_C(0x03CCFE3E), UINT32_C(0x0DC1F4E8), UINT32_C(0x012FD64C),
- UINT32_C(0x02CFA2B3), UINT32_C(0x07921E80), UINT32_C(0x04F76E6D),
- UINT32_C(0x090CBEA8), UINT32_C(0x00304ECF), UINT32_C(0x0933B9C8),
- UINT32_C(0x01E92879), UINT32_C(0x062A922A), UINT32_C(0x03BEBB40),
- UINT32_C(0x0475B5A4), UINT32_C(0x0AB9D3C2), UINT32_C(0x02845E4B),
- UINT32_C(0x073D2AD6) },
- { UINT32_C(0x026C197B), UINT32_C(0x060C44B9), UINT32_C(0x07D6B2DD),
- UINT32_C(0x06E7D188), UINT32_C(0x03B672A1), UINT32_C(0x0277F32F),
- UINT32_C(0x011D4198), UINT32_C(0x07C178F6), UINT32_C(0x02E95A84),
- UINT32_C(0x005619C7), UINT32_C(0x029B73FC), UINT32_C(0x03CAC5E3),
- UINT32_C(0x068A3B5E), UINT32_C(0x07C2DFA8), UINT32_C(0x00EC9903),
- UINT32_C(0x07AEED34), UINT32_C(0x08C0A0D0), UINT32_C(0x02A2FF79),
- UINT32_C(0x06DBE6B8) } },
- },
- {
- { { UINT32_C(0x0C3D1383), UINT32_C(0x04E126EE), UINT32_C(0x0B631DA3),
- UINT32_C(0x03014900), UINT32_C(0x0D3831FE), UINT32_C(0x01BF06C7),
- UINT32_C(0x032CA284), UINT32_C(0x092E0CA0), UINT32_C(0x01703AE0),
- UINT32_C(0x0DCB8158), UINT32_C(0x06FF316B), UINT32_C(0x0ED60D31),
- UINT32_C(0x05DB467E), UINT32_C(0x01F3917A), UINT32_C(0x06770BD1),
- UINT32_C(0x00A944AF), UINT32_C(0x08E2035D), UINT32_C(0x020A054F),
- UINT32_C(0x035F8744) },
- { UINT32_C(0x0A303000), UINT32_C(0x0029FD2C), UINT32_C(0x0A5D9AC4),
- UINT32_C(0x06593596), UINT32_C(0x0288D9B1), UINT32_C(0x02B32376),
- UINT32_C(0x067C4E0D), UINT32_C(0x0D1B984D), UINT32_C(0x04235BF5),
- UINT32_C(0x001AA52B), UINT32_C(0x0221BA35), UINT32_C(0x0B74D0D3),
- UINT32_C(0x03DDFA56), UINT32_C(0x004A6854), UINT32_C(0x01203660),
- UINT32_C(0x0090027D), UINT32_C(0x02356607), UINT32_C(0x064E652F),
- UINT32_C(0x01D4CBEB) } },
- { { UINT32_C(0x05CFE5E0), UINT32_C(0x04C8937C), UINT32_C(0x084C1BC9),
- UINT32_C(0x0651FCA6), UINT32_C(0x0BDAC076), UINT32_C(0x079DB07C),
- UINT32_C(0x01988893), UINT32_C(0x0D8E1644), UINT32_C(0x04F7CFCD),
- UINT32_C(0x05727E1E), UINT32_C(0x073F0B5C), UINT32_C(0x0D975E23),
- UINT32_C(0x06001F51), UINT32_C(0x07B2218F), UINT32_C(0x07159FF4),
- UINT32_C(0x02D8AF28), UINT32_C(0x0F0AFF67), UINT32_C(0x0464C014),
- UINT32_C(0x005A1007) },
- { UINT32_C(0x078A8DB5), UINT32_C(0x035A301E), UINT32_C(0x0E9F9693),
- UINT32_C(0x07A8969A), UINT32_C(0x096A5ECF), UINT32_C(0x03467DDF),
- UINT32_C(0x07AF13AA), UINT32_C(0x0BF17A6B), UINT32_C(0x00FBC9C7),
- UINT32_C(0x002F3F21), UINT32_C(0x01610D30), UINT32_C(0x0A6FEF92),
- UINT32_C(0x00334A31), UINT32_C(0x0619D424), UINT32_C(0x011832DC),
- UINT32_C(0x04A2EBED), UINT32_C(0x092C4F4E), UINT32_C(0x03E72AFA),
- UINT32_C(0x04555CAD) } },
- { { UINT32_C(0x0E8401D3), UINT32_C(0x031A9337), UINT32_C(0x0A68B915),
- UINT32_C(0x006E6E9B), UINT32_C(0x0B1B6E29), UINT32_C(0x01B7F14B),
- UINT32_C(0x047E0BD8), UINT32_C(0x0A8CBD43), UINT32_C(0x024528C3),
- UINT32_C(0x08CA88A7), UINT32_C(0x000A1FEE), UINT32_C(0x0F21E47C),
- UINT32_C(0x07D1A248), UINT32_C(0x04BE0AD5), UINT32_C(0x071E2CED),
- UINT32_C(0x025521CD), UINT32_C(0x0F41E897), UINT32_C(0x0398886C),
- UINT32_C(0x04779FFD) },
- { UINT32_C(0x0A828FA8), UINT32_C(0x017C8B2C), UINT32_C(0x0910B047),
- UINT32_C(0x06160B77), UINT32_C(0x0B98B463), UINT32_C(0x07DF3373),
- UINT32_C(0x0455763C), UINT32_C(0x0F1284BE), UINT32_C(0x00906AAE),
- UINT32_C(0x01A75E0B), UINT32_C(0x07A6DA7C), UINT32_C(0x0FFCAFF1),
- UINT32_C(0x050D6EE5), UINT32_C(0x024BD0BA), UINT32_C(0x08383A01),
- UINT32_C(0x070AE8EA), UINT32_C(0x0CAA2B64), UINT32_C(0x06171B63),
- UINT32_C(0x020CE9FD) } },
- { { UINT32_C(0x0147F509), UINT32_C(0x0074A121), UINT32_C(0x0B1C1B8D),
- UINT32_C(0x00A39076), UINT32_C(0x0E542208), UINT32_C(0x01A08FA4),
- UINT32_C(0x012AA998), UINT32_C(0x0954BE0E), UINT32_C(0x05751A97),
- UINT32_C(0x09EFE174), UINT32_C(0x05C09E0D), UINT32_C(0x0DEE1815),
- UINT32_C(0x000B0415), UINT32_C(0x06D82BE5), UINT32_C(0x000E24A9),
- UINT32_C(0x042F7FD4), UINT32_C(0x0698791D), UINT32_C(0x05A5F79E),
- UINT32_C(0x0334C8D5) },
- { UINT32_C(0x0BB690A0), UINT32_C(0x01835514), UINT32_C(0x031B4F26),
- UINT32_C(0x023AC44F), UINT32_C(0x012CDCD1), UINT32_C(0x059AE369),
- UINT32_C(0x0123A551), UINT32_C(0x0AEBA693), UINT32_C(0x07D984CD),
- UINT32_C(0x0DAD9128), UINT32_C(0x0765643E), UINT32_C(0x0910F0F8),
- UINT32_C(0x03FB31E2), UINT32_C(0x01BD811A), UINT32_C(0x059F6B39),
- UINT32_C(0x049E6619), UINT32_C(0x06B63C96), UINT32_C(0x075166F7),
- UINT32_C(0x025CA72B) } },
- { { UINT32_C(0x055F34E4), UINT32_C(0x00BF08BF), UINT32_C(0x03730236),
- UINT32_C(0x039543BD), UINT32_C(0x05C17F94), UINT32_C(0x00A5C65D),
- UINT32_C(0x06121DA8), UINT32_C(0x099AC777), UINT32_C(0x02DCC3D6),
- UINT32_C(0x09002059), UINT32_C(0x0460BBB3), UINT32_C(0x07A202D8),
- UINT32_C(0x04C44EB5), UINT32_C(0x049D001E), UINT32_C(0x0E783DED),
- UINT32_C(0x0120D789), UINT32_C(0x086FA177), UINT32_C(0x065D19BF),
- UINT32_C(0x042CA8B7) },
- { UINT32_C(0x02860379), UINT32_C(0x06375711), UINT32_C(0x078E9829),
- UINT32_C(0x04F20A43), UINT32_C(0x0ADA67C4), UINT32_C(0x054101F4),
- UINT32_C(0x0602943F), UINT32_C(0x03FD9150), UINT32_C(0x06B8D61B),
- UINT32_C(0x06F5ADD6), UINT32_C(0x06EB2BAC), UINT32_C(0x0A07906A),
- UINT32_C(0x0147EDC1), UINT32_C(0x0477D372), UINT32_C(0x0025B1CE),
- UINT32_C(0x071B32CF), UINT32_C(0x0F40C9C6), UINT32_C(0x02483D0B),
- UINT32_C(0x07A56FCD) } },
- { { UINT32_C(0x0B1B724E), UINT32_C(0x0100B5C8), UINT32_C(0x081380B3),
- UINT32_C(0x048D8711), UINT32_C(0x0E363740), UINT32_C(0x029ED59F),
- UINT32_C(0x05E7819F), UINT32_C(0x02898DC3), UINT32_C(0x03621527),
- UINT32_C(0x0F99DD5D), UINT32_C(0x01DF449E), UINT32_C(0x022C0763),
- UINT32_C(0x04490568), UINT32_C(0x051A6A61), UINT32_C(0x0EE682C8),
- UINT32_C(0x0315AB2B), UINT32_C(0x08BF8EC0), UINT32_C(0x0221F0BD),
- UINT32_C(0x0034A2F5) },
- { UINT32_C(0x0505A0E7), UINT32_C(0x031C759D), UINT32_C(0x006AE380),
- UINT32_C(0x04AD9B4F), UINT32_C(0x0F850346), UINT32_C(0x0053B140),
- UINT32_C(0x060AB23A), UINT32_C(0x021E3C52), UINT32_C(0x002B9A66),
- UINT32_C(0x01646B7A), UINT32_C(0x03977D69), UINT32_C(0x02418634),
- UINT32_C(0x05E2030C), UINT32_C(0x06F8DED9), UINT32_C(0x064302A0),
- UINT32_C(0x0553D4B6), UINT32_C(0x0956D92B), UINT32_C(0x0537BD35),
- UINT32_C(0x07AFABE7) } },
- { { UINT32_C(0x04CB8040), UINT32_C(0x016D2E6C), UINT32_C(0x0DDE4688),
- UINT32_C(0x00DF2559), UINT32_C(0x0A980125), UINT32_C(0x066A1AC7),
- UINT32_C(0x07DF5C4B), UINT32_C(0x0FD3C659), UINT32_C(0x00481C65),
- UINT32_C(0x0AE5A70F), UINT32_C(0x029F751C), UINT32_C(0x00B4A3D4),
- UINT32_C(0x075575BC), UINT32_C(0x045CF25E), UINT32_C(0x06867A07),
- UINT32_C(0x076D7354), UINT32_C(0x0861487C), UINT32_C(0x017CEA2E),
- UINT32_C(0x03228414) },
- { UINT32_C(0x026AE111), UINT32_C(0x038FA015), UINT32_C(0x060716CA),
- UINT32_C(0x04976285), UINT32_C(0x059BC9DE), UINT32_C(0x043BF937),
- UINT32_C(0x035F13A1), UINT32_C(0x0F8D8888), UINT32_C(0x06D5E9F8),
- UINT32_C(0x08616DB1), UINT32_C(0x032C0CBB), UINT32_C(0x0AA3299C),
- UINT32_C(0x03F194B4), UINT32_C(0x00D0F72D), UINT32_C(0x0B3FCCBD),
- UINT32_C(0x02803044), UINT32_C(0x0A08E3C3), UINT32_C(0x037A0997),
- UINT32_C(0x05DC3B19) } },
- { { UINT32_C(0x085193F0), UINT32_C(0x019978F4), UINT32_C(0x0BF0C234),
- UINT32_C(0x04F7BBC1), UINT32_C(0x0722B6D6), UINT32_C(0x013DCEE7),
- UINT32_C(0x05D575CD), UINT32_C(0x0779F809), UINT32_C(0x06335183),
- UINT32_C(0x0DCC718C), UINT32_C(0x02D1E7DB), UINT32_C(0x0F6A6D57),
- UINT32_C(0x065A96BF), UINT32_C(0x065930E7), UINT32_C(0x039B793F),
- UINT32_C(0x06A9BA2E), UINT32_C(0x0C033596), UINT32_C(0x01BE1126),
- UINT32_C(0x03EA93B8) },
- { UINT32_C(0x03161177), UINT32_C(0x002665D5), UINT32_C(0x017B69C9),
- UINT32_C(0x07892DD4), UINT32_C(0x0F6F8ECB), UINT32_C(0x0576AF37),
- UINT32_C(0x03C1E515), UINT32_C(0x05A60E50), UINT32_C(0x02549873),
- UINT32_C(0x09B3D920), UINT32_C(0x029DA082), UINT32_C(0x009DAE44),
- UINT32_C(0x0197C8E7), UINT32_C(0x0154A33B), UINT32_C(0x097B3971),
- UINT32_C(0x023C0423), UINT32_C(0x02B8C68C), UINT32_C(0x04DCA653),
- UINT32_C(0x00079A0F) } },
- { { UINT32_C(0x063E2975), UINT32_C(0x06BEC9ED), UINT32_C(0x0B38790C),
- UINT32_C(0x022D87D1), UINT32_C(0x0EA228A4), UINT32_C(0x010DBA9F),
- UINT32_C(0x015868D8), UINT32_C(0x080C5E0D), UINT32_C(0x075196CF),
- UINT32_C(0x0A3AFD7E), UINT32_C(0x031A6E14), UINT32_C(0x0E7A5374),
- UINT32_C(0x067A8FE5), UINT32_C(0x06ECEB0D), UINT32_C(0x0B84F9C7),
- UINT32_C(0x0680604D), UINT32_C(0x072314F9), UINT32_C(0x03A2F4B2),
- UINT32_C(0x06C5081F) },
- { UINT32_C(0x0B981980), UINT32_C(0x0349CBF0), UINT32_C(0x072972B5),
- UINT32_C(0x02885527), UINT32_C(0x0150CDBD), UINT32_C(0x07F178E3),
- UINT32_C(0x032B4111), UINT32_C(0x0B2B4EF6), UINT32_C(0x000F21B3),
- UINT32_C(0x039D39FF), UINT32_C(0x07E2383D), UINT32_C(0x0F91A9DF),
- UINT32_C(0x000BF2A4), UINT32_C(0x003EA686), UINT32_C(0x06E3C109),
- UINT32_C(0x05D771D7), UINT32_C(0x03336F2A), UINT32_C(0x00A9A15C),
- UINT32_C(0x0310BC8B) } },
- { { UINT32_C(0x082B5AA4), UINT32_C(0x04A7240C), UINT32_C(0x00ABF375),
- UINT32_C(0x07E33DEB), UINT32_C(0x01BD8789), UINT32_C(0x06BA83A6),
- UINT32_C(0x05A6491B), UINT32_C(0x04DB69BD), UINT32_C(0x010D6A55),
- UINT32_C(0x0D5DAFA1), UINT32_C(0x06C7F999), UINT32_C(0x0185AD3E),
- UINT32_C(0x027EAEB5), UINT32_C(0x006644C8), UINT32_C(0x0B9709E1),
- UINT32_C(0x07676CF0), UINT32_C(0x0508273E), UINT32_C(0x054D3FBB),
- UINT32_C(0x063EFA4A) },
- { UINT32_C(0x010AA767), UINT32_C(0x01CC5A04), UINT32_C(0x0BE5B1B3),
- UINT32_C(0x06950FCE), UINT32_C(0x0E94E6DB), UINT32_C(0x0497BB17),
- UINT32_C(0x00CC06B4), UINT32_C(0x08846F32), UINT32_C(0x0314DC3B),
- UINT32_C(0x0BA27736), UINT32_C(0x0432450D), UINT32_C(0x04925C53),
- UINT32_C(0x03119EE1), UINT32_C(0x04A66669), UINT32_C(0x05FBA305),
- UINT32_C(0x033D4900), UINT32_C(0x0FE789AF), UINT32_C(0x0671EF4B),
- UINT32_C(0x0259D6DF) } },
- { { UINT32_C(0x05C529C4), UINT32_C(0x04097FDD), UINT32_C(0x0296486E),
- UINT32_C(0x05D5E29C), UINT32_C(0x0B3FABA2), UINT32_C(0x0695126C),
- UINT32_C(0x0312362F), UINT32_C(0x08DC4B4B), UINT32_C(0x0413884F),
- UINT32_C(0x067DDD33), UINT32_C(0x055DBD8F), UINT32_C(0x07D0B9CB),
- UINT32_C(0x01BE7C35), UINT32_C(0x043BC43D), UINT32_C(0x00E5A19E),
- UINT32_C(0x017725FC), UINT32_C(0x006A669F), UINT32_C(0x063FD379),
- UINT32_C(0x0682F5E5) },
- { UINT32_C(0x0035FA1B), UINT32_C(0x0302079C), UINT32_C(0x0A397CF2),
- UINT32_C(0x02A9E0EB), UINT32_C(0x0183E8FA), UINT32_C(0x00950C41),
- UINT32_C(0x05ACFED2), UINT32_C(0x0B8DC827), UINT32_C(0x0004B05C),
- UINT32_C(0x0ECD486A), UINT32_C(0x04FBAB30), UINT32_C(0x0A2FE908),
- UINT32_C(0x05C95F6D), UINT32_C(0x06B30876), UINT32_C(0x0F3D7A8A),
- UINT32_C(0x0734E57D), UINT32_C(0x0410C523), UINT32_C(0x057AD388),
- UINT32_C(0x073AF161) } },
- { { UINT32_C(0x033E8718), UINT32_C(0x05E156C6), UINT32_C(0x0188F2D0),
- UINT32_C(0x07B490F4), UINT32_C(0x0D1D9936), UINT32_C(0x045ACF91),
- UINT32_C(0x05EADE92), UINT32_C(0x09204996), UINT32_C(0x03FB05AD),
- UINT32_C(0x0952B30E), UINT32_C(0x066E8B73), UINT32_C(0x02E38706),
- UINT32_C(0x06AD215A), UINT32_C(0x05770FF2), UINT32_C(0x0CCC64AA),
- UINT32_C(0x00A77560), UINT32_C(0x084A4A57), UINT32_C(0x07428950),
- UINT32_C(0x007783FF) },
- { UINT32_C(0x07864A53), UINT32_C(0x02B0B04D), UINT32_C(0x0CE9B903),
- UINT32_C(0x032C4DB9), UINT32_C(0x0ED34B7B), UINT32_C(0x02B9BB80),
- UINT32_C(0x0107A7A1), UINT32_C(0x0133502C), UINT32_C(0x06939D9B),
- UINT32_C(0x07AE6A42), UINT32_C(0x01C55CB0), UINT32_C(0x0A087059),
- UINT32_C(0x011E8069), UINT32_C(0x02AC5D81), UINT32_C(0x0FF470E4),
- UINT32_C(0x068D4B88), UINT32_C(0x03B934D1), UINT32_C(0x01E86F4D),
- UINT32_C(0x00286D40) } },
- { { UINT32_C(0x0A097CC4), UINT32_C(0x07C93D92), UINT32_C(0x03638A82),
- UINT32_C(0x05D44662), UINT32_C(0x034F8801), UINT32_C(0x01E1B0E9),
- UINT32_C(0x03132ED7), UINT32_C(0x0D61A771), UINT32_C(0x0777FA2F),
- UINT32_C(0x0E4D4244), UINT32_C(0x02CDDCA4), UINT32_C(0x01988721),
- UINT32_C(0x0694972F), UINT32_C(0x02AA2585), UINT32_C(0x06A552DD),
- UINT32_C(0x02719251), UINT32_C(0x0C4FD604), UINT32_C(0x033FC4DD),
- UINT32_C(0x02A49BC5) },
- { UINT32_C(0x0ECC32F4), UINT32_C(0x03998CBA), UINT32_C(0x0E555140),
- UINT32_C(0x06BE70C6), UINT32_C(0x02ECE0DB), UINT32_C(0x07D7EE62),
- UINT32_C(0x006B8450), UINT32_C(0x0C677BF6), UINT32_C(0x0065EEBA),
- UINT32_C(0x0C8F791B), UINT32_C(0x05880489), UINT32_C(0x07724E1B),
- UINT32_C(0x00C43815), UINT32_C(0x079C7129), UINT32_C(0x0AC7BD8B),
- UINT32_C(0x00B35A76), UINT32_C(0x0E62F127), UINT32_C(0x06892912),
- UINT32_C(0x069DE730) } },
- { { UINT32_C(0x0D176E2E), UINT32_C(0x04BD43B7), UINT32_C(0x0843A348),
- UINT32_C(0x0749D5C1), UINT32_C(0x0ED9CC05), UINT32_C(0x00305C32),
- UINT32_C(0x037CC7F4), UINT32_C(0x03DF22FB), UINT32_C(0x05799B29),
- UINT32_C(0x0BAA8556), UINT32_C(0x01B9550B), UINT32_C(0x0B71D97D),
- UINT32_C(0x071866D2), UINT32_C(0x042A76ED), UINT32_C(0x0CF558E6),
- UINT32_C(0x05C52446), UINT32_C(0x0E80A5C3), UINT32_C(0x0732DC8B),
- UINT32_C(0x05430293) },
- { UINT32_C(0x08A05AA1), UINT32_C(0x060E94EA), UINT32_C(0x0495DB83),
- UINT32_C(0x07F23E7E), UINT32_C(0x09BABC6A), UINT32_C(0x07B134F3),
- UINT32_C(0x02C60301), UINT32_C(0x0C76C75A), UINT32_C(0x0496E91D),
- UINT32_C(0x0354A538), UINT32_C(0x03F832DB), UINT32_C(0x03139812),
- UINT32_C(0x028BB56E), UINT32_C(0x06BC315A), UINT32_C(0x08F87E08),
- UINT32_C(0x04EB9933), UINT32_C(0x0D94A083), UINT32_C(0x00F1E782),
- UINT32_C(0x00039DA7) } },
- { { UINT32_C(0x0F46E9D5), UINT32_C(0x04AFDE7F), UINT32_C(0x02DD9156),
- UINT32_C(0x03A43A4A), UINT32_C(0x0334CF91), UINT32_C(0x06B820D5),
- UINT32_C(0x02AB098A), UINT32_C(0x010407F3), UINT32_C(0x06E15825),
- UINT32_C(0x0DE19BBC), UINT32_C(0x05C155A7), UINT32_C(0x098AB480),
- UINT32_C(0x027F0A26), UINT32_C(0x001E493A), UINT32_C(0x0D3BF154),
- UINT32_C(0x0022BB7B), UINT32_C(0x092F7F8A), UINT32_C(0x025E06B0),
- UINT32_C(0x0214EC84) },
- { UINT32_C(0x0E367447), UINT32_C(0x07A76C60), UINT32_C(0x0E7F25B2),
- UINT32_C(0x061DC274), UINT32_C(0x08037471), UINT32_C(0x0601CC83),
- UINT32_C(0x077C01C1), UINT32_C(0x0BD797B8), UINT32_C(0x07A2D854),
- UINT32_C(0x0F539925), UINT32_C(0x00056A50), UINT32_C(0x0F52ABBB),
- UINT32_C(0x01C407C4), UINT32_C(0x046E3EC8), UINT32_C(0x08C6B255),
- UINT32_C(0x06BB4D5F), UINT32_C(0x09336DFF), UINT32_C(0x00D914F1),
- UINT32_C(0x01F9DBAA) } },
- { { UINT32_C(0x0D831A04), UINT32_C(0x05A97D33), UINT32_C(0x0906D401),
- UINT32_C(0x01E543D5), UINT32_C(0x063B64A7), UINT32_C(0x01DF1F04),
- UINT32_C(0x07BEAE26), UINT32_C(0x0C4C51CE), UINT32_C(0x071253E1),
- UINT32_C(0x07C5C1BC), UINT32_C(0x0686EDD8), UINT32_C(0x0EADB491),
- UINT32_C(0x06FCC7E8), UINT32_C(0x04DC895B), UINT32_C(0x0DA99CB1),
- UINT32_C(0x07538043), UINT32_C(0x0DCCD221), UINT32_C(0x05338542),
- UINT32_C(0x0263F3E2) },
- { UINT32_C(0x049B2FC3), UINT32_C(0x00D9571D), UINT32_C(0x09A6B74E),
- UINT32_C(0x013E9069), UINT32_C(0x0C142061), UINT32_C(0x0661D5AE),
- UINT32_C(0x078F1467), UINT32_C(0x0568D3A9), UINT32_C(0x02729AA5),
- UINT32_C(0x0749905F), UINT32_C(0x02491337), UINT32_C(0x0A8EED74),
- UINT32_C(0x070FB80C), UINT32_C(0x066BA15B), UINT32_C(0x087A7668),
- UINT32_C(0x03342CBD), UINT32_C(0x0FCD50D2), UINT32_C(0x017CF7F9),
- UINT32_C(0x05DA6EDD) } },
- },
- {
- { { UINT32_C(0x08ECE594), UINT32_C(0x02E6D7AF), UINT32_C(0x0160833B),
- UINT32_C(0x05E9199C), UINT32_C(0x05C1EB44), UINT32_C(0x01F9CDD2),
- UINT32_C(0x04ECBF7E), UINT32_C(0x011F5E2E), UINT32_C(0x00B16683),
- UINT32_C(0x082C80F7), UINT32_C(0x04F6D76E), UINT32_C(0x0A9035A2),
- UINT32_C(0x02A6F996), UINT32_C(0x07CF51EF), UINT32_C(0x011C78A5),
- UINT32_C(0x03E6811A), UINT32_C(0x0DCCBD54), UINT32_C(0x029CA158),
- UINT32_C(0x0188556B) },
- { UINT32_C(0x0EBBFAD7), UINT32_C(0x036D4FEF), UINT32_C(0x0DAD8CB2),
- UINT32_C(0x024C5461), UINT32_C(0x09F7253C), UINT32_C(0x052C8206),
- UINT32_C(0x03009FD7), UINT32_C(0x05A4E883), UINT32_C(0x04FFDBF8),
- UINT32_C(0x07B5A2D0), UINT32_C(0x0487033B), UINT32_C(0x003EABFC),
- UINT32_C(0x0107E479), UINT32_C(0x0479A422), UINT32_C(0x0ECEA707),
- UINT32_C(0x05D06F61), UINT32_C(0x05BD0428), UINT32_C(0x01301D97),
- UINT32_C(0x0137ADE9) } },
- { { UINT32_C(0x008164D4), UINT32_C(0x02998A00), UINT32_C(0x0E9FE1D5),
- UINT32_C(0x05B9A827), UINT32_C(0x0AA45754), UINT32_C(0x06793FDD),
- UINT32_C(0x01D8C060), UINT32_C(0x030ECBF4), UINT32_C(0x01FDC34C),
- UINT32_C(0x0FA8650F), UINT32_C(0x0739AA31), UINT32_C(0x0905FB0D),
- UINT32_C(0x04B98585), UINT32_C(0x04528DD9), UINT32_C(0x0582E0E8),
- UINT32_C(0x0685885D), UINT32_C(0x008F4125), UINT32_C(0x02A15C01),
- UINT32_C(0x023D540D) },
- { UINT32_C(0x039B003C), UINT32_C(0x074C5CC0), UINT32_C(0x029B2FBB),
- UINT32_C(0x07F27890), UINT32_C(0x0C083234), UINT32_C(0x054081D7),
- UINT32_C(0x0109E54D), UINT32_C(0x08920F8E), UINT32_C(0x07D87B98),
- UINT32_C(0x07E36E68), UINT32_C(0x023912DB), UINT32_C(0x071A5BBC),
- UINT32_C(0x0733E49F), UINT32_C(0x058495D0), UINT32_C(0x0068F694),
- UINT32_C(0x012DCC7D), UINT32_C(0x0DC88ED4), UINT32_C(0x06D1A2D4),
- UINT32_C(0x02BBA636) } },
- { { UINT32_C(0x0B78796F), UINT32_C(0x0335FA8E), UINT32_C(0x0243FD16),
- UINT32_C(0x03C6B319), UINT32_C(0x01CD8CA8), UINT32_C(0x0704FAEE),
- UINT32_C(0x04540F1E), UINT32_C(0x092AC9A2), UINT32_C(0x020A1CA3),
- UINT32_C(0x023FC6DD), UINT32_C(0x01EFAF42), UINT32_C(0x00BC4AB2),
- UINT32_C(0x0206DD26), UINT32_C(0x07400CF2), UINT32_C(0x072BD012),
- UINT32_C(0x00840AB3), UINT32_C(0x016D752E), UINT32_C(0x00CEF006),
- UINT32_C(0x0647C23D) },
- { UINT32_C(0x0F6CA70B), UINT32_C(0x05AFF85F), UINT32_C(0x031691E3),
- UINT32_C(0x01063899), UINT32_C(0x02420E8C), UINT32_C(0x03D2D13C),
- UINT32_C(0x059E8A01), UINT32_C(0x0FC5FC43), UINT32_C(0x042A852F),
- UINT32_C(0x06446FD4), UINT32_C(0x0341CB5B), UINT32_C(0x044193ED),
- UINT32_C(0x073BE475), UINT32_C(0x051FCBEA), UINT32_C(0x00D6D405),
- UINT32_C(0x00A0026F), UINT32_C(0x09A09555), UINT32_C(0x0037DFDB),
- UINT32_C(0x0186A76D) } },
- { { UINT32_C(0x06762E69), UINT32_C(0x05E586F2), UINT32_C(0x08A5D295),
- UINT32_C(0x021AEB8A), UINT32_C(0x0D8E9356), UINT32_C(0x05E8F45E),
- UINT32_C(0x04336CB6), UINT32_C(0x04373909), UINT32_C(0x020299B5),
- UINT32_C(0x013EB290), UINT32_C(0x061E0E31), UINT32_C(0x07167125),
- UINT32_C(0x01291CE5), UINT32_C(0x05F204F5), UINT32_C(0x060A0EA2),
- UINT32_C(0x0414B179), UINT32_C(0x064F6F43), UINT32_C(0x0114060E),
- UINT32_C(0x040928CF) },
- { UINT32_C(0x0B54A6C6), UINT32_C(0x010FE7C2), UINT32_C(0x0FDA19CB),
- UINT32_C(0x056B791E), UINT32_C(0x049ED286), UINT32_C(0x02401472),
- UINT32_C(0x048F8CD1), UINT32_C(0x0EAC2400), UINT32_C(0x075D6078),
- UINT32_C(0x0EAAD7B3), UINT32_C(0x051EDE19), UINT32_C(0x0D7E6F09),
- UINT32_C(0x001044A9), UINT32_C(0x0411E3BA), UINT32_C(0x0D3647C4),
- UINT32_C(0x00168497), UINT32_C(0x08BA1235), UINT32_C(0x01C93676),
- UINT32_C(0x01411BDC) } },
- { { UINT32_C(0x07F5FEA0), UINT32_C(0x068F1494), UINT32_C(0x0CF3659A),
- UINT32_C(0x034F4CD5), UINT32_C(0x08840E07), UINT32_C(0x01463227),
- UINT32_C(0x02CE4099), UINT32_C(0x00306A1A), UINT32_C(0x043276DA),
- UINT32_C(0x0C0A79A8), UINT32_C(0x045485DA), UINT32_C(0x0D43B7E5),
- UINT32_C(0x0245D30D), UINT32_C(0x07040ECA), UINT32_C(0x0F0944E2),
- UINT32_C(0x02FAB448), UINT32_C(0x0A3418D6), UINT32_C(0x00AEEE32),
- UINT32_C(0x054B0477) },
- { UINT32_C(0x002E1A49), UINT32_C(0x02417738), UINT32_C(0x003FC230),
- UINT32_C(0x057B81BC), UINT32_C(0x09252F9B), UINT32_C(0x071E923E),
- UINT32_C(0x07556FE9), UINT32_C(0x0405C043), UINT32_C(0x05F4A479),
- UINT32_C(0x00AE6EBC), UINT32_C(0x0470CEA9), UINT32_C(0x043EFE7F),
- UINT32_C(0x032F779B), UINT32_C(0x05D5E4C1), UINT32_C(0x0F412FF3),
- UINT32_C(0x029E0A95), UINT32_C(0x027FF900), UINT32_C(0x0639C4FE),
- UINT32_C(0x05496FF2) } },
- { { UINT32_C(0x093A81E5), UINT32_C(0x06552EA0), UINT32_C(0x076C940F),
- UINT32_C(0x04D9EBF4), UINT32_C(0x07435E68), UINT32_C(0x00026B20),
- UINT32_C(0x022F07A1), UINT32_C(0x0D1152A6), UINT32_C(0x01605EB4),
- UINT32_C(0x021ED2B3), UINT32_C(0x0416BC52), UINT32_C(0x0F03BB25),
- UINT32_C(0x032FD879), UINT32_C(0x0224E24D), UINT32_C(0x0227BC06),
- UINT32_C(0x07E18BB7), UINT32_C(0x0846E10C), UINT32_C(0x025383D2),
- UINT32_C(0x0716FE98) },
- { UINT32_C(0x048353E7), UINT32_C(0x06A51D17), UINT32_C(0x0602B7B4),
- UINT32_C(0x00A3A912), UINT32_C(0x00D41798), UINT32_C(0x009BAAA2),
- UINT32_C(0x014F6863), UINT32_C(0x0B8C9E0C), UINT32_C(0x004E89E7),
- UINT32_C(0x01EA2B4D), UINT32_C(0x069FE41B), UINT32_C(0x0E23CD44),
- UINT32_C(0x0284C3F8), UINT32_C(0x0709633E), UINT32_C(0x00EC122E),
- UINT32_C(0x054C3546), UINT32_C(0x0274CE48), UINT32_C(0x0562858C),
- UINT32_C(0x00845131) } },
- { { UINT32_C(0x093C77DA), UINT32_C(0x01D351AD), UINT32_C(0x023A3C02),
- UINT32_C(0x050A84F5), UINT32_C(0x0D2278BA), UINT32_C(0x0166F47B),
- UINT32_C(0x010E24C3), UINT32_C(0x0171F355), UINT32_C(0x070D70CC),
- UINT32_C(0x0F04C14A), UINT32_C(0x0675CE80), UINT32_C(0x03C92277),
- UINT32_C(0x027C5314), UINT32_C(0x0475432E), UINT32_C(0x0A42C984),
- UINT32_C(0x021A86BA), UINT32_C(0x09667047), UINT32_C(0x0162D620),
- UINT32_C(0x05CE1F5E) },
- { UINT32_C(0x0541016D), UINT32_C(0x04AA27AD), UINT32_C(0x024272A0),
- UINT32_C(0x0124A937), UINT32_C(0x04022798), UINT32_C(0x04C4908F),
- UINT32_C(0x078D2755), UINT32_C(0x05FC4690), UINT32_C(0x03D49867),
- UINT32_C(0x0D0542ED), UINT32_C(0x014AC0C6), UINT32_C(0x0444F4AA),
- UINT32_C(0x0527B53A), UINT32_C(0x04E463E4), UINT32_C(0x084795B9),
- UINT32_C(0x06190D53), UINT32_C(0x01F0982A), UINT32_C(0x06C19AFA),
- UINT32_C(0x02B40A43) } },
- { { UINT32_C(0x0D526DD9), UINT32_C(0x02D2A436), UINT32_C(0x06CBC632),
- UINT32_C(0x06A016EB), UINT32_C(0x0229215C), UINT32_C(0x063A186E),
- UINT32_C(0x056A2652), UINT32_C(0x0982D8F0), UINT32_C(0x04950B55),
- UINT32_C(0x0C34A068), UINT32_C(0x036F958C), UINT32_C(0x0EC7C304),
- UINT32_C(0x00685912), UINT32_C(0x00521605), UINT32_C(0x074386C5),
- UINT32_C(0x06C5C880), UINT32_C(0x01D5C0E0), UINT32_C(0x0321B5FC),
- UINT32_C(0x031F89D8) },
- { UINT32_C(0x0E4F4EFB), UINT32_C(0x042EF02C), UINT32_C(0x0747294D),
- UINT32_C(0x06315147), UINT32_C(0x09826B36), UINT32_C(0x044F7A99),
- UINT32_C(0x00DA6A3B), UINT32_C(0x0B192C6C), UINT32_C(0x017D9CD6),
- UINT32_C(0x07D0FC8D), UINT32_C(0x00306186), UINT32_C(0x0DA5FD2C),
- UINT32_C(0x048EA8B6), UINT32_C(0x041BED38), UINT32_C(0x028A7681),
- UINT32_C(0x0444E09E), UINT32_C(0x07A1C182), UINT32_C(0x06CEB6B8),
- UINT32_C(0x0402E972) } },
- { { UINT32_C(0x0A37CD61), UINT32_C(0x07A90498), UINT32_C(0x03236B70),
- UINT32_C(0x010D1CA8), UINT32_C(0x0C8EE94C), UINT32_C(0x01332402),
- UINT32_C(0x00D01671), UINT32_C(0x0D20BD0A), UINT32_C(0x04F8905D),
- UINT32_C(0x0CB75503), UINT32_C(0x07C71184), UINT32_C(0x04D224FF),
- UINT32_C(0x05EF5D3B), UINT32_C(0x02D2D84B), UINT32_C(0x0776D6B8),
- UINT32_C(0x01B04C47), UINT32_C(0x0C6883AD), UINT32_C(0x041BC984),
- UINT32_C(0x0738830F) },
- { UINT32_C(0x008A7408), UINT32_C(0x01833053), UINT32_C(0x0DCDED77),
- UINT32_C(0x0660E3CD), UINT32_C(0x003541F4), UINT32_C(0x06650324),
- UINT32_C(0x056D1103), UINT32_C(0x012DDC16), UINT32_C(0x04858446),
- UINT32_C(0x031BD98F), UINT32_C(0x07EA97C0), UINT32_C(0x033EA10E),
- UINT32_C(0x07E40598), UINT32_C(0x03935067), UINT32_C(0x06BD3C58),
- UINT32_C(0x0709A382), UINT32_C(0x0FFD62B5), UINT32_C(0x03ACA64E),
- UINT32_C(0x02BDB05C) } },
- { { UINT32_C(0x019DDB66), UINT32_C(0x0151276D), UINT32_C(0x0D169D42),
- UINT32_C(0x07424F74), UINT32_C(0x0073574B), UINT32_C(0x029D6033),
- UINT32_C(0x04805B63), UINT32_C(0x0FF3CCB8), UINT32_C(0x0657BEB9),
- UINT32_C(0x06710C8D), UINT32_C(0x076A0EFE), UINT32_C(0x05FFC38A),
- UINT32_C(0x039B2127), UINT32_C(0x04A7D60B), UINT32_C(0x0D352201),
- UINT32_C(0x0459932F), UINT32_C(0x0A56306E), UINT32_C(0x05D63C8E),
- UINT32_C(0x01727D3E) },
- { UINT32_C(0x0A228C02), UINT32_C(0x0454E2FD), UINT32_C(0x0C5CF406),
- UINT32_C(0x072A6748), UINT32_C(0x09478B3C), UINT32_C(0x01C032C4),
- UINT32_C(0x024B1CF3), UINT32_C(0x07BCB89A), UINT32_C(0x017F8136),
- UINT32_C(0x03BFA207), UINT32_C(0x0032CE35), UINT32_C(0x01301C08),
- UINT32_C(0x01F1D68E), UINT32_C(0x024447E0), UINT32_C(0x00655D3F),
- UINT32_C(0x04B5B6DB), UINT32_C(0x08F50A61), UINT32_C(0x07FE19DA),
- UINT32_C(0x01906979) } },
- { { UINT32_C(0x04E80EB1), UINT32_C(0x052DB749), UINT32_C(0x0FA876FF),
- UINT32_C(0x014D563E), UINT32_C(0x0DD8DCB4), UINT32_C(0x06D08CF5),
- UINT32_C(0x0088B6C9), UINT32_C(0x099DAF2C), UINT32_C(0x06ADE3E9),
- UINT32_C(0x05F27F40), UINT32_C(0x076292C5), UINT32_C(0x02149C44),
- UINT32_C(0x04ECED26), UINT32_C(0x04016166), UINT32_C(0x0E8DD0F0),
- UINT32_C(0x02703366), UINT32_C(0x09A4D3F8), UINT32_C(0x000C4924),
- UINT32_C(0x066F3B89) },
- { UINT32_C(0x00F92986), UINT32_C(0x001B8CB3), UINT32_C(0x0C27E556),
- UINT32_C(0x05EAB0C7), UINT32_C(0x0A95BBEF), UINT32_C(0x011331B7),
- UINT32_C(0x03245504), UINT32_C(0x0B108EBA), UINT32_C(0x0704FE66),
- UINT32_C(0x0AEECF39), UINT32_C(0x0485E096), UINT32_C(0x0D5B3E1E),
- UINT32_C(0x02DB3A00), UINT32_C(0x06FBA80E), UINT32_C(0x0AEE0EA5),
- UINT32_C(0x064273CE), UINT32_C(0x0CD775D3), UINT32_C(0x00232462),
- UINT32_C(0x0347DCE7) } },
- { { UINT32_C(0x029AE558), UINT32_C(0x07BED198), UINT32_C(0x073802BF),
- UINT32_C(0x0528429C), UINT32_C(0x02A79F18), UINT32_C(0x045BFA11),
- UINT32_C(0x07B77865), UINT32_C(0x065D4D35), UINT32_C(0x03701A97),
- UINT32_C(0x03C87FB5), UINT32_C(0x07338AED), UINT32_C(0x0260F0C6),
- UINT32_C(0x032E371B), UINT32_C(0x048EAB15), UINT32_C(0x06488CED),
- UINT32_C(0x04349BDC), UINT32_C(0x09FF872F), UINT32_C(0x01EBC954),
- UINT32_C(0x02644425) },
- { UINT32_C(0x0AAD22D1), UINT32_C(0x04DA634D), UINT32_C(0x0931B0A2),
- UINT32_C(0x0366BA6D), UINT32_C(0x0A03F852), UINT32_C(0x003C4DA2),
- UINT32_C(0x07BDDE59), UINT32_C(0x00543C06), UINT32_C(0x05EA4710),
- UINT32_C(0x0622BACC), UINT32_C(0x03C86D6F), UINT32_C(0x0810EAB1),
- UINT32_C(0x0128E64D), UINT32_C(0x02C5B6EF), UINT32_C(0x0F37432C),
- UINT32_C(0x0391A4CD), UINT32_C(0x09344B8B), UINT32_C(0x007DDA34),
- UINT32_C(0x02408EDC) } },
- { { UINT32_C(0x0EB8B398), UINT32_C(0x068DF986), UINT32_C(0x0BCADF8A),
- UINT32_C(0x01829A9B), UINT32_C(0x017C9B77), UINT32_C(0x0446621A),
- UINT32_C(0x026EE0C4), UINT32_C(0x0E0FE9B2), UINT32_C(0x0528FE1C),
- UINT32_C(0x08E6DD5A), UINT32_C(0x018FB2E0), UINT32_C(0x0FD2A7AB),
- UINT32_C(0x002E71A2), UINT32_C(0x069C2EFB), UINT32_C(0x0156F759),
- UINT32_C(0x04F3A78E), UINT32_C(0x022C4533), UINT32_C(0x069A2816),
- UINT32_C(0x03C034B1) },
- { UINT32_C(0x0D05FF6A), UINT32_C(0x07761186), UINT32_C(0x0D73ABC6),
- UINT32_C(0x06AC086B), UINT32_C(0x0BF965A1), UINT32_C(0x05F6546D),
- UINT32_C(0x07767397), UINT32_C(0x005C4608), UINT32_C(0x005803C4),
- UINT32_C(0x024EE133), UINT32_C(0x05FC51BD), UINT32_C(0x099F0D97),
- UINT32_C(0x00437C0C), UINT32_C(0x0553A827), UINT32_C(0x0FB0EB60),
- UINT32_C(0x06A7AEC5), UINT32_C(0x07C31264), UINT32_C(0x020D4B32),
- UINT32_C(0x045F6381) } },
- { { UINT32_C(0x04D9F1F8), UINT32_C(0x05315A15), UINT32_C(0x01990B25),
- UINT32_C(0x01A6DE98), UINT32_C(0x036D854A), UINT32_C(0x03D25F0D),
- UINT32_C(0x06673F83), UINT32_C(0x04C56936), UINT32_C(0x019ACD66),
- UINT32_C(0x0C1F1C47), UINT32_C(0x04AD0FD3), UINT32_C(0x0148F4FA),
- UINT32_C(0x07BC3A93), UINT32_C(0x02F86E22), UINT32_C(0x0291F62B),
- UINT32_C(0x01F87233), UINT32_C(0x0F616501), UINT32_C(0x06C1B9E5),
- UINT32_C(0x05FB6CAA) },
- { UINT32_C(0x0DAF0C41), UINT32_C(0x050BE47B), UINT32_C(0x0DD799BF),
- UINT32_C(0x00BB8754), UINT32_C(0x07221726), UINT32_C(0x00F26A35),
- UINT32_C(0x0474A809), UINT32_C(0x0250B288), UINT32_C(0x0680A8C1),
- UINT32_C(0x09FDC598), UINT32_C(0x00424EA2), UINT32_C(0x09CADE7E),
- UINT32_C(0x0092845D), UINT32_C(0x0301B24F), UINT32_C(0x0CF7BF3E),
- UINT32_C(0x0747B26E), UINT32_C(0x04110EBF), UINT32_C(0x002FC650),
- UINT32_C(0x066AF8B8) } },
- { { UINT32_C(0x06DBC74A), UINT32_C(0x02C31098), UINT32_C(0x069497D4),
- UINT32_C(0x048864EC), UINT32_C(0x01E12C96), UINT32_C(0x03EE9F03),
- UINT32_C(0x05400CB4), UINT32_C(0x00B9E174), UINT32_C(0x04923BC3),
- UINT32_C(0x0B5B54EA), UINT32_C(0x04A635C8), UINT32_C(0x0039A770),
- UINT32_C(0x079340D3), UINT32_C(0x02B053A6), UINT32_C(0x0AA8C800),
- UINT32_C(0x073E66A4), UINT32_C(0x0304ED5B), UINT32_C(0x007ACB50),
- UINT32_C(0x069EBA57) },
- { UINT32_C(0x04FA3D53), UINT32_C(0x050EF28C), UINT32_C(0x09A3C2CF),
- UINT32_C(0x03DE9C58), UINT32_C(0x085E0F9C), UINT32_C(0x069D187C),
- UINT32_C(0x04624402), UINT32_C(0x0C81F8BF), UINT32_C(0x02E444D9),
- UINT32_C(0x0D776F3C), UINT32_C(0x02B966E8), UINT32_C(0x017A5803),
- UINT32_C(0x005E79FE), UINT32_C(0x017FF63B), UINT32_C(0x05B01559),
- UINT32_C(0x03097D34), UINT32_C(0x0F3A10BA), UINT32_C(0x0712D05A),
- UINT32_C(0x03904282) } },
- { { UINT32_C(0x0727DDB2), UINT32_C(0x0322FBEE), UINT32_C(0x006E2FCD),
- UINT32_C(0x07EA06FF), UINT32_C(0x0BA09E24), UINT32_C(0x00F733F8),
- UINT32_C(0x03D6DCAE), UINT32_C(0x049125D5), UINT32_C(0x077E1A66),
- UINT32_C(0x0D68AE84), UINT32_C(0x04F77FA6), UINT32_C(0x0964F229),
- UINT32_C(0x011AD49C), UINT32_C(0x05CC02E9), UINT32_C(0x03E1CD67),
- UINT32_C(0x06E9B6EE), UINT32_C(0x02ABE8BE), UINT32_C(0x056C7601),
- UINT32_C(0x050C554C) },
- { UINT32_C(0x01B068CF), UINT32_C(0x012F41C1), UINT32_C(0x0CD31293),
- UINT32_C(0x056F1C35), UINT32_C(0x0716CA13), UINT32_C(0x0544293E),
- UINT32_C(0x06007211), UINT32_C(0x04F726E6), UINT32_C(0x007D49EF),
- UINT32_C(0x0E336972), UINT32_C(0x031C46EF), UINT32_C(0x025A6106),
- UINT32_C(0x05AA92B9), UINT32_C(0x011700B0), UINT32_C(0x011058CF),
- UINT32_C(0x00395DAC), UINT32_C(0x02BBCCE0), UINT32_C(0x029EAC52),
- UINT32_C(0x028A26A5) } },
- },
- {
- { { UINT32_C(0x0FFE4858), UINT32_C(0x044AC143), UINT32_C(0x06252D69),
- UINT32_C(0x03691755), UINT32_C(0x0DE0F670), UINT32_C(0x0295E478),
- UINT32_C(0x05945AF8), UINT32_C(0x0A5D32CA), UINT32_C(0x0234DE82),
- UINT32_C(0x0F67E075), UINT32_C(0x06115CED), UINT32_C(0x00AE3A40),
- UINT32_C(0x04F21740), UINT32_C(0x05BA53F6), UINT32_C(0x05840CD3),
- UINT32_C(0x02246AB6), UINT32_C(0x0A7E5891), UINT32_C(0x00E30EE3),
- UINT32_C(0x06E32125) },
- { UINT32_C(0x028DA023), UINT32_C(0x0757D14A), UINT32_C(0x0F1F2367),
- UINT32_C(0x071B23A0), UINT32_C(0x09FF6F22), UINT32_C(0x06AE99FC),
- UINT32_C(0x07D2FAD3), UINT32_C(0x0C60DF70), UINT32_C(0x008ADC3F),
- UINT32_C(0x090D9E92), UINT32_C(0x027C0C30), UINT32_C(0x01553F37),
- UINT32_C(0x047ACF16), UINT32_C(0x017392AB), UINT32_C(0x05D9DD01),
- UINT32_C(0x07D1EF5C), UINT32_C(0x039F6FB5), UINT32_C(0x029DC337),
- UINT32_C(0x04960195) } },
- { { UINT32_C(0x0994A7B1), UINT32_C(0x00E9A7BA), UINT32_C(0x03544C1B),
- UINT32_C(0x0606BDF6), UINT32_C(0x01F3406A), UINT32_C(0x0635C178),
- UINT32_C(0x04CA0BE9), UINT32_C(0x09B74F10), UINT32_C(0x046E4155),
- UINT32_C(0x0655718B), UINT32_C(0x06B58CFD), UINT32_C(0x00E2656C),
- UINT32_C(0x0426833D), UINT32_C(0x063C550C), UINT32_C(0x049DDCA9),
- UINT32_C(0x04F6A9FC), UINT32_C(0x0676F8FD), UINT32_C(0x07BCA38C),
- UINT32_C(0x059BDCBC) },
- { UINT32_C(0x096F6D73), UINT32_C(0x0378FAEB), UINT32_C(0x0AA2949D),
- UINT32_C(0x02979AD2), UINT32_C(0x0FD54FA0), UINT32_C(0x0358AB66),
- UINT32_C(0x012D1C2E), UINT32_C(0x0A3E9433), UINT32_C(0x012502DC),
- UINT32_C(0x0BF42C60), UINT32_C(0x02403252), UINT32_C(0x0B59A13D),
- UINT32_C(0x07CE87D8), UINT32_C(0x06EFA510), UINT32_C(0x0F316813),
- UINT32_C(0x048C6131), UINT32_C(0x0ABB4F2B), UINT32_C(0x00135CF6),
- UINT32_C(0x019B839C) } },
- { { UINT32_C(0x0CDE12CD), UINT32_C(0x01F2EE46), UINT32_C(0x096668FC),
- UINT32_C(0x06800020), UINT32_C(0x0D8D4DC3), UINT32_C(0x01F9D872),
- UINT32_C(0x0074B363), UINT32_C(0x08E353D0), UINT32_C(0x06B87B06),
- UINT32_C(0x05F1A3E4), UINT32_C(0x03D67702), UINT32_C(0x0AD5ACE9),
- UINT32_C(0x024E9994), UINT32_C(0x03C2A440), UINT32_C(0x05A6C55C),
- UINT32_C(0x045CAA47), UINT32_C(0x0AC34E77), UINT32_C(0x068E05E3),
- UINT32_C(0x0598564E) },
- { UINT32_C(0x0366B021), UINT32_C(0x017935A2), UINT32_C(0x04F773DB),
- UINT32_C(0x04629F66), UINT32_C(0x096AE2DC), UINT32_C(0x00DB3EE0),
- UINT32_C(0x05684F63), UINT32_C(0x00391BA5), UINT32_C(0x07270BBB),
- UINT32_C(0x0E28A705), UINT32_C(0x02BB0A4B), UINT32_C(0x097DCA61),
- UINT32_C(0x04E133F5), UINT32_C(0x04899B3E), UINT32_C(0x00637ACF),
- UINT32_C(0x02D4E63D), UINT32_C(0x09635CB7), UINT32_C(0x02DEDDE2),
- UINT32_C(0x02229A95) } },
- { { UINT32_C(0x0CD34315), UINT32_C(0x02E1C8DC), UINT32_C(0x067A6FB7),
- UINT32_C(0x03DB6FAE), UINT32_C(0x07281C55), UINT32_C(0x046AC647),
- UINT32_C(0x002E790C), UINT32_C(0x0F3D1BC4), UINT32_C(0x0533A625),
- UINT32_C(0x06417AC2), UINT32_C(0x018ACECE), UINT32_C(0x0B7019D6),
- UINT32_C(0x06EDA9DA), UINT32_C(0x01938AF8), UINT32_C(0x029911BB),
- UINT32_C(0x03E2995B), UINT32_C(0x0C0E3FBA), UINT32_C(0x011596D1),
- UINT32_C(0x00271C3C) },
- { UINT32_C(0x0356A25A), UINT32_C(0x072A1ED9), UINT32_C(0x0EAF77B0),
- UINT32_C(0x02B4B853), UINT32_C(0x0C759255), UINT32_C(0x02FB6C3D),
- UINT32_C(0x0704DFA8), UINT32_C(0x0D59777F), UINT32_C(0x078F4FA8),
- UINT32_C(0x03C11635), UINT32_C(0x02E52765), UINT32_C(0x02ACB74C),
- UINT32_C(0x007731B9), UINT32_C(0x0137AD56), UINT32_C(0x063A4E6E),
- UINT32_C(0x06744404), UINT32_C(0x09B78353), UINT32_C(0x04631A57),
- UINT32_C(0x018C7F7E) } },
- { { UINT32_C(0x0EAD4FF9), UINT32_C(0x05871450), UINT32_C(0x07F9BF26),
- UINT32_C(0x02BC1D4E), UINT32_C(0x00CD4484), UINT32_C(0x04EBA4AB),
- UINT32_C(0x01DEDBB8), UINT32_C(0x0E25B38D), UINT32_C(0x049D1268),
- UINT32_C(0x0D04AABB), UINT32_C(0x01AEF51D), UINT32_C(0x00829E43),
- UINT32_C(0x05402C62), UINT32_C(0x0368D70D), UINT32_C(0x03775E01),
- UINT32_C(0x04503803), UINT32_C(0x02B6C48D), UINT32_C(0x01FD101D),
- UINT32_C(0x0025FF9E) },
- { UINT32_C(0x0B8B195A), UINT32_C(0x02323FFC), UINT32_C(0x00557FA3),
- UINT32_C(0x073ED365), UINT32_C(0x0A376D54), UINT32_C(0x023A3994),
- UINT32_C(0x00F1CC64), UINT32_C(0x080DCBBA), UINT32_C(0x01BB869C),
- UINT32_C(0x084DE7DF), UINT32_C(0x03102B44), UINT32_C(0x0559CF4A),
- UINT32_C(0x0385604A), UINT32_C(0x05CB3A44), UINT32_C(0x022C8F10),
- UINT32_C(0x00AC8251), UINT32_C(0x0D40C893), UINT32_C(0x00107891),
- UINT32_C(0x06795987) } },
- { { UINT32_C(0x06920A2A), UINT32_C(0x051ED07D), UINT32_C(0x0D40A6DB),
- UINT32_C(0x004D5082), UINT32_C(0x0BB2B0B9), UINT32_C(0x046EEDFC),
- UINT32_C(0x077C4F4D), UINT32_C(0x0025B307), UINT32_C(0x00CCCEED),
- UINT32_C(0x05AD182A), UINT32_C(0x0734F059), UINT32_C(0x0B480EE5),
- UINT32_C(0x0170F1CB), UINT32_C(0x0417A672), UINT32_C(0x05B933B3),
- UINT32_C(0x0279BB07), UINT32_C(0x0341E8CB), UINT32_C(0x071F7EBF),
- UINT32_C(0x0231AF93) },
- { UINT32_C(0x01CA3CCC), UINT32_C(0x042A30AF), UINT32_C(0x0E1E55F1),
- UINT32_C(0x07A6A1AC), UINT32_C(0x0D95EC2F), UINT32_C(0x029E2CCD),
- UINT32_C(0x00847505), UINT32_C(0x0184F443), UINT32_C(0x04B6D717),
- UINT32_C(0x03764831), UINT32_C(0x043E0649), UINT32_C(0x0378A536),
- UINT32_C(0x0430CAB4), UINT32_C(0x05B08C42), UINT32_C(0x0B147E31),
- UINT32_C(0x0270B565), UINT32_C(0x056846E1), UINT32_C(0x0393806E),
- UINT32_C(0x0102687E) } },
- { { UINT32_C(0x0EB5DCD3), UINT32_C(0x0185FC5D), UINT32_C(0x03181617),
- UINT32_C(0x01479862), UINT32_C(0x0D1E00A3), UINT32_C(0x000E2351),
- UINT32_C(0x041EA413), UINT32_C(0x0EC09039), UINT32_C(0x00213EFE),
- UINT32_C(0x02085A51), UINT32_C(0x027B7641), UINT32_C(0x0EE239C0),
- UINT32_C(0x06D0F7BB), UINT32_C(0x0267C803), UINT32_C(0x0B79A7EE),
- UINT32_C(0x0681FFDF), UINT32_C(0x08DFF64B), UINT32_C(0x0688C37C),
- UINT32_C(0x03D1AE9F) },
- { UINT32_C(0x03B68E6C), UINT32_C(0x07F04BE5), UINT32_C(0x060E4D0D),
- UINT32_C(0x0534899D), UINT32_C(0x0FA52B9C), UINT32_C(0x001C4752),
- UINT32_C(0x00BCA60E), UINT32_C(0x041ED165), UINT32_C(0x01DBEB9D),
- UINT32_C(0x04BEFD90), UINT32_C(0x05B1A36F), UINT32_C(0x0C6DA7CD),
- UINT32_C(0x025F29BF), UINT32_C(0x0143D052), UINT32_C(0x099FCD3B),
- UINT32_C(0x04934EE0), UINT32_C(0x00F9287C), UINT32_C(0x06BF2174),
- UINT32_C(0x05D3AAEB) } },
- { { UINT32_C(0x0B07B1BF), UINT32_C(0x008B8614), UINT32_C(0x00E21485),
- UINT32_C(0x07064A8F), UINT32_C(0x04328BCA), UINT32_C(0x0126ADF3),
- UINT32_C(0x07D9CEFE), UINT32_C(0x0B5FE8D9), UINT32_C(0x03B144E7),
- UINT32_C(0x0FF1E126), UINT32_C(0x06AF8F59), UINT32_C(0x07A6CE02),
- UINT32_C(0x07F9BE52), UINT32_C(0x003588EF), UINT32_C(0x0EFF3D3A),
- UINT32_C(0x052C77D2), UINT32_C(0x010CACE8), UINT32_C(0x05B1B51F),
- UINT32_C(0x06F19D06) },
- { UINT32_C(0x042166D8), UINT32_C(0x04CD028C), UINT32_C(0x039C24AE),
- UINT32_C(0x02C03F19), UINT32_C(0x067F4B98), UINT32_C(0x020FC733),
- UINT32_C(0x01DAB42C), UINT32_C(0x02FF3B82), UINT32_C(0x048BCF28),
- UINT32_C(0x019BFE25), UINT32_C(0x05777D5F), UINT32_C(0x06871AF8),
- UINT32_C(0x04139F9E), UINT32_C(0x07211D99), UINT32_C(0x0AD09893),
- UINT32_C(0x01E0FD46), UINT32_C(0x02906E37), UINT32_C(0x028275DB),
- UINT32_C(0x046A1575) } },
- { { UINT32_C(0x08AA3834), UINT32_C(0x06C07864), UINT32_C(0x0E044947),
- UINT32_C(0x03335EFD), UINT32_C(0x067B5E62), UINT32_C(0x034C6315),
- UINT32_C(0x07572306), UINT32_C(0x07CFC444), UINT32_C(0x01B85C68),
- UINT32_C(0x04AE9317), UINT32_C(0x004244BB), UINT32_C(0x02B9387A),
- UINT32_C(0x07EC501D), UINT32_C(0x030A85A4), UINT32_C(0x035462ED),
- UINT32_C(0x0713AD0C), UINT32_C(0x053851AC), UINT32_C(0x02FE3E5B),
- UINT32_C(0x06B40EB3) },
- { UINT32_C(0x053E08C6), UINT32_C(0x05772205), UINT32_C(0x030BB610),
- UINT32_C(0x008EE615), UINT32_C(0x0B7E6CE7), UINT32_C(0x00783E50),
- UINT32_C(0x0096806A), UINT32_C(0x066126FD), UINT32_C(0x051C1C80),
- UINT32_C(0x0ECBCD5E), UINT32_C(0x03A28DED), UINT32_C(0x08FD6395),
- UINT32_C(0x022A192F), UINT32_C(0x0736A4A0), UINT32_C(0x01369C64),
- UINT32_C(0x02AB6ECE), UINT32_C(0x06E0E541), UINT32_C(0x03248146),
- UINT32_C(0x00948603) } },
- { { UINT32_C(0x069B34EA), UINT32_C(0x0336603F), UINT32_C(0x06DBFFB7),
- UINT32_C(0x0300F54C), UINT32_C(0x03402123), UINT32_C(0x04E1356D),
- UINT32_C(0x04422E8C), UINT32_C(0x0C555F86), UINT32_C(0x065AB272),
- UINT32_C(0x053F830F), UINT32_C(0x0579A41E), UINT32_C(0x0FEFEF91),
- UINT32_C(0x004E0795), UINT32_C(0x016107F9), UINT32_C(0x08D654BD),
- UINT32_C(0x04ABFECE), UINT32_C(0x06C9D84D), UINT32_C(0x03813525),
- UINT32_C(0x07CB6F50) },
- { UINT32_C(0x09047156), UINT32_C(0x010B8EB7), UINT32_C(0x0CC6FC83),
- UINT32_C(0x0431B14F), UINT32_C(0x03572502), UINT32_C(0x076096FF),
- UINT32_C(0x0028C298), UINT32_C(0x066F3BBA), UINT32_C(0x00B06491),
- UINT32_C(0x0665164A), UINT32_C(0x04A5A55D), UINT32_C(0x02DAC096),
- UINT32_C(0x03E71E1C), UINT32_C(0x0256A93B), UINT32_C(0x04C0530A),
- UINT32_C(0x062EDF21), UINT32_C(0x0F59E8F8), UINT32_C(0x019409ED),
- UINT32_C(0x07A2F4BF) } },
- { { UINT32_C(0x0665B1CF), UINT32_C(0x0034F110), UINT32_C(0x0E6E0C55),
- UINT32_C(0x05548084), UINT32_C(0x0CB9C817), UINT32_C(0x010A8F87),
- UINT32_C(0x012A9C49), UINT32_C(0x0982F57E), UINT32_C(0x00D5BB56),
- UINT32_C(0x0649D707), UINT32_C(0x00C86A10), UINT32_C(0x0C3ED33B),
- UINT32_C(0x065AEDD0), UINT32_C(0x061D08CC), UINT32_C(0x010AAD5D),
- UINT32_C(0x015E11C5), UINT32_C(0x0CE68252), UINT32_C(0x03DCA282),
- UINT32_C(0x023E7D61) },
- { UINT32_C(0x094CC511), UINT32_C(0x053544CA), UINT32_C(0x067DDC2E),
- UINT32_C(0x022C5BA7), UINT32_C(0x0E503DBC), UINT32_C(0x06CD2E73),
- UINT32_C(0x058CE06F), UINT32_C(0x072AA3E8), UINT32_C(0x06DB1977),
- UINT32_C(0x04494EBF), UINT32_C(0x00968BBC), UINT32_C(0x02E8F607),
- UINT32_C(0x06F93369), UINT32_C(0x00836553), UINT32_C(0x05A73753),
- UINT32_C(0x03A8B586), UINT32_C(0x00A046AC), UINT32_C(0x0211F089),
- UINT32_C(0x0389954D) } },
- { { UINT32_C(0x0BB13D25), UINT32_C(0x023A4F60), UINT32_C(0x05B894C3),
- UINT32_C(0x01F6CF6C), UINT32_C(0x0F316A82), UINT32_C(0x07269483),
- UINT32_C(0x0724D1FF), UINT32_C(0x081060C2), UINT32_C(0x07213116),
- UINT32_C(0x0B65307F), UINT32_C(0x06CB9993), UINT32_C(0x04580D3B),
- UINT32_C(0x064521E7), UINT32_C(0x07FA9810), UINT32_C(0x00B180DF),
- UINT32_C(0x058701A7), UINT32_C(0x08BFB845), UINT32_C(0x0175BF68),
- UINT32_C(0x02BF1464) },
- { UINT32_C(0x04B66F01), UINT32_C(0x059EAFDA), UINT32_C(0x02EB7B38),
- UINT32_C(0x0382ED4B), UINT32_C(0x0D3E8A47), UINT32_C(0x061E1C44),
- UINT32_C(0x06369F05), UINT32_C(0x0221CD6C), UINT32_C(0x033836B4),
- UINT32_C(0x0580C2E2), UINT32_C(0x071C3002), UINT32_C(0x0C51E97D),
- UINT32_C(0x06D684C3), UINT32_C(0x074D62F1), UINT32_C(0x0851439A),
- UINT32_C(0x038AB710), UINT32_C(0x0300D39E), UINT32_C(0x0390C464),
- UINT32_C(0x04D98E09) } },
- { { UINT32_C(0x0140A004), UINT32_C(0x00D68C0B), UINT32_C(0x080890B3),
- UINT32_C(0x07D532CC), UINT32_C(0x05EC2C5B), UINT32_C(0x065415DB),
- UINT32_C(0x021CBEF3), UINT32_C(0x0C92C4C7), UINT32_C(0x002C11E2),
- UINT32_C(0x087FFDBE), UINT32_C(0x00BBD5AB), UINT32_C(0x0D3147C6),
- UINT32_C(0x027322CF), UINT32_C(0x048AE30E), UINT32_C(0x0A78BD27),
- UINT32_C(0x06E52637), UINT32_C(0x0F79BB43), UINT32_C(0x05C2CDD9),
- UINT32_C(0x03AEDAB1) },
- { UINT32_C(0x01F8F797), UINT32_C(0x05E078E8), UINT32_C(0x0A430953),
- UINT32_C(0x079FE860), UINT32_C(0x098B3236), UINT32_C(0x00A0033B),
- UINT32_C(0x0311C26A), UINT32_C(0x02325326), UINT32_C(0x021CEBBC),
- UINT32_C(0x01C498E4), UINT32_C(0x02365440), UINT32_C(0x091FBA94),
- UINT32_C(0x017487BB), UINT32_C(0x0321A8D5), UINT32_C(0x071AEF9F),
- UINT32_C(0x047D457D), UINT32_C(0x01BCFB0E), UINT32_C(0x0071F7BC),
- UINT32_C(0x075AEFAA) } },
- { { UINT32_C(0x0C98DFAE), UINT32_C(0x01C5257A), UINT32_C(0x06506435),
- UINT32_C(0x00916D1A), UINT32_C(0x0D65B633), UINT32_C(0x06BAC13A),
- UINT32_C(0x013D2F72), UINT32_C(0x0B8C7FD1), UINT32_C(0x0068E619),
- UINT32_C(0x0C30A25B), UINT32_C(0x016EBDF8), UINT32_C(0x0D8A2E42),
- UINT32_C(0x01E2AB8D), UINT32_C(0x07855AFB), UINT32_C(0x01F15FBB),
- UINT32_C(0x01DA4917), UINT32_C(0x074DB277), UINT32_C(0x030BAC3C),
- UINT32_C(0x01B1B048) },
- { UINT32_C(0x00C92FB5), UINT32_C(0x00781A5F), UINT32_C(0x0B53EE11),
- UINT32_C(0x04366DE3), UINT32_C(0x0D7AFCA1), UINT32_C(0x04C3CAB8),
- UINT32_C(0x031EB35F), UINT32_C(0x00CDDA16), UINT32_C(0x05DB2AA4),
- UINT32_C(0x0EEC79C5), UINT32_C(0x0123CDB1), UINT32_C(0x0A41DC06),
- UINT32_C(0x06880096), UINT32_C(0x069843C8), UINT32_C(0x0CF78DBD),
- UINT32_C(0x0751C797), UINT32_C(0x0381D873), UINT32_C(0x055DD420),
- UINT32_C(0x011ED33F) } },
- { { UINT32_C(0x0629DD22), UINT32_C(0x0329136A), UINT32_C(0x0F4C3A86),
- UINT32_C(0x02DF1D68), UINT32_C(0x0629460E), UINT32_C(0x04615D04),
- UINT32_C(0x06370A73), UINT32_C(0x0FF4CD28), UINT32_C(0x031AD006),
- UINT32_C(0x08F7AAC2), UINT32_C(0x05792159), UINT32_C(0x0680FF31),
- UINT32_C(0x04E1BAE8), UINT32_C(0x02E9B2B2), UINT32_C(0x0033BF36),
- UINT32_C(0x07DA8F9E), UINT32_C(0x0C93AB40), UINT32_C(0x01D743F3),
- UINT32_C(0x07644D30) },
- { UINT32_C(0x075200EB), UINT32_C(0x07C0784F), UINT32_C(0x0BE5A2EF),
- UINT32_C(0x002C4071), UINT32_C(0x0BB7DD65), UINT32_C(0x004ADBD2),
- UINT32_C(0x040D6568), UINT32_C(0x0F9A3BB6), UINT32_C(0x003E18E7),
- UINT32_C(0x0B2FA6B5), UINT32_C(0x04ED429F), UINT32_C(0x06091338),
- UINT32_C(0x01D161FD), UINT32_C(0x00454AAD), UINT32_C(0x0CAE06AA),
- UINT32_C(0x04E95021), UINT32_C(0x04523C5D), UINT32_C(0x041594F0),
- UINT32_C(0x065084CD) } },
- { { UINT32_C(0x002145D7), UINT32_C(0x047D8374), UINT32_C(0x0467ABA3),
- UINT32_C(0x051CC3F5), UINT32_C(0x0483BB69), UINT32_C(0x05CC8B8E),
- UINT32_C(0x00E452BD), UINT32_C(0x04333A28), UINT32_C(0x04F1A76A),
- UINT32_C(0x0CC64EC5), UINT32_C(0x05D9332C), UINT32_C(0x0E975BFD),
- UINT32_C(0x036AEA82), UINT32_C(0x03B66BE1), UINT32_C(0x0C8D0897),
- UINT32_C(0x00F4E2EA), UINT32_C(0x0E84A7FD), UINT32_C(0x04F8C351),
- UINT32_C(0x03B65097) },
- { UINT32_C(0x0DDB406F), UINT32_C(0x00890ADF), UINT32_C(0x03BBC60E),
- UINT32_C(0x01C0CA21), UINT32_C(0x0A76C2EF), UINT32_C(0x01695DF8),
- UINT32_C(0x07073F32), UINT32_C(0x0EED6813), UINT32_C(0x014D6ADC),
- UINT32_C(0x0AD30E57), UINT32_C(0x0080597C), UINT32_C(0x051E8314),
- UINT32_C(0x02334D30), UINT32_C(0x01C9AC19), UINT32_C(0x0D628FAA),
- UINT32_C(0x03467107), UINT32_C(0x027B5A2C), UINT32_C(0x07FE2414),
- UINT32_C(0x06D835AF) } },
- },
- {
- { { UINT32_C(0x0EF34144), UINT32_C(0x030D91DC), UINT32_C(0x05517757),
- UINT32_C(0x007F4856), UINT32_C(0x07EAF164), UINT32_C(0x058E3931),
- UINT32_C(0x0713CF7A), UINT32_C(0x0D5B04EB), UINT32_C(0x0416E9E6),
- UINT32_C(0x02479D66), UINT32_C(0x03230F77), UINT32_C(0x0E9111E0),
- UINT32_C(0x004A4528), UINT32_C(0x02C7F7D1), UINT32_C(0x02C19F36),
- UINT32_C(0x0456B2EE), UINT32_C(0x083CA160), UINT32_C(0x04377D25),
- UINT32_C(0x02CC5D8D) },
- { UINT32_C(0x024FDE34), UINT32_C(0x056A1AF8), UINT32_C(0x04A1F978),
- UINT32_C(0x07F66131), UINT32_C(0x09CCCEFE), UINT32_C(0x056AE73E),
- UINT32_C(0x0373907A), UINT32_C(0x08E4DFA2), UINT32_C(0x06104B90),
- UINT32_C(0x0CB65FE3), UINT32_C(0x0157AEF0), UINT32_C(0x0346E5AE),
- UINT32_C(0x06A8D9D0), UINT32_C(0x034F592B), UINT32_C(0x06A50F43),
- UINT32_C(0x03B946D2), UINT32_C(0x0B23CFAE), UINT32_C(0x01428E19),
- UINT32_C(0x01E96239) } },
- { { UINT32_C(0x0FF5FDD9), UINT32_C(0x06FD0B27), UINT32_C(0x0E5375B8),
- UINT32_C(0x02903F56), UINT32_C(0x0A0998F1), UINT32_C(0x04C7F7A7),
- UINT32_C(0x07B849C2), UINT32_C(0x01F684C1), UINT32_C(0x03D27FA7),
- UINT32_C(0x0ECDF852), UINT32_C(0x067A0FF9), UINT32_C(0x01170172),
- UINT32_C(0x06847341), UINT32_C(0x0384EC35), UINT32_C(0x097FA0B1),
- UINT32_C(0x056D5954), UINT32_C(0x0811FE39), UINT32_C(0x03141A8E),
- UINT32_C(0x03197AAF) },
- { UINT32_C(0x06B64713), UINT32_C(0x01EA477B), UINT32_C(0x0401B800),
- UINT32_C(0x056A093F), UINT32_C(0x0B18523C), UINT32_C(0x05FBF38B),
- UINT32_C(0x0000837C), UINT32_C(0x0205CC9C), UINT32_C(0x0211586E),
- UINT32_C(0x00E95959), UINT32_C(0x011034DB), UINT32_C(0x0705835C),
- UINT32_C(0x0534A7CA), UINT32_C(0x01BEEAE0), UINT32_C(0x011191B1),
- UINT32_C(0x06AC6C8E), UINT32_C(0x0F65A0B0), UINT32_C(0x01E452CE),
- UINT32_C(0x07AA591C) } },
- { { UINT32_C(0x04BE78BD), UINT32_C(0x06F41AA4), UINT32_C(0x09895DC2),
- UINT32_C(0x05E43C02), UINT32_C(0x0F5ED50D), UINT32_C(0x0055BA85),
- UINT32_C(0x04B88B8C), UINT32_C(0x07C05237), UINT32_C(0x06B089B3),
- UINT32_C(0x09D41AEF), UINT32_C(0x07A77F2E), UINT32_C(0x0B03794F),
- UINT32_C(0x0272136B), UINT32_C(0x013E2617), UINT32_C(0x039B53A2),
- UINT32_C(0x04704526), UINT32_C(0x0958114F), UINT32_C(0x01DF2245),
- UINT32_C(0x0736ACD3) },
- { UINT32_C(0x020FED74), UINT32_C(0x0142B2B5), UINT32_C(0x00BC648B),
- UINT32_C(0x045D8303), UINT32_C(0x01238CE7), UINT32_C(0x041E6696),
- UINT32_C(0x07794FE3), UINT32_C(0x02BC0623), UINT32_C(0x04D21409),
- UINT32_C(0x05FABD03), UINT32_C(0x074FAEA0), UINT32_C(0x08FD5BE6),
- UINT32_C(0x041F41AC), UINT32_C(0x046062AA), UINT32_C(0x06780730),
- UINT32_C(0x035F4E6F), UINT32_C(0x016D4890), UINT32_C(0x05B93E77),
- UINT32_C(0x01E38302) } },
- { { UINT32_C(0x0736B7A8), UINT32_C(0x049E4056), UINT32_C(0x01935194),
- UINT32_C(0x056AFE87), UINT32_C(0x0526EB80), UINT32_C(0x0763756F),
- UINT32_C(0x0438F678), UINT32_C(0x074903F5), UINT32_C(0x0305EF19),
- UINT32_C(0x0434448D), UINT32_C(0x05186915), UINT32_C(0x00E55244),
- UINT32_C(0x017BD6D1), UINT32_C(0x0747C684), UINT32_C(0x0FEE9906),
- UINT32_C(0x07BEA2FE), UINT32_C(0x04C3FEC5), UINT32_C(0x05EAB892),
- UINT32_C(0x03E3B341) },
- { UINT32_C(0x0DEF19D6), UINT32_C(0x03A56FE1), UINT32_C(0x09F33CC0),
- UINT32_C(0x03E3A7C9), UINT32_C(0x04712359), UINT32_C(0x02515669),
- UINT32_C(0x035C962B), UINT32_C(0x08C45240), UINT32_C(0x033CCA10),
- UINT32_C(0x06965FA2), UINT32_C(0x04F88D82), UINT32_C(0x0FDE595A),
- UINT32_C(0x0241F5B1), UINT32_C(0x03F203E1), UINT32_C(0x0BB7CDF8),
- UINT32_C(0x046409AD), UINT32_C(0x08E4A186), UINT32_C(0x01723DD8),
- UINT32_C(0x02B93AF0) } },
- { { UINT32_C(0x0FACC519), UINT32_C(0x027F5A2C), UINT32_C(0x0CA8C450),
- UINT32_C(0x03EC651F), UINT32_C(0x0B47E880), UINT32_C(0x01B9DB47),
- UINT32_C(0x06895D1C), UINT32_C(0x0F1857B2), UINT32_C(0x06CC04B3),
- UINT32_C(0x01C2D89D), UINT32_C(0x04525759), UINT32_C(0x0B6EACB4),
- UINT32_C(0x07770FC8), UINT32_C(0x04A7FC79), UINT32_C(0x03B56F1C),
- UINT32_C(0x0248A360), UINT32_C(0x0A73C4C6), UINT32_C(0x04BA5188),
- UINT32_C(0x0400E477) },
- { UINT32_C(0x0AEA3E6E), UINT32_C(0x05DA167B), UINT32_C(0x02C8D4B1),
- UINT32_C(0x074DB11C), UINT32_C(0x05DB2724), UINT32_C(0x04492C83),
- UINT32_C(0x00B62A05), UINT32_C(0x03A036B6), UINT32_C(0x07BC9211),
- UINT32_C(0x05739939), UINT32_C(0x00FD8C64), UINT32_C(0x0E68B0EC),
- UINT32_C(0x050FC3F3), UINT32_C(0x0446466F), UINT32_C(0x0A598C89),
- UINT32_C(0x062CB99D), UINT32_C(0x0C97B1FA), UINT32_C(0x077F1F42),
- UINT32_C(0x051B5A92) } },
- { { UINT32_C(0x09C36058), UINT32_C(0x05929A37), UINT32_C(0x079147E4),
- UINT32_C(0x0546B4E8), UINT32_C(0x0C41B43A), UINT32_C(0x05F16140),
- UINT32_C(0x0124A189), UINT32_C(0x0D01EFB0), UINT32_C(0x00FCDC74),
- UINT32_C(0x0D3E796F), UINT32_C(0x0597A54B), UINT32_C(0x097F7DE8),
- UINT32_C(0x0677C89A), UINT32_C(0x036C6165), UINT32_C(0x0DFFFA33),
- UINT32_C(0x0782CAAE), UINT32_C(0x07E6FE65), UINT32_C(0x04887038),
- UINT32_C(0x0636D482) },
- { UINT32_C(0x071EFA02), UINT32_C(0x07F91B7E), UINT32_C(0x0950028E),
- UINT32_C(0x069527C7), UINT32_C(0x09CE6F6C), UINT32_C(0x01FEEAA0),
- UINT32_C(0x014DED92), UINT32_C(0x0D94B717), UINT32_C(0x014B513D),
- UINT32_C(0x0A97F421), UINT32_C(0x075448FA), UINT32_C(0x041A5F24),
- UINT32_C(0x0721201F), UINT32_C(0x0444C83A), UINT32_C(0x07F6AE04),
- UINT32_C(0x030824B5), UINT32_C(0x0246F2D9), UINT32_C(0x05F21CD9),
- UINT32_C(0x06817477) } },
- { { UINT32_C(0x0DDEF055), UINT32_C(0x01C63F00), UINT32_C(0x0570BDE9),
- UINT32_C(0x07433A8A), UINT32_C(0x099522A9), UINT32_C(0x051DEDFE),
- UINT32_C(0x01712838), UINT32_C(0x0C8ECC33), UINT32_C(0x04846773),
- UINT32_C(0x0D5E2042), UINT32_C(0x017373E7), UINT32_C(0x04742EE4),
- UINT32_C(0x01053131), UINT32_C(0x01BD8B10), UINT32_C(0x01A5A425),
- UINT32_C(0x072BB78A), UINT32_C(0x01A26990), UINT32_C(0x02CD45F0),
- UINT32_C(0x03124D19) },
- { UINT32_C(0x01A2F1BD), UINT32_C(0x02C1057A), UINT32_C(0x07B6C2D1),
- UINT32_C(0x00B79FA6), UINT32_C(0x09B44B1B), UINT32_C(0x0428D7E8),
- UINT32_C(0x04C94C23), UINT32_C(0x0DFB15C5), UINT32_C(0x02F5DBF7),
- UINT32_C(0x0BC452A9), UINT32_C(0x044F06AF), UINT32_C(0x06C3295D),
- UINT32_C(0x0661CB9B), UINT32_C(0x0001E990), UINT32_C(0x022A6D5E),
- UINT32_C(0x03420E57), UINT32_C(0x0D5E7F7E), UINT32_C(0x0593D853),
- UINT32_C(0x00938C95) } },
- { { UINT32_C(0x0899A80A), UINT32_C(0x063E3726), UINT32_C(0x08972EC5),
- UINT32_C(0x037C93BE), UINT32_C(0x031E1342), UINT32_C(0x07C51EDF),
- UINT32_C(0x03702DD4), UINT32_C(0x086F89E1), UINT32_C(0x047EBB47),
- UINT32_C(0x06A291B7), UINT32_C(0x0685EBFA), UINT32_C(0x0EF566F4),
- UINT32_C(0x02FC8735), UINT32_C(0x03A7F885), UINT32_C(0x0963A567),
- UINT32_C(0x02DEC9A4), UINT32_C(0x033285D3), UINT32_C(0x0049779E),
- UINT32_C(0x05AB7D24) },
- { UINT32_C(0x04E67976), UINT32_C(0x03AD342E), UINT32_C(0x006D58B0),
- UINT32_C(0x0490C968), UINT32_C(0x0428E13C), UINT32_C(0x0183F7B5),
- UINT32_C(0x0168EF02), UINT32_C(0x031E9F33), UINT32_C(0x079C2D32),
- UINT32_C(0x0EC6C4B2), UINT32_C(0x06334DE3), UINT32_C(0x04E10D5F),
- UINT32_C(0x0431C81B), UINT32_C(0x001EE024), UINT32_C(0x01F6A3D0),
- UINT32_C(0x0009B04D), UINT32_C(0x0A95C815), UINT32_C(0x06C721B5),
- UINT32_C(0x07DEE1A8) } },
- { { UINT32_C(0x0C112CB8), UINT32_C(0x00691E2E), UINT32_C(0x01DBEB00),
- UINT32_C(0x077CCE8A), UINT32_C(0x03E91FE4), UINT32_C(0x0690BBBF),
- UINT32_C(0x0577CA8A), UINT32_C(0x00B5C974), UINT32_C(0x029377A0),
- UINT32_C(0x06FDF488), UINT32_C(0x00872436), UINT32_C(0x0506D32E),
- UINT32_C(0x055C17BB), UINT32_C(0x03B00666), UINT32_C(0x0D26AAA8),
- UINT32_C(0x03829C3F), UINT32_C(0x08B67A64), UINT32_C(0x0475D296),
- UINT32_C(0x027FEFC5) },
- { UINT32_C(0x06814D18), UINT32_C(0x01588692), UINT32_C(0x0D4F0EDD),
- UINT32_C(0x007DFA60), UINT32_C(0x042E603A), UINT32_C(0x00885394),
- UINT32_C(0x05F797E2), UINT32_C(0x041238B4), UINT32_C(0x052305E5),
- UINT32_C(0x0D9515E8), UINT32_C(0x05B10FCD), UINT32_C(0x08F6C6F8),
- UINT32_C(0x043FB734), UINT32_C(0x014BE940), UINT32_C(0x0E882EEE),
- UINT32_C(0x0077B050), UINT32_C(0x02093150), UINT32_C(0x05A0B712),
- UINT32_C(0x06E640E8) } },
- { { UINT32_C(0x0BE77EA4), UINT32_C(0x03634A86), UINT32_C(0x01F8DFF4),
- UINT32_C(0x005A0F6B), UINT32_C(0x0D30990A), UINT32_C(0x0712090D),
- UINT32_C(0x048C153A), UINT32_C(0x029E8CA3), UINT32_C(0x052B7982),
- UINT32_C(0x01355D1B), UINT32_C(0x00109FDB), UINT32_C(0x029EF3CE),
- UINT32_C(0x02FA1090), UINT32_C(0x033F025F), UINT32_C(0x03D1969F),
- UINT32_C(0x052EDB5F), UINT32_C(0x04D2BEF3), UINT32_C(0x06BF5DE5),
- UINT32_C(0x00C8983F) },
- { UINT32_C(0x04B8EB93), UINT32_C(0x0058C176), UINT32_C(0x00A13CB4),
- UINT32_C(0x053DF577), UINT32_C(0x0156AEB4), UINT32_C(0x005E3851),
- UINT32_C(0x069CEAE2), UINT32_C(0x0030FF4F), UINT32_C(0x001DA227),
- UINT32_C(0x05AF81D3), UINT32_C(0x03D80D8D), UINT32_C(0x0A3E8600),
- UINT32_C(0x03D228FC), UINT32_C(0x0665245C), UINT32_C(0x09E5CE2E),
- UINT32_C(0x03843A9B), UINT32_C(0x02F2D31B), UINT32_C(0x041832DC),
- UINT32_C(0x02E66351) } },
- { { UINT32_C(0x05730C8D), UINT32_C(0x06092618), UINT32_C(0x079F5AFA),
- UINT32_C(0x06F3E0CF), UINT32_C(0x092BC672), UINT32_C(0x0276DE36),
- UINT32_C(0x02D07EDC), UINT32_C(0x0FC6A29F), UINT32_C(0x0486EFA2),
- UINT32_C(0x0909E264), UINT32_C(0x056F98E8), UINT32_C(0x08A33777),
- UINT32_C(0x007820C7), UINT32_C(0x07E651CF), UINT32_C(0x0928B418),
- UINT32_C(0x05EF7EA1), UINT32_C(0x0BE35987), UINT32_C(0x023FE702),
- UINT32_C(0x04B874D9) },
- { UINT32_C(0x001A8D36), UINT32_C(0x03FC40DA), UINT32_C(0x00561AB4),
- UINT32_C(0x036E4547), UINT32_C(0x0D462FB9), UINT32_C(0x07B2E89D),
- UINT32_C(0x0616BF2B), UINT32_C(0x02FA3373), UINT32_C(0x067EE578),
- UINT32_C(0x02B81792), UINT32_C(0x03A32F95), UINT32_C(0x019591EC),
- UINT32_C(0x047F05AA), UINT32_C(0x058E2F29), UINT32_C(0x04CECEE9),
- UINT32_C(0x07DF3632), UINT32_C(0x02BFB16E), UINT32_C(0x03AB1AD0),
- UINT32_C(0x0610FCE9) } },
- { { UINT32_C(0x0CE87EAC), UINT32_C(0x00235BF1), UINT32_C(0x0EAE0AF1),
- UINT32_C(0x03D89DD3), UINT32_C(0x0B789073), UINT32_C(0x01AC0815),
- UINT32_C(0x055721C2), UINT32_C(0x0B2BAD77), UINT32_C(0x05787CF1),
- UINT32_C(0x00C70041), UINT32_C(0x00EEE049), UINT32_C(0x0D01B922),
- UINT32_C(0x022A24F8), UINT32_C(0x0317FAC7), UINT32_C(0x0D5F402C),
- UINT32_C(0x0439541B), UINT32_C(0x07D56CC2), UINT32_C(0x00EB80BF),
- UINT32_C(0x00E40AA6) },
- { UINT32_C(0x0A01F6F0), UINT32_C(0x020DA18A), UINT32_C(0x073C68C0),
- UINT32_C(0x05338AFA), UINT32_C(0x0DDC8CB0), UINT32_C(0x001C0CED),
- UINT32_C(0x07A82BBC), UINT32_C(0x081BF5E1), UINT32_C(0x00B876DD),
- UINT32_C(0x09864ED3), UINT32_C(0x07F89153), UINT32_C(0x0A066C82),
- UINT32_C(0x042461BC), UINT32_C(0x07592D13), UINT32_C(0x02DBFA28),
- UINT32_C(0x0371D64F), UINT32_C(0x0326B139), UINT32_C(0x0545030E),
- UINT32_C(0x03B02EDD) } },
- { { UINT32_C(0x0C8AA41D), UINT32_C(0x02999435), UINT32_C(0x011470BE),
- UINT32_C(0x02448ABD), UINT32_C(0x0C3A559A), UINT32_C(0x03DE4EDA),
- UINT32_C(0x0267ACAB), UINT32_C(0x05B64BAF), UINT32_C(0x06167A36),
- UINT32_C(0x080925DF), UINT32_C(0x0748EB2E), UINT32_C(0x0262E572),
- UINT32_C(0x06655A71), UINT32_C(0x02DC7E31), UINT32_C(0x009FA448),
- UINT32_C(0x05991E95), UINT32_C(0x0FA3D04A), UINT32_C(0x0484BE25),
- UINT32_C(0x0438E396) },
- { UINT32_C(0x044C41BB), UINT32_C(0x02EFDFC2), UINT32_C(0x0F459DA9),
- UINT32_C(0x04A94A2D), UINT32_C(0x03F47C03), UINT32_C(0x07FA71AF),
- UINT32_C(0x03DC178C), UINT32_C(0x0129963B), UINT32_C(0x021E1FD4),
- UINT32_C(0x0E7487EB), UINT32_C(0x00C3DDB0), UINT32_C(0x06EE0434),
- UINT32_C(0x06D2712F), UINT32_C(0x07842656), UINT32_C(0x013F8F26),
- UINT32_C(0x01F9766F), UINT32_C(0x061BD12C), UINT32_C(0x02B96EB7),
- UINT32_C(0x01F8FA20) } },
- { { UINT32_C(0x0FB80E07), UINT32_C(0x050B08F2), UINT32_C(0x064554C9),
- UINT32_C(0x078E1F81), UINT32_C(0x09ED8841), UINT32_C(0x0596ADC2),
- UINT32_C(0x034DF164), UINT32_C(0x020E6E12), UINT32_C(0x018EDA4D),
- UINT32_C(0x0174E31B), UINT32_C(0x03B107F1), UINT32_C(0x010EC155),
- UINT32_C(0x07FA899A), UINT32_C(0x0717505D), UINT32_C(0x05819825),
- UINT32_C(0x0542EC55), UINT32_C(0x038DD6D7), UINT32_C(0x0497E5A0),
- UINT32_C(0x03081495) },
- { UINT32_C(0x064986F4), UINT32_C(0x03BD600B), UINT32_C(0x04B78E0D),
- UINT32_C(0x0098465F), UINT32_C(0x0E7E78C0), UINT32_C(0x0127CC0E),
- UINT32_C(0x07A3BC64), UINT32_C(0x001DBF18), UINT32_C(0x06A78B45),
- UINT32_C(0x0D3A5A6B), UINT32_C(0x0682C6C2), UINT32_C(0x0B8EE95B),
- UINT32_C(0x066E64B3), UINT32_C(0x04178CB0), UINT32_C(0x0FC2F66E),
- UINT32_C(0x04EABB3C), UINT32_C(0x084AF2DE), UINT32_C(0x04C297C1),
- UINT32_C(0x0136B06E) } },
- { { UINT32_C(0x07DF6D6E), UINT32_C(0x01F00ED6), UINT32_C(0x02705D3E),
- UINT32_C(0x038023D6), UINT32_C(0x0A85D53D), UINT32_C(0x01C4664A),
- UINT32_C(0x0610B36C), UINT32_C(0x02BAE274), UINT32_C(0x03566DBB),
- UINT32_C(0x0854659C), UINT32_C(0x00F106D4), UINT32_C(0x09D0A630),
- UINT32_C(0x01B5D98A), UINT32_C(0x01B27CA8), UINT32_C(0x0F254343),
- UINT32_C(0x075491B9), UINT32_C(0x025D2274), UINT32_C(0x04F17B63),
- UINT32_C(0x06865DA3) },
- { UINT32_C(0x0D4C1CFE), UINT32_C(0x0612B559), UINT32_C(0x0D29CCC2),
- UINT32_C(0x06835607), UINT32_C(0x0E442A4F), UINT32_C(0x003F2EA3),
- UINT32_C(0x04DA7E80), UINT32_C(0x079ABF17), UINT32_C(0x062A7A50),
- UINT32_C(0x0FE31E03), UINT32_C(0x044D195D), UINT32_C(0x01A9DC51),
- UINT32_C(0x05B8C361), UINT32_C(0x06390D3D), UINT32_C(0x0544BD42),
- UINT32_C(0x02DB7A09), UINT32_C(0x0367E705), UINT32_C(0x01B34C53),
- UINT32_C(0x055F8181) } },
- { { UINT32_C(0x0F3F00C1), UINT32_C(0x04C36A17), UINT32_C(0x0CB05A60),
- UINT32_C(0x05742C4B), UINT32_C(0x029DC7BA), UINT32_C(0x00946765),
- UINT32_C(0x01F6280B), UINT32_C(0x0A250657), UINT32_C(0x057853BE),
- UINT32_C(0x027C17D4), UINT32_C(0x061E6EE7), UINT32_C(0x068934C0),
- UINT32_C(0x0225275D), UINT32_C(0x004E706A), UINT32_C(0x08A0E33D),
- UINT32_C(0x02EFB382), UINT32_C(0x0231B332), UINT32_C(0x045E20A6),
- UINT32_C(0x076538EE) },
- { UINT32_C(0x072461C9), UINT32_C(0x071D932B), UINT32_C(0x099D4C01),
- UINT32_C(0x0401E666), UINT32_C(0x07DB6FB0), UINT32_C(0x049F43E4),
- UINT32_C(0x056167EA), UINT32_C(0x0D49C41D), UINT32_C(0x05F10CA9),
- UINT32_C(0x080EC5BB), UINT32_C(0x05C98C31), UINT32_C(0x01E1F452),
- UINT32_C(0x07E42338), UINT32_C(0x04049AA9), UINT32_C(0x032E5588),
- UINT32_C(0x01E28C9C), UINT32_C(0x04BCDC8D), UINT32_C(0x04309C54),
- UINT32_C(0x02042514) } },
- },
- {
- { { UINT32_C(0x02648196), UINT32_C(0x01BF352B), UINT32_C(0x0FCEC15F),
- UINT32_C(0x02D3A085), UINT32_C(0x011002A5), UINT32_C(0x026E7651),
- UINT32_C(0x021C2A73), UINT32_C(0x0E3392B7), UINT32_C(0x01A26456),
- UINT32_C(0x00E05940), UINT32_C(0x05C6D0D8), UINT32_C(0x085D0F62),
- UINT32_C(0x03B743E5), UINT32_C(0x05B2C76F), UINT32_C(0x0B270AB3),
- UINT32_C(0x076B0EF8), UINT32_C(0x0E5EF80C), UINT32_C(0x0751E040),
- UINT32_C(0x0769C73A) },
- { UINT32_C(0x0D9BC7BB), UINT32_C(0x01B398D4), UINT32_C(0x094E3D5E),
- UINT32_C(0x0679261C), UINT32_C(0x0F579BC0), UINT32_C(0x0087234F),
- UINT32_C(0x01C48CDA), UINT32_C(0x01065BB9), UINT32_C(0x04A8A1F3),
- UINT32_C(0x097D469B), UINT32_C(0x046FC17A), UINT32_C(0x00CAE969),
- UINT32_C(0x02E690B5), UINT32_C(0x0187C437), UINT32_C(0x000FCD13),
- UINT32_C(0x07C0FA30), UINT32_C(0x02F0D63C), UINT32_C(0x0583AE53),
- UINT32_C(0x036A77FE) } },
- { { UINT32_C(0x01DE62A2), UINT32_C(0x03B6F417), UINT32_C(0x08D8470C),
- UINT32_C(0x041AB290), UINT32_C(0x0D3155E4), UINT32_C(0x043123A7),
- UINT32_C(0x06EC3DAC), UINT32_C(0x09575F29), UINT32_C(0x05CC8C01),
- UINT32_C(0x028CF2E0), UINT32_C(0x00BB01F9), UINT32_C(0x01E4C554),
- UINT32_C(0x07B3F1F5), UINT32_C(0x00E4DC2E), UINT32_C(0x0F6F4AA9),
- UINT32_C(0x03F7C702), UINT32_C(0x0EC18583), UINT32_C(0x02949031),
- UINT32_C(0x05C16F04) },
- { UINT32_C(0x03BFC242), UINT32_C(0x06AF3468), UINT32_C(0x0509C734),
- UINT32_C(0x002581C3), UINT32_C(0x0CD6F167), UINT32_C(0x068B6408),
- UINT32_C(0x07D05F00), UINT32_C(0x0D520CDF), UINT32_C(0x02C463E5),
- UINT32_C(0x003D2B75), UINT32_C(0x02640D09), UINT32_C(0x0C38D324),
- UINT32_C(0x016E198B), UINT32_C(0x01BF3B79), UINT32_C(0x08EFB3AE),
- UINT32_C(0x01B11ADD), UINT32_C(0x0428FEBD), UINT32_C(0x0288A4BC),
- UINT32_C(0x02ED3D8D) } },
- { { UINT32_C(0x0FE3927A), UINT32_C(0x004463DC), UINT32_C(0x0A23634B),
- UINT32_C(0x02C96252), UINT32_C(0x088ACC38), UINT32_C(0x003687F2),
- UINT32_C(0x07070A41), UINT32_C(0x0A3D6F58), UINT32_C(0x02ACC6F9),
- UINT32_C(0x07A117B7), UINT32_C(0x04BF3041), UINT32_C(0x006C3D57),
- UINT32_C(0x05E2A443), UINT32_C(0x00D534BB), UINT32_C(0x01838CCA),
- UINT32_C(0x07E9698D), UINT32_C(0x0463E2DC), UINT32_C(0x05A8243F),
- UINT32_C(0x02BC2618) },
- { UINT32_C(0x0EBC6638), UINT32_C(0x04B3F3FB), UINT32_C(0x0A7F699B),
- UINT32_C(0x070541A8), UINT32_C(0x00275BF7), UINT32_C(0x0335548D),
- UINT32_C(0x00C681F5), UINT32_C(0x0AE9575E), UINT32_C(0x02032835),
- UINT32_C(0x027F35BF), UINT32_C(0x00A83998), UINT32_C(0x04869978),
- UINT32_C(0x04F819CA), UINT32_C(0x075D1DAF), UINT32_C(0x0B79E387),
- UINT32_C(0x033A57AB), UINT32_C(0x057298F2), UINT32_C(0x0583C4E3),
- UINT32_C(0x067E752D) } },
- { { UINT32_C(0x06B4D0F2), UINT32_C(0x059C637E), UINT32_C(0x0515A54F),
- UINT32_C(0x01CB93DA), UINT32_C(0x0AF87FEF), UINT32_C(0x07247119),
- UINT32_C(0x0368E1D8), UINT32_C(0x0287508B), UINT32_C(0x04E3B00B),
- UINT32_C(0x03EDF00C), UINT32_C(0x0060EB2B), UINT32_C(0x009B64B7),
- UINT32_C(0x0059A064), UINT32_C(0x02C48CC2), UINT32_C(0x0D938166),
- UINT32_C(0x039A77EF), UINT32_C(0x04F26973), UINT32_C(0x015B1DA7),
- UINT32_C(0x048D6DB3) },
- { UINT32_C(0x011EBBDB), UINT32_C(0x06BC0045), UINT32_C(0x0275B56E),
- UINT32_C(0x03B89420), UINT32_C(0x013420FC), UINT32_C(0x076F18E5),
- UINT32_C(0x00A74F63), UINT32_C(0x0E0F64B7), UINT32_C(0x00503282),
- UINT32_C(0x094735D1), UINT32_C(0x013CC6D6), UINT32_C(0x0E5C0E1C),
- UINT32_C(0x015BA8D6), UINT32_C(0x07D45F0A), UINT32_C(0x0A29FE38),
- UINT32_C(0x0029F319), UINT32_C(0x03AC2D85), UINT32_C(0x027ECAF3),
- UINT32_C(0x029D9051) } },
- { { UINT32_C(0x0EA400A9), UINT32_C(0x0158306B), UINT32_C(0x015222F8),
- UINT32_C(0x07A029A5), UINT32_C(0x01BD2907), UINT32_C(0x0570C0F6),
- UINT32_C(0x0751FAE1), UINT32_C(0x07964BF7), UINT32_C(0x009AA3B7),
- UINT32_C(0x03DF8285), UINT32_C(0x005D2075), UINT32_C(0x0DDBE6E5),
- UINT32_C(0x04FB407B), UINT32_C(0x05ABE7D8), UINT32_C(0x0C49401A),
- UINT32_C(0x04BA9696), UINT32_C(0x03CCE450), UINT32_C(0x04636480),
- UINT32_C(0x03F1ABE9) },
- { UINT32_C(0x03EA1F68), UINT32_C(0x0676F7FA), UINT32_C(0x078995D6),
- UINT32_C(0x01690C80), UINT32_C(0x0DDD1529), UINT32_C(0x007F78C9),
- UINT32_C(0x0408771E), UINT32_C(0x0513A792), UINT32_C(0x003B85AB),
- UINT32_C(0x016D7EB5), UINT32_C(0x05E5699C), UINT32_C(0x0BECEE12),
- UINT32_C(0x00107C5D), UINT32_C(0x00E4EB89), UINT32_C(0x02F4C652),
- UINT32_C(0x04E39F7A), UINT32_C(0x034AED07), UINT32_C(0x0212550E),
- UINT32_C(0x0188E07E) } },
- { { UINT32_C(0x0FBBA24C), UINT32_C(0x01E20A63), UINT32_C(0x0FA95AAC),
- UINT32_C(0x01C44416), UINT32_C(0x0F08DC76), UINT32_C(0x043CBDF1),
- UINT32_C(0x012ABC29), UINT32_C(0x0F6C4233), UINT32_C(0x06107D90),
- UINT32_C(0x002CBE36), UINT32_C(0x05234963), UINT32_C(0x059E8B8F),
- UINT32_C(0x06167695), UINT32_C(0x04B21ABA), UINT32_C(0x094ABDA3),
- UINT32_C(0x01B5AF79), UINT32_C(0x00351EF1), UINT32_C(0x03FE1EFE),
- UINT32_C(0x03E83BD1) },
- { UINT32_C(0x04ADEFE3), UINT32_C(0x028AF72F), UINT32_C(0x09E0C0D6),
- UINT32_C(0x0104ED8F), UINT32_C(0x0AE0148F), UINT32_C(0x02B05ACD),
- UINT32_C(0x066B1ED0), UINT32_C(0x0A3C6BFA), UINT32_C(0x032BBFF9),
- UINT32_C(0x0F66AD88), UINT32_C(0x04A9A376), UINT32_C(0x0AF0D447),
- UINT32_C(0x047BD087), UINT32_C(0x005F677C), UINT32_C(0x014088B0),
- UINT32_C(0x00EDD8EE), UINT32_C(0x0598516D), UINT32_C(0x03FE1205),
- UINT32_C(0x073098DE) } },
- { { UINT32_C(0x02841A85), UINT32_C(0x0451A0F7), UINT32_C(0x076BCBFC),
- UINT32_C(0x027E002B), UINT32_C(0x04ACD1B5), UINT32_C(0x03AADBAC),
- UINT32_C(0x011F71FA), UINT32_C(0x0E1089CF), UINT32_C(0x058740CA),
- UINT32_C(0x06DB26BB), UINT32_C(0x02494970), UINT32_C(0x07CCD9E0),
- UINT32_C(0x05749062), UINT32_C(0x061E24EF), UINT32_C(0x0BA44927),
- UINT32_C(0x01396A99), UINT32_C(0x0C2129A5), UINT32_C(0x06C4E538),
- UINT32_C(0x02D308F2) },
- { UINT32_C(0x0E7B0D82), UINT32_C(0x0295DE15), UINT32_C(0x059C10B0),
- UINT32_C(0x0240D76A), UINT32_C(0x0AA33AC3), UINT32_C(0x02D5D368),
- UINT32_C(0x05DF8706), UINT32_C(0x0A4B7001), UINT32_C(0x031DBF6C),
- UINT32_C(0x0BC72CD8), UINT32_C(0x046962A7), UINT32_C(0x0D13BB53),
- UINT32_C(0x039B98C0), UINT32_C(0x05AA84ED), UINT32_C(0x058D2735),
- UINT32_C(0x0508AB59), UINT32_C(0x085DF0E3), UINT32_C(0x06AA60D9),
- UINT32_C(0x0192578B) } },
- { { UINT32_C(0x052517BF), UINT32_C(0x07C0E587), UINT32_C(0x038A5531),
- UINT32_C(0x03EE1FF1), UINT32_C(0x062AB6E8), UINT32_C(0x06EF4CCB),
- UINT32_C(0x00A09F25), UINT32_C(0x0DBE8342), UINT32_C(0x01D7E02F),
- UINT32_C(0x094C49AE), UINT32_C(0x01445CE4), UINT32_C(0x0F435B7F),
- UINT32_C(0x07CDF16E), UINT32_C(0x009B8491), UINT32_C(0x0B24E6F7),
- UINT32_C(0x01648959), UINT32_C(0x00615CA9), UINT32_C(0x014879FC),
- UINT32_C(0x015CCCCE) },
- { UINT32_C(0x0BB6E5C0), UINT32_C(0x072270A8), UINT32_C(0x02BC713E),
- UINT32_C(0x0194AF0E), UINT32_C(0x0745C682), UINT32_C(0x00066C6F),
- UINT32_C(0x03D36CF5), UINT32_C(0x0593CBB1), UINT32_C(0x05AE790D),
- UINT32_C(0x06B1FF53), UINT32_C(0x0620A507), UINT32_C(0x0CB462BF),
- UINT32_C(0x068C215C), UINT32_C(0x06AB108C), UINT32_C(0x0B7E3900),
- UINT32_C(0x03D88910), UINT32_C(0x0539E087), UINT32_C(0x04AE3141),
- UINT32_C(0x035ED7D6) } },
- { { UINT32_C(0x0254F3D7), UINT32_C(0x06792204), UINT32_C(0x0230569F),
- UINT32_C(0x03D3FDA9), UINT32_C(0x0B84DD99), UINT32_C(0x07725C4C),
- UINT32_C(0x06B0E7C3), UINT32_C(0x0B78D3DF), UINT32_C(0x078AC360),
- UINT32_C(0x06CAB919), UINT32_C(0x02F4F70A), UINT32_C(0x013A8BD5),
- UINT32_C(0x021D73E0), UINT32_C(0x044B1B4D), UINT32_C(0x0E88A7D4),
- UINT32_C(0x05BAA6EC), UINT32_C(0x0526DE60), UINT32_C(0x01D8806A),
- UINT32_C(0x04244303) },
- { UINT32_C(0x0108C612), UINT32_C(0x0395A34F), UINT32_C(0x0339198F),
- UINT32_C(0x01F179EC), UINT32_C(0x0708D6F3), UINT32_C(0x01DF5235),
- UINT32_C(0x0232C546), UINT32_C(0x030C41B0), UINT32_C(0x015FE8CF),
- UINT32_C(0x0F21BBB4), UINT32_C(0x0323FD77), UINT32_C(0x06DD81ED),
- UINT32_C(0x04136906), UINT32_C(0x054B66A1), UINT32_C(0x0CBBD05A),
- UINT32_C(0x0336CEE8), UINT32_C(0x0FCF1FFD), UINT32_C(0x041BBD8F),
- UINT32_C(0x07AB12C9) } },
- { { UINT32_C(0x0BBE227D), UINT32_C(0x05858F23), UINT32_C(0x04BF491E),
- UINT32_C(0x05728183), UINT32_C(0x079C714E), UINT32_C(0x022A1FCF),
- UINT32_C(0x01EF871B), UINT32_C(0x09EDB7B8), UINT32_C(0x01D525A3),
- UINT32_C(0x0A87DA27), UINT32_C(0x043F0A4E), UINT32_C(0x09B1CDD1),
- UINT32_C(0x00B92721), UINT32_C(0x00B6CCD6), UINT32_C(0x0D63DB15),
- UINT32_C(0x023CE576), UINT32_C(0x0C4080E4), UINT32_C(0x033F2061),
- UINT32_C(0x031AA1D9) },
- { UINT32_C(0x07EC3A20), UINT32_C(0x01C69A3A), UINT32_C(0x001C25C7),
- UINT32_C(0x0210B9C8), UINT32_C(0x08BDFFA8), UINT32_C(0x02E8214B),
- UINT32_C(0x017C3E9B), UINT32_C(0x084D91D9), UINT32_C(0x038B3D24),
- UINT32_C(0x0EC9081E), UINT32_C(0x026E58E8), UINT32_C(0x032908AE),
- UINT32_C(0x02B2F37D), UINT32_C(0x058B11CB), UINT32_C(0x07538C24),
- UINT32_C(0x06945091), UINT32_C(0x0F538568), UINT32_C(0x064897F5),
- UINT32_C(0x03110AAF) } },
- { { UINT32_C(0x093E7BB1), UINT32_C(0x026B09F0), UINT32_C(0x0763D63D),
- UINT32_C(0x01CAD134), UINT32_C(0x053290E7), UINT32_C(0x03190F55),
- UINT32_C(0x05929346), UINT32_C(0x090E1278), UINT32_C(0x01D360D4),
- UINT32_C(0x0AE8B6AE), UINT32_C(0x036A79E4), UINT32_C(0x08B891A0),
- UINT32_C(0x0448F896), UINT32_C(0x02316FA4), UINT32_C(0x0B3F9158),
- UINT32_C(0x045DAD8C), UINT32_C(0x073BD91F), UINT32_C(0x0407FC71),
- UINT32_C(0x0403F724) },
- { UINT32_C(0x0C0213B3), UINT32_C(0x04667E35), UINT32_C(0x0E2CEB9C),
- UINT32_C(0x064EC72A), UINT32_C(0x0A339F01), UINT32_C(0x01E44700),
- UINT32_C(0x029951E3), UINT32_C(0x0F9E1903), UINT32_C(0x0760075A),
- UINT32_C(0x0B3FB167), UINT32_C(0x015349C6), UINT32_C(0x04915326),
- UINT32_C(0x06972404), UINT32_C(0x03D0B541), UINT32_C(0x0FFB253E),
- UINT32_C(0x0670C067), UINT32_C(0x017EDCC3), UINT32_C(0x06348A30),
- UINT32_C(0x0755DC54) } },
- { { UINT32_C(0x0D72BA02), UINT32_C(0x07FF1EEA), UINT32_C(0x0066BDAD),
- UINT32_C(0x039D956A), UINT32_C(0x04E892D7), UINT32_C(0x052419F2),
- UINT32_C(0x034B725A), UINT32_C(0x095A35DA), UINT32_C(0x05559103),
- UINT32_C(0x018A8F9F), UINT32_C(0x04FC3975), UINT32_C(0x0D1740D2),
- UINT32_C(0x0375B900), UINT32_C(0x0761403F), UINT32_C(0x0B953A5F),
- UINT32_C(0x04F2FF71), UINT32_C(0x0E1B0B58), UINT32_C(0x07D8573F),
- UINT32_C(0x053E8C3E) },
- { UINT32_C(0x055A3B73), UINT32_C(0x04EBD845), UINT32_C(0x0D3A5D27),
- UINT32_C(0x03216043), UINT32_C(0x0A2D5A11), UINT32_C(0x03D32430),
- UINT32_C(0x063F87FD), UINT32_C(0x0DBF84E0), UINT32_C(0x04C9934A),
- UINT32_C(0x08BE9480), UINT32_C(0x02F6DE30), UINT32_C(0x052DB294),
- UINT32_C(0x03230313), UINT32_C(0x04592516), UINT32_C(0x0B992B10),
- UINT32_C(0x03125EE2), UINT32_C(0x0445BCF9), UINT32_C(0x07349143),
- UINT32_C(0x05A112C7) } },
- { { UINT32_C(0x0EA0B318), UINT32_C(0x03F1B159), UINT32_C(0x0487E52E),
- UINT32_C(0x05D27B9C), UINT32_C(0x0EBAD615), UINT32_C(0x0459C5D9),
- UINT32_C(0x073079D5), UINT32_C(0x078FD2D4), UINT32_C(0x006B7643),
- UINT32_C(0x0A73DC2C), UINT32_C(0x041938CF), UINT32_C(0x098897E0),
- UINT32_C(0x07660928), UINT32_C(0x058BF110), UINT32_C(0x0696BC61),
- UINT32_C(0x07DE18FC), UINT32_C(0x0B815951), UINT32_C(0x04662BC8),
- UINT32_C(0x054FF046) },
- { UINT32_C(0x052466CC), UINT32_C(0x02C9E253), UINT32_C(0x07D1C495),
- UINT32_C(0x024A0473), UINT32_C(0x0E5AEABA), UINT32_C(0x06DFF20F),
- UINT32_C(0x03CCEFD9), UINT32_C(0x0F806D4B), UINT32_C(0x0192D911),
- UINT32_C(0x06A7E064), UINT32_C(0x0136BD6C), UINT32_C(0x03CF3E59),
- UINT32_C(0x036C910C), UINT32_C(0x02852F51), UINT32_C(0x0D2261F6),
- UINT32_C(0x07B11789), UINT32_C(0x05D5440C), UINT32_C(0x068EB2BF),
- UINT32_C(0x07C9D3D2) } },
- { { UINT32_C(0x03F78C83), UINT32_C(0x026282EB), UINT32_C(0x0E7E58C8),
- UINT32_C(0x01460384), UINT32_C(0x07F8288C), UINT32_C(0x004DDB38),
- UINT32_C(0x068A22C1), UINT32_C(0x03B4E4B7), UINT32_C(0x046EC7F7),
- UINT32_C(0x0F499BF8), UINT32_C(0x00E98F9D), UINT32_C(0x0201835A),
- UINT32_C(0x06CDC18D), UINT32_C(0x054E87E0), UINT32_C(0x09E1190B),
- UINT32_C(0x07C8570C), UINT32_C(0x0EE788C0), UINT32_C(0x003B8466),
- UINT32_C(0x0513D8F7) },
- { UINT32_C(0x082AE76F), UINT32_C(0x0467154F), UINT32_C(0x090D360C),
- UINT32_C(0x04725E35), UINT32_C(0x077F0A4A), UINT32_C(0x01658344),
- UINT32_C(0x07BFD41E), UINT32_C(0x0816DFE5), UINT32_C(0x01A64B33),
- UINT32_C(0x07DEC344), UINT32_C(0x0404AABD), UINT32_C(0x0DD22DB3),
- UINT32_C(0x0372E5A1), UINT32_C(0x01DD7525), UINT32_C(0x01C8CACD),
- UINT32_C(0x06A4B923), UINT32_C(0x0CD78815), UINT32_C(0x03B62E43),
- UINT32_C(0x0182DCE0) } },
- { { UINT32_C(0x04B1FB35), UINT32_C(0x0061A026), UINT32_C(0x099D37D7),
- UINT32_C(0x046459E6), UINT32_C(0x0E8A57EF), UINT32_C(0x001BD06E),
- UINT32_C(0x04A92B84), UINT32_C(0x06098C4C), UINT32_C(0x0358B593),
- UINT32_C(0x0D4DFE1C), UINT32_C(0x063599D3), UINT32_C(0x02DD18DC),
- UINT32_C(0x03007901), UINT32_C(0x01E9DD8D), UINT32_C(0x0400CC35),
- UINT32_C(0x0778E5F5), UINT32_C(0x05D5B6A3), UINT32_C(0x02FD411C),
- UINT32_C(0x02B425A2) },
- { UINT32_C(0x03812C10), UINT32_C(0x03B78EFC), UINT32_C(0x09532CE4),
- UINT32_C(0x04F7D4A9), UINT32_C(0x0F7C04C8), UINT32_C(0x0683AE68),
- UINT32_C(0x011B6140), UINT32_C(0x0156737D), UINT32_C(0x035A4EB9),
- UINT32_C(0x0A0B7443), UINT32_C(0x064319EB), UINT32_C(0x0B315217),
- UINT32_C(0x049C0FB2), UINT32_C(0x004E46BC), UINT32_C(0x0318D072),
- UINT32_C(0x052D3EA9), UINT32_C(0x06A15FA8), UINT32_C(0x02E0D5AB),
- UINT32_C(0x008DD356) } },
- { { UINT32_C(0x0D00894F), UINT32_C(0x0415F67D), UINT32_C(0x0C243D11),
- UINT32_C(0x02B8C573), UINT32_C(0x05C886B6), UINT32_C(0x073E2A37),
- UINT32_C(0x01B4E4FA), UINT32_C(0x09A09251), UINT32_C(0x020282E5),
- UINT32_C(0x0BCA7D2D), UINT32_C(0x066FF292), UINT32_C(0x09926C99),
- UINT32_C(0x03617A48), UINT32_C(0x01530215), UINT32_C(0x063E7DBA),
- UINT32_C(0x078B1DFB), UINT32_C(0x0C3844B7), UINT32_C(0x03201272),
- UINT32_C(0x0778B4FA) },
- { UINT32_C(0x09305F18), UINT32_C(0x04DACE51), UINT32_C(0x0D07FE4D),
- UINT32_C(0x04990FE7), UINT32_C(0x07120719), UINT32_C(0x07AE031B),
- UINT32_C(0x003430FE), UINT32_C(0x00C1FBD4), UINT32_C(0x036A0A51),
- UINT32_C(0x0A6A12BB), UINT32_C(0x072B00FE), UINT32_C(0x0F112F16),
- UINT32_C(0x002D898C), UINT32_C(0x00D7F3F0), UINT32_C(0x02CCB574),
- UINT32_C(0x076345FF), UINT32_C(0x02C9358F), UINT32_C(0x017BCB4B),
- UINT32_C(0x0579734A) } },
- },
- {
- { { UINT32_C(0x0F0DB502), UINT32_C(0x007283D0), UINT32_C(0x08EF623D),
- UINT32_C(0x03EA8C5E), UINT32_C(0x0A209E1F), UINT32_C(0x03A40740),
- UINT32_C(0x02F81888), UINT32_C(0x0722A969), UINT32_C(0x03DCF02A),
- UINT32_C(0x0B8BF42D), UINT32_C(0x046BF6EC), UINT32_C(0x04E7DE79),
- UINT32_C(0x032FE5DF), UINT32_C(0x01C17AC3), UINT32_C(0x088F43CD),
- UINT32_C(0x06D316FF), UINT32_C(0x00B6FB94), UINT32_C(0x03A7A692),
- UINT32_C(0x03E132AC) },
- { UINT32_C(0x045CE248), UINT32_C(0x0462F43F), UINT32_C(0x09F103B7),
- UINT32_C(0x03CE6503), UINT32_C(0x02C55CD7), UINT32_C(0x01FAC8B9),
- UINT32_C(0x07F7D41F), UINT32_C(0x049B3922), UINT32_C(0x0538164A),
- UINT32_C(0x0C32168B), UINT32_C(0x021D15D5), UINT32_C(0x0FBE7AB4),
- UINT32_C(0x049ABD36), UINT32_C(0x06689278), UINT32_C(0x090906E0),
- UINT32_C(0x02853127), UINT32_C(0x032C40D9), UINT32_C(0x0284E722),
- UINT32_C(0x05B9DA3D) } },
- { { UINT32_C(0x08B06389), UINT32_C(0x039D7B29), UINT32_C(0x026E0D8E),
- UINT32_C(0x038E31F2), UINT32_C(0x0F482001), UINT32_C(0x046C5627),
- UINT32_C(0x0153F461), UINT32_C(0x0FC4C626), UINT32_C(0x035A22C9),
- UINT32_C(0x0CB5BCED), UINT32_C(0x032AE85F), UINT32_C(0x097105A2),
- UINT32_C(0x0661090D), UINT32_C(0x02190C38), UINT32_C(0x05F88BB1),
- UINT32_C(0x020AFD4B), UINT32_C(0x07693E86), UINT32_C(0x036234B0),
- UINT32_C(0x0201EE7C) },
- { UINT32_C(0x05177EBC), UINT32_C(0x07334497), UINT32_C(0x021FB6DB),
- UINT32_C(0x00E242A1), UINT32_C(0x06ACC48D), UINT32_C(0x0617860E),
- UINT32_C(0x04002467), UINT32_C(0x006684B4), UINT32_C(0x005E7367),
- UINT32_C(0x02210321), UINT32_C(0x06AE2E12), UINT32_C(0x0A170483),
- UINT32_C(0x06811FED), UINT32_C(0x02AF7598), UINT32_C(0x099B28F0),
- UINT32_C(0x04B2EAC3), UINT32_C(0x03144E87), UINT32_C(0x052C741C),
- UINT32_C(0x00219EE8) } },
- { { UINT32_C(0x00581DC0), UINT32_C(0x076911B9), UINT32_C(0x03F907DF),
- UINT32_C(0x00FD8CCC), UINT32_C(0x0BD0DFDF), UINT32_C(0x0388BBE8),
- UINT32_C(0x0549C09A), UINT32_C(0x0387AC55), UINT32_C(0x07AF40E6),
- UINT32_C(0x0981B7A5), UINT32_C(0x05ADE4BE), UINT32_C(0x052D5C55),
- UINT32_C(0x076A04D2), UINT32_C(0x032751B9), UINT32_C(0x0BCE279F),
- UINT32_C(0x034D2A39), UINT32_C(0x0AEDCDAE), UINT32_C(0x00365DC7),
- UINT32_C(0x03453CBF) },
- { UINT32_C(0x0FAB453E), UINT32_C(0x011CF084), UINT32_C(0x09E21C47),
- UINT32_C(0x06CF3197), UINT32_C(0x00831296), UINT32_C(0x057F4CE5),
- UINT32_C(0x020F8EE8), UINT32_C(0x05B31872), UINT32_C(0x0779598D),
- UINT32_C(0x07C7AC32), UINT32_C(0x05B64DC4), UINT32_C(0x0E058DB2),
- UINT32_C(0x060142F5), UINT32_C(0x0757FAC8), UINT32_C(0x0320EFE8),
- UINT32_C(0x03D158EA), UINT32_C(0x025240D2), UINT32_C(0x0116989D),
- UINT32_C(0x04BFB887) } },
- { { UINT32_C(0x0DB8A57B), UINT32_C(0x0056DCD3), UINT32_C(0x0355B904),
- UINT32_C(0x03D5725A), UINT32_C(0x007C7371), UINT32_C(0x00CF4193),
- UINT32_C(0x020AD78C), UINT32_C(0x0305EFAF), UINT32_C(0x03715E8F),
- UINT32_C(0x04E06800), UINT32_C(0x0464FE0B), UINT32_C(0x041671C5),
- UINT32_C(0x07289FAC), UINT32_C(0x045EC338), UINT32_C(0x049BEE4D),
- UINT32_C(0x06F62A0E), UINT32_C(0x04025E36), UINT32_C(0x05D25CE9),
- UINT32_C(0x07C568B5) },
- { UINT32_C(0x0D4BD6B6), UINT32_C(0x00933993), UINT32_C(0x0B7EEBBA),
- UINT32_C(0x0281309E), UINT32_C(0x065E8268), UINT32_C(0x035579CF),
- UINT32_C(0x05550C9A), UINT32_C(0x0D7980B4), UINT32_C(0x0531F076),
- UINT32_C(0x0CD2F37E), UINT32_C(0x03059FC3), UINT32_C(0x00281179),
- UINT32_C(0x019AAC99), UINT32_C(0x017555A7), UINT32_C(0x0FF849A4),
- UINT32_C(0x04EE5361), UINT32_C(0x08C87DDE), UINT32_C(0x004920CB),
- UINT32_C(0x0472AE6B) } },
- { { UINT32_C(0x05AD0B4E), UINT32_C(0x0000D01D), UINT32_C(0x0A1C822E),
- UINT32_C(0x004A7A0A), UINT32_C(0x0AA08F1E), UINT32_C(0x05917BCC),
- UINT32_C(0x073D4A38), UINT32_C(0x06389FF3), UINT32_C(0x047A94F0),
- UINT32_C(0x06710D9B), UINT32_C(0x0752964E), UINT32_C(0x030EF732),
- UINT32_C(0x01AE9023), UINT32_C(0x0752E2B4), UINT32_C(0x0343C25C),
- UINT32_C(0x04C0A3C3), UINT32_C(0x0B4EFABB), UINT32_C(0x079ACB07),
- UINT32_C(0x05BEE507) },
- { UINT32_C(0x03494AD9), UINT32_C(0x05EA99AF), UINT32_C(0x0389480B),
- UINT32_C(0x05160DCE), UINT32_C(0x010C3CBB), UINT32_C(0x04B92C2A),
- UINT32_C(0x05F2D771), UINT32_C(0x0A57A2FD), UINT32_C(0x007C232D),
- UINT32_C(0x0ECF6652), UINT32_C(0x06762C3E), UINT32_C(0x0531B5E7),
- UINT32_C(0x03E82FC8), UINT32_C(0x01820A9D), UINT32_C(0x010298C1),
- UINT32_C(0x040BB915), UINT32_C(0x06C4DE5F), UINT32_C(0x00F95873),
- UINT32_C(0x00D564BB) } },
- { { UINT32_C(0x06647B76), UINT32_C(0x05951386), UINT32_C(0x01C3CEEE),
- UINT32_C(0x05B4A2A9), UINT32_C(0x00C0D10D), UINT32_C(0x07198ABC),
- UINT32_C(0x0344EBA4), UINT32_C(0x01102AAD), UINT32_C(0x00A6BD8E),
- UINT32_C(0x041FD3B9), UINT32_C(0x072FD40E), UINT32_C(0x04DF271A),
- UINT32_C(0x07951CEE), UINT32_C(0x0434A805), UINT32_C(0x03CBC676),
- UINT32_C(0x07E6DD9D), UINT32_C(0x037A89AF), UINT32_C(0x01076ABD),
- UINT32_C(0x00509445) },
- { UINT32_C(0x0D8A2C33), UINT32_C(0x05E083E6), UINT32_C(0x05C0317D),
- UINT32_C(0x0602A2EA), UINT32_C(0x00A16254), UINT32_C(0x065050EB),
- UINT32_C(0x014C68D6), UINT32_C(0x0EA8DF00), UINT32_C(0x002096BA),
- UINT32_C(0x00D2E7B4), UINT32_C(0x03580F1C), UINT32_C(0x0237FA0E),
- UINT32_C(0x01C7F56A), UINT32_C(0x054A6A4F), UINT32_C(0x03E879F4),
- UINT32_C(0x008B47F5), UINT32_C(0x0EDF35FC), UINT32_C(0x01F3F7F0),
- UINT32_C(0x03E78806) } },
- { { UINT32_C(0x038F6A40), UINT32_C(0x05B8DCB9), UINT32_C(0x07D27CDC),
- UINT32_C(0x03392DA1), UINT32_C(0x066611C2), UINT32_C(0x066344AA),
- UINT32_C(0x05F431C8), UINT32_C(0x07255E87), UINT32_C(0x0135642A),
- UINT32_C(0x051CFCBA), UINT32_C(0x045D25F5), UINT32_C(0x08BB7E3A),
- UINT32_C(0x022605AB), UINT32_C(0x00C874AA), UINT32_C(0x0195652F),
- UINT32_C(0x00E16A23), UINT32_C(0x0D18A297), UINT32_C(0x024B6188),
- UINT32_C(0x025A9403) },
- { UINT32_C(0x04F1EAD3), UINT32_C(0x03669651), UINT32_C(0x0E87093B),
- UINT32_C(0x05F1CF35), UINT32_C(0x019B74E6), UINT32_C(0x0177BF8B),
- UINT32_C(0x036B76B9), UINT32_C(0x0B817B29), UINT32_C(0x009C77FA),
- UINT32_C(0x0202860C), UINT32_C(0x01D1AB54), UINT32_C(0x0B180712),
- UINT32_C(0x06B274AA), UINT32_C(0x0121DBED), UINT32_C(0x0AEA446B),
- UINT32_C(0x044661E9), UINT32_C(0x0C3EE1D4), UINT32_C(0x045027EE),
- UINT32_C(0x014C275F) } },
- { { UINT32_C(0x004023FD), UINT32_C(0x01669241), UINT32_C(0x0693C19B),
- UINT32_C(0x0058FB3D), UINT32_C(0x0756B182), UINT32_C(0x075D0BEC),
- UINT32_C(0x07A393EF), UINT32_C(0x0B75B610), UINT32_C(0x07D0B5FD),
- UINT32_C(0x060DEE19), UINT32_C(0x02373BD5), UINT32_C(0x0A1D84BA),
- UINT32_C(0x07E8F3AA), UINT32_C(0x01D80791), UINT32_C(0x09D535D0),
- UINT32_C(0x01AB79C2), UINT32_C(0x0D7911BC), UINT32_C(0x03496555),
- UINT32_C(0x0370FC52) },
- { UINT32_C(0x0CA626DD), UINT32_C(0x018A8079), UINT32_C(0x02E35F36),
- UINT32_C(0x00EF1C67), UINT32_C(0x0942648A), UINT32_C(0x05578B93),
- UINT32_C(0x07DDB397), UINT32_C(0x095E9BED), UINT32_C(0x07DEB648),
- UINT32_C(0x020D82EB), UINT32_C(0x02384172), UINT32_C(0x0988C739),
- UINT32_C(0x035C1ACA), UINT32_C(0x053C61ED), UINT32_C(0x036A12D0),
- UINT32_C(0x070600B9), UINT32_C(0x05505FED), UINT32_C(0x04D77717),
- UINT32_C(0x04E32DD7) } },
- { { UINT32_C(0x0F32AB3F), UINT32_C(0x03271637), UINT32_C(0x01E6E3C1),
- UINT32_C(0x04B433DF), UINT32_C(0x0313D761), UINT32_C(0x01F05C43),
- UINT32_C(0x01B6E232), UINT32_C(0x0B782E36), UINT32_C(0x0142A283),
- UINT32_C(0x06A37377), UINT32_C(0x063B9255), UINT32_C(0x05FF47C8),
- UINT32_C(0x02270CEE), UINT32_C(0x04B3AC67), UINT32_C(0x07D72B62),
- UINT32_C(0x006133F9), UINT32_C(0x0BFDFB85), UINT32_C(0x04FE3C0B),
- UINT32_C(0x0406E239) },
- { UINT32_C(0x0737D38E), UINT32_C(0x07FBCD12), UINT32_C(0x00F51FBD),
- UINT32_C(0x02A182A2), UINT32_C(0x062DA827), UINT32_C(0x01D9AB6A),
- UINT32_C(0x0539AEBA), UINT32_C(0x0AB608B0), UINT32_C(0x0226B3BB),
- UINT32_C(0x0ED7323F), UINT32_C(0x04ADDB11), UINT32_C(0x05B1E5DF),
- UINT32_C(0x013ECB65), UINT32_C(0x0282983F), UINT32_C(0x02BDD0BD),
- UINT32_C(0x07F0D675), UINT32_C(0x0C80C17E), UINT32_C(0x06B40353),
- UINT32_C(0x01D570D9) } },
- { { UINT32_C(0x0D4D4113), UINT32_C(0x0371ACBF), UINT32_C(0x076D0600),
- UINT32_C(0x06867748), UINT32_C(0x0267DC5C), UINT32_C(0x04199EE8),
- UINT32_C(0x015FF11F), UINT32_C(0x01DBB00A), UINT32_C(0x03C8E489),
- UINT32_C(0x0218373A), UINT32_C(0x00180AE9), UINT32_C(0x0A2CAFBC),
- UINT32_C(0x016437D1), UINT32_C(0x058A25D0), UINT32_C(0x0AB57613),
- UINT32_C(0x07DF8B7E), UINT32_C(0x0985AF6A), UINT32_C(0x04CCAE37),
- UINT32_C(0x0300D01F) },
- { UINT32_C(0x092A3113), UINT32_C(0x05B20515), UINT32_C(0x0F0E530A),
- UINT32_C(0x0605CBBF), UINT32_C(0x05FD19B3), UINT32_C(0x01593B38),
- UINT32_C(0x003D988A), UINT32_C(0x03D76657), UINT32_C(0x017E79DC),
- UINT32_C(0x02EC918C), UINT32_C(0x069A3B0F), UINT32_C(0x06FB78CA),
- UINT32_C(0x07B0B30F), UINT32_C(0x0224A884), UINT32_C(0x0FF6CD50),
- UINT32_C(0x07D9D639), UINT32_C(0x0D753C54), UINT32_C(0x04ED3D38),
- UINT32_C(0x01E9C727) } },
- { { UINT32_C(0x0201CD59), UINT32_C(0x01D5BE35), UINT32_C(0x0B2E0772),
- UINT32_C(0x04E8E2C3), UINT32_C(0x06C76E20), UINT32_C(0x01464A0E),
- UINT32_C(0x056C1CE9), UINT32_C(0x04E3B528), UINT32_C(0x037AAFAB),
- UINT32_C(0x06CE134F), UINT32_C(0x06158AF6), UINT32_C(0x02AF338B),
- UINT32_C(0x025085B6), UINT32_C(0x07AABBFC), UINT32_C(0x0670F3BE),
- UINT32_C(0x0108503F), UINT32_C(0x0DC85D51), UINT32_C(0x07F4439A),
- UINT32_C(0x046E6FC9) },
- { UINT32_C(0x08FFB263), UINT32_C(0x01FF6045), UINT32_C(0x0C4E1676),
- UINT32_C(0x038E4F62), UINT32_C(0x06DD24CD), UINT32_C(0x0142D912),
- UINT32_C(0x015AAC36), UINT32_C(0x0DF58E09), UINT32_C(0x038F3D3B),
- UINT32_C(0x014D0412), UINT32_C(0x0123F0AF), UINT32_C(0x0021ED27),
- UINT32_C(0x0004843B), UINT32_C(0x05BF4326), UINT32_C(0x05A672B0),
- UINT32_C(0x02B6453D), UINT32_C(0x0C7F1450), UINT32_C(0x04A895A4),
- UINT32_C(0x061C3DF9) } },
- { { UINT32_C(0x0E593E49), UINT32_C(0x07ABFF21), UINT32_C(0x076E69C7),
- UINT32_C(0x05C81656), UINT32_C(0x0858D39E), UINT32_C(0x041FC1FA),
- UINT32_C(0x03599A84), UINT32_C(0x0ECF483C), UINT32_C(0x0190C4E8),
- UINT32_C(0x08EA24D2), UINT32_C(0x03536BE7), UINT32_C(0x0E3746C4),
- UINT32_C(0x0632F6BA), UINT32_C(0x05CFBDCC), UINT32_C(0x060097CB),
- UINT32_C(0x04B0546F), UINT32_C(0x0AB5C45F), UINT32_C(0x04F8975E),
- UINT32_C(0x04C5D61F) },
- { UINT32_C(0x062B46F6), UINT32_C(0x07516E20), UINT32_C(0x0C1F955C),
- UINT32_C(0x001F66A2), UINT32_C(0x0ED0D917), UINT32_C(0x0406AF99),
- UINT32_C(0x069CF83E), UINT32_C(0x0D4D8A00), UINT32_C(0x03D763C5),
- UINT32_C(0x0E1FD9A7), UINT32_C(0x0056211F), UINT32_C(0x07531A2F),
- UINT32_C(0x00973B69), UINT32_C(0x021DCD32), UINT32_C(0x09D0AC99),
- UINT32_C(0x0549BFEA), UINT32_C(0x0305E319), UINT32_C(0x01342656),
- UINT32_C(0x001B80FB) } },
- { { UINT32_C(0x031FFCBB), UINT32_C(0x06BC2475), UINT32_C(0x090EA8B2),
- UINT32_C(0x0716EDFB), UINT32_C(0x0418E2AE), UINT32_C(0x0381C978),
- UINT32_C(0x05591029), UINT32_C(0x09BD26C6), UINT32_C(0x0460D4D5),
- UINT32_C(0x07DAA20D), UINT32_C(0x01560E68), UINT32_C(0x04AAAB23),
- UINT32_C(0x01EA985C), UINT32_C(0x0631896F), UINT32_C(0x0FD13830),
- UINT32_C(0x0416257F), UINT32_C(0x069B78E7), UINT32_C(0x0016004F),
- UINT32_C(0x07B5E05F) },
- { UINT32_C(0x0749B010), UINT32_C(0x0716A42F), UINT32_C(0x0DEDE224),
- UINT32_C(0x06E403DB), UINT32_C(0x01FC6739), UINT32_C(0x07F5928B),
- UINT32_C(0x04FF09AE), UINT32_C(0x096D2235), UINT32_C(0x032412BF),
- UINT32_C(0x0635ABB1), UINT32_C(0x0480F063), UINT32_C(0x0BA557CC),
- UINT32_C(0x05C0FEF3), UINT32_C(0x01C7CB5C), UINT32_C(0x09482C2A),
- UINT32_C(0x003CF65B), UINT32_C(0x0F39C07C), UINT32_C(0x00902580),
- UINT32_C(0x053F7D95) } },
- { { UINT32_C(0x00C6A752), UINT32_C(0x0600187B), UINT32_C(0x031FD29E),
- UINT32_C(0x07202D01), UINT32_C(0x08706FD9), UINT32_C(0x003A8DA7),
- UINT32_C(0x02BC4807), UINT32_C(0x0108B8E2), UINT32_C(0x03DCB4C3),
- UINT32_C(0x00E5D109), UINT32_C(0x0133EBE8), UINT32_C(0x0DBC9FDB),
- UINT32_C(0x037A84B4), UINT32_C(0x000D902A), UINT32_C(0x0B159D44),
- UINT32_C(0x0385B949), UINT32_C(0x0BB24FD6), UINT32_C(0x05FFC44B),
- UINT32_C(0x0402B0EA) },
- { UINT32_C(0x0AFA8C2B), UINT32_C(0x03A224AC), UINT32_C(0x08FD7C67),
- UINT32_C(0x072E1371), UINT32_C(0x01FA5FB1), UINT32_C(0x060D59B5),
- UINT32_C(0x004D1058), UINT32_C(0x0193E727), UINT32_C(0x0093B083),
- UINT32_C(0x0ABA0999), UINT32_C(0x07F25ECC), UINT32_C(0x0E8D4648),
- UINT32_C(0x045B908B), UINT32_C(0x02C916E0), UINT32_C(0x052F14F8),
- UINT32_C(0x00430404), UINT32_C(0x0B8E9A2B), UINT32_C(0x00F4BF45),
- UINT32_C(0x03F0A1D1) } },
- { { UINT32_C(0x0CEE5802), UINT32_C(0x00880798), UINT32_C(0x01C63FFC),
- UINT32_C(0x071B8526), UINT32_C(0x0C1068FB), UINT32_C(0x052F9DB3),
- UINT32_C(0x01DDC849), UINT32_C(0x0E84AF14), UINT32_C(0x06CD446D),
- UINT32_C(0x0A9F92C6), UINT32_C(0x01676037), UINT32_C(0x02A0264C),
- UINT32_C(0x0467C53C), UINT32_C(0x051C4EE1), UINT32_C(0x01F47FF0),
- UINT32_C(0x022246B4), UINT32_C(0x07D42402), UINT32_C(0x0287119F),
- UINT32_C(0x04434D4E) },
- { UINT32_C(0x018DA0C0), UINT32_C(0x042E86EE), UINT32_C(0x08509770),
- UINT32_C(0x04EDAEB9), UINT32_C(0x0A4009B5), UINT32_C(0x0335CB55),
- UINT32_C(0x064D21EC), UINT32_C(0x0647F463), UINT32_C(0x07A167F4),
- UINT32_C(0x023FB0E4), UINT32_C(0x062A970D), UINT32_C(0x00205267),
- UINT32_C(0x036D3513), UINT32_C(0x07ABD182), UINT32_C(0x0B51FDBA),
- UINT32_C(0x077B5CD0), UINT32_C(0x0896BFE4), UINT32_C(0x0300338E),
- UINT32_C(0x06FF9581) } },
- { { UINT32_C(0x054184BF), UINT32_C(0x02DCF217), UINT32_C(0x0880D0D9),
- UINT32_C(0x019760C7), UINT32_C(0x0662BD25), UINT32_C(0x06A962DD),
- UINT32_C(0x04C69173), UINT32_C(0x019D4A19), UINT32_C(0x05AD5A5F),
- UINT32_C(0x0E23BF0B), UINT32_C(0x07D3C575), UINT32_C(0x0BCDA9CF),
- UINT32_C(0x019497F7), UINT32_C(0x01914517), UINT32_C(0x027F0C56),
- UINT32_C(0x048ED5F5), UINT32_C(0x078B0933), UINT32_C(0x01A7EB30),
- UINT32_C(0x066D17B3) },
- { UINT32_C(0x00A95EDC), UINT32_C(0x0386D25E), UINT32_C(0x039DE915),
- UINT32_C(0x076A16CE), UINT32_C(0x05DCE4A7), UINT32_C(0x07C40607),
- UINT32_C(0x06F1B7C2), UINT32_C(0x0A817858), UINT32_C(0x0147CB22),
- UINT32_C(0x0D109609), UINT32_C(0x0454D2C5), UINT32_C(0x0D788CF4),
- UINT32_C(0x03DCA054), UINT32_C(0x02A7B716), UINT32_C(0x05C66166),
- UINT32_C(0x01AC2B32), UINT32_C(0x0D0C246B), UINT32_C(0x02E38AD2),
- UINT32_C(0x039CDC10) } },
+ X->len = 66;
+ memcpy(X->data, derived, 66);
}
-};
-
-/*-
- * Finite field inversion.
- * Computed with exponentiation via FLT.
- * Autogenerated: ecp/secp521r1/fe_inv.op3
- * custom repunit addition chain
- * NB: this is not a real fiat-crypto function, just named that way for consistency.
- */
-static void
-fiat_secp521r1_inv(fe_t output, const fe_t t1)
-{
- int i;
- /* temporary variables */
- fe_t acc, t128, t16, t2, t256, t32, t4, t512, t516, t518, t519, t64, t8;
-
- fiat_secp521r1_carry_square(acc, t1);
- fiat_secp521r1_carry_mul(t2, acc, t1);
- fiat_secp521r1_carry_square(acc, t2);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t4, acc, t2);
- fiat_secp521r1_carry_square(acc, t4);
- for (i = 0; i < 3; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t8, acc, t4);
- fiat_secp521r1_carry_square(acc, t8);
- for (i = 0; i < 7; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t16, acc, t8);
- fiat_secp521r1_carry_square(acc, t16);
- for (i = 0; i < 15; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t32, acc, t16);
- fiat_secp521r1_carry_square(acc, t32);
- for (i = 0; i < 31; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t64, acc, t32);
- fiat_secp521r1_carry_square(acc, t64);
- for (i = 0; i < 63; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t128, acc, t64);
- fiat_secp521r1_carry_square(acc, t128);
- for (i = 0; i < 127; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t256, acc, t128);
- fiat_secp521r1_carry_square(acc, t256);
- for (i = 0; i < 255; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t512, acc, t256);
- fiat_secp521r1_carry_square(acc, t512);
- for (i = 0; i < 3; i++)
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t516, acc, t4);
- fiat_secp521r1_carry_square(acc, t516);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(t518, acc, t2);
- fiat_secp521r1_carry_square(acc, t518);
- fiat_secp521r1_carry_mul(t519, acc, t1);
- fiat_secp521r1_carry_square(acc, t519);
- fiat_secp521r1_carry_square(acc, acc);
- fiat_secp521r1_carry_mul(output, acc, t1);
-}
-
-/*-
- * Q := 2P, both projective, Q and P same pointers OK
- * Autogenerated: op3/dbl_proj.op3
- * https://eprint.iacr.org/2015/1060 Alg 6
- * ASSERT: a = -3
- */
-static void
-point_double(pt_prj_t *Q, const pt_prj_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X = P->X;
- const limb_t *Y = P->Y;
- const limb_t *Z = P->Z;
- limb_t *X3 = Q->X;
- limb_t *Y3 = Q->Y;
- limb_t *Z3 = Q->Z;
-
- /* the curve arith formula */
- fiat_secp521r1_carry_square(t0, X);
- fiat_secp521r1_carry_square(t1, Y);
- fiat_secp521r1_carry_square(t2, Z);
- fiat_secp521r1_carry_mul(t3, X, Y);
- fiat_secp521r1_carry_add(t3, t3, t3);
- fiat_secp521r1_carry_mul(t4, Y, Z);
- fiat_secp521r1_carry_mul(Z3, X, Z);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
- fiat_secp521r1_carry_mul(Y3, b, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, Z3);
- fiat_secp521r1_carry_add(X3, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, X3, Y3);
- fiat_secp521r1_carry_sub(X3, t1, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Y3);
- fiat_secp521r1_carry_mul(X3, X3, t3);
- fiat_secp521r1_carry_add(t3, t2, t2);
- fiat_secp521r1_carry_add(t2, t2, t3);
- fiat_secp521r1_carry_mul(Z3, b, Z3);
- fiat_secp521r1_carry_sub(Z3, Z3, t2);
- fiat_secp521r1_carry_sub(Z3, Z3, t0);
- fiat_secp521r1_carry_add(t3, Z3, Z3);
- fiat_secp521r1_carry_add(Z3, Z3, t3);
- fiat_secp521r1_carry_add(t3, t0, t0);
- fiat_secp521r1_carry_add(t0, t3, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t0, t0, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t0, t4, t4);
- fiat_secp521r1_carry_mul(Z3, t0, Z3);
- fiat_secp521r1_carry_sub(X3, X3, Z3);
- fiat_secp521r1_carry_mul(Z3, t0, t1);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
- fiat_secp521r1_carry_add(Z3, Z3, Z3);
-}
-
-/*-
- * out1 = (arg1 == 0) ? 0 : nz
- * NB: this is not a "mod p equiv" 0, but literal 0
- * NB: this is not a real fiat-crypto function, just named that way for consistency.
- */
-static void
-fiat_secp521r1_nonzero(limb_t *out1, const fe_t arg1)
-{
- limb_t x1 = 0;
- int i;
-
- for (i = 0; i < LIMB_CNT; i++)
- x1 |= arg1[i];
- *out1 = x1;
-}
-
-/*-
- * R := Q + P where R and Q are projective, P affine.
- * R and Q same pointers OK
- * R and P same pointers not OK
- * Autogenerated: op3/add_mixed.op3
- * https://eprint.iacr.org/2015/1060 Alg 5
- * ASSERT: a = -3
- */
-static void
-point_add_mixed(pt_prj_t *R, const pt_prj_t *Q, const pt_aff_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X1 = Q->X;
- const limb_t *Y1 = Q->Y;
- const limb_t *Z1 = Q->Z;
- const limb_t *X2 = P->X;
- const limb_t *Y2 = P->Y;
- fe_t X3;
- fe_t Y3;
- fe_t Z3;
- limb_t nz;
- /* check P for affine inf */
- fiat_secp521r1_nonzero(&nz, P->Y);
-
- /* the curve arith formula */
- fiat_secp521r1_carry_mul(t0, X1, X2);
- fiat_secp521r1_carry_mul(t1, Y1, Y2);
- fiat_secp521r1_carry_add(t3, X2, Y2);
- fiat_secp521r1_carry_add(t4, X1, Y1);
- fiat_secp521r1_carry_mul(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, t0, t1);
- fiat_secp521r1_carry_sub(t3, t3, t4);
- fiat_secp521r1_carry_mul(t4, Y2, Z1);
- fiat_secp521r1_carry_add(t4, t4, Y1);
- fiat_secp521r1_carry_mul(Y3, X2, Z1);
- fiat_secp521r1_carry_add(Y3, Y3, X1);
- fiat_secp521r1_carry_mul(Z3, b, Z1);
- fiat_secp521r1_carry_sub(X3, Y3, Z3);
- fiat_secp521r1_carry_add(Z3, X3, X3);
- fiat_secp521r1_carry_add(X3, X3, Z3);
- fiat_secp521r1_carry_sub(Z3, t1, X3);
- fiat_secp521r1_carry_add(X3, t1, X3);
- fiat_secp521r1_carry_mul(Y3, b, Y3);
- fiat_secp521r1_carry_add(t1, Z1, Z1);
- fiat_secp521r1_carry_add(t2, t1, Z1);
- fiat_secp521r1_carry_sub(Y3, Y3, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t1, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_add(t1, t0, t0);
- fiat_secp521r1_carry_add(t0, t1, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t1, t4, Y3);
- fiat_secp521r1_carry_mul(t2, t0, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t2);
- fiat_secp521r1_carry_mul(X3, t3, X3);
- fiat_secp521r1_carry_sub(X3, X3, t1);
- fiat_secp521r1_carry_mul(Z3, t4, Z3);
- fiat_secp521r1_carry_mul(t1, t3, t0);
- fiat_secp521r1_carry_add(Z3, Z3, t1);
-
- /* if P is inf, throw all that away and take Q */
- fiat_secp521r1_selectznz(R->X, nz, Q->X, X3);
- fiat_secp521r1_selectznz(R->Y, nz, Q->Y, Y3);
- fiat_secp521r1_selectznz(R->Z, nz, Q->Z, Z3);
-}
-
-/*-
- * R := Q + P all projective.
- * R and Q same pointers OK
- * R and P same pointers not OK
- * Autogenerated: op3/add_proj.op3
- * https://eprint.iacr.org/2015/1060 Alg 4
- * ASSERT: a = -3
- */
-static void
-point_add_proj(pt_prj_t *R, const pt_prj_t *Q, const pt_prj_t *P)
-{
- /* temporary variables */
- fe_t t0, t1, t2, t3, t4, t5;
- /* constants */
- const limb_t *b = const_b;
- /* set pointers for legacy curve arith */
- const limb_t *X1 = Q->X;
- const limb_t *Y1 = Q->Y;
- const limb_t *Z1 = Q->Z;
- const limb_t *X2 = P->X;
- const limb_t *Y2 = P->Y;
- const limb_t *Z2 = P->Z;
- limb_t *X3 = R->X;
- limb_t *Y3 = R->Y;
- limb_t *Z3 = R->Z;
-
- /* the curve arith formula */
- fiat_secp521r1_carry_mul(t0, X1, X2);
- fiat_secp521r1_carry_mul(t1, Y1, Y2);
- fiat_secp521r1_carry_mul(t2, Z1, Z2);
- fiat_secp521r1_carry_add(t3, X1, Y1);
- fiat_secp521r1_carry_add(t4, X2, Y2);
- fiat_secp521r1_carry_mul(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, t0, t1);
- fiat_secp521r1_carry_sub(t3, t3, t4);
- fiat_secp521r1_carry_add(t4, Y1, Z1);
- fiat_secp521r1_carry_add(t5, Y2, Z2);
- fiat_secp521r1_carry_mul(t4, t4, t5);
- fiat_secp521r1_carry_add(t5, t1, t2);
- fiat_secp521r1_carry_sub(t4, t4, t5);
- fiat_secp521r1_carry_add(X3, X1, Z1);
- fiat_secp521r1_carry_add(Y3, X2, Z2);
- fiat_secp521r1_carry_mul(X3, X3, Y3);
- fiat_secp521r1_carry_add(Y3, t0, t2);
- fiat_secp521r1_carry_sub(Y3, X3, Y3);
- fiat_secp521r1_carry_mul(Z3, b, t2);
- fiat_secp521r1_carry_sub(X3, Y3, Z3);
- fiat_secp521r1_carry_add(Z3, X3, X3);
- fiat_secp521r1_carry_add(X3, X3, Z3);
- fiat_secp521r1_carry_sub(Z3, t1, X3);
- fiat_secp521r1_carry_add(X3, t1, X3);
- fiat_secp521r1_carry_mul(Y3, b, Y3);
- fiat_secp521r1_carry_add(t1, t2, t2);
- fiat_secp521r1_carry_add(t2, t1, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t2);
- fiat_secp521r1_carry_sub(Y3, Y3, t0);
- fiat_secp521r1_carry_add(t1, Y3, Y3);
- fiat_secp521r1_carry_add(Y3, t1, Y3);
- fiat_secp521r1_carry_add(t1, t0, t0);
- fiat_secp521r1_carry_add(t0, t1, t0);
- fiat_secp521r1_carry_sub(t0, t0, t2);
- fiat_secp521r1_carry_mul(t1, t4, Y3);
- fiat_secp521r1_carry_mul(t2, t0, Y3);
- fiat_secp521r1_carry_mul(Y3, X3, Z3);
- fiat_secp521r1_carry_add(Y3, Y3, t2);
- fiat_secp521r1_carry_mul(X3, t3, X3);
- fiat_secp521r1_carry_sub(X3, X3, t1);
- fiat_secp521r1_carry_mul(Z3, t4, Z3);
- fiat_secp521r1_carry_mul(t1, t3, t0);
- fiat_secp521r1_carry_add(Z3, Z3, t1);
+ return res;
}
-/* constants */
-#define RADIX 5
-#define DRADIX (1 << RADIX)
-#define DRADIX_WNAF ((DRADIX) << 1)
-
-/*-
- * precomp for wnaf scalar multiplication:
- * precomp[0] = 1P
- * precomp[1] = 3P
- * precomp[2] = 5P
- * precomp[3] = 7P
- * precomp[4] = 9P
- * ...
+/*
+ * ECDSA Signature for P-521
*/
-static void
-precomp_wnaf(pt_prj_t precomp[DRADIX / 2], const pt_aff_t *P)
-{
- int i;
-
- fe_copy(precomp[0].X, P->X);
- fe_copy(precomp[0].Y, P->Y);
- fe_copy(precomp[0].Z, const_one);
- point_double(&precomp[DRADIX / 2 - 1], &precomp[0]);
-
- for (i = 1; i < DRADIX / 2; i++)
- point_add_proj(&precomp[i], &precomp[DRADIX / 2 - 1], &precomp[i - 1]);
-}
-/* fetch a scalar bit */
-static int
-scalar_get_bit(const unsigned char in[66], int idx)
+SECStatus
+ec_secp521r1_sign_digest(ECPrivateKey *key, SECItem *signature,
+ const SECItem *digest, const unsigned char *kb,
+ const unsigned int kblen)
{
- int widx, rshift;
-
- widx = idx >> 3;
- rshift = idx & 0x7;
+ SECStatus res = SECSuccess;
- if (idx < 0 || widx >= 66)
- return 0;
-
- return (in[widx] >> rshift) & 0x1;
-}
-
-/*-
- * Compute "regular" wnaf representation of a scalar.
- * See "Exponent Recoding and Regular Exponentiation Algorithms",
- * Tunstall et al., AfricaCrypt 2009, Alg 6.
- * It forces an odd scalar and outputs digits in
- * {\pm 1, \pm 3, \pm 5, \pm 7, \pm 9, ...}
- * i.e. signed odd digits with _no zeroes_ -- that makes it "regular".
- */
-static void
-scalar_rwnaf(int8_t out[106], const unsigned char in[66])
-{
- int i;
- int8_t window, d;
-
- window = (in[0] & (DRADIX_WNAF - 1)) | 1;
- for (i = 0; i < 105; i++) {
- d = (window & (DRADIX_WNAF - 1)) - DRADIX;
- out[i] = d;
- window = (window - d) >> RADIX;
- window += scalar_get_bit(in, (i + 1) * RADIX + 1) << 1;
- window += scalar_get_bit(in, (i + 1) * RADIX + 2) << 2;
- window += scalar_get_bit(in, (i + 1) * RADIX + 3) << 3;
- window += scalar_get_bit(in, (i + 1) * RADIX + 4) << 4;
- window += scalar_get_bit(in, (i + 1) * RADIX + 5) << 5;
+ if (!key || !signature || !digest || !kb ||
+ !key->privateValue.data ||
+ !signature->data || !digest->data ||
+ key->ecParams.name != ECCurve_NIST_P521) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
}
- out[i] = window;
-}
-
-/*-
- * Compute "textbook" wnaf representation of a scalar.
- * NB: not constant time
- */
-static void
-scalar_wnaf(int8_t out[529], const unsigned char in[66])
-{
- int i;
- int8_t window, d;
- window = in[0] & (DRADIX_WNAF - 1);
- for (i = 0; i < 529; i++) {
- d = 0;
- if ((window & 1) && ((d = window & (DRADIX_WNAF - 1)) & DRADIX))
- d -= DRADIX_WNAF;
- out[i] = d;
- window = (window - d) >> 1;
- window += scalar_get_bit(in, i + 1 + RADIX) << RADIX;
+ if (key->privateValue.len != 66 ||
+ kblen == 0 ||
+ digest->len == 0 ||
+ signature->len < 132) {
+ PORT_SetError(SEC_ERROR_INPUT_LEN);
+ res = SECFailure;
+ return res;
}
-}
-/*-
- * Simultaneous scalar multiplication: interleaved "textbook" wnaf.
- * NB: not constant time
- */
-static void
-var_smul_wnaf_two(pt_aff_t *out, const unsigned char a[66],
- const unsigned char b[66], const pt_aff_t *P)
-{
- int i, d, is_neg, is_inf = 1, flipped = 0;
- int8_t anaf[529] = { 0 };
- int8_t bnaf[529] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } };
- pt_prj_t precomp[DRADIX / 2];
-
- precomp_wnaf(precomp, P);
- scalar_wnaf(anaf, a);
- scalar_wnaf(bnaf, b);
-
- for (i = 528; i >= 0; i--) {
- if (!is_inf)
- point_double(&Q, &Q);
- if ((d = bnaf[i])) {
- if ((is_neg = d < 0) != flipped) {
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
- flipped ^= 1;
- }
- d = (is_neg) ? (-d - 1) >> 1 : (d - 1) >> 1;
- if (is_inf) {
- /* initialize accumulator */
- fe_copy(Q.X, &precomp[d].X);
- fe_copy(Q.Y, &precomp[d].Y);
- fe_copy(Q.Z, &precomp[d].Z);
- is_inf = 0;
- } else
- point_add_proj(&Q, &Q, &precomp[d]);
- }
- if ((d = anaf[i])) {
- if ((is_neg = d < 0) != flipped) {
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
- flipped ^= 1;
- }
- d = (is_neg) ? (-d - 1) >> 1 : (d - 1) >> 1;
- if (is_inf) {
- /* initialize accumulator */
- fe_copy(Q.X, &lut_cmb[0][d].X);
- fe_copy(Q.Y, &lut_cmb[0][d].Y);
- fe_copy(Q.Z, const_one);
- is_inf = 0;
- } else
- point_add_mixed(&Q, &Q, &lut_cmb[0][d]);
- }
+ uint8_t hash[66] = { 0 };
+ if (digest->len < 66) {
+ memcpy(hash + 66 - digest->len, digest->data, digest->len);
+ } else {
+ // SEC 1 takes the most significant ceil(log(n)) bits of hash output when the hash output is longer than log(n).
+ hash[0] = digest->data[0] >> 7;
+ for (size_t i=1; i<66; i++) {
+ hash[i] = (digest->data[i-1] << 1) | (digest->data[i] >> 7);
+ }
}
- if (is_inf) {
- /* initialize accumulator to inf: all-zero scalars */
- fe_set_zero(Q.X);
- fe_copy(Q.Y, const_one);
- fe_set_zero(Q.Z);
+ uint8_t nonce[66] = { 0 };
+ if (kblen < 66) {
+ memcpy(nonce + 66 - kblen, kb, kblen);
+ } else {
+ memcpy(nonce, kb, 66);
}
- if (flipped) {
- /* correct sign */
- fiat_secp521r1_carry_opp(Q.Y, Q.Y);
+ bool b = Hacl_P521_ecdsa_sign_p521_without_hash(
+ signature->data, 66, hash,
+ key->privateValue.data, nonce);
+ if (!b) {
+ PORT_SetError(SEC_ERROR_BAD_KEY);
+ res = SECFailure;
+ return res;
}
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
+ signature->len = 132;
+ return res;
}
-/*-
- * Variable point scalar multiplication with "regular" wnaf.
- * Here "regular" means _no zeroes_, so the sequence of
- * EC arithmetic ops is fixed.
+/*
+ * ECDSA Signature Verification for P-521
*/
-static void
-var_smul_rwnaf(pt_aff_t *out, const unsigned char scalar[66],
- const pt_aff_t *P)
-{
- int i, j, d, diff, is_neg;
- int8_t rnaf[106] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } }, lut = { { 0 }, { 0 }, { 0 } };
- pt_prj_t precomp[DRADIX / 2];
-
- precomp_wnaf(precomp, P);
- scalar_rwnaf(rnaf, scalar);
-#if defined(_MSC_VER)
- /* result still unsigned: yes we know */
-#pragma warning(push)
-#pragma warning(disable : 4146)
-#endif
+SECStatus
+ec_secp521r1_verify_digest(ECPublicKey *key, const SECItem *signature,
+ const SECItem *digest)
+{
+ SECStatus res = SECSuccess;
- /* initialize accumulator to high digit */
- d = (rnaf[105] - 1) >> 1;
- for (j = 0; j < DRADIX / 2; j++) {
- diff = (1 - (-(d ^ j) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(Q.X, diff, Q.X, precomp[j].X);
- fiat_secp521r1_selectznz(Q.Y, diff, Q.Y, precomp[j].Y);
- fiat_secp521r1_selectznz(Q.Z, diff, Q.Z, precomp[j].Z);
+ if (!key || !signature || !digest ||
+ !key->publicValue.data ||
+ !signature->data || !digest->data ||
+ key->ecParams.name != ECCurve_NIST_P521) {
+ PORT_SetError(SEC_ERROR_INVALID_ARGS);
+ res = SECFailure;
+ return res;
}
- for (i = 104; i >= 0; i--) {
- for (j = 0; j < RADIX; j++)
- point_double(&Q, &Q);
- d = rnaf[i];
- /* is_neg = (d < 0) ? 1 : 0 */
- is_neg = (d >> (8 * sizeof(int) - 1)) & 1;
- /* d = abs(d) */
- d = (d ^ -is_neg) + is_neg;
- d = (d - 1) >> 1;
- for (j = 0; j < DRADIX / 2; j++) {
- diff = (1 - (-(d ^ j) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(lut.X, diff, lut.X, precomp[j].X);
- fiat_secp521r1_selectznz(lut.Y, diff, lut.Y, precomp[j].Y);
- fiat_secp521r1_selectznz(lut.Z, diff, lut.Z, precomp[j].Z);
- }
- /* negate lut point if digit is negative */
- fiat_secp521r1_carry_opp(out->Y, lut.Y);
- fiat_secp521r1_selectznz(lut.Y, is_neg, lut.Y, out->Y);
- point_add_proj(&Q, &Q, &lut);
+ if (key->publicValue.len != 133 ||
+ digest->len == 0 ||
+ signature->len != 132) {
+ PORT_SetError(SEC_ERROR_INPUT_LEN);
+ res = SECFailure;
+ return res;
}
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
- /* conditionally subtract P if the scalar was even */
- fe_copy(lut.X, precomp[0].X);
- fiat_secp521r1_carry_opp(lut.Y, precomp[0].Y);
- fe_copy(lut.Z, precomp[0].Z);
- point_add_proj(&lut, &lut, &Q);
- fiat_secp521r1_selectznz(Q.X, scalar[0] & 1, lut.X, Q.X);
- fiat_secp521r1_selectznz(Q.Y, scalar[0] & 1, lut.Y, Q.Y);
- fiat_secp521r1_selectznz(Q.Z, scalar[0] & 1, lut.Z, Q.Z);
-
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
-}
-
-/*-
- * Fixed scalar multiplication: comb with interleaving.
- */
-static void
-fixed_smul_cmb(pt_aff_t *out, const unsigned char scalar[66])
-{
- int i, j, k, d, diff, is_neg = 0;
- int8_t rnaf[106] = { 0 };
- pt_prj_t Q = { { 0 }, { 0 }, { 0 } }, R = { { 0 }, { 0 }, { 0 } };
- pt_aff_t lut = { { 0 }, { 0 } };
-
- scalar_rwnaf(rnaf, scalar);
-
- /* initalize accumulator to inf */
- fe_set_zero(Q.X);
- fe_copy(Q.Y, const_one);
- fe_set_zero(Q.Z);
-
-#if defined(_MSC_VER)
- /* result still unsigned: yes we know */
-#pragma warning(push)
-#pragma warning(disable : 4146)
-#endif
-
- for (i = 8; i >= 0; i--) {
- for (j = 0; i != 8 && j < RADIX; j++)
- point_double(&Q, &Q);
- for (j = 0; j < 13; j++) {
- if (j * 9 + i > 105)
- continue;
- d = rnaf[j * 9 + i];
- /* is_neg = (d < 0) ? 1 : 0 */
- is_neg = (d >> (8 * sizeof(int) - 1)) & 1;
- /* d = abs(d) */
- d = (d ^ -is_neg) + is_neg;
- d = (d - 1) >> 1;
- for (k = 0; k < DRADIX / 2; k++) {
- diff = (1 - (-(d ^ k) >> (8 * sizeof(int) - 1))) & 1;
- fiat_secp521r1_selectznz(lut.X, diff, lut.X, lut_cmb[j][k].X);
- fiat_secp521r1_selectznz(lut.Y, diff, lut.Y, lut_cmb[j][k].Y);
- }
- /* negate lut point if digit is negative */
- fiat_secp521r1_carry_opp(out->Y, lut.Y);
- fiat_secp521r1_selectznz(lut.Y, is_neg, lut.Y, out->Y);
- point_add_mixed(&Q, &Q, &lut);
- }
+ if (key->publicValue.data[0] != EC_POINT_FORM_UNCOMPRESSED) {
+ PORT_SetError(SEC_ERROR_UNSUPPORTED_EC_POINT_FORM);
+ res = SECFailure;
+ return res;
}
-#if defined(_MSC_VER)
-#pragma warning(pop)
-#endif
-
- /* conditionally subtract P if the scalar was even */
- fe_copy(lut.X, lut_cmb[0][0].X);
- fiat_secp521r1_carry_opp(lut.Y, lut_cmb[0][0].Y);
- point_add_mixed(&R, &Q, &lut);
- fiat_secp521r1_selectznz(Q.X, scalar[0] & 1, R.X, Q.X);
- fiat_secp521r1_selectznz(Q.Y, scalar[0] & 1, R.Y, Q.Y);
- fiat_secp521r1_selectznz(Q.Z, scalar[0] & 1, R.Z, Q.Z);
-
- /* convert to affine -- NB depends on coordinate system */
- fiat_secp521r1_inv(Q.Z, Q.Z);
- fiat_secp521r1_carry_mul(out->X, Q.X, Q.Z);
- fiat_secp521r1_carry_mul(out->Y, Q.Y, Q.Z);
-}
-
-/*-
- * Wrapper: simultaneous scalar mutiplication.
- * outx, outy := a * G + b * P
- * where P = (inx, iny).
- * Everything is LE byte ordering.
- */
-static void
-point_mul_two_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char a[66],
- const unsigned char b[66],
- const unsigned char inx[66],
- const unsigned char iny[66])
-{
- pt_aff_t P;
-
- fiat_secp521r1_from_bytes(P.X, inx);
- fiat_secp521r1_from_bytes(P.Y, iny);
- /* simultaneous scalar multiplication */
- var_smul_wnaf_two(&P, a, b, &P);
-
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-/*-
- * Wrapper: fixed scalar mutiplication.
- * outx, outy := scalar * G
- * Everything is LE byte ordering.
- */
-static void
-point_mul_g_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char scalar[66])
-{
- pt_aff_t P;
-
- /* fixed scmul function */
- fixed_smul_cmb(&P, scalar);
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-/*-
- * Wrapper: variable point scalar mutiplication.
- * outx, outy := scalar * P
- * where P = (inx, iny).
- * Everything is LE byte ordering.
- */
-static void
-point_mul_secp521r1(unsigned char outx[66], unsigned char outy[66],
- const unsigned char scalar[66],
- const unsigned char inx[66],
- const unsigned char iny[66])
-{
- pt_aff_t P;
-
- fiat_secp521r1_from_bytes(P.X, inx);
- fiat_secp521r1_from_bytes(P.Y, iny);
- /* var scmul function */
- var_smul_rwnaf(&P, scalar, &P);
- fiat_secp521r1_to_bytes(outx, P.X);
- fiat_secp521r1_to_bytes(outy, P.Y);
-}
-
-#undef RADIX
-#include "ecp.h"
-#include "mpi-priv.h"
-#include "mplogic.h"
-
-/*-
- * reverse bytes -- total hack
- */
-#define MP_BE2LE(a) \
- do { \
- unsigned char z_bswap; \
- z_bswap = a[0]; \
- a[0] = a[65]; \
- a[65] = z_bswap; \
- z_bswap = a[1]; \
- a[1] = a[64]; \
- a[64] = z_bswap; \
- z_bswap = a[2]; \
- a[2] = a[63]; \
- a[63] = z_bswap; \
- z_bswap = a[3]; \
- a[3] = a[62]; \
- a[62] = z_bswap; \
- z_bswap = a[4]; \
- a[4] = a[61]; \
- a[61] = z_bswap; \
- z_bswap = a[5]; \
- a[5] = a[60]; \
- a[60] = z_bswap; \
- z_bswap = a[6]; \
- a[6] = a[59]; \
- a[59] = z_bswap; \
- z_bswap = a[7]; \
- a[7] = a[58]; \
- a[58] = z_bswap; \
- z_bswap = a[8]; \
- a[8] = a[57]; \
- a[57] = z_bswap; \
- z_bswap = a[9]; \
- a[9] = a[56]; \
- a[56] = z_bswap; \
- z_bswap = a[10]; \
- a[10] = a[55]; \
- a[55] = z_bswap; \
- z_bswap = a[11]; \
- a[11] = a[54]; \
- a[54] = z_bswap; \
- z_bswap = a[12]; \
- a[12] = a[53]; \
- a[53] = z_bswap; \
- z_bswap = a[13]; \
- a[13] = a[52]; \
- a[52] = z_bswap; \
- z_bswap = a[14]; \
- a[14] = a[51]; \
- a[51] = z_bswap; \
- z_bswap = a[15]; \
- a[15] = a[50]; \
- a[50] = z_bswap; \
- z_bswap = a[16]; \
- a[16] = a[49]; \
- a[49] = z_bswap; \
- z_bswap = a[17]; \
- a[17] = a[48]; \
- a[48] = z_bswap; \
- z_bswap = a[18]; \
- a[18] = a[47]; \
- a[47] = z_bswap; \
- z_bswap = a[19]; \
- a[19] = a[46]; \
- a[46] = z_bswap; \
- z_bswap = a[20]; \
- a[20] = a[45]; \
- a[45] = z_bswap; \
- z_bswap = a[21]; \
- a[21] = a[44]; \
- a[44] = z_bswap; \
- z_bswap = a[22]; \
- a[22] = a[43]; \
- a[43] = z_bswap; \
- z_bswap = a[23]; \
- a[23] = a[42]; \
- a[42] = z_bswap; \
- z_bswap = a[24]; \
- a[24] = a[41]; \
- a[41] = z_bswap; \
- z_bswap = a[25]; \
- a[25] = a[40]; \
- a[40] = z_bswap; \
- z_bswap = a[26]; \
- a[26] = a[39]; \
- a[39] = z_bswap; \
- z_bswap = a[27]; \
- a[27] = a[38]; \
- a[38] = z_bswap; \
- z_bswap = a[28]; \
- a[28] = a[37]; \
- a[37] = z_bswap; \
- z_bswap = a[29]; \
- a[29] = a[36]; \
- a[36] = z_bswap; \
- z_bswap = a[30]; \
- a[30] = a[35]; \
- a[35] = z_bswap; \
- z_bswap = a[31]; \
- a[31] = a[34]; \
- a[34] = z_bswap; \
- z_bswap = a[32]; \
- a[32] = a[33]; \
- a[33] = z_bswap; \
- } while (0)
-
-static mp_err
-point_mul_g_secp521r1_wrap(const mp_int *n, mp_int *out_x,
- mp_int *out_y, const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n[66];
- mp_err res;
-
- ARGCHK(n != NULL && out_x != NULL && out_y != NULL, MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n) > 521 || mp_cmp_z(n) != MP_GT)
- return MP_RANGE;
-
- MP_CHECKOK(mp_to_fixlen_octets(n, b_n, 66));
- MP_BE2LE(b_n);
- point_mul_g_secp521r1(b_x, b_y, b_n);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
-
-CLEANUP:
- return res;
-}
-
-static mp_err
-point_mul_secp521r1_wrap(const mp_int *n, const mp_int *in_x,
- const mp_int *in_y, mp_int *out_x,
- mp_int *out_y, const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n[66];
- mp_err res;
-
- ARGCHK(n != NULL && in_x != NULL && in_y != NULL && out_x != NULL &&
- out_y != NULL,
- MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n) > 521 || mp_cmp_z(n) != MP_GT)
- return MP_RANGE;
-
- MP_CHECKOK(mp_to_fixlen_octets(n, b_n, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_x, b_x, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_y, b_y, 66));
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_BE2LE(b_n);
- point_mul_secp521r1(b_x, b_y, b_n, b_x, b_y);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
-
-CLEANUP:
- return res;
-}
-
-static mp_err
-point_mul_two_secp521r1_wrap(const mp_int *n1, const mp_int *n2,
- const mp_int *in_x,
- const mp_int *in_y, mp_int *out_x,
- mp_int *out_y,
- const ECGroup *group)
-{
- unsigned char b_x[66];
- unsigned char b_y[66];
- unsigned char b_n1[66];
- unsigned char b_n2[66];
- mp_err res;
-
- /* If n2 == NULL or 0, this is just a base-point multiplication. */
- if (n2 == NULL || mp_cmp_z(n2) == MP_EQ)
- return point_mul_g_secp521r1_wrap(n1, out_x, out_y, group);
-
- /* If n1 == NULL or 0, this is just an arbitary-point multiplication. */
- if (n1 == NULL || mp_cmp_z(n1) == MP_EQ)
- return point_mul_secp521r1_wrap(n2, in_x, in_y, out_x, out_y, group);
-
- ARGCHK(in_x != NULL && in_y != NULL && out_x != NULL && out_y != NULL,
- MP_BADARG);
-
- /* fail on out of range scalars */
- if (mpl_significant_bits(n1) > 521 || mp_cmp_z(n1) != MP_GT ||
- mpl_significant_bits(n2) > 521 || mp_cmp_z(n2) != MP_GT)
- return MP_RANGE;
+ uint8_t hash[66] = { 0 };
+ if (digest->len < 66) {
+ memcpy(hash + 66 - digest->len, digest->data, digest->len);
+ } else {
+ // SEC 1 takes the most significant ceil(log(n)) bits of hash output when the hash output is longer than log(n).
+ hash[0] = digest->data[0] >> 7;
+ for (size_t i=1; i<66; i++) {
+ hash[i] = (digest->data[i-1] << 1) | (digest->data[i] >> 7);
+ }
+ }
+
- MP_CHECKOK(mp_to_fixlen_octets(n1, b_n1, 66));
- MP_CHECKOK(mp_to_fixlen_octets(n2, b_n2, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_x, b_x, 66));
- MP_CHECKOK(mp_to_fixlen_octets(in_y, b_y, 66));
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_BE2LE(b_n1);
- MP_BE2LE(b_n2);
- point_mul_two_secp521r1(b_x, b_y, b_n1, b_n2, b_x, b_y);
- MP_BE2LE(b_x);
- MP_BE2LE(b_y);
- MP_CHECKOK(mp_read_unsigned_octets(out_x, b_x, 66));
- MP_CHECKOK(mp_read_unsigned_octets(out_y, b_y, 66));
+ bool b = Hacl_P521_ecdsa_verif_without_hash(
+ 66, hash,
+ key->publicValue.data + 1,
+ signature->data, signature->data + 66);
+ if (!b) {
+ PORT_SetError(SEC_ERROR_BAD_SIGNATURE);
+ res = SECFailure;
+ return res;
+ }
-CLEANUP:
return res;
}
-
-mp_err
-ec_group_set_secp521r1(ECGroup *group, ECCurveName name)
-{
- if (name == ECCurve_NIST_P521) {
- group->base_point_mul = &point_mul_g_secp521r1_wrap;
- group->point_mul = &point_mul_secp521r1_wrap;
- group->points_mul = &point_mul_two_secp521r1_wrap;
- }
- return MP_OKAY;
-}
-
-#endif /* __SIZEOF_INT128__ */
diff -up ./lib/freebl/verified/Hacl_P521.c.p521_hacl ./lib/freebl/verified/Hacl_P521.c
--- ./lib/freebl/verified/Hacl_P521.c.p521_hacl 2024-01-10 14:02:53.234576425 -0800
+++ ./lib/freebl/verified/Hacl_P521.c 2024-01-10 14:04:29.764450895 -0800
@@ -22,86 +22,1438 @@
* SOFTWARE.
*/
+
#include "Hacl_P521.h"
#include "internal/Hacl_Krmllib.h"
#include "internal/Hacl_Bignum_Base.h"
-static inline uint64_t
-bn_is_eq_mask(uint64_t *x, uint64_t *y)
+static inline uint64_t bn_is_eq_mask(uint64_t *x, uint64_t *y)
+{
+ uint64_t mask = (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t uu____0 = FStar_UInt64_eq_mask(x[i], y[i]);
+ mask = uu____0 & mask;);
+ uint64_t mask1 = mask;
+ return mask1;
+}
+
+static inline void bn_cmovznz(uint64_t *a, uint64_t b, uint64_t *c, uint64_t *d)
+{
+ uint64_t mask = ~FStar_UInt64_eq_mask(b, (uint64_t)0U);
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = a;
+ uint64_t uu____0 = c[i];
+ uint64_t x = uu____0 ^ (mask & (d[i] ^ uu____0));
+ os[i] = x;);
+}
+
+static inline void bn_add_mod(uint64_t *a, uint64_t *b, uint64_t *c, uint64_t *d)
+{
+ uint64_t c10 = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = c[(uint32_t)4U * i];
+ uint64_t t20 = d[(uint32_t)4U * i];
+ uint64_t *res_i0 = a + (uint32_t)4U * i;
+ c10 = Lib_IntTypes_Intrinsics_add_carry_u64(c10, t1, t20, res_i0);
+ uint64_t t10 = c[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = d[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = a + (uint32_t)4U * i + (uint32_t)1U;
+ c10 = Lib_IntTypes_Intrinsics_add_carry_u64(c10, t10, t21, res_i1);
+ uint64_t t11 = c[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = d[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = a + (uint32_t)4U * i + (uint32_t)2U;
+ c10 = Lib_IntTypes_Intrinsics_add_carry_u64(c10, t11, t22, res_i2);
+ uint64_t t12 = c[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = d[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = a + (uint32_t)4U * i + (uint32_t)3U;
+ c10 = Lib_IntTypes_Intrinsics_add_carry_u64(c10, t12, t2, res_i););
+ {
+ uint64_t t1 = c[8U];
+ uint64_t t2 = d[8U];
+ uint64_t *res_i = a + (uint32_t)8U;
+ c10 = Lib_IntTypes_Intrinsics_add_carry_u64(c10, t1, t2, res_i);
+ }
+ uint64_t c0 = c10;
+ uint64_t tmp[9U] = { 0U };
+ uint64_t c1 = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = a[(uint32_t)4U * i];
+ uint64_t t20 = b[(uint32_t)4U * i];
+ uint64_t *res_i0 = tmp + (uint32_t)4U * i;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t20, res_i0);
+ uint64_t t10 = a[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = b[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = tmp + (uint32_t)4U * i + (uint32_t)1U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t10, t21, res_i1);
+ uint64_t t11 = a[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = b[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = tmp + (uint32_t)4U * i + (uint32_t)2U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t11, t22, res_i2);
+ uint64_t t12 = a[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = b[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = tmp + (uint32_t)4U * i + (uint32_t)3U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t12, t2, res_i););
+ {
+ uint64_t t1 = a[8U];
+ uint64_t t2 = b[8U];
+ uint64_t *res_i = tmp + (uint32_t)8U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t2, res_i);
+ }
+ uint64_t c11 = c1;
+ uint64_t c2 = c0 - c11;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = a;
+ uint64_t x = (c2 & a[i]) | (~c2 & tmp[i]);
+ os[i] = x;);
+}
+
+static inline uint64_t bn_sub(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t c1 = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = b[(uint32_t)4U * i];
+ uint64_t t20 = c[(uint32_t)4U * i];
+ uint64_t *res_i0 = a + (uint32_t)4U * i;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t20, res_i0);
+ uint64_t t10 = b[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = c[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = a + (uint32_t)4U * i + (uint32_t)1U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t10, t21, res_i1);
+ uint64_t t11 = b[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = c[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = a + (uint32_t)4U * i + (uint32_t)2U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t11, t22, res_i2);
+ uint64_t t12 = b[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = c[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = a + (uint32_t)4U * i + (uint32_t)3U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t12, t2, res_i););
+ {
+ uint64_t t1 = b[8U];
+ uint64_t t2 = c[8U];
+ uint64_t *res_i = a + (uint32_t)8U;
+ c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t2, res_i);
+ }
+ uint64_t c10 = c1;
+ return c10;
+}
+
+static inline void bn_sub_mod(uint64_t *a, uint64_t *b, uint64_t *c, uint64_t *d)
{
- uint64_t mask = (uint64_t)0xFFFFFFFFFFFFFFFFU;
- KRML_MAYBE_FOR9(i,
- (uint32_t)0U,
- (uint32_t)9U,
- (uint32_t)1U,
- uint64_t uu____0 = FStar_UInt64_eq_mask(x[i], y[i]);
- mask = uu____0 & mask;);
- uint64_t mask1 = mask;
- return mask1;
+ uint64_t c10 = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = c[(uint32_t)4U * i];
+ uint64_t t20 = d[(uint32_t)4U * i];
+ uint64_t *res_i0 = a + (uint32_t)4U * i;
+ c10 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c10, t1, t20, res_i0);
+ uint64_t t10 = c[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = d[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = a + (uint32_t)4U * i + (uint32_t)1U;
+ c10 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c10, t10, t21, res_i1);
+ uint64_t t11 = c[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = d[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = a + (uint32_t)4U * i + (uint32_t)2U;
+ c10 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c10, t11, t22, res_i2);
+ uint64_t t12 = c[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = d[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = a + (uint32_t)4U * i + (uint32_t)3U;
+ c10 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c10, t12, t2, res_i););
+ {
+ uint64_t t1 = c[8U];
+ uint64_t t2 = d[8U];
+ uint64_t *res_i = a + (uint32_t)8U;
+ c10 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c10, t1, t2, res_i);
+ }
+ uint64_t c0 = c10;
+ uint64_t tmp[9U] = { 0U };
+ uint64_t c1 = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = a[(uint32_t)4U * i];
+ uint64_t t20 = b[(uint32_t)4U * i];
+ uint64_t *res_i0 = tmp + (uint32_t)4U * i;
+ c1 = Lib_IntTypes_Intrinsics_add_carry_u64(c1, t1, t20, res_i0);
+ uint64_t t10 = a[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = b[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = tmp + (uint32_t)4U * i + (uint32_t)1U;
+ c1 = Lib_IntTypes_Intrinsics_add_carry_u64(c1, t10, t21, res_i1);
+ uint64_t t11 = a[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = b[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = tmp + (uint32_t)4U * i + (uint32_t)2U;
+ c1 = Lib_IntTypes_Intrinsics_add_carry_u64(c1, t11, t22, res_i2);
+ uint64_t t12 = a[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = b[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = tmp + (uint32_t)4U * i + (uint32_t)3U;
+ c1 = Lib_IntTypes_Intrinsics_add_carry_u64(c1, t12, t2, res_i););
+ {
+ uint64_t t1 = a[8U];
+ uint64_t t2 = b[8U];
+ uint64_t *res_i = tmp + (uint32_t)8U;
+ c1 = Lib_IntTypes_Intrinsics_add_carry_u64(c1, t1, t2, res_i);
+ }
+ uint64_t c11 = c1;
+ KRML_HOST_IGNORE(c11);
+ uint64_t c2 = (uint64_t)0U - c0;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = a;
+ uint64_t x = (c2 & tmp[i]) | (~c2 & a[i]);
+ os[i] = x;);
}
-static inline uint64_t
-bn_sub(uint64_t *a, uint64_t *b, uint64_t *c)
+static inline void bn_mul(uint64_t *a, uint64_t *b, uint64_t *c)
{
+ memset(a, 0U, (uint32_t)18U * sizeof (uint64_t));
+ KRML_MAYBE_FOR9(i0,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t bj = c[i0];
+ uint64_t *res_j = a + i0;
uint64_t c1 = (uint64_t)0U;
KRML_MAYBE_FOR2(i,
- (uint32_t)0U,
- (uint32_t)2U,
- (uint32_t)1U,
- uint64_t t1 = b[(uint32_t)4U * i];
- uint64_t t20 = c[(uint32_t)4U * i];
- uint64_t *res_i0 = a + (uint32_t)4U * i;
- c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t20, res_i0);
- uint64_t t10 = b[(uint32_t)4U * i + (uint32_t)1U];
- uint64_t t21 = c[(uint32_t)4U * i + (uint32_t)1U];
- uint64_t *res_i1 = a + (uint32_t)4U * i + (uint32_t)1U;
- c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t10, t21, res_i1);
- uint64_t t11 = b[(uint32_t)4U * i + (uint32_t)2U];
- uint64_t t22 = c[(uint32_t)4U * i + (uint32_t)2U];
- uint64_t *res_i2 = a + (uint32_t)4U * i + (uint32_t)2U;
- c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t11, t22, res_i2);
- uint64_t t12 = b[(uint32_t)4U * i + (uint32_t)3U];
- uint64_t t2 = c[(uint32_t)4U * i + (uint32_t)3U];
- uint64_t *res_i = a + (uint32_t)4U * i + (uint32_t)3U;
- c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t12, t2, res_i););
- {
- uint64_t t1 = b[8U];
- uint64_t t2 = c[8U];
- uint64_t *res_i = a + (uint32_t)8U;
- c1 = Lib_IntTypes_Intrinsics_sub_borrow_u64(c1, t1, t2, res_i);
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t a_i = b[(uint32_t)4U * i];
+ uint64_t *res_i0 = res_j + (uint32_t)4U * i;
+ c1 = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, bj, c1, res_i0);
+ uint64_t a_i0 = b[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = res_j + (uint32_t)4U * i + (uint32_t)1U;
+ c1 = Hacl_Bignum_Base_mul_wide_add2_u64(a_i0, bj, c1, res_i1);
+ uint64_t a_i1 = b[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = res_j + (uint32_t)4U * i + (uint32_t)2U;
+ c1 = Hacl_Bignum_Base_mul_wide_add2_u64(a_i1, bj, c1, res_i2);
+ uint64_t a_i2 = b[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = res_j + (uint32_t)4U * i + (uint32_t)3U;
+ c1 = Hacl_Bignum_Base_mul_wide_add2_u64(a_i2, bj, c1, res_i););
+ {
+ uint64_t a_i = b[8U];
+ uint64_t *res_i = res_j + (uint32_t)8U;
+ c1 = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, bj, c1, res_i);
}
- uint64_t c10 = c1;
- return c10;
+ uint64_t r = c1;
+ a[(uint32_t)9U + i0] = r;);
}
-static inline void
-bn_from_bytes_be(uint64_t *a, uint8_t *b)
+static inline void bn_sqr(uint64_t *a, uint64_t *b)
+{
+ memset(a, 0U, (uint32_t)18U * sizeof (uint64_t));
+ KRML_MAYBE_FOR9(i0,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *ab = b;
+ uint64_t a_j = b[i0];
+ uint64_t *res_j = a + i0;
+ uint64_t c = (uint64_t)0U;
+ for (uint32_t i = (uint32_t)0U; i < i0 / (uint32_t)4U; i++)
+ {
+ uint64_t a_i = ab[(uint32_t)4U * i];
+ uint64_t *res_i0 = res_j + (uint32_t)4U * i;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, a_j, c, res_i0);
+ uint64_t a_i0 = ab[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = res_j + (uint32_t)4U * i + (uint32_t)1U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i0, a_j, c, res_i1);
+ uint64_t a_i1 = ab[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = res_j + (uint32_t)4U * i + (uint32_t)2U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i1, a_j, c, res_i2);
+ uint64_t a_i2 = ab[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = res_j + (uint32_t)4U * i + (uint32_t)3U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i2, a_j, c, res_i);
+ }
+ for (uint32_t i = i0 / (uint32_t)4U * (uint32_t)4U; i < i0; i++)
+ {
+ uint64_t a_i = ab[i];
+ uint64_t *res_i = res_j + i;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, a_j, c, res_i);
+ }
+ uint64_t r = c;
+ a[i0 + i0] = r;);
+ uint64_t c0 = Hacl_Bignum_Addition_bn_add_eq_len_u64((uint32_t)18U, a, a, a);
+ KRML_HOST_IGNORE(c0);
+ uint64_t tmp[18U] = { 0U };
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ FStar_UInt128_uint128 res = FStar_UInt128_mul_wide(b[i], b[i]);
+ uint64_t hi = FStar_UInt128_uint128_to_uint64(FStar_UInt128_shift_right(res, (uint32_t)64U));
+ uint64_t lo = FStar_UInt128_uint128_to_uint64(res);
+ tmp[(uint32_t)2U * i] = lo;
+ tmp[(uint32_t)2U * i + (uint32_t)1U] = hi;);
+ uint64_t c1 = Hacl_Bignum_Addition_bn_add_eq_len_u64((uint32_t)18U, a, tmp, a);
+ KRML_HOST_IGNORE(c1);
+}
+
+static inline void bn_to_bytes_be(uint8_t *a, uint64_t *b)
+{
+ uint8_t tmp[72U] = { 0U };
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ store64_be(tmp + i * (uint32_t)8U, b[(uint32_t)9U - i - (uint32_t)1U]););
+ memcpy(a, tmp + (uint32_t)6U, (uint32_t)66U * sizeof (uint8_t));
+}
+
+static inline void bn_from_bytes_be(uint64_t *a, uint8_t *b)
+{
+ uint8_t tmp[72U] = { 0U };
+ memcpy(tmp + (uint32_t)6U, b, (uint32_t)66U * sizeof (uint8_t));
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = a;
+ uint64_t u = load64_be(tmp + ((uint32_t)9U - i - (uint32_t)1U) * (uint32_t)8U);
+ uint64_t x = u;
+ os[i] = x;);
+}
+
+static inline void p521_make_prime(uint64_t *n)
+{
+ n[0U] = (uint64_t)0xffffffffffffffffU;
+ n[1U] = (uint64_t)0xffffffffffffffffU;
+ n[2U] = (uint64_t)0xffffffffffffffffU;
+ n[3U] = (uint64_t)0xffffffffffffffffU;
+ n[4U] = (uint64_t)0xffffffffffffffffU;
+ n[5U] = (uint64_t)0xffffffffffffffffU;
+ n[6U] = (uint64_t)0xffffffffffffffffU;
+ n[7U] = (uint64_t)0xffffffffffffffffU;
+ n[8U] = (uint64_t)0x1ffU;
+}
+
+static inline void p521_make_order(uint64_t *n)
{
- uint8_t tmp[72U] = { 0U };
- memcpy(tmp + (uint32_t)6U, b, (uint32_t)66U * sizeof(uint8_t));
- KRML_MAYBE_FOR9(i,
- (uint32_t)0U,
- (uint32_t)9U,
- (uint32_t)1U,
- uint64_t *os = a;
- uint64_t u = load64_be(tmp + ((uint32_t)9U - i - (uint32_t)1U) * (uint32_t)8U);
- uint64_t x = u;
- os[i] = x;);
+ n[0U] = (uint64_t)0xbb6fb71e91386409U;
+ n[1U] = (uint64_t)0x3bb5c9b8899c47aeU;
+ n[2U] = (uint64_t)0x7fcc0148f709a5d0U;
+ n[3U] = (uint64_t)0x51868783bf2f966bU;
+ n[4U] = (uint64_t)0xfffffffffffffffaU;
+ n[5U] = (uint64_t)0xffffffffffffffffU;
+ n[6U] = (uint64_t)0xffffffffffffffffU;
+ n[7U] = (uint64_t)0xffffffffffffffffU;
+ n[8U] = (uint64_t)0x1ffU;
+}
+
+static inline void p521_make_a_coeff(uint64_t *a)
+{
+ a[0U] = (uint64_t)0xfe7fffffffffffffU;
+ a[1U] = (uint64_t)0xffffffffffffffffU;
+ a[2U] = (uint64_t)0xffffffffffffffffU;
+ a[3U] = (uint64_t)0xffffffffffffffffU;
+ a[4U] = (uint64_t)0xffffffffffffffffU;
+ a[5U] = (uint64_t)0xffffffffffffffffU;
+ a[6U] = (uint64_t)0xffffffffffffffffU;
+ a[7U] = (uint64_t)0xffffffffffffffffU;
+ a[8U] = (uint64_t)0x01ffU;
+}
+
+static inline void p521_make_b_coeff(uint64_t *b)
+{
+ b[0U] = (uint64_t)0x8014654fae586387U;
+ b[1U] = (uint64_t)0x78f7a28fea35a81fU;
+ b[2U] = (uint64_t)0x839ab9efc41e961aU;
+ b[3U] = (uint64_t)0xbd8b29605e9dd8dfU;
+ b[4U] = (uint64_t)0xf0ab0c9ca8f63f49U;
+ b[5U] = (uint64_t)0xf9dc5a44c8c77884U;
+ b[6U] = (uint64_t)0x77516d392dccd98aU;
+ b[7U] = (uint64_t)0x0fc94d10d05b42a0U;
+ b[8U] = (uint64_t)0x4dU;
+}
+
+static inline void p521_make_g_x(uint64_t *n)
+{
+ n[0U] = (uint64_t)0xb331a16381adc101U;
+ n[1U] = (uint64_t)0x4dfcbf3f18e172deU;
+ n[2U] = (uint64_t)0x6f19a459e0c2b521U;
+ n[3U] = (uint64_t)0x947f0ee093d17fd4U;
+ n[4U] = (uint64_t)0xdd50a5af3bf7f3acU;
+ n[5U] = (uint64_t)0x90fc1457b035a69eU;
+ n[6U] = (uint64_t)0x214e32409c829fdaU;
+ n[7U] = (uint64_t)0xe6cf1f65b311cadaU;
+ n[8U] = (uint64_t)0x74U;
+}
+
+static inline void p521_make_g_y(uint64_t *n)
+{
+ n[0U] = (uint64_t)0x28460e4a5a9e268eU;
+ n[1U] = (uint64_t)0x20445f4a3b4fe8b3U;
+ n[2U] = (uint64_t)0xb09a9e3843513961U;
+ n[3U] = (uint64_t)0x2062a85c809fd683U;
+ n[4U] = (uint64_t)0x164bf7394caf7a13U;
+ n[5U] = (uint64_t)0x340bd7de8b939f33U;
+ n[6U] = (uint64_t)0xeccc7aa224abcda2U;
+ n[7U] = (uint64_t)0x022e452fda163e8dU;
+ n[8U] = (uint64_t)0x1e0U;
+}
+
+static inline void p521_make_fmont_R2(uint64_t *n)
+{
+ n[0U] = (uint64_t)0x0U;
+ n[1U] = (uint64_t)0x400000000000U;
+ n[2U] = (uint64_t)0x0U;
+ n[3U] = (uint64_t)0x0U;
+ n[4U] = (uint64_t)0x0U;
+ n[5U] = (uint64_t)0x0U;
+ n[6U] = (uint64_t)0x0U;
+ n[7U] = (uint64_t)0x0U;
+ n[8U] = (uint64_t)0x0U;
+}
+
+static inline void p521_make_fzero(uint64_t *n)
+{
+ memset(n, 0U, (uint32_t)9U * sizeof (uint64_t));
+ n[0U] = (uint64_t)0U;
+}
+
+static inline void p521_make_fone(uint64_t *n)
+{
+ n[0U] = (uint64_t)0x80000000000000U;
+ n[1U] = (uint64_t)0x0U;
+ n[2U] = (uint64_t)0x0U;
+ n[3U] = (uint64_t)0x0U;
+ n[4U] = (uint64_t)0x0U;
+ n[5U] = (uint64_t)0x0U;
+ n[6U] = (uint64_t)0x0U;
+ n[7U] = (uint64_t)0x0U;
+ n[8U] = (uint64_t)0x0U;
+}
+
+static inline void p521_make_qone(uint64_t *f)
+{
+ f[0U] = (uint64_t)0xfb80000000000000U;
+ f[1U] = (uint64_t)0x28a2482470b763cdU;
+ f[2U] = (uint64_t)0x17e2251b23bb31dcU;
+ f[3U] = (uint64_t)0xca4019ff5b847b2dU;
+ f[4U] = (uint64_t)0x2d73cbc3e206834U;
+ f[5U] = (uint64_t)0x0U;
+ f[6U] = (uint64_t)0x0U;
+ f[7U] = (uint64_t)0x0U;
+ f[8U] = (uint64_t)0x0U;
+}
+
+static inline void fmont_reduction(uint64_t *res, uint64_t *x)
+{
+ uint64_t n[9U] = { 0U };
+ p521_make_prime(n);
+ uint64_t c0 = (uint64_t)0U;
+ KRML_MAYBE_FOR9(i0,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t qj = (uint64_t)1U * x[i0];
+ uint64_t *res_j0 = x + i0;
+ uint64_t c = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t a_i = n[(uint32_t)4U * i];
+ uint64_t *res_i0 = res_j0 + (uint32_t)4U * i;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, qj, c, res_i0);
+ uint64_t a_i0 = n[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = res_j0 + (uint32_t)4U * i + (uint32_t)1U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i0, qj, c, res_i1);
+ uint64_t a_i1 = n[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = res_j0 + (uint32_t)4U * i + (uint32_t)2U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i1, qj, c, res_i2);
+ uint64_t a_i2 = n[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = res_j0 + (uint32_t)4U * i + (uint32_t)3U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i2, qj, c, res_i););
+ {
+ uint64_t a_i = n[8U];
+ uint64_t *res_i = res_j0 + (uint32_t)8U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, qj, c, res_i);
+ }
+ uint64_t r = c;
+ uint64_t c1 = r;
+ uint64_t *resb = x + (uint32_t)9U + i0;
+ uint64_t res_j = x[(uint32_t)9U + i0];
+ c0 = Lib_IntTypes_Intrinsics_add_carry_u64(c0, c1, res_j, resb););
+ memcpy(res, x + (uint32_t)9U, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t c00 = c0;
+ uint64_t tmp[9U] = { 0U };
+ uint64_t c = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = res[(uint32_t)4U * i];
+ uint64_t t20 = n[(uint32_t)4U * i];
+ uint64_t *res_i0 = tmp + (uint32_t)4U * i;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t1, t20, res_i0);
+ uint64_t t10 = res[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = n[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = tmp + (uint32_t)4U * i + (uint32_t)1U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t10, t21, res_i1);
+ uint64_t t11 = res[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = n[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = tmp + (uint32_t)4U * i + (uint32_t)2U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t11, t22, res_i2);
+ uint64_t t12 = res[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = n[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = tmp + (uint32_t)4U * i + (uint32_t)3U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t12, t2, res_i););
+ {
+ uint64_t t1 = res[8U];
+ uint64_t t2 = n[8U];
+ uint64_t *res_i = tmp + (uint32_t)8U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t1, t2, res_i);
+ }
+ uint64_t c1 = c;
+ uint64_t c2 = c00 - c1;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = res;
+ uint64_t x1 = (c2 & res[i]) | (~c2 & tmp[i]);
+ os[i] = x1;);
+}
+
+static inline void qmont_reduction(uint64_t *res, uint64_t *x)
+{
+ uint64_t n[9U] = { 0U };
+ p521_make_order(n);
+ uint64_t c0 = (uint64_t)0U;
+ KRML_MAYBE_FOR9(i0,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t qj = (uint64_t)2103001588584519111U * x[i0];
+ uint64_t *res_j0 = x + i0;
+ uint64_t c = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t a_i = n[(uint32_t)4U * i];
+ uint64_t *res_i0 = res_j0 + (uint32_t)4U * i;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, qj, c, res_i0);
+ uint64_t a_i0 = n[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = res_j0 + (uint32_t)4U * i + (uint32_t)1U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i0, qj, c, res_i1);
+ uint64_t a_i1 = n[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = res_j0 + (uint32_t)4U * i + (uint32_t)2U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i1, qj, c, res_i2);
+ uint64_t a_i2 = n[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = res_j0 + (uint32_t)4U * i + (uint32_t)3U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i2, qj, c, res_i););
+ {
+ uint64_t a_i = n[8U];
+ uint64_t *res_i = res_j0 + (uint32_t)8U;
+ c = Hacl_Bignum_Base_mul_wide_add2_u64(a_i, qj, c, res_i);
+ }
+ uint64_t r = c;
+ uint64_t c1 = r;
+ uint64_t *resb = x + (uint32_t)9U + i0;
+ uint64_t res_j = x[(uint32_t)9U + i0];
+ c0 = Lib_IntTypes_Intrinsics_add_carry_u64(c0, c1, res_j, resb););
+ memcpy(res, x + (uint32_t)9U, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t c00 = c0;
+ uint64_t tmp[9U] = { 0U };
+ uint64_t c = (uint64_t)0U;
+ KRML_MAYBE_FOR2(i,
+ (uint32_t)0U,
+ (uint32_t)2U,
+ (uint32_t)1U,
+ uint64_t t1 = res[(uint32_t)4U * i];
+ uint64_t t20 = n[(uint32_t)4U * i];
+ uint64_t *res_i0 = tmp + (uint32_t)4U * i;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t1, t20, res_i0);
+ uint64_t t10 = res[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t t21 = n[(uint32_t)4U * i + (uint32_t)1U];
+ uint64_t *res_i1 = tmp + (uint32_t)4U * i + (uint32_t)1U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t10, t21, res_i1);
+ uint64_t t11 = res[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t t22 = n[(uint32_t)4U * i + (uint32_t)2U];
+ uint64_t *res_i2 = tmp + (uint32_t)4U * i + (uint32_t)2U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t11, t22, res_i2);
+ uint64_t t12 = res[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t t2 = n[(uint32_t)4U * i + (uint32_t)3U];
+ uint64_t *res_i = tmp + (uint32_t)4U * i + (uint32_t)3U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t12, t2, res_i););
+ {
+ uint64_t t1 = res[8U];
+ uint64_t t2 = n[8U];
+ uint64_t *res_i = tmp + (uint32_t)8U;
+ c = Lib_IntTypes_Intrinsics_sub_borrow_u64(c, t1, t2, res_i);
+ }
+ uint64_t c1 = c;
+ uint64_t c2 = c00 - c1;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = res;
+ uint64_t x1 = (c2 & res[i]) | (~c2 & tmp[i]);
+ os[i] = x1;);
+}
+
+static inline uint64_t bn_is_lt_prime_mask(uint64_t *f)
+{
+ uint64_t tmp[9U] = { 0U };
+ p521_make_prime(tmp);
+ uint64_t c = bn_sub(tmp, f, tmp);
+ return (uint64_t)0U - c;
+}
+
+static inline void fadd(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t n[9U] = { 0U };
+ p521_make_prime(n);
+ bn_add_mod(a, n, b, c);
+}
+
+static inline void fsub(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t n[9U] = { 0U };
+ p521_make_prime(n);
+ bn_sub_mod(a, n, b, c);
+}
+
+static inline void fmul(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t tmp[18U] = { 0U };
+ bn_mul(tmp, b, c);
+ fmont_reduction(a, tmp);
+}
+
+static inline void fsqr(uint64_t *a, uint64_t *b)
+{
+ uint64_t tmp[18U] = { 0U };
+ bn_sqr(tmp, b);
+ fmont_reduction(a, tmp);
+}
+
+static inline void from_mont(uint64_t *a, uint64_t *b)
+{
+ uint64_t tmp[18U] = { 0U };
+ memcpy(tmp, b, (uint32_t)9U * sizeof (uint64_t));
+ fmont_reduction(a, tmp);
+}
+
+static inline void to_mont(uint64_t *a, uint64_t *b)
+{
+ uint64_t r2modn[9U] = { 0U };
+ p521_make_fmont_R2(r2modn);
+ uint64_t tmp[18U] = { 0U };
+ bn_mul(tmp, b, r2modn);
+ fmont_reduction(a, tmp);
+}
+
+static inline void p521_finv(uint64_t *res, uint64_t *a)
+{
+ uint64_t b[9U] = { 0U };
+ b[0U] = (uint64_t)0xfffffffffffffffdU;
+ b[1U] = (uint64_t)0xffffffffffffffffU;
+ b[2U] = (uint64_t)0xffffffffffffffffU;
+ b[3U] = (uint64_t)0xffffffffffffffffU;
+ b[4U] = (uint64_t)0xffffffffffffffffU;
+ b[5U] = (uint64_t)0xffffffffffffffffU;
+ b[6U] = (uint64_t)0xffffffffffffffffU;
+ b[7U] = (uint64_t)0xffffffffffffffffU;
+ b[8U] = (uint64_t)0x1ffU;
+ uint64_t tmp[9U] = { 0U };
+ memcpy(tmp, a, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t table[288U] = { 0U };
+ uint64_t tmp1[9U] = { 0U };
+ uint64_t *t0 = table;
+ uint64_t *t1 = table + (uint32_t)9U;
+ p521_make_fone(t0);
+ memcpy(t1, tmp, (uint32_t)9U * sizeof (uint64_t));
+ KRML_MAYBE_FOR15(i,
+ (uint32_t)0U,
+ (uint32_t)15U,
+ (uint32_t)1U,
+ uint64_t *t11 = table + (i + (uint32_t)1U) * (uint32_t)9U;
+ fsqr(tmp1, t11);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t));
+ uint64_t *t2 = table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U;
+ fmul(tmp1, tmp, t2);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)3U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t)););
+ uint32_t i0 = (uint32_t)520U;
+ uint64_t bits_c = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, i0, (uint32_t)5U);
+ uint32_t bits_l32 = (uint32_t)bits_c;
+ const uint64_t *a_bits_l = table + bits_l32 * (uint32_t)9U;
+ memcpy(res, (uint64_t *)a_bits_l, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t tmp10[9U] = { 0U };
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)104U; i++)
+ {
+ KRML_MAYBE_FOR5(i1, (uint32_t)0U, (uint32_t)5U, (uint32_t)1U, fsqr(res, res););
+ uint32_t k = (uint32_t)520U - (uint32_t)5U * i - (uint32_t)5U;
+ uint64_t bits_l = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, k, (uint32_t)5U);
+ uint32_t bits_l320 = (uint32_t)bits_l;
+ const uint64_t *a_bits_l0 = table + bits_l320 * (uint32_t)9U;
+ memcpy(tmp10, (uint64_t *)a_bits_l0, (uint32_t)9U * sizeof (uint64_t));
+ fmul(res, res, tmp10);
+ }
+}
+
+static inline void p521_fsqrt(uint64_t *res, uint64_t *a)
+{
+ uint64_t b[9U] = { 0U };
+ b[0U] = (uint64_t)0x0U;
+ b[1U] = (uint64_t)0x0U;
+ b[2U] = (uint64_t)0x0U;
+ b[3U] = (uint64_t)0x0U;
+ b[4U] = (uint64_t)0x0U;
+ b[5U] = (uint64_t)0x0U;
+ b[6U] = (uint64_t)0x0U;
+ b[7U] = (uint64_t)0x0U;
+ b[8U] = (uint64_t)0x80U;
+ uint64_t tmp[9U] = { 0U };
+ memcpy(tmp, a, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t table[288U] = { 0U };
+ uint64_t tmp1[9U] = { 0U };
+ uint64_t *t0 = table;
+ uint64_t *t1 = table + (uint32_t)9U;
+ p521_make_fone(t0);
+ memcpy(t1, tmp, (uint32_t)9U * sizeof (uint64_t));
+ KRML_MAYBE_FOR15(i,
+ (uint32_t)0U,
+ (uint32_t)15U,
+ (uint32_t)1U,
+ uint64_t *t11 = table + (i + (uint32_t)1U) * (uint32_t)9U;
+ fsqr(tmp1, t11);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t));
+ uint64_t *t2 = table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U;
+ fmul(tmp1, tmp, t2);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)3U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t)););
+ uint32_t i0 = (uint32_t)520U;
+ uint64_t bits_c = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, i0, (uint32_t)5U);
+ uint32_t bits_l32 = (uint32_t)bits_c;
+ const uint64_t *a_bits_l = table + bits_l32 * (uint32_t)9U;
+ memcpy(res, (uint64_t *)a_bits_l, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t tmp10[9U] = { 0U };
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)104U; i++)
+ {
+ KRML_MAYBE_FOR5(i1, (uint32_t)0U, (uint32_t)5U, (uint32_t)1U, fsqr(res, res););
+ uint32_t k = (uint32_t)520U - (uint32_t)5U * i - (uint32_t)5U;
+ uint64_t bits_l = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, k, (uint32_t)5U);
+ uint32_t bits_l320 = (uint32_t)bits_l;
+ const uint64_t *a_bits_l0 = table + bits_l320 * (uint32_t)9U;
+ memcpy(tmp10, (uint64_t *)a_bits_l0, (uint32_t)9U * sizeof (uint64_t));
+ fmul(res, res, tmp10);
+ }
+}
+
+static inline uint64_t load_qelem_conditional(uint64_t *a, uint8_t *b)
+{
+ bn_from_bytes_be(a, b);
+ uint64_t tmp[9U] = { 0U };
+ p521_make_order(tmp);
+ uint64_t c = bn_sub(tmp, a, tmp);
+ uint64_t is_lt_order = (uint64_t)0U - c;
+ uint64_t bn_zero[9U] = { 0U };
+ uint64_t res = bn_is_eq_mask(a, bn_zero);
+ uint64_t is_eq_zero = res;
+ uint64_t is_b_valid = is_lt_order & ~is_eq_zero;
+ uint64_t oneq[9U] = { 0U };
+ memset(oneq, 0U, (uint32_t)9U * sizeof (uint64_t));
+ oneq[0U] = (uint64_t)1U;
+ KRML_MAYBE_FOR9(i,
+ (uint32_t)0U,
+ (uint32_t)9U,
+ (uint32_t)1U,
+ uint64_t *os = a;
+ uint64_t uu____0 = oneq[i];
+ uint64_t x = uu____0 ^ (is_b_valid & (a[i] ^ uu____0));
+ os[i] = x;);
+ return is_b_valid;
+}
+
+static inline void qmod_short(uint64_t *a, uint64_t *b)
+{
+ uint64_t tmp[9U] = { 0U };
+ p521_make_order(tmp);
+ uint64_t c = bn_sub(tmp, b, tmp);
+ bn_cmovznz(a, c, tmp, b);
+}
+
+static inline void qadd(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t n[9U] = { 0U };
+ p521_make_order(n);
+ bn_add_mod(a, n, b, c);
+}
+
+static inline void qmul(uint64_t *a, uint64_t *b, uint64_t *c)
+{
+ uint64_t tmp[18U] = { 0U };
+ bn_mul(tmp, b, c);
+ qmont_reduction(a, tmp);
+}
+
+static inline void qsqr(uint64_t *a, uint64_t *b)
+{
+ uint64_t tmp[18U] = { 0U };
+ bn_sqr(tmp, b);
+ qmont_reduction(a, tmp);
+}
+
+static inline void from_qmont(uint64_t *a, uint64_t *b)
+{
+ uint64_t tmp[18U] = { 0U };
+ memcpy(tmp, b, (uint32_t)9U * sizeof (uint64_t));
+ qmont_reduction(a, tmp);
+}
+
+static inline void p521_qinv(uint64_t *res, uint64_t *a)
+{
+ uint64_t b[9U] = { 0U };
+ b[0U] = (uint64_t)0xbb6fb71e91386407U;
+ b[1U] = (uint64_t)0x3bb5c9b8899c47aeU;
+ b[2U] = (uint64_t)0x7fcc0148f709a5d0U;
+ b[3U] = (uint64_t)0x51868783bf2f966bU;
+ b[4U] = (uint64_t)0xfffffffffffffffaU;
+ b[5U] = (uint64_t)0xffffffffffffffffU;
+ b[6U] = (uint64_t)0xffffffffffffffffU;
+ b[7U] = (uint64_t)0xffffffffffffffffU;
+ b[8U] = (uint64_t)0x1ffU;
+ uint64_t tmp[9U] = { 0U };
+ memcpy(tmp, a, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t table[288U] = { 0U };
+ uint64_t tmp1[9U] = { 0U };
+ uint64_t *t0 = table;
+ uint64_t *t1 = table + (uint32_t)9U;
+ p521_make_qone(t0);
+ memcpy(t1, tmp, (uint32_t)9U * sizeof (uint64_t));
+ KRML_MAYBE_FOR15(i,
+ (uint32_t)0U,
+ (uint32_t)15U,
+ (uint32_t)1U,
+ uint64_t *t11 = table + (i + (uint32_t)1U) * (uint32_t)9U;
+ qsqr(tmp1, t11);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t));
+ uint64_t *t2 = table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)9U;
+ qmul(tmp1, tmp, t2);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)3U) * (uint32_t)9U,
+ tmp1,
+ (uint32_t)9U * sizeof (uint64_t)););
+ uint32_t i0 = (uint32_t)520U;
+ uint64_t bits_c = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, i0, (uint32_t)5U);
+ uint32_t bits_l32 = (uint32_t)bits_c;
+ const uint64_t *a_bits_l = table + bits_l32 * (uint32_t)9U;
+ memcpy(res, (uint64_t *)a_bits_l, (uint32_t)9U * sizeof (uint64_t));
+ uint64_t tmp10[9U] = { 0U };
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)104U; i++)
+ {
+ KRML_MAYBE_FOR5(i1, (uint32_t)0U, (uint32_t)5U, (uint32_t)1U, qsqr(res, res););
+ uint32_t k = (uint32_t)520U - (uint32_t)5U * i - (uint32_t)5U;
+ uint64_t bits_l = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, b, k, (uint32_t)5U);
+ uint32_t bits_l320 = (uint32_t)bits_l;
+ const uint64_t *a_bits_l0 = table + bits_l320 * (uint32_t)9U;
+ memcpy(tmp10, (uint64_t *)a_bits_l0, (uint32_t)9U * sizeof (uint64_t));
+ qmul(res, res, tmp10);
+ }
+}
+
+static inline void point_add(uint64_t *x, uint64_t *y, uint64_t *xy)
+{
+ uint64_t tmp[81U] = { 0U };
+ uint64_t *t0 = tmp;
+ uint64_t *t1 = tmp + (uint32_t)54U;
+ uint64_t *x3 = t1;
+ uint64_t *y3 = t1 + (uint32_t)9U;
+ uint64_t *z3 = t1 + (uint32_t)18U;
+ uint64_t *t01 = t0;
+ uint64_t *t11 = t0 + (uint32_t)9U;
+ uint64_t *t2 = t0 + (uint32_t)18U;
+ uint64_t *t3 = t0 + (uint32_t)27U;
+ uint64_t *t4 = t0 + (uint32_t)36U;
+ uint64_t *t5 = t0 + (uint32_t)45U;
+ uint64_t *x1 = x;
+ uint64_t *y1 = x + (uint32_t)9U;
+ uint64_t *z10 = x + (uint32_t)18U;
+ uint64_t *x20 = y;
+ uint64_t *y20 = y + (uint32_t)9U;
+ uint64_t *z20 = y + (uint32_t)18U;
+ fmul(t01, x1, x20);
+ fmul(t11, y1, y20);
+ fmul(t2, z10, z20);
+ fadd(t3, x1, y1);
+ fadd(t4, x20, y20);
+ fmul(t3, t3, t4);
+ fadd(t4, t01, t11);
+ uint64_t *y10 = x + (uint32_t)9U;
+ uint64_t *z11 = x + (uint32_t)18U;
+ uint64_t *y2 = y + (uint32_t)9U;
+ uint64_t *z21 = y + (uint32_t)18U;
+ fsub(t3, t3, t4);
+ fadd(t4, y10, z11);
+ fadd(t5, y2, z21);
+ fmul(t4, t4, t5);
+ fadd(t5, t11, t2);
+ fsub(t4, t4, t5);
+ uint64_t *x10 = x;
+ uint64_t *z1 = x + (uint32_t)18U;
+ uint64_t *x2 = y;
+ uint64_t *z2 = y + (uint32_t)18U;
+ fadd(x3, x10, z1);
+ fadd(y3, x2, z2);
+ fmul(x3, x3, y3);
+ fadd(y3, t01, t2);
+ fsub(y3, x3, y3);
+ uint64_t b_coeff[9U] = { 0U };
+ p521_make_b_coeff(b_coeff);
+ fmul(z3, b_coeff, t2);
+ fsub(x3, y3, z3);
+ fadd(z3, x3, x3);
+ fadd(x3, x3, z3);
+ fsub(z3, t11, x3);
+ fadd(x3, t11, x3);
+ uint64_t b_coeff0[9U] = { 0U };
+ p521_make_b_coeff(b_coeff0);
+ fmul(y3, b_coeff0, y3);
+ fadd(t11, t2, t2);
+ fadd(t2, t11, t2);
+ fsub(y3, y3, t2);
+ fsub(y3, y3, t01);
+ fadd(t11, y3, y3);
+ fadd(y3, t11, y3);
+ fadd(t11, t01, t01);
+ fadd(t01, t11, t01);
+ fsub(t01, t01, t2);
+ fmul(t11, t4, y3);
+ fmul(t2, t01, y3);
+ fmul(y3, x3, z3);
+ fadd(y3, y3, t2);
+ fmul(x3, t3, x3);
+ fsub(x3, x3, t11);
+ fmul(z3, t4, z3);
+ fmul(t11, t3, t01);
+ fadd(z3, z3, t11);
+ memcpy(xy, t1, (uint32_t)27U * sizeof (uint64_t));
+}
+
+static inline void point_double(uint64_t *x, uint64_t *xx)
+{
+ uint64_t tmp[45U] = { 0U };
+ uint64_t *x1 = x;
+ uint64_t *z = x + (uint32_t)18U;
+ uint64_t *x3 = xx;
+ uint64_t *y3 = xx + (uint32_t)9U;
+ uint64_t *z3 = xx + (uint32_t)18U;
+ uint64_t *t0 = tmp;
+ uint64_t *t1 = tmp + (uint32_t)9U;
+ uint64_t *t2 = tmp + (uint32_t)18U;
+ uint64_t *t3 = tmp + (uint32_t)27U;
+ uint64_t *t4 = tmp + (uint32_t)36U;
+ uint64_t *x2 = x;
+ uint64_t *y = x + (uint32_t)9U;
+ uint64_t *z1 = x + (uint32_t)18U;
+ fsqr(t0, x2);
+ fsqr(t1, y);
+ fsqr(t2, z1);
+ fmul(t3, x2, y);
+ fadd(t3, t3, t3);
+ fmul(t4, y, z1);
+ fmul(z3, x1, z);
+ fadd(z3, z3, z3);
+ uint64_t b_coeff[9U] = { 0U };
+ p521_make_b_coeff(b_coeff);
+ fmul(y3, b_coeff, t2);
+ fsub(y3, y3, z3);
+ fadd(x3, y3, y3);
+ fadd(y3, x3, y3);
+ fsub(x3, t1, y3);
+ fadd(y3, t1, y3);
+ fmul(y3, x3, y3);
+ fmul(x3, x3, t3);
+ fadd(t3, t2, t2);
+ fadd(t2, t2, t3);
+ uint64_t b_coeff0[9U] = { 0U };
+ p521_make_b_coeff(b_coeff0);
+ fmul(z3, b_coeff0, z3);
+ fsub(z3, z3, t2);
+ fsub(z3, z3, t0);
+ fadd(t3, z3, z3);
+ fadd(z3, z3, t3);
+ fadd(t3, t0, t0);
+ fadd(t0, t3, t0);
+ fsub(t0, t0, t2);
+ fmul(t0, t0, z3);
+ fadd(y3, y3, t0);
+ fadd(t0, t4, t4);
+ fmul(z3, t0, z3);
+ fsub(x3, x3, z3);
+ fmul(z3, t0, t1);
+ fadd(z3, z3, z3);
+ fadd(z3, z3, z3);
+}
+
+static inline void point_zero(uint64_t *one)
+{
+ uint64_t *x = one;
+ uint64_t *y = one + (uint32_t)9U;
+ uint64_t *z = one + (uint32_t)18U;
+ p521_make_fzero(x);
+ p521_make_fone(y);
+ p521_make_fzero(z);
+}
+
+static inline void point_mul(uint64_t *res, uint64_t *scalar, uint64_t *p)
+{
+ uint64_t table[432U] = { 0U };
+ uint64_t tmp[27U] = { 0U };
+ uint64_t *t0 = table;
+ uint64_t *t1 = table + (uint32_t)27U;
+ point_zero(t0);
+ memcpy(t1, p, (uint32_t)27U * sizeof (uint64_t));
+ KRML_MAYBE_FOR7(i,
+ (uint32_t)0U,
+ (uint32_t)7U,
+ (uint32_t)1U,
+ uint64_t *t11 = table + (i + (uint32_t)1U) * (uint32_t)27U;
+ point_double(t11, tmp);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)27U,
+ tmp,
+ (uint32_t)27U * sizeof (uint64_t));
+ uint64_t *t2 = table + ((uint32_t)2U * i + (uint32_t)2U) * (uint32_t)27U;
+ point_add(p, t2, tmp);
+ memcpy(table + ((uint32_t)2U * i + (uint32_t)3U) * (uint32_t)27U,
+ tmp,
+ (uint32_t)27U * sizeof (uint64_t)););
+ uint32_t i0 = (uint32_t)520U;
+ uint64_t bits_c = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, scalar, i0, (uint32_t)4U);
+ memcpy(res, (uint64_t *)table, (uint32_t)27U * sizeof (uint64_t));
+ KRML_MAYBE_FOR15(i1,
+ (uint32_t)0U,
+ (uint32_t)15U,
+ (uint32_t)1U,
+ uint64_t c = FStar_UInt64_eq_mask(bits_c, (uint64_t)(i1 + (uint32_t)1U));
+ const uint64_t *res_j = table + (i1 + (uint32_t)1U) * (uint32_t)27U;
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)27U; i++)
+ {
+ uint64_t *os = res;
+ uint64_t x = (c & res_j[i]) | (~c & res[i]);
+ os[i] = x;
+ });
+ uint64_t tmp0[27U] = { 0U };
+ for (uint32_t i1 = (uint32_t)0U; i1 < (uint32_t)130U; i1++)
+ {
+ KRML_MAYBE_FOR4(i, (uint32_t)0U, (uint32_t)4U, (uint32_t)1U, point_double(res, res););
+ uint32_t k = (uint32_t)520U - (uint32_t)4U * i1 - (uint32_t)4U;
+ uint64_t bits_l = Hacl_Bignum_Lib_bn_get_bits_u64((uint32_t)9U, scalar, k, (uint32_t)4U);
+ memcpy(tmp0, (uint64_t *)table, (uint32_t)27U * sizeof (uint64_t));
+ KRML_MAYBE_FOR15(i2,
+ (uint32_t)0U,
+ (uint32_t)15U,
+ (uint32_t)1U,
+ uint64_t c = FStar_UInt64_eq_mask(bits_l, (uint64_t)(i2 + (uint32_t)1U));
+ const uint64_t *res_j = table + (i2 + (uint32_t)1U) * (uint32_t)27U;
+ for (uint32_t i = (uint32_t)0U; i < (uint32_t)27U; i++)
+ {
+ uint64_t *os = tmp0;
+ uint64_t x = (c & res_j[i]) | (~c & tmp0[i]);
+ os[i] = x;
+ });
+ point_add(res, tmp0, res);
+ }
+}
+
+static inline void point_mul_g(uint64_t *res, uint64_t *scalar)
+{
+ uint64_t g[27U] = { 0U };
+ uint64_t *x = g;
+ uint64_t *y = g + (uint32_t)9U;
+ uint64_t *z = g + (uint32_t)18U;
+ p521_make_g_x(x);
+ p521_make_g_y(y);
+ p521_make_fone(z);
+ point_mul(res, scalar, g);
}
static inline void
-p521_make_order(uint64_t *n)
+point_mul_double_g(uint64_t *res, uint64_t *scalar1, uint64_t *scalar2, uint64_t *p)
{
- n[0U] = (uint64_t)0xbb6fb71e91386409U;
- n[1U] = (uint64_t)0x3bb5c9b8899c47aeU;
- n[2U] = (uint64_t)0x7fcc0148f709a5d0U;
- n[3U] = (uint64_t)0x51868783bf2f966bU;
- n[4U] = (uint64_t)0xfffffffffffffffaU;
- n[5U] = (uint64_t)0xffffffffffffffffU;
- n[6U] = (uint64_t)0xffffffffffffffffU;
- n[7U] = (uint64_t)0xffffffffffffffffU;
- n[8U] = (uint64_t)0x1ffU;
+ uint64_t tmp[27U] = { 0U };
+ point_mul_g(tmp, scalar1);
+ point_mul(res, scalar2, p);
+ point_add(res, tmp, res);
+}
+
+static inline bool
+ecdsa_sign_msg_as_qelem(
+ uint8_t *signature,
+ uint64_t *m_q,
+ uint8_t *private_key,
+ uint8_t *nonce
+)
+{
+ uint64_t rsdk_q[36U] = { 0U };
+ uint64_t *r_q = rsdk_q;
+ uint64_t *s_q = rsdk_q + (uint32_t)9U;
+ uint64_t *d_a = rsdk_q + (uint32_t)18U;
+ uint64_t *k_q = rsdk_q + (uint32_t)27U;
+ uint64_t is_sk_valid = load_qelem_conditional(d_a, private_key);
+ uint64_t is_nonce_valid = load_qelem_conditional(k_q, nonce);
+ uint64_t are_sk_nonce_valid = is_sk_valid & is_nonce_valid;
+ uint64_t p[27U] = { 0U };
+ point_mul_g(p, k_q);
+ uint64_t zinv[9U] = { 0U };
+ uint64_t *px = p;
+ uint64_t *pz = p + (uint32_t)18U;
+ p521_finv(zinv, pz);
+ fmul(r_q, px, zinv);
+ from_mont(r_q, r_q);
+ qmod_short(r_q, r_q);
+ uint64_t kinv[9U] = { 0U };
+ p521_qinv(kinv, k_q);
+ qmul(s_q, r_q, d_a);
+ from_qmont(m_q, m_q);
+ qadd(s_q, m_q, s_q);
+ qmul(s_q, kinv, s_q);
+ bn_to_bytes_be(signature, r_q);
+ bn_to_bytes_be(signature + (uint32_t)66U, s_q);
+ uint64_t bn_zero0[9U] = { 0U };
+ uint64_t res = bn_is_eq_mask(r_q, bn_zero0);
+ uint64_t is_r_zero = res;
+ uint64_t bn_zero[9U] = { 0U };
+ uint64_t res0 = bn_is_eq_mask(s_q, bn_zero);
+ uint64_t is_s_zero = res0;
+ uint64_t m = are_sk_nonce_valid & (~is_r_zero & ~is_s_zero);
+ bool res1 = m == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ return res1;
+}
+
+static inline bool
+ecdsa_verify_msg_as_qelem(
+ uint64_t *m_q,
+ uint8_t *public_key,
+ uint8_t *signature_r,
+ uint8_t *signature_s
+)
+{
+ uint64_t tmp[63U] = { 0U };
+ uint64_t *pk = tmp;
+ uint64_t *r_q = tmp + (uint32_t)27U;
+ uint64_t *s_q = tmp + (uint32_t)36U;
+ uint64_t *u1 = tmp + (uint32_t)45U;
+ uint64_t *u2 = tmp + (uint32_t)54U;
+ uint64_t p_aff[18U] = { 0U };
+ uint8_t *p_x = public_key;
+ uint8_t *p_y = public_key + (uint32_t)66U;
+ uint64_t *bn_p_x = p_aff;
+ uint64_t *bn_p_y = p_aff + (uint32_t)9U;
+ bn_from_bytes_be(bn_p_x, p_x);
+ bn_from_bytes_be(bn_p_y, p_y);
+ uint64_t *px0 = p_aff;
+ uint64_t *py0 = p_aff + (uint32_t)9U;
+ uint64_t lessX = bn_is_lt_prime_mask(px0);
+ uint64_t lessY = bn_is_lt_prime_mask(py0);
+ uint64_t res0 = lessX & lessY;
+ bool is_xy_valid = res0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ bool res;
+ if (!is_xy_valid)
+ {
+ res = false;
+ }
+ else
+ {
+ uint64_t rp[9U] = { 0U };
+ uint64_t tx[9U] = { 0U };
+ uint64_t ty[9U] = { 0U };
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ to_mont(tx, px);
+ to_mont(ty, py);
+ uint64_t tmp1[9U] = { 0U };
+ fsqr(rp, tx);
+ fmul(rp, rp, tx);
+ p521_make_a_coeff(tmp1);
+ fmul(tmp1, tmp1, tx);
+ fadd(rp, tmp1, rp);
+ p521_make_b_coeff(tmp1);
+ fadd(rp, tmp1, rp);
+ fsqr(ty, ty);
+ uint64_t r = bn_is_eq_mask(ty, rp);
+ uint64_t r0 = r;
+ bool r1 = r0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ res = r1;
+ }
+ if (res)
+ {
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ uint64_t *rx = pk;
+ uint64_t *ry = pk + (uint32_t)9U;
+ uint64_t *rz = pk + (uint32_t)18U;
+ to_mont(rx, px);
+ to_mont(ry, py);
+ p521_make_fone(rz);
+ }
+ bool is_pk_valid = res;
+ bn_from_bytes_be(r_q, signature_r);
+ bn_from_bytes_be(s_q, signature_s);
+ uint64_t tmp10[9U] = { 0U };
+ p521_make_order(tmp10);
+ uint64_t c = bn_sub(tmp10, r_q, tmp10);
+ uint64_t is_lt_order = (uint64_t)0U - c;
+ uint64_t bn_zero0[9U] = { 0U };
+ uint64_t res1 = bn_is_eq_mask(r_q, bn_zero0);
+ uint64_t is_eq_zero = res1;
+ uint64_t is_r_valid = is_lt_order & ~is_eq_zero;
+ uint64_t tmp11[9U] = { 0U };
+ p521_make_order(tmp11);
+ uint64_t c0 = bn_sub(tmp11, s_q, tmp11);
+ uint64_t is_lt_order0 = (uint64_t)0U - c0;
+ uint64_t bn_zero1[9U] = { 0U };
+ uint64_t res2 = bn_is_eq_mask(s_q, bn_zero1);
+ uint64_t is_eq_zero0 = res2;
+ uint64_t is_s_valid = is_lt_order0 & ~is_eq_zero0;
+ bool
+ is_rs_valid =
+ is_r_valid
+ == (uint64_t)0xFFFFFFFFFFFFFFFFU
+ && is_s_valid == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ if (!(is_pk_valid && is_rs_valid))
+ {
+ return false;
+ }
+ uint64_t sinv[9U] = { 0U };
+ p521_qinv(sinv, s_q);
+ uint64_t tmp1[9U] = { 0U };
+ from_qmont(tmp1, m_q);
+ qmul(u1, sinv, tmp1);
+ uint64_t tmp12[9U] = { 0U };
+ from_qmont(tmp12, r_q);
+ qmul(u2, sinv, tmp12);
+ uint64_t res3[27U] = { 0U };
+ point_mul_double_g(res3, u1, u2, pk);
+ uint64_t *pz0 = res3 + (uint32_t)18U;
+ uint64_t bn_zero[9U] = { 0U };
+ uint64_t res10 = bn_is_eq_mask(pz0, bn_zero);
+ uint64_t m = res10;
+ if (m == (uint64_t)0xFFFFFFFFFFFFFFFFU)
+ {
+ return false;
+ }
+ uint64_t x[9U] = { 0U };
+ uint64_t zinv[9U] = { 0U };
+ uint64_t *px = res3;
+ uint64_t *pz = res3 + (uint32_t)18U;
+ p521_finv(zinv, pz);
+ fmul(x, px, zinv);
+ from_mont(x, x);
+ qmod_short(x, x);
+ uint64_t m0 = bn_is_eq_mask(x, r_q);
+ bool res11 = m0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ return res11;
+}
+
+
+/*******************************************************************************
+
+ Verified C library for ECDSA and ECDH functions over the P-521 NIST curve.
+
+ This module implements signing and verification, key validation, conversions
+ between various point representations, and ECDH key agreement.
+
+*******************************************************************************/
+
+/*****************/
+/* ECDSA signing */
+/*****************/
+
+
+/**
+Create an ECDSA signature WITHOUT hashing first.
+
+ This function is intended to receive a hash of the input.
+ For convenience, we recommend using one of the hash-and-sign combined functions above.
+
+ The argument `msg` MUST be at least 66 bytes (i.e. `msg_len >= 66`).
+
+ NOTE: The equivalent functions in OpenSSL and Fiat-Crypto both accept inputs
+ smaller than 66 bytes. These libraries left-pad the input with enough zeroes to
+ reach the minimum 66 byte size. Clients who need behavior identical to OpenSSL
+ need to perform the left-padding themselves.
+
+ The function returns `true` for successful creation of an ECDSA signature and `false` otherwise.
+
+ The outparam `signature` (R || S) points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `msg` points to `msg_len` bytes of valid memory, i.e., uint8_t[msg_len].
+ The arguments `private_key` and `nonce` point to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `private_key` and `nonce` are valid values:
+ • 0 < `private_key` < the order of the curve
+ • 0 < `nonce` < the order of the curve
+*/
+bool
+Hacl_P521_ecdsa_sign_p521_without_hash(
+ uint8_t *signature,
+ uint32_t msg_len,
+ uint8_t *msg,
+ uint8_t *private_key,
+ uint8_t *nonce
+)
+{
+ uint64_t m_q[9U] = { 0U };
+ uint8_t mHash[66U] = { 0U };
+ memcpy(mHash, msg, (uint32_t)66U * sizeof (uint8_t));
+ KRML_HOST_IGNORE(msg_len);
+ bn_from_bytes_be(m_q, mHash);
+ qmod_short(m_q, m_q);
+ bool res = ecdsa_sign_msg_as_qelem(signature, m_q, private_key, nonce);
+ return res;
+}
+
+
+/**********************/
+/* ECDSA verification */
+/**********************/
+
+
+/**
+Verify an ECDSA signature WITHOUT hashing first.
+
+ This function is intended to receive a hash of the input.
+ For convenience, we recommend using one of the hash-and-verify combined functions above.
+
+ The argument `msg` MUST be at least 66 bytes (i.e. `msg_len >= 66`).
+
+ The function returns `true` if the signature is valid and `false` otherwise.
+
+ The argument `msg` points to `msg_len` bytes of valid memory, i.e., uint8_t[msg_len].
+ The argument `public_key` (x || y) points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The arguments `signature_r` and `signature_s` point to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `public_key` is valid
+*/
+bool
+Hacl_P521_ecdsa_verif_without_hash(
+ uint32_t msg_len,
+ uint8_t *msg,
+ uint8_t *public_key,
+ uint8_t *signature_r,
+ uint8_t *signature_s
+)
+{
+ uint64_t m_q[9U] = { 0U };
+ uint8_t mHash[66U] = { 0U };
+ memcpy(mHash, msg, (uint32_t)66U * sizeof (uint8_t));
+ KRML_HOST_IGNORE(msg_len);
+ bn_from_bytes_be(m_q, mHash);
+ qmod_short(m_q, m_q);
+ bool res = ecdsa_verify_msg_as_qelem(m_q, public_key, signature_r, signature_s);
+ return res;
+}
+
+
+/******************/
+/* Key validation */
+/******************/
+
+/**
+Public key validation.
+
+ The function returns `true` if a public key is valid and `false` otherwise.
+
+ The argument `public_key` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The public key (x || y) is valid (with respect to SP 800-56A):
+ • the public key is not the “point at infinity”, represented as O.
+ • the affine x and y coordinates of the point represented by the public key are
+ in the range [0, p 1] where p is the prime defining the finite field.
+ • y^2 = x^3 + ax + b where a and b are the coefficients of the curve equation.
+ The last extract is taken from: https://neilmadden.blog/2017/05/17/so-how-do-you-validate-nist-ecdh-public-keys/
+*/
+bool Hacl_P521_validate_public_key(uint8_t *public_key)
+{
+ uint64_t point_jac[27U] = { 0U };
+ uint64_t p_aff[18U] = { 0U };
+ uint8_t *p_x = public_key;
+ uint8_t *p_y = public_key + (uint32_t)66U;
+ uint64_t *bn_p_x = p_aff;
+ uint64_t *bn_p_y = p_aff + (uint32_t)9U;
+ bn_from_bytes_be(bn_p_x, p_x);
+ bn_from_bytes_be(bn_p_y, p_y);
+ uint64_t *px0 = p_aff;
+ uint64_t *py0 = p_aff + (uint32_t)9U;
+ uint64_t lessX = bn_is_lt_prime_mask(px0);
+ uint64_t lessY = bn_is_lt_prime_mask(py0);
+ uint64_t res0 = lessX & lessY;
+ bool is_xy_valid = res0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ bool res;
+ if (!is_xy_valid)
+ {
+ res = false;
+ }
+ else
+ {
+ uint64_t rp[9U] = { 0U };
+ uint64_t tx[9U] = { 0U };
+ uint64_t ty[9U] = { 0U };
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ to_mont(tx, px);
+ to_mont(ty, py);
+ uint64_t tmp[9U] = { 0U };
+ fsqr(rp, tx);
+ fmul(rp, rp, tx);
+ p521_make_a_coeff(tmp);
+ fmul(tmp, tmp, tx);
+ fadd(rp, tmp, rp);
+ p521_make_b_coeff(tmp);
+ fadd(rp, tmp, rp);
+ fsqr(ty, ty);
+ uint64_t r = bn_is_eq_mask(ty, rp);
+ uint64_t r0 = r;
+ bool r1 = r0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ res = r1;
+ }
+ if (res)
+ {
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ uint64_t *rx = point_jac;
+ uint64_t *ry = point_jac + (uint32_t)9U;
+ uint64_t *rz = point_jac + (uint32_t)18U;
+ to_mont(rx, px);
+ to_mont(ry, py);
+ p521_make_fone(rz);
+ }
+ bool res1 = res;
+ return res1;
}
/**
@@ -114,18 +1466,302 @@ Private key validation.
The private key is valid:
• 0 < `private_key` < the order of the curve
*/
+bool Hacl_P521_validate_private_key(uint8_t *private_key)
+{
+ uint64_t bn_sk[9U] = { 0U };
+ bn_from_bytes_be(bn_sk, private_key);
+ uint64_t tmp[9U] = { 0U };
+ p521_make_order(tmp);
+ uint64_t c = bn_sub(tmp, bn_sk, tmp);
+ uint64_t is_lt_order = (uint64_t)0U - c;
+ uint64_t bn_zero[9U] = { 0U };
+ uint64_t res = bn_is_eq_mask(bn_sk, bn_zero);
+ uint64_t is_eq_zero = res;
+ uint64_t res0 = is_lt_order & ~is_eq_zero;
+ return res0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+}
+
+/*******************************************************************************
+ Parsing and Serializing public keys.
+
+ A public key is a point (x, y) on the P-521 NIST curve.
+
+ The point can be represented in the following three ways.
+ • raw = [ x || y ], 132 bytes
+ • uncompressed = [ 0x04 || x || y ], 133 bytes
+ • compressed = [ (0x02 for even `y` and 0x03 for odd `y`) || x ], 33 bytes
+
+*******************************************************************************/
+
+
+/**
+Convert a public key from uncompressed to its raw form.
+
+ The function returns `true` for successful conversion of a public key and `false` otherwise.
+
+ The outparam `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `pk` points to 133 bytes of valid memory, i.e., uint8_t[133].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+bool Hacl_P521_uncompressed_to_raw(uint8_t *pk, uint8_t *pk_raw)
+{
+ uint8_t pk0 = pk[0U];
+ if (pk0 != (uint8_t)0x04U)
+ {
+ return false;
+ }
+ memcpy(pk_raw, pk + (uint32_t)1U, (uint32_t)132U * sizeof (uint8_t));
+ return true;
+}
+
+/**
+Convert a public key from compressed to its raw form.
+
+ The function returns `true` for successful conversion of a public key and `false` otherwise.
+
+ The outparam `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `pk` points to 33 bytes of valid memory, i.e., uint8_t[33].
+
+ The function also checks whether (x, y) is a valid point.
+*/
+bool Hacl_P521_compressed_to_raw(uint8_t *pk, uint8_t *pk_raw)
+{
+ uint64_t xa[9U] = { 0U };
+ uint64_t ya[9U] = { 0U };
+ uint8_t *pk_xb = pk + (uint32_t)1U;
+ uint8_t s0 = pk[0U];
+ uint8_t s01 = s0;
+ bool b;
+ if (!(s01 == (uint8_t)0x02U || s01 == (uint8_t)0x03U))
+ {
+ b = false;
+ }
+ else
+ {
+ uint8_t *xb = pk + (uint32_t)1U;
+ bn_from_bytes_be(xa, xb);
+ uint64_t is_x_valid = bn_is_lt_prime_mask(xa);
+ bool is_x_valid1 = is_x_valid == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ bool is_y_odd = s01 == (uint8_t)0x03U;
+ if (!is_x_valid1)
+ {
+ b = false;
+ }
+ else
+ {
+ uint64_t y2M[9U] = { 0U };
+ uint64_t xM[9U] = { 0U };
+ uint64_t yM[9U] = { 0U };
+ to_mont(xM, xa);
+ uint64_t tmp[9U] = { 0U };
+ fsqr(y2M, xM);
+ fmul(y2M, y2M, xM);
+ p521_make_a_coeff(tmp);
+ fmul(tmp, tmp, xM);
+ fadd(y2M, tmp, y2M);
+ p521_make_b_coeff(tmp);
+ fadd(y2M, tmp, y2M);
+ p521_fsqrt(yM, y2M);
+ from_mont(ya, yM);
+ fsqr(yM, yM);
+ uint64_t r = bn_is_eq_mask(yM, y2M);
+ uint64_t r0 = r;
+ bool is_y_valid = r0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ bool is_y_valid0 = is_y_valid;
+ if (!is_y_valid0)
+ {
+ b = false;
+ }
+ else
+ {
+ uint64_t is_y_odd1 = ya[0U] & (uint64_t)1U;
+ bool is_y_odd2 = is_y_odd1 == (uint64_t)1U;
+ uint64_t zero[9U] = { 0U };
+ if (is_y_odd2 != is_y_odd)
+ {
+ fsub(ya, zero, ya);
+ }
+ b = true;
+ }
+ }
+ }
+ if (b)
+ {
+ memcpy(pk_raw, pk_xb, (uint32_t)66U * sizeof (uint8_t));
+ bn_to_bytes_be(pk_raw + (uint32_t)66U, ya);
+ }
+ return b;
+}
+
+/**
+Convert a public key from raw to its uncompressed form.
+
+ The outparam `pk` points to 133 bytes of valid memory, i.e., uint8_t[133].
+ The argument `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+void Hacl_P521_raw_to_uncompressed(uint8_t *pk_raw, uint8_t *pk)
+{
+ pk[0U] = (uint8_t)0x04U;
+ memcpy(pk + (uint32_t)1U, pk_raw, (uint32_t)132U * sizeof (uint8_t));
+}
+
+/**
+Convert a public key from raw to its compressed form.
+
+ The outparam `pk` points to 33 bytes of valid memory, i.e., uint8_t[33].
+ The argument `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+void Hacl_P521_raw_to_compressed(uint8_t *pk_raw, uint8_t *pk)
+{
+ uint8_t *pk_x = pk_raw;
+ uint8_t *pk_y = pk_raw + (uint32_t)66U;
+ uint64_t bn_f[9U] = { 0U };
+ bn_from_bytes_be(bn_f, pk_y);
+ uint64_t is_odd_f = bn_f[0U] & (uint64_t)1U;
+ pk[0U] = (uint8_t)is_odd_f + (uint8_t)0x02U;
+ memcpy(pk + (uint32_t)1U, pk_x, (uint32_t)66U * sizeof (uint8_t));
+}
+
+
+/******************/
+/* ECDH agreement */
+/******************/
+
+/**
+Compute the public key from the private key.
+
+ The function returns `true` if a private key is valid and `false` otherwise.
+
+ The outparam `public_key` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `private_key` points to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The private key is valid:
+ • 0 < `private_key` < the order of the curve.
+*/
+bool Hacl_P521_dh_initiator(uint8_t *public_key, uint8_t *private_key)
+{
+ uint64_t tmp[36U] = { 0U };
+ uint64_t *sk = tmp;
+ uint64_t *pk = tmp + (uint32_t)9U;
+ uint64_t is_sk_valid = load_qelem_conditional(sk, private_key);
+ point_mul_g(pk, sk);
+ uint64_t aff_p[18U] = { 0U };
+ uint64_t zinv[9U] = { 0U };
+ uint64_t *px = pk;
+ uint64_t *py0 = pk + (uint32_t)9U;
+ uint64_t *pz = pk + (uint32_t)18U;
+ uint64_t *x = aff_p;
+ uint64_t *y = aff_p + (uint32_t)9U;
+ p521_finv(zinv, pz);
+ fmul(x, px, zinv);
+ fmul(y, py0, zinv);
+ from_mont(x, x);
+ from_mont(y, y);
+ uint64_t *px0 = aff_p;
+ uint64_t *py = aff_p + (uint32_t)9U;
+ bn_to_bytes_be(public_key, px0);
+ bn_to_bytes_be(public_key + (uint32_t)66U, py);
+ return is_sk_valid == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+}
+
+/**
+Execute the diffie-hellmann key exchange.
+
+ The function returns `true` for successful creation of an ECDH shared secret and
+ `false` otherwise.
+
+ The outparam `shared_secret` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `their_pubkey` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `private_key` points to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `private_key` and `their_pubkey` are valid.
+*/
bool
-Hacl_P521_validate_private_key(uint8_t *private_key)
+Hacl_P521_dh_responder(uint8_t *shared_secret, uint8_t *their_pubkey, uint8_t *private_key)
{
- uint64_t bn_sk[9U] = { 0U };
- bn_from_bytes_be(bn_sk, private_key);
- uint64_t tmp[9U] = { 0U };
- p521_make_order(tmp);
- uint64_t c = bn_sub(tmp, bn_sk, tmp);
- uint64_t is_lt_order = (uint64_t)0U - c;
- uint64_t bn_zero[9U] = { 0U };
- uint64_t res = bn_is_eq_mask(bn_sk, bn_zero);
- uint64_t is_eq_zero = res;
- uint64_t res0 = is_lt_order & ~is_eq_zero;
- return res0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ uint64_t tmp[264U] = { 0U };
+ uint64_t *sk = tmp;
+ uint64_t *pk = tmp + (uint32_t)9U;
+ uint64_t p_aff[18U] = { 0U };
+ uint8_t *p_x = their_pubkey;
+ uint8_t *p_y = their_pubkey + (uint32_t)66U;
+ uint64_t *bn_p_x = p_aff;
+ uint64_t *bn_p_y = p_aff + (uint32_t)9U;
+ bn_from_bytes_be(bn_p_x, p_x);
+ bn_from_bytes_be(bn_p_y, p_y);
+ uint64_t *px0 = p_aff;
+ uint64_t *py0 = p_aff + (uint32_t)9U;
+ uint64_t lessX = bn_is_lt_prime_mask(px0);
+ uint64_t lessY = bn_is_lt_prime_mask(py0);
+ uint64_t res0 = lessX & lessY;
+ bool is_xy_valid = res0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ bool res;
+ if (!is_xy_valid)
+ {
+ res = false;
+ }
+ else
+ {
+ uint64_t rp[9U] = { 0U };
+ uint64_t tx[9U] = { 0U };
+ uint64_t ty[9U] = { 0U };
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ to_mont(tx, px);
+ to_mont(ty, py);
+ uint64_t tmp1[9U] = { 0U };
+ fsqr(rp, tx);
+ fmul(rp, rp, tx);
+ p521_make_a_coeff(tmp1);
+ fmul(tmp1, tmp1, tx);
+ fadd(rp, tmp1, rp);
+ p521_make_b_coeff(tmp1);
+ fadd(rp, tmp1, rp);
+ fsqr(ty, ty);
+ uint64_t r = bn_is_eq_mask(ty, rp);
+ uint64_t r0 = r;
+ bool r1 = r0 == (uint64_t)0xFFFFFFFFFFFFFFFFU;
+ res = r1;
+ }
+ if (res)
+ {
+ uint64_t *px = p_aff;
+ uint64_t *py = p_aff + (uint32_t)9U;
+ uint64_t *rx = pk;
+ uint64_t *ry = pk + (uint32_t)9U;
+ uint64_t *rz = pk + (uint32_t)18U;
+ to_mont(rx, px);
+ to_mont(ry, py);
+ p521_make_fone(rz);
+ }
+ bool is_pk_valid = res;
+ uint64_t is_sk_valid = load_qelem_conditional(sk, private_key);
+ uint64_t ss_proj[27U] = { 0U };
+ if (is_pk_valid)
+ {
+ point_mul(ss_proj, sk, pk);
+ uint64_t aff_p[18U] = { 0U };
+ uint64_t zinv[9U] = { 0U };
+ uint64_t *px = ss_proj;
+ uint64_t *py1 = ss_proj + (uint32_t)9U;
+ uint64_t *pz = ss_proj + (uint32_t)18U;
+ uint64_t *x = aff_p;
+ uint64_t *y = aff_p + (uint32_t)9U;
+ p521_finv(zinv, pz);
+ fmul(x, px, zinv);
+ fmul(y, py1, zinv);
+ from_mont(x, x);
+ from_mont(y, y);
+ uint64_t *px1 = aff_p;
+ uint64_t *py = aff_p + (uint32_t)9U;
+ bn_to_bytes_be(shared_secret, px1);
+ bn_to_bytes_be(shared_secret + (uint32_t)66U, py);
+ }
+ return is_sk_valid == (uint64_t)0xFFFFFFFFFFFFFFFFU && is_pk_valid;
}
+
diff -up ./lib/freebl/verified/Hacl_P521.h.p521_hacl ./lib/freebl/verified/Hacl_P521.h
--- ./lib/freebl/verified/Hacl_P521.h.p521_hacl 2024-01-10 14:02:53.234576425 -0800
+++ ./lib/freebl/verified/Hacl_P521.h 2024-01-10 14:04:29.764450895 -0800
@@ -22,24 +22,120 @@
* SOFTWARE.
*/
+
#ifndef __Hacl_P521_H
#define __Hacl_P521_H
#if defined(__cplusplus)
extern "C" {
#endif
-
+
#include <string.h>
#include "krml/internal/types.h"
#include "krml/lowstar_endianness.h"
#include "lib_intrinsics.h"
+
+/*******************************************************************************
+
+ Verified C library for ECDSA and ECDH functions over the P-521 NIST curve.
+
+ This module implements signing and verification, key validation, conversions
+ between various point representations, and ECDH key agreement.
+
+*******************************************************************************/
+
+/*****************/
+/* ECDSA signing */
+/*****************/
+
+
+/**
+Create an ECDSA signature WITHOUT hashing first.
+
+ This function is intended to receive a hash of the input.
+ For convenience, we recommend using one of the hash-and-sign combined functions above.
+
+ The argument `msg` MUST be at least 66 bytes (i.e. `msg_len >= 66`).
+
+ NOTE: The equivalent functions in OpenSSL and Fiat-Crypto both accept inputs
+ smaller than 66 bytes. These libraries left-pad the input with enough zeroes to
+ reach the minimum 66 byte size. Clients who need behavior identical to OpenSSL
+ need to perform the left-padding themselves.
+
+ The function returns `true` for successful creation of an ECDSA signature and `false` otherwise.
+
+ The outparam `signature` (R || S) points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `msg` points to `msg_len` bytes of valid memory, i.e., uint8_t[msg_len].
+ The arguments `private_key` and `nonce` point to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `private_key` and `nonce` are valid values:
+ • 0 < `private_key` < the order of the curve
+ • 0 < `nonce` < the order of the curve
+*/
+bool
+Hacl_P521_ecdsa_sign_p521_without_hash(
+ uint8_t *signature,
+ uint32_t msg_len,
+ uint8_t *msg,
+ uint8_t *private_key,
+ uint8_t *nonce
+);
+
+
+/**********************/
+/* ECDSA verification */
+/**********************/
+
+
+/**
+Verify an ECDSA signature WITHOUT hashing first.
+
+ This function is intended to receive a hash of the input.
+ For convenience, we recommend using one of the hash-and-verify combined functions above.
+
+ The argument `msg` MUST be at least 66 bytes (i.e. `msg_len >= 66`).
+
+ The function returns `true` if the signature is valid and `false` otherwise.
+
+ The argument `msg` points to `msg_len` bytes of valid memory, i.e., uint8_t[msg_len].
+ The argument `public_key` (x || y) points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The arguments `signature_r` and `signature_s` point to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `public_key` is valid
+*/
+bool
+Hacl_P521_ecdsa_verif_without_hash(
+ uint32_t msg_len,
+ uint8_t *msg,
+ uint8_t *public_key,
+ uint8_t *signature_r,
+ uint8_t *signature_s
+);
+
+
/******************/
/* Key validation */
/******************/
/**
+Public key validation.
+
+ The function returns `true` if a public key is valid and `false` otherwise.
+
+ The argument `public_key` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The public key (x || y) is valid (with respect to SP 800-56A):
+ • the public key is not the “point at infinity”, represented as O.
+ • the affine x and y coordinates of the point represented by the public key are
+ in the range [0, p 1] where p is the prime defining the finite field.
+ • y^2 = x^3 + ax + b where a and b are the coefficients of the curve equation.
+ The last extract is taken from: https://neilmadden.blog/2017/05/17/so-how-do-you-validate-nist-ecdh-public-keys/
+*/
+bool Hacl_P521_validate_public_key(uint8_t *public_key);
+
+/**
Private key validation.
The function returns `true` if a private key is valid and `false` otherwise.
@@ -51,6 +147,96 @@ Private key validation.
*/
bool Hacl_P521_validate_private_key(uint8_t *private_key);
+/*******************************************************************************
+ Parsing and Serializing public keys.
+
+ A public key is a point (x, y) on the P-521 NIST curve.
+
+ The point can be represented in the following three ways.
+ • raw = [ x || y ], 132 bytes
+ • uncompressed = [ 0x04 || x || y ], 133 bytes
+ • compressed = [ (0x02 for even `y` and 0x03 for odd `y`) || x ], 33 bytes
+
+*******************************************************************************/
+
+
+/**
+Convert a public key from uncompressed to its raw form.
+
+ The function returns `true` for successful conversion of a public key and `false` otherwise.
+
+ The outparam `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `pk` points to 133 bytes of valid memory, i.e., uint8_t[133].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+bool Hacl_P521_uncompressed_to_raw(uint8_t *pk, uint8_t *pk_raw);
+
+/**
+Convert a public key from compressed to its raw form.
+
+ The function returns `true` for successful conversion of a public key and `false` otherwise.
+
+ The outparam `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `pk` points to 33 bytes of valid memory, i.e., uint8_t[33].
+
+ The function also checks whether (x, y) is a valid point.
+*/
+bool Hacl_P521_compressed_to_raw(uint8_t *pk, uint8_t *pk_raw);
+
+/**
+Convert a public key from raw to its uncompressed form.
+
+ The outparam `pk` points to 133 bytes of valid memory, i.e., uint8_t[133].
+ The argument `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+void Hacl_P521_raw_to_uncompressed(uint8_t *pk_raw, uint8_t *pk);
+
+/**
+Convert a public key from raw to its compressed form.
+
+ The outparam `pk` points to 33 bytes of valid memory, i.e., uint8_t[33].
+ The argument `pk_raw` points to 132 bytes of valid memory, i.e., uint8_t[132].
+
+ The function DOESN'T check whether (x, y) is a valid point.
+*/
+void Hacl_P521_raw_to_compressed(uint8_t *pk_raw, uint8_t *pk);
+
+
+/******************/
+/* ECDH agreement */
+/******************/
+
+/**
+Compute the public key from the private key.
+
+ The function returns `true` if a private key is valid and `false` otherwise.
+
+ The outparam `public_key` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `private_key` points to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The private key is valid:
+ • 0 < `private_key` < the order of the curve.
+*/
+bool Hacl_P521_dh_initiator(uint8_t *public_key, uint8_t *private_key);
+
+/**
+Execute the diffie-hellmann key exchange.
+
+ The function returns `true` for successful creation of an ECDH shared secret and
+ `false` otherwise.
+
+ The outparam `shared_secret` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `their_pubkey` points to 132 bytes of valid memory, i.e., uint8_t[132].
+ The argument `private_key` points to 66 bytes of valid memory, i.e., uint8_t[66].
+
+ The function also checks whether `private_key` and `their_pubkey` are valid.
+*/
+bool
+Hacl_P521_dh_responder(uint8_t *shared_secret, uint8_t *their_pubkey, uint8_t *private_key);
+
#if defined(__cplusplus)
}
#endif