// Code generated by Fiat Cryptography. DO NOT EDIT.
//
// Autogenerated: word_by_word_montgomery --lang Go --no-wide-int --cmovznz-by-mul --relax-primitive-carry-to-bitwidth 32,64 --internal-static --public-function-case camelCase --public-type-case camelCase --private-function-case camelCase --private-type-case camelCase --doc-text-before-function-name '' --doc-newline-before-package-declaration --doc-prepend-header 'Code generated by Fiat Cryptography. DO NOT EDIT.' --package-name fiat --no-prefix-fiat p521 64 '2^521 - 1' mul square add sub one from_montgomery to_montgomery selectznz to_bytes from_bytes
//
// curve description: p521
//
// machine_wordsize = 64 (from "64")
//
// requested operations: mul, square, add, sub, one, from_montgomery, to_montgomery, selectznz, to_bytes, from_bytes
//
// m = 0x1ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff (from "2^521 - 1")
//
//
//
// NOTE: In addition to the bounds specified above each function, all
//
//   functions synthesized for this Montgomery arithmetic require the
//
//   input to be strictly less than the prime modulus (m), and also
//
//   require the input to be in the unique saturated representation.
//
//   All functions also ensure that these two properties are true of
//
//   return values.
//
//
//
// Computed values:
//
//   eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9)
//
//   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)
//
//   twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) + (z[6] << 0x180) + (z[7] << 0x1c0) + (z[8] << 2^9) in
//
//                            if x1 & (2^576-1) < 2^575 then x1 & (2^576-1) else (x1 & (2^576-1)) - 2^576

package fiat

import 

type p521Uint1 uint64 // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927
type p521Int1 int64   // We use uint64 instead of a more narrow type for performance reasons; see https://github.com/mit-plv/fiat-crypto/pull/1006#issuecomment-892625927

// The type p521MontgomeryDomainFieldElement is a field element in the Montgomery domain.
//
// Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
type p521MontgomeryDomainFieldElement [9]uint64

// The type p521NonMontgomeryDomainFieldElement is a field element NOT in the Montgomery domain.
//
// Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
type p521NonMontgomeryDomainFieldElement [9]uint64

// p521CmovznzU64 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]
func p521CmovznzU64( *uint64,  p521Uint1,  uint64,  uint64) {
	 := (uint64() * 0xffffffffffffffff)
	 := (( & ) | ((^) & ))
	* = 
}

// p521Mul multiplies two field elements in the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//	0 ≤ eval arg2 < m
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m
//	0 ≤ eval out1 < m
func p521Mul( *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement) {
	 := [1]
	 := [2]
	 := [3]
	 := [4]
	 := [5]
	 := [6]
	 := [7]
	 := [8]
	 := [0]
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(p521Uint1()), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0x1ff, uint64(p521Uint1()))
	var  uint64
	_,  = bits.Sub64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521Square squares a field element in the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m
//	0 ≤ eval out1 < m
func p521Square( *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement) {
	 := [1]
	 := [2]
	 := [3]
	 := [4]
	 := [5]
	 := [6]
	 := [7]
	 := [8]
	 := [0]
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(p521Uint1()), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, [8])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [7])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [6])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [5])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [4])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [3])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [2])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [1])
	var  uint64
	var  uint64
	,  = bits.Mul64(, [0])
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + )
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0x1ff, uint64(p521Uint1()))
	var  uint64
	_,  = bits.Sub64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521Add adds two field elements in the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//	0 ≤ eval arg2 < m
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m
//	0 ≤ eval out1 < m
func p521Add( *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement) {
	var  uint64
	var  uint64
	,  = bits.Add64([0], [0], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64([1], [1], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([2], [2], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([3], [3], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([4], [4], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([5], [5], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([6], [6], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([7], [7], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64([8], [8], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0x1ff, uint64(p521Uint1()))
	var  uint64
	_,  = bits.Sub64(uint64(p521Uint1()), uint64(0x0), uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521Sub subtracts two field elements in the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//	0 ≤ eval arg2 < m
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m
//	0 ≤ eval out1 < m
func p521Sub( *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement) {
	var  uint64
	var  uint64
	,  = bits.Sub64([0], [0], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64([1], [1], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([2], [2], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([3], [3], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([4], [4], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([5], [5], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([6], [6], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([7], [7], uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64([8], [8], uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), uint64(0x0), 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	, _ = bits.Add64(, ( & 0x1ff), uint64(p521Uint1()))
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521SetOne returns the field element one in the Montgomery domain.
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = 1 mod m
//	0 ≤ eval out1 < m
func p521SetOne( *p521MontgomeryDomainFieldElement) {
	[0] = 0x80000000000000
	[1] = uint64(0x0)
	[2] = uint64(0x0)
	[3] = uint64(0x0)
	[4] = uint64(0x0)
	[5] = uint64(0x0)
	[6] = uint64(0x0)
	[7] = uint64(0x0)
	[8] = uint64(0x0)
}

// p521FromMontgomery translates a field element out of the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//
// Postconditions:
//
//	eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^9) mod m
//	0 ≤ eval out1 < m
func p521FromMontgomery( *p521NonMontgomeryDomainFieldElement,  *p521MontgomeryDomainFieldElement) {
	 := [0]
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [1], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [2], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [3], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [4], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [5], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [6], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [7], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, [8], uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0x1ff, uint64(p521Uint1()))
	var  uint64
	_,  = bits.Sub64(uint64(0x0), uint64(0x0), uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521ToMontgomery translates a field element into the Montgomery domain.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//
// Postconditions:
//
//	eval (from_montgomery out1) mod m = eval arg1 mod m
//	0 ≤ eval out1 < m
func p521ToMontgomery( *p521MontgomeryDomainFieldElement,  *p521NonMontgomeryDomainFieldElement) {
	var  uint64
	var  uint64
	,  = bits.Mul64([0], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Mul64([1], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + ), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(uint64(0x0), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([2], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([3], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([4], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([5], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([6], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([7], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64([8], 0x400000000000)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, uint64(0x0), uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0x1ff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Mul64(, 0xffffffffffffffff)
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	_,  = bits.Add64(, , uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64(, , uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Add64((uint64(p521Uint1()) + (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))), , uint64(p521Uint1()))
	 := (uint64(p521Uint1()) + (uint64(p521Uint1()) + ))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(0x0))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0xffffffffffffffff, uint64(p521Uint1()))
	var  uint64
	var  uint64
	,  = bits.Sub64(, 0x1ff, uint64(p521Uint1()))
	var  uint64
	_,  = bits.Sub64(uint64(0x0), uint64(0x0), uint64(p521Uint1()))
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	var  uint64
	p521CmovznzU64(&, p521Uint1(), , )
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521Selectznz 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]]
func p521Selectznz( *[9]uint64,  p521Uint1,  *[9]uint64,  *[9]uint64) {
	var  uint64
	p521CmovznzU64(&, , [0], [0])
	var  uint64
	p521CmovznzU64(&, , [1], [1])
	var  uint64
	p521CmovznzU64(&, , [2], [2])
	var  uint64
	p521CmovznzU64(&, , [3], [3])
	var  uint64
	p521CmovznzU64(&, , [4], [4])
	var  uint64
	p521CmovznzU64(&, , [5], [5])
	var  uint64
	p521CmovznzU64(&, , [6], [6])
	var  uint64
	p521CmovznzU64(&, , [7], [7])
	var  uint64
	p521CmovznzU64(&, , [8], [8])
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}

// p521ToBytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order.
//
// Preconditions:
//
//	0 ≤ eval arg1 < m
//
// Postconditions:
//
//	out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..65]
//
// Input Bounds:
//
//	arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
//
// 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]]
func p521ToBytes( *[66]uint8,  *[9]uint64) {
	 := [8]
	 := [7]
	 := [6]
	 := [5]
	 := [4]
	 := [3]
	 := [2]
	 := [1]
	 := [0]
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := ( >> 8)
	 := (uint8() & 0xff)
	 := uint8(( >> 8))
	 := (uint8() & 0xff)
	 := p521Uint1(( >> 8))
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
	[9] = 
	[10] = 
	[11] = 
	[12] = 
	[13] = 
	[14] = 
	[15] = 
	[16] = 
	[17] = 
	[18] = 
	[19] = 
	[20] = 
	[21] = 
	[22] = 
	[23] = 
	[24] = 
	[25] = 
	[26] = 
	[27] = 
	[28] = 
	[29] = 
	[30] = 
	[31] = 
	[32] = 
	[33] = 
	[34] = 
	[35] = 
	[36] = 
	[37] = 
	[38] = 
	[39] = 
	[40] = 
	[41] = 
	[42] = 
	[43] = 
	[44] = 
	[45] = 
	[46] = 
	[47] = 
	[48] = 
	[49] = 
	[50] = 
	[51] = 
	[52] = 
	[53] = 
	[54] = 
	[55] = 
	[56] = 
	[57] = 
	[58] = 
	[59] = 
	[60] = 
	[61] = 
	[62] = 
	[63] = 
	[64] = 
	[65] = uint8()
}

// p521FromBytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order.
//
// Preconditions:
//
//	0 ≤ bytes_eval arg1 < m
//
// Postconditions:
//
//	eval out1 mod m = bytes_eval arg1 mod m
//	0 ≤ eval out1 < 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]]
//
// Output Bounds:
//
//	out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0x1ff]]
func p521FromBytes( *[9]uint64,  *[66]uint8) {
	 := (uint64(p521Uint1([65])) << 8)
	 := [64]
	 := (uint64([63]) << 56)
	 := (uint64([62]) << 48)
	 := (uint64([61]) << 40)
	 := (uint64([60]) << 32)
	 := (uint64([59]) << 24)
	 := (uint64([58]) << 16)
	 := (uint64([57]) << 8)
	 := [56]
	 := (uint64([55]) << 56)
	 := (uint64([54]) << 48)
	 := (uint64([53]) << 40)
	 := (uint64([52]) << 32)
	 := (uint64([51]) << 24)
	 := (uint64([50]) << 16)
	 := (uint64([49]) << 8)
	 := [48]
	 := (uint64([47]) << 56)
	 := (uint64([46]) << 48)
	 := (uint64([45]) << 40)
	 := (uint64([44]) << 32)
	 := (uint64([43]) << 24)
	 := (uint64([42]) << 16)
	 := (uint64([41]) << 8)
	 := [40]
	 := (uint64([39]) << 56)
	 := (uint64([38]) << 48)
	 := (uint64([37]) << 40)
	 := (uint64([36]) << 32)
	 := (uint64([35]) << 24)
	 := (uint64([34]) << 16)
	 := (uint64([33]) << 8)
	 := [32]
	 := (uint64([31]) << 56)
	 := (uint64([30]) << 48)
	 := (uint64([29]) << 40)
	 := (uint64([28]) << 32)
	 := (uint64([27]) << 24)
	 := (uint64([26]) << 16)
	 := (uint64([25]) << 8)
	 := [24]
	 := (uint64([23]) << 56)
	 := (uint64([22]) << 48)
	 := (uint64([21]) << 40)
	 := (uint64([20]) << 32)
	 := (uint64([19]) << 24)
	 := (uint64([18]) << 16)
	 := (uint64([17]) << 8)
	 := [16]
	 := (uint64([15]) << 56)
	 := (uint64([14]) << 48)
	 := (uint64([13]) << 40)
	 := (uint64([12]) << 32)
	 := (uint64([11]) << 24)
	 := (uint64([10]) << 16)
	 := (uint64([9]) << 8)
	 := [8]
	 := (uint64([7]) << 56)
	 := (uint64([6]) << 48)
	 := (uint64([5]) << 40)
	 := (uint64([4]) << 32)
	 := (uint64([3]) << 24)
	 := (uint64([2]) << 16)
	 := (uint64([1]) << 8)
	 := [0]
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + )
	 := ( + uint64())
	[0] = 
	[1] = 
	[2] = 
	[3] = 
	[4] = 
	[5] = 
	[6] = 
	[7] = 
	[8] = 
}