The code in this package was autogenerated by the fiat-crypto project
at commit c076f3550 from a formally verified model.

    docker build -t fiat-crypto:c076f3550 .
    docker run fiat-crypto:c076f3550 --lang Go --no-wide-int --cmovznz-by-mul \
        --internal-static --public-function-case camelCase --public-type-case camelCase \
        --private-function-case camelCase --private-type-case camelCase \
        --no-prefix-fiat --package-name fiat --doc-text-before-function-name '' \
        --doc-prepend-header 'Code generated by Fiat Cryptography. DO NOT EDIT.' \
        --doc-newline-before-package-declaration p521 64 9 '2^521 - 1' \
        carry_mul carry_square carry add sub to_bytes from_bytes selectznz \
        > p521_fiat64.go

It comes under the following license.

    Copyright (c) 2015-2020 The fiat-crypto Authors. All rights reserved.

    Redistribution and use in source and binary forms, with or without
    modification, are permitted provided that the following conditions are
    met:

        1. Redistributions of source code must retain the above copyright
        notice, this list of conditions and the following disclaimer.

    THIS SOFTWARE IS PROVIDED BY the fiat-crypto authors "AS IS"
    AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design,
    Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The authors are listed at

    https://github.com/mit-plv/fiat-crypto/blob/master/AUTHORS
