p384-0.13.0/.cargo_vcs_info.json0000644000000001420000000000100116100ustar { "git": { "sha1": "8faa670b6b61d67ef4b612c53655246b2ca5d9fa" }, "path_in_vcs": "p384" }p384-0.13.0/CHANGELOG.md000064400000000000000000000163301046102023000122170ustar 00000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## 0.13.0 (2023-03-03) ### Added - `PrimeField` constants/tests ([#730], [#737], [#738]) - `const fn` inversions for all field elements ([#736]) ### Changed - `FieldBytesEncoding` trait impls ([#732]) - Update `hash2curve` implementations to new API ([#735]) - Impl `Invert` trait for `Scalar` types ([#741]) - Bump `ecdsa` dependency to v0.16 ([#770]) - Bump `elliptic-curve` dependency to v0.13 ([#770]) - Bump `primeorder` dependency to v0.13 ([#777]) ### Fixed - Point compactabtility check ([#772]) [#730]: https://github.com/RustCrypto/elliptic-curves/pull/730 [#732]: https://github.com/RustCrypto/elliptic-curves/pull/732 [#735]: https://github.com/RustCrypto/elliptic-curves/pull/735 [#736]: https://github.com/RustCrypto/elliptic-curves/pull/736 [#737]: https://github.com/RustCrypto/elliptic-curves/pull/737 [#738]: https://github.com/RustCrypto/elliptic-curves/pull/738 [#741]: https://github.com/RustCrypto/elliptic-curves/pull/741 [#770]: https://github.com/RustCrypto/elliptic-curves/pull/770 [#772]: https://github.com/RustCrypto/elliptic-curves/pull/772 [#777]: https://github.com/RustCrypto/elliptic-curves/pull/777 ## 0.12.0 (2023-01-16) ### Added - `alloc` feature ([#670]) - Constructors for `Scalar` from `u128` ([#709]) ### Changed - Use generic curve arithmetic implementation from `primeorder` crate ([#631], [#716]) - Use weak feature activation; MSRV 1.60 ([#701]) - Bump `ecdsa` dependency to v0.15 ([#713]) [#631]: https://github.com/RustCrypto/elliptic-curves/pull/631 [#670]: https://github.com/RustCrypto/elliptic-curves/pull/670 [#701]: https://github.com/RustCrypto/elliptic-curves/pull/701 [#709]: https://github.com/RustCrypto/elliptic-curves/pull/709 [#713]: https://github.com/RustCrypto/elliptic-curves/pull/713 [#716]: https://github.com/RustCrypto/elliptic-curves/pull/716 ## 0.11.2 (2022-08-03) ### Added - Re-export low-level `diffie_hellman` function ([#627]) [#627]: https://github.com/RustCrypto/elliptic-curves/pull/627 ## 0.11.1 (2022-06-12) ### Added - RFC6979 test vectors ([#591]) - Impl `serde::{Serialize, Deserialize}` for `Scalar` ([#604]) ### Changed - Use generic prime order formulas ([#601]) [#591]: https://github.com/RustCrypto/elliptic-curves/pull/591 [#601]: https://github.com/RustCrypto/elliptic-curves/pull/601 [#604]: https://github.com/RustCrypto/elliptic-curves/pull/604 ## 0.11.0 (2022-06-03) ### Added - Arithmetic implementation ([#565], [#573]) - Addition formulas from Renes-Costello-Batina 2015, adapted from @str4d's implementation in the `p256` crate - `FieldElement::{invert, sqrt}` implementations - `Scalar::{invert, sqrt}` implementations - Scalar field implementation generated using `fiat-crypto` - Scalar multiplication using 4-bit window ala [#563] - ECDH support using generic implementation from `elliptic-curve` - ECDSA support using generic implementation from the `ecdsa` crate - Wycheproof test vectors ([#574]) - `const fn` field arithmetic ([#589], [#590]) [#563]: https://github.com/RustCrypto/elliptic-curves/pull/563 [#565]: https://github.com/RustCrypto/elliptic-curves/pull/565 [#573]: https://github.com/RustCrypto/elliptic-curves/pull/573 [#574]: https://github.com/RustCrypto/elliptic-curves/pull/574 [#589]: https://github.com/RustCrypto/elliptic-curves/pull/589 [#590]: https://github.com/RustCrypto/elliptic-curves/pull/590 ## 0.10.0 (2022-05-09) ### Changed - Bump `digest` to v0.10 ([#515]) - Have `pkcs8` feature activate `ecdsa/pkcs8` ([#538]) - Bump `elliptic-curve` to v0.12 ([#544]) - Bump `ecdsa` to v0.14 ([#544]) [#515]: https://github.com/RustCrypto/elliptic-curves/pull/515 [#538]: https://github.com/RustCrypto/elliptic-curves/pull/538 [#544]: https://github.com/RustCrypto/elliptic-curves/pull/544 ## 0.9.0 (2021-12-14) ### Added - `serde` feature ([#463]) ### Changed - Use `sec1` crate for `EncodedPoint` type ([#435]) - Rust 2021 edition upgrade; MSRV 1.56+ ([#453]) - Bump `elliptic-curve` crate dependency to v0.11 ([#466]) - Bump `ecdsa` crate dependency to v0.13 ([#467]) [#435]: https://github.com/RustCrypto/elliptic-curves/pull/435 [#453]: https://github.com/RustCrypto/elliptic-curves/pull/453 [#463]: https://github.com/RustCrypto/elliptic-curves/pull/463 [#466]: https://github.com/RustCrypto/elliptic-curves/pull/466 [#467]: https://github.com/RustCrypto/elliptic-curves/pull/467 ## 0.8.0 (2021-06-08) ### Changed - Bump `elliptic-curve` to v0.10; MSRV 1.51+ ([#349]) - Bump `ecdsa` to v0.12 ([#349]) [#349]: https://github.com/RustCrypto/elliptic-curves/pull/349 ## 0.7.0 (2021-04-29) ### Added - `jwk` feature ([#279]) - `Order` constant ([#328]) ### Changed - Rename `ecdsa::Asn1Signature` to `::DerSignature` ([#288]) - Bump `elliptic-curve` crate dependency to v0.9 ([#293]) - Bump `pkcs8` crate dependency to v0.6 ([#319]) - Bump `ecdsa` crate dependency to v0.11 ([#330]) [#279]: https://github.com/RustCrypto/elliptic-curves/pull/279 [#288]: https://github.com/RustCrypto/elliptic-curves/pull/288 [#293]: https://github.com/RustCrypto/elliptic-curves/pull/293 [#319]: https://github.com/RustCrypto/elliptic-curves/pull/319 [#328]: https://github.com/RustCrypto/elliptic-curves/pull/328 [#330]: https://github.com/RustCrypto/elliptic-curves/pull/330 ## 0.6.1 (2020-12-16) ### Fixed - Trigger docs.rs rebuild with nightly bugfix ([RustCrypto/traits#412]) [RustCrypto/traits#412]: https://github.com/RustCrypto/traits/pull/412 ## 0.6.0 (2020-12-16) ### Changed - Bump `elliptic-curve` dependency to v0.8 ([#260]) - Bump `ecdsa` to v0.10 ([#260]) [#260]: https://github.com/RustCrypto/elliptic-curves/pull/260 ## 0.5.0 (2020-12-06) ### Added - PKCS#8 support ([#243], [#244]) ### Changed - Bump `elliptic-curve` crate dependency to v0.7; MSRV 1.46+ ([#247]) - Bump `ecdsa` crate dependency to v0.9 ([#247]) [#247]: https://github.com/RustCrypto/elliptic-curves/pull/247 [#244]: https://github.com/RustCrypto/elliptic-curves/pull/244 [#243]: https://github.com/RustCrypto/elliptic-curves/pull/243 ## 0.4.1 (2020-10-08) ### Added - `SecretValue` impl when `arithmetic` feature is disabled ([#222]) [#222]: https://github.com/RustCrypto/elliptic-curves/pull/222 ## 0.4.0 (2020-09-18) ### Added - `ecdsa::Asn1Signature` type alias ([#186]) ### Changed - Rename `ElementBytes` => `FieldBytes` ([#176]) - Rename `Curve::ElementSize` => `FieldSize` ([#150]) [#186]: https://github.com/RustCrypto/elliptic-curves/pull/186 [#176]: https://github.com/RustCrypto/elliptic-curves/pull/176 [#150]: https://github.com/RustCrypto/elliptic-curves/pull/150 ## 0.3.0 (2020-08-10) ### Added - ECDSA types ([#73]) - OID support ([#103], [#113]) ### Changed - Bump `elliptic-curve` crate dependency to v0.5 ([#126]) [#73]: https://github.com/RustCrypto/elliptic-curves/pull/73 [#103]: https://github.com/RustCrypto/elliptic-curves/pull/103 [#113]: https://github.com/RustCrypto/elliptic-curves/pull/113 [#126]: https://github.com/RustCrypto/elliptic-curves/pull/126 ## 0.2.0 (2020-06-08) ### Changed - Bump `elliptic-curve` crate dependency to v0.4 ([#39]) [#39]: https://github.com/RustCrypto/elliptic-curves/pull/39 ## 0.1.0 (2020-01-15) - Initial release p384-0.13.0/Cargo.toml0000644000000062540000000000100076200ustar # THIS FILE IS AUTOMATICALLY GENERATED BY CARGO # # When uploading crates to the registry Cargo will automatically # "normalize" Cargo.toml files for maximal compatibility # with all versions of Cargo and also rewrite `path` dependencies # to registry (e.g., crates.io) dependencies. # # If you are reading this file be aware that the original Cargo.toml # will likely look very different (and much more reasonable). # See Cargo.toml.orig for the original contents. [package] edition = "2021" rust-version = "1.65" name = "p384" version = "0.13.0" authors = [ "RustCrypto Developers", "Frank Denis ", ] description = """ Pure Rust implementation of the NIST P-384 (a.k.a. secp384r1) elliptic curve as defined in SP 800-186 with support for ECDH, ECDSA signing/verification, and general purpose curve arithmetic support. """ documentation = "https://docs.rs/p384" readme = "README.md" keywords = [ "crypto", "ecc", "nist", "secp384r1", ] categories = [ "cryptography", "no-std", ] license = "Apache-2.0 OR MIT" repository = "https://github.com/RustCrypto/elliptic-curves/tree/master/p384" [package.metadata.docs.rs] rustdoc-args = [ "--cfg", "docsrs", ] [[bench]] name = "field" harness = false required-features = ["expose-field"] [[bench]] name = "scalar" harness = false [dependencies.ecdsa-core] version = "0.16" features = ["der"] optional = true default-features = false package = "ecdsa" [dependencies.elliptic-curve] version = "0.13" features = [ "hazmat", "sec1", ] default-features = false [dependencies.hex-literal] version = "0.3" optional = true [dependencies.primeorder] version = "0.13" [dependencies.serdect] version = "0.2" optional = true default-features = false [dependencies.sha2] version = "0.10" optional = true default-features = false [dev-dependencies.blobby] version = "0.3" [dev-dependencies.criterion] version = "0.4" [dev-dependencies.ecdsa-core] version = "0.16" features = ["dev"] default-features = false package = "ecdsa" [dev-dependencies.hex-literal] version = "0.3" [dev-dependencies.proptest] version = "1.1" [dev-dependencies.rand_core] version = "0.6" features = ["getrandom"] [features] alloc = [ "ecdsa-core?/alloc", "elliptic-curve/alloc", ] arithmetic = [ "elliptic-curve/arithmetic", "elliptic-curve/digest", ] bits = [ "arithmetic", "elliptic-curve/bits", ] default = [ "arithmetic", "ecdh", "ecdsa", "pem", "std", ] digest = [ "ecdsa-core/digest", "ecdsa-core/hazmat", ] ecdh = [ "arithmetic", "elliptic-curve/ecdh", ] ecdsa = [ "arithmetic", "ecdsa-core/signing", "ecdsa-core/verifying", "sha384", ] expose-field = ["arithmetic"] hash2curve = [ "arithmetic", "elliptic-curve/hash2curve", ] jwk = ["elliptic-curve/jwk"] pem = [ "elliptic-curve/pem", "ecdsa-core/pem", "pkcs8", ] pkcs8 = [ "ecdsa-core/pkcs8", "elliptic-curve/pkcs8", ] serde = [ "ecdsa-core/serde", "elliptic-curve/serde", "serdect", ] sha384 = [ "digest", "sha2", ] std = [ "alloc", "ecdsa-core?/std", "elliptic-curve/std", ] test-vectors = ["hex-literal"] voprf = [ "elliptic-curve/voprf", "sha2", ] p384-0.13.0/Cargo.toml.orig000064400000000000000000000045751046102023000133050ustar 00000000000000[package] name = "p384" version = "0.13.0" description = """ Pure Rust implementation of the NIST P-384 (a.k.a. secp384r1) elliptic curve as defined in SP 800-186 with support for ECDH, ECDSA signing/verification, and general purpose curve arithmetic support. """ authors = ["RustCrypto Developers", "Frank Denis "] license = "Apache-2.0 OR MIT" documentation = "https://docs.rs/p384" repository = "https://github.com/RustCrypto/elliptic-curves/tree/master/p384" readme = "README.md" categories = ["cryptography", "no-std"] keywords = ["crypto", "ecc", "nist", "secp384r1"] edition = "2021" rust-version = "1.65" [dependencies] elliptic-curve = { version = "0.13", default-features = false, features = ["hazmat", "sec1"] } primeorder = { version = "0.13", path = "../primeorder" } # optional dependencies ecdsa-core = { version = "0.16", package = "ecdsa", optional = true, default-features = false, features = ["der"] } hex-literal = { version = "0.3", optional = true } serdect = { version = "0.2", optional = true, default-features = false } sha2 = { version = "0.10", optional = true, default-features = false } [dev-dependencies] blobby = "0.3" criterion = "0.4" ecdsa-core = { version = "0.16", package = "ecdsa", default-features = false, features = ["dev"] } hex-literal = "0.3" proptest = "1.1" rand_core = { version = "0.6", features = ["getrandom"] } [features] default = ["arithmetic", "ecdh", "ecdsa", "pem", "std"] alloc = ["ecdsa-core?/alloc", "elliptic-curve/alloc"] std = ["alloc", "ecdsa-core?/std", "elliptic-curve/std"] arithmetic = ["elliptic-curve/arithmetic", "elliptic-curve/digest"] bits = ["arithmetic", "elliptic-curve/bits"] digest = ["ecdsa-core/digest", "ecdsa-core/hazmat"] ecdh = ["arithmetic", "elliptic-curve/ecdh"] ecdsa = ["arithmetic", "ecdsa-core/signing", "ecdsa-core/verifying", "sha384"] expose-field = ["arithmetic"] hash2curve = ["arithmetic", "elliptic-curve/hash2curve"] jwk = ["elliptic-curve/jwk"] pem = ["elliptic-curve/pem", "ecdsa-core/pem", "pkcs8"] pkcs8 = ["ecdsa-core/pkcs8", "elliptic-curve/pkcs8"] serde = ["ecdsa-core/serde", "elliptic-curve/serde", "serdect"] sha384 = ["digest", "sha2"] test-vectors = ["hex-literal"] voprf = ["elliptic-curve/voprf", "sha2"] [package.metadata.docs.rs] rustdoc-args = ["--cfg", "docsrs"] [[bench]] name = "field" harness = false required-features = ["expose-field"] [[bench]] name = "scalar" harness = false p384-0.13.0/LICENSE-APACHE000064400000000000000000000251411046102023000123320ustar 00000000000000 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. p384-0.13.0/LICENSE-MIT000064400000000000000000000020561046102023000120420ustar 00000000000000Copyright (c) 2020-2021 RustCrypto Developers Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. p384-0.13.0/README.md000064400000000000000000000064061046102023000116700ustar 00000000000000# [RustCrypto]: NIST P-384 (secp384r1) elliptic curve [![crate][crate-image]][crate-link] [![Docs][docs-image]][docs-link] [![Build Status][build-image]][build-link] ![Apache2/MIT licensed][license-image] ![Rust Version][rustc-image] [![Project Chat][chat-image]][chat-link] Pure Rust implementation of the NIST P-384 (a.k.a. secp384r1) elliptic curve with support for ECDH, ECDSA signing/verification, and general purpose curve arithmetic support implemented in terms of traits from the [`elliptic-curve`] crate. [Documentation][docs-link] ## ⚠️ Security Warning The elliptic curve arithmetic contained in this crate has never been independently audited! This crate has been designed with the goal of ensuring that secret-dependent operations are performed in constant time (using the `subtle` crate and constant-time formulas). However, it has not been thoroughly assessed to ensure that generated assembly is constant time on common CPU architectures. USE AT YOUR OWN RISK! ## Supported Algorithms - [Elliptic Curve Diffie-Hellman (ECDH)][ECDH]: gated under the `ecdh` feature. - [Elliptic Curve Digital Signature Algorithm (ECDSA)][ECDSA]: gated under the `ecdsa` feature. ## About P-384 NIST P-384 is a Weierstrass curve specified in [SP 800-186]: Recommendations for Discrete Logarithm-based Cryptography: Elliptic Curve Domain Parameters. Also known as secp384r1 (SECG), it's included in the US National Security Agency's "Suite B" and is widely used in protocols like TLS and the associated X.509 PKI. ## Minimum Supported Rust Version Rust **1.65** or higher. Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump. ## SemVer Policy - All on-by-default features of this library are covered by SemVer - MSRV is considered exempt from SemVer as noted above ## License All crates licensed under either of * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0) * [MIT license](http://opensource.org/licenses/MIT) at your option. ### Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. [//]: # (badges) [crate-image]: https://buildstats.info/crate/p384 [crate-link]: https://crates.io/crates/p384 [docs-image]: https://docs.rs/p384/badge.svg [docs-link]: https://docs.rs/p384/ [build-image]: https://github.com/RustCrypto/elliptic-curves/actions/workflows/p384.yml/badge.svg [build-link]: https://github.com/RustCrypto/elliptic-curves/actions/workflows/p384.yml [license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg [rustc-image]: https://img.shields.io/badge/rustc-1.65+-blue.svg [chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg [chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/260040-elliptic-curves [//]: # (general links) [RustCrypto]: https://github.com/rustcrypto/ [`elliptic-curve`]: https://github.com/RustCrypto/traits/tree/master/elliptic-curve [ECDH]: https://en.wikipedia.org/wiki/Elliptic-curve_Diffie-Hellman [ECDSA]: https://en.wikipedia.org/wiki/Elliptic_Curve_Digital_Signature_Algorithm [SP 800-186]: https://csrc.nist.gov/publications/detail/sp/800-186/final p384-0.13.0/benches/field.rs000064400000000000000000000033731046102023000134510ustar 00000000000000//! secp384r1 field element benchmarks use criterion::{ criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion, }; use hex_literal::hex; use p384::FieldElement; fn test_field_element_x() -> FieldElement { FieldElement::from_bytes( hex!("c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c3e97d942a3c56bf34123013dbf").into() ) .unwrap() } fn test_field_element_y() -> FieldElement { FieldElement::from_bytes( hex!("37257906a8223866eda0743c519616a76a758ae58aee81c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d").into() ) .unwrap() } fn bench_field_element_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_field_element_x(); let y = test_field_element_y(); group.bench_function("mul", |b| b.iter(|| &x * &y)); } fn bench_field_element_square<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_field_element_x(); group.bench_function("square", |b| b.iter(|| x.square())); } fn bench_field_element_sqrt<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_field_element_x(); group.bench_function("sqrt", |b| b.iter(|| x.sqrt())); } fn bench_field_element_invert<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_field_element_x(); group.bench_function("invert", |b| b.iter(|| x.invert())); } fn bench_field_element(c: &mut Criterion) { let mut group = c.benchmark_group("field element operations"); bench_field_element_mul(&mut group); bench_field_element_square(&mut group); bench_field_element_invert(&mut group); bench_field_element_sqrt(&mut group); group.finish(); } criterion_group!(benches, bench_field_element); criterion_main!(benches); p384-0.13.0/benches/scalar.rs000064400000000000000000000044671046102023000136400ustar 00000000000000//! secp384r1 scalar arithmetic benchmarks use criterion::{ criterion_group, criterion_main, measurement::Measurement, BenchmarkGroup, Criterion, }; use hex_literal::hex; use p384::{elliptic_curve::group::ff::PrimeField, ProjectivePoint, Scalar}; fn test_scalar_x() -> Scalar { Scalar::from_repr( hex!("201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7ccbce3bc29449f4fb080ac97").into() ).unwrap() } fn test_scalar_y() -> Scalar { Scalar::from_repr( hex!("23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac8ba928394e01061d882c3528").into() ).unwrap() } fn bench_point_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let p = ProjectivePoint::GENERATOR; let m = test_scalar_x(); let s = Scalar::from_repr(m.into()).unwrap(); group.bench_function("point-scalar mul", |b| b.iter(|| &p * &s)); } fn bench_scalar_sub<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_scalar_x(); let y = test_scalar_y(); group.bench_function("sub", |b| b.iter(|| &x - &y)); } fn bench_scalar_add<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_scalar_x(); let y = test_scalar_y(); group.bench_function("add", |b| b.iter(|| &x + &y)); } fn bench_scalar_mul<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_scalar_x(); let y = test_scalar_y(); group.bench_function("mul", |b| b.iter(|| &x * &y)); } fn bench_scalar_negate<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_scalar_x(); group.bench_function("negate", |b| b.iter(|| -x)); } fn bench_scalar_invert<'a, M: Measurement>(group: &mut BenchmarkGroup<'a, M>) { let x = test_scalar_x(); group.bench_function("invert", |b| b.iter(|| x.invert())); } fn bench_point(c: &mut Criterion) { let mut group = c.benchmark_group("point operations"); bench_point_mul(&mut group); group.finish(); } fn bench_scalar(c: &mut Criterion) { let mut group = c.benchmark_group("scalar operations"); bench_scalar_sub(&mut group); bench_scalar_add(&mut group); bench_scalar_mul(&mut group); bench_scalar_negate(&mut group); bench_scalar_invert(&mut group); group.finish(); } criterion_group!(benches, bench_point, bench_scalar); criterion_main!(benches); p384-0.13.0/src/arithmetic/field/p384_32.rs000064400000000000000000014621231046102023000157670ustar 00000000000000#![doc = " fiat-crypto output postprocessed by fiat-constify: https://github.com/rustcrypto/utils"] #![doc = " Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Rust --inline p384 32 '2^384 - 2^128 - 2^96 + 2^32 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp"] #![doc = " curve description: p384"] #![doc = " machine_wordsize = 32 (from \"32\")"] #![doc = " requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp"] #![doc = " m = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff (from \"2^384 - 2^128 - 2^96 + 2^32 - 1\")"] #![doc = ""] #![doc = " NOTE: In addition to the bounds specified above each function, all"] #![doc = " functions synthesized for this Montgomery arithmetic require the"] #![doc = " input to be strictly less than the prime modulus (m), and also"] #![doc = " require the input to be in the unique saturated representation."] #![doc = " All functions also ensure that these two properties are true of"] #![doc = " return values."] #![doc = ""] #![doc = " Computed values:"] #![doc = " eval z = z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160)"] #![doc = " 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)"] #![doc = " twos_complement_eval z = let x1 := z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160) in"] #![doc = " if x1 & (2^384-1) < 2^383 then x1 & (2^384-1) else (x1 & (2^384-1)) - 2^384"] #![allow(unused_parens)] #![allow(non_camel_case_types)] #![allow( dead_code, rustdoc::bare_urls, rustdoc::broken_intra_doc_links, unused_assignments, unused_mut, unused_variables )] pub type fiat_p384_u1 = u8; pub type fiat_p384_i1 = i8; pub type fiat_p384_u2 = u8; pub type fiat_p384_i2 = i8; pub type fiat_p384_montgomery_domain_field_element = [u32; 12]; pub type fiat_p384_non_montgomery_domain_field_element = [u32; 12]; #[doc = " The function fiat_p384_addcarryx_u32 is an addition with carry."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 + arg2 + arg3) mod 2^32"] #[doc = " out2 = ⌊(arg1 + arg2 + arg3) / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_addcarryx_u32( arg1: fiat_p384_u1, arg2: u32, arg3: u32, ) -> (u32, fiat_p384_u1) { let mut out1: u32 = 0; let mut out2: fiat_p384_u1 = 0; let x1: u64 = (((arg1 as u64) + (arg2 as u64)) + (arg3 as u64)); let x2: u32 = ((x1 & (0xffffffff as u64)) as u32); let x3: fiat_p384_u1 = ((x1 >> 32) as fiat_p384_u1); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_subborrowx_u32 is a subtraction with borrow."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (-arg1 + arg2 + -arg3) mod 2^32"] #[doc = " out2 = -⌊(-arg1 + arg2 + -arg3) / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_subborrowx_u32( arg1: fiat_p384_u1, arg2: u32, arg3: u32, ) -> (u32, fiat_p384_u1) { let mut out1: u32 = 0; let mut out2: fiat_p384_u1 = 0; let x1: i64 = (((arg2 as i64) - (arg1 as i64)) - (arg3 as i64)); let x2: fiat_p384_i1 = ((x1 >> 32) as fiat_p384_i1); let x3: u32 = ((x1 & (0xffffffff as i64)) as u32); out1 = x3; out2 = (((0x0 as fiat_p384_i2) - (x2 as fiat_p384_i2)) as fiat_p384_u1); (out1, out2) } #[doc = " The function fiat_p384_mulx_u32 is a multiplication, returning the full double-width result."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 * arg2) mod 2^32"] #[doc = " out2 = ⌊arg1 * arg2 / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffff]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_mulx_u32(arg1: u32, arg2: u32) -> (u32, u32) { let mut out1: u32 = 0; let mut out2: u32 = 0; let x1: u64 = ((arg1 as u64) * (arg2 as u64)); let x2: u32 = ((x1 & (0xffffffff as u64)) as u32); let x3: u32 = ((x1 >> 32) as u32); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_cmovznz_u32 is a single-word conditional move."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_cmovznz_u32(arg1: fiat_p384_u1, arg2: u32, arg3: u32) -> u32 { let mut out1: u32 = 0; let x1: fiat_p384_u1 = (!(!arg1)); let x2: u32 = ((((((0x0 as fiat_p384_i2) - (x1 as fiat_p384_i2)) as fiat_p384_i1) as i64) & (0xffffffff as i64)) as u32); let x3: u32 = ((x2 & arg3) | ((!x2) & arg2)); out1 = x3; out1 } #[doc = " The function fiat_p384_mul multiplies two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_mul( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_mulx_u32(x12, (arg2[11])); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_mulx_u32(x12, (arg2[10])); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_mulx_u32(x12, (arg2[9])); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_mulx_u32(x12, (arg2[8])); let mut x21: u32 = 0; let mut x22: u32 = 0; let (x21, x22) = fiat_p384_mulx_u32(x12, (arg2[7])); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_mulx_u32(x12, (arg2[6])); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_mulx_u32(x12, (arg2[5])); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_mulx_u32(x12, (arg2[4])); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_mulx_u32(x12, (arg2[3])); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_mulx_u32(x12, (arg2[2])); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_mulx_u32(x12, (arg2[1])); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_mulx_u32(x12, (arg2[0])); let mut x37: u32 = 0; let mut x38: fiat_p384_u1 = 0; let (x37, x38) = fiat_p384_addcarryx_u32(0x0, x36, x33); let mut x39: u32 = 0; let mut x40: fiat_p384_u1 = 0; let (x39, x40) = fiat_p384_addcarryx_u32(x38, x34, x31); let mut x41: u32 = 0; let mut x42: fiat_p384_u1 = 0; let (x41, x42) = fiat_p384_addcarryx_u32(x40, x32, x29); let mut x43: u32 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_addcarryx_u32(x42, x30, x27); let mut x45: u32 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_addcarryx_u32(x44, x28, x25); let mut x47: u32 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_addcarryx_u32(x46, x26, x23); let mut x49: u32 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_addcarryx_u32(x48, x24, x21); let mut x51: u32 = 0; let mut x52: fiat_p384_u1 = 0; let (x51, x52) = fiat_p384_addcarryx_u32(x50, x22, x19); let mut x53: u32 = 0; let mut x54: fiat_p384_u1 = 0; let (x53, x54) = fiat_p384_addcarryx_u32(x52, x20, x17); let mut x55: u32 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u32(x54, x18, x15); let mut x57: u32 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u32(x56, x16, x13); let x59: u32 = ((x58 as u32) + x14); let mut x60: u32 = 0; let mut x61: u32 = 0; let (x60, x61) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x62: u32 = 0; let mut x63: u32 = 0; let (x62, x63) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x64: u32 = 0; let mut x65: u32 = 0; let (x64, x65) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x66: u32 = 0; let mut x67: u32 = 0; let (x66, x67) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x68: u32 = 0; let mut x69: u32 = 0; let (x68, x69) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x70: u32 = 0; let mut x71: u32 = 0; let (x70, x71) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x72: u32 = 0; let mut x73: u32 = 0; let (x72, x73) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x74: u32 = 0; let mut x75: u32 = 0; let (x74, x75) = fiat_p384_mulx_u32(x35, 0xfffffffe); let mut x76: u32 = 0; let mut x77: u32 = 0; let (x76, x77) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x78: u32 = 0; let mut x79: u32 = 0; let (x78, x79) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x80: u32 = 0; let mut x81: fiat_p384_u1 = 0; let (x80, x81) = fiat_p384_addcarryx_u32(0x0, x77, x74); let mut x82: u32 = 0; let mut x83: fiat_p384_u1 = 0; let (x82, x83) = fiat_p384_addcarryx_u32(x81, x75, x72); let mut x84: u32 = 0; let mut x85: fiat_p384_u1 = 0; let (x84, x85) = fiat_p384_addcarryx_u32(x83, x73, x70); let mut x86: u32 = 0; let mut x87: fiat_p384_u1 = 0; let (x86, x87) = fiat_p384_addcarryx_u32(x85, x71, x68); let mut x88: u32 = 0; let mut x89: fiat_p384_u1 = 0; let (x88, x89) = fiat_p384_addcarryx_u32(x87, x69, x66); let mut x90: u32 = 0; let mut x91: fiat_p384_u1 = 0; let (x90, x91) = fiat_p384_addcarryx_u32(x89, x67, x64); let mut x92: u32 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u32(x91, x65, x62); let mut x94: u32 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u32(x93, x63, x60); let x96: u32 = ((x95 as u32) + x61); let mut x97: u32 = 0; let mut x98: fiat_p384_u1 = 0; let (x97, x98) = fiat_p384_addcarryx_u32(0x0, x35, x78); let mut x99: u32 = 0; let mut x100: fiat_p384_u1 = 0; let (x99, x100) = fiat_p384_addcarryx_u32(x98, x37, x79); let mut x101: u32 = 0; let mut x102: fiat_p384_u1 = 0; let (x101, x102) = fiat_p384_addcarryx_u32(x100, x39, (0x0 as u32)); let mut x103: u32 = 0; let mut x104: fiat_p384_u1 = 0; let (x103, x104) = fiat_p384_addcarryx_u32(x102, x41, x76); let mut x105: u32 = 0; let mut x106: fiat_p384_u1 = 0; let (x105, x106) = fiat_p384_addcarryx_u32(x104, x43, x80); let mut x107: u32 = 0; let mut x108: fiat_p384_u1 = 0; let (x107, x108) = fiat_p384_addcarryx_u32(x106, x45, x82); let mut x109: u32 = 0; let mut x110: fiat_p384_u1 = 0; let (x109, x110) = fiat_p384_addcarryx_u32(x108, x47, x84); let mut x111: u32 = 0; let mut x112: fiat_p384_u1 = 0; let (x111, x112) = fiat_p384_addcarryx_u32(x110, x49, x86); let mut x113: u32 = 0; let mut x114: fiat_p384_u1 = 0; let (x113, x114) = fiat_p384_addcarryx_u32(x112, x51, x88); let mut x115: u32 = 0; let mut x116: fiat_p384_u1 = 0; let (x115, x116) = fiat_p384_addcarryx_u32(x114, x53, x90); let mut x117: u32 = 0; let mut x118: fiat_p384_u1 = 0; let (x117, x118) = fiat_p384_addcarryx_u32(x116, x55, x92); let mut x119: u32 = 0; let mut x120: fiat_p384_u1 = 0; let (x119, x120) = fiat_p384_addcarryx_u32(x118, x57, x94); let mut x121: u32 = 0; let mut x122: fiat_p384_u1 = 0; let (x121, x122) = fiat_p384_addcarryx_u32(x120, x59, x96); let mut x123: u32 = 0; let mut x124: u32 = 0; let (x123, x124) = fiat_p384_mulx_u32(x1, (arg2[11])); let mut x125: u32 = 0; let mut x126: u32 = 0; let (x125, x126) = fiat_p384_mulx_u32(x1, (arg2[10])); let mut x127: u32 = 0; let mut x128: u32 = 0; let (x127, x128) = fiat_p384_mulx_u32(x1, (arg2[9])); let mut x129: u32 = 0; let mut x130: u32 = 0; let (x129, x130) = fiat_p384_mulx_u32(x1, (arg2[8])); let mut x131: u32 = 0; let mut x132: u32 = 0; let (x131, x132) = fiat_p384_mulx_u32(x1, (arg2[7])); let mut x133: u32 = 0; let mut x134: u32 = 0; let (x133, x134) = fiat_p384_mulx_u32(x1, (arg2[6])); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_mulx_u32(x1, (arg2[5])); let mut x137: u32 = 0; let mut x138: u32 = 0; let (x137, x138) = fiat_p384_mulx_u32(x1, (arg2[4])); let mut x139: u32 = 0; let mut x140: u32 = 0; let (x139, x140) = fiat_p384_mulx_u32(x1, (arg2[3])); let mut x141: u32 = 0; let mut x142: u32 = 0; let (x141, x142) = fiat_p384_mulx_u32(x1, (arg2[2])); let mut x143: u32 = 0; let mut x144: u32 = 0; let (x143, x144) = fiat_p384_mulx_u32(x1, (arg2[1])); let mut x145: u32 = 0; let mut x146: u32 = 0; let (x145, x146) = fiat_p384_mulx_u32(x1, (arg2[0])); let mut x147: u32 = 0; let mut x148: fiat_p384_u1 = 0; let (x147, x148) = fiat_p384_addcarryx_u32(0x0, x146, x143); let mut x149: u32 = 0; let mut x150: fiat_p384_u1 = 0; let (x149, x150) = fiat_p384_addcarryx_u32(x148, x144, x141); let mut x151: u32 = 0; let mut x152: fiat_p384_u1 = 0; let (x151, x152) = fiat_p384_addcarryx_u32(x150, x142, x139); let mut x153: u32 = 0; let mut x154: fiat_p384_u1 = 0; let (x153, x154) = fiat_p384_addcarryx_u32(x152, x140, x137); let mut x155: u32 = 0; let mut x156: fiat_p384_u1 = 0; let (x155, x156) = fiat_p384_addcarryx_u32(x154, x138, x135); let mut x157: u32 = 0; let mut x158: fiat_p384_u1 = 0; let (x157, x158) = fiat_p384_addcarryx_u32(x156, x136, x133); let mut x159: u32 = 0; let mut x160: fiat_p384_u1 = 0; let (x159, x160) = fiat_p384_addcarryx_u32(x158, x134, x131); let mut x161: u32 = 0; let mut x162: fiat_p384_u1 = 0; let (x161, x162) = fiat_p384_addcarryx_u32(x160, x132, x129); let mut x163: u32 = 0; let mut x164: fiat_p384_u1 = 0; let (x163, x164) = fiat_p384_addcarryx_u32(x162, x130, x127); let mut x165: u32 = 0; let mut x166: fiat_p384_u1 = 0; let (x165, x166) = fiat_p384_addcarryx_u32(x164, x128, x125); let mut x167: u32 = 0; let mut x168: fiat_p384_u1 = 0; let (x167, x168) = fiat_p384_addcarryx_u32(x166, x126, x123); let x169: u32 = ((x168 as u32) + x124); let mut x170: u32 = 0; let mut x171: fiat_p384_u1 = 0; let (x170, x171) = fiat_p384_addcarryx_u32(0x0, x99, x145); let mut x172: u32 = 0; let mut x173: fiat_p384_u1 = 0; let (x172, x173) = fiat_p384_addcarryx_u32(x171, x101, x147); let mut x174: u32 = 0; let mut x175: fiat_p384_u1 = 0; let (x174, x175) = fiat_p384_addcarryx_u32(x173, x103, x149); let mut x176: u32 = 0; let mut x177: fiat_p384_u1 = 0; let (x176, x177) = fiat_p384_addcarryx_u32(x175, x105, x151); let mut x178: u32 = 0; let mut x179: fiat_p384_u1 = 0; let (x178, x179) = fiat_p384_addcarryx_u32(x177, x107, x153); let mut x180: u32 = 0; let mut x181: fiat_p384_u1 = 0; let (x180, x181) = fiat_p384_addcarryx_u32(x179, x109, x155); let mut x182: u32 = 0; let mut x183: fiat_p384_u1 = 0; let (x182, x183) = fiat_p384_addcarryx_u32(x181, x111, x157); let mut x184: u32 = 0; let mut x185: fiat_p384_u1 = 0; let (x184, x185) = fiat_p384_addcarryx_u32(x183, x113, x159); let mut x186: u32 = 0; let mut x187: fiat_p384_u1 = 0; let (x186, x187) = fiat_p384_addcarryx_u32(x185, x115, x161); let mut x188: u32 = 0; let mut x189: fiat_p384_u1 = 0; let (x188, x189) = fiat_p384_addcarryx_u32(x187, x117, x163); let mut x190: u32 = 0; let mut x191: fiat_p384_u1 = 0; let (x190, x191) = fiat_p384_addcarryx_u32(x189, x119, x165); let mut x192: u32 = 0; let mut x193: fiat_p384_u1 = 0; let (x192, x193) = fiat_p384_addcarryx_u32(x191, x121, x167); let mut x194: u32 = 0; let mut x195: fiat_p384_u1 = 0; let (x194, x195) = fiat_p384_addcarryx_u32(x193, (x122 as u32), x169); let mut x196: u32 = 0; let mut x197: u32 = 0; let (x196, x197) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x198: u32 = 0; let mut x199: u32 = 0; let (x198, x199) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x200: u32 = 0; let mut x201: u32 = 0; let (x200, x201) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x202: u32 = 0; let mut x203: u32 = 0; let (x202, x203) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x204: u32 = 0; let mut x205: u32 = 0; let (x204, x205) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x206: u32 = 0; let mut x207: u32 = 0; let (x206, x207) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x208: u32 = 0; let mut x209: u32 = 0; let (x208, x209) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x210: u32 = 0; let mut x211: u32 = 0; let (x210, x211) = fiat_p384_mulx_u32(x170, 0xfffffffe); let mut x212: u32 = 0; let mut x213: u32 = 0; let (x212, x213) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x216: u32 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u32(0x0, x213, x210); let mut x218: u32 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u32(x217, x211, x208); let mut x220: u32 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u32(x219, x209, x206); let mut x222: u32 = 0; let mut x223: fiat_p384_u1 = 0; let (x222, x223) = fiat_p384_addcarryx_u32(x221, x207, x204); let mut x224: u32 = 0; let mut x225: fiat_p384_u1 = 0; let (x224, x225) = fiat_p384_addcarryx_u32(x223, x205, x202); let mut x226: u32 = 0; let mut x227: fiat_p384_u1 = 0; let (x226, x227) = fiat_p384_addcarryx_u32(x225, x203, x200); let mut x228: u32 = 0; let mut x229: fiat_p384_u1 = 0; let (x228, x229) = fiat_p384_addcarryx_u32(x227, x201, x198); let mut x230: u32 = 0; let mut x231: fiat_p384_u1 = 0; let (x230, x231) = fiat_p384_addcarryx_u32(x229, x199, x196); let x232: u32 = ((x231 as u32) + x197); let mut x233: u32 = 0; let mut x234: fiat_p384_u1 = 0; let (x233, x234) = fiat_p384_addcarryx_u32(0x0, x170, x214); let mut x235: u32 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u32(x234, x172, x215); let mut x237: u32 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u32(x236, x174, (0x0 as u32)); let mut x239: u32 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u32(x238, x176, x212); let mut x241: u32 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u32(x240, x178, x216); let mut x243: u32 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u32(x242, x180, x218); let mut x245: u32 = 0; let mut x246: fiat_p384_u1 = 0; let (x245, x246) = fiat_p384_addcarryx_u32(x244, x182, x220); let mut x247: u32 = 0; let mut x248: fiat_p384_u1 = 0; let (x247, x248) = fiat_p384_addcarryx_u32(x246, x184, x222); let mut x249: u32 = 0; let mut x250: fiat_p384_u1 = 0; let (x249, x250) = fiat_p384_addcarryx_u32(x248, x186, x224); let mut x251: u32 = 0; let mut x252: fiat_p384_u1 = 0; let (x251, x252) = fiat_p384_addcarryx_u32(x250, x188, x226); let mut x253: u32 = 0; let mut x254: fiat_p384_u1 = 0; let (x253, x254) = fiat_p384_addcarryx_u32(x252, x190, x228); let mut x255: u32 = 0; let mut x256: fiat_p384_u1 = 0; let (x255, x256) = fiat_p384_addcarryx_u32(x254, x192, x230); let mut x257: u32 = 0; let mut x258: fiat_p384_u1 = 0; let (x257, x258) = fiat_p384_addcarryx_u32(x256, x194, x232); let x259: u32 = ((x258 as u32) + (x195 as u32)); let mut x260: u32 = 0; let mut x261: u32 = 0; let (x260, x261) = fiat_p384_mulx_u32(x2, (arg2[11])); let mut x262: u32 = 0; let mut x263: u32 = 0; let (x262, x263) = fiat_p384_mulx_u32(x2, (arg2[10])); let mut x264: u32 = 0; let mut x265: u32 = 0; let (x264, x265) = fiat_p384_mulx_u32(x2, (arg2[9])); let mut x266: u32 = 0; let mut x267: u32 = 0; let (x266, x267) = fiat_p384_mulx_u32(x2, (arg2[8])); let mut x268: u32 = 0; let mut x269: u32 = 0; let (x268, x269) = fiat_p384_mulx_u32(x2, (arg2[7])); let mut x270: u32 = 0; let mut x271: u32 = 0; let (x270, x271) = fiat_p384_mulx_u32(x2, (arg2[6])); let mut x272: u32 = 0; let mut x273: u32 = 0; let (x272, x273) = fiat_p384_mulx_u32(x2, (arg2[5])); let mut x274: u32 = 0; let mut x275: u32 = 0; let (x274, x275) = fiat_p384_mulx_u32(x2, (arg2[4])); let mut x276: u32 = 0; let mut x277: u32 = 0; let (x276, x277) = fiat_p384_mulx_u32(x2, (arg2[3])); let mut x278: u32 = 0; let mut x279: u32 = 0; let (x278, x279) = fiat_p384_mulx_u32(x2, (arg2[2])); let mut x280: u32 = 0; let mut x281: u32 = 0; let (x280, x281) = fiat_p384_mulx_u32(x2, (arg2[1])); let mut x282: u32 = 0; let mut x283: u32 = 0; let (x282, x283) = fiat_p384_mulx_u32(x2, (arg2[0])); let mut x284: u32 = 0; let mut x285: fiat_p384_u1 = 0; let (x284, x285) = fiat_p384_addcarryx_u32(0x0, x283, x280); let mut x286: u32 = 0; let mut x287: fiat_p384_u1 = 0; let (x286, x287) = fiat_p384_addcarryx_u32(x285, x281, x278); let mut x288: u32 = 0; let mut x289: fiat_p384_u1 = 0; let (x288, x289) = fiat_p384_addcarryx_u32(x287, x279, x276); let mut x290: u32 = 0; let mut x291: fiat_p384_u1 = 0; let (x290, x291) = fiat_p384_addcarryx_u32(x289, x277, x274); let mut x292: u32 = 0; let mut x293: fiat_p384_u1 = 0; let (x292, x293) = fiat_p384_addcarryx_u32(x291, x275, x272); let mut x294: u32 = 0; let mut x295: fiat_p384_u1 = 0; let (x294, x295) = fiat_p384_addcarryx_u32(x293, x273, x270); let mut x296: u32 = 0; let mut x297: fiat_p384_u1 = 0; let (x296, x297) = fiat_p384_addcarryx_u32(x295, x271, x268); let mut x298: u32 = 0; let mut x299: fiat_p384_u1 = 0; let (x298, x299) = fiat_p384_addcarryx_u32(x297, x269, x266); let mut x300: u32 = 0; let mut x301: fiat_p384_u1 = 0; let (x300, x301) = fiat_p384_addcarryx_u32(x299, x267, x264); let mut x302: u32 = 0; let mut x303: fiat_p384_u1 = 0; let (x302, x303) = fiat_p384_addcarryx_u32(x301, x265, x262); let mut x304: u32 = 0; let mut x305: fiat_p384_u1 = 0; let (x304, x305) = fiat_p384_addcarryx_u32(x303, x263, x260); let x306: u32 = ((x305 as u32) + x261); let mut x307: u32 = 0; let mut x308: fiat_p384_u1 = 0; let (x307, x308) = fiat_p384_addcarryx_u32(0x0, x235, x282); let mut x309: u32 = 0; let mut x310: fiat_p384_u1 = 0; let (x309, x310) = fiat_p384_addcarryx_u32(x308, x237, x284); let mut x311: u32 = 0; let mut x312: fiat_p384_u1 = 0; let (x311, x312) = fiat_p384_addcarryx_u32(x310, x239, x286); let mut x313: u32 = 0; let mut x314: fiat_p384_u1 = 0; let (x313, x314) = fiat_p384_addcarryx_u32(x312, x241, x288); let mut x315: u32 = 0; let mut x316: fiat_p384_u1 = 0; let (x315, x316) = fiat_p384_addcarryx_u32(x314, x243, x290); let mut x317: u32 = 0; let mut x318: fiat_p384_u1 = 0; let (x317, x318) = fiat_p384_addcarryx_u32(x316, x245, x292); let mut x319: u32 = 0; let mut x320: fiat_p384_u1 = 0; let (x319, x320) = fiat_p384_addcarryx_u32(x318, x247, x294); let mut x321: u32 = 0; let mut x322: fiat_p384_u1 = 0; let (x321, x322) = fiat_p384_addcarryx_u32(x320, x249, x296); let mut x323: u32 = 0; let mut x324: fiat_p384_u1 = 0; let (x323, x324) = fiat_p384_addcarryx_u32(x322, x251, x298); let mut x325: u32 = 0; let mut x326: fiat_p384_u1 = 0; let (x325, x326) = fiat_p384_addcarryx_u32(x324, x253, x300); let mut x327: u32 = 0; let mut x328: fiat_p384_u1 = 0; let (x327, x328) = fiat_p384_addcarryx_u32(x326, x255, x302); let mut x329: u32 = 0; let mut x330: fiat_p384_u1 = 0; let (x329, x330) = fiat_p384_addcarryx_u32(x328, x257, x304); let mut x331: u32 = 0; let mut x332: fiat_p384_u1 = 0; let (x331, x332) = fiat_p384_addcarryx_u32(x330, x259, x306); let mut x333: u32 = 0; let mut x334: u32 = 0; let (x333, x334) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x335: u32 = 0; let mut x336: u32 = 0; let (x335, x336) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x337: u32 = 0; let mut x338: u32 = 0; let (x337, x338) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x339: u32 = 0; let mut x340: u32 = 0; let (x339, x340) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x341: u32 = 0; let mut x342: u32 = 0; let (x341, x342) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x343: u32 = 0; let mut x344: u32 = 0; let (x343, x344) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x345: u32 = 0; let mut x346: u32 = 0; let (x345, x346) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x347: u32 = 0; let mut x348: u32 = 0; let (x347, x348) = fiat_p384_mulx_u32(x307, 0xfffffffe); let mut x349: u32 = 0; let mut x350: u32 = 0; let (x349, x350) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x351: u32 = 0; let mut x352: u32 = 0; let (x351, x352) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x353: u32 = 0; let mut x354: fiat_p384_u1 = 0; let (x353, x354) = fiat_p384_addcarryx_u32(0x0, x350, x347); let mut x355: u32 = 0; let mut x356: fiat_p384_u1 = 0; let (x355, x356) = fiat_p384_addcarryx_u32(x354, x348, x345); let mut x357: u32 = 0; let mut x358: fiat_p384_u1 = 0; let (x357, x358) = fiat_p384_addcarryx_u32(x356, x346, x343); let mut x359: u32 = 0; let mut x360: fiat_p384_u1 = 0; let (x359, x360) = fiat_p384_addcarryx_u32(x358, x344, x341); let mut x361: u32 = 0; let mut x362: fiat_p384_u1 = 0; let (x361, x362) = fiat_p384_addcarryx_u32(x360, x342, x339); let mut x363: u32 = 0; let mut x364: fiat_p384_u1 = 0; let (x363, x364) = fiat_p384_addcarryx_u32(x362, x340, x337); let mut x365: u32 = 0; let mut x366: fiat_p384_u1 = 0; let (x365, x366) = fiat_p384_addcarryx_u32(x364, x338, x335); let mut x367: u32 = 0; let mut x368: fiat_p384_u1 = 0; let (x367, x368) = fiat_p384_addcarryx_u32(x366, x336, x333); let x369: u32 = ((x368 as u32) + x334); let mut x370: u32 = 0; let mut x371: fiat_p384_u1 = 0; let (x370, x371) = fiat_p384_addcarryx_u32(0x0, x307, x351); let mut x372: u32 = 0; let mut x373: fiat_p384_u1 = 0; let (x372, x373) = fiat_p384_addcarryx_u32(x371, x309, x352); let mut x374: u32 = 0; let mut x375: fiat_p384_u1 = 0; let (x374, x375) = fiat_p384_addcarryx_u32(x373, x311, (0x0 as u32)); let mut x376: u32 = 0; let mut x377: fiat_p384_u1 = 0; let (x376, x377) = fiat_p384_addcarryx_u32(x375, x313, x349); let mut x378: u32 = 0; let mut x379: fiat_p384_u1 = 0; let (x378, x379) = fiat_p384_addcarryx_u32(x377, x315, x353); let mut x380: u32 = 0; let mut x381: fiat_p384_u1 = 0; let (x380, x381) = fiat_p384_addcarryx_u32(x379, x317, x355); let mut x382: u32 = 0; let mut x383: fiat_p384_u1 = 0; let (x382, x383) = fiat_p384_addcarryx_u32(x381, x319, x357); let mut x384: u32 = 0; let mut x385: fiat_p384_u1 = 0; let (x384, x385) = fiat_p384_addcarryx_u32(x383, x321, x359); let mut x386: u32 = 0; let mut x387: fiat_p384_u1 = 0; let (x386, x387) = fiat_p384_addcarryx_u32(x385, x323, x361); let mut x388: u32 = 0; let mut x389: fiat_p384_u1 = 0; let (x388, x389) = fiat_p384_addcarryx_u32(x387, x325, x363); let mut x390: u32 = 0; let mut x391: fiat_p384_u1 = 0; let (x390, x391) = fiat_p384_addcarryx_u32(x389, x327, x365); let mut x392: u32 = 0; let mut x393: fiat_p384_u1 = 0; let (x392, x393) = fiat_p384_addcarryx_u32(x391, x329, x367); let mut x394: u32 = 0; let mut x395: fiat_p384_u1 = 0; let (x394, x395) = fiat_p384_addcarryx_u32(x393, x331, x369); let x396: u32 = ((x395 as u32) + (x332 as u32)); let mut x397: u32 = 0; let mut x398: u32 = 0; let (x397, x398) = fiat_p384_mulx_u32(x3, (arg2[11])); let mut x399: u32 = 0; let mut x400: u32 = 0; let (x399, x400) = fiat_p384_mulx_u32(x3, (arg2[10])); let mut x401: u32 = 0; let mut x402: u32 = 0; let (x401, x402) = fiat_p384_mulx_u32(x3, (arg2[9])); let mut x403: u32 = 0; let mut x404: u32 = 0; let (x403, x404) = fiat_p384_mulx_u32(x3, (arg2[8])); let mut x405: u32 = 0; let mut x406: u32 = 0; let (x405, x406) = fiat_p384_mulx_u32(x3, (arg2[7])); let mut x407: u32 = 0; let mut x408: u32 = 0; let (x407, x408) = fiat_p384_mulx_u32(x3, (arg2[6])); let mut x409: u32 = 0; let mut x410: u32 = 0; let (x409, x410) = fiat_p384_mulx_u32(x3, (arg2[5])); let mut x411: u32 = 0; let mut x412: u32 = 0; let (x411, x412) = fiat_p384_mulx_u32(x3, (arg2[4])); let mut x413: u32 = 0; let mut x414: u32 = 0; let (x413, x414) = fiat_p384_mulx_u32(x3, (arg2[3])); let mut x415: u32 = 0; let mut x416: u32 = 0; let (x415, x416) = fiat_p384_mulx_u32(x3, (arg2[2])); let mut x417: u32 = 0; let mut x418: u32 = 0; let (x417, x418) = fiat_p384_mulx_u32(x3, (arg2[1])); let mut x419: u32 = 0; let mut x420: u32 = 0; let (x419, x420) = fiat_p384_mulx_u32(x3, (arg2[0])); let mut x421: u32 = 0; let mut x422: fiat_p384_u1 = 0; let (x421, x422) = fiat_p384_addcarryx_u32(0x0, x420, x417); let mut x423: u32 = 0; let mut x424: fiat_p384_u1 = 0; let (x423, x424) = fiat_p384_addcarryx_u32(x422, x418, x415); let mut x425: u32 = 0; let mut x426: fiat_p384_u1 = 0; let (x425, x426) = fiat_p384_addcarryx_u32(x424, x416, x413); let mut x427: u32 = 0; let mut x428: fiat_p384_u1 = 0; let (x427, x428) = fiat_p384_addcarryx_u32(x426, x414, x411); let mut x429: u32 = 0; let mut x430: fiat_p384_u1 = 0; let (x429, x430) = fiat_p384_addcarryx_u32(x428, x412, x409); let mut x431: u32 = 0; let mut x432: fiat_p384_u1 = 0; let (x431, x432) = fiat_p384_addcarryx_u32(x430, x410, x407); let mut x433: u32 = 0; let mut x434: fiat_p384_u1 = 0; let (x433, x434) = fiat_p384_addcarryx_u32(x432, x408, x405); let mut x435: u32 = 0; let mut x436: fiat_p384_u1 = 0; let (x435, x436) = fiat_p384_addcarryx_u32(x434, x406, x403); let mut x437: u32 = 0; let mut x438: fiat_p384_u1 = 0; let (x437, x438) = fiat_p384_addcarryx_u32(x436, x404, x401); let mut x439: u32 = 0; let mut x440: fiat_p384_u1 = 0; let (x439, x440) = fiat_p384_addcarryx_u32(x438, x402, x399); let mut x441: u32 = 0; let mut x442: fiat_p384_u1 = 0; let (x441, x442) = fiat_p384_addcarryx_u32(x440, x400, x397); let x443: u32 = ((x442 as u32) + x398); let mut x444: u32 = 0; let mut x445: fiat_p384_u1 = 0; let (x444, x445) = fiat_p384_addcarryx_u32(0x0, x372, x419); let mut x446: u32 = 0; let mut x447: fiat_p384_u1 = 0; let (x446, x447) = fiat_p384_addcarryx_u32(x445, x374, x421); let mut x448: u32 = 0; let mut x449: fiat_p384_u1 = 0; let (x448, x449) = fiat_p384_addcarryx_u32(x447, x376, x423); let mut x450: u32 = 0; let mut x451: fiat_p384_u1 = 0; let (x450, x451) = fiat_p384_addcarryx_u32(x449, x378, x425); let mut x452: u32 = 0; let mut x453: fiat_p384_u1 = 0; let (x452, x453) = fiat_p384_addcarryx_u32(x451, x380, x427); let mut x454: u32 = 0; let mut x455: fiat_p384_u1 = 0; let (x454, x455) = fiat_p384_addcarryx_u32(x453, x382, x429); let mut x456: u32 = 0; let mut x457: fiat_p384_u1 = 0; let (x456, x457) = fiat_p384_addcarryx_u32(x455, x384, x431); let mut x458: u32 = 0; let mut x459: fiat_p384_u1 = 0; let (x458, x459) = fiat_p384_addcarryx_u32(x457, x386, x433); let mut x460: u32 = 0; let mut x461: fiat_p384_u1 = 0; let (x460, x461) = fiat_p384_addcarryx_u32(x459, x388, x435); let mut x462: u32 = 0; let mut x463: fiat_p384_u1 = 0; let (x462, x463) = fiat_p384_addcarryx_u32(x461, x390, x437); let mut x464: u32 = 0; let mut x465: fiat_p384_u1 = 0; let (x464, x465) = fiat_p384_addcarryx_u32(x463, x392, x439); let mut x466: u32 = 0; let mut x467: fiat_p384_u1 = 0; let (x466, x467) = fiat_p384_addcarryx_u32(x465, x394, x441); let mut x468: u32 = 0; let mut x469: fiat_p384_u1 = 0; let (x468, x469) = fiat_p384_addcarryx_u32(x467, x396, x443); let mut x470: u32 = 0; let mut x471: u32 = 0; let (x470, x471) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x472: u32 = 0; let mut x473: u32 = 0; let (x472, x473) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x474: u32 = 0; let mut x475: u32 = 0; let (x474, x475) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x476: u32 = 0; let mut x477: u32 = 0; let (x476, x477) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x478: u32 = 0; let mut x479: u32 = 0; let (x478, x479) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x480: u32 = 0; let mut x481: u32 = 0; let (x480, x481) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x482: u32 = 0; let mut x483: u32 = 0; let (x482, x483) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x484: u32 = 0; let mut x485: u32 = 0; let (x484, x485) = fiat_p384_mulx_u32(x444, 0xfffffffe); let mut x486: u32 = 0; let mut x487: u32 = 0; let (x486, x487) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x488: u32 = 0; let mut x489: u32 = 0; let (x488, x489) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x490: u32 = 0; let mut x491: fiat_p384_u1 = 0; let (x490, x491) = fiat_p384_addcarryx_u32(0x0, x487, x484); let mut x492: u32 = 0; let mut x493: fiat_p384_u1 = 0; let (x492, x493) = fiat_p384_addcarryx_u32(x491, x485, x482); let mut x494: u32 = 0; let mut x495: fiat_p384_u1 = 0; let (x494, x495) = fiat_p384_addcarryx_u32(x493, x483, x480); let mut x496: u32 = 0; let mut x497: fiat_p384_u1 = 0; let (x496, x497) = fiat_p384_addcarryx_u32(x495, x481, x478); let mut x498: u32 = 0; let mut x499: fiat_p384_u1 = 0; let (x498, x499) = fiat_p384_addcarryx_u32(x497, x479, x476); let mut x500: u32 = 0; let mut x501: fiat_p384_u1 = 0; let (x500, x501) = fiat_p384_addcarryx_u32(x499, x477, x474); let mut x502: u32 = 0; let mut x503: fiat_p384_u1 = 0; let (x502, x503) = fiat_p384_addcarryx_u32(x501, x475, x472); let mut x504: u32 = 0; let mut x505: fiat_p384_u1 = 0; let (x504, x505) = fiat_p384_addcarryx_u32(x503, x473, x470); let x506: u32 = ((x505 as u32) + x471); let mut x507: u32 = 0; let mut x508: fiat_p384_u1 = 0; let (x507, x508) = fiat_p384_addcarryx_u32(0x0, x444, x488); let mut x509: u32 = 0; let mut x510: fiat_p384_u1 = 0; let (x509, x510) = fiat_p384_addcarryx_u32(x508, x446, x489); let mut x511: u32 = 0; let mut x512: fiat_p384_u1 = 0; let (x511, x512) = fiat_p384_addcarryx_u32(x510, x448, (0x0 as u32)); let mut x513: u32 = 0; let mut x514: fiat_p384_u1 = 0; let (x513, x514) = fiat_p384_addcarryx_u32(x512, x450, x486); let mut x515: u32 = 0; let mut x516: fiat_p384_u1 = 0; let (x515, x516) = fiat_p384_addcarryx_u32(x514, x452, x490); let mut x517: u32 = 0; let mut x518: fiat_p384_u1 = 0; let (x517, x518) = fiat_p384_addcarryx_u32(x516, x454, x492); let mut x519: u32 = 0; let mut x520: fiat_p384_u1 = 0; let (x519, x520) = fiat_p384_addcarryx_u32(x518, x456, x494); let mut x521: u32 = 0; let mut x522: fiat_p384_u1 = 0; let (x521, x522) = fiat_p384_addcarryx_u32(x520, x458, x496); let mut x523: u32 = 0; let mut x524: fiat_p384_u1 = 0; let (x523, x524) = fiat_p384_addcarryx_u32(x522, x460, x498); let mut x525: u32 = 0; let mut x526: fiat_p384_u1 = 0; let (x525, x526) = fiat_p384_addcarryx_u32(x524, x462, x500); let mut x527: u32 = 0; let mut x528: fiat_p384_u1 = 0; let (x527, x528) = fiat_p384_addcarryx_u32(x526, x464, x502); let mut x529: u32 = 0; let mut x530: fiat_p384_u1 = 0; let (x529, x530) = fiat_p384_addcarryx_u32(x528, x466, x504); let mut x531: u32 = 0; let mut x532: fiat_p384_u1 = 0; let (x531, x532) = fiat_p384_addcarryx_u32(x530, x468, x506); let x533: u32 = ((x532 as u32) + (x469 as u32)); let mut x534: u32 = 0; let mut x535: u32 = 0; let (x534, x535) = fiat_p384_mulx_u32(x4, (arg2[11])); let mut x536: u32 = 0; let mut x537: u32 = 0; let (x536, x537) = fiat_p384_mulx_u32(x4, (arg2[10])); let mut x538: u32 = 0; let mut x539: u32 = 0; let (x538, x539) = fiat_p384_mulx_u32(x4, (arg2[9])); let mut x540: u32 = 0; let mut x541: u32 = 0; let (x540, x541) = fiat_p384_mulx_u32(x4, (arg2[8])); let mut x542: u32 = 0; let mut x543: u32 = 0; let (x542, x543) = fiat_p384_mulx_u32(x4, (arg2[7])); let mut x544: u32 = 0; let mut x545: u32 = 0; let (x544, x545) = fiat_p384_mulx_u32(x4, (arg2[6])); let mut x546: u32 = 0; let mut x547: u32 = 0; let (x546, x547) = fiat_p384_mulx_u32(x4, (arg2[5])); let mut x548: u32 = 0; let mut x549: u32 = 0; let (x548, x549) = fiat_p384_mulx_u32(x4, (arg2[4])); let mut x550: u32 = 0; let mut x551: u32 = 0; let (x550, x551) = fiat_p384_mulx_u32(x4, (arg2[3])); let mut x552: u32 = 0; let mut x553: u32 = 0; let (x552, x553) = fiat_p384_mulx_u32(x4, (arg2[2])); let mut x554: u32 = 0; let mut x555: u32 = 0; let (x554, x555) = fiat_p384_mulx_u32(x4, (arg2[1])); let mut x556: u32 = 0; let mut x557: u32 = 0; let (x556, x557) = fiat_p384_mulx_u32(x4, (arg2[0])); let mut x558: u32 = 0; let mut x559: fiat_p384_u1 = 0; let (x558, x559) = fiat_p384_addcarryx_u32(0x0, x557, x554); let mut x560: u32 = 0; let mut x561: fiat_p384_u1 = 0; let (x560, x561) = fiat_p384_addcarryx_u32(x559, x555, x552); let mut x562: u32 = 0; let mut x563: fiat_p384_u1 = 0; let (x562, x563) = fiat_p384_addcarryx_u32(x561, x553, x550); let mut x564: u32 = 0; let mut x565: fiat_p384_u1 = 0; let (x564, x565) = fiat_p384_addcarryx_u32(x563, x551, x548); let mut x566: u32 = 0; let mut x567: fiat_p384_u1 = 0; let (x566, x567) = fiat_p384_addcarryx_u32(x565, x549, x546); let mut x568: u32 = 0; let mut x569: fiat_p384_u1 = 0; let (x568, x569) = fiat_p384_addcarryx_u32(x567, x547, x544); let mut x570: u32 = 0; let mut x571: fiat_p384_u1 = 0; let (x570, x571) = fiat_p384_addcarryx_u32(x569, x545, x542); let mut x572: u32 = 0; let mut x573: fiat_p384_u1 = 0; let (x572, x573) = fiat_p384_addcarryx_u32(x571, x543, x540); let mut x574: u32 = 0; let mut x575: fiat_p384_u1 = 0; let (x574, x575) = fiat_p384_addcarryx_u32(x573, x541, x538); let mut x576: u32 = 0; let mut x577: fiat_p384_u1 = 0; let (x576, x577) = fiat_p384_addcarryx_u32(x575, x539, x536); let mut x578: u32 = 0; let mut x579: fiat_p384_u1 = 0; let (x578, x579) = fiat_p384_addcarryx_u32(x577, x537, x534); let x580: u32 = ((x579 as u32) + x535); let mut x581: u32 = 0; let mut x582: fiat_p384_u1 = 0; let (x581, x582) = fiat_p384_addcarryx_u32(0x0, x509, x556); let mut x583: u32 = 0; let mut x584: fiat_p384_u1 = 0; let (x583, x584) = fiat_p384_addcarryx_u32(x582, x511, x558); let mut x585: u32 = 0; let mut x586: fiat_p384_u1 = 0; let (x585, x586) = fiat_p384_addcarryx_u32(x584, x513, x560); let mut x587: u32 = 0; let mut x588: fiat_p384_u1 = 0; let (x587, x588) = fiat_p384_addcarryx_u32(x586, x515, x562); let mut x589: u32 = 0; let mut x590: fiat_p384_u1 = 0; let (x589, x590) = fiat_p384_addcarryx_u32(x588, x517, x564); let mut x591: u32 = 0; let mut x592: fiat_p384_u1 = 0; let (x591, x592) = fiat_p384_addcarryx_u32(x590, x519, x566); let mut x593: u32 = 0; let mut x594: fiat_p384_u1 = 0; let (x593, x594) = fiat_p384_addcarryx_u32(x592, x521, x568); let mut x595: u32 = 0; let mut x596: fiat_p384_u1 = 0; let (x595, x596) = fiat_p384_addcarryx_u32(x594, x523, x570); let mut x597: u32 = 0; let mut x598: fiat_p384_u1 = 0; let (x597, x598) = fiat_p384_addcarryx_u32(x596, x525, x572); let mut x599: u32 = 0; let mut x600: fiat_p384_u1 = 0; let (x599, x600) = fiat_p384_addcarryx_u32(x598, x527, x574); let mut x601: u32 = 0; let mut x602: fiat_p384_u1 = 0; let (x601, x602) = fiat_p384_addcarryx_u32(x600, x529, x576); let mut x603: u32 = 0; let mut x604: fiat_p384_u1 = 0; let (x603, x604) = fiat_p384_addcarryx_u32(x602, x531, x578); let mut x605: u32 = 0; let mut x606: fiat_p384_u1 = 0; let (x605, x606) = fiat_p384_addcarryx_u32(x604, x533, x580); let mut x607: u32 = 0; let mut x608: u32 = 0; let (x607, x608) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x609: u32 = 0; let mut x610: u32 = 0; let (x609, x610) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x611: u32 = 0; let mut x612: u32 = 0; let (x611, x612) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x613: u32 = 0; let mut x614: u32 = 0; let (x613, x614) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x615: u32 = 0; let mut x616: u32 = 0; let (x615, x616) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x617: u32 = 0; let mut x618: u32 = 0; let (x617, x618) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x619: u32 = 0; let mut x620: u32 = 0; let (x619, x620) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x621: u32 = 0; let mut x622: u32 = 0; let (x621, x622) = fiat_p384_mulx_u32(x581, 0xfffffffe); let mut x623: u32 = 0; let mut x624: u32 = 0; let (x623, x624) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x625: u32 = 0; let mut x626: u32 = 0; let (x625, x626) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x627: u32 = 0; let mut x628: fiat_p384_u1 = 0; let (x627, x628) = fiat_p384_addcarryx_u32(0x0, x624, x621); let mut x629: u32 = 0; let mut x630: fiat_p384_u1 = 0; let (x629, x630) = fiat_p384_addcarryx_u32(x628, x622, x619); let mut x631: u32 = 0; let mut x632: fiat_p384_u1 = 0; let (x631, x632) = fiat_p384_addcarryx_u32(x630, x620, x617); let mut x633: u32 = 0; let mut x634: fiat_p384_u1 = 0; let (x633, x634) = fiat_p384_addcarryx_u32(x632, x618, x615); let mut x635: u32 = 0; let mut x636: fiat_p384_u1 = 0; let (x635, x636) = fiat_p384_addcarryx_u32(x634, x616, x613); let mut x637: u32 = 0; let mut x638: fiat_p384_u1 = 0; let (x637, x638) = fiat_p384_addcarryx_u32(x636, x614, x611); let mut x639: u32 = 0; let mut x640: fiat_p384_u1 = 0; let (x639, x640) = fiat_p384_addcarryx_u32(x638, x612, x609); let mut x641: u32 = 0; let mut x642: fiat_p384_u1 = 0; let (x641, x642) = fiat_p384_addcarryx_u32(x640, x610, x607); let x643: u32 = ((x642 as u32) + x608); let mut x644: u32 = 0; let mut x645: fiat_p384_u1 = 0; let (x644, x645) = fiat_p384_addcarryx_u32(0x0, x581, x625); let mut x646: u32 = 0; let mut x647: fiat_p384_u1 = 0; let (x646, x647) = fiat_p384_addcarryx_u32(x645, x583, x626); let mut x648: u32 = 0; let mut x649: fiat_p384_u1 = 0; let (x648, x649) = fiat_p384_addcarryx_u32(x647, x585, (0x0 as u32)); let mut x650: u32 = 0; let mut x651: fiat_p384_u1 = 0; let (x650, x651) = fiat_p384_addcarryx_u32(x649, x587, x623); let mut x652: u32 = 0; let mut x653: fiat_p384_u1 = 0; let (x652, x653) = fiat_p384_addcarryx_u32(x651, x589, x627); let mut x654: u32 = 0; let mut x655: fiat_p384_u1 = 0; let (x654, x655) = fiat_p384_addcarryx_u32(x653, x591, x629); let mut x656: u32 = 0; let mut x657: fiat_p384_u1 = 0; let (x656, x657) = fiat_p384_addcarryx_u32(x655, x593, x631); let mut x658: u32 = 0; let mut x659: fiat_p384_u1 = 0; let (x658, x659) = fiat_p384_addcarryx_u32(x657, x595, x633); let mut x660: u32 = 0; let mut x661: fiat_p384_u1 = 0; let (x660, x661) = fiat_p384_addcarryx_u32(x659, x597, x635); let mut x662: u32 = 0; let mut x663: fiat_p384_u1 = 0; let (x662, x663) = fiat_p384_addcarryx_u32(x661, x599, x637); let mut x664: u32 = 0; let mut x665: fiat_p384_u1 = 0; let (x664, x665) = fiat_p384_addcarryx_u32(x663, x601, x639); let mut x666: u32 = 0; let mut x667: fiat_p384_u1 = 0; let (x666, x667) = fiat_p384_addcarryx_u32(x665, x603, x641); let mut x668: u32 = 0; let mut x669: fiat_p384_u1 = 0; let (x668, x669) = fiat_p384_addcarryx_u32(x667, x605, x643); let x670: u32 = ((x669 as u32) + (x606 as u32)); let mut x671: u32 = 0; let mut x672: u32 = 0; let (x671, x672) = fiat_p384_mulx_u32(x5, (arg2[11])); let mut x673: u32 = 0; let mut x674: u32 = 0; let (x673, x674) = fiat_p384_mulx_u32(x5, (arg2[10])); let mut x675: u32 = 0; let mut x676: u32 = 0; let (x675, x676) = fiat_p384_mulx_u32(x5, (arg2[9])); let mut x677: u32 = 0; let mut x678: u32 = 0; let (x677, x678) = fiat_p384_mulx_u32(x5, (arg2[8])); let mut x679: u32 = 0; let mut x680: u32 = 0; let (x679, x680) = fiat_p384_mulx_u32(x5, (arg2[7])); let mut x681: u32 = 0; let mut x682: u32 = 0; let (x681, x682) = fiat_p384_mulx_u32(x5, (arg2[6])); let mut x683: u32 = 0; let mut x684: u32 = 0; let (x683, x684) = fiat_p384_mulx_u32(x5, (arg2[5])); let mut x685: u32 = 0; let mut x686: u32 = 0; let (x685, x686) = fiat_p384_mulx_u32(x5, (arg2[4])); let mut x687: u32 = 0; let mut x688: u32 = 0; let (x687, x688) = fiat_p384_mulx_u32(x5, (arg2[3])); let mut x689: u32 = 0; let mut x690: u32 = 0; let (x689, x690) = fiat_p384_mulx_u32(x5, (arg2[2])); let mut x691: u32 = 0; let mut x692: u32 = 0; let (x691, x692) = fiat_p384_mulx_u32(x5, (arg2[1])); let mut x693: u32 = 0; let mut x694: u32 = 0; let (x693, x694) = fiat_p384_mulx_u32(x5, (arg2[0])); let mut x695: u32 = 0; let mut x696: fiat_p384_u1 = 0; let (x695, x696) = fiat_p384_addcarryx_u32(0x0, x694, x691); let mut x697: u32 = 0; let mut x698: fiat_p384_u1 = 0; let (x697, x698) = fiat_p384_addcarryx_u32(x696, x692, x689); let mut x699: u32 = 0; let mut x700: fiat_p384_u1 = 0; let (x699, x700) = fiat_p384_addcarryx_u32(x698, x690, x687); let mut x701: u32 = 0; let mut x702: fiat_p384_u1 = 0; let (x701, x702) = fiat_p384_addcarryx_u32(x700, x688, x685); let mut x703: u32 = 0; let mut x704: fiat_p384_u1 = 0; let (x703, x704) = fiat_p384_addcarryx_u32(x702, x686, x683); let mut x705: u32 = 0; let mut x706: fiat_p384_u1 = 0; let (x705, x706) = fiat_p384_addcarryx_u32(x704, x684, x681); let mut x707: u32 = 0; let mut x708: fiat_p384_u1 = 0; let (x707, x708) = fiat_p384_addcarryx_u32(x706, x682, x679); let mut x709: u32 = 0; let mut x710: fiat_p384_u1 = 0; let (x709, x710) = fiat_p384_addcarryx_u32(x708, x680, x677); let mut x711: u32 = 0; let mut x712: fiat_p384_u1 = 0; let (x711, x712) = fiat_p384_addcarryx_u32(x710, x678, x675); let mut x713: u32 = 0; let mut x714: fiat_p384_u1 = 0; let (x713, x714) = fiat_p384_addcarryx_u32(x712, x676, x673); let mut x715: u32 = 0; let mut x716: fiat_p384_u1 = 0; let (x715, x716) = fiat_p384_addcarryx_u32(x714, x674, x671); let x717: u32 = ((x716 as u32) + x672); let mut x718: u32 = 0; let mut x719: fiat_p384_u1 = 0; let (x718, x719) = fiat_p384_addcarryx_u32(0x0, x646, x693); let mut x720: u32 = 0; let mut x721: fiat_p384_u1 = 0; let (x720, x721) = fiat_p384_addcarryx_u32(x719, x648, x695); let mut x722: u32 = 0; let mut x723: fiat_p384_u1 = 0; let (x722, x723) = fiat_p384_addcarryx_u32(x721, x650, x697); let mut x724: u32 = 0; let mut x725: fiat_p384_u1 = 0; let (x724, x725) = fiat_p384_addcarryx_u32(x723, x652, x699); let mut x726: u32 = 0; let mut x727: fiat_p384_u1 = 0; let (x726, x727) = fiat_p384_addcarryx_u32(x725, x654, x701); let mut x728: u32 = 0; let mut x729: fiat_p384_u1 = 0; let (x728, x729) = fiat_p384_addcarryx_u32(x727, x656, x703); let mut x730: u32 = 0; let mut x731: fiat_p384_u1 = 0; let (x730, x731) = fiat_p384_addcarryx_u32(x729, x658, x705); let mut x732: u32 = 0; let mut x733: fiat_p384_u1 = 0; let (x732, x733) = fiat_p384_addcarryx_u32(x731, x660, x707); let mut x734: u32 = 0; let mut x735: fiat_p384_u1 = 0; let (x734, x735) = fiat_p384_addcarryx_u32(x733, x662, x709); let mut x736: u32 = 0; let mut x737: fiat_p384_u1 = 0; let (x736, x737) = fiat_p384_addcarryx_u32(x735, x664, x711); let mut x738: u32 = 0; let mut x739: fiat_p384_u1 = 0; let (x738, x739) = fiat_p384_addcarryx_u32(x737, x666, x713); let mut x740: u32 = 0; let mut x741: fiat_p384_u1 = 0; let (x740, x741) = fiat_p384_addcarryx_u32(x739, x668, x715); let mut x742: u32 = 0; let mut x743: fiat_p384_u1 = 0; let (x742, x743) = fiat_p384_addcarryx_u32(x741, x670, x717); let mut x744: u32 = 0; let mut x745: u32 = 0; let (x744, x745) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x746: u32 = 0; let mut x747: u32 = 0; let (x746, x747) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x748: u32 = 0; let mut x749: u32 = 0; let (x748, x749) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x750: u32 = 0; let mut x751: u32 = 0; let (x750, x751) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x752: u32 = 0; let mut x753: u32 = 0; let (x752, x753) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x754: u32 = 0; let mut x755: u32 = 0; let (x754, x755) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x756: u32 = 0; let mut x757: u32 = 0; let (x756, x757) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x758: u32 = 0; let mut x759: u32 = 0; let (x758, x759) = fiat_p384_mulx_u32(x718, 0xfffffffe); let mut x760: u32 = 0; let mut x761: u32 = 0; let (x760, x761) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x762: u32 = 0; let mut x763: u32 = 0; let (x762, x763) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x764: u32 = 0; let mut x765: fiat_p384_u1 = 0; let (x764, x765) = fiat_p384_addcarryx_u32(0x0, x761, x758); let mut x766: u32 = 0; let mut x767: fiat_p384_u1 = 0; let (x766, x767) = fiat_p384_addcarryx_u32(x765, x759, x756); let mut x768: u32 = 0; let mut x769: fiat_p384_u1 = 0; let (x768, x769) = fiat_p384_addcarryx_u32(x767, x757, x754); let mut x770: u32 = 0; let mut x771: fiat_p384_u1 = 0; let (x770, x771) = fiat_p384_addcarryx_u32(x769, x755, x752); let mut x772: u32 = 0; let mut x773: fiat_p384_u1 = 0; let (x772, x773) = fiat_p384_addcarryx_u32(x771, x753, x750); let mut x774: u32 = 0; let mut x775: fiat_p384_u1 = 0; let (x774, x775) = fiat_p384_addcarryx_u32(x773, x751, x748); let mut x776: u32 = 0; let mut x777: fiat_p384_u1 = 0; let (x776, x777) = fiat_p384_addcarryx_u32(x775, x749, x746); let mut x778: u32 = 0; let mut x779: fiat_p384_u1 = 0; let (x778, x779) = fiat_p384_addcarryx_u32(x777, x747, x744); let x780: u32 = ((x779 as u32) + x745); let mut x781: u32 = 0; let mut x782: fiat_p384_u1 = 0; let (x781, x782) = fiat_p384_addcarryx_u32(0x0, x718, x762); let mut x783: u32 = 0; let mut x784: fiat_p384_u1 = 0; let (x783, x784) = fiat_p384_addcarryx_u32(x782, x720, x763); let mut x785: u32 = 0; let mut x786: fiat_p384_u1 = 0; let (x785, x786) = fiat_p384_addcarryx_u32(x784, x722, (0x0 as u32)); let mut x787: u32 = 0; let mut x788: fiat_p384_u1 = 0; let (x787, x788) = fiat_p384_addcarryx_u32(x786, x724, x760); let mut x789: u32 = 0; let mut x790: fiat_p384_u1 = 0; let (x789, x790) = fiat_p384_addcarryx_u32(x788, x726, x764); let mut x791: u32 = 0; let mut x792: fiat_p384_u1 = 0; let (x791, x792) = fiat_p384_addcarryx_u32(x790, x728, x766); let mut x793: u32 = 0; let mut x794: fiat_p384_u1 = 0; let (x793, x794) = fiat_p384_addcarryx_u32(x792, x730, x768); let mut x795: u32 = 0; let mut x796: fiat_p384_u1 = 0; let (x795, x796) = fiat_p384_addcarryx_u32(x794, x732, x770); let mut x797: u32 = 0; let mut x798: fiat_p384_u1 = 0; let (x797, x798) = fiat_p384_addcarryx_u32(x796, x734, x772); let mut x799: u32 = 0; let mut x800: fiat_p384_u1 = 0; let (x799, x800) = fiat_p384_addcarryx_u32(x798, x736, x774); let mut x801: u32 = 0; let mut x802: fiat_p384_u1 = 0; let (x801, x802) = fiat_p384_addcarryx_u32(x800, x738, x776); let mut x803: u32 = 0; let mut x804: fiat_p384_u1 = 0; let (x803, x804) = fiat_p384_addcarryx_u32(x802, x740, x778); let mut x805: u32 = 0; let mut x806: fiat_p384_u1 = 0; let (x805, x806) = fiat_p384_addcarryx_u32(x804, x742, x780); let x807: u32 = ((x806 as u32) + (x743 as u32)); let mut x808: u32 = 0; let mut x809: u32 = 0; let (x808, x809) = fiat_p384_mulx_u32(x6, (arg2[11])); let mut x810: u32 = 0; let mut x811: u32 = 0; let (x810, x811) = fiat_p384_mulx_u32(x6, (arg2[10])); let mut x812: u32 = 0; let mut x813: u32 = 0; let (x812, x813) = fiat_p384_mulx_u32(x6, (arg2[9])); let mut x814: u32 = 0; let mut x815: u32 = 0; let (x814, x815) = fiat_p384_mulx_u32(x6, (arg2[8])); let mut x816: u32 = 0; let mut x817: u32 = 0; let (x816, x817) = fiat_p384_mulx_u32(x6, (arg2[7])); let mut x818: u32 = 0; let mut x819: u32 = 0; let (x818, x819) = fiat_p384_mulx_u32(x6, (arg2[6])); let mut x820: u32 = 0; let mut x821: u32 = 0; let (x820, x821) = fiat_p384_mulx_u32(x6, (arg2[5])); let mut x822: u32 = 0; let mut x823: u32 = 0; let (x822, x823) = fiat_p384_mulx_u32(x6, (arg2[4])); let mut x824: u32 = 0; let mut x825: u32 = 0; let (x824, x825) = fiat_p384_mulx_u32(x6, (arg2[3])); let mut x826: u32 = 0; let mut x827: u32 = 0; let (x826, x827) = fiat_p384_mulx_u32(x6, (arg2[2])); let mut x828: u32 = 0; let mut x829: u32 = 0; let (x828, x829) = fiat_p384_mulx_u32(x6, (arg2[1])); let mut x830: u32 = 0; let mut x831: u32 = 0; let (x830, x831) = fiat_p384_mulx_u32(x6, (arg2[0])); let mut x832: u32 = 0; let mut x833: fiat_p384_u1 = 0; let (x832, x833) = fiat_p384_addcarryx_u32(0x0, x831, x828); let mut x834: u32 = 0; let mut x835: fiat_p384_u1 = 0; let (x834, x835) = fiat_p384_addcarryx_u32(x833, x829, x826); let mut x836: u32 = 0; let mut x837: fiat_p384_u1 = 0; let (x836, x837) = fiat_p384_addcarryx_u32(x835, x827, x824); let mut x838: u32 = 0; let mut x839: fiat_p384_u1 = 0; let (x838, x839) = fiat_p384_addcarryx_u32(x837, x825, x822); let mut x840: u32 = 0; let mut x841: fiat_p384_u1 = 0; let (x840, x841) = fiat_p384_addcarryx_u32(x839, x823, x820); let mut x842: u32 = 0; let mut x843: fiat_p384_u1 = 0; let (x842, x843) = fiat_p384_addcarryx_u32(x841, x821, x818); let mut x844: u32 = 0; let mut x845: fiat_p384_u1 = 0; let (x844, x845) = fiat_p384_addcarryx_u32(x843, x819, x816); let mut x846: u32 = 0; let mut x847: fiat_p384_u1 = 0; let (x846, x847) = fiat_p384_addcarryx_u32(x845, x817, x814); let mut x848: u32 = 0; let mut x849: fiat_p384_u1 = 0; let (x848, x849) = fiat_p384_addcarryx_u32(x847, x815, x812); let mut x850: u32 = 0; let mut x851: fiat_p384_u1 = 0; let (x850, x851) = fiat_p384_addcarryx_u32(x849, x813, x810); let mut x852: u32 = 0; let mut x853: fiat_p384_u1 = 0; let (x852, x853) = fiat_p384_addcarryx_u32(x851, x811, x808); let x854: u32 = ((x853 as u32) + x809); let mut x855: u32 = 0; let mut x856: fiat_p384_u1 = 0; let (x855, x856) = fiat_p384_addcarryx_u32(0x0, x783, x830); let mut x857: u32 = 0; let mut x858: fiat_p384_u1 = 0; let (x857, x858) = fiat_p384_addcarryx_u32(x856, x785, x832); let mut x859: u32 = 0; let mut x860: fiat_p384_u1 = 0; let (x859, x860) = fiat_p384_addcarryx_u32(x858, x787, x834); let mut x861: u32 = 0; let mut x862: fiat_p384_u1 = 0; let (x861, x862) = fiat_p384_addcarryx_u32(x860, x789, x836); let mut x863: u32 = 0; let mut x864: fiat_p384_u1 = 0; let (x863, x864) = fiat_p384_addcarryx_u32(x862, x791, x838); let mut x865: u32 = 0; let mut x866: fiat_p384_u1 = 0; let (x865, x866) = fiat_p384_addcarryx_u32(x864, x793, x840); let mut x867: u32 = 0; let mut x868: fiat_p384_u1 = 0; let (x867, x868) = fiat_p384_addcarryx_u32(x866, x795, x842); let mut x869: u32 = 0; let mut x870: fiat_p384_u1 = 0; let (x869, x870) = fiat_p384_addcarryx_u32(x868, x797, x844); let mut x871: u32 = 0; let mut x872: fiat_p384_u1 = 0; let (x871, x872) = fiat_p384_addcarryx_u32(x870, x799, x846); let mut x873: u32 = 0; let mut x874: fiat_p384_u1 = 0; let (x873, x874) = fiat_p384_addcarryx_u32(x872, x801, x848); let mut x875: u32 = 0; let mut x876: fiat_p384_u1 = 0; let (x875, x876) = fiat_p384_addcarryx_u32(x874, x803, x850); let mut x877: u32 = 0; let mut x878: fiat_p384_u1 = 0; let (x877, x878) = fiat_p384_addcarryx_u32(x876, x805, x852); let mut x879: u32 = 0; let mut x880: fiat_p384_u1 = 0; let (x879, x880) = fiat_p384_addcarryx_u32(x878, x807, x854); let mut x881: u32 = 0; let mut x882: u32 = 0; let (x881, x882) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x883: u32 = 0; let mut x884: u32 = 0; let (x883, x884) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x885: u32 = 0; let mut x886: u32 = 0; let (x885, x886) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x887: u32 = 0; let mut x888: u32 = 0; let (x887, x888) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x889: u32 = 0; let mut x890: u32 = 0; let (x889, x890) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x891: u32 = 0; let mut x892: u32 = 0; let (x891, x892) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x893: u32 = 0; let mut x894: u32 = 0; let (x893, x894) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x895: u32 = 0; let mut x896: u32 = 0; let (x895, x896) = fiat_p384_mulx_u32(x855, 0xfffffffe); let mut x897: u32 = 0; let mut x898: u32 = 0; let (x897, x898) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x899: u32 = 0; let mut x900: u32 = 0; let (x899, x900) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x901: u32 = 0; let mut x902: fiat_p384_u1 = 0; let (x901, x902) = fiat_p384_addcarryx_u32(0x0, x898, x895); let mut x903: u32 = 0; let mut x904: fiat_p384_u1 = 0; let (x903, x904) = fiat_p384_addcarryx_u32(x902, x896, x893); let mut x905: u32 = 0; let mut x906: fiat_p384_u1 = 0; let (x905, x906) = fiat_p384_addcarryx_u32(x904, x894, x891); let mut x907: u32 = 0; let mut x908: fiat_p384_u1 = 0; let (x907, x908) = fiat_p384_addcarryx_u32(x906, x892, x889); let mut x909: u32 = 0; let mut x910: fiat_p384_u1 = 0; let (x909, x910) = fiat_p384_addcarryx_u32(x908, x890, x887); let mut x911: u32 = 0; let mut x912: fiat_p384_u1 = 0; let (x911, x912) = fiat_p384_addcarryx_u32(x910, x888, x885); let mut x913: u32 = 0; let mut x914: fiat_p384_u1 = 0; let (x913, x914) = fiat_p384_addcarryx_u32(x912, x886, x883); let mut x915: u32 = 0; let mut x916: fiat_p384_u1 = 0; let (x915, x916) = fiat_p384_addcarryx_u32(x914, x884, x881); let x917: u32 = ((x916 as u32) + x882); let mut x918: u32 = 0; let mut x919: fiat_p384_u1 = 0; let (x918, x919) = fiat_p384_addcarryx_u32(0x0, x855, x899); let mut x920: u32 = 0; let mut x921: fiat_p384_u1 = 0; let (x920, x921) = fiat_p384_addcarryx_u32(x919, x857, x900); let mut x922: u32 = 0; let mut x923: fiat_p384_u1 = 0; let (x922, x923) = fiat_p384_addcarryx_u32(x921, x859, (0x0 as u32)); let mut x924: u32 = 0; let mut x925: fiat_p384_u1 = 0; let (x924, x925) = fiat_p384_addcarryx_u32(x923, x861, x897); let mut x926: u32 = 0; let mut x927: fiat_p384_u1 = 0; let (x926, x927) = fiat_p384_addcarryx_u32(x925, x863, x901); let mut x928: u32 = 0; let mut x929: fiat_p384_u1 = 0; let (x928, x929) = fiat_p384_addcarryx_u32(x927, x865, x903); let mut x930: u32 = 0; let mut x931: fiat_p384_u1 = 0; let (x930, x931) = fiat_p384_addcarryx_u32(x929, x867, x905); let mut x932: u32 = 0; let mut x933: fiat_p384_u1 = 0; let (x932, x933) = fiat_p384_addcarryx_u32(x931, x869, x907); let mut x934: u32 = 0; let mut x935: fiat_p384_u1 = 0; let (x934, x935) = fiat_p384_addcarryx_u32(x933, x871, x909); let mut x936: u32 = 0; let mut x937: fiat_p384_u1 = 0; let (x936, x937) = fiat_p384_addcarryx_u32(x935, x873, x911); let mut x938: u32 = 0; let mut x939: fiat_p384_u1 = 0; let (x938, x939) = fiat_p384_addcarryx_u32(x937, x875, x913); let mut x940: u32 = 0; let mut x941: fiat_p384_u1 = 0; let (x940, x941) = fiat_p384_addcarryx_u32(x939, x877, x915); let mut x942: u32 = 0; let mut x943: fiat_p384_u1 = 0; let (x942, x943) = fiat_p384_addcarryx_u32(x941, x879, x917); let x944: u32 = ((x943 as u32) + (x880 as u32)); let mut x945: u32 = 0; let mut x946: u32 = 0; let (x945, x946) = fiat_p384_mulx_u32(x7, (arg2[11])); let mut x947: u32 = 0; let mut x948: u32 = 0; let (x947, x948) = fiat_p384_mulx_u32(x7, (arg2[10])); let mut x949: u32 = 0; let mut x950: u32 = 0; let (x949, x950) = fiat_p384_mulx_u32(x7, (arg2[9])); let mut x951: u32 = 0; let mut x952: u32 = 0; let (x951, x952) = fiat_p384_mulx_u32(x7, (arg2[8])); let mut x953: u32 = 0; let mut x954: u32 = 0; let (x953, x954) = fiat_p384_mulx_u32(x7, (arg2[7])); let mut x955: u32 = 0; let mut x956: u32 = 0; let (x955, x956) = fiat_p384_mulx_u32(x7, (arg2[6])); let mut x957: u32 = 0; let mut x958: u32 = 0; let (x957, x958) = fiat_p384_mulx_u32(x7, (arg2[5])); let mut x959: u32 = 0; let mut x960: u32 = 0; let (x959, x960) = fiat_p384_mulx_u32(x7, (arg2[4])); let mut x961: u32 = 0; let mut x962: u32 = 0; let (x961, x962) = fiat_p384_mulx_u32(x7, (arg2[3])); let mut x963: u32 = 0; let mut x964: u32 = 0; let (x963, x964) = fiat_p384_mulx_u32(x7, (arg2[2])); let mut x965: u32 = 0; let mut x966: u32 = 0; let (x965, x966) = fiat_p384_mulx_u32(x7, (arg2[1])); let mut x967: u32 = 0; let mut x968: u32 = 0; let (x967, x968) = fiat_p384_mulx_u32(x7, (arg2[0])); let mut x969: u32 = 0; let mut x970: fiat_p384_u1 = 0; let (x969, x970) = fiat_p384_addcarryx_u32(0x0, x968, x965); let mut x971: u32 = 0; let mut x972: fiat_p384_u1 = 0; let (x971, x972) = fiat_p384_addcarryx_u32(x970, x966, x963); let mut x973: u32 = 0; let mut x974: fiat_p384_u1 = 0; let (x973, x974) = fiat_p384_addcarryx_u32(x972, x964, x961); let mut x975: u32 = 0; let mut x976: fiat_p384_u1 = 0; let (x975, x976) = fiat_p384_addcarryx_u32(x974, x962, x959); let mut x977: u32 = 0; let mut x978: fiat_p384_u1 = 0; let (x977, x978) = fiat_p384_addcarryx_u32(x976, x960, x957); let mut x979: u32 = 0; let mut x980: fiat_p384_u1 = 0; let (x979, x980) = fiat_p384_addcarryx_u32(x978, x958, x955); let mut x981: u32 = 0; let mut x982: fiat_p384_u1 = 0; let (x981, x982) = fiat_p384_addcarryx_u32(x980, x956, x953); let mut x983: u32 = 0; let mut x984: fiat_p384_u1 = 0; let (x983, x984) = fiat_p384_addcarryx_u32(x982, x954, x951); let mut x985: u32 = 0; let mut x986: fiat_p384_u1 = 0; let (x985, x986) = fiat_p384_addcarryx_u32(x984, x952, x949); let mut x987: u32 = 0; let mut x988: fiat_p384_u1 = 0; let (x987, x988) = fiat_p384_addcarryx_u32(x986, x950, x947); let mut x989: u32 = 0; let mut x990: fiat_p384_u1 = 0; let (x989, x990) = fiat_p384_addcarryx_u32(x988, x948, x945); let x991: u32 = ((x990 as u32) + x946); let mut x992: u32 = 0; let mut x993: fiat_p384_u1 = 0; let (x992, x993) = fiat_p384_addcarryx_u32(0x0, x920, x967); let mut x994: u32 = 0; let mut x995: fiat_p384_u1 = 0; let (x994, x995) = fiat_p384_addcarryx_u32(x993, x922, x969); let mut x996: u32 = 0; let mut x997: fiat_p384_u1 = 0; let (x996, x997) = fiat_p384_addcarryx_u32(x995, x924, x971); let mut x998: u32 = 0; let mut x999: fiat_p384_u1 = 0; let (x998, x999) = fiat_p384_addcarryx_u32(x997, x926, x973); let mut x1000: u32 = 0; let mut x1001: fiat_p384_u1 = 0; let (x1000, x1001) = fiat_p384_addcarryx_u32(x999, x928, x975); let mut x1002: u32 = 0; let mut x1003: fiat_p384_u1 = 0; let (x1002, x1003) = fiat_p384_addcarryx_u32(x1001, x930, x977); let mut x1004: u32 = 0; let mut x1005: fiat_p384_u1 = 0; let (x1004, x1005) = fiat_p384_addcarryx_u32(x1003, x932, x979); let mut x1006: u32 = 0; let mut x1007: fiat_p384_u1 = 0; let (x1006, x1007) = fiat_p384_addcarryx_u32(x1005, x934, x981); let mut x1008: u32 = 0; let mut x1009: fiat_p384_u1 = 0; let (x1008, x1009) = fiat_p384_addcarryx_u32(x1007, x936, x983); let mut x1010: u32 = 0; let mut x1011: fiat_p384_u1 = 0; let (x1010, x1011) = fiat_p384_addcarryx_u32(x1009, x938, x985); let mut x1012: u32 = 0; let mut x1013: fiat_p384_u1 = 0; let (x1012, x1013) = fiat_p384_addcarryx_u32(x1011, x940, x987); let mut x1014: u32 = 0; let mut x1015: fiat_p384_u1 = 0; let (x1014, x1015) = fiat_p384_addcarryx_u32(x1013, x942, x989); let mut x1016: u32 = 0; let mut x1017: fiat_p384_u1 = 0; let (x1016, x1017) = fiat_p384_addcarryx_u32(x1015, x944, x991); let mut x1018: u32 = 0; let mut x1019: u32 = 0; let (x1018, x1019) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1020: u32 = 0; let mut x1021: u32 = 0; let (x1020, x1021) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1022: u32 = 0; let mut x1023: u32 = 0; let (x1022, x1023) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1024: u32 = 0; let mut x1025: u32 = 0; let (x1024, x1025) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1026: u32 = 0; let mut x1027: u32 = 0; let (x1026, x1027) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1028: u32 = 0; let mut x1029: u32 = 0; let (x1028, x1029) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1030: u32 = 0; let mut x1031: u32 = 0; let (x1030, x1031) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1032: u32 = 0; let mut x1033: u32 = 0; let (x1032, x1033) = fiat_p384_mulx_u32(x992, 0xfffffffe); let mut x1034: u32 = 0; let mut x1035: u32 = 0; let (x1034, x1035) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1036: u32 = 0; let mut x1037: u32 = 0; let (x1036, x1037) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1038: u32 = 0; let mut x1039: fiat_p384_u1 = 0; let (x1038, x1039) = fiat_p384_addcarryx_u32(0x0, x1035, x1032); let mut x1040: u32 = 0; let mut x1041: fiat_p384_u1 = 0; let (x1040, x1041) = fiat_p384_addcarryx_u32(x1039, x1033, x1030); let mut x1042: u32 = 0; let mut x1043: fiat_p384_u1 = 0; let (x1042, x1043) = fiat_p384_addcarryx_u32(x1041, x1031, x1028); let mut x1044: u32 = 0; let mut x1045: fiat_p384_u1 = 0; let (x1044, x1045) = fiat_p384_addcarryx_u32(x1043, x1029, x1026); let mut x1046: u32 = 0; let mut x1047: fiat_p384_u1 = 0; let (x1046, x1047) = fiat_p384_addcarryx_u32(x1045, x1027, x1024); let mut x1048: u32 = 0; let mut x1049: fiat_p384_u1 = 0; let (x1048, x1049) = fiat_p384_addcarryx_u32(x1047, x1025, x1022); let mut x1050: u32 = 0; let mut x1051: fiat_p384_u1 = 0; let (x1050, x1051) = fiat_p384_addcarryx_u32(x1049, x1023, x1020); let mut x1052: u32 = 0; let mut x1053: fiat_p384_u1 = 0; let (x1052, x1053) = fiat_p384_addcarryx_u32(x1051, x1021, x1018); let x1054: u32 = ((x1053 as u32) + x1019); let mut x1055: u32 = 0; let mut x1056: fiat_p384_u1 = 0; let (x1055, x1056) = fiat_p384_addcarryx_u32(0x0, x992, x1036); let mut x1057: u32 = 0; let mut x1058: fiat_p384_u1 = 0; let (x1057, x1058) = fiat_p384_addcarryx_u32(x1056, x994, x1037); let mut x1059: u32 = 0; let mut x1060: fiat_p384_u1 = 0; let (x1059, x1060) = fiat_p384_addcarryx_u32(x1058, x996, (0x0 as u32)); let mut x1061: u32 = 0; let mut x1062: fiat_p384_u1 = 0; let (x1061, x1062) = fiat_p384_addcarryx_u32(x1060, x998, x1034); let mut x1063: u32 = 0; let mut x1064: fiat_p384_u1 = 0; let (x1063, x1064) = fiat_p384_addcarryx_u32(x1062, x1000, x1038); let mut x1065: u32 = 0; let mut x1066: fiat_p384_u1 = 0; let (x1065, x1066) = fiat_p384_addcarryx_u32(x1064, x1002, x1040); let mut x1067: u32 = 0; let mut x1068: fiat_p384_u1 = 0; let (x1067, x1068) = fiat_p384_addcarryx_u32(x1066, x1004, x1042); let mut x1069: u32 = 0; let mut x1070: fiat_p384_u1 = 0; let (x1069, x1070) = fiat_p384_addcarryx_u32(x1068, x1006, x1044); let mut x1071: u32 = 0; let mut x1072: fiat_p384_u1 = 0; let (x1071, x1072) = fiat_p384_addcarryx_u32(x1070, x1008, x1046); let mut x1073: u32 = 0; let mut x1074: fiat_p384_u1 = 0; let (x1073, x1074) = fiat_p384_addcarryx_u32(x1072, x1010, x1048); let mut x1075: u32 = 0; let mut x1076: fiat_p384_u1 = 0; let (x1075, x1076) = fiat_p384_addcarryx_u32(x1074, x1012, x1050); let mut x1077: u32 = 0; let mut x1078: fiat_p384_u1 = 0; let (x1077, x1078) = fiat_p384_addcarryx_u32(x1076, x1014, x1052); let mut x1079: u32 = 0; let mut x1080: fiat_p384_u1 = 0; let (x1079, x1080) = fiat_p384_addcarryx_u32(x1078, x1016, x1054); let x1081: u32 = ((x1080 as u32) + (x1017 as u32)); let mut x1082: u32 = 0; let mut x1083: u32 = 0; let (x1082, x1083) = fiat_p384_mulx_u32(x8, (arg2[11])); let mut x1084: u32 = 0; let mut x1085: u32 = 0; let (x1084, x1085) = fiat_p384_mulx_u32(x8, (arg2[10])); let mut x1086: u32 = 0; let mut x1087: u32 = 0; let (x1086, x1087) = fiat_p384_mulx_u32(x8, (arg2[9])); let mut x1088: u32 = 0; let mut x1089: u32 = 0; let (x1088, x1089) = fiat_p384_mulx_u32(x8, (arg2[8])); let mut x1090: u32 = 0; let mut x1091: u32 = 0; let (x1090, x1091) = fiat_p384_mulx_u32(x8, (arg2[7])); let mut x1092: u32 = 0; let mut x1093: u32 = 0; let (x1092, x1093) = fiat_p384_mulx_u32(x8, (arg2[6])); let mut x1094: u32 = 0; let mut x1095: u32 = 0; let (x1094, x1095) = fiat_p384_mulx_u32(x8, (arg2[5])); let mut x1096: u32 = 0; let mut x1097: u32 = 0; let (x1096, x1097) = fiat_p384_mulx_u32(x8, (arg2[4])); let mut x1098: u32 = 0; let mut x1099: u32 = 0; let (x1098, x1099) = fiat_p384_mulx_u32(x8, (arg2[3])); let mut x1100: u32 = 0; let mut x1101: u32 = 0; let (x1100, x1101) = fiat_p384_mulx_u32(x8, (arg2[2])); let mut x1102: u32 = 0; let mut x1103: u32 = 0; let (x1102, x1103) = fiat_p384_mulx_u32(x8, (arg2[1])); let mut x1104: u32 = 0; let mut x1105: u32 = 0; let (x1104, x1105) = fiat_p384_mulx_u32(x8, (arg2[0])); let mut x1106: u32 = 0; let mut x1107: fiat_p384_u1 = 0; let (x1106, x1107) = fiat_p384_addcarryx_u32(0x0, x1105, x1102); let mut x1108: u32 = 0; let mut x1109: fiat_p384_u1 = 0; let (x1108, x1109) = fiat_p384_addcarryx_u32(x1107, x1103, x1100); let mut x1110: u32 = 0; let mut x1111: fiat_p384_u1 = 0; let (x1110, x1111) = fiat_p384_addcarryx_u32(x1109, x1101, x1098); let mut x1112: u32 = 0; let mut x1113: fiat_p384_u1 = 0; let (x1112, x1113) = fiat_p384_addcarryx_u32(x1111, x1099, x1096); let mut x1114: u32 = 0; let mut x1115: fiat_p384_u1 = 0; let (x1114, x1115) = fiat_p384_addcarryx_u32(x1113, x1097, x1094); let mut x1116: u32 = 0; let mut x1117: fiat_p384_u1 = 0; let (x1116, x1117) = fiat_p384_addcarryx_u32(x1115, x1095, x1092); let mut x1118: u32 = 0; let mut x1119: fiat_p384_u1 = 0; let (x1118, x1119) = fiat_p384_addcarryx_u32(x1117, x1093, x1090); let mut x1120: u32 = 0; let mut x1121: fiat_p384_u1 = 0; let (x1120, x1121) = fiat_p384_addcarryx_u32(x1119, x1091, x1088); let mut x1122: u32 = 0; let mut x1123: fiat_p384_u1 = 0; let (x1122, x1123) = fiat_p384_addcarryx_u32(x1121, x1089, x1086); let mut x1124: u32 = 0; let mut x1125: fiat_p384_u1 = 0; let (x1124, x1125) = fiat_p384_addcarryx_u32(x1123, x1087, x1084); let mut x1126: u32 = 0; let mut x1127: fiat_p384_u1 = 0; let (x1126, x1127) = fiat_p384_addcarryx_u32(x1125, x1085, x1082); let x1128: u32 = ((x1127 as u32) + x1083); let mut x1129: u32 = 0; let mut x1130: fiat_p384_u1 = 0; let (x1129, x1130) = fiat_p384_addcarryx_u32(0x0, x1057, x1104); let mut x1131: u32 = 0; let mut x1132: fiat_p384_u1 = 0; let (x1131, x1132) = fiat_p384_addcarryx_u32(x1130, x1059, x1106); let mut x1133: u32 = 0; let mut x1134: fiat_p384_u1 = 0; let (x1133, x1134) = fiat_p384_addcarryx_u32(x1132, x1061, x1108); let mut x1135: u32 = 0; let mut x1136: fiat_p384_u1 = 0; let (x1135, x1136) = fiat_p384_addcarryx_u32(x1134, x1063, x1110); let mut x1137: u32 = 0; let mut x1138: fiat_p384_u1 = 0; let (x1137, x1138) = fiat_p384_addcarryx_u32(x1136, x1065, x1112); let mut x1139: u32 = 0; let mut x1140: fiat_p384_u1 = 0; let (x1139, x1140) = fiat_p384_addcarryx_u32(x1138, x1067, x1114); let mut x1141: u32 = 0; let mut x1142: fiat_p384_u1 = 0; let (x1141, x1142) = fiat_p384_addcarryx_u32(x1140, x1069, x1116); let mut x1143: u32 = 0; let mut x1144: fiat_p384_u1 = 0; let (x1143, x1144) = fiat_p384_addcarryx_u32(x1142, x1071, x1118); let mut x1145: u32 = 0; let mut x1146: fiat_p384_u1 = 0; let (x1145, x1146) = fiat_p384_addcarryx_u32(x1144, x1073, x1120); let mut x1147: u32 = 0; let mut x1148: fiat_p384_u1 = 0; let (x1147, x1148) = fiat_p384_addcarryx_u32(x1146, x1075, x1122); let mut x1149: u32 = 0; let mut x1150: fiat_p384_u1 = 0; let (x1149, x1150) = fiat_p384_addcarryx_u32(x1148, x1077, x1124); let mut x1151: u32 = 0; let mut x1152: fiat_p384_u1 = 0; let (x1151, x1152) = fiat_p384_addcarryx_u32(x1150, x1079, x1126); let mut x1153: u32 = 0; let mut x1154: fiat_p384_u1 = 0; let (x1153, x1154) = fiat_p384_addcarryx_u32(x1152, x1081, x1128); let mut x1155: u32 = 0; let mut x1156: u32 = 0; let (x1155, x1156) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1157: u32 = 0; let mut x1158: u32 = 0; let (x1157, x1158) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1159: u32 = 0; let mut x1160: u32 = 0; let (x1159, x1160) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1161: u32 = 0; let mut x1162: u32 = 0; let (x1161, x1162) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1163: u32 = 0; let mut x1164: u32 = 0; let (x1163, x1164) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1165: u32 = 0; let mut x1166: u32 = 0; let (x1165, x1166) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1167: u32 = 0; let mut x1168: u32 = 0; let (x1167, x1168) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1169: u32 = 0; let mut x1170: u32 = 0; let (x1169, x1170) = fiat_p384_mulx_u32(x1129, 0xfffffffe); let mut x1171: u32 = 0; let mut x1172: u32 = 0; let (x1171, x1172) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1173: u32 = 0; let mut x1174: u32 = 0; let (x1173, x1174) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1175: u32 = 0; let mut x1176: fiat_p384_u1 = 0; let (x1175, x1176) = fiat_p384_addcarryx_u32(0x0, x1172, x1169); let mut x1177: u32 = 0; let mut x1178: fiat_p384_u1 = 0; let (x1177, x1178) = fiat_p384_addcarryx_u32(x1176, x1170, x1167); let mut x1179: u32 = 0; let mut x1180: fiat_p384_u1 = 0; let (x1179, x1180) = fiat_p384_addcarryx_u32(x1178, x1168, x1165); let mut x1181: u32 = 0; let mut x1182: fiat_p384_u1 = 0; let (x1181, x1182) = fiat_p384_addcarryx_u32(x1180, x1166, x1163); let mut x1183: u32 = 0; let mut x1184: fiat_p384_u1 = 0; let (x1183, x1184) = fiat_p384_addcarryx_u32(x1182, x1164, x1161); let mut x1185: u32 = 0; let mut x1186: fiat_p384_u1 = 0; let (x1185, x1186) = fiat_p384_addcarryx_u32(x1184, x1162, x1159); let mut x1187: u32 = 0; let mut x1188: fiat_p384_u1 = 0; let (x1187, x1188) = fiat_p384_addcarryx_u32(x1186, x1160, x1157); let mut x1189: u32 = 0; let mut x1190: fiat_p384_u1 = 0; let (x1189, x1190) = fiat_p384_addcarryx_u32(x1188, x1158, x1155); let x1191: u32 = ((x1190 as u32) + x1156); let mut x1192: u32 = 0; let mut x1193: fiat_p384_u1 = 0; let (x1192, x1193) = fiat_p384_addcarryx_u32(0x0, x1129, x1173); let mut x1194: u32 = 0; let mut x1195: fiat_p384_u1 = 0; let (x1194, x1195) = fiat_p384_addcarryx_u32(x1193, x1131, x1174); let mut x1196: u32 = 0; let mut x1197: fiat_p384_u1 = 0; let (x1196, x1197) = fiat_p384_addcarryx_u32(x1195, x1133, (0x0 as u32)); let mut x1198: u32 = 0; let mut x1199: fiat_p384_u1 = 0; let (x1198, x1199) = fiat_p384_addcarryx_u32(x1197, x1135, x1171); let mut x1200: u32 = 0; let mut x1201: fiat_p384_u1 = 0; let (x1200, x1201) = fiat_p384_addcarryx_u32(x1199, x1137, x1175); let mut x1202: u32 = 0; let mut x1203: fiat_p384_u1 = 0; let (x1202, x1203) = fiat_p384_addcarryx_u32(x1201, x1139, x1177); let mut x1204: u32 = 0; let mut x1205: fiat_p384_u1 = 0; let (x1204, x1205) = fiat_p384_addcarryx_u32(x1203, x1141, x1179); let mut x1206: u32 = 0; let mut x1207: fiat_p384_u1 = 0; let (x1206, x1207) = fiat_p384_addcarryx_u32(x1205, x1143, x1181); let mut x1208: u32 = 0; let mut x1209: fiat_p384_u1 = 0; let (x1208, x1209) = fiat_p384_addcarryx_u32(x1207, x1145, x1183); let mut x1210: u32 = 0; let mut x1211: fiat_p384_u1 = 0; let (x1210, x1211) = fiat_p384_addcarryx_u32(x1209, x1147, x1185); let mut x1212: u32 = 0; let mut x1213: fiat_p384_u1 = 0; let (x1212, x1213) = fiat_p384_addcarryx_u32(x1211, x1149, x1187); let mut x1214: u32 = 0; let mut x1215: fiat_p384_u1 = 0; let (x1214, x1215) = fiat_p384_addcarryx_u32(x1213, x1151, x1189); let mut x1216: u32 = 0; let mut x1217: fiat_p384_u1 = 0; let (x1216, x1217) = fiat_p384_addcarryx_u32(x1215, x1153, x1191); let x1218: u32 = ((x1217 as u32) + (x1154 as u32)); let mut x1219: u32 = 0; let mut x1220: u32 = 0; let (x1219, x1220) = fiat_p384_mulx_u32(x9, (arg2[11])); let mut x1221: u32 = 0; let mut x1222: u32 = 0; let (x1221, x1222) = fiat_p384_mulx_u32(x9, (arg2[10])); let mut x1223: u32 = 0; let mut x1224: u32 = 0; let (x1223, x1224) = fiat_p384_mulx_u32(x9, (arg2[9])); let mut x1225: u32 = 0; let mut x1226: u32 = 0; let (x1225, x1226) = fiat_p384_mulx_u32(x9, (arg2[8])); let mut x1227: u32 = 0; let mut x1228: u32 = 0; let (x1227, x1228) = fiat_p384_mulx_u32(x9, (arg2[7])); let mut x1229: u32 = 0; let mut x1230: u32 = 0; let (x1229, x1230) = fiat_p384_mulx_u32(x9, (arg2[6])); let mut x1231: u32 = 0; let mut x1232: u32 = 0; let (x1231, x1232) = fiat_p384_mulx_u32(x9, (arg2[5])); let mut x1233: u32 = 0; let mut x1234: u32 = 0; let (x1233, x1234) = fiat_p384_mulx_u32(x9, (arg2[4])); let mut x1235: u32 = 0; let mut x1236: u32 = 0; let (x1235, x1236) = fiat_p384_mulx_u32(x9, (arg2[3])); let mut x1237: u32 = 0; let mut x1238: u32 = 0; let (x1237, x1238) = fiat_p384_mulx_u32(x9, (arg2[2])); let mut x1239: u32 = 0; let mut x1240: u32 = 0; let (x1239, x1240) = fiat_p384_mulx_u32(x9, (arg2[1])); let mut x1241: u32 = 0; let mut x1242: u32 = 0; let (x1241, x1242) = fiat_p384_mulx_u32(x9, (arg2[0])); let mut x1243: u32 = 0; let mut x1244: fiat_p384_u1 = 0; let (x1243, x1244) = fiat_p384_addcarryx_u32(0x0, x1242, x1239); let mut x1245: u32 = 0; let mut x1246: fiat_p384_u1 = 0; let (x1245, x1246) = fiat_p384_addcarryx_u32(x1244, x1240, x1237); let mut x1247: u32 = 0; let mut x1248: fiat_p384_u1 = 0; let (x1247, x1248) = fiat_p384_addcarryx_u32(x1246, x1238, x1235); let mut x1249: u32 = 0; let mut x1250: fiat_p384_u1 = 0; let (x1249, x1250) = fiat_p384_addcarryx_u32(x1248, x1236, x1233); let mut x1251: u32 = 0; let mut x1252: fiat_p384_u1 = 0; let (x1251, x1252) = fiat_p384_addcarryx_u32(x1250, x1234, x1231); let mut x1253: u32 = 0; let mut x1254: fiat_p384_u1 = 0; let (x1253, x1254) = fiat_p384_addcarryx_u32(x1252, x1232, x1229); let mut x1255: u32 = 0; let mut x1256: fiat_p384_u1 = 0; let (x1255, x1256) = fiat_p384_addcarryx_u32(x1254, x1230, x1227); let mut x1257: u32 = 0; let mut x1258: fiat_p384_u1 = 0; let (x1257, x1258) = fiat_p384_addcarryx_u32(x1256, x1228, x1225); let mut x1259: u32 = 0; let mut x1260: fiat_p384_u1 = 0; let (x1259, x1260) = fiat_p384_addcarryx_u32(x1258, x1226, x1223); let mut x1261: u32 = 0; let mut x1262: fiat_p384_u1 = 0; let (x1261, x1262) = fiat_p384_addcarryx_u32(x1260, x1224, x1221); let mut x1263: u32 = 0; let mut x1264: fiat_p384_u1 = 0; let (x1263, x1264) = fiat_p384_addcarryx_u32(x1262, x1222, x1219); let x1265: u32 = ((x1264 as u32) + x1220); let mut x1266: u32 = 0; let mut x1267: fiat_p384_u1 = 0; let (x1266, x1267) = fiat_p384_addcarryx_u32(0x0, x1194, x1241); let mut x1268: u32 = 0; let mut x1269: fiat_p384_u1 = 0; let (x1268, x1269) = fiat_p384_addcarryx_u32(x1267, x1196, x1243); let mut x1270: u32 = 0; let mut x1271: fiat_p384_u1 = 0; let (x1270, x1271) = fiat_p384_addcarryx_u32(x1269, x1198, x1245); let mut x1272: u32 = 0; let mut x1273: fiat_p384_u1 = 0; let (x1272, x1273) = fiat_p384_addcarryx_u32(x1271, x1200, x1247); let mut x1274: u32 = 0; let mut x1275: fiat_p384_u1 = 0; let (x1274, x1275) = fiat_p384_addcarryx_u32(x1273, x1202, x1249); let mut x1276: u32 = 0; let mut x1277: fiat_p384_u1 = 0; let (x1276, x1277) = fiat_p384_addcarryx_u32(x1275, x1204, x1251); let mut x1278: u32 = 0; let mut x1279: fiat_p384_u1 = 0; let (x1278, x1279) = fiat_p384_addcarryx_u32(x1277, x1206, x1253); let mut x1280: u32 = 0; let mut x1281: fiat_p384_u1 = 0; let (x1280, x1281) = fiat_p384_addcarryx_u32(x1279, x1208, x1255); let mut x1282: u32 = 0; let mut x1283: fiat_p384_u1 = 0; let (x1282, x1283) = fiat_p384_addcarryx_u32(x1281, x1210, x1257); let mut x1284: u32 = 0; let mut x1285: fiat_p384_u1 = 0; let (x1284, x1285) = fiat_p384_addcarryx_u32(x1283, x1212, x1259); let mut x1286: u32 = 0; let mut x1287: fiat_p384_u1 = 0; let (x1286, x1287) = fiat_p384_addcarryx_u32(x1285, x1214, x1261); let mut x1288: u32 = 0; let mut x1289: fiat_p384_u1 = 0; let (x1288, x1289) = fiat_p384_addcarryx_u32(x1287, x1216, x1263); let mut x1290: u32 = 0; let mut x1291: fiat_p384_u1 = 0; let (x1290, x1291) = fiat_p384_addcarryx_u32(x1289, x1218, x1265); let mut x1292: u32 = 0; let mut x1293: u32 = 0; let (x1292, x1293) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1294: u32 = 0; let mut x1295: u32 = 0; let (x1294, x1295) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1296: u32 = 0; let mut x1297: u32 = 0; let (x1296, x1297) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1298: u32 = 0; let mut x1299: u32 = 0; let (x1298, x1299) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1300: u32 = 0; let mut x1301: u32 = 0; let (x1300, x1301) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1302: u32 = 0; let mut x1303: u32 = 0; let (x1302, x1303) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1304: u32 = 0; let mut x1305: u32 = 0; let (x1304, x1305) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1306: u32 = 0; let mut x1307: u32 = 0; let (x1306, x1307) = fiat_p384_mulx_u32(x1266, 0xfffffffe); let mut x1308: u32 = 0; let mut x1309: u32 = 0; let (x1308, x1309) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1310: u32 = 0; let mut x1311: u32 = 0; let (x1310, x1311) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1312: u32 = 0; let mut x1313: fiat_p384_u1 = 0; let (x1312, x1313) = fiat_p384_addcarryx_u32(0x0, x1309, x1306); let mut x1314: u32 = 0; let mut x1315: fiat_p384_u1 = 0; let (x1314, x1315) = fiat_p384_addcarryx_u32(x1313, x1307, x1304); let mut x1316: u32 = 0; let mut x1317: fiat_p384_u1 = 0; let (x1316, x1317) = fiat_p384_addcarryx_u32(x1315, x1305, x1302); let mut x1318: u32 = 0; let mut x1319: fiat_p384_u1 = 0; let (x1318, x1319) = fiat_p384_addcarryx_u32(x1317, x1303, x1300); let mut x1320: u32 = 0; let mut x1321: fiat_p384_u1 = 0; let (x1320, x1321) = fiat_p384_addcarryx_u32(x1319, x1301, x1298); let mut x1322: u32 = 0; let mut x1323: fiat_p384_u1 = 0; let (x1322, x1323) = fiat_p384_addcarryx_u32(x1321, x1299, x1296); let mut x1324: u32 = 0; let mut x1325: fiat_p384_u1 = 0; let (x1324, x1325) = fiat_p384_addcarryx_u32(x1323, x1297, x1294); let mut x1326: u32 = 0; let mut x1327: fiat_p384_u1 = 0; let (x1326, x1327) = fiat_p384_addcarryx_u32(x1325, x1295, x1292); let x1328: u32 = ((x1327 as u32) + x1293); let mut x1329: u32 = 0; let mut x1330: fiat_p384_u1 = 0; let (x1329, x1330) = fiat_p384_addcarryx_u32(0x0, x1266, x1310); let mut x1331: u32 = 0; let mut x1332: fiat_p384_u1 = 0; let (x1331, x1332) = fiat_p384_addcarryx_u32(x1330, x1268, x1311); let mut x1333: u32 = 0; let mut x1334: fiat_p384_u1 = 0; let (x1333, x1334) = fiat_p384_addcarryx_u32(x1332, x1270, (0x0 as u32)); let mut x1335: u32 = 0; let mut x1336: fiat_p384_u1 = 0; let (x1335, x1336) = fiat_p384_addcarryx_u32(x1334, x1272, x1308); let mut x1337: u32 = 0; let mut x1338: fiat_p384_u1 = 0; let (x1337, x1338) = fiat_p384_addcarryx_u32(x1336, x1274, x1312); let mut x1339: u32 = 0; let mut x1340: fiat_p384_u1 = 0; let (x1339, x1340) = fiat_p384_addcarryx_u32(x1338, x1276, x1314); let mut x1341: u32 = 0; let mut x1342: fiat_p384_u1 = 0; let (x1341, x1342) = fiat_p384_addcarryx_u32(x1340, x1278, x1316); let mut x1343: u32 = 0; let mut x1344: fiat_p384_u1 = 0; let (x1343, x1344) = fiat_p384_addcarryx_u32(x1342, x1280, x1318); let mut x1345: u32 = 0; let mut x1346: fiat_p384_u1 = 0; let (x1345, x1346) = fiat_p384_addcarryx_u32(x1344, x1282, x1320); let mut x1347: u32 = 0; let mut x1348: fiat_p384_u1 = 0; let (x1347, x1348) = fiat_p384_addcarryx_u32(x1346, x1284, x1322); let mut x1349: u32 = 0; let mut x1350: fiat_p384_u1 = 0; let (x1349, x1350) = fiat_p384_addcarryx_u32(x1348, x1286, x1324); let mut x1351: u32 = 0; let mut x1352: fiat_p384_u1 = 0; let (x1351, x1352) = fiat_p384_addcarryx_u32(x1350, x1288, x1326); let mut x1353: u32 = 0; let mut x1354: fiat_p384_u1 = 0; let (x1353, x1354) = fiat_p384_addcarryx_u32(x1352, x1290, x1328); let x1355: u32 = ((x1354 as u32) + (x1291 as u32)); let mut x1356: u32 = 0; let mut x1357: u32 = 0; let (x1356, x1357) = fiat_p384_mulx_u32(x10, (arg2[11])); let mut x1358: u32 = 0; let mut x1359: u32 = 0; let (x1358, x1359) = fiat_p384_mulx_u32(x10, (arg2[10])); let mut x1360: u32 = 0; let mut x1361: u32 = 0; let (x1360, x1361) = fiat_p384_mulx_u32(x10, (arg2[9])); let mut x1362: u32 = 0; let mut x1363: u32 = 0; let (x1362, x1363) = fiat_p384_mulx_u32(x10, (arg2[8])); let mut x1364: u32 = 0; let mut x1365: u32 = 0; let (x1364, x1365) = fiat_p384_mulx_u32(x10, (arg2[7])); let mut x1366: u32 = 0; let mut x1367: u32 = 0; let (x1366, x1367) = fiat_p384_mulx_u32(x10, (arg2[6])); let mut x1368: u32 = 0; let mut x1369: u32 = 0; let (x1368, x1369) = fiat_p384_mulx_u32(x10, (arg2[5])); let mut x1370: u32 = 0; let mut x1371: u32 = 0; let (x1370, x1371) = fiat_p384_mulx_u32(x10, (arg2[4])); let mut x1372: u32 = 0; let mut x1373: u32 = 0; let (x1372, x1373) = fiat_p384_mulx_u32(x10, (arg2[3])); let mut x1374: u32 = 0; let mut x1375: u32 = 0; let (x1374, x1375) = fiat_p384_mulx_u32(x10, (arg2[2])); let mut x1376: u32 = 0; let mut x1377: u32 = 0; let (x1376, x1377) = fiat_p384_mulx_u32(x10, (arg2[1])); let mut x1378: u32 = 0; let mut x1379: u32 = 0; let (x1378, x1379) = fiat_p384_mulx_u32(x10, (arg2[0])); let mut x1380: u32 = 0; let mut x1381: fiat_p384_u1 = 0; let (x1380, x1381) = fiat_p384_addcarryx_u32(0x0, x1379, x1376); let mut x1382: u32 = 0; let mut x1383: fiat_p384_u1 = 0; let (x1382, x1383) = fiat_p384_addcarryx_u32(x1381, x1377, x1374); let mut x1384: u32 = 0; let mut x1385: fiat_p384_u1 = 0; let (x1384, x1385) = fiat_p384_addcarryx_u32(x1383, x1375, x1372); let mut x1386: u32 = 0; let mut x1387: fiat_p384_u1 = 0; let (x1386, x1387) = fiat_p384_addcarryx_u32(x1385, x1373, x1370); let mut x1388: u32 = 0; let mut x1389: fiat_p384_u1 = 0; let (x1388, x1389) = fiat_p384_addcarryx_u32(x1387, x1371, x1368); let mut x1390: u32 = 0; let mut x1391: fiat_p384_u1 = 0; let (x1390, x1391) = fiat_p384_addcarryx_u32(x1389, x1369, x1366); let mut x1392: u32 = 0; let mut x1393: fiat_p384_u1 = 0; let (x1392, x1393) = fiat_p384_addcarryx_u32(x1391, x1367, x1364); let mut x1394: u32 = 0; let mut x1395: fiat_p384_u1 = 0; let (x1394, x1395) = fiat_p384_addcarryx_u32(x1393, x1365, x1362); let mut x1396: u32 = 0; let mut x1397: fiat_p384_u1 = 0; let (x1396, x1397) = fiat_p384_addcarryx_u32(x1395, x1363, x1360); let mut x1398: u32 = 0; let mut x1399: fiat_p384_u1 = 0; let (x1398, x1399) = fiat_p384_addcarryx_u32(x1397, x1361, x1358); let mut x1400: u32 = 0; let mut x1401: fiat_p384_u1 = 0; let (x1400, x1401) = fiat_p384_addcarryx_u32(x1399, x1359, x1356); let x1402: u32 = ((x1401 as u32) + x1357); let mut x1403: u32 = 0; let mut x1404: fiat_p384_u1 = 0; let (x1403, x1404) = fiat_p384_addcarryx_u32(0x0, x1331, x1378); let mut x1405: u32 = 0; let mut x1406: fiat_p384_u1 = 0; let (x1405, x1406) = fiat_p384_addcarryx_u32(x1404, x1333, x1380); let mut x1407: u32 = 0; let mut x1408: fiat_p384_u1 = 0; let (x1407, x1408) = fiat_p384_addcarryx_u32(x1406, x1335, x1382); let mut x1409: u32 = 0; let mut x1410: fiat_p384_u1 = 0; let (x1409, x1410) = fiat_p384_addcarryx_u32(x1408, x1337, x1384); let mut x1411: u32 = 0; let mut x1412: fiat_p384_u1 = 0; let (x1411, x1412) = fiat_p384_addcarryx_u32(x1410, x1339, x1386); let mut x1413: u32 = 0; let mut x1414: fiat_p384_u1 = 0; let (x1413, x1414) = fiat_p384_addcarryx_u32(x1412, x1341, x1388); let mut x1415: u32 = 0; let mut x1416: fiat_p384_u1 = 0; let (x1415, x1416) = fiat_p384_addcarryx_u32(x1414, x1343, x1390); let mut x1417: u32 = 0; let mut x1418: fiat_p384_u1 = 0; let (x1417, x1418) = fiat_p384_addcarryx_u32(x1416, x1345, x1392); let mut x1419: u32 = 0; let mut x1420: fiat_p384_u1 = 0; let (x1419, x1420) = fiat_p384_addcarryx_u32(x1418, x1347, x1394); let mut x1421: u32 = 0; let mut x1422: fiat_p384_u1 = 0; let (x1421, x1422) = fiat_p384_addcarryx_u32(x1420, x1349, x1396); let mut x1423: u32 = 0; let mut x1424: fiat_p384_u1 = 0; let (x1423, x1424) = fiat_p384_addcarryx_u32(x1422, x1351, x1398); let mut x1425: u32 = 0; let mut x1426: fiat_p384_u1 = 0; let (x1425, x1426) = fiat_p384_addcarryx_u32(x1424, x1353, x1400); let mut x1427: u32 = 0; let mut x1428: fiat_p384_u1 = 0; let (x1427, x1428) = fiat_p384_addcarryx_u32(x1426, x1355, x1402); let mut x1429: u32 = 0; let mut x1430: u32 = 0; let (x1429, x1430) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1431: u32 = 0; let mut x1432: u32 = 0; let (x1431, x1432) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1433: u32 = 0; let mut x1434: u32 = 0; let (x1433, x1434) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1435: u32 = 0; let mut x1436: u32 = 0; let (x1435, x1436) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1437: u32 = 0; let mut x1438: u32 = 0; let (x1437, x1438) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1439: u32 = 0; let mut x1440: u32 = 0; let (x1439, x1440) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1441: u32 = 0; let mut x1442: u32 = 0; let (x1441, x1442) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1443: u32 = 0; let mut x1444: u32 = 0; let (x1443, x1444) = fiat_p384_mulx_u32(x1403, 0xfffffffe); let mut x1445: u32 = 0; let mut x1446: u32 = 0; let (x1445, x1446) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1447: u32 = 0; let mut x1448: u32 = 0; let (x1447, x1448) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1449: u32 = 0; let mut x1450: fiat_p384_u1 = 0; let (x1449, x1450) = fiat_p384_addcarryx_u32(0x0, x1446, x1443); let mut x1451: u32 = 0; let mut x1452: fiat_p384_u1 = 0; let (x1451, x1452) = fiat_p384_addcarryx_u32(x1450, x1444, x1441); let mut x1453: u32 = 0; let mut x1454: fiat_p384_u1 = 0; let (x1453, x1454) = fiat_p384_addcarryx_u32(x1452, x1442, x1439); let mut x1455: u32 = 0; let mut x1456: fiat_p384_u1 = 0; let (x1455, x1456) = fiat_p384_addcarryx_u32(x1454, x1440, x1437); let mut x1457: u32 = 0; let mut x1458: fiat_p384_u1 = 0; let (x1457, x1458) = fiat_p384_addcarryx_u32(x1456, x1438, x1435); let mut x1459: u32 = 0; let mut x1460: fiat_p384_u1 = 0; let (x1459, x1460) = fiat_p384_addcarryx_u32(x1458, x1436, x1433); let mut x1461: u32 = 0; let mut x1462: fiat_p384_u1 = 0; let (x1461, x1462) = fiat_p384_addcarryx_u32(x1460, x1434, x1431); let mut x1463: u32 = 0; let mut x1464: fiat_p384_u1 = 0; let (x1463, x1464) = fiat_p384_addcarryx_u32(x1462, x1432, x1429); let x1465: u32 = ((x1464 as u32) + x1430); let mut x1466: u32 = 0; let mut x1467: fiat_p384_u1 = 0; let (x1466, x1467) = fiat_p384_addcarryx_u32(0x0, x1403, x1447); let mut x1468: u32 = 0; let mut x1469: fiat_p384_u1 = 0; let (x1468, x1469) = fiat_p384_addcarryx_u32(x1467, x1405, x1448); let mut x1470: u32 = 0; let mut x1471: fiat_p384_u1 = 0; let (x1470, x1471) = fiat_p384_addcarryx_u32(x1469, x1407, (0x0 as u32)); let mut x1472: u32 = 0; let mut x1473: fiat_p384_u1 = 0; let (x1472, x1473) = fiat_p384_addcarryx_u32(x1471, x1409, x1445); let mut x1474: u32 = 0; let mut x1475: fiat_p384_u1 = 0; let (x1474, x1475) = fiat_p384_addcarryx_u32(x1473, x1411, x1449); let mut x1476: u32 = 0; let mut x1477: fiat_p384_u1 = 0; let (x1476, x1477) = fiat_p384_addcarryx_u32(x1475, x1413, x1451); let mut x1478: u32 = 0; let mut x1479: fiat_p384_u1 = 0; let (x1478, x1479) = fiat_p384_addcarryx_u32(x1477, x1415, x1453); let mut x1480: u32 = 0; let mut x1481: fiat_p384_u1 = 0; let (x1480, x1481) = fiat_p384_addcarryx_u32(x1479, x1417, x1455); let mut x1482: u32 = 0; let mut x1483: fiat_p384_u1 = 0; let (x1482, x1483) = fiat_p384_addcarryx_u32(x1481, x1419, x1457); let mut x1484: u32 = 0; let mut x1485: fiat_p384_u1 = 0; let (x1484, x1485) = fiat_p384_addcarryx_u32(x1483, x1421, x1459); let mut x1486: u32 = 0; let mut x1487: fiat_p384_u1 = 0; let (x1486, x1487) = fiat_p384_addcarryx_u32(x1485, x1423, x1461); let mut x1488: u32 = 0; let mut x1489: fiat_p384_u1 = 0; let (x1488, x1489) = fiat_p384_addcarryx_u32(x1487, x1425, x1463); let mut x1490: u32 = 0; let mut x1491: fiat_p384_u1 = 0; let (x1490, x1491) = fiat_p384_addcarryx_u32(x1489, x1427, x1465); let x1492: u32 = ((x1491 as u32) + (x1428 as u32)); let mut x1493: u32 = 0; let mut x1494: u32 = 0; let (x1493, x1494) = fiat_p384_mulx_u32(x11, (arg2[11])); let mut x1495: u32 = 0; let mut x1496: u32 = 0; let (x1495, x1496) = fiat_p384_mulx_u32(x11, (arg2[10])); let mut x1497: u32 = 0; let mut x1498: u32 = 0; let (x1497, x1498) = fiat_p384_mulx_u32(x11, (arg2[9])); let mut x1499: u32 = 0; let mut x1500: u32 = 0; let (x1499, x1500) = fiat_p384_mulx_u32(x11, (arg2[8])); let mut x1501: u32 = 0; let mut x1502: u32 = 0; let (x1501, x1502) = fiat_p384_mulx_u32(x11, (arg2[7])); let mut x1503: u32 = 0; let mut x1504: u32 = 0; let (x1503, x1504) = fiat_p384_mulx_u32(x11, (arg2[6])); let mut x1505: u32 = 0; let mut x1506: u32 = 0; let (x1505, x1506) = fiat_p384_mulx_u32(x11, (arg2[5])); let mut x1507: u32 = 0; let mut x1508: u32 = 0; let (x1507, x1508) = fiat_p384_mulx_u32(x11, (arg2[4])); let mut x1509: u32 = 0; let mut x1510: u32 = 0; let (x1509, x1510) = fiat_p384_mulx_u32(x11, (arg2[3])); let mut x1511: u32 = 0; let mut x1512: u32 = 0; let (x1511, x1512) = fiat_p384_mulx_u32(x11, (arg2[2])); let mut x1513: u32 = 0; let mut x1514: u32 = 0; let (x1513, x1514) = fiat_p384_mulx_u32(x11, (arg2[1])); let mut x1515: u32 = 0; let mut x1516: u32 = 0; let (x1515, x1516) = fiat_p384_mulx_u32(x11, (arg2[0])); let mut x1517: u32 = 0; let mut x1518: fiat_p384_u1 = 0; let (x1517, x1518) = fiat_p384_addcarryx_u32(0x0, x1516, x1513); let mut x1519: u32 = 0; let mut x1520: fiat_p384_u1 = 0; let (x1519, x1520) = fiat_p384_addcarryx_u32(x1518, x1514, x1511); let mut x1521: u32 = 0; let mut x1522: fiat_p384_u1 = 0; let (x1521, x1522) = fiat_p384_addcarryx_u32(x1520, x1512, x1509); let mut x1523: u32 = 0; let mut x1524: fiat_p384_u1 = 0; let (x1523, x1524) = fiat_p384_addcarryx_u32(x1522, x1510, x1507); let mut x1525: u32 = 0; let mut x1526: fiat_p384_u1 = 0; let (x1525, x1526) = fiat_p384_addcarryx_u32(x1524, x1508, x1505); let mut x1527: u32 = 0; let mut x1528: fiat_p384_u1 = 0; let (x1527, x1528) = fiat_p384_addcarryx_u32(x1526, x1506, x1503); let mut x1529: u32 = 0; let mut x1530: fiat_p384_u1 = 0; let (x1529, x1530) = fiat_p384_addcarryx_u32(x1528, x1504, x1501); let mut x1531: u32 = 0; let mut x1532: fiat_p384_u1 = 0; let (x1531, x1532) = fiat_p384_addcarryx_u32(x1530, x1502, x1499); let mut x1533: u32 = 0; let mut x1534: fiat_p384_u1 = 0; let (x1533, x1534) = fiat_p384_addcarryx_u32(x1532, x1500, x1497); let mut x1535: u32 = 0; let mut x1536: fiat_p384_u1 = 0; let (x1535, x1536) = fiat_p384_addcarryx_u32(x1534, x1498, x1495); let mut x1537: u32 = 0; let mut x1538: fiat_p384_u1 = 0; let (x1537, x1538) = fiat_p384_addcarryx_u32(x1536, x1496, x1493); let x1539: u32 = ((x1538 as u32) + x1494); let mut x1540: u32 = 0; let mut x1541: fiat_p384_u1 = 0; let (x1540, x1541) = fiat_p384_addcarryx_u32(0x0, x1468, x1515); let mut x1542: u32 = 0; let mut x1543: fiat_p384_u1 = 0; let (x1542, x1543) = fiat_p384_addcarryx_u32(x1541, x1470, x1517); let mut x1544: u32 = 0; let mut x1545: fiat_p384_u1 = 0; let (x1544, x1545) = fiat_p384_addcarryx_u32(x1543, x1472, x1519); let mut x1546: u32 = 0; let mut x1547: fiat_p384_u1 = 0; let (x1546, x1547) = fiat_p384_addcarryx_u32(x1545, x1474, x1521); let mut x1548: u32 = 0; let mut x1549: fiat_p384_u1 = 0; let (x1548, x1549) = fiat_p384_addcarryx_u32(x1547, x1476, x1523); let mut x1550: u32 = 0; let mut x1551: fiat_p384_u1 = 0; let (x1550, x1551) = fiat_p384_addcarryx_u32(x1549, x1478, x1525); let mut x1552: u32 = 0; let mut x1553: fiat_p384_u1 = 0; let (x1552, x1553) = fiat_p384_addcarryx_u32(x1551, x1480, x1527); let mut x1554: u32 = 0; let mut x1555: fiat_p384_u1 = 0; let (x1554, x1555) = fiat_p384_addcarryx_u32(x1553, x1482, x1529); let mut x1556: u32 = 0; let mut x1557: fiat_p384_u1 = 0; let (x1556, x1557) = fiat_p384_addcarryx_u32(x1555, x1484, x1531); let mut x1558: u32 = 0; let mut x1559: fiat_p384_u1 = 0; let (x1558, x1559) = fiat_p384_addcarryx_u32(x1557, x1486, x1533); let mut x1560: u32 = 0; let mut x1561: fiat_p384_u1 = 0; let (x1560, x1561) = fiat_p384_addcarryx_u32(x1559, x1488, x1535); let mut x1562: u32 = 0; let mut x1563: fiat_p384_u1 = 0; let (x1562, x1563) = fiat_p384_addcarryx_u32(x1561, x1490, x1537); let mut x1564: u32 = 0; let mut x1565: fiat_p384_u1 = 0; let (x1564, x1565) = fiat_p384_addcarryx_u32(x1563, x1492, x1539); let mut x1566: u32 = 0; let mut x1567: u32 = 0; let (x1566, x1567) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1568: u32 = 0; let mut x1569: u32 = 0; let (x1568, x1569) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1570: u32 = 0; let mut x1571: u32 = 0; let (x1570, x1571) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1572: u32 = 0; let mut x1573: u32 = 0; let (x1572, x1573) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1574: u32 = 0; let mut x1575: u32 = 0; let (x1574, x1575) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1576: u32 = 0; let mut x1577: u32 = 0; let (x1576, x1577) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1578: u32 = 0; let mut x1579: u32 = 0; let (x1578, x1579) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1580: u32 = 0; let mut x1581: u32 = 0; let (x1580, x1581) = fiat_p384_mulx_u32(x1540, 0xfffffffe); let mut x1582: u32 = 0; let mut x1583: u32 = 0; let (x1582, x1583) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1584: u32 = 0; let mut x1585: u32 = 0; let (x1584, x1585) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1586: u32 = 0; let mut x1587: fiat_p384_u1 = 0; let (x1586, x1587) = fiat_p384_addcarryx_u32(0x0, x1583, x1580); let mut x1588: u32 = 0; let mut x1589: fiat_p384_u1 = 0; let (x1588, x1589) = fiat_p384_addcarryx_u32(x1587, x1581, x1578); let mut x1590: u32 = 0; let mut x1591: fiat_p384_u1 = 0; let (x1590, x1591) = fiat_p384_addcarryx_u32(x1589, x1579, x1576); let mut x1592: u32 = 0; let mut x1593: fiat_p384_u1 = 0; let (x1592, x1593) = fiat_p384_addcarryx_u32(x1591, x1577, x1574); let mut x1594: u32 = 0; let mut x1595: fiat_p384_u1 = 0; let (x1594, x1595) = fiat_p384_addcarryx_u32(x1593, x1575, x1572); let mut x1596: u32 = 0; let mut x1597: fiat_p384_u1 = 0; let (x1596, x1597) = fiat_p384_addcarryx_u32(x1595, x1573, x1570); let mut x1598: u32 = 0; let mut x1599: fiat_p384_u1 = 0; let (x1598, x1599) = fiat_p384_addcarryx_u32(x1597, x1571, x1568); let mut x1600: u32 = 0; let mut x1601: fiat_p384_u1 = 0; let (x1600, x1601) = fiat_p384_addcarryx_u32(x1599, x1569, x1566); let x1602: u32 = ((x1601 as u32) + x1567); let mut x1603: u32 = 0; let mut x1604: fiat_p384_u1 = 0; let (x1603, x1604) = fiat_p384_addcarryx_u32(0x0, x1540, x1584); let mut x1605: u32 = 0; let mut x1606: fiat_p384_u1 = 0; let (x1605, x1606) = fiat_p384_addcarryx_u32(x1604, x1542, x1585); let mut x1607: u32 = 0; let mut x1608: fiat_p384_u1 = 0; let (x1607, x1608) = fiat_p384_addcarryx_u32(x1606, x1544, (0x0 as u32)); let mut x1609: u32 = 0; let mut x1610: fiat_p384_u1 = 0; let (x1609, x1610) = fiat_p384_addcarryx_u32(x1608, x1546, x1582); let mut x1611: u32 = 0; let mut x1612: fiat_p384_u1 = 0; let (x1611, x1612) = fiat_p384_addcarryx_u32(x1610, x1548, x1586); let mut x1613: u32 = 0; let mut x1614: fiat_p384_u1 = 0; let (x1613, x1614) = fiat_p384_addcarryx_u32(x1612, x1550, x1588); let mut x1615: u32 = 0; let mut x1616: fiat_p384_u1 = 0; let (x1615, x1616) = fiat_p384_addcarryx_u32(x1614, x1552, x1590); let mut x1617: u32 = 0; let mut x1618: fiat_p384_u1 = 0; let (x1617, x1618) = fiat_p384_addcarryx_u32(x1616, x1554, x1592); let mut x1619: u32 = 0; let mut x1620: fiat_p384_u1 = 0; let (x1619, x1620) = fiat_p384_addcarryx_u32(x1618, x1556, x1594); let mut x1621: u32 = 0; let mut x1622: fiat_p384_u1 = 0; let (x1621, x1622) = fiat_p384_addcarryx_u32(x1620, x1558, x1596); let mut x1623: u32 = 0; let mut x1624: fiat_p384_u1 = 0; let (x1623, x1624) = fiat_p384_addcarryx_u32(x1622, x1560, x1598); let mut x1625: u32 = 0; let mut x1626: fiat_p384_u1 = 0; let (x1625, x1626) = fiat_p384_addcarryx_u32(x1624, x1562, x1600); let mut x1627: u32 = 0; let mut x1628: fiat_p384_u1 = 0; let (x1627, x1628) = fiat_p384_addcarryx_u32(x1626, x1564, x1602); let x1629: u32 = ((x1628 as u32) + (x1565 as u32)); let mut x1630: u32 = 0; let mut x1631: fiat_p384_u1 = 0; let (x1630, x1631) = fiat_p384_subborrowx_u32(0x0, x1605, 0xffffffff); let mut x1632: u32 = 0; let mut x1633: fiat_p384_u1 = 0; let (x1632, x1633) = fiat_p384_subborrowx_u32(x1631, x1607, (0x0 as u32)); let mut x1634: u32 = 0; let mut x1635: fiat_p384_u1 = 0; let (x1634, x1635) = fiat_p384_subborrowx_u32(x1633, x1609, (0x0 as u32)); let mut x1636: u32 = 0; let mut x1637: fiat_p384_u1 = 0; let (x1636, x1637) = fiat_p384_subborrowx_u32(x1635, x1611, 0xffffffff); let mut x1638: u32 = 0; let mut x1639: fiat_p384_u1 = 0; let (x1638, x1639) = fiat_p384_subborrowx_u32(x1637, x1613, 0xfffffffe); let mut x1640: u32 = 0; let mut x1641: fiat_p384_u1 = 0; let (x1640, x1641) = fiat_p384_subborrowx_u32(x1639, x1615, 0xffffffff); let mut x1642: u32 = 0; let mut x1643: fiat_p384_u1 = 0; let (x1642, x1643) = fiat_p384_subborrowx_u32(x1641, x1617, 0xffffffff); let mut x1644: u32 = 0; let mut x1645: fiat_p384_u1 = 0; let (x1644, x1645) = fiat_p384_subborrowx_u32(x1643, x1619, 0xffffffff); let mut x1646: u32 = 0; let mut x1647: fiat_p384_u1 = 0; let (x1646, x1647) = fiat_p384_subborrowx_u32(x1645, x1621, 0xffffffff); let mut x1648: u32 = 0; let mut x1649: fiat_p384_u1 = 0; let (x1648, x1649) = fiat_p384_subborrowx_u32(x1647, x1623, 0xffffffff); let mut x1650: u32 = 0; let mut x1651: fiat_p384_u1 = 0; let (x1650, x1651) = fiat_p384_subborrowx_u32(x1649, x1625, 0xffffffff); let mut x1652: u32 = 0; let mut x1653: fiat_p384_u1 = 0; let (x1652, x1653) = fiat_p384_subborrowx_u32(x1651, x1627, 0xffffffff); let mut x1654: u32 = 0; let mut x1655: fiat_p384_u1 = 0; let (x1654, x1655) = fiat_p384_subborrowx_u32(x1653, x1629, (0x0 as u32)); let mut x1656: u32 = 0; let (x1656) = fiat_p384_cmovznz_u32(x1655, x1630, x1605); let mut x1657: u32 = 0; let (x1657) = fiat_p384_cmovznz_u32(x1655, x1632, x1607); let mut x1658: u32 = 0; let (x1658) = fiat_p384_cmovznz_u32(x1655, x1634, x1609); let mut x1659: u32 = 0; let (x1659) = fiat_p384_cmovznz_u32(x1655, x1636, x1611); let mut x1660: u32 = 0; let (x1660) = fiat_p384_cmovznz_u32(x1655, x1638, x1613); let mut x1661: u32 = 0; let (x1661) = fiat_p384_cmovznz_u32(x1655, x1640, x1615); let mut x1662: u32 = 0; let (x1662) = fiat_p384_cmovznz_u32(x1655, x1642, x1617); let mut x1663: u32 = 0; let (x1663) = fiat_p384_cmovznz_u32(x1655, x1644, x1619); let mut x1664: u32 = 0; let (x1664) = fiat_p384_cmovznz_u32(x1655, x1646, x1621); let mut x1665: u32 = 0; let (x1665) = fiat_p384_cmovznz_u32(x1655, x1648, x1623); let mut x1666: u32 = 0; let (x1666) = fiat_p384_cmovznz_u32(x1655, x1650, x1625); let mut x1667: u32 = 0; let (x1667) = fiat_p384_cmovznz_u32(x1655, x1652, x1627); out1[0] = x1656; out1[1] = x1657; out1[2] = x1658; out1[3] = x1659; out1[4] = x1660; out1[5] = x1661; out1[6] = x1662; out1[7] = x1663; out1[8] = x1664; out1[9] = x1665; out1[10] = x1666; out1[11] = x1667; out1 } #[doc = " The function fiat_p384_square squares a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_square( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_mulx_u32(x12, (arg1[11])); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_mulx_u32(x12, (arg1[10])); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_mulx_u32(x12, (arg1[9])); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_mulx_u32(x12, (arg1[8])); let mut x21: u32 = 0; let mut x22: u32 = 0; let (x21, x22) = fiat_p384_mulx_u32(x12, (arg1[7])); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_mulx_u32(x12, (arg1[6])); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_mulx_u32(x12, (arg1[5])); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_mulx_u32(x12, (arg1[4])); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_mulx_u32(x12, (arg1[3])); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_mulx_u32(x12, (arg1[2])); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_mulx_u32(x12, (arg1[1])); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_mulx_u32(x12, (arg1[0])); let mut x37: u32 = 0; let mut x38: fiat_p384_u1 = 0; let (x37, x38) = fiat_p384_addcarryx_u32(0x0, x36, x33); let mut x39: u32 = 0; let mut x40: fiat_p384_u1 = 0; let (x39, x40) = fiat_p384_addcarryx_u32(x38, x34, x31); let mut x41: u32 = 0; let mut x42: fiat_p384_u1 = 0; let (x41, x42) = fiat_p384_addcarryx_u32(x40, x32, x29); let mut x43: u32 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_addcarryx_u32(x42, x30, x27); let mut x45: u32 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_addcarryx_u32(x44, x28, x25); let mut x47: u32 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_addcarryx_u32(x46, x26, x23); let mut x49: u32 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_addcarryx_u32(x48, x24, x21); let mut x51: u32 = 0; let mut x52: fiat_p384_u1 = 0; let (x51, x52) = fiat_p384_addcarryx_u32(x50, x22, x19); let mut x53: u32 = 0; let mut x54: fiat_p384_u1 = 0; let (x53, x54) = fiat_p384_addcarryx_u32(x52, x20, x17); let mut x55: u32 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u32(x54, x18, x15); let mut x57: u32 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u32(x56, x16, x13); let x59: u32 = ((x58 as u32) + x14); let mut x60: u32 = 0; let mut x61: u32 = 0; let (x60, x61) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x62: u32 = 0; let mut x63: u32 = 0; let (x62, x63) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x64: u32 = 0; let mut x65: u32 = 0; let (x64, x65) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x66: u32 = 0; let mut x67: u32 = 0; let (x66, x67) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x68: u32 = 0; let mut x69: u32 = 0; let (x68, x69) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x70: u32 = 0; let mut x71: u32 = 0; let (x70, x71) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x72: u32 = 0; let mut x73: u32 = 0; let (x72, x73) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x74: u32 = 0; let mut x75: u32 = 0; let (x74, x75) = fiat_p384_mulx_u32(x35, 0xfffffffe); let mut x76: u32 = 0; let mut x77: u32 = 0; let (x76, x77) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x78: u32 = 0; let mut x79: u32 = 0; let (x78, x79) = fiat_p384_mulx_u32(x35, 0xffffffff); let mut x80: u32 = 0; let mut x81: fiat_p384_u1 = 0; let (x80, x81) = fiat_p384_addcarryx_u32(0x0, x77, x74); let mut x82: u32 = 0; let mut x83: fiat_p384_u1 = 0; let (x82, x83) = fiat_p384_addcarryx_u32(x81, x75, x72); let mut x84: u32 = 0; let mut x85: fiat_p384_u1 = 0; let (x84, x85) = fiat_p384_addcarryx_u32(x83, x73, x70); let mut x86: u32 = 0; let mut x87: fiat_p384_u1 = 0; let (x86, x87) = fiat_p384_addcarryx_u32(x85, x71, x68); let mut x88: u32 = 0; let mut x89: fiat_p384_u1 = 0; let (x88, x89) = fiat_p384_addcarryx_u32(x87, x69, x66); let mut x90: u32 = 0; let mut x91: fiat_p384_u1 = 0; let (x90, x91) = fiat_p384_addcarryx_u32(x89, x67, x64); let mut x92: u32 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u32(x91, x65, x62); let mut x94: u32 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u32(x93, x63, x60); let x96: u32 = ((x95 as u32) + x61); let mut x97: u32 = 0; let mut x98: fiat_p384_u1 = 0; let (x97, x98) = fiat_p384_addcarryx_u32(0x0, x35, x78); let mut x99: u32 = 0; let mut x100: fiat_p384_u1 = 0; let (x99, x100) = fiat_p384_addcarryx_u32(x98, x37, x79); let mut x101: u32 = 0; let mut x102: fiat_p384_u1 = 0; let (x101, x102) = fiat_p384_addcarryx_u32(x100, x39, (0x0 as u32)); let mut x103: u32 = 0; let mut x104: fiat_p384_u1 = 0; let (x103, x104) = fiat_p384_addcarryx_u32(x102, x41, x76); let mut x105: u32 = 0; let mut x106: fiat_p384_u1 = 0; let (x105, x106) = fiat_p384_addcarryx_u32(x104, x43, x80); let mut x107: u32 = 0; let mut x108: fiat_p384_u1 = 0; let (x107, x108) = fiat_p384_addcarryx_u32(x106, x45, x82); let mut x109: u32 = 0; let mut x110: fiat_p384_u1 = 0; let (x109, x110) = fiat_p384_addcarryx_u32(x108, x47, x84); let mut x111: u32 = 0; let mut x112: fiat_p384_u1 = 0; let (x111, x112) = fiat_p384_addcarryx_u32(x110, x49, x86); let mut x113: u32 = 0; let mut x114: fiat_p384_u1 = 0; let (x113, x114) = fiat_p384_addcarryx_u32(x112, x51, x88); let mut x115: u32 = 0; let mut x116: fiat_p384_u1 = 0; let (x115, x116) = fiat_p384_addcarryx_u32(x114, x53, x90); let mut x117: u32 = 0; let mut x118: fiat_p384_u1 = 0; let (x117, x118) = fiat_p384_addcarryx_u32(x116, x55, x92); let mut x119: u32 = 0; let mut x120: fiat_p384_u1 = 0; let (x119, x120) = fiat_p384_addcarryx_u32(x118, x57, x94); let mut x121: u32 = 0; let mut x122: fiat_p384_u1 = 0; let (x121, x122) = fiat_p384_addcarryx_u32(x120, x59, x96); let mut x123: u32 = 0; let mut x124: u32 = 0; let (x123, x124) = fiat_p384_mulx_u32(x1, (arg1[11])); let mut x125: u32 = 0; let mut x126: u32 = 0; let (x125, x126) = fiat_p384_mulx_u32(x1, (arg1[10])); let mut x127: u32 = 0; let mut x128: u32 = 0; let (x127, x128) = fiat_p384_mulx_u32(x1, (arg1[9])); let mut x129: u32 = 0; let mut x130: u32 = 0; let (x129, x130) = fiat_p384_mulx_u32(x1, (arg1[8])); let mut x131: u32 = 0; let mut x132: u32 = 0; let (x131, x132) = fiat_p384_mulx_u32(x1, (arg1[7])); let mut x133: u32 = 0; let mut x134: u32 = 0; let (x133, x134) = fiat_p384_mulx_u32(x1, (arg1[6])); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_mulx_u32(x1, (arg1[5])); let mut x137: u32 = 0; let mut x138: u32 = 0; let (x137, x138) = fiat_p384_mulx_u32(x1, (arg1[4])); let mut x139: u32 = 0; let mut x140: u32 = 0; let (x139, x140) = fiat_p384_mulx_u32(x1, (arg1[3])); let mut x141: u32 = 0; let mut x142: u32 = 0; let (x141, x142) = fiat_p384_mulx_u32(x1, (arg1[2])); let mut x143: u32 = 0; let mut x144: u32 = 0; let (x143, x144) = fiat_p384_mulx_u32(x1, (arg1[1])); let mut x145: u32 = 0; let mut x146: u32 = 0; let (x145, x146) = fiat_p384_mulx_u32(x1, (arg1[0])); let mut x147: u32 = 0; let mut x148: fiat_p384_u1 = 0; let (x147, x148) = fiat_p384_addcarryx_u32(0x0, x146, x143); let mut x149: u32 = 0; let mut x150: fiat_p384_u1 = 0; let (x149, x150) = fiat_p384_addcarryx_u32(x148, x144, x141); let mut x151: u32 = 0; let mut x152: fiat_p384_u1 = 0; let (x151, x152) = fiat_p384_addcarryx_u32(x150, x142, x139); let mut x153: u32 = 0; let mut x154: fiat_p384_u1 = 0; let (x153, x154) = fiat_p384_addcarryx_u32(x152, x140, x137); let mut x155: u32 = 0; let mut x156: fiat_p384_u1 = 0; let (x155, x156) = fiat_p384_addcarryx_u32(x154, x138, x135); let mut x157: u32 = 0; let mut x158: fiat_p384_u1 = 0; let (x157, x158) = fiat_p384_addcarryx_u32(x156, x136, x133); let mut x159: u32 = 0; let mut x160: fiat_p384_u1 = 0; let (x159, x160) = fiat_p384_addcarryx_u32(x158, x134, x131); let mut x161: u32 = 0; let mut x162: fiat_p384_u1 = 0; let (x161, x162) = fiat_p384_addcarryx_u32(x160, x132, x129); let mut x163: u32 = 0; let mut x164: fiat_p384_u1 = 0; let (x163, x164) = fiat_p384_addcarryx_u32(x162, x130, x127); let mut x165: u32 = 0; let mut x166: fiat_p384_u1 = 0; let (x165, x166) = fiat_p384_addcarryx_u32(x164, x128, x125); let mut x167: u32 = 0; let mut x168: fiat_p384_u1 = 0; let (x167, x168) = fiat_p384_addcarryx_u32(x166, x126, x123); let x169: u32 = ((x168 as u32) + x124); let mut x170: u32 = 0; let mut x171: fiat_p384_u1 = 0; let (x170, x171) = fiat_p384_addcarryx_u32(0x0, x99, x145); let mut x172: u32 = 0; let mut x173: fiat_p384_u1 = 0; let (x172, x173) = fiat_p384_addcarryx_u32(x171, x101, x147); let mut x174: u32 = 0; let mut x175: fiat_p384_u1 = 0; let (x174, x175) = fiat_p384_addcarryx_u32(x173, x103, x149); let mut x176: u32 = 0; let mut x177: fiat_p384_u1 = 0; let (x176, x177) = fiat_p384_addcarryx_u32(x175, x105, x151); let mut x178: u32 = 0; let mut x179: fiat_p384_u1 = 0; let (x178, x179) = fiat_p384_addcarryx_u32(x177, x107, x153); let mut x180: u32 = 0; let mut x181: fiat_p384_u1 = 0; let (x180, x181) = fiat_p384_addcarryx_u32(x179, x109, x155); let mut x182: u32 = 0; let mut x183: fiat_p384_u1 = 0; let (x182, x183) = fiat_p384_addcarryx_u32(x181, x111, x157); let mut x184: u32 = 0; let mut x185: fiat_p384_u1 = 0; let (x184, x185) = fiat_p384_addcarryx_u32(x183, x113, x159); let mut x186: u32 = 0; let mut x187: fiat_p384_u1 = 0; let (x186, x187) = fiat_p384_addcarryx_u32(x185, x115, x161); let mut x188: u32 = 0; let mut x189: fiat_p384_u1 = 0; let (x188, x189) = fiat_p384_addcarryx_u32(x187, x117, x163); let mut x190: u32 = 0; let mut x191: fiat_p384_u1 = 0; let (x190, x191) = fiat_p384_addcarryx_u32(x189, x119, x165); let mut x192: u32 = 0; let mut x193: fiat_p384_u1 = 0; let (x192, x193) = fiat_p384_addcarryx_u32(x191, x121, x167); let mut x194: u32 = 0; let mut x195: fiat_p384_u1 = 0; let (x194, x195) = fiat_p384_addcarryx_u32(x193, (x122 as u32), x169); let mut x196: u32 = 0; let mut x197: u32 = 0; let (x196, x197) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x198: u32 = 0; let mut x199: u32 = 0; let (x198, x199) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x200: u32 = 0; let mut x201: u32 = 0; let (x200, x201) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x202: u32 = 0; let mut x203: u32 = 0; let (x202, x203) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x204: u32 = 0; let mut x205: u32 = 0; let (x204, x205) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x206: u32 = 0; let mut x207: u32 = 0; let (x206, x207) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x208: u32 = 0; let mut x209: u32 = 0; let (x208, x209) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x210: u32 = 0; let mut x211: u32 = 0; let (x210, x211) = fiat_p384_mulx_u32(x170, 0xfffffffe); let mut x212: u32 = 0; let mut x213: u32 = 0; let (x212, x213) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_mulx_u32(x170, 0xffffffff); let mut x216: u32 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u32(0x0, x213, x210); let mut x218: u32 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u32(x217, x211, x208); let mut x220: u32 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u32(x219, x209, x206); let mut x222: u32 = 0; let mut x223: fiat_p384_u1 = 0; let (x222, x223) = fiat_p384_addcarryx_u32(x221, x207, x204); let mut x224: u32 = 0; let mut x225: fiat_p384_u1 = 0; let (x224, x225) = fiat_p384_addcarryx_u32(x223, x205, x202); let mut x226: u32 = 0; let mut x227: fiat_p384_u1 = 0; let (x226, x227) = fiat_p384_addcarryx_u32(x225, x203, x200); let mut x228: u32 = 0; let mut x229: fiat_p384_u1 = 0; let (x228, x229) = fiat_p384_addcarryx_u32(x227, x201, x198); let mut x230: u32 = 0; let mut x231: fiat_p384_u1 = 0; let (x230, x231) = fiat_p384_addcarryx_u32(x229, x199, x196); let x232: u32 = ((x231 as u32) + x197); let mut x233: u32 = 0; let mut x234: fiat_p384_u1 = 0; let (x233, x234) = fiat_p384_addcarryx_u32(0x0, x170, x214); let mut x235: u32 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u32(x234, x172, x215); let mut x237: u32 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u32(x236, x174, (0x0 as u32)); let mut x239: u32 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u32(x238, x176, x212); let mut x241: u32 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u32(x240, x178, x216); let mut x243: u32 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u32(x242, x180, x218); let mut x245: u32 = 0; let mut x246: fiat_p384_u1 = 0; let (x245, x246) = fiat_p384_addcarryx_u32(x244, x182, x220); let mut x247: u32 = 0; let mut x248: fiat_p384_u1 = 0; let (x247, x248) = fiat_p384_addcarryx_u32(x246, x184, x222); let mut x249: u32 = 0; let mut x250: fiat_p384_u1 = 0; let (x249, x250) = fiat_p384_addcarryx_u32(x248, x186, x224); let mut x251: u32 = 0; let mut x252: fiat_p384_u1 = 0; let (x251, x252) = fiat_p384_addcarryx_u32(x250, x188, x226); let mut x253: u32 = 0; let mut x254: fiat_p384_u1 = 0; let (x253, x254) = fiat_p384_addcarryx_u32(x252, x190, x228); let mut x255: u32 = 0; let mut x256: fiat_p384_u1 = 0; let (x255, x256) = fiat_p384_addcarryx_u32(x254, x192, x230); let mut x257: u32 = 0; let mut x258: fiat_p384_u1 = 0; let (x257, x258) = fiat_p384_addcarryx_u32(x256, x194, x232); let x259: u32 = ((x258 as u32) + (x195 as u32)); let mut x260: u32 = 0; let mut x261: u32 = 0; let (x260, x261) = fiat_p384_mulx_u32(x2, (arg1[11])); let mut x262: u32 = 0; let mut x263: u32 = 0; let (x262, x263) = fiat_p384_mulx_u32(x2, (arg1[10])); let mut x264: u32 = 0; let mut x265: u32 = 0; let (x264, x265) = fiat_p384_mulx_u32(x2, (arg1[9])); let mut x266: u32 = 0; let mut x267: u32 = 0; let (x266, x267) = fiat_p384_mulx_u32(x2, (arg1[8])); let mut x268: u32 = 0; let mut x269: u32 = 0; let (x268, x269) = fiat_p384_mulx_u32(x2, (arg1[7])); let mut x270: u32 = 0; let mut x271: u32 = 0; let (x270, x271) = fiat_p384_mulx_u32(x2, (arg1[6])); let mut x272: u32 = 0; let mut x273: u32 = 0; let (x272, x273) = fiat_p384_mulx_u32(x2, (arg1[5])); let mut x274: u32 = 0; let mut x275: u32 = 0; let (x274, x275) = fiat_p384_mulx_u32(x2, (arg1[4])); let mut x276: u32 = 0; let mut x277: u32 = 0; let (x276, x277) = fiat_p384_mulx_u32(x2, (arg1[3])); let mut x278: u32 = 0; let mut x279: u32 = 0; let (x278, x279) = fiat_p384_mulx_u32(x2, (arg1[2])); let mut x280: u32 = 0; let mut x281: u32 = 0; let (x280, x281) = fiat_p384_mulx_u32(x2, (arg1[1])); let mut x282: u32 = 0; let mut x283: u32 = 0; let (x282, x283) = fiat_p384_mulx_u32(x2, (arg1[0])); let mut x284: u32 = 0; let mut x285: fiat_p384_u1 = 0; let (x284, x285) = fiat_p384_addcarryx_u32(0x0, x283, x280); let mut x286: u32 = 0; let mut x287: fiat_p384_u1 = 0; let (x286, x287) = fiat_p384_addcarryx_u32(x285, x281, x278); let mut x288: u32 = 0; let mut x289: fiat_p384_u1 = 0; let (x288, x289) = fiat_p384_addcarryx_u32(x287, x279, x276); let mut x290: u32 = 0; let mut x291: fiat_p384_u1 = 0; let (x290, x291) = fiat_p384_addcarryx_u32(x289, x277, x274); let mut x292: u32 = 0; let mut x293: fiat_p384_u1 = 0; let (x292, x293) = fiat_p384_addcarryx_u32(x291, x275, x272); let mut x294: u32 = 0; let mut x295: fiat_p384_u1 = 0; let (x294, x295) = fiat_p384_addcarryx_u32(x293, x273, x270); let mut x296: u32 = 0; let mut x297: fiat_p384_u1 = 0; let (x296, x297) = fiat_p384_addcarryx_u32(x295, x271, x268); let mut x298: u32 = 0; let mut x299: fiat_p384_u1 = 0; let (x298, x299) = fiat_p384_addcarryx_u32(x297, x269, x266); let mut x300: u32 = 0; let mut x301: fiat_p384_u1 = 0; let (x300, x301) = fiat_p384_addcarryx_u32(x299, x267, x264); let mut x302: u32 = 0; let mut x303: fiat_p384_u1 = 0; let (x302, x303) = fiat_p384_addcarryx_u32(x301, x265, x262); let mut x304: u32 = 0; let mut x305: fiat_p384_u1 = 0; let (x304, x305) = fiat_p384_addcarryx_u32(x303, x263, x260); let x306: u32 = ((x305 as u32) + x261); let mut x307: u32 = 0; let mut x308: fiat_p384_u1 = 0; let (x307, x308) = fiat_p384_addcarryx_u32(0x0, x235, x282); let mut x309: u32 = 0; let mut x310: fiat_p384_u1 = 0; let (x309, x310) = fiat_p384_addcarryx_u32(x308, x237, x284); let mut x311: u32 = 0; let mut x312: fiat_p384_u1 = 0; let (x311, x312) = fiat_p384_addcarryx_u32(x310, x239, x286); let mut x313: u32 = 0; let mut x314: fiat_p384_u1 = 0; let (x313, x314) = fiat_p384_addcarryx_u32(x312, x241, x288); let mut x315: u32 = 0; let mut x316: fiat_p384_u1 = 0; let (x315, x316) = fiat_p384_addcarryx_u32(x314, x243, x290); let mut x317: u32 = 0; let mut x318: fiat_p384_u1 = 0; let (x317, x318) = fiat_p384_addcarryx_u32(x316, x245, x292); let mut x319: u32 = 0; let mut x320: fiat_p384_u1 = 0; let (x319, x320) = fiat_p384_addcarryx_u32(x318, x247, x294); let mut x321: u32 = 0; let mut x322: fiat_p384_u1 = 0; let (x321, x322) = fiat_p384_addcarryx_u32(x320, x249, x296); let mut x323: u32 = 0; let mut x324: fiat_p384_u1 = 0; let (x323, x324) = fiat_p384_addcarryx_u32(x322, x251, x298); let mut x325: u32 = 0; let mut x326: fiat_p384_u1 = 0; let (x325, x326) = fiat_p384_addcarryx_u32(x324, x253, x300); let mut x327: u32 = 0; let mut x328: fiat_p384_u1 = 0; let (x327, x328) = fiat_p384_addcarryx_u32(x326, x255, x302); let mut x329: u32 = 0; let mut x330: fiat_p384_u1 = 0; let (x329, x330) = fiat_p384_addcarryx_u32(x328, x257, x304); let mut x331: u32 = 0; let mut x332: fiat_p384_u1 = 0; let (x331, x332) = fiat_p384_addcarryx_u32(x330, x259, x306); let mut x333: u32 = 0; let mut x334: u32 = 0; let (x333, x334) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x335: u32 = 0; let mut x336: u32 = 0; let (x335, x336) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x337: u32 = 0; let mut x338: u32 = 0; let (x337, x338) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x339: u32 = 0; let mut x340: u32 = 0; let (x339, x340) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x341: u32 = 0; let mut x342: u32 = 0; let (x341, x342) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x343: u32 = 0; let mut x344: u32 = 0; let (x343, x344) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x345: u32 = 0; let mut x346: u32 = 0; let (x345, x346) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x347: u32 = 0; let mut x348: u32 = 0; let (x347, x348) = fiat_p384_mulx_u32(x307, 0xfffffffe); let mut x349: u32 = 0; let mut x350: u32 = 0; let (x349, x350) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x351: u32 = 0; let mut x352: u32 = 0; let (x351, x352) = fiat_p384_mulx_u32(x307, 0xffffffff); let mut x353: u32 = 0; let mut x354: fiat_p384_u1 = 0; let (x353, x354) = fiat_p384_addcarryx_u32(0x0, x350, x347); let mut x355: u32 = 0; let mut x356: fiat_p384_u1 = 0; let (x355, x356) = fiat_p384_addcarryx_u32(x354, x348, x345); let mut x357: u32 = 0; let mut x358: fiat_p384_u1 = 0; let (x357, x358) = fiat_p384_addcarryx_u32(x356, x346, x343); let mut x359: u32 = 0; let mut x360: fiat_p384_u1 = 0; let (x359, x360) = fiat_p384_addcarryx_u32(x358, x344, x341); let mut x361: u32 = 0; let mut x362: fiat_p384_u1 = 0; let (x361, x362) = fiat_p384_addcarryx_u32(x360, x342, x339); let mut x363: u32 = 0; let mut x364: fiat_p384_u1 = 0; let (x363, x364) = fiat_p384_addcarryx_u32(x362, x340, x337); let mut x365: u32 = 0; let mut x366: fiat_p384_u1 = 0; let (x365, x366) = fiat_p384_addcarryx_u32(x364, x338, x335); let mut x367: u32 = 0; let mut x368: fiat_p384_u1 = 0; let (x367, x368) = fiat_p384_addcarryx_u32(x366, x336, x333); let x369: u32 = ((x368 as u32) + x334); let mut x370: u32 = 0; let mut x371: fiat_p384_u1 = 0; let (x370, x371) = fiat_p384_addcarryx_u32(0x0, x307, x351); let mut x372: u32 = 0; let mut x373: fiat_p384_u1 = 0; let (x372, x373) = fiat_p384_addcarryx_u32(x371, x309, x352); let mut x374: u32 = 0; let mut x375: fiat_p384_u1 = 0; let (x374, x375) = fiat_p384_addcarryx_u32(x373, x311, (0x0 as u32)); let mut x376: u32 = 0; let mut x377: fiat_p384_u1 = 0; let (x376, x377) = fiat_p384_addcarryx_u32(x375, x313, x349); let mut x378: u32 = 0; let mut x379: fiat_p384_u1 = 0; let (x378, x379) = fiat_p384_addcarryx_u32(x377, x315, x353); let mut x380: u32 = 0; let mut x381: fiat_p384_u1 = 0; let (x380, x381) = fiat_p384_addcarryx_u32(x379, x317, x355); let mut x382: u32 = 0; let mut x383: fiat_p384_u1 = 0; let (x382, x383) = fiat_p384_addcarryx_u32(x381, x319, x357); let mut x384: u32 = 0; let mut x385: fiat_p384_u1 = 0; let (x384, x385) = fiat_p384_addcarryx_u32(x383, x321, x359); let mut x386: u32 = 0; let mut x387: fiat_p384_u1 = 0; let (x386, x387) = fiat_p384_addcarryx_u32(x385, x323, x361); let mut x388: u32 = 0; let mut x389: fiat_p384_u1 = 0; let (x388, x389) = fiat_p384_addcarryx_u32(x387, x325, x363); let mut x390: u32 = 0; let mut x391: fiat_p384_u1 = 0; let (x390, x391) = fiat_p384_addcarryx_u32(x389, x327, x365); let mut x392: u32 = 0; let mut x393: fiat_p384_u1 = 0; let (x392, x393) = fiat_p384_addcarryx_u32(x391, x329, x367); let mut x394: u32 = 0; let mut x395: fiat_p384_u1 = 0; let (x394, x395) = fiat_p384_addcarryx_u32(x393, x331, x369); let x396: u32 = ((x395 as u32) + (x332 as u32)); let mut x397: u32 = 0; let mut x398: u32 = 0; let (x397, x398) = fiat_p384_mulx_u32(x3, (arg1[11])); let mut x399: u32 = 0; let mut x400: u32 = 0; let (x399, x400) = fiat_p384_mulx_u32(x3, (arg1[10])); let mut x401: u32 = 0; let mut x402: u32 = 0; let (x401, x402) = fiat_p384_mulx_u32(x3, (arg1[9])); let mut x403: u32 = 0; let mut x404: u32 = 0; let (x403, x404) = fiat_p384_mulx_u32(x3, (arg1[8])); let mut x405: u32 = 0; let mut x406: u32 = 0; let (x405, x406) = fiat_p384_mulx_u32(x3, (arg1[7])); let mut x407: u32 = 0; let mut x408: u32 = 0; let (x407, x408) = fiat_p384_mulx_u32(x3, (arg1[6])); let mut x409: u32 = 0; let mut x410: u32 = 0; let (x409, x410) = fiat_p384_mulx_u32(x3, (arg1[5])); let mut x411: u32 = 0; let mut x412: u32 = 0; let (x411, x412) = fiat_p384_mulx_u32(x3, (arg1[4])); let mut x413: u32 = 0; let mut x414: u32 = 0; let (x413, x414) = fiat_p384_mulx_u32(x3, (arg1[3])); let mut x415: u32 = 0; let mut x416: u32 = 0; let (x415, x416) = fiat_p384_mulx_u32(x3, (arg1[2])); let mut x417: u32 = 0; let mut x418: u32 = 0; let (x417, x418) = fiat_p384_mulx_u32(x3, (arg1[1])); let mut x419: u32 = 0; let mut x420: u32 = 0; let (x419, x420) = fiat_p384_mulx_u32(x3, (arg1[0])); let mut x421: u32 = 0; let mut x422: fiat_p384_u1 = 0; let (x421, x422) = fiat_p384_addcarryx_u32(0x0, x420, x417); let mut x423: u32 = 0; let mut x424: fiat_p384_u1 = 0; let (x423, x424) = fiat_p384_addcarryx_u32(x422, x418, x415); let mut x425: u32 = 0; let mut x426: fiat_p384_u1 = 0; let (x425, x426) = fiat_p384_addcarryx_u32(x424, x416, x413); let mut x427: u32 = 0; let mut x428: fiat_p384_u1 = 0; let (x427, x428) = fiat_p384_addcarryx_u32(x426, x414, x411); let mut x429: u32 = 0; let mut x430: fiat_p384_u1 = 0; let (x429, x430) = fiat_p384_addcarryx_u32(x428, x412, x409); let mut x431: u32 = 0; let mut x432: fiat_p384_u1 = 0; let (x431, x432) = fiat_p384_addcarryx_u32(x430, x410, x407); let mut x433: u32 = 0; let mut x434: fiat_p384_u1 = 0; let (x433, x434) = fiat_p384_addcarryx_u32(x432, x408, x405); let mut x435: u32 = 0; let mut x436: fiat_p384_u1 = 0; let (x435, x436) = fiat_p384_addcarryx_u32(x434, x406, x403); let mut x437: u32 = 0; let mut x438: fiat_p384_u1 = 0; let (x437, x438) = fiat_p384_addcarryx_u32(x436, x404, x401); let mut x439: u32 = 0; let mut x440: fiat_p384_u1 = 0; let (x439, x440) = fiat_p384_addcarryx_u32(x438, x402, x399); let mut x441: u32 = 0; let mut x442: fiat_p384_u1 = 0; let (x441, x442) = fiat_p384_addcarryx_u32(x440, x400, x397); let x443: u32 = ((x442 as u32) + x398); let mut x444: u32 = 0; let mut x445: fiat_p384_u1 = 0; let (x444, x445) = fiat_p384_addcarryx_u32(0x0, x372, x419); let mut x446: u32 = 0; let mut x447: fiat_p384_u1 = 0; let (x446, x447) = fiat_p384_addcarryx_u32(x445, x374, x421); let mut x448: u32 = 0; let mut x449: fiat_p384_u1 = 0; let (x448, x449) = fiat_p384_addcarryx_u32(x447, x376, x423); let mut x450: u32 = 0; let mut x451: fiat_p384_u1 = 0; let (x450, x451) = fiat_p384_addcarryx_u32(x449, x378, x425); let mut x452: u32 = 0; let mut x453: fiat_p384_u1 = 0; let (x452, x453) = fiat_p384_addcarryx_u32(x451, x380, x427); let mut x454: u32 = 0; let mut x455: fiat_p384_u1 = 0; let (x454, x455) = fiat_p384_addcarryx_u32(x453, x382, x429); let mut x456: u32 = 0; let mut x457: fiat_p384_u1 = 0; let (x456, x457) = fiat_p384_addcarryx_u32(x455, x384, x431); let mut x458: u32 = 0; let mut x459: fiat_p384_u1 = 0; let (x458, x459) = fiat_p384_addcarryx_u32(x457, x386, x433); let mut x460: u32 = 0; let mut x461: fiat_p384_u1 = 0; let (x460, x461) = fiat_p384_addcarryx_u32(x459, x388, x435); let mut x462: u32 = 0; let mut x463: fiat_p384_u1 = 0; let (x462, x463) = fiat_p384_addcarryx_u32(x461, x390, x437); let mut x464: u32 = 0; let mut x465: fiat_p384_u1 = 0; let (x464, x465) = fiat_p384_addcarryx_u32(x463, x392, x439); let mut x466: u32 = 0; let mut x467: fiat_p384_u1 = 0; let (x466, x467) = fiat_p384_addcarryx_u32(x465, x394, x441); let mut x468: u32 = 0; let mut x469: fiat_p384_u1 = 0; let (x468, x469) = fiat_p384_addcarryx_u32(x467, x396, x443); let mut x470: u32 = 0; let mut x471: u32 = 0; let (x470, x471) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x472: u32 = 0; let mut x473: u32 = 0; let (x472, x473) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x474: u32 = 0; let mut x475: u32 = 0; let (x474, x475) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x476: u32 = 0; let mut x477: u32 = 0; let (x476, x477) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x478: u32 = 0; let mut x479: u32 = 0; let (x478, x479) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x480: u32 = 0; let mut x481: u32 = 0; let (x480, x481) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x482: u32 = 0; let mut x483: u32 = 0; let (x482, x483) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x484: u32 = 0; let mut x485: u32 = 0; let (x484, x485) = fiat_p384_mulx_u32(x444, 0xfffffffe); let mut x486: u32 = 0; let mut x487: u32 = 0; let (x486, x487) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x488: u32 = 0; let mut x489: u32 = 0; let (x488, x489) = fiat_p384_mulx_u32(x444, 0xffffffff); let mut x490: u32 = 0; let mut x491: fiat_p384_u1 = 0; let (x490, x491) = fiat_p384_addcarryx_u32(0x0, x487, x484); let mut x492: u32 = 0; let mut x493: fiat_p384_u1 = 0; let (x492, x493) = fiat_p384_addcarryx_u32(x491, x485, x482); let mut x494: u32 = 0; let mut x495: fiat_p384_u1 = 0; let (x494, x495) = fiat_p384_addcarryx_u32(x493, x483, x480); let mut x496: u32 = 0; let mut x497: fiat_p384_u1 = 0; let (x496, x497) = fiat_p384_addcarryx_u32(x495, x481, x478); let mut x498: u32 = 0; let mut x499: fiat_p384_u1 = 0; let (x498, x499) = fiat_p384_addcarryx_u32(x497, x479, x476); let mut x500: u32 = 0; let mut x501: fiat_p384_u1 = 0; let (x500, x501) = fiat_p384_addcarryx_u32(x499, x477, x474); let mut x502: u32 = 0; let mut x503: fiat_p384_u1 = 0; let (x502, x503) = fiat_p384_addcarryx_u32(x501, x475, x472); let mut x504: u32 = 0; let mut x505: fiat_p384_u1 = 0; let (x504, x505) = fiat_p384_addcarryx_u32(x503, x473, x470); let x506: u32 = ((x505 as u32) + x471); let mut x507: u32 = 0; let mut x508: fiat_p384_u1 = 0; let (x507, x508) = fiat_p384_addcarryx_u32(0x0, x444, x488); let mut x509: u32 = 0; let mut x510: fiat_p384_u1 = 0; let (x509, x510) = fiat_p384_addcarryx_u32(x508, x446, x489); let mut x511: u32 = 0; let mut x512: fiat_p384_u1 = 0; let (x511, x512) = fiat_p384_addcarryx_u32(x510, x448, (0x0 as u32)); let mut x513: u32 = 0; let mut x514: fiat_p384_u1 = 0; let (x513, x514) = fiat_p384_addcarryx_u32(x512, x450, x486); let mut x515: u32 = 0; let mut x516: fiat_p384_u1 = 0; let (x515, x516) = fiat_p384_addcarryx_u32(x514, x452, x490); let mut x517: u32 = 0; let mut x518: fiat_p384_u1 = 0; let (x517, x518) = fiat_p384_addcarryx_u32(x516, x454, x492); let mut x519: u32 = 0; let mut x520: fiat_p384_u1 = 0; let (x519, x520) = fiat_p384_addcarryx_u32(x518, x456, x494); let mut x521: u32 = 0; let mut x522: fiat_p384_u1 = 0; let (x521, x522) = fiat_p384_addcarryx_u32(x520, x458, x496); let mut x523: u32 = 0; let mut x524: fiat_p384_u1 = 0; let (x523, x524) = fiat_p384_addcarryx_u32(x522, x460, x498); let mut x525: u32 = 0; let mut x526: fiat_p384_u1 = 0; let (x525, x526) = fiat_p384_addcarryx_u32(x524, x462, x500); let mut x527: u32 = 0; let mut x528: fiat_p384_u1 = 0; let (x527, x528) = fiat_p384_addcarryx_u32(x526, x464, x502); let mut x529: u32 = 0; let mut x530: fiat_p384_u1 = 0; let (x529, x530) = fiat_p384_addcarryx_u32(x528, x466, x504); let mut x531: u32 = 0; let mut x532: fiat_p384_u1 = 0; let (x531, x532) = fiat_p384_addcarryx_u32(x530, x468, x506); let x533: u32 = ((x532 as u32) + (x469 as u32)); let mut x534: u32 = 0; let mut x535: u32 = 0; let (x534, x535) = fiat_p384_mulx_u32(x4, (arg1[11])); let mut x536: u32 = 0; let mut x537: u32 = 0; let (x536, x537) = fiat_p384_mulx_u32(x4, (arg1[10])); let mut x538: u32 = 0; let mut x539: u32 = 0; let (x538, x539) = fiat_p384_mulx_u32(x4, (arg1[9])); let mut x540: u32 = 0; let mut x541: u32 = 0; let (x540, x541) = fiat_p384_mulx_u32(x4, (arg1[8])); let mut x542: u32 = 0; let mut x543: u32 = 0; let (x542, x543) = fiat_p384_mulx_u32(x4, (arg1[7])); let mut x544: u32 = 0; let mut x545: u32 = 0; let (x544, x545) = fiat_p384_mulx_u32(x4, (arg1[6])); let mut x546: u32 = 0; let mut x547: u32 = 0; let (x546, x547) = fiat_p384_mulx_u32(x4, (arg1[5])); let mut x548: u32 = 0; let mut x549: u32 = 0; let (x548, x549) = fiat_p384_mulx_u32(x4, (arg1[4])); let mut x550: u32 = 0; let mut x551: u32 = 0; let (x550, x551) = fiat_p384_mulx_u32(x4, (arg1[3])); let mut x552: u32 = 0; let mut x553: u32 = 0; let (x552, x553) = fiat_p384_mulx_u32(x4, (arg1[2])); let mut x554: u32 = 0; let mut x555: u32 = 0; let (x554, x555) = fiat_p384_mulx_u32(x4, (arg1[1])); let mut x556: u32 = 0; let mut x557: u32 = 0; let (x556, x557) = fiat_p384_mulx_u32(x4, (arg1[0])); let mut x558: u32 = 0; let mut x559: fiat_p384_u1 = 0; let (x558, x559) = fiat_p384_addcarryx_u32(0x0, x557, x554); let mut x560: u32 = 0; let mut x561: fiat_p384_u1 = 0; let (x560, x561) = fiat_p384_addcarryx_u32(x559, x555, x552); let mut x562: u32 = 0; let mut x563: fiat_p384_u1 = 0; let (x562, x563) = fiat_p384_addcarryx_u32(x561, x553, x550); let mut x564: u32 = 0; let mut x565: fiat_p384_u1 = 0; let (x564, x565) = fiat_p384_addcarryx_u32(x563, x551, x548); let mut x566: u32 = 0; let mut x567: fiat_p384_u1 = 0; let (x566, x567) = fiat_p384_addcarryx_u32(x565, x549, x546); let mut x568: u32 = 0; let mut x569: fiat_p384_u1 = 0; let (x568, x569) = fiat_p384_addcarryx_u32(x567, x547, x544); let mut x570: u32 = 0; let mut x571: fiat_p384_u1 = 0; let (x570, x571) = fiat_p384_addcarryx_u32(x569, x545, x542); let mut x572: u32 = 0; let mut x573: fiat_p384_u1 = 0; let (x572, x573) = fiat_p384_addcarryx_u32(x571, x543, x540); let mut x574: u32 = 0; let mut x575: fiat_p384_u1 = 0; let (x574, x575) = fiat_p384_addcarryx_u32(x573, x541, x538); let mut x576: u32 = 0; let mut x577: fiat_p384_u1 = 0; let (x576, x577) = fiat_p384_addcarryx_u32(x575, x539, x536); let mut x578: u32 = 0; let mut x579: fiat_p384_u1 = 0; let (x578, x579) = fiat_p384_addcarryx_u32(x577, x537, x534); let x580: u32 = ((x579 as u32) + x535); let mut x581: u32 = 0; let mut x582: fiat_p384_u1 = 0; let (x581, x582) = fiat_p384_addcarryx_u32(0x0, x509, x556); let mut x583: u32 = 0; let mut x584: fiat_p384_u1 = 0; let (x583, x584) = fiat_p384_addcarryx_u32(x582, x511, x558); let mut x585: u32 = 0; let mut x586: fiat_p384_u1 = 0; let (x585, x586) = fiat_p384_addcarryx_u32(x584, x513, x560); let mut x587: u32 = 0; let mut x588: fiat_p384_u1 = 0; let (x587, x588) = fiat_p384_addcarryx_u32(x586, x515, x562); let mut x589: u32 = 0; let mut x590: fiat_p384_u1 = 0; let (x589, x590) = fiat_p384_addcarryx_u32(x588, x517, x564); let mut x591: u32 = 0; let mut x592: fiat_p384_u1 = 0; let (x591, x592) = fiat_p384_addcarryx_u32(x590, x519, x566); let mut x593: u32 = 0; let mut x594: fiat_p384_u1 = 0; let (x593, x594) = fiat_p384_addcarryx_u32(x592, x521, x568); let mut x595: u32 = 0; let mut x596: fiat_p384_u1 = 0; let (x595, x596) = fiat_p384_addcarryx_u32(x594, x523, x570); let mut x597: u32 = 0; let mut x598: fiat_p384_u1 = 0; let (x597, x598) = fiat_p384_addcarryx_u32(x596, x525, x572); let mut x599: u32 = 0; let mut x600: fiat_p384_u1 = 0; let (x599, x600) = fiat_p384_addcarryx_u32(x598, x527, x574); let mut x601: u32 = 0; let mut x602: fiat_p384_u1 = 0; let (x601, x602) = fiat_p384_addcarryx_u32(x600, x529, x576); let mut x603: u32 = 0; let mut x604: fiat_p384_u1 = 0; let (x603, x604) = fiat_p384_addcarryx_u32(x602, x531, x578); let mut x605: u32 = 0; let mut x606: fiat_p384_u1 = 0; let (x605, x606) = fiat_p384_addcarryx_u32(x604, x533, x580); let mut x607: u32 = 0; let mut x608: u32 = 0; let (x607, x608) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x609: u32 = 0; let mut x610: u32 = 0; let (x609, x610) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x611: u32 = 0; let mut x612: u32 = 0; let (x611, x612) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x613: u32 = 0; let mut x614: u32 = 0; let (x613, x614) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x615: u32 = 0; let mut x616: u32 = 0; let (x615, x616) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x617: u32 = 0; let mut x618: u32 = 0; let (x617, x618) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x619: u32 = 0; let mut x620: u32 = 0; let (x619, x620) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x621: u32 = 0; let mut x622: u32 = 0; let (x621, x622) = fiat_p384_mulx_u32(x581, 0xfffffffe); let mut x623: u32 = 0; let mut x624: u32 = 0; let (x623, x624) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x625: u32 = 0; let mut x626: u32 = 0; let (x625, x626) = fiat_p384_mulx_u32(x581, 0xffffffff); let mut x627: u32 = 0; let mut x628: fiat_p384_u1 = 0; let (x627, x628) = fiat_p384_addcarryx_u32(0x0, x624, x621); let mut x629: u32 = 0; let mut x630: fiat_p384_u1 = 0; let (x629, x630) = fiat_p384_addcarryx_u32(x628, x622, x619); let mut x631: u32 = 0; let mut x632: fiat_p384_u1 = 0; let (x631, x632) = fiat_p384_addcarryx_u32(x630, x620, x617); let mut x633: u32 = 0; let mut x634: fiat_p384_u1 = 0; let (x633, x634) = fiat_p384_addcarryx_u32(x632, x618, x615); let mut x635: u32 = 0; let mut x636: fiat_p384_u1 = 0; let (x635, x636) = fiat_p384_addcarryx_u32(x634, x616, x613); let mut x637: u32 = 0; let mut x638: fiat_p384_u1 = 0; let (x637, x638) = fiat_p384_addcarryx_u32(x636, x614, x611); let mut x639: u32 = 0; let mut x640: fiat_p384_u1 = 0; let (x639, x640) = fiat_p384_addcarryx_u32(x638, x612, x609); let mut x641: u32 = 0; let mut x642: fiat_p384_u1 = 0; let (x641, x642) = fiat_p384_addcarryx_u32(x640, x610, x607); let x643: u32 = ((x642 as u32) + x608); let mut x644: u32 = 0; let mut x645: fiat_p384_u1 = 0; let (x644, x645) = fiat_p384_addcarryx_u32(0x0, x581, x625); let mut x646: u32 = 0; let mut x647: fiat_p384_u1 = 0; let (x646, x647) = fiat_p384_addcarryx_u32(x645, x583, x626); let mut x648: u32 = 0; let mut x649: fiat_p384_u1 = 0; let (x648, x649) = fiat_p384_addcarryx_u32(x647, x585, (0x0 as u32)); let mut x650: u32 = 0; let mut x651: fiat_p384_u1 = 0; let (x650, x651) = fiat_p384_addcarryx_u32(x649, x587, x623); let mut x652: u32 = 0; let mut x653: fiat_p384_u1 = 0; let (x652, x653) = fiat_p384_addcarryx_u32(x651, x589, x627); let mut x654: u32 = 0; let mut x655: fiat_p384_u1 = 0; let (x654, x655) = fiat_p384_addcarryx_u32(x653, x591, x629); let mut x656: u32 = 0; let mut x657: fiat_p384_u1 = 0; let (x656, x657) = fiat_p384_addcarryx_u32(x655, x593, x631); let mut x658: u32 = 0; let mut x659: fiat_p384_u1 = 0; let (x658, x659) = fiat_p384_addcarryx_u32(x657, x595, x633); let mut x660: u32 = 0; let mut x661: fiat_p384_u1 = 0; let (x660, x661) = fiat_p384_addcarryx_u32(x659, x597, x635); let mut x662: u32 = 0; let mut x663: fiat_p384_u1 = 0; let (x662, x663) = fiat_p384_addcarryx_u32(x661, x599, x637); let mut x664: u32 = 0; let mut x665: fiat_p384_u1 = 0; let (x664, x665) = fiat_p384_addcarryx_u32(x663, x601, x639); let mut x666: u32 = 0; let mut x667: fiat_p384_u1 = 0; let (x666, x667) = fiat_p384_addcarryx_u32(x665, x603, x641); let mut x668: u32 = 0; let mut x669: fiat_p384_u1 = 0; let (x668, x669) = fiat_p384_addcarryx_u32(x667, x605, x643); let x670: u32 = ((x669 as u32) + (x606 as u32)); let mut x671: u32 = 0; let mut x672: u32 = 0; let (x671, x672) = fiat_p384_mulx_u32(x5, (arg1[11])); let mut x673: u32 = 0; let mut x674: u32 = 0; let (x673, x674) = fiat_p384_mulx_u32(x5, (arg1[10])); let mut x675: u32 = 0; let mut x676: u32 = 0; let (x675, x676) = fiat_p384_mulx_u32(x5, (arg1[9])); let mut x677: u32 = 0; let mut x678: u32 = 0; let (x677, x678) = fiat_p384_mulx_u32(x5, (arg1[8])); let mut x679: u32 = 0; let mut x680: u32 = 0; let (x679, x680) = fiat_p384_mulx_u32(x5, (arg1[7])); let mut x681: u32 = 0; let mut x682: u32 = 0; let (x681, x682) = fiat_p384_mulx_u32(x5, (arg1[6])); let mut x683: u32 = 0; let mut x684: u32 = 0; let (x683, x684) = fiat_p384_mulx_u32(x5, (arg1[5])); let mut x685: u32 = 0; let mut x686: u32 = 0; let (x685, x686) = fiat_p384_mulx_u32(x5, (arg1[4])); let mut x687: u32 = 0; let mut x688: u32 = 0; let (x687, x688) = fiat_p384_mulx_u32(x5, (arg1[3])); let mut x689: u32 = 0; let mut x690: u32 = 0; let (x689, x690) = fiat_p384_mulx_u32(x5, (arg1[2])); let mut x691: u32 = 0; let mut x692: u32 = 0; let (x691, x692) = fiat_p384_mulx_u32(x5, (arg1[1])); let mut x693: u32 = 0; let mut x694: u32 = 0; let (x693, x694) = fiat_p384_mulx_u32(x5, (arg1[0])); let mut x695: u32 = 0; let mut x696: fiat_p384_u1 = 0; let (x695, x696) = fiat_p384_addcarryx_u32(0x0, x694, x691); let mut x697: u32 = 0; let mut x698: fiat_p384_u1 = 0; let (x697, x698) = fiat_p384_addcarryx_u32(x696, x692, x689); let mut x699: u32 = 0; let mut x700: fiat_p384_u1 = 0; let (x699, x700) = fiat_p384_addcarryx_u32(x698, x690, x687); let mut x701: u32 = 0; let mut x702: fiat_p384_u1 = 0; let (x701, x702) = fiat_p384_addcarryx_u32(x700, x688, x685); let mut x703: u32 = 0; let mut x704: fiat_p384_u1 = 0; let (x703, x704) = fiat_p384_addcarryx_u32(x702, x686, x683); let mut x705: u32 = 0; let mut x706: fiat_p384_u1 = 0; let (x705, x706) = fiat_p384_addcarryx_u32(x704, x684, x681); let mut x707: u32 = 0; let mut x708: fiat_p384_u1 = 0; let (x707, x708) = fiat_p384_addcarryx_u32(x706, x682, x679); let mut x709: u32 = 0; let mut x710: fiat_p384_u1 = 0; let (x709, x710) = fiat_p384_addcarryx_u32(x708, x680, x677); let mut x711: u32 = 0; let mut x712: fiat_p384_u1 = 0; let (x711, x712) = fiat_p384_addcarryx_u32(x710, x678, x675); let mut x713: u32 = 0; let mut x714: fiat_p384_u1 = 0; let (x713, x714) = fiat_p384_addcarryx_u32(x712, x676, x673); let mut x715: u32 = 0; let mut x716: fiat_p384_u1 = 0; let (x715, x716) = fiat_p384_addcarryx_u32(x714, x674, x671); let x717: u32 = ((x716 as u32) + x672); let mut x718: u32 = 0; let mut x719: fiat_p384_u1 = 0; let (x718, x719) = fiat_p384_addcarryx_u32(0x0, x646, x693); let mut x720: u32 = 0; let mut x721: fiat_p384_u1 = 0; let (x720, x721) = fiat_p384_addcarryx_u32(x719, x648, x695); let mut x722: u32 = 0; let mut x723: fiat_p384_u1 = 0; let (x722, x723) = fiat_p384_addcarryx_u32(x721, x650, x697); let mut x724: u32 = 0; let mut x725: fiat_p384_u1 = 0; let (x724, x725) = fiat_p384_addcarryx_u32(x723, x652, x699); let mut x726: u32 = 0; let mut x727: fiat_p384_u1 = 0; let (x726, x727) = fiat_p384_addcarryx_u32(x725, x654, x701); let mut x728: u32 = 0; let mut x729: fiat_p384_u1 = 0; let (x728, x729) = fiat_p384_addcarryx_u32(x727, x656, x703); let mut x730: u32 = 0; let mut x731: fiat_p384_u1 = 0; let (x730, x731) = fiat_p384_addcarryx_u32(x729, x658, x705); let mut x732: u32 = 0; let mut x733: fiat_p384_u1 = 0; let (x732, x733) = fiat_p384_addcarryx_u32(x731, x660, x707); let mut x734: u32 = 0; let mut x735: fiat_p384_u1 = 0; let (x734, x735) = fiat_p384_addcarryx_u32(x733, x662, x709); let mut x736: u32 = 0; let mut x737: fiat_p384_u1 = 0; let (x736, x737) = fiat_p384_addcarryx_u32(x735, x664, x711); let mut x738: u32 = 0; let mut x739: fiat_p384_u1 = 0; let (x738, x739) = fiat_p384_addcarryx_u32(x737, x666, x713); let mut x740: u32 = 0; let mut x741: fiat_p384_u1 = 0; let (x740, x741) = fiat_p384_addcarryx_u32(x739, x668, x715); let mut x742: u32 = 0; let mut x743: fiat_p384_u1 = 0; let (x742, x743) = fiat_p384_addcarryx_u32(x741, x670, x717); let mut x744: u32 = 0; let mut x745: u32 = 0; let (x744, x745) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x746: u32 = 0; let mut x747: u32 = 0; let (x746, x747) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x748: u32 = 0; let mut x749: u32 = 0; let (x748, x749) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x750: u32 = 0; let mut x751: u32 = 0; let (x750, x751) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x752: u32 = 0; let mut x753: u32 = 0; let (x752, x753) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x754: u32 = 0; let mut x755: u32 = 0; let (x754, x755) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x756: u32 = 0; let mut x757: u32 = 0; let (x756, x757) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x758: u32 = 0; let mut x759: u32 = 0; let (x758, x759) = fiat_p384_mulx_u32(x718, 0xfffffffe); let mut x760: u32 = 0; let mut x761: u32 = 0; let (x760, x761) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x762: u32 = 0; let mut x763: u32 = 0; let (x762, x763) = fiat_p384_mulx_u32(x718, 0xffffffff); let mut x764: u32 = 0; let mut x765: fiat_p384_u1 = 0; let (x764, x765) = fiat_p384_addcarryx_u32(0x0, x761, x758); let mut x766: u32 = 0; let mut x767: fiat_p384_u1 = 0; let (x766, x767) = fiat_p384_addcarryx_u32(x765, x759, x756); let mut x768: u32 = 0; let mut x769: fiat_p384_u1 = 0; let (x768, x769) = fiat_p384_addcarryx_u32(x767, x757, x754); let mut x770: u32 = 0; let mut x771: fiat_p384_u1 = 0; let (x770, x771) = fiat_p384_addcarryx_u32(x769, x755, x752); let mut x772: u32 = 0; let mut x773: fiat_p384_u1 = 0; let (x772, x773) = fiat_p384_addcarryx_u32(x771, x753, x750); let mut x774: u32 = 0; let mut x775: fiat_p384_u1 = 0; let (x774, x775) = fiat_p384_addcarryx_u32(x773, x751, x748); let mut x776: u32 = 0; let mut x777: fiat_p384_u1 = 0; let (x776, x777) = fiat_p384_addcarryx_u32(x775, x749, x746); let mut x778: u32 = 0; let mut x779: fiat_p384_u1 = 0; let (x778, x779) = fiat_p384_addcarryx_u32(x777, x747, x744); let x780: u32 = ((x779 as u32) + x745); let mut x781: u32 = 0; let mut x782: fiat_p384_u1 = 0; let (x781, x782) = fiat_p384_addcarryx_u32(0x0, x718, x762); let mut x783: u32 = 0; let mut x784: fiat_p384_u1 = 0; let (x783, x784) = fiat_p384_addcarryx_u32(x782, x720, x763); let mut x785: u32 = 0; let mut x786: fiat_p384_u1 = 0; let (x785, x786) = fiat_p384_addcarryx_u32(x784, x722, (0x0 as u32)); let mut x787: u32 = 0; let mut x788: fiat_p384_u1 = 0; let (x787, x788) = fiat_p384_addcarryx_u32(x786, x724, x760); let mut x789: u32 = 0; let mut x790: fiat_p384_u1 = 0; let (x789, x790) = fiat_p384_addcarryx_u32(x788, x726, x764); let mut x791: u32 = 0; let mut x792: fiat_p384_u1 = 0; let (x791, x792) = fiat_p384_addcarryx_u32(x790, x728, x766); let mut x793: u32 = 0; let mut x794: fiat_p384_u1 = 0; let (x793, x794) = fiat_p384_addcarryx_u32(x792, x730, x768); let mut x795: u32 = 0; let mut x796: fiat_p384_u1 = 0; let (x795, x796) = fiat_p384_addcarryx_u32(x794, x732, x770); let mut x797: u32 = 0; let mut x798: fiat_p384_u1 = 0; let (x797, x798) = fiat_p384_addcarryx_u32(x796, x734, x772); let mut x799: u32 = 0; let mut x800: fiat_p384_u1 = 0; let (x799, x800) = fiat_p384_addcarryx_u32(x798, x736, x774); let mut x801: u32 = 0; let mut x802: fiat_p384_u1 = 0; let (x801, x802) = fiat_p384_addcarryx_u32(x800, x738, x776); let mut x803: u32 = 0; let mut x804: fiat_p384_u1 = 0; let (x803, x804) = fiat_p384_addcarryx_u32(x802, x740, x778); let mut x805: u32 = 0; let mut x806: fiat_p384_u1 = 0; let (x805, x806) = fiat_p384_addcarryx_u32(x804, x742, x780); let x807: u32 = ((x806 as u32) + (x743 as u32)); let mut x808: u32 = 0; let mut x809: u32 = 0; let (x808, x809) = fiat_p384_mulx_u32(x6, (arg1[11])); let mut x810: u32 = 0; let mut x811: u32 = 0; let (x810, x811) = fiat_p384_mulx_u32(x6, (arg1[10])); let mut x812: u32 = 0; let mut x813: u32 = 0; let (x812, x813) = fiat_p384_mulx_u32(x6, (arg1[9])); let mut x814: u32 = 0; let mut x815: u32 = 0; let (x814, x815) = fiat_p384_mulx_u32(x6, (arg1[8])); let mut x816: u32 = 0; let mut x817: u32 = 0; let (x816, x817) = fiat_p384_mulx_u32(x6, (arg1[7])); let mut x818: u32 = 0; let mut x819: u32 = 0; let (x818, x819) = fiat_p384_mulx_u32(x6, (arg1[6])); let mut x820: u32 = 0; let mut x821: u32 = 0; let (x820, x821) = fiat_p384_mulx_u32(x6, (arg1[5])); let mut x822: u32 = 0; let mut x823: u32 = 0; let (x822, x823) = fiat_p384_mulx_u32(x6, (arg1[4])); let mut x824: u32 = 0; let mut x825: u32 = 0; let (x824, x825) = fiat_p384_mulx_u32(x6, (arg1[3])); let mut x826: u32 = 0; let mut x827: u32 = 0; let (x826, x827) = fiat_p384_mulx_u32(x6, (arg1[2])); let mut x828: u32 = 0; let mut x829: u32 = 0; let (x828, x829) = fiat_p384_mulx_u32(x6, (arg1[1])); let mut x830: u32 = 0; let mut x831: u32 = 0; let (x830, x831) = fiat_p384_mulx_u32(x6, (arg1[0])); let mut x832: u32 = 0; let mut x833: fiat_p384_u1 = 0; let (x832, x833) = fiat_p384_addcarryx_u32(0x0, x831, x828); let mut x834: u32 = 0; let mut x835: fiat_p384_u1 = 0; let (x834, x835) = fiat_p384_addcarryx_u32(x833, x829, x826); let mut x836: u32 = 0; let mut x837: fiat_p384_u1 = 0; let (x836, x837) = fiat_p384_addcarryx_u32(x835, x827, x824); let mut x838: u32 = 0; let mut x839: fiat_p384_u1 = 0; let (x838, x839) = fiat_p384_addcarryx_u32(x837, x825, x822); let mut x840: u32 = 0; let mut x841: fiat_p384_u1 = 0; let (x840, x841) = fiat_p384_addcarryx_u32(x839, x823, x820); let mut x842: u32 = 0; let mut x843: fiat_p384_u1 = 0; let (x842, x843) = fiat_p384_addcarryx_u32(x841, x821, x818); let mut x844: u32 = 0; let mut x845: fiat_p384_u1 = 0; let (x844, x845) = fiat_p384_addcarryx_u32(x843, x819, x816); let mut x846: u32 = 0; let mut x847: fiat_p384_u1 = 0; let (x846, x847) = fiat_p384_addcarryx_u32(x845, x817, x814); let mut x848: u32 = 0; let mut x849: fiat_p384_u1 = 0; let (x848, x849) = fiat_p384_addcarryx_u32(x847, x815, x812); let mut x850: u32 = 0; let mut x851: fiat_p384_u1 = 0; let (x850, x851) = fiat_p384_addcarryx_u32(x849, x813, x810); let mut x852: u32 = 0; let mut x853: fiat_p384_u1 = 0; let (x852, x853) = fiat_p384_addcarryx_u32(x851, x811, x808); let x854: u32 = ((x853 as u32) + x809); let mut x855: u32 = 0; let mut x856: fiat_p384_u1 = 0; let (x855, x856) = fiat_p384_addcarryx_u32(0x0, x783, x830); let mut x857: u32 = 0; let mut x858: fiat_p384_u1 = 0; let (x857, x858) = fiat_p384_addcarryx_u32(x856, x785, x832); let mut x859: u32 = 0; let mut x860: fiat_p384_u1 = 0; let (x859, x860) = fiat_p384_addcarryx_u32(x858, x787, x834); let mut x861: u32 = 0; let mut x862: fiat_p384_u1 = 0; let (x861, x862) = fiat_p384_addcarryx_u32(x860, x789, x836); let mut x863: u32 = 0; let mut x864: fiat_p384_u1 = 0; let (x863, x864) = fiat_p384_addcarryx_u32(x862, x791, x838); let mut x865: u32 = 0; let mut x866: fiat_p384_u1 = 0; let (x865, x866) = fiat_p384_addcarryx_u32(x864, x793, x840); let mut x867: u32 = 0; let mut x868: fiat_p384_u1 = 0; let (x867, x868) = fiat_p384_addcarryx_u32(x866, x795, x842); let mut x869: u32 = 0; let mut x870: fiat_p384_u1 = 0; let (x869, x870) = fiat_p384_addcarryx_u32(x868, x797, x844); let mut x871: u32 = 0; let mut x872: fiat_p384_u1 = 0; let (x871, x872) = fiat_p384_addcarryx_u32(x870, x799, x846); let mut x873: u32 = 0; let mut x874: fiat_p384_u1 = 0; let (x873, x874) = fiat_p384_addcarryx_u32(x872, x801, x848); let mut x875: u32 = 0; let mut x876: fiat_p384_u1 = 0; let (x875, x876) = fiat_p384_addcarryx_u32(x874, x803, x850); let mut x877: u32 = 0; let mut x878: fiat_p384_u1 = 0; let (x877, x878) = fiat_p384_addcarryx_u32(x876, x805, x852); let mut x879: u32 = 0; let mut x880: fiat_p384_u1 = 0; let (x879, x880) = fiat_p384_addcarryx_u32(x878, x807, x854); let mut x881: u32 = 0; let mut x882: u32 = 0; let (x881, x882) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x883: u32 = 0; let mut x884: u32 = 0; let (x883, x884) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x885: u32 = 0; let mut x886: u32 = 0; let (x885, x886) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x887: u32 = 0; let mut x888: u32 = 0; let (x887, x888) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x889: u32 = 0; let mut x890: u32 = 0; let (x889, x890) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x891: u32 = 0; let mut x892: u32 = 0; let (x891, x892) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x893: u32 = 0; let mut x894: u32 = 0; let (x893, x894) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x895: u32 = 0; let mut x896: u32 = 0; let (x895, x896) = fiat_p384_mulx_u32(x855, 0xfffffffe); let mut x897: u32 = 0; let mut x898: u32 = 0; let (x897, x898) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x899: u32 = 0; let mut x900: u32 = 0; let (x899, x900) = fiat_p384_mulx_u32(x855, 0xffffffff); let mut x901: u32 = 0; let mut x902: fiat_p384_u1 = 0; let (x901, x902) = fiat_p384_addcarryx_u32(0x0, x898, x895); let mut x903: u32 = 0; let mut x904: fiat_p384_u1 = 0; let (x903, x904) = fiat_p384_addcarryx_u32(x902, x896, x893); let mut x905: u32 = 0; let mut x906: fiat_p384_u1 = 0; let (x905, x906) = fiat_p384_addcarryx_u32(x904, x894, x891); let mut x907: u32 = 0; let mut x908: fiat_p384_u1 = 0; let (x907, x908) = fiat_p384_addcarryx_u32(x906, x892, x889); let mut x909: u32 = 0; let mut x910: fiat_p384_u1 = 0; let (x909, x910) = fiat_p384_addcarryx_u32(x908, x890, x887); let mut x911: u32 = 0; let mut x912: fiat_p384_u1 = 0; let (x911, x912) = fiat_p384_addcarryx_u32(x910, x888, x885); let mut x913: u32 = 0; let mut x914: fiat_p384_u1 = 0; let (x913, x914) = fiat_p384_addcarryx_u32(x912, x886, x883); let mut x915: u32 = 0; let mut x916: fiat_p384_u1 = 0; let (x915, x916) = fiat_p384_addcarryx_u32(x914, x884, x881); let x917: u32 = ((x916 as u32) + x882); let mut x918: u32 = 0; let mut x919: fiat_p384_u1 = 0; let (x918, x919) = fiat_p384_addcarryx_u32(0x0, x855, x899); let mut x920: u32 = 0; let mut x921: fiat_p384_u1 = 0; let (x920, x921) = fiat_p384_addcarryx_u32(x919, x857, x900); let mut x922: u32 = 0; let mut x923: fiat_p384_u1 = 0; let (x922, x923) = fiat_p384_addcarryx_u32(x921, x859, (0x0 as u32)); let mut x924: u32 = 0; let mut x925: fiat_p384_u1 = 0; let (x924, x925) = fiat_p384_addcarryx_u32(x923, x861, x897); let mut x926: u32 = 0; let mut x927: fiat_p384_u1 = 0; let (x926, x927) = fiat_p384_addcarryx_u32(x925, x863, x901); let mut x928: u32 = 0; let mut x929: fiat_p384_u1 = 0; let (x928, x929) = fiat_p384_addcarryx_u32(x927, x865, x903); let mut x930: u32 = 0; let mut x931: fiat_p384_u1 = 0; let (x930, x931) = fiat_p384_addcarryx_u32(x929, x867, x905); let mut x932: u32 = 0; let mut x933: fiat_p384_u1 = 0; let (x932, x933) = fiat_p384_addcarryx_u32(x931, x869, x907); let mut x934: u32 = 0; let mut x935: fiat_p384_u1 = 0; let (x934, x935) = fiat_p384_addcarryx_u32(x933, x871, x909); let mut x936: u32 = 0; let mut x937: fiat_p384_u1 = 0; let (x936, x937) = fiat_p384_addcarryx_u32(x935, x873, x911); let mut x938: u32 = 0; let mut x939: fiat_p384_u1 = 0; let (x938, x939) = fiat_p384_addcarryx_u32(x937, x875, x913); let mut x940: u32 = 0; let mut x941: fiat_p384_u1 = 0; let (x940, x941) = fiat_p384_addcarryx_u32(x939, x877, x915); let mut x942: u32 = 0; let mut x943: fiat_p384_u1 = 0; let (x942, x943) = fiat_p384_addcarryx_u32(x941, x879, x917); let x944: u32 = ((x943 as u32) + (x880 as u32)); let mut x945: u32 = 0; let mut x946: u32 = 0; let (x945, x946) = fiat_p384_mulx_u32(x7, (arg1[11])); let mut x947: u32 = 0; let mut x948: u32 = 0; let (x947, x948) = fiat_p384_mulx_u32(x7, (arg1[10])); let mut x949: u32 = 0; let mut x950: u32 = 0; let (x949, x950) = fiat_p384_mulx_u32(x7, (arg1[9])); let mut x951: u32 = 0; let mut x952: u32 = 0; let (x951, x952) = fiat_p384_mulx_u32(x7, (arg1[8])); let mut x953: u32 = 0; let mut x954: u32 = 0; let (x953, x954) = fiat_p384_mulx_u32(x7, (arg1[7])); let mut x955: u32 = 0; let mut x956: u32 = 0; let (x955, x956) = fiat_p384_mulx_u32(x7, (arg1[6])); let mut x957: u32 = 0; let mut x958: u32 = 0; let (x957, x958) = fiat_p384_mulx_u32(x7, (arg1[5])); let mut x959: u32 = 0; let mut x960: u32 = 0; let (x959, x960) = fiat_p384_mulx_u32(x7, (arg1[4])); let mut x961: u32 = 0; let mut x962: u32 = 0; let (x961, x962) = fiat_p384_mulx_u32(x7, (arg1[3])); let mut x963: u32 = 0; let mut x964: u32 = 0; let (x963, x964) = fiat_p384_mulx_u32(x7, (arg1[2])); let mut x965: u32 = 0; let mut x966: u32 = 0; let (x965, x966) = fiat_p384_mulx_u32(x7, (arg1[1])); let mut x967: u32 = 0; let mut x968: u32 = 0; let (x967, x968) = fiat_p384_mulx_u32(x7, (arg1[0])); let mut x969: u32 = 0; let mut x970: fiat_p384_u1 = 0; let (x969, x970) = fiat_p384_addcarryx_u32(0x0, x968, x965); let mut x971: u32 = 0; let mut x972: fiat_p384_u1 = 0; let (x971, x972) = fiat_p384_addcarryx_u32(x970, x966, x963); let mut x973: u32 = 0; let mut x974: fiat_p384_u1 = 0; let (x973, x974) = fiat_p384_addcarryx_u32(x972, x964, x961); let mut x975: u32 = 0; let mut x976: fiat_p384_u1 = 0; let (x975, x976) = fiat_p384_addcarryx_u32(x974, x962, x959); let mut x977: u32 = 0; let mut x978: fiat_p384_u1 = 0; let (x977, x978) = fiat_p384_addcarryx_u32(x976, x960, x957); let mut x979: u32 = 0; let mut x980: fiat_p384_u1 = 0; let (x979, x980) = fiat_p384_addcarryx_u32(x978, x958, x955); let mut x981: u32 = 0; let mut x982: fiat_p384_u1 = 0; let (x981, x982) = fiat_p384_addcarryx_u32(x980, x956, x953); let mut x983: u32 = 0; let mut x984: fiat_p384_u1 = 0; let (x983, x984) = fiat_p384_addcarryx_u32(x982, x954, x951); let mut x985: u32 = 0; let mut x986: fiat_p384_u1 = 0; let (x985, x986) = fiat_p384_addcarryx_u32(x984, x952, x949); let mut x987: u32 = 0; let mut x988: fiat_p384_u1 = 0; let (x987, x988) = fiat_p384_addcarryx_u32(x986, x950, x947); let mut x989: u32 = 0; let mut x990: fiat_p384_u1 = 0; let (x989, x990) = fiat_p384_addcarryx_u32(x988, x948, x945); let x991: u32 = ((x990 as u32) + x946); let mut x992: u32 = 0; let mut x993: fiat_p384_u1 = 0; let (x992, x993) = fiat_p384_addcarryx_u32(0x0, x920, x967); let mut x994: u32 = 0; let mut x995: fiat_p384_u1 = 0; let (x994, x995) = fiat_p384_addcarryx_u32(x993, x922, x969); let mut x996: u32 = 0; let mut x997: fiat_p384_u1 = 0; let (x996, x997) = fiat_p384_addcarryx_u32(x995, x924, x971); let mut x998: u32 = 0; let mut x999: fiat_p384_u1 = 0; let (x998, x999) = fiat_p384_addcarryx_u32(x997, x926, x973); let mut x1000: u32 = 0; let mut x1001: fiat_p384_u1 = 0; let (x1000, x1001) = fiat_p384_addcarryx_u32(x999, x928, x975); let mut x1002: u32 = 0; let mut x1003: fiat_p384_u1 = 0; let (x1002, x1003) = fiat_p384_addcarryx_u32(x1001, x930, x977); let mut x1004: u32 = 0; let mut x1005: fiat_p384_u1 = 0; let (x1004, x1005) = fiat_p384_addcarryx_u32(x1003, x932, x979); let mut x1006: u32 = 0; let mut x1007: fiat_p384_u1 = 0; let (x1006, x1007) = fiat_p384_addcarryx_u32(x1005, x934, x981); let mut x1008: u32 = 0; let mut x1009: fiat_p384_u1 = 0; let (x1008, x1009) = fiat_p384_addcarryx_u32(x1007, x936, x983); let mut x1010: u32 = 0; let mut x1011: fiat_p384_u1 = 0; let (x1010, x1011) = fiat_p384_addcarryx_u32(x1009, x938, x985); let mut x1012: u32 = 0; let mut x1013: fiat_p384_u1 = 0; let (x1012, x1013) = fiat_p384_addcarryx_u32(x1011, x940, x987); let mut x1014: u32 = 0; let mut x1015: fiat_p384_u1 = 0; let (x1014, x1015) = fiat_p384_addcarryx_u32(x1013, x942, x989); let mut x1016: u32 = 0; let mut x1017: fiat_p384_u1 = 0; let (x1016, x1017) = fiat_p384_addcarryx_u32(x1015, x944, x991); let mut x1018: u32 = 0; let mut x1019: u32 = 0; let (x1018, x1019) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1020: u32 = 0; let mut x1021: u32 = 0; let (x1020, x1021) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1022: u32 = 0; let mut x1023: u32 = 0; let (x1022, x1023) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1024: u32 = 0; let mut x1025: u32 = 0; let (x1024, x1025) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1026: u32 = 0; let mut x1027: u32 = 0; let (x1026, x1027) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1028: u32 = 0; let mut x1029: u32 = 0; let (x1028, x1029) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1030: u32 = 0; let mut x1031: u32 = 0; let (x1030, x1031) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1032: u32 = 0; let mut x1033: u32 = 0; let (x1032, x1033) = fiat_p384_mulx_u32(x992, 0xfffffffe); let mut x1034: u32 = 0; let mut x1035: u32 = 0; let (x1034, x1035) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1036: u32 = 0; let mut x1037: u32 = 0; let (x1036, x1037) = fiat_p384_mulx_u32(x992, 0xffffffff); let mut x1038: u32 = 0; let mut x1039: fiat_p384_u1 = 0; let (x1038, x1039) = fiat_p384_addcarryx_u32(0x0, x1035, x1032); let mut x1040: u32 = 0; let mut x1041: fiat_p384_u1 = 0; let (x1040, x1041) = fiat_p384_addcarryx_u32(x1039, x1033, x1030); let mut x1042: u32 = 0; let mut x1043: fiat_p384_u1 = 0; let (x1042, x1043) = fiat_p384_addcarryx_u32(x1041, x1031, x1028); let mut x1044: u32 = 0; let mut x1045: fiat_p384_u1 = 0; let (x1044, x1045) = fiat_p384_addcarryx_u32(x1043, x1029, x1026); let mut x1046: u32 = 0; let mut x1047: fiat_p384_u1 = 0; let (x1046, x1047) = fiat_p384_addcarryx_u32(x1045, x1027, x1024); let mut x1048: u32 = 0; let mut x1049: fiat_p384_u1 = 0; let (x1048, x1049) = fiat_p384_addcarryx_u32(x1047, x1025, x1022); let mut x1050: u32 = 0; let mut x1051: fiat_p384_u1 = 0; let (x1050, x1051) = fiat_p384_addcarryx_u32(x1049, x1023, x1020); let mut x1052: u32 = 0; let mut x1053: fiat_p384_u1 = 0; let (x1052, x1053) = fiat_p384_addcarryx_u32(x1051, x1021, x1018); let x1054: u32 = ((x1053 as u32) + x1019); let mut x1055: u32 = 0; let mut x1056: fiat_p384_u1 = 0; let (x1055, x1056) = fiat_p384_addcarryx_u32(0x0, x992, x1036); let mut x1057: u32 = 0; let mut x1058: fiat_p384_u1 = 0; let (x1057, x1058) = fiat_p384_addcarryx_u32(x1056, x994, x1037); let mut x1059: u32 = 0; let mut x1060: fiat_p384_u1 = 0; let (x1059, x1060) = fiat_p384_addcarryx_u32(x1058, x996, (0x0 as u32)); let mut x1061: u32 = 0; let mut x1062: fiat_p384_u1 = 0; let (x1061, x1062) = fiat_p384_addcarryx_u32(x1060, x998, x1034); let mut x1063: u32 = 0; let mut x1064: fiat_p384_u1 = 0; let (x1063, x1064) = fiat_p384_addcarryx_u32(x1062, x1000, x1038); let mut x1065: u32 = 0; let mut x1066: fiat_p384_u1 = 0; let (x1065, x1066) = fiat_p384_addcarryx_u32(x1064, x1002, x1040); let mut x1067: u32 = 0; let mut x1068: fiat_p384_u1 = 0; let (x1067, x1068) = fiat_p384_addcarryx_u32(x1066, x1004, x1042); let mut x1069: u32 = 0; let mut x1070: fiat_p384_u1 = 0; let (x1069, x1070) = fiat_p384_addcarryx_u32(x1068, x1006, x1044); let mut x1071: u32 = 0; let mut x1072: fiat_p384_u1 = 0; let (x1071, x1072) = fiat_p384_addcarryx_u32(x1070, x1008, x1046); let mut x1073: u32 = 0; let mut x1074: fiat_p384_u1 = 0; let (x1073, x1074) = fiat_p384_addcarryx_u32(x1072, x1010, x1048); let mut x1075: u32 = 0; let mut x1076: fiat_p384_u1 = 0; let (x1075, x1076) = fiat_p384_addcarryx_u32(x1074, x1012, x1050); let mut x1077: u32 = 0; let mut x1078: fiat_p384_u1 = 0; let (x1077, x1078) = fiat_p384_addcarryx_u32(x1076, x1014, x1052); let mut x1079: u32 = 0; let mut x1080: fiat_p384_u1 = 0; let (x1079, x1080) = fiat_p384_addcarryx_u32(x1078, x1016, x1054); let x1081: u32 = ((x1080 as u32) + (x1017 as u32)); let mut x1082: u32 = 0; let mut x1083: u32 = 0; let (x1082, x1083) = fiat_p384_mulx_u32(x8, (arg1[11])); let mut x1084: u32 = 0; let mut x1085: u32 = 0; let (x1084, x1085) = fiat_p384_mulx_u32(x8, (arg1[10])); let mut x1086: u32 = 0; let mut x1087: u32 = 0; let (x1086, x1087) = fiat_p384_mulx_u32(x8, (arg1[9])); let mut x1088: u32 = 0; let mut x1089: u32 = 0; let (x1088, x1089) = fiat_p384_mulx_u32(x8, (arg1[8])); let mut x1090: u32 = 0; let mut x1091: u32 = 0; let (x1090, x1091) = fiat_p384_mulx_u32(x8, (arg1[7])); let mut x1092: u32 = 0; let mut x1093: u32 = 0; let (x1092, x1093) = fiat_p384_mulx_u32(x8, (arg1[6])); let mut x1094: u32 = 0; let mut x1095: u32 = 0; let (x1094, x1095) = fiat_p384_mulx_u32(x8, (arg1[5])); let mut x1096: u32 = 0; let mut x1097: u32 = 0; let (x1096, x1097) = fiat_p384_mulx_u32(x8, (arg1[4])); let mut x1098: u32 = 0; let mut x1099: u32 = 0; let (x1098, x1099) = fiat_p384_mulx_u32(x8, (arg1[3])); let mut x1100: u32 = 0; let mut x1101: u32 = 0; let (x1100, x1101) = fiat_p384_mulx_u32(x8, (arg1[2])); let mut x1102: u32 = 0; let mut x1103: u32 = 0; let (x1102, x1103) = fiat_p384_mulx_u32(x8, (arg1[1])); let mut x1104: u32 = 0; let mut x1105: u32 = 0; let (x1104, x1105) = fiat_p384_mulx_u32(x8, (arg1[0])); let mut x1106: u32 = 0; let mut x1107: fiat_p384_u1 = 0; let (x1106, x1107) = fiat_p384_addcarryx_u32(0x0, x1105, x1102); let mut x1108: u32 = 0; let mut x1109: fiat_p384_u1 = 0; let (x1108, x1109) = fiat_p384_addcarryx_u32(x1107, x1103, x1100); let mut x1110: u32 = 0; let mut x1111: fiat_p384_u1 = 0; let (x1110, x1111) = fiat_p384_addcarryx_u32(x1109, x1101, x1098); let mut x1112: u32 = 0; let mut x1113: fiat_p384_u1 = 0; let (x1112, x1113) = fiat_p384_addcarryx_u32(x1111, x1099, x1096); let mut x1114: u32 = 0; let mut x1115: fiat_p384_u1 = 0; let (x1114, x1115) = fiat_p384_addcarryx_u32(x1113, x1097, x1094); let mut x1116: u32 = 0; let mut x1117: fiat_p384_u1 = 0; let (x1116, x1117) = fiat_p384_addcarryx_u32(x1115, x1095, x1092); let mut x1118: u32 = 0; let mut x1119: fiat_p384_u1 = 0; let (x1118, x1119) = fiat_p384_addcarryx_u32(x1117, x1093, x1090); let mut x1120: u32 = 0; let mut x1121: fiat_p384_u1 = 0; let (x1120, x1121) = fiat_p384_addcarryx_u32(x1119, x1091, x1088); let mut x1122: u32 = 0; let mut x1123: fiat_p384_u1 = 0; let (x1122, x1123) = fiat_p384_addcarryx_u32(x1121, x1089, x1086); let mut x1124: u32 = 0; let mut x1125: fiat_p384_u1 = 0; let (x1124, x1125) = fiat_p384_addcarryx_u32(x1123, x1087, x1084); let mut x1126: u32 = 0; let mut x1127: fiat_p384_u1 = 0; let (x1126, x1127) = fiat_p384_addcarryx_u32(x1125, x1085, x1082); let x1128: u32 = ((x1127 as u32) + x1083); let mut x1129: u32 = 0; let mut x1130: fiat_p384_u1 = 0; let (x1129, x1130) = fiat_p384_addcarryx_u32(0x0, x1057, x1104); let mut x1131: u32 = 0; let mut x1132: fiat_p384_u1 = 0; let (x1131, x1132) = fiat_p384_addcarryx_u32(x1130, x1059, x1106); let mut x1133: u32 = 0; let mut x1134: fiat_p384_u1 = 0; let (x1133, x1134) = fiat_p384_addcarryx_u32(x1132, x1061, x1108); let mut x1135: u32 = 0; let mut x1136: fiat_p384_u1 = 0; let (x1135, x1136) = fiat_p384_addcarryx_u32(x1134, x1063, x1110); let mut x1137: u32 = 0; let mut x1138: fiat_p384_u1 = 0; let (x1137, x1138) = fiat_p384_addcarryx_u32(x1136, x1065, x1112); let mut x1139: u32 = 0; let mut x1140: fiat_p384_u1 = 0; let (x1139, x1140) = fiat_p384_addcarryx_u32(x1138, x1067, x1114); let mut x1141: u32 = 0; let mut x1142: fiat_p384_u1 = 0; let (x1141, x1142) = fiat_p384_addcarryx_u32(x1140, x1069, x1116); let mut x1143: u32 = 0; let mut x1144: fiat_p384_u1 = 0; let (x1143, x1144) = fiat_p384_addcarryx_u32(x1142, x1071, x1118); let mut x1145: u32 = 0; let mut x1146: fiat_p384_u1 = 0; let (x1145, x1146) = fiat_p384_addcarryx_u32(x1144, x1073, x1120); let mut x1147: u32 = 0; let mut x1148: fiat_p384_u1 = 0; let (x1147, x1148) = fiat_p384_addcarryx_u32(x1146, x1075, x1122); let mut x1149: u32 = 0; let mut x1150: fiat_p384_u1 = 0; let (x1149, x1150) = fiat_p384_addcarryx_u32(x1148, x1077, x1124); let mut x1151: u32 = 0; let mut x1152: fiat_p384_u1 = 0; let (x1151, x1152) = fiat_p384_addcarryx_u32(x1150, x1079, x1126); let mut x1153: u32 = 0; let mut x1154: fiat_p384_u1 = 0; let (x1153, x1154) = fiat_p384_addcarryx_u32(x1152, x1081, x1128); let mut x1155: u32 = 0; let mut x1156: u32 = 0; let (x1155, x1156) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1157: u32 = 0; let mut x1158: u32 = 0; let (x1157, x1158) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1159: u32 = 0; let mut x1160: u32 = 0; let (x1159, x1160) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1161: u32 = 0; let mut x1162: u32 = 0; let (x1161, x1162) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1163: u32 = 0; let mut x1164: u32 = 0; let (x1163, x1164) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1165: u32 = 0; let mut x1166: u32 = 0; let (x1165, x1166) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1167: u32 = 0; let mut x1168: u32 = 0; let (x1167, x1168) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1169: u32 = 0; let mut x1170: u32 = 0; let (x1169, x1170) = fiat_p384_mulx_u32(x1129, 0xfffffffe); let mut x1171: u32 = 0; let mut x1172: u32 = 0; let (x1171, x1172) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1173: u32 = 0; let mut x1174: u32 = 0; let (x1173, x1174) = fiat_p384_mulx_u32(x1129, 0xffffffff); let mut x1175: u32 = 0; let mut x1176: fiat_p384_u1 = 0; let (x1175, x1176) = fiat_p384_addcarryx_u32(0x0, x1172, x1169); let mut x1177: u32 = 0; let mut x1178: fiat_p384_u1 = 0; let (x1177, x1178) = fiat_p384_addcarryx_u32(x1176, x1170, x1167); let mut x1179: u32 = 0; let mut x1180: fiat_p384_u1 = 0; let (x1179, x1180) = fiat_p384_addcarryx_u32(x1178, x1168, x1165); let mut x1181: u32 = 0; let mut x1182: fiat_p384_u1 = 0; let (x1181, x1182) = fiat_p384_addcarryx_u32(x1180, x1166, x1163); let mut x1183: u32 = 0; let mut x1184: fiat_p384_u1 = 0; let (x1183, x1184) = fiat_p384_addcarryx_u32(x1182, x1164, x1161); let mut x1185: u32 = 0; let mut x1186: fiat_p384_u1 = 0; let (x1185, x1186) = fiat_p384_addcarryx_u32(x1184, x1162, x1159); let mut x1187: u32 = 0; let mut x1188: fiat_p384_u1 = 0; let (x1187, x1188) = fiat_p384_addcarryx_u32(x1186, x1160, x1157); let mut x1189: u32 = 0; let mut x1190: fiat_p384_u1 = 0; let (x1189, x1190) = fiat_p384_addcarryx_u32(x1188, x1158, x1155); let x1191: u32 = ((x1190 as u32) + x1156); let mut x1192: u32 = 0; let mut x1193: fiat_p384_u1 = 0; let (x1192, x1193) = fiat_p384_addcarryx_u32(0x0, x1129, x1173); let mut x1194: u32 = 0; let mut x1195: fiat_p384_u1 = 0; let (x1194, x1195) = fiat_p384_addcarryx_u32(x1193, x1131, x1174); let mut x1196: u32 = 0; let mut x1197: fiat_p384_u1 = 0; let (x1196, x1197) = fiat_p384_addcarryx_u32(x1195, x1133, (0x0 as u32)); let mut x1198: u32 = 0; let mut x1199: fiat_p384_u1 = 0; let (x1198, x1199) = fiat_p384_addcarryx_u32(x1197, x1135, x1171); let mut x1200: u32 = 0; let mut x1201: fiat_p384_u1 = 0; let (x1200, x1201) = fiat_p384_addcarryx_u32(x1199, x1137, x1175); let mut x1202: u32 = 0; let mut x1203: fiat_p384_u1 = 0; let (x1202, x1203) = fiat_p384_addcarryx_u32(x1201, x1139, x1177); let mut x1204: u32 = 0; let mut x1205: fiat_p384_u1 = 0; let (x1204, x1205) = fiat_p384_addcarryx_u32(x1203, x1141, x1179); let mut x1206: u32 = 0; let mut x1207: fiat_p384_u1 = 0; let (x1206, x1207) = fiat_p384_addcarryx_u32(x1205, x1143, x1181); let mut x1208: u32 = 0; let mut x1209: fiat_p384_u1 = 0; let (x1208, x1209) = fiat_p384_addcarryx_u32(x1207, x1145, x1183); let mut x1210: u32 = 0; let mut x1211: fiat_p384_u1 = 0; let (x1210, x1211) = fiat_p384_addcarryx_u32(x1209, x1147, x1185); let mut x1212: u32 = 0; let mut x1213: fiat_p384_u1 = 0; let (x1212, x1213) = fiat_p384_addcarryx_u32(x1211, x1149, x1187); let mut x1214: u32 = 0; let mut x1215: fiat_p384_u1 = 0; let (x1214, x1215) = fiat_p384_addcarryx_u32(x1213, x1151, x1189); let mut x1216: u32 = 0; let mut x1217: fiat_p384_u1 = 0; let (x1216, x1217) = fiat_p384_addcarryx_u32(x1215, x1153, x1191); let x1218: u32 = ((x1217 as u32) + (x1154 as u32)); let mut x1219: u32 = 0; let mut x1220: u32 = 0; let (x1219, x1220) = fiat_p384_mulx_u32(x9, (arg1[11])); let mut x1221: u32 = 0; let mut x1222: u32 = 0; let (x1221, x1222) = fiat_p384_mulx_u32(x9, (arg1[10])); let mut x1223: u32 = 0; let mut x1224: u32 = 0; let (x1223, x1224) = fiat_p384_mulx_u32(x9, (arg1[9])); let mut x1225: u32 = 0; let mut x1226: u32 = 0; let (x1225, x1226) = fiat_p384_mulx_u32(x9, (arg1[8])); let mut x1227: u32 = 0; let mut x1228: u32 = 0; let (x1227, x1228) = fiat_p384_mulx_u32(x9, (arg1[7])); let mut x1229: u32 = 0; let mut x1230: u32 = 0; let (x1229, x1230) = fiat_p384_mulx_u32(x9, (arg1[6])); let mut x1231: u32 = 0; let mut x1232: u32 = 0; let (x1231, x1232) = fiat_p384_mulx_u32(x9, (arg1[5])); let mut x1233: u32 = 0; let mut x1234: u32 = 0; let (x1233, x1234) = fiat_p384_mulx_u32(x9, (arg1[4])); let mut x1235: u32 = 0; let mut x1236: u32 = 0; let (x1235, x1236) = fiat_p384_mulx_u32(x9, (arg1[3])); let mut x1237: u32 = 0; let mut x1238: u32 = 0; let (x1237, x1238) = fiat_p384_mulx_u32(x9, (arg1[2])); let mut x1239: u32 = 0; let mut x1240: u32 = 0; let (x1239, x1240) = fiat_p384_mulx_u32(x9, (arg1[1])); let mut x1241: u32 = 0; let mut x1242: u32 = 0; let (x1241, x1242) = fiat_p384_mulx_u32(x9, (arg1[0])); let mut x1243: u32 = 0; let mut x1244: fiat_p384_u1 = 0; let (x1243, x1244) = fiat_p384_addcarryx_u32(0x0, x1242, x1239); let mut x1245: u32 = 0; let mut x1246: fiat_p384_u1 = 0; let (x1245, x1246) = fiat_p384_addcarryx_u32(x1244, x1240, x1237); let mut x1247: u32 = 0; let mut x1248: fiat_p384_u1 = 0; let (x1247, x1248) = fiat_p384_addcarryx_u32(x1246, x1238, x1235); let mut x1249: u32 = 0; let mut x1250: fiat_p384_u1 = 0; let (x1249, x1250) = fiat_p384_addcarryx_u32(x1248, x1236, x1233); let mut x1251: u32 = 0; let mut x1252: fiat_p384_u1 = 0; let (x1251, x1252) = fiat_p384_addcarryx_u32(x1250, x1234, x1231); let mut x1253: u32 = 0; let mut x1254: fiat_p384_u1 = 0; let (x1253, x1254) = fiat_p384_addcarryx_u32(x1252, x1232, x1229); let mut x1255: u32 = 0; let mut x1256: fiat_p384_u1 = 0; let (x1255, x1256) = fiat_p384_addcarryx_u32(x1254, x1230, x1227); let mut x1257: u32 = 0; let mut x1258: fiat_p384_u1 = 0; let (x1257, x1258) = fiat_p384_addcarryx_u32(x1256, x1228, x1225); let mut x1259: u32 = 0; let mut x1260: fiat_p384_u1 = 0; let (x1259, x1260) = fiat_p384_addcarryx_u32(x1258, x1226, x1223); let mut x1261: u32 = 0; let mut x1262: fiat_p384_u1 = 0; let (x1261, x1262) = fiat_p384_addcarryx_u32(x1260, x1224, x1221); let mut x1263: u32 = 0; let mut x1264: fiat_p384_u1 = 0; let (x1263, x1264) = fiat_p384_addcarryx_u32(x1262, x1222, x1219); let x1265: u32 = ((x1264 as u32) + x1220); let mut x1266: u32 = 0; let mut x1267: fiat_p384_u1 = 0; let (x1266, x1267) = fiat_p384_addcarryx_u32(0x0, x1194, x1241); let mut x1268: u32 = 0; let mut x1269: fiat_p384_u1 = 0; let (x1268, x1269) = fiat_p384_addcarryx_u32(x1267, x1196, x1243); let mut x1270: u32 = 0; let mut x1271: fiat_p384_u1 = 0; let (x1270, x1271) = fiat_p384_addcarryx_u32(x1269, x1198, x1245); let mut x1272: u32 = 0; let mut x1273: fiat_p384_u1 = 0; let (x1272, x1273) = fiat_p384_addcarryx_u32(x1271, x1200, x1247); let mut x1274: u32 = 0; let mut x1275: fiat_p384_u1 = 0; let (x1274, x1275) = fiat_p384_addcarryx_u32(x1273, x1202, x1249); let mut x1276: u32 = 0; let mut x1277: fiat_p384_u1 = 0; let (x1276, x1277) = fiat_p384_addcarryx_u32(x1275, x1204, x1251); let mut x1278: u32 = 0; let mut x1279: fiat_p384_u1 = 0; let (x1278, x1279) = fiat_p384_addcarryx_u32(x1277, x1206, x1253); let mut x1280: u32 = 0; let mut x1281: fiat_p384_u1 = 0; let (x1280, x1281) = fiat_p384_addcarryx_u32(x1279, x1208, x1255); let mut x1282: u32 = 0; let mut x1283: fiat_p384_u1 = 0; let (x1282, x1283) = fiat_p384_addcarryx_u32(x1281, x1210, x1257); let mut x1284: u32 = 0; let mut x1285: fiat_p384_u1 = 0; let (x1284, x1285) = fiat_p384_addcarryx_u32(x1283, x1212, x1259); let mut x1286: u32 = 0; let mut x1287: fiat_p384_u1 = 0; let (x1286, x1287) = fiat_p384_addcarryx_u32(x1285, x1214, x1261); let mut x1288: u32 = 0; let mut x1289: fiat_p384_u1 = 0; let (x1288, x1289) = fiat_p384_addcarryx_u32(x1287, x1216, x1263); let mut x1290: u32 = 0; let mut x1291: fiat_p384_u1 = 0; let (x1290, x1291) = fiat_p384_addcarryx_u32(x1289, x1218, x1265); let mut x1292: u32 = 0; let mut x1293: u32 = 0; let (x1292, x1293) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1294: u32 = 0; let mut x1295: u32 = 0; let (x1294, x1295) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1296: u32 = 0; let mut x1297: u32 = 0; let (x1296, x1297) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1298: u32 = 0; let mut x1299: u32 = 0; let (x1298, x1299) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1300: u32 = 0; let mut x1301: u32 = 0; let (x1300, x1301) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1302: u32 = 0; let mut x1303: u32 = 0; let (x1302, x1303) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1304: u32 = 0; let mut x1305: u32 = 0; let (x1304, x1305) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1306: u32 = 0; let mut x1307: u32 = 0; let (x1306, x1307) = fiat_p384_mulx_u32(x1266, 0xfffffffe); let mut x1308: u32 = 0; let mut x1309: u32 = 0; let (x1308, x1309) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1310: u32 = 0; let mut x1311: u32 = 0; let (x1310, x1311) = fiat_p384_mulx_u32(x1266, 0xffffffff); let mut x1312: u32 = 0; let mut x1313: fiat_p384_u1 = 0; let (x1312, x1313) = fiat_p384_addcarryx_u32(0x0, x1309, x1306); let mut x1314: u32 = 0; let mut x1315: fiat_p384_u1 = 0; let (x1314, x1315) = fiat_p384_addcarryx_u32(x1313, x1307, x1304); let mut x1316: u32 = 0; let mut x1317: fiat_p384_u1 = 0; let (x1316, x1317) = fiat_p384_addcarryx_u32(x1315, x1305, x1302); let mut x1318: u32 = 0; let mut x1319: fiat_p384_u1 = 0; let (x1318, x1319) = fiat_p384_addcarryx_u32(x1317, x1303, x1300); let mut x1320: u32 = 0; let mut x1321: fiat_p384_u1 = 0; let (x1320, x1321) = fiat_p384_addcarryx_u32(x1319, x1301, x1298); let mut x1322: u32 = 0; let mut x1323: fiat_p384_u1 = 0; let (x1322, x1323) = fiat_p384_addcarryx_u32(x1321, x1299, x1296); let mut x1324: u32 = 0; let mut x1325: fiat_p384_u1 = 0; let (x1324, x1325) = fiat_p384_addcarryx_u32(x1323, x1297, x1294); let mut x1326: u32 = 0; let mut x1327: fiat_p384_u1 = 0; let (x1326, x1327) = fiat_p384_addcarryx_u32(x1325, x1295, x1292); let x1328: u32 = ((x1327 as u32) + x1293); let mut x1329: u32 = 0; let mut x1330: fiat_p384_u1 = 0; let (x1329, x1330) = fiat_p384_addcarryx_u32(0x0, x1266, x1310); let mut x1331: u32 = 0; let mut x1332: fiat_p384_u1 = 0; let (x1331, x1332) = fiat_p384_addcarryx_u32(x1330, x1268, x1311); let mut x1333: u32 = 0; let mut x1334: fiat_p384_u1 = 0; let (x1333, x1334) = fiat_p384_addcarryx_u32(x1332, x1270, (0x0 as u32)); let mut x1335: u32 = 0; let mut x1336: fiat_p384_u1 = 0; let (x1335, x1336) = fiat_p384_addcarryx_u32(x1334, x1272, x1308); let mut x1337: u32 = 0; let mut x1338: fiat_p384_u1 = 0; let (x1337, x1338) = fiat_p384_addcarryx_u32(x1336, x1274, x1312); let mut x1339: u32 = 0; let mut x1340: fiat_p384_u1 = 0; let (x1339, x1340) = fiat_p384_addcarryx_u32(x1338, x1276, x1314); let mut x1341: u32 = 0; let mut x1342: fiat_p384_u1 = 0; let (x1341, x1342) = fiat_p384_addcarryx_u32(x1340, x1278, x1316); let mut x1343: u32 = 0; let mut x1344: fiat_p384_u1 = 0; let (x1343, x1344) = fiat_p384_addcarryx_u32(x1342, x1280, x1318); let mut x1345: u32 = 0; let mut x1346: fiat_p384_u1 = 0; let (x1345, x1346) = fiat_p384_addcarryx_u32(x1344, x1282, x1320); let mut x1347: u32 = 0; let mut x1348: fiat_p384_u1 = 0; let (x1347, x1348) = fiat_p384_addcarryx_u32(x1346, x1284, x1322); let mut x1349: u32 = 0; let mut x1350: fiat_p384_u1 = 0; let (x1349, x1350) = fiat_p384_addcarryx_u32(x1348, x1286, x1324); let mut x1351: u32 = 0; let mut x1352: fiat_p384_u1 = 0; let (x1351, x1352) = fiat_p384_addcarryx_u32(x1350, x1288, x1326); let mut x1353: u32 = 0; let mut x1354: fiat_p384_u1 = 0; let (x1353, x1354) = fiat_p384_addcarryx_u32(x1352, x1290, x1328); let x1355: u32 = ((x1354 as u32) + (x1291 as u32)); let mut x1356: u32 = 0; let mut x1357: u32 = 0; let (x1356, x1357) = fiat_p384_mulx_u32(x10, (arg1[11])); let mut x1358: u32 = 0; let mut x1359: u32 = 0; let (x1358, x1359) = fiat_p384_mulx_u32(x10, (arg1[10])); let mut x1360: u32 = 0; let mut x1361: u32 = 0; let (x1360, x1361) = fiat_p384_mulx_u32(x10, (arg1[9])); let mut x1362: u32 = 0; let mut x1363: u32 = 0; let (x1362, x1363) = fiat_p384_mulx_u32(x10, (arg1[8])); let mut x1364: u32 = 0; let mut x1365: u32 = 0; let (x1364, x1365) = fiat_p384_mulx_u32(x10, (arg1[7])); let mut x1366: u32 = 0; let mut x1367: u32 = 0; let (x1366, x1367) = fiat_p384_mulx_u32(x10, (arg1[6])); let mut x1368: u32 = 0; let mut x1369: u32 = 0; let (x1368, x1369) = fiat_p384_mulx_u32(x10, (arg1[5])); let mut x1370: u32 = 0; let mut x1371: u32 = 0; let (x1370, x1371) = fiat_p384_mulx_u32(x10, (arg1[4])); let mut x1372: u32 = 0; let mut x1373: u32 = 0; let (x1372, x1373) = fiat_p384_mulx_u32(x10, (arg1[3])); let mut x1374: u32 = 0; let mut x1375: u32 = 0; let (x1374, x1375) = fiat_p384_mulx_u32(x10, (arg1[2])); let mut x1376: u32 = 0; let mut x1377: u32 = 0; let (x1376, x1377) = fiat_p384_mulx_u32(x10, (arg1[1])); let mut x1378: u32 = 0; let mut x1379: u32 = 0; let (x1378, x1379) = fiat_p384_mulx_u32(x10, (arg1[0])); let mut x1380: u32 = 0; let mut x1381: fiat_p384_u1 = 0; let (x1380, x1381) = fiat_p384_addcarryx_u32(0x0, x1379, x1376); let mut x1382: u32 = 0; let mut x1383: fiat_p384_u1 = 0; let (x1382, x1383) = fiat_p384_addcarryx_u32(x1381, x1377, x1374); let mut x1384: u32 = 0; let mut x1385: fiat_p384_u1 = 0; let (x1384, x1385) = fiat_p384_addcarryx_u32(x1383, x1375, x1372); let mut x1386: u32 = 0; let mut x1387: fiat_p384_u1 = 0; let (x1386, x1387) = fiat_p384_addcarryx_u32(x1385, x1373, x1370); let mut x1388: u32 = 0; let mut x1389: fiat_p384_u1 = 0; let (x1388, x1389) = fiat_p384_addcarryx_u32(x1387, x1371, x1368); let mut x1390: u32 = 0; let mut x1391: fiat_p384_u1 = 0; let (x1390, x1391) = fiat_p384_addcarryx_u32(x1389, x1369, x1366); let mut x1392: u32 = 0; let mut x1393: fiat_p384_u1 = 0; let (x1392, x1393) = fiat_p384_addcarryx_u32(x1391, x1367, x1364); let mut x1394: u32 = 0; let mut x1395: fiat_p384_u1 = 0; let (x1394, x1395) = fiat_p384_addcarryx_u32(x1393, x1365, x1362); let mut x1396: u32 = 0; let mut x1397: fiat_p384_u1 = 0; let (x1396, x1397) = fiat_p384_addcarryx_u32(x1395, x1363, x1360); let mut x1398: u32 = 0; let mut x1399: fiat_p384_u1 = 0; let (x1398, x1399) = fiat_p384_addcarryx_u32(x1397, x1361, x1358); let mut x1400: u32 = 0; let mut x1401: fiat_p384_u1 = 0; let (x1400, x1401) = fiat_p384_addcarryx_u32(x1399, x1359, x1356); let x1402: u32 = ((x1401 as u32) + x1357); let mut x1403: u32 = 0; let mut x1404: fiat_p384_u1 = 0; let (x1403, x1404) = fiat_p384_addcarryx_u32(0x0, x1331, x1378); let mut x1405: u32 = 0; let mut x1406: fiat_p384_u1 = 0; let (x1405, x1406) = fiat_p384_addcarryx_u32(x1404, x1333, x1380); let mut x1407: u32 = 0; let mut x1408: fiat_p384_u1 = 0; let (x1407, x1408) = fiat_p384_addcarryx_u32(x1406, x1335, x1382); let mut x1409: u32 = 0; let mut x1410: fiat_p384_u1 = 0; let (x1409, x1410) = fiat_p384_addcarryx_u32(x1408, x1337, x1384); let mut x1411: u32 = 0; let mut x1412: fiat_p384_u1 = 0; let (x1411, x1412) = fiat_p384_addcarryx_u32(x1410, x1339, x1386); let mut x1413: u32 = 0; let mut x1414: fiat_p384_u1 = 0; let (x1413, x1414) = fiat_p384_addcarryx_u32(x1412, x1341, x1388); let mut x1415: u32 = 0; let mut x1416: fiat_p384_u1 = 0; let (x1415, x1416) = fiat_p384_addcarryx_u32(x1414, x1343, x1390); let mut x1417: u32 = 0; let mut x1418: fiat_p384_u1 = 0; let (x1417, x1418) = fiat_p384_addcarryx_u32(x1416, x1345, x1392); let mut x1419: u32 = 0; let mut x1420: fiat_p384_u1 = 0; let (x1419, x1420) = fiat_p384_addcarryx_u32(x1418, x1347, x1394); let mut x1421: u32 = 0; let mut x1422: fiat_p384_u1 = 0; let (x1421, x1422) = fiat_p384_addcarryx_u32(x1420, x1349, x1396); let mut x1423: u32 = 0; let mut x1424: fiat_p384_u1 = 0; let (x1423, x1424) = fiat_p384_addcarryx_u32(x1422, x1351, x1398); let mut x1425: u32 = 0; let mut x1426: fiat_p384_u1 = 0; let (x1425, x1426) = fiat_p384_addcarryx_u32(x1424, x1353, x1400); let mut x1427: u32 = 0; let mut x1428: fiat_p384_u1 = 0; let (x1427, x1428) = fiat_p384_addcarryx_u32(x1426, x1355, x1402); let mut x1429: u32 = 0; let mut x1430: u32 = 0; let (x1429, x1430) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1431: u32 = 0; let mut x1432: u32 = 0; let (x1431, x1432) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1433: u32 = 0; let mut x1434: u32 = 0; let (x1433, x1434) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1435: u32 = 0; let mut x1436: u32 = 0; let (x1435, x1436) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1437: u32 = 0; let mut x1438: u32 = 0; let (x1437, x1438) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1439: u32 = 0; let mut x1440: u32 = 0; let (x1439, x1440) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1441: u32 = 0; let mut x1442: u32 = 0; let (x1441, x1442) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1443: u32 = 0; let mut x1444: u32 = 0; let (x1443, x1444) = fiat_p384_mulx_u32(x1403, 0xfffffffe); let mut x1445: u32 = 0; let mut x1446: u32 = 0; let (x1445, x1446) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1447: u32 = 0; let mut x1448: u32 = 0; let (x1447, x1448) = fiat_p384_mulx_u32(x1403, 0xffffffff); let mut x1449: u32 = 0; let mut x1450: fiat_p384_u1 = 0; let (x1449, x1450) = fiat_p384_addcarryx_u32(0x0, x1446, x1443); let mut x1451: u32 = 0; let mut x1452: fiat_p384_u1 = 0; let (x1451, x1452) = fiat_p384_addcarryx_u32(x1450, x1444, x1441); let mut x1453: u32 = 0; let mut x1454: fiat_p384_u1 = 0; let (x1453, x1454) = fiat_p384_addcarryx_u32(x1452, x1442, x1439); let mut x1455: u32 = 0; let mut x1456: fiat_p384_u1 = 0; let (x1455, x1456) = fiat_p384_addcarryx_u32(x1454, x1440, x1437); let mut x1457: u32 = 0; let mut x1458: fiat_p384_u1 = 0; let (x1457, x1458) = fiat_p384_addcarryx_u32(x1456, x1438, x1435); let mut x1459: u32 = 0; let mut x1460: fiat_p384_u1 = 0; let (x1459, x1460) = fiat_p384_addcarryx_u32(x1458, x1436, x1433); let mut x1461: u32 = 0; let mut x1462: fiat_p384_u1 = 0; let (x1461, x1462) = fiat_p384_addcarryx_u32(x1460, x1434, x1431); let mut x1463: u32 = 0; let mut x1464: fiat_p384_u1 = 0; let (x1463, x1464) = fiat_p384_addcarryx_u32(x1462, x1432, x1429); let x1465: u32 = ((x1464 as u32) + x1430); let mut x1466: u32 = 0; let mut x1467: fiat_p384_u1 = 0; let (x1466, x1467) = fiat_p384_addcarryx_u32(0x0, x1403, x1447); let mut x1468: u32 = 0; let mut x1469: fiat_p384_u1 = 0; let (x1468, x1469) = fiat_p384_addcarryx_u32(x1467, x1405, x1448); let mut x1470: u32 = 0; let mut x1471: fiat_p384_u1 = 0; let (x1470, x1471) = fiat_p384_addcarryx_u32(x1469, x1407, (0x0 as u32)); let mut x1472: u32 = 0; let mut x1473: fiat_p384_u1 = 0; let (x1472, x1473) = fiat_p384_addcarryx_u32(x1471, x1409, x1445); let mut x1474: u32 = 0; let mut x1475: fiat_p384_u1 = 0; let (x1474, x1475) = fiat_p384_addcarryx_u32(x1473, x1411, x1449); let mut x1476: u32 = 0; let mut x1477: fiat_p384_u1 = 0; let (x1476, x1477) = fiat_p384_addcarryx_u32(x1475, x1413, x1451); let mut x1478: u32 = 0; let mut x1479: fiat_p384_u1 = 0; let (x1478, x1479) = fiat_p384_addcarryx_u32(x1477, x1415, x1453); let mut x1480: u32 = 0; let mut x1481: fiat_p384_u1 = 0; let (x1480, x1481) = fiat_p384_addcarryx_u32(x1479, x1417, x1455); let mut x1482: u32 = 0; let mut x1483: fiat_p384_u1 = 0; let (x1482, x1483) = fiat_p384_addcarryx_u32(x1481, x1419, x1457); let mut x1484: u32 = 0; let mut x1485: fiat_p384_u1 = 0; let (x1484, x1485) = fiat_p384_addcarryx_u32(x1483, x1421, x1459); let mut x1486: u32 = 0; let mut x1487: fiat_p384_u1 = 0; let (x1486, x1487) = fiat_p384_addcarryx_u32(x1485, x1423, x1461); let mut x1488: u32 = 0; let mut x1489: fiat_p384_u1 = 0; let (x1488, x1489) = fiat_p384_addcarryx_u32(x1487, x1425, x1463); let mut x1490: u32 = 0; let mut x1491: fiat_p384_u1 = 0; let (x1490, x1491) = fiat_p384_addcarryx_u32(x1489, x1427, x1465); let x1492: u32 = ((x1491 as u32) + (x1428 as u32)); let mut x1493: u32 = 0; let mut x1494: u32 = 0; let (x1493, x1494) = fiat_p384_mulx_u32(x11, (arg1[11])); let mut x1495: u32 = 0; let mut x1496: u32 = 0; let (x1495, x1496) = fiat_p384_mulx_u32(x11, (arg1[10])); let mut x1497: u32 = 0; let mut x1498: u32 = 0; let (x1497, x1498) = fiat_p384_mulx_u32(x11, (arg1[9])); let mut x1499: u32 = 0; let mut x1500: u32 = 0; let (x1499, x1500) = fiat_p384_mulx_u32(x11, (arg1[8])); let mut x1501: u32 = 0; let mut x1502: u32 = 0; let (x1501, x1502) = fiat_p384_mulx_u32(x11, (arg1[7])); let mut x1503: u32 = 0; let mut x1504: u32 = 0; let (x1503, x1504) = fiat_p384_mulx_u32(x11, (arg1[6])); let mut x1505: u32 = 0; let mut x1506: u32 = 0; let (x1505, x1506) = fiat_p384_mulx_u32(x11, (arg1[5])); let mut x1507: u32 = 0; let mut x1508: u32 = 0; let (x1507, x1508) = fiat_p384_mulx_u32(x11, (arg1[4])); let mut x1509: u32 = 0; let mut x1510: u32 = 0; let (x1509, x1510) = fiat_p384_mulx_u32(x11, (arg1[3])); let mut x1511: u32 = 0; let mut x1512: u32 = 0; let (x1511, x1512) = fiat_p384_mulx_u32(x11, (arg1[2])); let mut x1513: u32 = 0; let mut x1514: u32 = 0; let (x1513, x1514) = fiat_p384_mulx_u32(x11, (arg1[1])); let mut x1515: u32 = 0; let mut x1516: u32 = 0; let (x1515, x1516) = fiat_p384_mulx_u32(x11, (arg1[0])); let mut x1517: u32 = 0; let mut x1518: fiat_p384_u1 = 0; let (x1517, x1518) = fiat_p384_addcarryx_u32(0x0, x1516, x1513); let mut x1519: u32 = 0; let mut x1520: fiat_p384_u1 = 0; let (x1519, x1520) = fiat_p384_addcarryx_u32(x1518, x1514, x1511); let mut x1521: u32 = 0; let mut x1522: fiat_p384_u1 = 0; let (x1521, x1522) = fiat_p384_addcarryx_u32(x1520, x1512, x1509); let mut x1523: u32 = 0; let mut x1524: fiat_p384_u1 = 0; let (x1523, x1524) = fiat_p384_addcarryx_u32(x1522, x1510, x1507); let mut x1525: u32 = 0; let mut x1526: fiat_p384_u1 = 0; let (x1525, x1526) = fiat_p384_addcarryx_u32(x1524, x1508, x1505); let mut x1527: u32 = 0; let mut x1528: fiat_p384_u1 = 0; let (x1527, x1528) = fiat_p384_addcarryx_u32(x1526, x1506, x1503); let mut x1529: u32 = 0; let mut x1530: fiat_p384_u1 = 0; let (x1529, x1530) = fiat_p384_addcarryx_u32(x1528, x1504, x1501); let mut x1531: u32 = 0; let mut x1532: fiat_p384_u1 = 0; let (x1531, x1532) = fiat_p384_addcarryx_u32(x1530, x1502, x1499); let mut x1533: u32 = 0; let mut x1534: fiat_p384_u1 = 0; let (x1533, x1534) = fiat_p384_addcarryx_u32(x1532, x1500, x1497); let mut x1535: u32 = 0; let mut x1536: fiat_p384_u1 = 0; let (x1535, x1536) = fiat_p384_addcarryx_u32(x1534, x1498, x1495); let mut x1537: u32 = 0; let mut x1538: fiat_p384_u1 = 0; let (x1537, x1538) = fiat_p384_addcarryx_u32(x1536, x1496, x1493); let x1539: u32 = ((x1538 as u32) + x1494); let mut x1540: u32 = 0; let mut x1541: fiat_p384_u1 = 0; let (x1540, x1541) = fiat_p384_addcarryx_u32(0x0, x1468, x1515); let mut x1542: u32 = 0; let mut x1543: fiat_p384_u1 = 0; let (x1542, x1543) = fiat_p384_addcarryx_u32(x1541, x1470, x1517); let mut x1544: u32 = 0; let mut x1545: fiat_p384_u1 = 0; let (x1544, x1545) = fiat_p384_addcarryx_u32(x1543, x1472, x1519); let mut x1546: u32 = 0; let mut x1547: fiat_p384_u1 = 0; let (x1546, x1547) = fiat_p384_addcarryx_u32(x1545, x1474, x1521); let mut x1548: u32 = 0; let mut x1549: fiat_p384_u1 = 0; let (x1548, x1549) = fiat_p384_addcarryx_u32(x1547, x1476, x1523); let mut x1550: u32 = 0; let mut x1551: fiat_p384_u1 = 0; let (x1550, x1551) = fiat_p384_addcarryx_u32(x1549, x1478, x1525); let mut x1552: u32 = 0; let mut x1553: fiat_p384_u1 = 0; let (x1552, x1553) = fiat_p384_addcarryx_u32(x1551, x1480, x1527); let mut x1554: u32 = 0; let mut x1555: fiat_p384_u1 = 0; let (x1554, x1555) = fiat_p384_addcarryx_u32(x1553, x1482, x1529); let mut x1556: u32 = 0; let mut x1557: fiat_p384_u1 = 0; let (x1556, x1557) = fiat_p384_addcarryx_u32(x1555, x1484, x1531); let mut x1558: u32 = 0; let mut x1559: fiat_p384_u1 = 0; let (x1558, x1559) = fiat_p384_addcarryx_u32(x1557, x1486, x1533); let mut x1560: u32 = 0; let mut x1561: fiat_p384_u1 = 0; let (x1560, x1561) = fiat_p384_addcarryx_u32(x1559, x1488, x1535); let mut x1562: u32 = 0; let mut x1563: fiat_p384_u1 = 0; let (x1562, x1563) = fiat_p384_addcarryx_u32(x1561, x1490, x1537); let mut x1564: u32 = 0; let mut x1565: fiat_p384_u1 = 0; let (x1564, x1565) = fiat_p384_addcarryx_u32(x1563, x1492, x1539); let mut x1566: u32 = 0; let mut x1567: u32 = 0; let (x1566, x1567) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1568: u32 = 0; let mut x1569: u32 = 0; let (x1568, x1569) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1570: u32 = 0; let mut x1571: u32 = 0; let (x1570, x1571) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1572: u32 = 0; let mut x1573: u32 = 0; let (x1572, x1573) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1574: u32 = 0; let mut x1575: u32 = 0; let (x1574, x1575) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1576: u32 = 0; let mut x1577: u32 = 0; let (x1576, x1577) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1578: u32 = 0; let mut x1579: u32 = 0; let (x1578, x1579) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1580: u32 = 0; let mut x1581: u32 = 0; let (x1580, x1581) = fiat_p384_mulx_u32(x1540, 0xfffffffe); let mut x1582: u32 = 0; let mut x1583: u32 = 0; let (x1582, x1583) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1584: u32 = 0; let mut x1585: u32 = 0; let (x1584, x1585) = fiat_p384_mulx_u32(x1540, 0xffffffff); let mut x1586: u32 = 0; let mut x1587: fiat_p384_u1 = 0; let (x1586, x1587) = fiat_p384_addcarryx_u32(0x0, x1583, x1580); let mut x1588: u32 = 0; let mut x1589: fiat_p384_u1 = 0; let (x1588, x1589) = fiat_p384_addcarryx_u32(x1587, x1581, x1578); let mut x1590: u32 = 0; let mut x1591: fiat_p384_u1 = 0; let (x1590, x1591) = fiat_p384_addcarryx_u32(x1589, x1579, x1576); let mut x1592: u32 = 0; let mut x1593: fiat_p384_u1 = 0; let (x1592, x1593) = fiat_p384_addcarryx_u32(x1591, x1577, x1574); let mut x1594: u32 = 0; let mut x1595: fiat_p384_u1 = 0; let (x1594, x1595) = fiat_p384_addcarryx_u32(x1593, x1575, x1572); let mut x1596: u32 = 0; let mut x1597: fiat_p384_u1 = 0; let (x1596, x1597) = fiat_p384_addcarryx_u32(x1595, x1573, x1570); let mut x1598: u32 = 0; let mut x1599: fiat_p384_u1 = 0; let (x1598, x1599) = fiat_p384_addcarryx_u32(x1597, x1571, x1568); let mut x1600: u32 = 0; let mut x1601: fiat_p384_u1 = 0; let (x1600, x1601) = fiat_p384_addcarryx_u32(x1599, x1569, x1566); let x1602: u32 = ((x1601 as u32) + x1567); let mut x1603: u32 = 0; let mut x1604: fiat_p384_u1 = 0; let (x1603, x1604) = fiat_p384_addcarryx_u32(0x0, x1540, x1584); let mut x1605: u32 = 0; let mut x1606: fiat_p384_u1 = 0; let (x1605, x1606) = fiat_p384_addcarryx_u32(x1604, x1542, x1585); let mut x1607: u32 = 0; let mut x1608: fiat_p384_u1 = 0; let (x1607, x1608) = fiat_p384_addcarryx_u32(x1606, x1544, (0x0 as u32)); let mut x1609: u32 = 0; let mut x1610: fiat_p384_u1 = 0; let (x1609, x1610) = fiat_p384_addcarryx_u32(x1608, x1546, x1582); let mut x1611: u32 = 0; let mut x1612: fiat_p384_u1 = 0; let (x1611, x1612) = fiat_p384_addcarryx_u32(x1610, x1548, x1586); let mut x1613: u32 = 0; let mut x1614: fiat_p384_u1 = 0; let (x1613, x1614) = fiat_p384_addcarryx_u32(x1612, x1550, x1588); let mut x1615: u32 = 0; let mut x1616: fiat_p384_u1 = 0; let (x1615, x1616) = fiat_p384_addcarryx_u32(x1614, x1552, x1590); let mut x1617: u32 = 0; let mut x1618: fiat_p384_u1 = 0; let (x1617, x1618) = fiat_p384_addcarryx_u32(x1616, x1554, x1592); let mut x1619: u32 = 0; let mut x1620: fiat_p384_u1 = 0; let (x1619, x1620) = fiat_p384_addcarryx_u32(x1618, x1556, x1594); let mut x1621: u32 = 0; let mut x1622: fiat_p384_u1 = 0; let (x1621, x1622) = fiat_p384_addcarryx_u32(x1620, x1558, x1596); let mut x1623: u32 = 0; let mut x1624: fiat_p384_u1 = 0; let (x1623, x1624) = fiat_p384_addcarryx_u32(x1622, x1560, x1598); let mut x1625: u32 = 0; let mut x1626: fiat_p384_u1 = 0; let (x1625, x1626) = fiat_p384_addcarryx_u32(x1624, x1562, x1600); let mut x1627: u32 = 0; let mut x1628: fiat_p384_u1 = 0; let (x1627, x1628) = fiat_p384_addcarryx_u32(x1626, x1564, x1602); let x1629: u32 = ((x1628 as u32) + (x1565 as u32)); let mut x1630: u32 = 0; let mut x1631: fiat_p384_u1 = 0; let (x1630, x1631) = fiat_p384_subborrowx_u32(0x0, x1605, 0xffffffff); let mut x1632: u32 = 0; let mut x1633: fiat_p384_u1 = 0; let (x1632, x1633) = fiat_p384_subborrowx_u32(x1631, x1607, (0x0 as u32)); let mut x1634: u32 = 0; let mut x1635: fiat_p384_u1 = 0; let (x1634, x1635) = fiat_p384_subborrowx_u32(x1633, x1609, (0x0 as u32)); let mut x1636: u32 = 0; let mut x1637: fiat_p384_u1 = 0; let (x1636, x1637) = fiat_p384_subborrowx_u32(x1635, x1611, 0xffffffff); let mut x1638: u32 = 0; let mut x1639: fiat_p384_u1 = 0; let (x1638, x1639) = fiat_p384_subborrowx_u32(x1637, x1613, 0xfffffffe); let mut x1640: u32 = 0; let mut x1641: fiat_p384_u1 = 0; let (x1640, x1641) = fiat_p384_subborrowx_u32(x1639, x1615, 0xffffffff); let mut x1642: u32 = 0; let mut x1643: fiat_p384_u1 = 0; let (x1642, x1643) = fiat_p384_subborrowx_u32(x1641, x1617, 0xffffffff); let mut x1644: u32 = 0; let mut x1645: fiat_p384_u1 = 0; let (x1644, x1645) = fiat_p384_subborrowx_u32(x1643, x1619, 0xffffffff); let mut x1646: u32 = 0; let mut x1647: fiat_p384_u1 = 0; let (x1646, x1647) = fiat_p384_subborrowx_u32(x1645, x1621, 0xffffffff); let mut x1648: u32 = 0; let mut x1649: fiat_p384_u1 = 0; let (x1648, x1649) = fiat_p384_subborrowx_u32(x1647, x1623, 0xffffffff); let mut x1650: u32 = 0; let mut x1651: fiat_p384_u1 = 0; let (x1650, x1651) = fiat_p384_subborrowx_u32(x1649, x1625, 0xffffffff); let mut x1652: u32 = 0; let mut x1653: fiat_p384_u1 = 0; let (x1652, x1653) = fiat_p384_subborrowx_u32(x1651, x1627, 0xffffffff); let mut x1654: u32 = 0; let mut x1655: fiat_p384_u1 = 0; let (x1654, x1655) = fiat_p384_subborrowx_u32(x1653, x1629, (0x0 as u32)); let mut x1656: u32 = 0; let (x1656) = fiat_p384_cmovznz_u32(x1655, x1630, x1605); let mut x1657: u32 = 0; let (x1657) = fiat_p384_cmovznz_u32(x1655, x1632, x1607); let mut x1658: u32 = 0; let (x1658) = fiat_p384_cmovznz_u32(x1655, x1634, x1609); let mut x1659: u32 = 0; let (x1659) = fiat_p384_cmovznz_u32(x1655, x1636, x1611); let mut x1660: u32 = 0; let (x1660) = fiat_p384_cmovznz_u32(x1655, x1638, x1613); let mut x1661: u32 = 0; let (x1661) = fiat_p384_cmovznz_u32(x1655, x1640, x1615); let mut x1662: u32 = 0; let (x1662) = fiat_p384_cmovznz_u32(x1655, x1642, x1617); let mut x1663: u32 = 0; let (x1663) = fiat_p384_cmovznz_u32(x1655, x1644, x1619); let mut x1664: u32 = 0; let (x1664) = fiat_p384_cmovznz_u32(x1655, x1646, x1621); let mut x1665: u32 = 0; let (x1665) = fiat_p384_cmovznz_u32(x1655, x1648, x1623); let mut x1666: u32 = 0; let (x1666) = fiat_p384_cmovznz_u32(x1655, x1650, x1625); let mut x1667: u32 = 0; let (x1667) = fiat_p384_cmovznz_u32(x1655, x1652, x1627); out1[0] = x1656; out1[1] = x1657; out1[2] = x1658; out1[3] = x1659; out1[4] = x1660; out1[5] = x1661; out1[6] = x1662; out1[7] = x1663; out1[8] = x1664; out1[9] = x1665; out1[10] = x1666; out1[11] = x1667; out1 } #[doc = " The function fiat_p384_add adds two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_add( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_addcarryx_u32(0x0, (arg1[0]), (arg2[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_addcarryx_u32(x2, (arg1[1]), (arg2[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_addcarryx_u32(x4, (arg1[2]), (arg2[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_addcarryx_u32(x6, (arg1[3]), (arg2[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_addcarryx_u32(x8, (arg1[4]), (arg2[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_addcarryx_u32(x10, (arg1[5]), (arg2[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_u1 = 0; let (x13, x14) = fiat_p384_addcarryx_u32(x12, (arg1[6]), (arg2[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_u1 = 0; let (x15, x16) = fiat_p384_addcarryx_u32(x14, (arg1[7]), (arg2[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_u1 = 0; let (x17, x18) = fiat_p384_addcarryx_u32(x16, (arg1[8]), (arg2[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_addcarryx_u32(x18, (arg1[9]), (arg2[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_addcarryx_u32(x20, (arg1[10]), (arg2[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_addcarryx_u32(x22, (arg1[11]), (arg2[11])); let mut x25: u32 = 0; let mut x26: fiat_p384_u1 = 0; let (x25, x26) = fiat_p384_subborrowx_u32(0x0, x1, 0xffffffff); let mut x27: u32 = 0; let mut x28: fiat_p384_u1 = 0; let (x27, x28) = fiat_p384_subborrowx_u32(x26, x3, (0x0 as u32)); let mut x29: u32 = 0; let mut x30: fiat_p384_u1 = 0; let (x29, x30) = fiat_p384_subborrowx_u32(x28, x5, (0x0 as u32)); let mut x31: u32 = 0; let mut x32: fiat_p384_u1 = 0; let (x31, x32) = fiat_p384_subborrowx_u32(x30, x7, 0xffffffff); let mut x33: u32 = 0; let mut x34: fiat_p384_u1 = 0; let (x33, x34) = fiat_p384_subborrowx_u32(x32, x9, 0xfffffffe); let mut x35: u32 = 0; let mut x36: fiat_p384_u1 = 0; let (x35, x36) = fiat_p384_subborrowx_u32(x34, x11, 0xffffffff); let mut x37: u32 = 0; let mut x38: fiat_p384_u1 = 0; let (x37, x38) = fiat_p384_subborrowx_u32(x36, x13, 0xffffffff); let mut x39: u32 = 0; let mut x40: fiat_p384_u1 = 0; let (x39, x40) = fiat_p384_subborrowx_u32(x38, x15, 0xffffffff); let mut x41: u32 = 0; let mut x42: fiat_p384_u1 = 0; let (x41, x42) = fiat_p384_subborrowx_u32(x40, x17, 0xffffffff); let mut x43: u32 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_subborrowx_u32(x42, x19, 0xffffffff); let mut x45: u32 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_subborrowx_u32(x44, x21, 0xffffffff); let mut x47: u32 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_subborrowx_u32(x46, x23, 0xffffffff); let mut x49: u32 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_subborrowx_u32(x48, (x24 as u32), (0x0 as u32)); let mut x51: u32 = 0; let (x51) = fiat_p384_cmovznz_u32(x50, x25, x1); let mut x52: u32 = 0; let (x52) = fiat_p384_cmovznz_u32(x50, x27, x3); let mut x53: u32 = 0; let (x53) = fiat_p384_cmovznz_u32(x50, x29, x5); let mut x54: u32 = 0; let (x54) = fiat_p384_cmovznz_u32(x50, x31, x7); let mut x55: u32 = 0; let (x55) = fiat_p384_cmovznz_u32(x50, x33, x9); let mut x56: u32 = 0; let (x56) = fiat_p384_cmovznz_u32(x50, x35, x11); let mut x57: u32 = 0; let (x57) = fiat_p384_cmovznz_u32(x50, x37, x13); let mut x58: u32 = 0; let (x58) = fiat_p384_cmovznz_u32(x50, x39, x15); let mut x59: u32 = 0; let (x59) = fiat_p384_cmovznz_u32(x50, x41, x17); let mut x60: u32 = 0; let (x60) = fiat_p384_cmovznz_u32(x50, x43, x19); let mut x61: u32 = 0; let (x61) = fiat_p384_cmovznz_u32(x50, x45, x21); let mut x62: u32 = 0; let (x62) = fiat_p384_cmovznz_u32(x50, x47, x23); out1[0] = x51; out1[1] = x52; out1[2] = x53; out1[3] = x54; out1[4] = x55; out1[5] = x56; out1[6] = x57; out1[7] = x58; out1[8] = x59; out1[9] = x60; out1[10] = x61; out1[11] = x62; out1 } #[doc = " The function fiat_p384_sub subtracts two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_sub( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_subborrowx_u32(0x0, (arg1[0]), (arg2[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_subborrowx_u32(x2, (arg1[1]), (arg2[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_subborrowx_u32(x4, (arg1[2]), (arg2[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_subborrowx_u32(x6, (arg1[3]), (arg2[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_subborrowx_u32(x8, (arg1[4]), (arg2[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_subborrowx_u32(x10, (arg1[5]), (arg2[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_u1 = 0; let (x13, x14) = fiat_p384_subborrowx_u32(x12, (arg1[6]), (arg2[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_u1 = 0; let (x15, x16) = fiat_p384_subborrowx_u32(x14, (arg1[7]), (arg2[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_u1 = 0; let (x17, x18) = fiat_p384_subborrowx_u32(x16, (arg1[8]), (arg2[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_subborrowx_u32(x18, (arg1[9]), (arg2[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_subborrowx_u32(x20, (arg1[10]), (arg2[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_subborrowx_u32(x22, (arg1[11]), (arg2[11])); let mut x25: u32 = 0; let (x25) = fiat_p384_cmovznz_u32(x24, (0x0 as u32), 0xffffffff); let mut x26: u32 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u32(0x0, x1, x25); let mut x28: u32 = 0; let mut x29: fiat_p384_u1 = 0; let (x28, x29) = fiat_p384_addcarryx_u32(x27, x3, (0x0 as u32)); let mut x30: u32 = 0; let mut x31: fiat_p384_u1 = 0; let (x30, x31) = fiat_p384_addcarryx_u32(x29, x5, (0x0 as u32)); let mut x32: u32 = 0; let mut x33: fiat_p384_u1 = 0; let (x32, x33) = fiat_p384_addcarryx_u32(x31, x7, x25); let mut x34: u32 = 0; let mut x35: fiat_p384_u1 = 0; let (x34, x35) = fiat_p384_addcarryx_u32(x33, x9, (x25 & 0xfffffffe)); let mut x36: u32 = 0; let mut x37: fiat_p384_u1 = 0; let (x36, x37) = fiat_p384_addcarryx_u32(x35, x11, x25); let mut x38: u32 = 0; let mut x39: fiat_p384_u1 = 0; let (x38, x39) = fiat_p384_addcarryx_u32(x37, x13, x25); let mut x40: u32 = 0; let mut x41: fiat_p384_u1 = 0; let (x40, x41) = fiat_p384_addcarryx_u32(x39, x15, x25); let mut x42: u32 = 0; let mut x43: fiat_p384_u1 = 0; let (x42, x43) = fiat_p384_addcarryx_u32(x41, x17, x25); let mut x44: u32 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u32(x43, x19, x25); let mut x46: u32 = 0; let mut x47: fiat_p384_u1 = 0; let (x46, x47) = fiat_p384_addcarryx_u32(x45, x21, x25); let mut x48: u32 = 0; let mut x49: fiat_p384_u1 = 0; let (x48, x49) = fiat_p384_addcarryx_u32(x47, x23, x25); out1[0] = x26; out1[1] = x28; out1[2] = x30; out1[3] = x32; out1[4] = x34; out1[5] = x36; out1[6] = x38; out1[7] = x40; out1[8] = x42; out1[9] = x44; out1[10] = x46; out1[11] = x48; out1 } #[doc = " The function fiat_p384_opp negates a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_opp( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_subborrowx_u32(0x0, (0x0 as u32), (arg1[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_subborrowx_u32(x2, (0x0 as u32), (arg1[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_subborrowx_u32(x4, (0x0 as u32), (arg1[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_subborrowx_u32(x6, (0x0 as u32), (arg1[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_subborrowx_u32(x8, (0x0 as u32), (arg1[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_subborrowx_u32(x10, (0x0 as u32), (arg1[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_u1 = 0; let (x13, x14) = fiat_p384_subborrowx_u32(x12, (0x0 as u32), (arg1[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_u1 = 0; let (x15, x16) = fiat_p384_subborrowx_u32(x14, (0x0 as u32), (arg1[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_u1 = 0; let (x17, x18) = fiat_p384_subborrowx_u32(x16, (0x0 as u32), (arg1[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_subborrowx_u32(x18, (0x0 as u32), (arg1[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_subborrowx_u32(x20, (0x0 as u32), (arg1[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_subborrowx_u32(x22, (0x0 as u32), (arg1[11])); let mut x25: u32 = 0; let (x25) = fiat_p384_cmovznz_u32(x24, (0x0 as u32), 0xffffffff); let mut x26: u32 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u32(0x0, x1, x25); let mut x28: u32 = 0; let mut x29: fiat_p384_u1 = 0; let (x28, x29) = fiat_p384_addcarryx_u32(x27, x3, (0x0 as u32)); let mut x30: u32 = 0; let mut x31: fiat_p384_u1 = 0; let (x30, x31) = fiat_p384_addcarryx_u32(x29, x5, (0x0 as u32)); let mut x32: u32 = 0; let mut x33: fiat_p384_u1 = 0; let (x32, x33) = fiat_p384_addcarryx_u32(x31, x7, x25); let mut x34: u32 = 0; let mut x35: fiat_p384_u1 = 0; let (x34, x35) = fiat_p384_addcarryx_u32(x33, x9, (x25 & 0xfffffffe)); let mut x36: u32 = 0; let mut x37: fiat_p384_u1 = 0; let (x36, x37) = fiat_p384_addcarryx_u32(x35, x11, x25); let mut x38: u32 = 0; let mut x39: fiat_p384_u1 = 0; let (x38, x39) = fiat_p384_addcarryx_u32(x37, x13, x25); let mut x40: u32 = 0; let mut x41: fiat_p384_u1 = 0; let (x40, x41) = fiat_p384_addcarryx_u32(x39, x15, x25); let mut x42: u32 = 0; let mut x43: fiat_p384_u1 = 0; let (x42, x43) = fiat_p384_addcarryx_u32(x41, x17, x25); let mut x44: u32 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u32(x43, x19, x25); let mut x46: u32 = 0; let mut x47: fiat_p384_u1 = 0; let (x46, x47) = fiat_p384_addcarryx_u32(x45, x21, x25); let mut x48: u32 = 0; let mut x49: fiat_p384_u1 = 0; let (x48, x49) = fiat_p384_addcarryx_u32(x47, x23, x25); out1[0] = x26; out1[1] = x28; out1[2] = x30; out1[3] = x32; out1[4] = x34; out1[5] = x36; out1[6] = x38; out1[7] = x40; out1[8] = x42; out1[9] = x44; out1[10] = x46; out1[11] = x48; out1 } #[doc = " The function fiat_p384_from_montgomery translates a field element out of the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = (eval arg1 * ((2^32)⁻¹ mod m)^12) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_from_montgomery( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_non_montgomery_domain_field_element { let mut out1: fiat_p384_non_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[0]); let mut x2: u32 = 0; let mut x3: u32 = 0; let (x2, x3) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x4: u32 = 0; let mut x5: u32 = 0; let (x4, x5) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x6: u32 = 0; let mut x7: u32 = 0; let (x6, x7) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x8: u32 = 0; let mut x9: u32 = 0; let (x8, x9) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x10: u32 = 0; let mut x11: u32 = 0; let (x10, x11) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x12: u32 = 0; let mut x13: u32 = 0; let (x12, x13) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x14: u32 = 0; let mut x15: u32 = 0; let (x14, x15) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x16: u32 = 0; let mut x17: u32 = 0; let (x16, x17) = fiat_p384_mulx_u32(x1, 0xfffffffe); let mut x18: u32 = 0; let mut x19: u32 = 0; let (x18, x19) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x20: u32 = 0; let mut x21: u32 = 0; let (x20, x21) = fiat_p384_mulx_u32(x1, 0xffffffff); let mut x22: u32 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u32(0x0, x19, x16); let mut x24: u32 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u32(x23, x17, x14); let mut x26: u32 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u32(x25, x15, x12); let mut x28: u32 = 0; let mut x29: fiat_p384_u1 = 0; let (x28, x29) = fiat_p384_addcarryx_u32(x27, x13, x10); let mut x30: u32 = 0; let mut x31: fiat_p384_u1 = 0; let (x30, x31) = fiat_p384_addcarryx_u32(x29, x11, x8); let mut x32: u32 = 0; let mut x33: fiat_p384_u1 = 0; let (x32, x33) = fiat_p384_addcarryx_u32(x31, x9, x6); let mut x34: u32 = 0; let mut x35: fiat_p384_u1 = 0; let (x34, x35) = fiat_p384_addcarryx_u32(x33, x7, x4); let mut x36: u32 = 0; let mut x37: fiat_p384_u1 = 0; let (x36, x37) = fiat_p384_addcarryx_u32(x35, x5, x2); let mut x38: u32 = 0; let mut x39: fiat_p384_u1 = 0; let (x38, x39) = fiat_p384_addcarryx_u32(0x0, x1, x20); let mut x40: u32 = 0; let mut x41: fiat_p384_u1 = 0; let (x40, x41) = fiat_p384_addcarryx_u32(0x0, ((x39 as u32) + x21), (arg1[1])); let mut x42: u32 = 0; let mut x43: u32 = 0; let (x42, x43) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x44: u32 = 0; let mut x45: u32 = 0; let (x44, x45) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x46: u32 = 0; let mut x47: u32 = 0; let (x46, x47) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x48: u32 = 0; let mut x49: u32 = 0; let (x48, x49) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x50: u32 = 0; let mut x51: u32 = 0; let (x50, x51) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x52: u32 = 0; let mut x53: u32 = 0; let (x52, x53) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x54: u32 = 0; let mut x55: u32 = 0; let (x54, x55) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x56: u32 = 0; let mut x57: u32 = 0; let (x56, x57) = fiat_p384_mulx_u32(x40, 0xfffffffe); let mut x58: u32 = 0; let mut x59: u32 = 0; let (x58, x59) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x60: u32 = 0; let mut x61: u32 = 0; let (x60, x61) = fiat_p384_mulx_u32(x40, 0xffffffff); let mut x62: u32 = 0; let mut x63: fiat_p384_u1 = 0; let (x62, x63) = fiat_p384_addcarryx_u32(0x0, x59, x56); let mut x64: u32 = 0; let mut x65: fiat_p384_u1 = 0; let (x64, x65) = fiat_p384_addcarryx_u32(x63, x57, x54); let mut x66: u32 = 0; let mut x67: fiat_p384_u1 = 0; let (x66, x67) = fiat_p384_addcarryx_u32(x65, x55, x52); let mut x68: u32 = 0; let mut x69: fiat_p384_u1 = 0; let (x68, x69) = fiat_p384_addcarryx_u32(x67, x53, x50); let mut x70: u32 = 0; let mut x71: fiat_p384_u1 = 0; let (x70, x71) = fiat_p384_addcarryx_u32(x69, x51, x48); let mut x72: u32 = 0; let mut x73: fiat_p384_u1 = 0; let (x72, x73) = fiat_p384_addcarryx_u32(x71, x49, x46); let mut x74: u32 = 0; let mut x75: fiat_p384_u1 = 0; let (x74, x75) = fiat_p384_addcarryx_u32(x73, x47, x44); let mut x76: u32 = 0; let mut x77: fiat_p384_u1 = 0; let (x76, x77) = fiat_p384_addcarryx_u32(x75, x45, x42); let mut x78: u32 = 0; let mut x79: fiat_p384_u1 = 0; let (x78, x79) = fiat_p384_addcarryx_u32(0x0, x40, x60); let mut x80: u32 = 0; let mut x81: fiat_p384_u1 = 0; let (x80, x81) = fiat_p384_addcarryx_u32(x79, (x41 as u32), x61); let mut x82: u32 = 0; let mut x83: fiat_p384_u1 = 0; let (x82, x83) = fiat_p384_addcarryx_u32(x81, x18, (0x0 as u32)); let mut x84: u32 = 0; let mut x85: fiat_p384_u1 = 0; let (x84, x85) = fiat_p384_addcarryx_u32(x83, x22, x58); let mut x86: u32 = 0; let mut x87: fiat_p384_u1 = 0; let (x86, x87) = fiat_p384_addcarryx_u32(x85, x24, x62); let mut x88: u32 = 0; let mut x89: fiat_p384_u1 = 0; let (x88, x89) = fiat_p384_addcarryx_u32(x87, x26, x64); let mut x90: u32 = 0; let mut x91: fiat_p384_u1 = 0; let (x90, x91) = fiat_p384_addcarryx_u32(x89, x28, x66); let mut x92: u32 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u32(x91, x30, x68); let mut x94: u32 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u32(x93, x32, x70); let mut x96: u32 = 0; let mut x97: fiat_p384_u1 = 0; let (x96, x97) = fiat_p384_addcarryx_u32(x95, x34, x72); let mut x98: u32 = 0; let mut x99: fiat_p384_u1 = 0; let (x98, x99) = fiat_p384_addcarryx_u32(x97, x36, x74); let mut x100: u32 = 0; let mut x101: fiat_p384_u1 = 0; let (x100, x101) = fiat_p384_addcarryx_u32(x99, ((x37 as u32) + x3), x76); let mut x102: u32 = 0; let mut x103: fiat_p384_u1 = 0; let (x102, x103) = fiat_p384_addcarryx_u32(x101, (0x0 as u32), ((x77 as u32) + x43)); let mut x104: u32 = 0; let mut x105: fiat_p384_u1 = 0; let (x104, x105) = fiat_p384_addcarryx_u32(0x0, x80, (arg1[2])); let mut x106: u32 = 0; let mut x107: fiat_p384_u1 = 0; let (x106, x107) = fiat_p384_addcarryx_u32(x105, x82, (0x0 as u32)); let mut x108: u32 = 0; let mut x109: fiat_p384_u1 = 0; let (x108, x109) = fiat_p384_addcarryx_u32(x107, x84, (0x0 as u32)); let mut x110: u32 = 0; let mut x111: fiat_p384_u1 = 0; let (x110, x111) = fiat_p384_addcarryx_u32(x109, x86, (0x0 as u32)); let mut x112: u32 = 0; let mut x113: fiat_p384_u1 = 0; let (x112, x113) = fiat_p384_addcarryx_u32(x111, x88, (0x0 as u32)); let mut x114: u32 = 0; let mut x115: fiat_p384_u1 = 0; let (x114, x115) = fiat_p384_addcarryx_u32(x113, x90, (0x0 as u32)); let mut x116: u32 = 0; let mut x117: fiat_p384_u1 = 0; let (x116, x117) = fiat_p384_addcarryx_u32(x115, x92, (0x0 as u32)); let mut x118: u32 = 0; let mut x119: fiat_p384_u1 = 0; let (x118, x119) = fiat_p384_addcarryx_u32(x117, x94, (0x0 as u32)); let mut x120: u32 = 0; let mut x121: fiat_p384_u1 = 0; let (x120, x121) = fiat_p384_addcarryx_u32(x119, x96, (0x0 as u32)); let mut x122: u32 = 0; let mut x123: fiat_p384_u1 = 0; let (x122, x123) = fiat_p384_addcarryx_u32(x121, x98, (0x0 as u32)); let mut x124: u32 = 0; let mut x125: fiat_p384_u1 = 0; let (x124, x125) = fiat_p384_addcarryx_u32(x123, x100, (0x0 as u32)); let mut x126: u32 = 0; let mut x127: fiat_p384_u1 = 0; let (x126, x127) = fiat_p384_addcarryx_u32(x125, x102, (0x0 as u32)); let mut x128: u32 = 0; let mut x129: u32 = 0; let (x128, x129) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x130: u32 = 0; let mut x131: u32 = 0; let (x130, x131) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x132: u32 = 0; let mut x133: u32 = 0; let (x132, x133) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x134: u32 = 0; let mut x135: u32 = 0; let (x134, x135) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x136: u32 = 0; let mut x137: u32 = 0; let (x136, x137) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x138: u32 = 0; let mut x139: u32 = 0; let (x138, x139) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x140: u32 = 0; let mut x141: u32 = 0; let (x140, x141) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x142: u32 = 0; let mut x143: u32 = 0; let (x142, x143) = fiat_p384_mulx_u32(x104, 0xfffffffe); let mut x144: u32 = 0; let mut x145: u32 = 0; let (x144, x145) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x146: u32 = 0; let mut x147: u32 = 0; let (x146, x147) = fiat_p384_mulx_u32(x104, 0xffffffff); let mut x148: u32 = 0; let mut x149: fiat_p384_u1 = 0; let (x148, x149) = fiat_p384_addcarryx_u32(0x0, x145, x142); let mut x150: u32 = 0; let mut x151: fiat_p384_u1 = 0; let (x150, x151) = fiat_p384_addcarryx_u32(x149, x143, x140); let mut x152: u32 = 0; let mut x153: fiat_p384_u1 = 0; let (x152, x153) = fiat_p384_addcarryx_u32(x151, x141, x138); let mut x154: u32 = 0; let mut x155: fiat_p384_u1 = 0; let (x154, x155) = fiat_p384_addcarryx_u32(x153, x139, x136); let mut x156: u32 = 0; let mut x157: fiat_p384_u1 = 0; let (x156, x157) = fiat_p384_addcarryx_u32(x155, x137, x134); let mut x158: u32 = 0; let mut x159: fiat_p384_u1 = 0; let (x158, x159) = fiat_p384_addcarryx_u32(x157, x135, x132); let mut x160: u32 = 0; let mut x161: fiat_p384_u1 = 0; let (x160, x161) = fiat_p384_addcarryx_u32(x159, x133, x130); let mut x162: u32 = 0; let mut x163: fiat_p384_u1 = 0; let (x162, x163) = fiat_p384_addcarryx_u32(x161, x131, x128); let mut x164: u32 = 0; let mut x165: fiat_p384_u1 = 0; let (x164, x165) = fiat_p384_addcarryx_u32(0x0, x104, x146); let mut x166: u32 = 0; let mut x167: fiat_p384_u1 = 0; let (x166, x167) = fiat_p384_addcarryx_u32(x165, x106, x147); let mut x168: u32 = 0; let mut x169: fiat_p384_u1 = 0; let (x168, x169) = fiat_p384_addcarryx_u32(x167, x108, (0x0 as u32)); let mut x170: u32 = 0; let mut x171: fiat_p384_u1 = 0; let (x170, x171) = fiat_p384_addcarryx_u32(x169, x110, x144); let mut x172: u32 = 0; let mut x173: fiat_p384_u1 = 0; let (x172, x173) = fiat_p384_addcarryx_u32(x171, x112, x148); let mut x174: u32 = 0; let mut x175: fiat_p384_u1 = 0; let (x174, x175) = fiat_p384_addcarryx_u32(x173, x114, x150); let mut x176: u32 = 0; let mut x177: fiat_p384_u1 = 0; let (x176, x177) = fiat_p384_addcarryx_u32(x175, x116, x152); let mut x178: u32 = 0; let mut x179: fiat_p384_u1 = 0; let (x178, x179) = fiat_p384_addcarryx_u32(x177, x118, x154); let mut x180: u32 = 0; let mut x181: fiat_p384_u1 = 0; let (x180, x181) = fiat_p384_addcarryx_u32(x179, x120, x156); let mut x182: u32 = 0; let mut x183: fiat_p384_u1 = 0; let (x182, x183) = fiat_p384_addcarryx_u32(x181, x122, x158); let mut x184: u32 = 0; let mut x185: fiat_p384_u1 = 0; let (x184, x185) = fiat_p384_addcarryx_u32(x183, x124, x160); let mut x186: u32 = 0; let mut x187: fiat_p384_u1 = 0; let (x186, x187) = fiat_p384_addcarryx_u32(x185, x126, x162); let mut x188: u32 = 0; let mut x189: fiat_p384_u1 = 0; let (x188, x189) = fiat_p384_addcarryx_u32( x187, ((x127 as u32) + (x103 as u32)), ((x163 as u32) + x129), ); let mut x190: u32 = 0; let mut x191: fiat_p384_u1 = 0; let (x190, x191) = fiat_p384_addcarryx_u32(0x0, x166, (arg1[3])); let mut x192: u32 = 0; let mut x193: fiat_p384_u1 = 0; let (x192, x193) = fiat_p384_addcarryx_u32(x191, x168, (0x0 as u32)); let mut x194: u32 = 0; let mut x195: fiat_p384_u1 = 0; let (x194, x195) = fiat_p384_addcarryx_u32(x193, x170, (0x0 as u32)); let mut x196: u32 = 0; let mut x197: fiat_p384_u1 = 0; let (x196, x197) = fiat_p384_addcarryx_u32(x195, x172, (0x0 as u32)); let mut x198: u32 = 0; let mut x199: fiat_p384_u1 = 0; let (x198, x199) = fiat_p384_addcarryx_u32(x197, x174, (0x0 as u32)); let mut x200: u32 = 0; let mut x201: fiat_p384_u1 = 0; let (x200, x201) = fiat_p384_addcarryx_u32(x199, x176, (0x0 as u32)); let mut x202: u32 = 0; let mut x203: fiat_p384_u1 = 0; let (x202, x203) = fiat_p384_addcarryx_u32(x201, x178, (0x0 as u32)); let mut x204: u32 = 0; let mut x205: fiat_p384_u1 = 0; let (x204, x205) = fiat_p384_addcarryx_u32(x203, x180, (0x0 as u32)); let mut x206: u32 = 0; let mut x207: fiat_p384_u1 = 0; let (x206, x207) = fiat_p384_addcarryx_u32(x205, x182, (0x0 as u32)); let mut x208: u32 = 0; let mut x209: fiat_p384_u1 = 0; let (x208, x209) = fiat_p384_addcarryx_u32(x207, x184, (0x0 as u32)); let mut x210: u32 = 0; let mut x211: fiat_p384_u1 = 0; let (x210, x211) = fiat_p384_addcarryx_u32(x209, x186, (0x0 as u32)); let mut x212: u32 = 0; let mut x213: fiat_p384_u1 = 0; let (x212, x213) = fiat_p384_addcarryx_u32(x211, x188, (0x0 as u32)); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x216: u32 = 0; let mut x217: u32 = 0; let (x216, x217) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x218: u32 = 0; let mut x219: u32 = 0; let (x218, x219) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x220: u32 = 0; let mut x221: u32 = 0; let (x220, x221) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x222: u32 = 0; let mut x223: u32 = 0; let (x222, x223) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x224: u32 = 0; let mut x225: u32 = 0; let (x224, x225) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x226: u32 = 0; let mut x227: u32 = 0; let (x226, x227) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x228: u32 = 0; let mut x229: u32 = 0; let (x228, x229) = fiat_p384_mulx_u32(x190, 0xfffffffe); let mut x230: u32 = 0; let mut x231: u32 = 0; let (x230, x231) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x232: u32 = 0; let mut x233: u32 = 0; let (x232, x233) = fiat_p384_mulx_u32(x190, 0xffffffff); let mut x234: u32 = 0; let mut x235: fiat_p384_u1 = 0; let (x234, x235) = fiat_p384_addcarryx_u32(0x0, x231, x228); let mut x236: u32 = 0; let mut x237: fiat_p384_u1 = 0; let (x236, x237) = fiat_p384_addcarryx_u32(x235, x229, x226); let mut x238: u32 = 0; let mut x239: fiat_p384_u1 = 0; let (x238, x239) = fiat_p384_addcarryx_u32(x237, x227, x224); let mut x240: u32 = 0; let mut x241: fiat_p384_u1 = 0; let (x240, x241) = fiat_p384_addcarryx_u32(x239, x225, x222); let mut x242: u32 = 0; let mut x243: fiat_p384_u1 = 0; let (x242, x243) = fiat_p384_addcarryx_u32(x241, x223, x220); let mut x244: u32 = 0; let mut x245: fiat_p384_u1 = 0; let (x244, x245) = fiat_p384_addcarryx_u32(x243, x221, x218); let mut x246: u32 = 0; let mut x247: fiat_p384_u1 = 0; let (x246, x247) = fiat_p384_addcarryx_u32(x245, x219, x216); let mut x248: u32 = 0; let mut x249: fiat_p384_u1 = 0; let (x248, x249) = fiat_p384_addcarryx_u32(x247, x217, x214); let mut x250: u32 = 0; let mut x251: fiat_p384_u1 = 0; let (x250, x251) = fiat_p384_addcarryx_u32(0x0, x190, x232); let mut x252: u32 = 0; let mut x253: fiat_p384_u1 = 0; let (x252, x253) = fiat_p384_addcarryx_u32(x251, x192, x233); let mut x254: u32 = 0; let mut x255: fiat_p384_u1 = 0; let (x254, x255) = fiat_p384_addcarryx_u32(x253, x194, (0x0 as u32)); let mut x256: u32 = 0; let mut x257: fiat_p384_u1 = 0; let (x256, x257) = fiat_p384_addcarryx_u32(x255, x196, x230); let mut x258: u32 = 0; let mut x259: fiat_p384_u1 = 0; let (x258, x259) = fiat_p384_addcarryx_u32(x257, x198, x234); let mut x260: u32 = 0; let mut x261: fiat_p384_u1 = 0; let (x260, x261) = fiat_p384_addcarryx_u32(x259, x200, x236); let mut x262: u32 = 0; let mut x263: fiat_p384_u1 = 0; let (x262, x263) = fiat_p384_addcarryx_u32(x261, x202, x238); let mut x264: u32 = 0; let mut x265: fiat_p384_u1 = 0; let (x264, x265) = fiat_p384_addcarryx_u32(x263, x204, x240); let mut x266: u32 = 0; let mut x267: fiat_p384_u1 = 0; let (x266, x267) = fiat_p384_addcarryx_u32(x265, x206, x242); let mut x268: u32 = 0; let mut x269: fiat_p384_u1 = 0; let (x268, x269) = fiat_p384_addcarryx_u32(x267, x208, x244); let mut x270: u32 = 0; let mut x271: fiat_p384_u1 = 0; let (x270, x271) = fiat_p384_addcarryx_u32(x269, x210, x246); let mut x272: u32 = 0; let mut x273: fiat_p384_u1 = 0; let (x272, x273) = fiat_p384_addcarryx_u32(x271, x212, x248); let mut x274: u32 = 0; let mut x275: fiat_p384_u1 = 0; let (x274, x275) = fiat_p384_addcarryx_u32( x273, ((x213 as u32) + (x189 as u32)), ((x249 as u32) + x215), ); let mut x276: u32 = 0; let mut x277: fiat_p384_u1 = 0; let (x276, x277) = fiat_p384_addcarryx_u32(0x0, x252, (arg1[4])); let mut x278: u32 = 0; let mut x279: fiat_p384_u1 = 0; let (x278, x279) = fiat_p384_addcarryx_u32(x277, x254, (0x0 as u32)); let mut x280: u32 = 0; let mut x281: fiat_p384_u1 = 0; let (x280, x281) = fiat_p384_addcarryx_u32(x279, x256, (0x0 as u32)); let mut x282: u32 = 0; let mut x283: fiat_p384_u1 = 0; let (x282, x283) = fiat_p384_addcarryx_u32(x281, x258, (0x0 as u32)); let mut x284: u32 = 0; let mut x285: fiat_p384_u1 = 0; let (x284, x285) = fiat_p384_addcarryx_u32(x283, x260, (0x0 as u32)); let mut x286: u32 = 0; let mut x287: fiat_p384_u1 = 0; let (x286, x287) = fiat_p384_addcarryx_u32(x285, x262, (0x0 as u32)); let mut x288: u32 = 0; let mut x289: fiat_p384_u1 = 0; let (x288, x289) = fiat_p384_addcarryx_u32(x287, x264, (0x0 as u32)); let mut x290: u32 = 0; let mut x291: fiat_p384_u1 = 0; let (x290, x291) = fiat_p384_addcarryx_u32(x289, x266, (0x0 as u32)); let mut x292: u32 = 0; let mut x293: fiat_p384_u1 = 0; let (x292, x293) = fiat_p384_addcarryx_u32(x291, x268, (0x0 as u32)); let mut x294: u32 = 0; let mut x295: fiat_p384_u1 = 0; let (x294, x295) = fiat_p384_addcarryx_u32(x293, x270, (0x0 as u32)); let mut x296: u32 = 0; let mut x297: fiat_p384_u1 = 0; let (x296, x297) = fiat_p384_addcarryx_u32(x295, x272, (0x0 as u32)); let mut x298: u32 = 0; let mut x299: fiat_p384_u1 = 0; let (x298, x299) = fiat_p384_addcarryx_u32(x297, x274, (0x0 as u32)); let mut x300: u32 = 0; let mut x301: u32 = 0; let (x300, x301) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x302: u32 = 0; let mut x303: u32 = 0; let (x302, x303) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x304: u32 = 0; let mut x305: u32 = 0; let (x304, x305) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x306: u32 = 0; let mut x307: u32 = 0; let (x306, x307) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x308: u32 = 0; let mut x309: u32 = 0; let (x308, x309) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x310: u32 = 0; let mut x311: u32 = 0; let (x310, x311) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x312: u32 = 0; let mut x313: u32 = 0; let (x312, x313) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x314: u32 = 0; let mut x315: u32 = 0; let (x314, x315) = fiat_p384_mulx_u32(x276, 0xfffffffe); let mut x316: u32 = 0; let mut x317: u32 = 0; let (x316, x317) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x318: u32 = 0; let mut x319: u32 = 0; let (x318, x319) = fiat_p384_mulx_u32(x276, 0xffffffff); let mut x320: u32 = 0; let mut x321: fiat_p384_u1 = 0; let (x320, x321) = fiat_p384_addcarryx_u32(0x0, x317, x314); let mut x322: u32 = 0; let mut x323: fiat_p384_u1 = 0; let (x322, x323) = fiat_p384_addcarryx_u32(x321, x315, x312); let mut x324: u32 = 0; let mut x325: fiat_p384_u1 = 0; let (x324, x325) = fiat_p384_addcarryx_u32(x323, x313, x310); let mut x326: u32 = 0; let mut x327: fiat_p384_u1 = 0; let (x326, x327) = fiat_p384_addcarryx_u32(x325, x311, x308); let mut x328: u32 = 0; let mut x329: fiat_p384_u1 = 0; let (x328, x329) = fiat_p384_addcarryx_u32(x327, x309, x306); let mut x330: u32 = 0; let mut x331: fiat_p384_u1 = 0; let (x330, x331) = fiat_p384_addcarryx_u32(x329, x307, x304); let mut x332: u32 = 0; let mut x333: fiat_p384_u1 = 0; let (x332, x333) = fiat_p384_addcarryx_u32(x331, x305, x302); let mut x334: u32 = 0; let mut x335: fiat_p384_u1 = 0; let (x334, x335) = fiat_p384_addcarryx_u32(x333, x303, x300); let mut x336: u32 = 0; let mut x337: fiat_p384_u1 = 0; let (x336, x337) = fiat_p384_addcarryx_u32(0x0, x276, x318); let mut x338: u32 = 0; let mut x339: fiat_p384_u1 = 0; let (x338, x339) = fiat_p384_addcarryx_u32(x337, x278, x319); let mut x340: u32 = 0; let mut x341: fiat_p384_u1 = 0; let (x340, x341) = fiat_p384_addcarryx_u32(x339, x280, (0x0 as u32)); let mut x342: u32 = 0; let mut x343: fiat_p384_u1 = 0; let (x342, x343) = fiat_p384_addcarryx_u32(x341, x282, x316); let mut x344: u32 = 0; let mut x345: fiat_p384_u1 = 0; let (x344, x345) = fiat_p384_addcarryx_u32(x343, x284, x320); let mut x346: u32 = 0; let mut x347: fiat_p384_u1 = 0; let (x346, x347) = fiat_p384_addcarryx_u32(x345, x286, x322); let mut x348: u32 = 0; let mut x349: fiat_p384_u1 = 0; let (x348, x349) = fiat_p384_addcarryx_u32(x347, x288, x324); let mut x350: u32 = 0; let mut x351: fiat_p384_u1 = 0; let (x350, x351) = fiat_p384_addcarryx_u32(x349, x290, x326); let mut x352: u32 = 0; let mut x353: fiat_p384_u1 = 0; let (x352, x353) = fiat_p384_addcarryx_u32(x351, x292, x328); let mut x354: u32 = 0; let mut x355: fiat_p384_u1 = 0; let (x354, x355) = fiat_p384_addcarryx_u32(x353, x294, x330); let mut x356: u32 = 0; let mut x357: fiat_p384_u1 = 0; let (x356, x357) = fiat_p384_addcarryx_u32(x355, x296, x332); let mut x358: u32 = 0; let mut x359: fiat_p384_u1 = 0; let (x358, x359) = fiat_p384_addcarryx_u32(x357, x298, x334); let mut x360: u32 = 0; let mut x361: fiat_p384_u1 = 0; let (x360, x361) = fiat_p384_addcarryx_u32( x359, ((x299 as u32) + (x275 as u32)), ((x335 as u32) + x301), ); let mut x362: u32 = 0; let mut x363: fiat_p384_u1 = 0; let (x362, x363) = fiat_p384_addcarryx_u32(0x0, x338, (arg1[5])); let mut x364: u32 = 0; let mut x365: fiat_p384_u1 = 0; let (x364, x365) = fiat_p384_addcarryx_u32(x363, x340, (0x0 as u32)); let mut x366: u32 = 0; let mut x367: fiat_p384_u1 = 0; let (x366, x367) = fiat_p384_addcarryx_u32(x365, x342, (0x0 as u32)); let mut x368: u32 = 0; let mut x369: fiat_p384_u1 = 0; let (x368, x369) = fiat_p384_addcarryx_u32(x367, x344, (0x0 as u32)); let mut x370: u32 = 0; let mut x371: fiat_p384_u1 = 0; let (x370, x371) = fiat_p384_addcarryx_u32(x369, x346, (0x0 as u32)); let mut x372: u32 = 0; let mut x373: fiat_p384_u1 = 0; let (x372, x373) = fiat_p384_addcarryx_u32(x371, x348, (0x0 as u32)); let mut x374: u32 = 0; let mut x375: fiat_p384_u1 = 0; let (x374, x375) = fiat_p384_addcarryx_u32(x373, x350, (0x0 as u32)); let mut x376: u32 = 0; let mut x377: fiat_p384_u1 = 0; let (x376, x377) = fiat_p384_addcarryx_u32(x375, x352, (0x0 as u32)); let mut x378: u32 = 0; let mut x379: fiat_p384_u1 = 0; let (x378, x379) = fiat_p384_addcarryx_u32(x377, x354, (0x0 as u32)); let mut x380: u32 = 0; let mut x381: fiat_p384_u1 = 0; let (x380, x381) = fiat_p384_addcarryx_u32(x379, x356, (0x0 as u32)); let mut x382: u32 = 0; let mut x383: fiat_p384_u1 = 0; let (x382, x383) = fiat_p384_addcarryx_u32(x381, x358, (0x0 as u32)); let mut x384: u32 = 0; let mut x385: fiat_p384_u1 = 0; let (x384, x385) = fiat_p384_addcarryx_u32(x383, x360, (0x0 as u32)); let mut x386: u32 = 0; let mut x387: u32 = 0; let (x386, x387) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x388: u32 = 0; let mut x389: u32 = 0; let (x388, x389) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x390: u32 = 0; let mut x391: u32 = 0; let (x390, x391) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x392: u32 = 0; let mut x393: u32 = 0; let (x392, x393) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x394: u32 = 0; let mut x395: u32 = 0; let (x394, x395) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x396: u32 = 0; let mut x397: u32 = 0; let (x396, x397) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x398: u32 = 0; let mut x399: u32 = 0; let (x398, x399) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x400: u32 = 0; let mut x401: u32 = 0; let (x400, x401) = fiat_p384_mulx_u32(x362, 0xfffffffe); let mut x402: u32 = 0; let mut x403: u32 = 0; let (x402, x403) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x404: u32 = 0; let mut x405: u32 = 0; let (x404, x405) = fiat_p384_mulx_u32(x362, 0xffffffff); let mut x406: u32 = 0; let mut x407: fiat_p384_u1 = 0; let (x406, x407) = fiat_p384_addcarryx_u32(0x0, x403, x400); let mut x408: u32 = 0; let mut x409: fiat_p384_u1 = 0; let (x408, x409) = fiat_p384_addcarryx_u32(x407, x401, x398); let mut x410: u32 = 0; let mut x411: fiat_p384_u1 = 0; let (x410, x411) = fiat_p384_addcarryx_u32(x409, x399, x396); let mut x412: u32 = 0; let mut x413: fiat_p384_u1 = 0; let (x412, x413) = fiat_p384_addcarryx_u32(x411, x397, x394); let mut x414: u32 = 0; let mut x415: fiat_p384_u1 = 0; let (x414, x415) = fiat_p384_addcarryx_u32(x413, x395, x392); let mut x416: u32 = 0; let mut x417: fiat_p384_u1 = 0; let (x416, x417) = fiat_p384_addcarryx_u32(x415, x393, x390); let mut x418: u32 = 0; let mut x419: fiat_p384_u1 = 0; let (x418, x419) = fiat_p384_addcarryx_u32(x417, x391, x388); let mut x420: u32 = 0; let mut x421: fiat_p384_u1 = 0; let (x420, x421) = fiat_p384_addcarryx_u32(x419, x389, x386); let mut x422: u32 = 0; let mut x423: fiat_p384_u1 = 0; let (x422, x423) = fiat_p384_addcarryx_u32(0x0, x362, x404); let mut x424: u32 = 0; let mut x425: fiat_p384_u1 = 0; let (x424, x425) = fiat_p384_addcarryx_u32(x423, x364, x405); let mut x426: u32 = 0; let mut x427: fiat_p384_u1 = 0; let (x426, x427) = fiat_p384_addcarryx_u32(x425, x366, (0x0 as u32)); let mut x428: u32 = 0; let mut x429: fiat_p384_u1 = 0; let (x428, x429) = fiat_p384_addcarryx_u32(x427, x368, x402); let mut x430: u32 = 0; let mut x431: fiat_p384_u1 = 0; let (x430, x431) = fiat_p384_addcarryx_u32(x429, x370, x406); let mut x432: u32 = 0; let mut x433: fiat_p384_u1 = 0; let (x432, x433) = fiat_p384_addcarryx_u32(x431, x372, x408); let mut x434: u32 = 0; let mut x435: fiat_p384_u1 = 0; let (x434, x435) = fiat_p384_addcarryx_u32(x433, x374, x410); let mut x436: u32 = 0; let mut x437: fiat_p384_u1 = 0; let (x436, x437) = fiat_p384_addcarryx_u32(x435, x376, x412); let mut x438: u32 = 0; let mut x439: fiat_p384_u1 = 0; let (x438, x439) = fiat_p384_addcarryx_u32(x437, x378, x414); let mut x440: u32 = 0; let mut x441: fiat_p384_u1 = 0; let (x440, x441) = fiat_p384_addcarryx_u32(x439, x380, x416); let mut x442: u32 = 0; let mut x443: fiat_p384_u1 = 0; let (x442, x443) = fiat_p384_addcarryx_u32(x441, x382, x418); let mut x444: u32 = 0; let mut x445: fiat_p384_u1 = 0; let (x444, x445) = fiat_p384_addcarryx_u32(x443, x384, x420); let mut x446: u32 = 0; let mut x447: fiat_p384_u1 = 0; let (x446, x447) = fiat_p384_addcarryx_u32( x445, ((x385 as u32) + (x361 as u32)), ((x421 as u32) + x387), ); let mut x448: u32 = 0; let mut x449: fiat_p384_u1 = 0; let (x448, x449) = fiat_p384_addcarryx_u32(0x0, x424, (arg1[6])); let mut x450: u32 = 0; let mut x451: fiat_p384_u1 = 0; let (x450, x451) = fiat_p384_addcarryx_u32(x449, x426, (0x0 as u32)); let mut x452: u32 = 0; let mut x453: fiat_p384_u1 = 0; let (x452, x453) = fiat_p384_addcarryx_u32(x451, x428, (0x0 as u32)); let mut x454: u32 = 0; let mut x455: fiat_p384_u1 = 0; let (x454, x455) = fiat_p384_addcarryx_u32(x453, x430, (0x0 as u32)); let mut x456: u32 = 0; let mut x457: fiat_p384_u1 = 0; let (x456, x457) = fiat_p384_addcarryx_u32(x455, x432, (0x0 as u32)); let mut x458: u32 = 0; let mut x459: fiat_p384_u1 = 0; let (x458, x459) = fiat_p384_addcarryx_u32(x457, x434, (0x0 as u32)); let mut x460: u32 = 0; let mut x461: fiat_p384_u1 = 0; let (x460, x461) = fiat_p384_addcarryx_u32(x459, x436, (0x0 as u32)); let mut x462: u32 = 0; let mut x463: fiat_p384_u1 = 0; let (x462, x463) = fiat_p384_addcarryx_u32(x461, x438, (0x0 as u32)); let mut x464: u32 = 0; let mut x465: fiat_p384_u1 = 0; let (x464, x465) = fiat_p384_addcarryx_u32(x463, x440, (0x0 as u32)); let mut x466: u32 = 0; let mut x467: fiat_p384_u1 = 0; let (x466, x467) = fiat_p384_addcarryx_u32(x465, x442, (0x0 as u32)); let mut x468: u32 = 0; let mut x469: fiat_p384_u1 = 0; let (x468, x469) = fiat_p384_addcarryx_u32(x467, x444, (0x0 as u32)); let mut x470: u32 = 0; let mut x471: fiat_p384_u1 = 0; let (x470, x471) = fiat_p384_addcarryx_u32(x469, x446, (0x0 as u32)); let mut x472: u32 = 0; let mut x473: u32 = 0; let (x472, x473) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x474: u32 = 0; let mut x475: u32 = 0; let (x474, x475) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x476: u32 = 0; let mut x477: u32 = 0; let (x476, x477) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x478: u32 = 0; let mut x479: u32 = 0; let (x478, x479) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x480: u32 = 0; let mut x481: u32 = 0; let (x480, x481) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x482: u32 = 0; let mut x483: u32 = 0; let (x482, x483) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x484: u32 = 0; let mut x485: u32 = 0; let (x484, x485) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x486: u32 = 0; let mut x487: u32 = 0; let (x486, x487) = fiat_p384_mulx_u32(x448, 0xfffffffe); let mut x488: u32 = 0; let mut x489: u32 = 0; let (x488, x489) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x490: u32 = 0; let mut x491: u32 = 0; let (x490, x491) = fiat_p384_mulx_u32(x448, 0xffffffff); let mut x492: u32 = 0; let mut x493: fiat_p384_u1 = 0; let (x492, x493) = fiat_p384_addcarryx_u32(0x0, x489, x486); let mut x494: u32 = 0; let mut x495: fiat_p384_u1 = 0; let (x494, x495) = fiat_p384_addcarryx_u32(x493, x487, x484); let mut x496: u32 = 0; let mut x497: fiat_p384_u1 = 0; let (x496, x497) = fiat_p384_addcarryx_u32(x495, x485, x482); let mut x498: u32 = 0; let mut x499: fiat_p384_u1 = 0; let (x498, x499) = fiat_p384_addcarryx_u32(x497, x483, x480); let mut x500: u32 = 0; let mut x501: fiat_p384_u1 = 0; let (x500, x501) = fiat_p384_addcarryx_u32(x499, x481, x478); let mut x502: u32 = 0; let mut x503: fiat_p384_u1 = 0; let (x502, x503) = fiat_p384_addcarryx_u32(x501, x479, x476); let mut x504: u32 = 0; let mut x505: fiat_p384_u1 = 0; let (x504, x505) = fiat_p384_addcarryx_u32(x503, x477, x474); let mut x506: u32 = 0; let mut x507: fiat_p384_u1 = 0; let (x506, x507) = fiat_p384_addcarryx_u32(x505, x475, x472); let mut x508: u32 = 0; let mut x509: fiat_p384_u1 = 0; let (x508, x509) = fiat_p384_addcarryx_u32(0x0, x448, x490); let mut x510: u32 = 0; let mut x511: fiat_p384_u1 = 0; let (x510, x511) = fiat_p384_addcarryx_u32(x509, x450, x491); let mut x512: u32 = 0; let mut x513: fiat_p384_u1 = 0; let (x512, x513) = fiat_p384_addcarryx_u32(x511, x452, (0x0 as u32)); let mut x514: u32 = 0; let mut x515: fiat_p384_u1 = 0; let (x514, x515) = fiat_p384_addcarryx_u32(x513, x454, x488); let mut x516: u32 = 0; let mut x517: fiat_p384_u1 = 0; let (x516, x517) = fiat_p384_addcarryx_u32(x515, x456, x492); let mut x518: u32 = 0; let mut x519: fiat_p384_u1 = 0; let (x518, x519) = fiat_p384_addcarryx_u32(x517, x458, x494); let mut x520: u32 = 0; let mut x521: fiat_p384_u1 = 0; let (x520, x521) = fiat_p384_addcarryx_u32(x519, x460, x496); let mut x522: u32 = 0; let mut x523: fiat_p384_u1 = 0; let (x522, x523) = fiat_p384_addcarryx_u32(x521, x462, x498); let mut x524: u32 = 0; let mut x525: fiat_p384_u1 = 0; let (x524, x525) = fiat_p384_addcarryx_u32(x523, x464, x500); let mut x526: u32 = 0; let mut x527: fiat_p384_u1 = 0; let (x526, x527) = fiat_p384_addcarryx_u32(x525, x466, x502); let mut x528: u32 = 0; let mut x529: fiat_p384_u1 = 0; let (x528, x529) = fiat_p384_addcarryx_u32(x527, x468, x504); let mut x530: u32 = 0; let mut x531: fiat_p384_u1 = 0; let (x530, x531) = fiat_p384_addcarryx_u32(x529, x470, x506); let mut x532: u32 = 0; let mut x533: fiat_p384_u1 = 0; let (x532, x533) = fiat_p384_addcarryx_u32( x531, ((x471 as u32) + (x447 as u32)), ((x507 as u32) + x473), ); let mut x534: u32 = 0; let mut x535: fiat_p384_u1 = 0; let (x534, x535) = fiat_p384_addcarryx_u32(0x0, x510, (arg1[7])); let mut x536: u32 = 0; let mut x537: fiat_p384_u1 = 0; let (x536, x537) = fiat_p384_addcarryx_u32(x535, x512, (0x0 as u32)); let mut x538: u32 = 0; let mut x539: fiat_p384_u1 = 0; let (x538, x539) = fiat_p384_addcarryx_u32(x537, x514, (0x0 as u32)); let mut x540: u32 = 0; let mut x541: fiat_p384_u1 = 0; let (x540, x541) = fiat_p384_addcarryx_u32(x539, x516, (0x0 as u32)); let mut x542: u32 = 0; let mut x543: fiat_p384_u1 = 0; let (x542, x543) = fiat_p384_addcarryx_u32(x541, x518, (0x0 as u32)); let mut x544: u32 = 0; let mut x545: fiat_p384_u1 = 0; let (x544, x545) = fiat_p384_addcarryx_u32(x543, x520, (0x0 as u32)); let mut x546: u32 = 0; let mut x547: fiat_p384_u1 = 0; let (x546, x547) = fiat_p384_addcarryx_u32(x545, x522, (0x0 as u32)); let mut x548: u32 = 0; let mut x549: fiat_p384_u1 = 0; let (x548, x549) = fiat_p384_addcarryx_u32(x547, x524, (0x0 as u32)); let mut x550: u32 = 0; let mut x551: fiat_p384_u1 = 0; let (x550, x551) = fiat_p384_addcarryx_u32(x549, x526, (0x0 as u32)); let mut x552: u32 = 0; let mut x553: fiat_p384_u1 = 0; let (x552, x553) = fiat_p384_addcarryx_u32(x551, x528, (0x0 as u32)); let mut x554: u32 = 0; let mut x555: fiat_p384_u1 = 0; let (x554, x555) = fiat_p384_addcarryx_u32(x553, x530, (0x0 as u32)); let mut x556: u32 = 0; let mut x557: fiat_p384_u1 = 0; let (x556, x557) = fiat_p384_addcarryx_u32(x555, x532, (0x0 as u32)); let mut x558: u32 = 0; let mut x559: u32 = 0; let (x558, x559) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x560: u32 = 0; let mut x561: u32 = 0; let (x560, x561) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x562: u32 = 0; let mut x563: u32 = 0; let (x562, x563) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x564: u32 = 0; let mut x565: u32 = 0; let (x564, x565) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x566: u32 = 0; let mut x567: u32 = 0; let (x566, x567) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x568: u32 = 0; let mut x569: u32 = 0; let (x568, x569) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x570: u32 = 0; let mut x571: u32 = 0; let (x570, x571) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x572: u32 = 0; let mut x573: u32 = 0; let (x572, x573) = fiat_p384_mulx_u32(x534, 0xfffffffe); let mut x574: u32 = 0; let mut x575: u32 = 0; let (x574, x575) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x576: u32 = 0; let mut x577: u32 = 0; let (x576, x577) = fiat_p384_mulx_u32(x534, 0xffffffff); let mut x578: u32 = 0; let mut x579: fiat_p384_u1 = 0; let (x578, x579) = fiat_p384_addcarryx_u32(0x0, x575, x572); let mut x580: u32 = 0; let mut x581: fiat_p384_u1 = 0; let (x580, x581) = fiat_p384_addcarryx_u32(x579, x573, x570); let mut x582: u32 = 0; let mut x583: fiat_p384_u1 = 0; let (x582, x583) = fiat_p384_addcarryx_u32(x581, x571, x568); let mut x584: u32 = 0; let mut x585: fiat_p384_u1 = 0; let (x584, x585) = fiat_p384_addcarryx_u32(x583, x569, x566); let mut x586: u32 = 0; let mut x587: fiat_p384_u1 = 0; let (x586, x587) = fiat_p384_addcarryx_u32(x585, x567, x564); let mut x588: u32 = 0; let mut x589: fiat_p384_u1 = 0; let (x588, x589) = fiat_p384_addcarryx_u32(x587, x565, x562); let mut x590: u32 = 0; let mut x591: fiat_p384_u1 = 0; let (x590, x591) = fiat_p384_addcarryx_u32(x589, x563, x560); let mut x592: u32 = 0; let mut x593: fiat_p384_u1 = 0; let (x592, x593) = fiat_p384_addcarryx_u32(x591, x561, x558); let mut x594: u32 = 0; let mut x595: fiat_p384_u1 = 0; let (x594, x595) = fiat_p384_addcarryx_u32(0x0, x534, x576); let mut x596: u32 = 0; let mut x597: fiat_p384_u1 = 0; let (x596, x597) = fiat_p384_addcarryx_u32(x595, x536, x577); let mut x598: u32 = 0; let mut x599: fiat_p384_u1 = 0; let (x598, x599) = fiat_p384_addcarryx_u32(x597, x538, (0x0 as u32)); let mut x600: u32 = 0; let mut x601: fiat_p384_u1 = 0; let (x600, x601) = fiat_p384_addcarryx_u32(x599, x540, x574); let mut x602: u32 = 0; let mut x603: fiat_p384_u1 = 0; let (x602, x603) = fiat_p384_addcarryx_u32(x601, x542, x578); let mut x604: u32 = 0; let mut x605: fiat_p384_u1 = 0; let (x604, x605) = fiat_p384_addcarryx_u32(x603, x544, x580); let mut x606: u32 = 0; let mut x607: fiat_p384_u1 = 0; let (x606, x607) = fiat_p384_addcarryx_u32(x605, x546, x582); let mut x608: u32 = 0; let mut x609: fiat_p384_u1 = 0; let (x608, x609) = fiat_p384_addcarryx_u32(x607, x548, x584); let mut x610: u32 = 0; let mut x611: fiat_p384_u1 = 0; let (x610, x611) = fiat_p384_addcarryx_u32(x609, x550, x586); let mut x612: u32 = 0; let mut x613: fiat_p384_u1 = 0; let (x612, x613) = fiat_p384_addcarryx_u32(x611, x552, x588); let mut x614: u32 = 0; let mut x615: fiat_p384_u1 = 0; let (x614, x615) = fiat_p384_addcarryx_u32(x613, x554, x590); let mut x616: u32 = 0; let mut x617: fiat_p384_u1 = 0; let (x616, x617) = fiat_p384_addcarryx_u32(x615, x556, x592); let mut x618: u32 = 0; let mut x619: fiat_p384_u1 = 0; let (x618, x619) = fiat_p384_addcarryx_u32( x617, ((x557 as u32) + (x533 as u32)), ((x593 as u32) + x559), ); let mut x620: u32 = 0; let mut x621: fiat_p384_u1 = 0; let (x620, x621) = fiat_p384_addcarryx_u32(0x0, x596, (arg1[8])); let mut x622: u32 = 0; let mut x623: fiat_p384_u1 = 0; let (x622, x623) = fiat_p384_addcarryx_u32(x621, x598, (0x0 as u32)); let mut x624: u32 = 0; let mut x625: fiat_p384_u1 = 0; let (x624, x625) = fiat_p384_addcarryx_u32(x623, x600, (0x0 as u32)); let mut x626: u32 = 0; let mut x627: fiat_p384_u1 = 0; let (x626, x627) = fiat_p384_addcarryx_u32(x625, x602, (0x0 as u32)); let mut x628: u32 = 0; let mut x629: fiat_p384_u1 = 0; let (x628, x629) = fiat_p384_addcarryx_u32(x627, x604, (0x0 as u32)); let mut x630: u32 = 0; let mut x631: fiat_p384_u1 = 0; let (x630, x631) = fiat_p384_addcarryx_u32(x629, x606, (0x0 as u32)); let mut x632: u32 = 0; let mut x633: fiat_p384_u1 = 0; let (x632, x633) = fiat_p384_addcarryx_u32(x631, x608, (0x0 as u32)); let mut x634: u32 = 0; let mut x635: fiat_p384_u1 = 0; let (x634, x635) = fiat_p384_addcarryx_u32(x633, x610, (0x0 as u32)); let mut x636: u32 = 0; let mut x637: fiat_p384_u1 = 0; let (x636, x637) = fiat_p384_addcarryx_u32(x635, x612, (0x0 as u32)); let mut x638: u32 = 0; let mut x639: fiat_p384_u1 = 0; let (x638, x639) = fiat_p384_addcarryx_u32(x637, x614, (0x0 as u32)); let mut x640: u32 = 0; let mut x641: fiat_p384_u1 = 0; let (x640, x641) = fiat_p384_addcarryx_u32(x639, x616, (0x0 as u32)); let mut x642: u32 = 0; let mut x643: fiat_p384_u1 = 0; let (x642, x643) = fiat_p384_addcarryx_u32(x641, x618, (0x0 as u32)); let mut x644: u32 = 0; let mut x645: u32 = 0; let (x644, x645) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x646: u32 = 0; let mut x647: u32 = 0; let (x646, x647) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x648: u32 = 0; let mut x649: u32 = 0; let (x648, x649) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x650: u32 = 0; let mut x651: u32 = 0; let (x650, x651) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x652: u32 = 0; let mut x653: u32 = 0; let (x652, x653) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x654: u32 = 0; let mut x655: u32 = 0; let (x654, x655) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x656: u32 = 0; let mut x657: u32 = 0; let (x656, x657) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x658: u32 = 0; let mut x659: u32 = 0; let (x658, x659) = fiat_p384_mulx_u32(x620, 0xfffffffe); let mut x660: u32 = 0; let mut x661: u32 = 0; let (x660, x661) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x662: u32 = 0; let mut x663: u32 = 0; let (x662, x663) = fiat_p384_mulx_u32(x620, 0xffffffff); let mut x664: u32 = 0; let mut x665: fiat_p384_u1 = 0; let (x664, x665) = fiat_p384_addcarryx_u32(0x0, x661, x658); let mut x666: u32 = 0; let mut x667: fiat_p384_u1 = 0; let (x666, x667) = fiat_p384_addcarryx_u32(x665, x659, x656); let mut x668: u32 = 0; let mut x669: fiat_p384_u1 = 0; let (x668, x669) = fiat_p384_addcarryx_u32(x667, x657, x654); let mut x670: u32 = 0; let mut x671: fiat_p384_u1 = 0; let (x670, x671) = fiat_p384_addcarryx_u32(x669, x655, x652); let mut x672: u32 = 0; let mut x673: fiat_p384_u1 = 0; let (x672, x673) = fiat_p384_addcarryx_u32(x671, x653, x650); let mut x674: u32 = 0; let mut x675: fiat_p384_u1 = 0; let (x674, x675) = fiat_p384_addcarryx_u32(x673, x651, x648); let mut x676: u32 = 0; let mut x677: fiat_p384_u1 = 0; let (x676, x677) = fiat_p384_addcarryx_u32(x675, x649, x646); let mut x678: u32 = 0; let mut x679: fiat_p384_u1 = 0; let (x678, x679) = fiat_p384_addcarryx_u32(x677, x647, x644); let mut x680: u32 = 0; let mut x681: fiat_p384_u1 = 0; let (x680, x681) = fiat_p384_addcarryx_u32(0x0, x620, x662); let mut x682: u32 = 0; let mut x683: fiat_p384_u1 = 0; let (x682, x683) = fiat_p384_addcarryx_u32(x681, x622, x663); let mut x684: u32 = 0; let mut x685: fiat_p384_u1 = 0; let (x684, x685) = fiat_p384_addcarryx_u32(x683, x624, (0x0 as u32)); let mut x686: u32 = 0; let mut x687: fiat_p384_u1 = 0; let (x686, x687) = fiat_p384_addcarryx_u32(x685, x626, x660); let mut x688: u32 = 0; let mut x689: fiat_p384_u1 = 0; let (x688, x689) = fiat_p384_addcarryx_u32(x687, x628, x664); let mut x690: u32 = 0; let mut x691: fiat_p384_u1 = 0; let (x690, x691) = fiat_p384_addcarryx_u32(x689, x630, x666); let mut x692: u32 = 0; let mut x693: fiat_p384_u1 = 0; let (x692, x693) = fiat_p384_addcarryx_u32(x691, x632, x668); let mut x694: u32 = 0; let mut x695: fiat_p384_u1 = 0; let (x694, x695) = fiat_p384_addcarryx_u32(x693, x634, x670); let mut x696: u32 = 0; let mut x697: fiat_p384_u1 = 0; let (x696, x697) = fiat_p384_addcarryx_u32(x695, x636, x672); let mut x698: u32 = 0; let mut x699: fiat_p384_u1 = 0; let (x698, x699) = fiat_p384_addcarryx_u32(x697, x638, x674); let mut x700: u32 = 0; let mut x701: fiat_p384_u1 = 0; let (x700, x701) = fiat_p384_addcarryx_u32(x699, x640, x676); let mut x702: u32 = 0; let mut x703: fiat_p384_u1 = 0; let (x702, x703) = fiat_p384_addcarryx_u32(x701, x642, x678); let mut x704: u32 = 0; let mut x705: fiat_p384_u1 = 0; let (x704, x705) = fiat_p384_addcarryx_u32( x703, ((x643 as u32) + (x619 as u32)), ((x679 as u32) + x645), ); let mut x706: u32 = 0; let mut x707: fiat_p384_u1 = 0; let (x706, x707) = fiat_p384_addcarryx_u32(0x0, x682, (arg1[9])); let mut x708: u32 = 0; let mut x709: fiat_p384_u1 = 0; let (x708, x709) = fiat_p384_addcarryx_u32(x707, x684, (0x0 as u32)); let mut x710: u32 = 0; let mut x711: fiat_p384_u1 = 0; let (x710, x711) = fiat_p384_addcarryx_u32(x709, x686, (0x0 as u32)); let mut x712: u32 = 0; let mut x713: fiat_p384_u1 = 0; let (x712, x713) = fiat_p384_addcarryx_u32(x711, x688, (0x0 as u32)); let mut x714: u32 = 0; let mut x715: fiat_p384_u1 = 0; let (x714, x715) = fiat_p384_addcarryx_u32(x713, x690, (0x0 as u32)); let mut x716: u32 = 0; let mut x717: fiat_p384_u1 = 0; let (x716, x717) = fiat_p384_addcarryx_u32(x715, x692, (0x0 as u32)); let mut x718: u32 = 0; let mut x719: fiat_p384_u1 = 0; let (x718, x719) = fiat_p384_addcarryx_u32(x717, x694, (0x0 as u32)); let mut x720: u32 = 0; let mut x721: fiat_p384_u1 = 0; let (x720, x721) = fiat_p384_addcarryx_u32(x719, x696, (0x0 as u32)); let mut x722: u32 = 0; let mut x723: fiat_p384_u1 = 0; let (x722, x723) = fiat_p384_addcarryx_u32(x721, x698, (0x0 as u32)); let mut x724: u32 = 0; let mut x725: fiat_p384_u1 = 0; let (x724, x725) = fiat_p384_addcarryx_u32(x723, x700, (0x0 as u32)); let mut x726: u32 = 0; let mut x727: fiat_p384_u1 = 0; let (x726, x727) = fiat_p384_addcarryx_u32(x725, x702, (0x0 as u32)); let mut x728: u32 = 0; let mut x729: fiat_p384_u1 = 0; let (x728, x729) = fiat_p384_addcarryx_u32(x727, x704, (0x0 as u32)); let mut x730: u32 = 0; let mut x731: u32 = 0; let (x730, x731) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x732: u32 = 0; let mut x733: u32 = 0; let (x732, x733) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x734: u32 = 0; let mut x735: u32 = 0; let (x734, x735) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x736: u32 = 0; let mut x737: u32 = 0; let (x736, x737) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x738: u32 = 0; let mut x739: u32 = 0; let (x738, x739) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x740: u32 = 0; let mut x741: u32 = 0; let (x740, x741) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x742: u32 = 0; let mut x743: u32 = 0; let (x742, x743) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x744: u32 = 0; let mut x745: u32 = 0; let (x744, x745) = fiat_p384_mulx_u32(x706, 0xfffffffe); let mut x746: u32 = 0; let mut x747: u32 = 0; let (x746, x747) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x748: u32 = 0; let mut x749: u32 = 0; let (x748, x749) = fiat_p384_mulx_u32(x706, 0xffffffff); let mut x750: u32 = 0; let mut x751: fiat_p384_u1 = 0; let (x750, x751) = fiat_p384_addcarryx_u32(0x0, x747, x744); let mut x752: u32 = 0; let mut x753: fiat_p384_u1 = 0; let (x752, x753) = fiat_p384_addcarryx_u32(x751, x745, x742); let mut x754: u32 = 0; let mut x755: fiat_p384_u1 = 0; let (x754, x755) = fiat_p384_addcarryx_u32(x753, x743, x740); let mut x756: u32 = 0; let mut x757: fiat_p384_u1 = 0; let (x756, x757) = fiat_p384_addcarryx_u32(x755, x741, x738); let mut x758: u32 = 0; let mut x759: fiat_p384_u1 = 0; let (x758, x759) = fiat_p384_addcarryx_u32(x757, x739, x736); let mut x760: u32 = 0; let mut x761: fiat_p384_u1 = 0; let (x760, x761) = fiat_p384_addcarryx_u32(x759, x737, x734); let mut x762: u32 = 0; let mut x763: fiat_p384_u1 = 0; let (x762, x763) = fiat_p384_addcarryx_u32(x761, x735, x732); let mut x764: u32 = 0; let mut x765: fiat_p384_u1 = 0; let (x764, x765) = fiat_p384_addcarryx_u32(x763, x733, x730); let mut x766: u32 = 0; let mut x767: fiat_p384_u1 = 0; let (x766, x767) = fiat_p384_addcarryx_u32(0x0, x706, x748); let mut x768: u32 = 0; let mut x769: fiat_p384_u1 = 0; let (x768, x769) = fiat_p384_addcarryx_u32(x767, x708, x749); let mut x770: u32 = 0; let mut x771: fiat_p384_u1 = 0; let (x770, x771) = fiat_p384_addcarryx_u32(x769, x710, (0x0 as u32)); let mut x772: u32 = 0; let mut x773: fiat_p384_u1 = 0; let (x772, x773) = fiat_p384_addcarryx_u32(x771, x712, x746); let mut x774: u32 = 0; let mut x775: fiat_p384_u1 = 0; let (x774, x775) = fiat_p384_addcarryx_u32(x773, x714, x750); let mut x776: u32 = 0; let mut x777: fiat_p384_u1 = 0; let (x776, x777) = fiat_p384_addcarryx_u32(x775, x716, x752); let mut x778: u32 = 0; let mut x779: fiat_p384_u1 = 0; let (x778, x779) = fiat_p384_addcarryx_u32(x777, x718, x754); let mut x780: u32 = 0; let mut x781: fiat_p384_u1 = 0; let (x780, x781) = fiat_p384_addcarryx_u32(x779, x720, x756); let mut x782: u32 = 0; let mut x783: fiat_p384_u1 = 0; let (x782, x783) = fiat_p384_addcarryx_u32(x781, x722, x758); let mut x784: u32 = 0; let mut x785: fiat_p384_u1 = 0; let (x784, x785) = fiat_p384_addcarryx_u32(x783, x724, x760); let mut x786: u32 = 0; let mut x787: fiat_p384_u1 = 0; let (x786, x787) = fiat_p384_addcarryx_u32(x785, x726, x762); let mut x788: u32 = 0; let mut x789: fiat_p384_u1 = 0; let (x788, x789) = fiat_p384_addcarryx_u32(x787, x728, x764); let mut x790: u32 = 0; let mut x791: fiat_p384_u1 = 0; let (x790, x791) = fiat_p384_addcarryx_u32( x789, ((x729 as u32) + (x705 as u32)), ((x765 as u32) + x731), ); let mut x792: u32 = 0; let mut x793: fiat_p384_u1 = 0; let (x792, x793) = fiat_p384_addcarryx_u32(0x0, x768, (arg1[10])); let mut x794: u32 = 0; let mut x795: fiat_p384_u1 = 0; let (x794, x795) = fiat_p384_addcarryx_u32(x793, x770, (0x0 as u32)); let mut x796: u32 = 0; let mut x797: fiat_p384_u1 = 0; let (x796, x797) = fiat_p384_addcarryx_u32(x795, x772, (0x0 as u32)); let mut x798: u32 = 0; let mut x799: fiat_p384_u1 = 0; let (x798, x799) = fiat_p384_addcarryx_u32(x797, x774, (0x0 as u32)); let mut x800: u32 = 0; let mut x801: fiat_p384_u1 = 0; let (x800, x801) = fiat_p384_addcarryx_u32(x799, x776, (0x0 as u32)); let mut x802: u32 = 0; let mut x803: fiat_p384_u1 = 0; let (x802, x803) = fiat_p384_addcarryx_u32(x801, x778, (0x0 as u32)); let mut x804: u32 = 0; let mut x805: fiat_p384_u1 = 0; let (x804, x805) = fiat_p384_addcarryx_u32(x803, x780, (0x0 as u32)); let mut x806: u32 = 0; let mut x807: fiat_p384_u1 = 0; let (x806, x807) = fiat_p384_addcarryx_u32(x805, x782, (0x0 as u32)); let mut x808: u32 = 0; let mut x809: fiat_p384_u1 = 0; let (x808, x809) = fiat_p384_addcarryx_u32(x807, x784, (0x0 as u32)); let mut x810: u32 = 0; let mut x811: fiat_p384_u1 = 0; let (x810, x811) = fiat_p384_addcarryx_u32(x809, x786, (0x0 as u32)); let mut x812: u32 = 0; let mut x813: fiat_p384_u1 = 0; let (x812, x813) = fiat_p384_addcarryx_u32(x811, x788, (0x0 as u32)); let mut x814: u32 = 0; let mut x815: fiat_p384_u1 = 0; let (x814, x815) = fiat_p384_addcarryx_u32(x813, x790, (0x0 as u32)); let mut x816: u32 = 0; let mut x817: u32 = 0; let (x816, x817) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x818: u32 = 0; let mut x819: u32 = 0; let (x818, x819) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x820: u32 = 0; let mut x821: u32 = 0; let (x820, x821) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x822: u32 = 0; let mut x823: u32 = 0; let (x822, x823) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x824: u32 = 0; let mut x825: u32 = 0; let (x824, x825) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x826: u32 = 0; let mut x827: u32 = 0; let (x826, x827) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x828: u32 = 0; let mut x829: u32 = 0; let (x828, x829) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x830: u32 = 0; let mut x831: u32 = 0; let (x830, x831) = fiat_p384_mulx_u32(x792, 0xfffffffe); let mut x832: u32 = 0; let mut x833: u32 = 0; let (x832, x833) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x834: u32 = 0; let mut x835: u32 = 0; let (x834, x835) = fiat_p384_mulx_u32(x792, 0xffffffff); let mut x836: u32 = 0; let mut x837: fiat_p384_u1 = 0; let (x836, x837) = fiat_p384_addcarryx_u32(0x0, x833, x830); let mut x838: u32 = 0; let mut x839: fiat_p384_u1 = 0; let (x838, x839) = fiat_p384_addcarryx_u32(x837, x831, x828); let mut x840: u32 = 0; let mut x841: fiat_p384_u1 = 0; let (x840, x841) = fiat_p384_addcarryx_u32(x839, x829, x826); let mut x842: u32 = 0; let mut x843: fiat_p384_u1 = 0; let (x842, x843) = fiat_p384_addcarryx_u32(x841, x827, x824); let mut x844: u32 = 0; let mut x845: fiat_p384_u1 = 0; let (x844, x845) = fiat_p384_addcarryx_u32(x843, x825, x822); let mut x846: u32 = 0; let mut x847: fiat_p384_u1 = 0; let (x846, x847) = fiat_p384_addcarryx_u32(x845, x823, x820); let mut x848: u32 = 0; let mut x849: fiat_p384_u1 = 0; let (x848, x849) = fiat_p384_addcarryx_u32(x847, x821, x818); let mut x850: u32 = 0; let mut x851: fiat_p384_u1 = 0; let (x850, x851) = fiat_p384_addcarryx_u32(x849, x819, x816); let mut x852: u32 = 0; let mut x853: fiat_p384_u1 = 0; let (x852, x853) = fiat_p384_addcarryx_u32(0x0, x792, x834); let mut x854: u32 = 0; let mut x855: fiat_p384_u1 = 0; let (x854, x855) = fiat_p384_addcarryx_u32(x853, x794, x835); let mut x856: u32 = 0; let mut x857: fiat_p384_u1 = 0; let (x856, x857) = fiat_p384_addcarryx_u32(x855, x796, (0x0 as u32)); let mut x858: u32 = 0; let mut x859: fiat_p384_u1 = 0; let (x858, x859) = fiat_p384_addcarryx_u32(x857, x798, x832); let mut x860: u32 = 0; let mut x861: fiat_p384_u1 = 0; let (x860, x861) = fiat_p384_addcarryx_u32(x859, x800, x836); let mut x862: u32 = 0; let mut x863: fiat_p384_u1 = 0; let (x862, x863) = fiat_p384_addcarryx_u32(x861, x802, x838); let mut x864: u32 = 0; let mut x865: fiat_p384_u1 = 0; let (x864, x865) = fiat_p384_addcarryx_u32(x863, x804, x840); let mut x866: u32 = 0; let mut x867: fiat_p384_u1 = 0; let (x866, x867) = fiat_p384_addcarryx_u32(x865, x806, x842); let mut x868: u32 = 0; let mut x869: fiat_p384_u1 = 0; let (x868, x869) = fiat_p384_addcarryx_u32(x867, x808, x844); let mut x870: u32 = 0; let mut x871: fiat_p384_u1 = 0; let (x870, x871) = fiat_p384_addcarryx_u32(x869, x810, x846); let mut x872: u32 = 0; let mut x873: fiat_p384_u1 = 0; let (x872, x873) = fiat_p384_addcarryx_u32(x871, x812, x848); let mut x874: u32 = 0; let mut x875: fiat_p384_u1 = 0; let (x874, x875) = fiat_p384_addcarryx_u32(x873, x814, x850); let mut x876: u32 = 0; let mut x877: fiat_p384_u1 = 0; let (x876, x877) = fiat_p384_addcarryx_u32( x875, ((x815 as u32) + (x791 as u32)), ((x851 as u32) + x817), ); let mut x878: u32 = 0; let mut x879: fiat_p384_u1 = 0; let (x878, x879) = fiat_p384_addcarryx_u32(0x0, x854, (arg1[11])); let mut x880: u32 = 0; let mut x881: fiat_p384_u1 = 0; let (x880, x881) = fiat_p384_addcarryx_u32(x879, x856, (0x0 as u32)); let mut x882: u32 = 0; let mut x883: fiat_p384_u1 = 0; let (x882, x883) = fiat_p384_addcarryx_u32(x881, x858, (0x0 as u32)); let mut x884: u32 = 0; let mut x885: fiat_p384_u1 = 0; let (x884, x885) = fiat_p384_addcarryx_u32(x883, x860, (0x0 as u32)); let mut x886: u32 = 0; let mut x887: fiat_p384_u1 = 0; let (x886, x887) = fiat_p384_addcarryx_u32(x885, x862, (0x0 as u32)); let mut x888: u32 = 0; let mut x889: fiat_p384_u1 = 0; let (x888, x889) = fiat_p384_addcarryx_u32(x887, x864, (0x0 as u32)); let mut x890: u32 = 0; let mut x891: fiat_p384_u1 = 0; let (x890, x891) = fiat_p384_addcarryx_u32(x889, x866, (0x0 as u32)); let mut x892: u32 = 0; let mut x893: fiat_p384_u1 = 0; let (x892, x893) = fiat_p384_addcarryx_u32(x891, x868, (0x0 as u32)); let mut x894: u32 = 0; let mut x895: fiat_p384_u1 = 0; let (x894, x895) = fiat_p384_addcarryx_u32(x893, x870, (0x0 as u32)); let mut x896: u32 = 0; let mut x897: fiat_p384_u1 = 0; let (x896, x897) = fiat_p384_addcarryx_u32(x895, x872, (0x0 as u32)); let mut x898: u32 = 0; let mut x899: fiat_p384_u1 = 0; let (x898, x899) = fiat_p384_addcarryx_u32(x897, x874, (0x0 as u32)); let mut x900: u32 = 0; let mut x901: fiat_p384_u1 = 0; let (x900, x901) = fiat_p384_addcarryx_u32(x899, x876, (0x0 as u32)); let mut x902: u32 = 0; let mut x903: u32 = 0; let (x902, x903) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x904: u32 = 0; let mut x905: u32 = 0; let (x904, x905) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x906: u32 = 0; let mut x907: u32 = 0; let (x906, x907) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x908: u32 = 0; let mut x909: u32 = 0; let (x908, x909) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x910: u32 = 0; let mut x911: u32 = 0; let (x910, x911) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x912: u32 = 0; let mut x913: u32 = 0; let (x912, x913) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x914: u32 = 0; let mut x915: u32 = 0; let (x914, x915) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x916: u32 = 0; let mut x917: u32 = 0; let (x916, x917) = fiat_p384_mulx_u32(x878, 0xfffffffe); let mut x918: u32 = 0; let mut x919: u32 = 0; let (x918, x919) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x920: u32 = 0; let mut x921: u32 = 0; let (x920, x921) = fiat_p384_mulx_u32(x878, 0xffffffff); let mut x922: u32 = 0; let mut x923: fiat_p384_u1 = 0; let (x922, x923) = fiat_p384_addcarryx_u32(0x0, x919, x916); let mut x924: u32 = 0; let mut x925: fiat_p384_u1 = 0; let (x924, x925) = fiat_p384_addcarryx_u32(x923, x917, x914); let mut x926: u32 = 0; let mut x927: fiat_p384_u1 = 0; let (x926, x927) = fiat_p384_addcarryx_u32(x925, x915, x912); let mut x928: u32 = 0; let mut x929: fiat_p384_u1 = 0; let (x928, x929) = fiat_p384_addcarryx_u32(x927, x913, x910); let mut x930: u32 = 0; let mut x931: fiat_p384_u1 = 0; let (x930, x931) = fiat_p384_addcarryx_u32(x929, x911, x908); let mut x932: u32 = 0; let mut x933: fiat_p384_u1 = 0; let (x932, x933) = fiat_p384_addcarryx_u32(x931, x909, x906); let mut x934: u32 = 0; let mut x935: fiat_p384_u1 = 0; let (x934, x935) = fiat_p384_addcarryx_u32(x933, x907, x904); let mut x936: u32 = 0; let mut x937: fiat_p384_u1 = 0; let (x936, x937) = fiat_p384_addcarryx_u32(x935, x905, x902); let mut x938: u32 = 0; let mut x939: fiat_p384_u1 = 0; let (x938, x939) = fiat_p384_addcarryx_u32(0x0, x878, x920); let mut x940: u32 = 0; let mut x941: fiat_p384_u1 = 0; let (x940, x941) = fiat_p384_addcarryx_u32(x939, x880, x921); let mut x942: u32 = 0; let mut x943: fiat_p384_u1 = 0; let (x942, x943) = fiat_p384_addcarryx_u32(x941, x882, (0x0 as u32)); let mut x944: u32 = 0; let mut x945: fiat_p384_u1 = 0; let (x944, x945) = fiat_p384_addcarryx_u32(x943, x884, x918); let mut x946: u32 = 0; let mut x947: fiat_p384_u1 = 0; let (x946, x947) = fiat_p384_addcarryx_u32(x945, x886, x922); let mut x948: u32 = 0; let mut x949: fiat_p384_u1 = 0; let (x948, x949) = fiat_p384_addcarryx_u32(x947, x888, x924); let mut x950: u32 = 0; let mut x951: fiat_p384_u1 = 0; let (x950, x951) = fiat_p384_addcarryx_u32(x949, x890, x926); let mut x952: u32 = 0; let mut x953: fiat_p384_u1 = 0; let (x952, x953) = fiat_p384_addcarryx_u32(x951, x892, x928); let mut x954: u32 = 0; let mut x955: fiat_p384_u1 = 0; let (x954, x955) = fiat_p384_addcarryx_u32(x953, x894, x930); let mut x956: u32 = 0; let mut x957: fiat_p384_u1 = 0; let (x956, x957) = fiat_p384_addcarryx_u32(x955, x896, x932); let mut x958: u32 = 0; let mut x959: fiat_p384_u1 = 0; let (x958, x959) = fiat_p384_addcarryx_u32(x957, x898, x934); let mut x960: u32 = 0; let mut x961: fiat_p384_u1 = 0; let (x960, x961) = fiat_p384_addcarryx_u32(x959, x900, x936); let mut x962: u32 = 0; let mut x963: fiat_p384_u1 = 0; let (x962, x963) = fiat_p384_addcarryx_u32( x961, ((x901 as u32) + (x877 as u32)), ((x937 as u32) + x903), ); let mut x964: u32 = 0; let mut x965: fiat_p384_u1 = 0; let (x964, x965) = fiat_p384_subborrowx_u32(0x0, x940, 0xffffffff); let mut x966: u32 = 0; let mut x967: fiat_p384_u1 = 0; let (x966, x967) = fiat_p384_subborrowx_u32(x965, x942, (0x0 as u32)); let mut x968: u32 = 0; let mut x969: fiat_p384_u1 = 0; let (x968, x969) = fiat_p384_subborrowx_u32(x967, x944, (0x0 as u32)); let mut x970: u32 = 0; let mut x971: fiat_p384_u1 = 0; let (x970, x971) = fiat_p384_subborrowx_u32(x969, x946, 0xffffffff); let mut x972: u32 = 0; let mut x973: fiat_p384_u1 = 0; let (x972, x973) = fiat_p384_subborrowx_u32(x971, x948, 0xfffffffe); let mut x974: u32 = 0; let mut x975: fiat_p384_u1 = 0; let (x974, x975) = fiat_p384_subborrowx_u32(x973, x950, 0xffffffff); let mut x976: u32 = 0; let mut x977: fiat_p384_u1 = 0; let (x976, x977) = fiat_p384_subborrowx_u32(x975, x952, 0xffffffff); let mut x978: u32 = 0; let mut x979: fiat_p384_u1 = 0; let (x978, x979) = fiat_p384_subborrowx_u32(x977, x954, 0xffffffff); let mut x980: u32 = 0; let mut x981: fiat_p384_u1 = 0; let (x980, x981) = fiat_p384_subborrowx_u32(x979, x956, 0xffffffff); let mut x982: u32 = 0; let mut x983: fiat_p384_u1 = 0; let (x982, x983) = fiat_p384_subborrowx_u32(x981, x958, 0xffffffff); let mut x984: u32 = 0; let mut x985: fiat_p384_u1 = 0; let (x984, x985) = fiat_p384_subborrowx_u32(x983, x960, 0xffffffff); let mut x986: u32 = 0; let mut x987: fiat_p384_u1 = 0; let (x986, x987) = fiat_p384_subborrowx_u32(x985, x962, 0xffffffff); let mut x988: u32 = 0; let mut x989: fiat_p384_u1 = 0; let (x988, x989) = fiat_p384_subborrowx_u32(x987, (x963 as u32), (0x0 as u32)); let mut x990: u32 = 0; let (x990) = fiat_p384_cmovznz_u32(x989, x964, x940); let mut x991: u32 = 0; let (x991) = fiat_p384_cmovznz_u32(x989, x966, x942); let mut x992: u32 = 0; let (x992) = fiat_p384_cmovznz_u32(x989, x968, x944); let mut x993: u32 = 0; let (x993) = fiat_p384_cmovznz_u32(x989, x970, x946); let mut x994: u32 = 0; let (x994) = fiat_p384_cmovznz_u32(x989, x972, x948); let mut x995: u32 = 0; let (x995) = fiat_p384_cmovznz_u32(x989, x974, x950); let mut x996: u32 = 0; let (x996) = fiat_p384_cmovznz_u32(x989, x976, x952); let mut x997: u32 = 0; let (x997) = fiat_p384_cmovznz_u32(x989, x978, x954); let mut x998: u32 = 0; let (x998) = fiat_p384_cmovznz_u32(x989, x980, x956); let mut x999: u32 = 0; let (x999) = fiat_p384_cmovznz_u32(x989, x982, x958); let mut x1000: u32 = 0; let (x1000) = fiat_p384_cmovznz_u32(x989, x984, x960); let mut x1001: u32 = 0; let (x1001) = fiat_p384_cmovznz_u32(x989, x986, x962); out1[0] = x990; out1[1] = x991; out1[2] = x992; out1[3] = x993; out1[4] = x994; out1[5] = x995; out1[6] = x996; out1[7] = x997; out1[8] = x998; out1[9] = x999; out1[10] = x1000; out1[11] = x1001; out1 } #[doc = " The function fiat_p384_to_montgomery translates a field element into the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_to_montgomery( arg1: &fiat_p384_non_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_mulx_u32(x12, 0x2); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_mulx_u32(x12, 0xfffffffe); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_mulx_u32(x12, 0x2); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_mulx_u32(x12, 0xfffffffe); let mut x21: u32 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_addcarryx_u32(0x0, ((x14 as fiat_p384_u1) as u32), x12); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x37: u32 = 0; let mut x38: u32 = 0; let (x37, x38) = fiat_p384_mulx_u32(x12, 0xfffffffe); let mut x39: u32 = 0; let mut x40: u32 = 0; let (x39, x40) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x41: u32 = 0; let mut x42: u32 = 0; let (x41, x42) = fiat_p384_mulx_u32(x12, 0xffffffff); let mut x43: u32 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_addcarryx_u32(0x0, x40, x37); let mut x45: u32 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_addcarryx_u32(x44, x38, x35); let mut x47: u32 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_addcarryx_u32(x46, x36, x33); let mut x49: u32 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_addcarryx_u32(x48, x34, x31); let mut x51: u32 = 0; let mut x52: fiat_p384_u1 = 0; let (x51, x52) = fiat_p384_addcarryx_u32(x50, x32, x29); let mut x53: u32 = 0; let mut x54: fiat_p384_u1 = 0; let (x53, x54) = fiat_p384_addcarryx_u32(x52, x30, x27); let mut x55: u32 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u32(x54, x28, x25); let mut x57: u32 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u32(x56, x26, x23); let mut x59: u32 = 0; let mut x60: fiat_p384_u1 = 0; let (x59, x60) = fiat_p384_addcarryx_u32(0x0, x12, x41); let mut x61: u32 = 0; let mut x62: fiat_p384_u1 = 0; let (x61, x62) = fiat_p384_addcarryx_u32(x60, x19, x42); let mut x63: u32 = 0; let mut x64: fiat_p384_u1 = 0; let (x63, x64) = fiat_p384_addcarryx_u32(0x0, x17, x39); let mut x65: u32 = 0; let mut x66: fiat_p384_u1 = 0; let (x65, x66) = fiat_p384_addcarryx_u32(x64, ((x18 as fiat_p384_u1) as u32), x43); let mut x67: u32 = 0; let mut x68: fiat_p384_u1 = 0; let (x67, x68) = fiat_p384_addcarryx_u32(x66, x15, x45); let mut x69: u32 = 0; let mut x70: fiat_p384_u1 = 0; let (x69, x70) = fiat_p384_addcarryx_u32(x68, x16, x47); let mut x71: u32 = 0; let mut x72: fiat_p384_u1 = 0; let (x71, x72) = fiat_p384_addcarryx_u32(x70, x13, x49); let mut x73: u32 = 0; let mut x74: fiat_p384_u1 = 0; let (x73, x74) = fiat_p384_addcarryx_u32(x72, x21, x51); let mut x75: u32 = 0; let mut x76: fiat_p384_u1 = 0; let (x75, x76) = fiat_p384_addcarryx_u32(x74, (x22 as u32), x53); let mut x77: u32 = 0; let mut x78: fiat_p384_u1 = 0; let (x77, x78) = fiat_p384_addcarryx_u32(x76, (0x0 as u32), x55); let mut x79: u32 = 0; let mut x80: fiat_p384_u1 = 0; let (x79, x80) = fiat_p384_addcarryx_u32(x78, (0x0 as u32), x57); let mut x81: u32 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_addcarryx_u32(x80, (0x0 as u32), ((x58 as u32) + x24)); let mut x83: u32 = 0; let mut x84: u32 = 0; let (x83, x84) = fiat_p384_mulx_u32(x1, 0x2); let mut x85: u32 = 0; let mut x86: u32 = 0; let (x85, x86) = fiat_p384_mulx_u32(x1, 0xfffffffe); let mut x87: u32 = 0; let mut x88: u32 = 0; let (x87, x88) = fiat_p384_mulx_u32(x1, 0x2); let mut x89: u32 = 0; let mut x90: u32 = 0; let (x89, x90) = fiat_p384_mulx_u32(x1, 0xfffffffe); let mut x91: u32 = 0; let mut x92: fiat_p384_u1 = 0; let (x91, x92) = fiat_p384_addcarryx_u32(0x0, ((x84 as fiat_p384_u1) as u32), x1); let mut x93: u32 = 0; let mut x94: fiat_p384_u1 = 0; let (x93, x94) = fiat_p384_addcarryx_u32(0x0, x61, x1); let mut x95: u32 = 0; let mut x96: fiat_p384_u1 = 0; let (x95, x96) = fiat_p384_addcarryx_u32(x94, ((x62 as u32) + x20), x89); let mut x97: u32 = 0; let mut x98: fiat_p384_u1 = 0; let (x97, x98) = fiat_p384_addcarryx_u32(x96, x63, x90); let mut x99: u32 = 0; let mut x100: fiat_p384_u1 = 0; let (x99, x100) = fiat_p384_addcarryx_u32(x98, x65, x87); let mut x101: u32 = 0; let mut x102: fiat_p384_u1 = 0; let (x101, x102) = fiat_p384_addcarryx_u32(x100, x67, ((x88 as fiat_p384_u1) as u32)); let mut x103: u32 = 0; let mut x104: fiat_p384_u1 = 0; let (x103, x104) = fiat_p384_addcarryx_u32(x102, x69, x85); let mut x105: u32 = 0; let mut x106: fiat_p384_u1 = 0; let (x105, x106) = fiat_p384_addcarryx_u32(x104, x71, x86); let mut x107: u32 = 0; let mut x108: fiat_p384_u1 = 0; let (x107, x108) = fiat_p384_addcarryx_u32(x106, x73, x83); let mut x109: u32 = 0; let mut x110: fiat_p384_u1 = 0; let (x109, x110) = fiat_p384_addcarryx_u32(x108, x75, x91); let mut x111: u32 = 0; let mut x112: fiat_p384_u1 = 0; let (x111, x112) = fiat_p384_addcarryx_u32(x110, x77, (x92 as u32)); let mut x113: u32 = 0; let mut x114: fiat_p384_u1 = 0; let (x113, x114) = fiat_p384_addcarryx_u32(x112, x79, (0x0 as u32)); let mut x115: u32 = 0; let mut x116: fiat_p384_u1 = 0; let (x115, x116) = fiat_p384_addcarryx_u32(x114, x81, (0x0 as u32)); let mut x117: u32 = 0; let mut x118: u32 = 0; let (x117, x118) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x119: u32 = 0; let mut x120: u32 = 0; let (x119, x120) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x121: u32 = 0; let mut x122: u32 = 0; let (x121, x122) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x123: u32 = 0; let mut x124: u32 = 0; let (x123, x124) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x125: u32 = 0; let mut x126: u32 = 0; let (x125, x126) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x127: u32 = 0; let mut x128: u32 = 0; let (x127, x128) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x129: u32 = 0; let mut x130: u32 = 0; let (x129, x130) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x131: u32 = 0; let mut x132: u32 = 0; let (x131, x132) = fiat_p384_mulx_u32(x93, 0xfffffffe); let mut x133: u32 = 0; let mut x134: u32 = 0; let (x133, x134) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_mulx_u32(x93, 0xffffffff); let mut x137: u32 = 0; let mut x138: fiat_p384_u1 = 0; let (x137, x138) = fiat_p384_addcarryx_u32(0x0, x134, x131); let mut x139: u32 = 0; let mut x140: fiat_p384_u1 = 0; let (x139, x140) = fiat_p384_addcarryx_u32(x138, x132, x129); let mut x141: u32 = 0; let mut x142: fiat_p384_u1 = 0; let (x141, x142) = fiat_p384_addcarryx_u32(x140, x130, x127); let mut x143: u32 = 0; let mut x144: fiat_p384_u1 = 0; let (x143, x144) = fiat_p384_addcarryx_u32(x142, x128, x125); let mut x145: u32 = 0; let mut x146: fiat_p384_u1 = 0; let (x145, x146) = fiat_p384_addcarryx_u32(x144, x126, x123); let mut x147: u32 = 0; let mut x148: fiat_p384_u1 = 0; let (x147, x148) = fiat_p384_addcarryx_u32(x146, x124, x121); let mut x149: u32 = 0; let mut x150: fiat_p384_u1 = 0; let (x149, x150) = fiat_p384_addcarryx_u32(x148, x122, x119); let mut x151: u32 = 0; let mut x152: fiat_p384_u1 = 0; let (x151, x152) = fiat_p384_addcarryx_u32(x150, x120, x117); let mut x153: u32 = 0; let mut x154: fiat_p384_u1 = 0; let (x153, x154) = fiat_p384_addcarryx_u32(0x0, x93, x135); let mut x155: u32 = 0; let mut x156: fiat_p384_u1 = 0; let (x155, x156) = fiat_p384_addcarryx_u32(x154, x95, x136); let mut x157: u32 = 0; let mut x158: fiat_p384_u1 = 0; let (x157, x158) = fiat_p384_addcarryx_u32(x156, x97, (0x0 as u32)); let mut x159: u32 = 0; let mut x160: fiat_p384_u1 = 0; let (x159, x160) = fiat_p384_addcarryx_u32(x158, x99, x133); let mut x161: u32 = 0; let mut x162: fiat_p384_u1 = 0; let (x161, x162) = fiat_p384_addcarryx_u32(x160, x101, x137); let mut x163: u32 = 0; let mut x164: fiat_p384_u1 = 0; let (x163, x164) = fiat_p384_addcarryx_u32(x162, x103, x139); let mut x165: u32 = 0; let mut x166: fiat_p384_u1 = 0; let (x165, x166) = fiat_p384_addcarryx_u32(x164, x105, x141); let mut x167: u32 = 0; let mut x168: fiat_p384_u1 = 0; let (x167, x168) = fiat_p384_addcarryx_u32(x166, x107, x143); let mut x169: u32 = 0; let mut x170: fiat_p384_u1 = 0; let (x169, x170) = fiat_p384_addcarryx_u32(x168, x109, x145); let mut x171: u32 = 0; let mut x172: fiat_p384_u1 = 0; let (x171, x172) = fiat_p384_addcarryx_u32(x170, x111, x147); let mut x173: u32 = 0; let mut x174: fiat_p384_u1 = 0; let (x173, x174) = fiat_p384_addcarryx_u32(x172, x113, x149); let mut x175: u32 = 0; let mut x176: fiat_p384_u1 = 0; let (x175, x176) = fiat_p384_addcarryx_u32(x174, x115, x151); let mut x177: u32 = 0; let mut x178: fiat_p384_u1 = 0; let (x177, x178) = fiat_p384_addcarryx_u32(x176, ((x116 as u32) + (x82 as u32)), ((x152 as u32) + x118)); let mut x179: u32 = 0; let mut x180: u32 = 0; let (x179, x180) = fiat_p384_mulx_u32(x2, 0x2); let mut x181: u32 = 0; let mut x182: u32 = 0; let (x181, x182) = fiat_p384_mulx_u32(x2, 0xfffffffe); let mut x183: u32 = 0; let mut x184: u32 = 0; let (x183, x184) = fiat_p384_mulx_u32(x2, 0x2); let mut x185: u32 = 0; let mut x186: u32 = 0; let (x185, x186) = fiat_p384_mulx_u32(x2, 0xfffffffe); let mut x187: u32 = 0; let mut x188: fiat_p384_u1 = 0; let (x187, x188) = fiat_p384_addcarryx_u32(0x0, ((x180 as fiat_p384_u1) as u32), x2); let mut x189: u32 = 0; let mut x190: fiat_p384_u1 = 0; let (x189, x190) = fiat_p384_addcarryx_u32(0x0, x155, x2); let mut x191: u32 = 0; let mut x192: fiat_p384_u1 = 0; let (x191, x192) = fiat_p384_addcarryx_u32(x190, x157, x185); let mut x193: u32 = 0; let mut x194: fiat_p384_u1 = 0; let (x193, x194) = fiat_p384_addcarryx_u32(x192, x159, x186); let mut x195: u32 = 0; let mut x196: fiat_p384_u1 = 0; let (x195, x196) = fiat_p384_addcarryx_u32(x194, x161, x183); let mut x197: u32 = 0; let mut x198: fiat_p384_u1 = 0; let (x197, x198) = fiat_p384_addcarryx_u32(x196, x163, ((x184 as fiat_p384_u1) as u32)); let mut x199: u32 = 0; let mut x200: fiat_p384_u1 = 0; let (x199, x200) = fiat_p384_addcarryx_u32(x198, x165, x181); let mut x201: u32 = 0; let mut x202: fiat_p384_u1 = 0; let (x201, x202) = fiat_p384_addcarryx_u32(x200, x167, x182); let mut x203: u32 = 0; let mut x204: fiat_p384_u1 = 0; let (x203, x204) = fiat_p384_addcarryx_u32(x202, x169, x179); let mut x205: u32 = 0; let mut x206: fiat_p384_u1 = 0; let (x205, x206) = fiat_p384_addcarryx_u32(x204, x171, x187); let mut x207: u32 = 0; let mut x208: fiat_p384_u1 = 0; let (x207, x208) = fiat_p384_addcarryx_u32(x206, x173, (x188 as u32)); let mut x209: u32 = 0; let mut x210: fiat_p384_u1 = 0; let (x209, x210) = fiat_p384_addcarryx_u32(x208, x175, (0x0 as u32)); let mut x211: u32 = 0; let mut x212: fiat_p384_u1 = 0; let (x211, x212) = fiat_p384_addcarryx_u32(x210, x177, (0x0 as u32)); let mut x213: u32 = 0; let mut x214: u32 = 0; let (x213, x214) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x215: u32 = 0; let mut x216: u32 = 0; let (x215, x216) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x217: u32 = 0; let mut x218: u32 = 0; let (x217, x218) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x219: u32 = 0; let mut x220: u32 = 0; let (x219, x220) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x221: u32 = 0; let mut x222: u32 = 0; let (x221, x222) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x223: u32 = 0; let mut x224: u32 = 0; let (x223, x224) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x225: u32 = 0; let mut x226: u32 = 0; let (x225, x226) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x227: u32 = 0; let mut x228: u32 = 0; let (x227, x228) = fiat_p384_mulx_u32(x189, 0xfffffffe); let mut x229: u32 = 0; let mut x230: u32 = 0; let (x229, x230) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x231: u32 = 0; let mut x232: u32 = 0; let (x231, x232) = fiat_p384_mulx_u32(x189, 0xffffffff); let mut x233: u32 = 0; let mut x234: fiat_p384_u1 = 0; let (x233, x234) = fiat_p384_addcarryx_u32(0x0, x230, x227); let mut x235: u32 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u32(x234, x228, x225); let mut x237: u32 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u32(x236, x226, x223); let mut x239: u32 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u32(x238, x224, x221); let mut x241: u32 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u32(x240, x222, x219); let mut x243: u32 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u32(x242, x220, x217); let mut x245: u32 = 0; let mut x246: fiat_p384_u1 = 0; let (x245, x246) = fiat_p384_addcarryx_u32(x244, x218, x215); let mut x247: u32 = 0; let mut x248: fiat_p384_u1 = 0; let (x247, x248) = fiat_p384_addcarryx_u32(x246, x216, x213); let mut x249: u32 = 0; let mut x250: fiat_p384_u1 = 0; let (x249, x250) = fiat_p384_addcarryx_u32(0x0, x189, x231); let mut x251: u32 = 0; let mut x252: fiat_p384_u1 = 0; let (x251, x252) = fiat_p384_addcarryx_u32(x250, x191, x232); let mut x253: u32 = 0; let mut x254: fiat_p384_u1 = 0; let (x253, x254) = fiat_p384_addcarryx_u32(x252, x193, (0x0 as u32)); let mut x255: u32 = 0; let mut x256: fiat_p384_u1 = 0; let (x255, x256) = fiat_p384_addcarryx_u32(x254, x195, x229); let mut x257: u32 = 0; let mut x258: fiat_p384_u1 = 0; let (x257, x258) = fiat_p384_addcarryx_u32(x256, x197, x233); let mut x259: u32 = 0; let mut x260: fiat_p384_u1 = 0; let (x259, x260) = fiat_p384_addcarryx_u32(x258, x199, x235); let mut x261: u32 = 0; let mut x262: fiat_p384_u1 = 0; let (x261, x262) = fiat_p384_addcarryx_u32(x260, x201, x237); let mut x263: u32 = 0; let mut x264: fiat_p384_u1 = 0; let (x263, x264) = fiat_p384_addcarryx_u32(x262, x203, x239); let mut x265: u32 = 0; let mut x266: fiat_p384_u1 = 0; let (x265, x266) = fiat_p384_addcarryx_u32(x264, x205, x241); let mut x267: u32 = 0; let mut x268: fiat_p384_u1 = 0; let (x267, x268) = fiat_p384_addcarryx_u32(x266, x207, x243); let mut x269: u32 = 0; let mut x270: fiat_p384_u1 = 0; let (x269, x270) = fiat_p384_addcarryx_u32(x268, x209, x245); let mut x271: u32 = 0; let mut x272: fiat_p384_u1 = 0; let (x271, x272) = fiat_p384_addcarryx_u32(x270, x211, x247); let mut x273: u32 = 0; let mut x274: fiat_p384_u1 = 0; let (x273, x274) = fiat_p384_addcarryx_u32( x272, ((x212 as u32) + (x178 as u32)), ((x248 as u32) + x214), ); let mut x275: u32 = 0; let mut x276: u32 = 0; let (x275, x276) = fiat_p384_mulx_u32(x3, 0x2); let mut x277: u32 = 0; let mut x278: u32 = 0; let (x277, x278) = fiat_p384_mulx_u32(x3, 0xfffffffe); let mut x279: u32 = 0; let mut x280: u32 = 0; let (x279, x280) = fiat_p384_mulx_u32(x3, 0x2); let mut x281: u32 = 0; let mut x282: u32 = 0; let (x281, x282) = fiat_p384_mulx_u32(x3, 0xfffffffe); let mut x283: u32 = 0; let mut x284: fiat_p384_u1 = 0; let (x283, x284) = fiat_p384_addcarryx_u32(0x0, ((x276 as fiat_p384_u1) as u32), x3); let mut x285: u32 = 0; let mut x286: fiat_p384_u1 = 0; let (x285, x286) = fiat_p384_addcarryx_u32(0x0, x251, x3); let mut x287: u32 = 0; let mut x288: fiat_p384_u1 = 0; let (x287, x288) = fiat_p384_addcarryx_u32(x286, x253, x281); let mut x289: u32 = 0; let mut x290: fiat_p384_u1 = 0; let (x289, x290) = fiat_p384_addcarryx_u32(x288, x255, x282); let mut x291: u32 = 0; let mut x292: fiat_p384_u1 = 0; let (x291, x292) = fiat_p384_addcarryx_u32(x290, x257, x279); let mut x293: u32 = 0; let mut x294: fiat_p384_u1 = 0; let (x293, x294) = fiat_p384_addcarryx_u32(x292, x259, ((x280 as fiat_p384_u1) as u32)); let mut x295: u32 = 0; let mut x296: fiat_p384_u1 = 0; let (x295, x296) = fiat_p384_addcarryx_u32(x294, x261, x277); let mut x297: u32 = 0; let mut x298: fiat_p384_u1 = 0; let (x297, x298) = fiat_p384_addcarryx_u32(x296, x263, x278); let mut x299: u32 = 0; let mut x300: fiat_p384_u1 = 0; let (x299, x300) = fiat_p384_addcarryx_u32(x298, x265, x275); let mut x301: u32 = 0; let mut x302: fiat_p384_u1 = 0; let (x301, x302) = fiat_p384_addcarryx_u32(x300, x267, x283); let mut x303: u32 = 0; let mut x304: fiat_p384_u1 = 0; let (x303, x304) = fiat_p384_addcarryx_u32(x302, x269, (x284 as u32)); let mut x305: u32 = 0; let mut x306: fiat_p384_u1 = 0; let (x305, x306) = fiat_p384_addcarryx_u32(x304, x271, (0x0 as u32)); let mut x307: u32 = 0; let mut x308: fiat_p384_u1 = 0; let (x307, x308) = fiat_p384_addcarryx_u32(x306, x273, (0x0 as u32)); let mut x309: u32 = 0; let mut x310: u32 = 0; let (x309, x310) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x311: u32 = 0; let mut x312: u32 = 0; let (x311, x312) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x313: u32 = 0; let mut x314: u32 = 0; let (x313, x314) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x315: u32 = 0; let mut x316: u32 = 0; let (x315, x316) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x317: u32 = 0; let mut x318: u32 = 0; let (x317, x318) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x319: u32 = 0; let mut x320: u32 = 0; let (x319, x320) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x321: u32 = 0; let mut x322: u32 = 0; let (x321, x322) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x323: u32 = 0; let mut x324: u32 = 0; let (x323, x324) = fiat_p384_mulx_u32(x285, 0xfffffffe); let mut x325: u32 = 0; let mut x326: u32 = 0; let (x325, x326) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x327: u32 = 0; let mut x328: u32 = 0; let (x327, x328) = fiat_p384_mulx_u32(x285, 0xffffffff); let mut x329: u32 = 0; let mut x330: fiat_p384_u1 = 0; let (x329, x330) = fiat_p384_addcarryx_u32(0x0, x326, x323); let mut x331: u32 = 0; let mut x332: fiat_p384_u1 = 0; let (x331, x332) = fiat_p384_addcarryx_u32(x330, x324, x321); let mut x333: u32 = 0; let mut x334: fiat_p384_u1 = 0; let (x333, x334) = fiat_p384_addcarryx_u32(x332, x322, x319); let mut x335: u32 = 0; let mut x336: fiat_p384_u1 = 0; let (x335, x336) = fiat_p384_addcarryx_u32(x334, x320, x317); let mut x337: u32 = 0; let mut x338: fiat_p384_u1 = 0; let (x337, x338) = fiat_p384_addcarryx_u32(x336, x318, x315); let mut x339: u32 = 0; let mut x340: fiat_p384_u1 = 0; let (x339, x340) = fiat_p384_addcarryx_u32(x338, x316, x313); let mut x341: u32 = 0; let mut x342: fiat_p384_u1 = 0; let (x341, x342) = fiat_p384_addcarryx_u32(x340, x314, x311); let mut x343: u32 = 0; let mut x344: fiat_p384_u1 = 0; let (x343, x344) = fiat_p384_addcarryx_u32(x342, x312, x309); let mut x345: u32 = 0; let mut x346: fiat_p384_u1 = 0; let (x345, x346) = fiat_p384_addcarryx_u32(0x0, x285, x327); let mut x347: u32 = 0; let mut x348: fiat_p384_u1 = 0; let (x347, x348) = fiat_p384_addcarryx_u32(x346, x287, x328); let mut x349: u32 = 0; let mut x350: fiat_p384_u1 = 0; let (x349, x350) = fiat_p384_addcarryx_u32(x348, x289, (0x0 as u32)); let mut x351: u32 = 0; let mut x352: fiat_p384_u1 = 0; let (x351, x352) = fiat_p384_addcarryx_u32(x350, x291, x325); let mut x353: u32 = 0; let mut x354: fiat_p384_u1 = 0; let (x353, x354) = fiat_p384_addcarryx_u32(x352, x293, x329); let mut x355: u32 = 0; let mut x356: fiat_p384_u1 = 0; let (x355, x356) = fiat_p384_addcarryx_u32(x354, x295, x331); let mut x357: u32 = 0; let mut x358: fiat_p384_u1 = 0; let (x357, x358) = fiat_p384_addcarryx_u32(x356, x297, x333); let mut x359: u32 = 0; let mut x360: fiat_p384_u1 = 0; let (x359, x360) = fiat_p384_addcarryx_u32(x358, x299, x335); let mut x361: u32 = 0; let mut x362: fiat_p384_u1 = 0; let (x361, x362) = fiat_p384_addcarryx_u32(x360, x301, x337); let mut x363: u32 = 0; let mut x364: fiat_p384_u1 = 0; let (x363, x364) = fiat_p384_addcarryx_u32(x362, x303, x339); let mut x365: u32 = 0; let mut x366: fiat_p384_u1 = 0; let (x365, x366) = fiat_p384_addcarryx_u32(x364, x305, x341); let mut x367: u32 = 0; let mut x368: fiat_p384_u1 = 0; let (x367, x368) = fiat_p384_addcarryx_u32(x366, x307, x343); let mut x369: u32 = 0; let mut x370: fiat_p384_u1 = 0; let (x369, x370) = fiat_p384_addcarryx_u32( x368, ((x308 as u32) + (x274 as u32)), ((x344 as u32) + x310), ); let mut x371: u32 = 0; let mut x372: u32 = 0; let (x371, x372) = fiat_p384_mulx_u32(x4, 0x2); let mut x373: u32 = 0; let mut x374: u32 = 0; let (x373, x374) = fiat_p384_mulx_u32(x4, 0xfffffffe); let mut x375: u32 = 0; let mut x376: u32 = 0; let (x375, x376) = fiat_p384_mulx_u32(x4, 0x2); let mut x377: u32 = 0; let mut x378: u32 = 0; let (x377, x378) = fiat_p384_mulx_u32(x4, 0xfffffffe); let mut x379: u32 = 0; let mut x380: fiat_p384_u1 = 0; let (x379, x380) = fiat_p384_addcarryx_u32(0x0, ((x372 as fiat_p384_u1) as u32), x4); let mut x381: u32 = 0; let mut x382: fiat_p384_u1 = 0; let (x381, x382) = fiat_p384_addcarryx_u32(0x0, x347, x4); let mut x383: u32 = 0; let mut x384: fiat_p384_u1 = 0; let (x383, x384) = fiat_p384_addcarryx_u32(x382, x349, x377); let mut x385: u32 = 0; let mut x386: fiat_p384_u1 = 0; let (x385, x386) = fiat_p384_addcarryx_u32(x384, x351, x378); let mut x387: u32 = 0; let mut x388: fiat_p384_u1 = 0; let (x387, x388) = fiat_p384_addcarryx_u32(x386, x353, x375); let mut x389: u32 = 0; let mut x390: fiat_p384_u1 = 0; let (x389, x390) = fiat_p384_addcarryx_u32(x388, x355, ((x376 as fiat_p384_u1) as u32)); let mut x391: u32 = 0; let mut x392: fiat_p384_u1 = 0; let (x391, x392) = fiat_p384_addcarryx_u32(x390, x357, x373); let mut x393: u32 = 0; let mut x394: fiat_p384_u1 = 0; let (x393, x394) = fiat_p384_addcarryx_u32(x392, x359, x374); let mut x395: u32 = 0; let mut x396: fiat_p384_u1 = 0; let (x395, x396) = fiat_p384_addcarryx_u32(x394, x361, x371); let mut x397: u32 = 0; let mut x398: fiat_p384_u1 = 0; let (x397, x398) = fiat_p384_addcarryx_u32(x396, x363, x379); let mut x399: u32 = 0; let mut x400: fiat_p384_u1 = 0; let (x399, x400) = fiat_p384_addcarryx_u32(x398, x365, (x380 as u32)); let mut x401: u32 = 0; let mut x402: fiat_p384_u1 = 0; let (x401, x402) = fiat_p384_addcarryx_u32(x400, x367, (0x0 as u32)); let mut x403: u32 = 0; let mut x404: fiat_p384_u1 = 0; let (x403, x404) = fiat_p384_addcarryx_u32(x402, x369, (0x0 as u32)); let mut x405: u32 = 0; let mut x406: u32 = 0; let (x405, x406) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x407: u32 = 0; let mut x408: u32 = 0; let (x407, x408) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x409: u32 = 0; let mut x410: u32 = 0; let (x409, x410) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x411: u32 = 0; let mut x412: u32 = 0; let (x411, x412) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x413: u32 = 0; let mut x414: u32 = 0; let (x413, x414) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x415: u32 = 0; let mut x416: u32 = 0; let (x415, x416) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x417: u32 = 0; let mut x418: u32 = 0; let (x417, x418) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x419: u32 = 0; let mut x420: u32 = 0; let (x419, x420) = fiat_p384_mulx_u32(x381, 0xfffffffe); let mut x421: u32 = 0; let mut x422: u32 = 0; let (x421, x422) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x423: u32 = 0; let mut x424: u32 = 0; let (x423, x424) = fiat_p384_mulx_u32(x381, 0xffffffff); let mut x425: u32 = 0; let mut x426: fiat_p384_u1 = 0; let (x425, x426) = fiat_p384_addcarryx_u32(0x0, x422, x419); let mut x427: u32 = 0; let mut x428: fiat_p384_u1 = 0; let (x427, x428) = fiat_p384_addcarryx_u32(x426, x420, x417); let mut x429: u32 = 0; let mut x430: fiat_p384_u1 = 0; let (x429, x430) = fiat_p384_addcarryx_u32(x428, x418, x415); let mut x431: u32 = 0; let mut x432: fiat_p384_u1 = 0; let (x431, x432) = fiat_p384_addcarryx_u32(x430, x416, x413); let mut x433: u32 = 0; let mut x434: fiat_p384_u1 = 0; let (x433, x434) = fiat_p384_addcarryx_u32(x432, x414, x411); let mut x435: u32 = 0; let mut x436: fiat_p384_u1 = 0; let (x435, x436) = fiat_p384_addcarryx_u32(x434, x412, x409); let mut x437: u32 = 0; let mut x438: fiat_p384_u1 = 0; let (x437, x438) = fiat_p384_addcarryx_u32(x436, x410, x407); let mut x439: u32 = 0; let mut x440: fiat_p384_u1 = 0; let (x439, x440) = fiat_p384_addcarryx_u32(x438, x408, x405); let mut x441: u32 = 0; let mut x442: fiat_p384_u1 = 0; let (x441, x442) = fiat_p384_addcarryx_u32(0x0, x381, x423); let mut x443: u32 = 0; let mut x444: fiat_p384_u1 = 0; let (x443, x444) = fiat_p384_addcarryx_u32(x442, x383, x424); let mut x445: u32 = 0; let mut x446: fiat_p384_u1 = 0; let (x445, x446) = fiat_p384_addcarryx_u32(x444, x385, (0x0 as u32)); let mut x447: u32 = 0; let mut x448: fiat_p384_u1 = 0; let (x447, x448) = fiat_p384_addcarryx_u32(x446, x387, x421); let mut x449: u32 = 0; let mut x450: fiat_p384_u1 = 0; let (x449, x450) = fiat_p384_addcarryx_u32(x448, x389, x425); let mut x451: u32 = 0; let mut x452: fiat_p384_u1 = 0; let (x451, x452) = fiat_p384_addcarryx_u32(x450, x391, x427); let mut x453: u32 = 0; let mut x454: fiat_p384_u1 = 0; let (x453, x454) = fiat_p384_addcarryx_u32(x452, x393, x429); let mut x455: u32 = 0; let mut x456: fiat_p384_u1 = 0; let (x455, x456) = fiat_p384_addcarryx_u32(x454, x395, x431); let mut x457: u32 = 0; let mut x458: fiat_p384_u1 = 0; let (x457, x458) = fiat_p384_addcarryx_u32(x456, x397, x433); let mut x459: u32 = 0; let mut x460: fiat_p384_u1 = 0; let (x459, x460) = fiat_p384_addcarryx_u32(x458, x399, x435); let mut x461: u32 = 0; let mut x462: fiat_p384_u1 = 0; let (x461, x462) = fiat_p384_addcarryx_u32(x460, x401, x437); let mut x463: u32 = 0; let mut x464: fiat_p384_u1 = 0; let (x463, x464) = fiat_p384_addcarryx_u32(x462, x403, x439); let mut x465: u32 = 0; let mut x466: fiat_p384_u1 = 0; let (x465, x466) = fiat_p384_addcarryx_u32( x464, ((x404 as u32) + (x370 as u32)), ((x440 as u32) + x406), ); let mut x467: u32 = 0; let mut x468: u32 = 0; let (x467, x468) = fiat_p384_mulx_u32(x5, 0x2); let mut x469: u32 = 0; let mut x470: u32 = 0; let (x469, x470) = fiat_p384_mulx_u32(x5, 0xfffffffe); let mut x471: u32 = 0; let mut x472: u32 = 0; let (x471, x472) = fiat_p384_mulx_u32(x5, 0x2); let mut x473: u32 = 0; let mut x474: u32 = 0; let (x473, x474) = fiat_p384_mulx_u32(x5, 0xfffffffe); let mut x475: u32 = 0; let mut x476: fiat_p384_u1 = 0; let (x475, x476) = fiat_p384_addcarryx_u32(0x0, ((x468 as fiat_p384_u1) as u32), x5); let mut x477: u32 = 0; let mut x478: fiat_p384_u1 = 0; let (x477, x478) = fiat_p384_addcarryx_u32(0x0, x443, x5); let mut x479: u32 = 0; let mut x480: fiat_p384_u1 = 0; let (x479, x480) = fiat_p384_addcarryx_u32(x478, x445, x473); let mut x481: u32 = 0; let mut x482: fiat_p384_u1 = 0; let (x481, x482) = fiat_p384_addcarryx_u32(x480, x447, x474); let mut x483: u32 = 0; let mut x484: fiat_p384_u1 = 0; let (x483, x484) = fiat_p384_addcarryx_u32(x482, x449, x471); let mut x485: u32 = 0; let mut x486: fiat_p384_u1 = 0; let (x485, x486) = fiat_p384_addcarryx_u32(x484, x451, ((x472 as fiat_p384_u1) as u32)); let mut x487: u32 = 0; let mut x488: fiat_p384_u1 = 0; let (x487, x488) = fiat_p384_addcarryx_u32(x486, x453, x469); let mut x489: u32 = 0; let mut x490: fiat_p384_u1 = 0; let (x489, x490) = fiat_p384_addcarryx_u32(x488, x455, x470); let mut x491: u32 = 0; let mut x492: fiat_p384_u1 = 0; let (x491, x492) = fiat_p384_addcarryx_u32(x490, x457, x467); let mut x493: u32 = 0; let mut x494: fiat_p384_u1 = 0; let (x493, x494) = fiat_p384_addcarryx_u32(x492, x459, x475); let mut x495: u32 = 0; let mut x496: fiat_p384_u1 = 0; let (x495, x496) = fiat_p384_addcarryx_u32(x494, x461, (x476 as u32)); let mut x497: u32 = 0; let mut x498: fiat_p384_u1 = 0; let (x497, x498) = fiat_p384_addcarryx_u32(x496, x463, (0x0 as u32)); let mut x499: u32 = 0; let mut x500: fiat_p384_u1 = 0; let (x499, x500) = fiat_p384_addcarryx_u32(x498, x465, (0x0 as u32)); let mut x501: u32 = 0; let mut x502: u32 = 0; let (x501, x502) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x503: u32 = 0; let mut x504: u32 = 0; let (x503, x504) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x505: u32 = 0; let mut x506: u32 = 0; let (x505, x506) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x507: u32 = 0; let mut x508: u32 = 0; let (x507, x508) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x509: u32 = 0; let mut x510: u32 = 0; let (x509, x510) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x511: u32 = 0; let mut x512: u32 = 0; let (x511, x512) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x513: u32 = 0; let mut x514: u32 = 0; let (x513, x514) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x515: u32 = 0; let mut x516: u32 = 0; let (x515, x516) = fiat_p384_mulx_u32(x477, 0xfffffffe); let mut x517: u32 = 0; let mut x518: u32 = 0; let (x517, x518) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x519: u32 = 0; let mut x520: u32 = 0; let (x519, x520) = fiat_p384_mulx_u32(x477, 0xffffffff); let mut x521: u32 = 0; let mut x522: fiat_p384_u1 = 0; let (x521, x522) = fiat_p384_addcarryx_u32(0x0, x518, x515); let mut x523: u32 = 0; let mut x524: fiat_p384_u1 = 0; let (x523, x524) = fiat_p384_addcarryx_u32(x522, x516, x513); let mut x525: u32 = 0; let mut x526: fiat_p384_u1 = 0; let (x525, x526) = fiat_p384_addcarryx_u32(x524, x514, x511); let mut x527: u32 = 0; let mut x528: fiat_p384_u1 = 0; let (x527, x528) = fiat_p384_addcarryx_u32(x526, x512, x509); let mut x529: u32 = 0; let mut x530: fiat_p384_u1 = 0; let (x529, x530) = fiat_p384_addcarryx_u32(x528, x510, x507); let mut x531: u32 = 0; let mut x532: fiat_p384_u1 = 0; let (x531, x532) = fiat_p384_addcarryx_u32(x530, x508, x505); let mut x533: u32 = 0; let mut x534: fiat_p384_u1 = 0; let (x533, x534) = fiat_p384_addcarryx_u32(x532, x506, x503); let mut x535: u32 = 0; let mut x536: fiat_p384_u1 = 0; let (x535, x536) = fiat_p384_addcarryx_u32(x534, x504, x501); let mut x537: u32 = 0; let mut x538: fiat_p384_u1 = 0; let (x537, x538) = fiat_p384_addcarryx_u32(0x0, x477, x519); let mut x539: u32 = 0; let mut x540: fiat_p384_u1 = 0; let (x539, x540) = fiat_p384_addcarryx_u32(x538, x479, x520); let mut x541: u32 = 0; let mut x542: fiat_p384_u1 = 0; let (x541, x542) = fiat_p384_addcarryx_u32(x540, x481, (0x0 as u32)); let mut x543: u32 = 0; let mut x544: fiat_p384_u1 = 0; let (x543, x544) = fiat_p384_addcarryx_u32(x542, x483, x517); let mut x545: u32 = 0; let mut x546: fiat_p384_u1 = 0; let (x545, x546) = fiat_p384_addcarryx_u32(x544, x485, x521); let mut x547: u32 = 0; let mut x548: fiat_p384_u1 = 0; let (x547, x548) = fiat_p384_addcarryx_u32(x546, x487, x523); let mut x549: u32 = 0; let mut x550: fiat_p384_u1 = 0; let (x549, x550) = fiat_p384_addcarryx_u32(x548, x489, x525); let mut x551: u32 = 0; let mut x552: fiat_p384_u1 = 0; let (x551, x552) = fiat_p384_addcarryx_u32(x550, x491, x527); let mut x553: u32 = 0; let mut x554: fiat_p384_u1 = 0; let (x553, x554) = fiat_p384_addcarryx_u32(x552, x493, x529); let mut x555: u32 = 0; let mut x556: fiat_p384_u1 = 0; let (x555, x556) = fiat_p384_addcarryx_u32(x554, x495, x531); let mut x557: u32 = 0; let mut x558: fiat_p384_u1 = 0; let (x557, x558) = fiat_p384_addcarryx_u32(x556, x497, x533); let mut x559: u32 = 0; let mut x560: fiat_p384_u1 = 0; let (x559, x560) = fiat_p384_addcarryx_u32(x558, x499, x535); let mut x561: u32 = 0; let mut x562: fiat_p384_u1 = 0; let (x561, x562) = fiat_p384_addcarryx_u32( x560, ((x500 as u32) + (x466 as u32)), ((x536 as u32) + x502), ); let mut x563: u32 = 0; let mut x564: u32 = 0; let (x563, x564) = fiat_p384_mulx_u32(x6, 0x2); let mut x565: u32 = 0; let mut x566: u32 = 0; let (x565, x566) = fiat_p384_mulx_u32(x6, 0xfffffffe); let mut x567: u32 = 0; let mut x568: u32 = 0; let (x567, x568) = fiat_p384_mulx_u32(x6, 0x2); let mut x569: u32 = 0; let mut x570: u32 = 0; let (x569, x570) = fiat_p384_mulx_u32(x6, 0xfffffffe); let mut x571: u32 = 0; let mut x572: fiat_p384_u1 = 0; let (x571, x572) = fiat_p384_addcarryx_u32(0x0, ((x564 as fiat_p384_u1) as u32), x6); let mut x573: u32 = 0; let mut x574: fiat_p384_u1 = 0; let (x573, x574) = fiat_p384_addcarryx_u32(0x0, x539, x6); let mut x575: u32 = 0; let mut x576: fiat_p384_u1 = 0; let (x575, x576) = fiat_p384_addcarryx_u32(x574, x541, x569); let mut x577: u32 = 0; let mut x578: fiat_p384_u1 = 0; let (x577, x578) = fiat_p384_addcarryx_u32(x576, x543, x570); let mut x579: u32 = 0; let mut x580: fiat_p384_u1 = 0; let (x579, x580) = fiat_p384_addcarryx_u32(x578, x545, x567); let mut x581: u32 = 0; let mut x582: fiat_p384_u1 = 0; let (x581, x582) = fiat_p384_addcarryx_u32(x580, x547, ((x568 as fiat_p384_u1) as u32)); let mut x583: u32 = 0; let mut x584: fiat_p384_u1 = 0; let (x583, x584) = fiat_p384_addcarryx_u32(x582, x549, x565); let mut x585: u32 = 0; let mut x586: fiat_p384_u1 = 0; let (x585, x586) = fiat_p384_addcarryx_u32(x584, x551, x566); let mut x587: u32 = 0; let mut x588: fiat_p384_u1 = 0; let (x587, x588) = fiat_p384_addcarryx_u32(x586, x553, x563); let mut x589: u32 = 0; let mut x590: fiat_p384_u1 = 0; let (x589, x590) = fiat_p384_addcarryx_u32(x588, x555, x571); let mut x591: u32 = 0; let mut x592: fiat_p384_u1 = 0; let (x591, x592) = fiat_p384_addcarryx_u32(x590, x557, (x572 as u32)); let mut x593: u32 = 0; let mut x594: fiat_p384_u1 = 0; let (x593, x594) = fiat_p384_addcarryx_u32(x592, x559, (0x0 as u32)); let mut x595: u32 = 0; let mut x596: fiat_p384_u1 = 0; let (x595, x596) = fiat_p384_addcarryx_u32(x594, x561, (0x0 as u32)); let mut x597: u32 = 0; let mut x598: u32 = 0; let (x597, x598) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x599: u32 = 0; let mut x600: u32 = 0; let (x599, x600) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x601: u32 = 0; let mut x602: u32 = 0; let (x601, x602) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x603: u32 = 0; let mut x604: u32 = 0; let (x603, x604) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x605: u32 = 0; let mut x606: u32 = 0; let (x605, x606) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x607: u32 = 0; let mut x608: u32 = 0; let (x607, x608) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x609: u32 = 0; let mut x610: u32 = 0; let (x609, x610) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x611: u32 = 0; let mut x612: u32 = 0; let (x611, x612) = fiat_p384_mulx_u32(x573, 0xfffffffe); let mut x613: u32 = 0; let mut x614: u32 = 0; let (x613, x614) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x615: u32 = 0; let mut x616: u32 = 0; let (x615, x616) = fiat_p384_mulx_u32(x573, 0xffffffff); let mut x617: u32 = 0; let mut x618: fiat_p384_u1 = 0; let (x617, x618) = fiat_p384_addcarryx_u32(0x0, x614, x611); let mut x619: u32 = 0; let mut x620: fiat_p384_u1 = 0; let (x619, x620) = fiat_p384_addcarryx_u32(x618, x612, x609); let mut x621: u32 = 0; let mut x622: fiat_p384_u1 = 0; let (x621, x622) = fiat_p384_addcarryx_u32(x620, x610, x607); let mut x623: u32 = 0; let mut x624: fiat_p384_u1 = 0; let (x623, x624) = fiat_p384_addcarryx_u32(x622, x608, x605); let mut x625: u32 = 0; let mut x626: fiat_p384_u1 = 0; let (x625, x626) = fiat_p384_addcarryx_u32(x624, x606, x603); let mut x627: u32 = 0; let mut x628: fiat_p384_u1 = 0; let (x627, x628) = fiat_p384_addcarryx_u32(x626, x604, x601); let mut x629: u32 = 0; let mut x630: fiat_p384_u1 = 0; let (x629, x630) = fiat_p384_addcarryx_u32(x628, x602, x599); let mut x631: u32 = 0; let mut x632: fiat_p384_u1 = 0; let (x631, x632) = fiat_p384_addcarryx_u32(x630, x600, x597); let mut x633: u32 = 0; let mut x634: fiat_p384_u1 = 0; let (x633, x634) = fiat_p384_addcarryx_u32(0x0, x573, x615); let mut x635: u32 = 0; let mut x636: fiat_p384_u1 = 0; let (x635, x636) = fiat_p384_addcarryx_u32(x634, x575, x616); let mut x637: u32 = 0; let mut x638: fiat_p384_u1 = 0; let (x637, x638) = fiat_p384_addcarryx_u32(x636, x577, (0x0 as u32)); let mut x639: u32 = 0; let mut x640: fiat_p384_u1 = 0; let (x639, x640) = fiat_p384_addcarryx_u32(x638, x579, x613); let mut x641: u32 = 0; let mut x642: fiat_p384_u1 = 0; let (x641, x642) = fiat_p384_addcarryx_u32(x640, x581, x617); let mut x643: u32 = 0; let mut x644: fiat_p384_u1 = 0; let (x643, x644) = fiat_p384_addcarryx_u32(x642, x583, x619); let mut x645: u32 = 0; let mut x646: fiat_p384_u1 = 0; let (x645, x646) = fiat_p384_addcarryx_u32(x644, x585, x621); let mut x647: u32 = 0; let mut x648: fiat_p384_u1 = 0; let (x647, x648) = fiat_p384_addcarryx_u32(x646, x587, x623); let mut x649: u32 = 0; let mut x650: fiat_p384_u1 = 0; let (x649, x650) = fiat_p384_addcarryx_u32(x648, x589, x625); let mut x651: u32 = 0; let mut x652: fiat_p384_u1 = 0; let (x651, x652) = fiat_p384_addcarryx_u32(x650, x591, x627); let mut x653: u32 = 0; let mut x654: fiat_p384_u1 = 0; let (x653, x654) = fiat_p384_addcarryx_u32(x652, x593, x629); let mut x655: u32 = 0; let mut x656: fiat_p384_u1 = 0; let (x655, x656) = fiat_p384_addcarryx_u32(x654, x595, x631); let mut x657: u32 = 0; let mut x658: fiat_p384_u1 = 0; let (x657, x658) = fiat_p384_addcarryx_u32( x656, ((x596 as u32) + (x562 as u32)), ((x632 as u32) + x598), ); let mut x659: u32 = 0; let mut x660: u32 = 0; let (x659, x660) = fiat_p384_mulx_u32(x7, 0x2); let mut x661: u32 = 0; let mut x662: u32 = 0; let (x661, x662) = fiat_p384_mulx_u32(x7, 0xfffffffe); let mut x663: u32 = 0; let mut x664: u32 = 0; let (x663, x664) = fiat_p384_mulx_u32(x7, 0x2); let mut x665: u32 = 0; let mut x666: u32 = 0; let (x665, x666) = fiat_p384_mulx_u32(x7, 0xfffffffe); let mut x667: u32 = 0; let mut x668: fiat_p384_u1 = 0; let (x667, x668) = fiat_p384_addcarryx_u32(0x0, ((x660 as fiat_p384_u1) as u32), x7); let mut x669: u32 = 0; let mut x670: fiat_p384_u1 = 0; let (x669, x670) = fiat_p384_addcarryx_u32(0x0, x635, x7); let mut x671: u32 = 0; let mut x672: fiat_p384_u1 = 0; let (x671, x672) = fiat_p384_addcarryx_u32(x670, x637, x665); let mut x673: u32 = 0; let mut x674: fiat_p384_u1 = 0; let (x673, x674) = fiat_p384_addcarryx_u32(x672, x639, x666); let mut x675: u32 = 0; let mut x676: fiat_p384_u1 = 0; let (x675, x676) = fiat_p384_addcarryx_u32(x674, x641, x663); let mut x677: u32 = 0; let mut x678: fiat_p384_u1 = 0; let (x677, x678) = fiat_p384_addcarryx_u32(x676, x643, ((x664 as fiat_p384_u1) as u32)); let mut x679: u32 = 0; let mut x680: fiat_p384_u1 = 0; let (x679, x680) = fiat_p384_addcarryx_u32(x678, x645, x661); let mut x681: u32 = 0; let mut x682: fiat_p384_u1 = 0; let (x681, x682) = fiat_p384_addcarryx_u32(x680, x647, x662); let mut x683: u32 = 0; let mut x684: fiat_p384_u1 = 0; let (x683, x684) = fiat_p384_addcarryx_u32(x682, x649, x659); let mut x685: u32 = 0; let mut x686: fiat_p384_u1 = 0; let (x685, x686) = fiat_p384_addcarryx_u32(x684, x651, x667); let mut x687: u32 = 0; let mut x688: fiat_p384_u1 = 0; let (x687, x688) = fiat_p384_addcarryx_u32(x686, x653, (x668 as u32)); let mut x689: u32 = 0; let mut x690: fiat_p384_u1 = 0; let (x689, x690) = fiat_p384_addcarryx_u32(x688, x655, (0x0 as u32)); let mut x691: u32 = 0; let mut x692: fiat_p384_u1 = 0; let (x691, x692) = fiat_p384_addcarryx_u32(x690, x657, (0x0 as u32)); let mut x693: u32 = 0; let mut x694: u32 = 0; let (x693, x694) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x695: u32 = 0; let mut x696: u32 = 0; let (x695, x696) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x697: u32 = 0; let mut x698: u32 = 0; let (x697, x698) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x699: u32 = 0; let mut x700: u32 = 0; let (x699, x700) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x701: u32 = 0; let mut x702: u32 = 0; let (x701, x702) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x703: u32 = 0; let mut x704: u32 = 0; let (x703, x704) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x705: u32 = 0; let mut x706: u32 = 0; let (x705, x706) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x707: u32 = 0; let mut x708: u32 = 0; let (x707, x708) = fiat_p384_mulx_u32(x669, 0xfffffffe); let mut x709: u32 = 0; let mut x710: u32 = 0; let (x709, x710) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x711: u32 = 0; let mut x712: u32 = 0; let (x711, x712) = fiat_p384_mulx_u32(x669, 0xffffffff); let mut x713: u32 = 0; let mut x714: fiat_p384_u1 = 0; let (x713, x714) = fiat_p384_addcarryx_u32(0x0, x710, x707); let mut x715: u32 = 0; let mut x716: fiat_p384_u1 = 0; let (x715, x716) = fiat_p384_addcarryx_u32(x714, x708, x705); let mut x717: u32 = 0; let mut x718: fiat_p384_u1 = 0; let (x717, x718) = fiat_p384_addcarryx_u32(x716, x706, x703); let mut x719: u32 = 0; let mut x720: fiat_p384_u1 = 0; let (x719, x720) = fiat_p384_addcarryx_u32(x718, x704, x701); let mut x721: u32 = 0; let mut x722: fiat_p384_u1 = 0; let (x721, x722) = fiat_p384_addcarryx_u32(x720, x702, x699); let mut x723: u32 = 0; let mut x724: fiat_p384_u1 = 0; let (x723, x724) = fiat_p384_addcarryx_u32(x722, x700, x697); let mut x725: u32 = 0; let mut x726: fiat_p384_u1 = 0; let (x725, x726) = fiat_p384_addcarryx_u32(x724, x698, x695); let mut x727: u32 = 0; let mut x728: fiat_p384_u1 = 0; let (x727, x728) = fiat_p384_addcarryx_u32(x726, x696, x693); let mut x729: u32 = 0; let mut x730: fiat_p384_u1 = 0; let (x729, x730) = fiat_p384_addcarryx_u32(0x0, x669, x711); let mut x731: u32 = 0; let mut x732: fiat_p384_u1 = 0; let (x731, x732) = fiat_p384_addcarryx_u32(x730, x671, x712); let mut x733: u32 = 0; let mut x734: fiat_p384_u1 = 0; let (x733, x734) = fiat_p384_addcarryx_u32(x732, x673, (0x0 as u32)); let mut x735: u32 = 0; let mut x736: fiat_p384_u1 = 0; let (x735, x736) = fiat_p384_addcarryx_u32(x734, x675, x709); let mut x737: u32 = 0; let mut x738: fiat_p384_u1 = 0; let (x737, x738) = fiat_p384_addcarryx_u32(x736, x677, x713); let mut x739: u32 = 0; let mut x740: fiat_p384_u1 = 0; let (x739, x740) = fiat_p384_addcarryx_u32(x738, x679, x715); let mut x741: u32 = 0; let mut x742: fiat_p384_u1 = 0; let (x741, x742) = fiat_p384_addcarryx_u32(x740, x681, x717); let mut x743: u32 = 0; let mut x744: fiat_p384_u1 = 0; let (x743, x744) = fiat_p384_addcarryx_u32(x742, x683, x719); let mut x745: u32 = 0; let mut x746: fiat_p384_u1 = 0; let (x745, x746) = fiat_p384_addcarryx_u32(x744, x685, x721); let mut x747: u32 = 0; let mut x748: fiat_p384_u1 = 0; let (x747, x748) = fiat_p384_addcarryx_u32(x746, x687, x723); let mut x749: u32 = 0; let mut x750: fiat_p384_u1 = 0; let (x749, x750) = fiat_p384_addcarryx_u32(x748, x689, x725); let mut x751: u32 = 0; let mut x752: fiat_p384_u1 = 0; let (x751, x752) = fiat_p384_addcarryx_u32(x750, x691, x727); let mut x753: u32 = 0; let mut x754: fiat_p384_u1 = 0; let (x753, x754) = fiat_p384_addcarryx_u32( x752, ((x692 as u32) + (x658 as u32)), ((x728 as u32) + x694), ); let mut x755: u32 = 0; let mut x756: u32 = 0; let (x755, x756) = fiat_p384_mulx_u32(x8, 0x2); let mut x757: u32 = 0; let mut x758: u32 = 0; let (x757, x758) = fiat_p384_mulx_u32(x8, 0xfffffffe); let mut x759: u32 = 0; let mut x760: u32 = 0; let (x759, x760) = fiat_p384_mulx_u32(x8, 0x2); let mut x761: u32 = 0; let mut x762: u32 = 0; let (x761, x762) = fiat_p384_mulx_u32(x8, 0xfffffffe); let mut x763: u32 = 0; let mut x764: fiat_p384_u1 = 0; let (x763, x764) = fiat_p384_addcarryx_u32(0x0, ((x756 as fiat_p384_u1) as u32), x8); let mut x765: u32 = 0; let mut x766: fiat_p384_u1 = 0; let (x765, x766) = fiat_p384_addcarryx_u32(0x0, x731, x8); let mut x767: u32 = 0; let mut x768: fiat_p384_u1 = 0; let (x767, x768) = fiat_p384_addcarryx_u32(x766, x733, x761); let mut x769: u32 = 0; let mut x770: fiat_p384_u1 = 0; let (x769, x770) = fiat_p384_addcarryx_u32(x768, x735, x762); let mut x771: u32 = 0; let mut x772: fiat_p384_u1 = 0; let (x771, x772) = fiat_p384_addcarryx_u32(x770, x737, x759); let mut x773: u32 = 0; let mut x774: fiat_p384_u1 = 0; let (x773, x774) = fiat_p384_addcarryx_u32(x772, x739, ((x760 as fiat_p384_u1) as u32)); let mut x775: u32 = 0; let mut x776: fiat_p384_u1 = 0; let (x775, x776) = fiat_p384_addcarryx_u32(x774, x741, x757); let mut x777: u32 = 0; let mut x778: fiat_p384_u1 = 0; let (x777, x778) = fiat_p384_addcarryx_u32(x776, x743, x758); let mut x779: u32 = 0; let mut x780: fiat_p384_u1 = 0; let (x779, x780) = fiat_p384_addcarryx_u32(x778, x745, x755); let mut x781: u32 = 0; let mut x782: fiat_p384_u1 = 0; let (x781, x782) = fiat_p384_addcarryx_u32(x780, x747, x763); let mut x783: u32 = 0; let mut x784: fiat_p384_u1 = 0; let (x783, x784) = fiat_p384_addcarryx_u32(x782, x749, (x764 as u32)); let mut x785: u32 = 0; let mut x786: fiat_p384_u1 = 0; let (x785, x786) = fiat_p384_addcarryx_u32(x784, x751, (0x0 as u32)); let mut x787: u32 = 0; let mut x788: fiat_p384_u1 = 0; let (x787, x788) = fiat_p384_addcarryx_u32(x786, x753, (0x0 as u32)); let mut x789: u32 = 0; let mut x790: u32 = 0; let (x789, x790) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x791: u32 = 0; let mut x792: u32 = 0; let (x791, x792) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x793: u32 = 0; let mut x794: u32 = 0; let (x793, x794) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x795: u32 = 0; let mut x796: u32 = 0; let (x795, x796) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x797: u32 = 0; let mut x798: u32 = 0; let (x797, x798) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x799: u32 = 0; let mut x800: u32 = 0; let (x799, x800) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x801: u32 = 0; let mut x802: u32 = 0; let (x801, x802) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x803: u32 = 0; let mut x804: u32 = 0; let (x803, x804) = fiat_p384_mulx_u32(x765, 0xfffffffe); let mut x805: u32 = 0; let mut x806: u32 = 0; let (x805, x806) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x807: u32 = 0; let mut x808: u32 = 0; let (x807, x808) = fiat_p384_mulx_u32(x765, 0xffffffff); let mut x809: u32 = 0; let mut x810: fiat_p384_u1 = 0; let (x809, x810) = fiat_p384_addcarryx_u32(0x0, x806, x803); let mut x811: u32 = 0; let mut x812: fiat_p384_u1 = 0; let (x811, x812) = fiat_p384_addcarryx_u32(x810, x804, x801); let mut x813: u32 = 0; let mut x814: fiat_p384_u1 = 0; let (x813, x814) = fiat_p384_addcarryx_u32(x812, x802, x799); let mut x815: u32 = 0; let mut x816: fiat_p384_u1 = 0; let (x815, x816) = fiat_p384_addcarryx_u32(x814, x800, x797); let mut x817: u32 = 0; let mut x818: fiat_p384_u1 = 0; let (x817, x818) = fiat_p384_addcarryx_u32(x816, x798, x795); let mut x819: u32 = 0; let mut x820: fiat_p384_u1 = 0; let (x819, x820) = fiat_p384_addcarryx_u32(x818, x796, x793); let mut x821: u32 = 0; let mut x822: fiat_p384_u1 = 0; let (x821, x822) = fiat_p384_addcarryx_u32(x820, x794, x791); let mut x823: u32 = 0; let mut x824: fiat_p384_u1 = 0; let (x823, x824) = fiat_p384_addcarryx_u32(x822, x792, x789); let mut x825: u32 = 0; let mut x826: fiat_p384_u1 = 0; let (x825, x826) = fiat_p384_addcarryx_u32(0x0, x765, x807); let mut x827: u32 = 0; let mut x828: fiat_p384_u1 = 0; let (x827, x828) = fiat_p384_addcarryx_u32(x826, x767, x808); let mut x829: u32 = 0; let mut x830: fiat_p384_u1 = 0; let (x829, x830) = fiat_p384_addcarryx_u32(x828, x769, (0x0 as u32)); let mut x831: u32 = 0; let mut x832: fiat_p384_u1 = 0; let (x831, x832) = fiat_p384_addcarryx_u32(x830, x771, x805); let mut x833: u32 = 0; let mut x834: fiat_p384_u1 = 0; let (x833, x834) = fiat_p384_addcarryx_u32(x832, x773, x809); let mut x835: u32 = 0; let mut x836: fiat_p384_u1 = 0; let (x835, x836) = fiat_p384_addcarryx_u32(x834, x775, x811); let mut x837: u32 = 0; let mut x838: fiat_p384_u1 = 0; let (x837, x838) = fiat_p384_addcarryx_u32(x836, x777, x813); let mut x839: u32 = 0; let mut x840: fiat_p384_u1 = 0; let (x839, x840) = fiat_p384_addcarryx_u32(x838, x779, x815); let mut x841: u32 = 0; let mut x842: fiat_p384_u1 = 0; let (x841, x842) = fiat_p384_addcarryx_u32(x840, x781, x817); let mut x843: u32 = 0; let mut x844: fiat_p384_u1 = 0; let (x843, x844) = fiat_p384_addcarryx_u32(x842, x783, x819); let mut x845: u32 = 0; let mut x846: fiat_p384_u1 = 0; let (x845, x846) = fiat_p384_addcarryx_u32(x844, x785, x821); let mut x847: u32 = 0; let mut x848: fiat_p384_u1 = 0; let (x847, x848) = fiat_p384_addcarryx_u32(x846, x787, x823); let mut x849: u32 = 0; let mut x850: fiat_p384_u1 = 0; let (x849, x850) = fiat_p384_addcarryx_u32( x848, ((x788 as u32) + (x754 as u32)), ((x824 as u32) + x790), ); let mut x851: u32 = 0; let mut x852: u32 = 0; let (x851, x852) = fiat_p384_mulx_u32(x9, 0x2); let mut x853: u32 = 0; let mut x854: u32 = 0; let (x853, x854) = fiat_p384_mulx_u32(x9, 0xfffffffe); let mut x855: u32 = 0; let mut x856: u32 = 0; let (x855, x856) = fiat_p384_mulx_u32(x9, 0x2); let mut x857: u32 = 0; let mut x858: u32 = 0; let (x857, x858) = fiat_p384_mulx_u32(x9, 0xfffffffe); let mut x859: u32 = 0; let mut x860: fiat_p384_u1 = 0; let (x859, x860) = fiat_p384_addcarryx_u32(0x0, ((x852 as fiat_p384_u1) as u32), x9); let mut x861: u32 = 0; let mut x862: fiat_p384_u1 = 0; let (x861, x862) = fiat_p384_addcarryx_u32(0x0, x827, x9); let mut x863: u32 = 0; let mut x864: fiat_p384_u1 = 0; let (x863, x864) = fiat_p384_addcarryx_u32(x862, x829, x857); let mut x865: u32 = 0; let mut x866: fiat_p384_u1 = 0; let (x865, x866) = fiat_p384_addcarryx_u32(x864, x831, x858); let mut x867: u32 = 0; let mut x868: fiat_p384_u1 = 0; let (x867, x868) = fiat_p384_addcarryx_u32(x866, x833, x855); let mut x869: u32 = 0; let mut x870: fiat_p384_u1 = 0; let (x869, x870) = fiat_p384_addcarryx_u32(x868, x835, ((x856 as fiat_p384_u1) as u32)); let mut x871: u32 = 0; let mut x872: fiat_p384_u1 = 0; let (x871, x872) = fiat_p384_addcarryx_u32(x870, x837, x853); let mut x873: u32 = 0; let mut x874: fiat_p384_u1 = 0; let (x873, x874) = fiat_p384_addcarryx_u32(x872, x839, x854); let mut x875: u32 = 0; let mut x876: fiat_p384_u1 = 0; let (x875, x876) = fiat_p384_addcarryx_u32(x874, x841, x851); let mut x877: u32 = 0; let mut x878: fiat_p384_u1 = 0; let (x877, x878) = fiat_p384_addcarryx_u32(x876, x843, x859); let mut x879: u32 = 0; let mut x880: fiat_p384_u1 = 0; let (x879, x880) = fiat_p384_addcarryx_u32(x878, x845, (x860 as u32)); let mut x881: u32 = 0; let mut x882: fiat_p384_u1 = 0; let (x881, x882) = fiat_p384_addcarryx_u32(x880, x847, (0x0 as u32)); let mut x883: u32 = 0; let mut x884: fiat_p384_u1 = 0; let (x883, x884) = fiat_p384_addcarryx_u32(x882, x849, (0x0 as u32)); let mut x885: u32 = 0; let mut x886: u32 = 0; let (x885, x886) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x887: u32 = 0; let mut x888: u32 = 0; let (x887, x888) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x889: u32 = 0; let mut x890: u32 = 0; let (x889, x890) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x891: u32 = 0; let mut x892: u32 = 0; let (x891, x892) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x893: u32 = 0; let mut x894: u32 = 0; let (x893, x894) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x895: u32 = 0; let mut x896: u32 = 0; let (x895, x896) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x897: u32 = 0; let mut x898: u32 = 0; let (x897, x898) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x899: u32 = 0; let mut x900: u32 = 0; let (x899, x900) = fiat_p384_mulx_u32(x861, 0xfffffffe); let mut x901: u32 = 0; let mut x902: u32 = 0; let (x901, x902) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x903: u32 = 0; let mut x904: u32 = 0; let (x903, x904) = fiat_p384_mulx_u32(x861, 0xffffffff); let mut x905: u32 = 0; let mut x906: fiat_p384_u1 = 0; let (x905, x906) = fiat_p384_addcarryx_u32(0x0, x902, x899); let mut x907: u32 = 0; let mut x908: fiat_p384_u1 = 0; let (x907, x908) = fiat_p384_addcarryx_u32(x906, x900, x897); let mut x909: u32 = 0; let mut x910: fiat_p384_u1 = 0; let (x909, x910) = fiat_p384_addcarryx_u32(x908, x898, x895); let mut x911: u32 = 0; let mut x912: fiat_p384_u1 = 0; let (x911, x912) = fiat_p384_addcarryx_u32(x910, x896, x893); let mut x913: u32 = 0; let mut x914: fiat_p384_u1 = 0; let (x913, x914) = fiat_p384_addcarryx_u32(x912, x894, x891); let mut x915: u32 = 0; let mut x916: fiat_p384_u1 = 0; let (x915, x916) = fiat_p384_addcarryx_u32(x914, x892, x889); let mut x917: u32 = 0; let mut x918: fiat_p384_u1 = 0; let (x917, x918) = fiat_p384_addcarryx_u32(x916, x890, x887); let mut x919: u32 = 0; let mut x920: fiat_p384_u1 = 0; let (x919, x920) = fiat_p384_addcarryx_u32(x918, x888, x885); let mut x921: u32 = 0; let mut x922: fiat_p384_u1 = 0; let (x921, x922) = fiat_p384_addcarryx_u32(0x0, x861, x903); let mut x923: u32 = 0; let mut x924: fiat_p384_u1 = 0; let (x923, x924) = fiat_p384_addcarryx_u32(x922, x863, x904); let mut x925: u32 = 0; let mut x926: fiat_p384_u1 = 0; let (x925, x926) = fiat_p384_addcarryx_u32(x924, x865, (0x0 as u32)); let mut x927: u32 = 0; let mut x928: fiat_p384_u1 = 0; let (x927, x928) = fiat_p384_addcarryx_u32(x926, x867, x901); let mut x929: u32 = 0; let mut x930: fiat_p384_u1 = 0; let (x929, x930) = fiat_p384_addcarryx_u32(x928, x869, x905); let mut x931: u32 = 0; let mut x932: fiat_p384_u1 = 0; let (x931, x932) = fiat_p384_addcarryx_u32(x930, x871, x907); let mut x933: u32 = 0; let mut x934: fiat_p384_u1 = 0; let (x933, x934) = fiat_p384_addcarryx_u32(x932, x873, x909); let mut x935: u32 = 0; let mut x936: fiat_p384_u1 = 0; let (x935, x936) = fiat_p384_addcarryx_u32(x934, x875, x911); let mut x937: u32 = 0; let mut x938: fiat_p384_u1 = 0; let (x937, x938) = fiat_p384_addcarryx_u32(x936, x877, x913); let mut x939: u32 = 0; let mut x940: fiat_p384_u1 = 0; let (x939, x940) = fiat_p384_addcarryx_u32(x938, x879, x915); let mut x941: u32 = 0; let mut x942: fiat_p384_u1 = 0; let (x941, x942) = fiat_p384_addcarryx_u32(x940, x881, x917); let mut x943: u32 = 0; let mut x944: fiat_p384_u1 = 0; let (x943, x944) = fiat_p384_addcarryx_u32(x942, x883, x919); let mut x945: u32 = 0; let mut x946: fiat_p384_u1 = 0; let (x945, x946) = fiat_p384_addcarryx_u32( x944, ((x884 as u32) + (x850 as u32)), ((x920 as u32) + x886), ); let mut x947: u32 = 0; let mut x948: u32 = 0; let (x947, x948) = fiat_p384_mulx_u32(x10, 0x2); let mut x949: u32 = 0; let mut x950: u32 = 0; let (x949, x950) = fiat_p384_mulx_u32(x10, 0xfffffffe); let mut x951: u32 = 0; let mut x952: u32 = 0; let (x951, x952) = fiat_p384_mulx_u32(x10, 0x2); let mut x953: u32 = 0; let mut x954: u32 = 0; let (x953, x954) = fiat_p384_mulx_u32(x10, 0xfffffffe); let mut x955: u32 = 0; let mut x956: fiat_p384_u1 = 0; let (x955, x956) = fiat_p384_addcarryx_u32(0x0, ((x948 as fiat_p384_u1) as u32), x10); let mut x957: u32 = 0; let mut x958: fiat_p384_u1 = 0; let (x957, x958) = fiat_p384_addcarryx_u32(0x0, x923, x10); let mut x959: u32 = 0; let mut x960: fiat_p384_u1 = 0; let (x959, x960) = fiat_p384_addcarryx_u32(x958, x925, x953); let mut x961: u32 = 0; let mut x962: fiat_p384_u1 = 0; let (x961, x962) = fiat_p384_addcarryx_u32(x960, x927, x954); let mut x963: u32 = 0; let mut x964: fiat_p384_u1 = 0; let (x963, x964) = fiat_p384_addcarryx_u32(x962, x929, x951); let mut x965: u32 = 0; let mut x966: fiat_p384_u1 = 0; let (x965, x966) = fiat_p384_addcarryx_u32(x964, x931, ((x952 as fiat_p384_u1) as u32)); let mut x967: u32 = 0; let mut x968: fiat_p384_u1 = 0; let (x967, x968) = fiat_p384_addcarryx_u32(x966, x933, x949); let mut x969: u32 = 0; let mut x970: fiat_p384_u1 = 0; let (x969, x970) = fiat_p384_addcarryx_u32(x968, x935, x950); let mut x971: u32 = 0; let mut x972: fiat_p384_u1 = 0; let (x971, x972) = fiat_p384_addcarryx_u32(x970, x937, x947); let mut x973: u32 = 0; let mut x974: fiat_p384_u1 = 0; let (x973, x974) = fiat_p384_addcarryx_u32(x972, x939, x955); let mut x975: u32 = 0; let mut x976: fiat_p384_u1 = 0; let (x975, x976) = fiat_p384_addcarryx_u32(x974, x941, (x956 as u32)); let mut x977: u32 = 0; let mut x978: fiat_p384_u1 = 0; let (x977, x978) = fiat_p384_addcarryx_u32(x976, x943, (0x0 as u32)); let mut x979: u32 = 0; let mut x980: fiat_p384_u1 = 0; let (x979, x980) = fiat_p384_addcarryx_u32(x978, x945, (0x0 as u32)); let mut x981: u32 = 0; let mut x982: u32 = 0; let (x981, x982) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x983: u32 = 0; let mut x984: u32 = 0; let (x983, x984) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x985: u32 = 0; let mut x986: u32 = 0; let (x985, x986) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x987: u32 = 0; let mut x988: u32 = 0; let (x987, x988) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x989: u32 = 0; let mut x990: u32 = 0; let (x989, x990) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x991: u32 = 0; let mut x992: u32 = 0; let (x991, x992) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x993: u32 = 0; let mut x994: u32 = 0; let (x993, x994) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x995: u32 = 0; let mut x996: u32 = 0; let (x995, x996) = fiat_p384_mulx_u32(x957, 0xfffffffe); let mut x997: u32 = 0; let mut x998: u32 = 0; let (x997, x998) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x999: u32 = 0; let mut x1000: u32 = 0; let (x999, x1000) = fiat_p384_mulx_u32(x957, 0xffffffff); let mut x1001: u32 = 0; let mut x1002: fiat_p384_u1 = 0; let (x1001, x1002) = fiat_p384_addcarryx_u32(0x0, x998, x995); let mut x1003: u32 = 0; let mut x1004: fiat_p384_u1 = 0; let (x1003, x1004) = fiat_p384_addcarryx_u32(x1002, x996, x993); let mut x1005: u32 = 0; let mut x1006: fiat_p384_u1 = 0; let (x1005, x1006) = fiat_p384_addcarryx_u32(x1004, x994, x991); let mut x1007: u32 = 0; let mut x1008: fiat_p384_u1 = 0; let (x1007, x1008) = fiat_p384_addcarryx_u32(x1006, x992, x989); let mut x1009: u32 = 0; let mut x1010: fiat_p384_u1 = 0; let (x1009, x1010) = fiat_p384_addcarryx_u32(x1008, x990, x987); let mut x1011: u32 = 0; let mut x1012: fiat_p384_u1 = 0; let (x1011, x1012) = fiat_p384_addcarryx_u32(x1010, x988, x985); let mut x1013: u32 = 0; let mut x1014: fiat_p384_u1 = 0; let (x1013, x1014) = fiat_p384_addcarryx_u32(x1012, x986, x983); let mut x1015: u32 = 0; let mut x1016: fiat_p384_u1 = 0; let (x1015, x1016) = fiat_p384_addcarryx_u32(x1014, x984, x981); let mut x1017: u32 = 0; let mut x1018: fiat_p384_u1 = 0; let (x1017, x1018) = fiat_p384_addcarryx_u32(0x0, x957, x999); let mut x1019: u32 = 0; let mut x1020: fiat_p384_u1 = 0; let (x1019, x1020) = fiat_p384_addcarryx_u32(x1018, x959, x1000); let mut x1021: u32 = 0; let mut x1022: fiat_p384_u1 = 0; let (x1021, x1022) = fiat_p384_addcarryx_u32(x1020, x961, (0x0 as u32)); let mut x1023: u32 = 0; let mut x1024: fiat_p384_u1 = 0; let (x1023, x1024) = fiat_p384_addcarryx_u32(x1022, x963, x997); let mut x1025: u32 = 0; let mut x1026: fiat_p384_u1 = 0; let (x1025, x1026) = fiat_p384_addcarryx_u32(x1024, x965, x1001); let mut x1027: u32 = 0; let mut x1028: fiat_p384_u1 = 0; let (x1027, x1028) = fiat_p384_addcarryx_u32(x1026, x967, x1003); let mut x1029: u32 = 0; let mut x1030: fiat_p384_u1 = 0; let (x1029, x1030) = fiat_p384_addcarryx_u32(x1028, x969, x1005); let mut x1031: u32 = 0; let mut x1032: fiat_p384_u1 = 0; let (x1031, x1032) = fiat_p384_addcarryx_u32(x1030, x971, x1007); let mut x1033: u32 = 0; let mut x1034: fiat_p384_u1 = 0; let (x1033, x1034) = fiat_p384_addcarryx_u32(x1032, x973, x1009); let mut x1035: u32 = 0; let mut x1036: fiat_p384_u1 = 0; let (x1035, x1036) = fiat_p384_addcarryx_u32(x1034, x975, x1011); let mut x1037: u32 = 0; let mut x1038: fiat_p384_u1 = 0; let (x1037, x1038) = fiat_p384_addcarryx_u32(x1036, x977, x1013); let mut x1039: u32 = 0; let mut x1040: fiat_p384_u1 = 0; let (x1039, x1040) = fiat_p384_addcarryx_u32(x1038, x979, x1015); let mut x1041: u32 = 0; let mut x1042: fiat_p384_u1 = 0; let (x1041, x1042) = fiat_p384_addcarryx_u32( x1040, ((x980 as u32) + (x946 as u32)), ((x1016 as u32) + x982), ); let mut x1043: u32 = 0; let mut x1044: u32 = 0; let (x1043, x1044) = fiat_p384_mulx_u32(x11, 0x2); let mut x1045: u32 = 0; let mut x1046: u32 = 0; let (x1045, x1046) = fiat_p384_mulx_u32(x11, 0xfffffffe); let mut x1047: u32 = 0; let mut x1048: u32 = 0; let (x1047, x1048) = fiat_p384_mulx_u32(x11, 0x2); let mut x1049: u32 = 0; let mut x1050: u32 = 0; let (x1049, x1050) = fiat_p384_mulx_u32(x11, 0xfffffffe); let mut x1051: u32 = 0; let mut x1052: fiat_p384_u1 = 0; let (x1051, x1052) = fiat_p384_addcarryx_u32(0x0, ((x1044 as fiat_p384_u1) as u32), x11); let mut x1053: u32 = 0; let mut x1054: fiat_p384_u1 = 0; let (x1053, x1054) = fiat_p384_addcarryx_u32(0x0, x1019, x11); let mut x1055: u32 = 0; let mut x1056: fiat_p384_u1 = 0; let (x1055, x1056) = fiat_p384_addcarryx_u32(x1054, x1021, x1049); let mut x1057: u32 = 0; let mut x1058: fiat_p384_u1 = 0; let (x1057, x1058) = fiat_p384_addcarryx_u32(x1056, x1023, x1050); let mut x1059: u32 = 0; let mut x1060: fiat_p384_u1 = 0; let (x1059, x1060) = fiat_p384_addcarryx_u32(x1058, x1025, x1047); let mut x1061: u32 = 0; let mut x1062: fiat_p384_u1 = 0; let (x1061, x1062) = fiat_p384_addcarryx_u32(x1060, x1027, ((x1048 as fiat_p384_u1) as u32)); let mut x1063: u32 = 0; let mut x1064: fiat_p384_u1 = 0; let (x1063, x1064) = fiat_p384_addcarryx_u32(x1062, x1029, x1045); let mut x1065: u32 = 0; let mut x1066: fiat_p384_u1 = 0; let (x1065, x1066) = fiat_p384_addcarryx_u32(x1064, x1031, x1046); let mut x1067: u32 = 0; let mut x1068: fiat_p384_u1 = 0; let (x1067, x1068) = fiat_p384_addcarryx_u32(x1066, x1033, x1043); let mut x1069: u32 = 0; let mut x1070: fiat_p384_u1 = 0; let (x1069, x1070) = fiat_p384_addcarryx_u32(x1068, x1035, x1051); let mut x1071: u32 = 0; let mut x1072: fiat_p384_u1 = 0; let (x1071, x1072) = fiat_p384_addcarryx_u32(x1070, x1037, (x1052 as u32)); let mut x1073: u32 = 0; let mut x1074: fiat_p384_u1 = 0; let (x1073, x1074) = fiat_p384_addcarryx_u32(x1072, x1039, (0x0 as u32)); let mut x1075: u32 = 0; let mut x1076: fiat_p384_u1 = 0; let (x1075, x1076) = fiat_p384_addcarryx_u32(x1074, x1041, (0x0 as u32)); let mut x1077: u32 = 0; let mut x1078: u32 = 0; let (x1077, x1078) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1079: u32 = 0; let mut x1080: u32 = 0; let (x1079, x1080) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1081: u32 = 0; let mut x1082: u32 = 0; let (x1081, x1082) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1083: u32 = 0; let mut x1084: u32 = 0; let (x1083, x1084) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1085: u32 = 0; let mut x1086: u32 = 0; let (x1085, x1086) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1087: u32 = 0; let mut x1088: u32 = 0; let (x1087, x1088) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1089: u32 = 0; let mut x1090: u32 = 0; let (x1089, x1090) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1091: u32 = 0; let mut x1092: u32 = 0; let (x1091, x1092) = fiat_p384_mulx_u32(x1053, 0xfffffffe); let mut x1093: u32 = 0; let mut x1094: u32 = 0; let (x1093, x1094) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1095: u32 = 0; let mut x1096: u32 = 0; let (x1095, x1096) = fiat_p384_mulx_u32(x1053, 0xffffffff); let mut x1097: u32 = 0; let mut x1098: fiat_p384_u1 = 0; let (x1097, x1098) = fiat_p384_addcarryx_u32(0x0, x1094, x1091); let mut x1099: u32 = 0; let mut x1100: fiat_p384_u1 = 0; let (x1099, x1100) = fiat_p384_addcarryx_u32(x1098, x1092, x1089); let mut x1101: u32 = 0; let mut x1102: fiat_p384_u1 = 0; let (x1101, x1102) = fiat_p384_addcarryx_u32(x1100, x1090, x1087); let mut x1103: u32 = 0; let mut x1104: fiat_p384_u1 = 0; let (x1103, x1104) = fiat_p384_addcarryx_u32(x1102, x1088, x1085); let mut x1105: u32 = 0; let mut x1106: fiat_p384_u1 = 0; let (x1105, x1106) = fiat_p384_addcarryx_u32(x1104, x1086, x1083); let mut x1107: u32 = 0; let mut x1108: fiat_p384_u1 = 0; let (x1107, x1108) = fiat_p384_addcarryx_u32(x1106, x1084, x1081); let mut x1109: u32 = 0; let mut x1110: fiat_p384_u1 = 0; let (x1109, x1110) = fiat_p384_addcarryx_u32(x1108, x1082, x1079); let mut x1111: u32 = 0; let mut x1112: fiat_p384_u1 = 0; let (x1111, x1112) = fiat_p384_addcarryx_u32(x1110, x1080, x1077); let mut x1113: u32 = 0; let mut x1114: fiat_p384_u1 = 0; let (x1113, x1114) = fiat_p384_addcarryx_u32(0x0, x1053, x1095); let mut x1115: u32 = 0; let mut x1116: fiat_p384_u1 = 0; let (x1115, x1116) = fiat_p384_addcarryx_u32(x1114, x1055, x1096); let mut x1117: u32 = 0; let mut x1118: fiat_p384_u1 = 0; let (x1117, x1118) = fiat_p384_addcarryx_u32(x1116, x1057, (0x0 as u32)); let mut x1119: u32 = 0; let mut x1120: fiat_p384_u1 = 0; let (x1119, x1120) = fiat_p384_addcarryx_u32(x1118, x1059, x1093); let mut x1121: u32 = 0; let mut x1122: fiat_p384_u1 = 0; let (x1121, x1122) = fiat_p384_addcarryx_u32(x1120, x1061, x1097); let mut x1123: u32 = 0; let mut x1124: fiat_p384_u1 = 0; let (x1123, x1124) = fiat_p384_addcarryx_u32(x1122, x1063, x1099); let mut x1125: u32 = 0; let mut x1126: fiat_p384_u1 = 0; let (x1125, x1126) = fiat_p384_addcarryx_u32(x1124, x1065, x1101); let mut x1127: u32 = 0; let mut x1128: fiat_p384_u1 = 0; let (x1127, x1128) = fiat_p384_addcarryx_u32(x1126, x1067, x1103); let mut x1129: u32 = 0; let mut x1130: fiat_p384_u1 = 0; let (x1129, x1130) = fiat_p384_addcarryx_u32(x1128, x1069, x1105); let mut x1131: u32 = 0; let mut x1132: fiat_p384_u1 = 0; let (x1131, x1132) = fiat_p384_addcarryx_u32(x1130, x1071, x1107); let mut x1133: u32 = 0; let mut x1134: fiat_p384_u1 = 0; let (x1133, x1134) = fiat_p384_addcarryx_u32(x1132, x1073, x1109); let mut x1135: u32 = 0; let mut x1136: fiat_p384_u1 = 0; let (x1135, x1136) = fiat_p384_addcarryx_u32(x1134, x1075, x1111); let mut x1137: u32 = 0; let mut x1138: fiat_p384_u1 = 0; let (x1137, x1138) = fiat_p384_addcarryx_u32( x1136, ((x1076 as u32) + (x1042 as u32)), ((x1112 as u32) + x1078), ); let mut x1139: u32 = 0; let mut x1140: fiat_p384_u1 = 0; let (x1139, x1140) = fiat_p384_subborrowx_u32(0x0, x1115, 0xffffffff); let mut x1141: u32 = 0; let mut x1142: fiat_p384_u1 = 0; let (x1141, x1142) = fiat_p384_subborrowx_u32(x1140, x1117, (0x0 as u32)); let mut x1143: u32 = 0; let mut x1144: fiat_p384_u1 = 0; let (x1143, x1144) = fiat_p384_subborrowx_u32(x1142, x1119, (0x0 as u32)); let mut x1145: u32 = 0; let mut x1146: fiat_p384_u1 = 0; let (x1145, x1146) = fiat_p384_subborrowx_u32(x1144, x1121, 0xffffffff); let mut x1147: u32 = 0; let mut x1148: fiat_p384_u1 = 0; let (x1147, x1148) = fiat_p384_subborrowx_u32(x1146, x1123, 0xfffffffe); let mut x1149: u32 = 0; let mut x1150: fiat_p384_u1 = 0; let (x1149, x1150) = fiat_p384_subborrowx_u32(x1148, x1125, 0xffffffff); let mut x1151: u32 = 0; let mut x1152: fiat_p384_u1 = 0; let (x1151, x1152) = fiat_p384_subborrowx_u32(x1150, x1127, 0xffffffff); let mut x1153: u32 = 0; let mut x1154: fiat_p384_u1 = 0; let (x1153, x1154) = fiat_p384_subborrowx_u32(x1152, x1129, 0xffffffff); let mut x1155: u32 = 0; let mut x1156: fiat_p384_u1 = 0; let (x1155, x1156) = fiat_p384_subborrowx_u32(x1154, x1131, 0xffffffff); let mut x1157: u32 = 0; let mut x1158: fiat_p384_u1 = 0; let (x1157, x1158) = fiat_p384_subborrowx_u32(x1156, x1133, 0xffffffff); let mut x1159: u32 = 0; let mut x1160: fiat_p384_u1 = 0; let (x1159, x1160) = fiat_p384_subborrowx_u32(x1158, x1135, 0xffffffff); let mut x1161: u32 = 0; let mut x1162: fiat_p384_u1 = 0; let (x1161, x1162) = fiat_p384_subborrowx_u32(x1160, x1137, 0xffffffff); let mut x1163: u32 = 0; let mut x1164: fiat_p384_u1 = 0; let (x1163, x1164) = fiat_p384_subborrowx_u32(x1162, (x1138 as u32), (0x0 as u32)); let mut x1165: u32 = 0; let (x1165) = fiat_p384_cmovznz_u32(x1164, x1139, x1115); let mut x1166: u32 = 0; let (x1166) = fiat_p384_cmovznz_u32(x1164, x1141, x1117); let mut x1167: u32 = 0; let (x1167) = fiat_p384_cmovznz_u32(x1164, x1143, x1119); let mut x1168: u32 = 0; let (x1168) = fiat_p384_cmovznz_u32(x1164, x1145, x1121); let mut x1169: u32 = 0; let (x1169) = fiat_p384_cmovznz_u32(x1164, x1147, x1123); let mut x1170: u32 = 0; let (x1170) = fiat_p384_cmovznz_u32(x1164, x1149, x1125); let mut x1171: u32 = 0; let (x1171) = fiat_p384_cmovznz_u32(x1164, x1151, x1127); let mut x1172: u32 = 0; let (x1172) = fiat_p384_cmovznz_u32(x1164, x1153, x1129); let mut x1173: u32 = 0; let (x1173) = fiat_p384_cmovznz_u32(x1164, x1155, x1131); let mut x1174: u32 = 0; let (x1174) = fiat_p384_cmovznz_u32(x1164, x1157, x1133); let mut x1175: u32 = 0; let (x1175) = fiat_p384_cmovznz_u32(x1164, x1159, x1135); let mut x1176: u32 = 0; let (x1176) = fiat_p384_cmovznz_u32(x1164, x1161, x1137); out1[0] = x1165; out1[1] = x1166; out1[2] = x1167; out1[3] = x1168; out1[4] = x1169; out1[5] = x1170; out1[6] = x1171; out1[7] = x1172; out1[8] = x1173; out1[9] = x1174; out1[10] = x1175; out1[11] = x1176; out1 } #[doc = " The function fiat_p384_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_nonzero(arg1: &[u32; 12]) -> u32 { let mut out1: u32 = 0; let x1: u32 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | ((arg1[3]) | ((arg1[4]) | ((arg1[5]) | ((arg1[6]) | ((arg1[7]) | ((arg1[8]) | ((arg1[9]) | ((arg1[10]) | (arg1[11])))))))))))); out1 = x1; out1 } #[doc = " The function fiat_p384_selectznz is a multi-limb conditional select."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_selectznz( arg1: fiat_p384_u1, arg2: &[u32; 12], arg3: &[u32; 12], ) -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; let mut x1: u32 = 0; let (x1) = fiat_p384_cmovznz_u32(arg1, (arg2[0]), (arg3[0])); let mut x2: u32 = 0; let (x2) = fiat_p384_cmovznz_u32(arg1, (arg2[1]), (arg3[1])); let mut x3: u32 = 0; let (x3) = fiat_p384_cmovznz_u32(arg1, (arg2[2]), (arg3[2])); let mut x4: u32 = 0; let (x4) = fiat_p384_cmovznz_u32(arg1, (arg2[3]), (arg3[3])); let mut x5: u32 = 0; let (x5) = fiat_p384_cmovznz_u32(arg1, (arg2[4]), (arg3[4])); let mut x6: u32 = 0; let (x6) = fiat_p384_cmovznz_u32(arg1, (arg2[5]), (arg3[5])); let mut x7: u32 = 0; let (x7) = fiat_p384_cmovznz_u32(arg1, (arg2[6]), (arg3[6])); let mut x8: u32 = 0; let (x8) = fiat_p384_cmovznz_u32(arg1, (arg2[7]), (arg3[7])); let mut x9: u32 = 0; let (x9) = fiat_p384_cmovznz_u32(arg1, (arg2[8]), (arg3[8])); let mut x10: u32 = 0; let (x10) = fiat_p384_cmovznz_u32(arg1, (arg2[9]), (arg3[9])); let mut x11: u32 = 0; let (x11) = fiat_p384_cmovznz_u32(arg1, (arg2[10]), (arg3[10])); let mut x12: u32 = 0; let (x12) = fiat_p384_cmovznz_u32(arg1, (arg2[11]), (arg3[11])); out1[0] = x1; out1[1] = x2; out1[2] = x3; out1[3] = x4; out1[4] = x5; out1[5] = x6; out1[6] = x7; out1[7] = x8; out1[8] = x9; out1[9] = x10; out1[10] = x11; out1[11] = x12; out1 } #[doc = " The function fiat_p384_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..47]"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " 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]]"] #[inline] pub const fn fiat_p384_to_bytes(arg1: &[u32; 12]) -> [u8; 48] { let mut out1: [u8; 48] = [0; 48]; let x1: u32 = (arg1[11]); let x2: u32 = (arg1[10]); let x3: u32 = (arg1[9]); let x4: u32 = (arg1[8]); let x5: u32 = (arg1[7]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[5]); let x8: u32 = (arg1[4]); let x9: u32 = (arg1[3]); let x10: u32 = (arg1[2]); let x11: u32 = (arg1[1]); let x12: u32 = (arg1[0]); let x13: u8 = ((x12 & (0xff as u32)) as u8); let x14: u32 = (x12 >> 8); let x15: u8 = ((x14 & (0xff as u32)) as u8); let x16: u32 = (x14 >> 8); let x17: u8 = ((x16 & (0xff as u32)) as u8); let x18: u8 = ((x16 >> 8) as u8); let x19: u8 = ((x11 & (0xff as u32)) as u8); let x20: u32 = (x11 >> 8); let x21: u8 = ((x20 & (0xff as u32)) as u8); let x22: u32 = (x20 >> 8); let x23: u8 = ((x22 & (0xff as u32)) as u8); let x24: u8 = ((x22 >> 8) as u8); let x25: u8 = ((x10 & (0xff as u32)) as u8); let x26: u32 = (x10 >> 8); let x27: u8 = ((x26 & (0xff as u32)) as u8); let x28: u32 = (x26 >> 8); let x29: u8 = ((x28 & (0xff as u32)) as u8); let x30: u8 = ((x28 >> 8) as u8); let x31: u8 = ((x9 & (0xff as u32)) as u8); let x32: u32 = (x9 >> 8); let x33: u8 = ((x32 & (0xff as u32)) as u8); let x34: u32 = (x32 >> 8); let x35: u8 = ((x34 & (0xff as u32)) as u8); let x36: u8 = ((x34 >> 8) as u8); let x37: u8 = ((x8 & (0xff as u32)) as u8); let x38: u32 = (x8 >> 8); let x39: u8 = ((x38 & (0xff as u32)) as u8); let x40: u32 = (x38 >> 8); let x41: u8 = ((x40 & (0xff as u32)) as u8); let x42: u8 = ((x40 >> 8) as u8); let x43: u8 = ((x7 & (0xff as u32)) as u8); let x44: u32 = (x7 >> 8); let x45: u8 = ((x44 & (0xff as u32)) as u8); let x46: u32 = (x44 >> 8); let x47: u8 = ((x46 & (0xff as u32)) as u8); let x48: u8 = ((x46 >> 8) as u8); let x49: u8 = ((x6 & (0xff as u32)) as u8); let x50: u32 = (x6 >> 8); let x51: u8 = ((x50 & (0xff as u32)) as u8); let x52: u32 = (x50 >> 8); let x53: u8 = ((x52 & (0xff as u32)) as u8); let x54: u8 = ((x52 >> 8) as u8); let x55: u8 = ((x5 & (0xff as u32)) as u8); let x56: u32 = (x5 >> 8); let x57: u8 = ((x56 & (0xff as u32)) as u8); let x58: u32 = (x56 >> 8); let x59: u8 = ((x58 & (0xff as u32)) as u8); let x60: u8 = ((x58 >> 8) as u8); let x61: u8 = ((x4 & (0xff as u32)) as u8); let x62: u32 = (x4 >> 8); let x63: u8 = ((x62 & (0xff as u32)) as u8); let x64: u32 = (x62 >> 8); let x65: u8 = ((x64 & (0xff as u32)) as u8); let x66: u8 = ((x64 >> 8) as u8); let x67: u8 = ((x3 & (0xff as u32)) as u8); let x68: u32 = (x3 >> 8); let x69: u8 = ((x68 & (0xff as u32)) as u8); let x70: u32 = (x68 >> 8); let x71: u8 = ((x70 & (0xff as u32)) as u8); let x72: u8 = ((x70 >> 8) as u8); let x73: u8 = ((x2 & (0xff as u32)) as u8); let x74: u32 = (x2 >> 8); let x75: u8 = ((x74 & (0xff as u32)) as u8); let x76: u32 = (x74 >> 8); let x77: u8 = ((x76 & (0xff as u32)) as u8); let x78: u8 = ((x76 >> 8) as u8); let x79: u8 = ((x1 & (0xff as u32)) as u8); let x80: u32 = (x1 >> 8); let x81: u8 = ((x80 & (0xff as u32)) as u8); let x82: u32 = (x80 >> 8); let x83: u8 = ((x82 & (0xff as u32)) as u8); let x84: u8 = ((x82 >> 8) as u8); out1[0] = x13; out1[1] = x15; out1[2] = x17; out1[3] = x18; out1[4] = x19; out1[5] = x21; out1[6] = x23; out1[7] = x24; out1[8] = x25; out1[9] = x27; out1[10] = x29; out1[11] = x30; out1[12] = x31; out1[13] = x33; out1[14] = x35; out1[15] = x36; out1[16] = x37; out1[17] = x39; out1[18] = x41; out1[19] = x42; out1[20] = x43; out1[21] = x45; out1[22] = x47; out1[23] = x48; out1[24] = x49; out1[25] = x51; out1[26] = x53; out1[27] = x54; out1[28] = x55; out1[29] = x57; out1[30] = x59; out1[31] = x60; out1[32] = x61; out1[33] = x63; out1[34] = x65; out1[35] = x66; out1[36] = x67; out1[37] = x69; out1[38] = x71; out1[39] = x72; out1[40] = x73; out1[41] = x75; out1[42] = x77; out1[43] = x78; out1[44] = x79; out1[45] = x81; out1[46] = x83; out1[47] = x84; out1 } #[doc = " The function fiat_p384_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ bytes_eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = bytes_eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " 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]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_from_bytes(arg1: &[u8; 48]) -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; let x1: u32 = (((arg1[47]) as u32) << 24); let x2: u32 = (((arg1[46]) as u32) << 16); let x3: u32 = (((arg1[45]) as u32) << 8); let x4: u8 = (arg1[44]); let x5: u32 = (((arg1[43]) as u32) << 24); let x6: u32 = (((arg1[42]) as u32) << 16); let x7: u32 = (((arg1[41]) as u32) << 8); let x8: u8 = (arg1[40]); let x9: u32 = (((arg1[39]) as u32) << 24); let x10: u32 = (((arg1[38]) as u32) << 16); let x11: u32 = (((arg1[37]) as u32) << 8); let x12: u8 = (arg1[36]); let x13: u32 = (((arg1[35]) as u32) << 24); let x14: u32 = (((arg1[34]) as u32) << 16); let x15: u32 = (((arg1[33]) as u32) << 8); let x16: u8 = (arg1[32]); let x17: u32 = (((arg1[31]) as u32) << 24); let x18: u32 = (((arg1[30]) as u32) << 16); let x19: u32 = (((arg1[29]) as u32) << 8); let x20: u8 = (arg1[28]); let x21: u32 = (((arg1[27]) as u32) << 24); let x22: u32 = (((arg1[26]) as u32) << 16); let x23: u32 = (((arg1[25]) as u32) << 8); let x24: u8 = (arg1[24]); let x25: u32 = (((arg1[23]) as u32) << 24); let x26: u32 = (((arg1[22]) as u32) << 16); let x27: u32 = (((arg1[21]) as u32) << 8); let x28: u8 = (arg1[20]); let x29: u32 = (((arg1[19]) as u32) << 24); let x30: u32 = (((arg1[18]) as u32) << 16); let x31: u32 = (((arg1[17]) as u32) << 8); let x32: u8 = (arg1[16]); let x33: u32 = (((arg1[15]) as u32) << 24); let x34: u32 = (((arg1[14]) as u32) << 16); let x35: u32 = (((arg1[13]) as u32) << 8); let x36: u8 = (arg1[12]); let x37: u32 = (((arg1[11]) as u32) << 24); let x38: u32 = (((arg1[10]) as u32) << 16); let x39: u32 = (((arg1[9]) as u32) << 8); let x40: u8 = (arg1[8]); let x41: u32 = (((arg1[7]) as u32) << 24); let x42: u32 = (((arg1[6]) as u32) << 16); let x43: u32 = (((arg1[5]) as u32) << 8); let x44: u8 = (arg1[4]); let x45: u32 = (((arg1[3]) as u32) << 24); let x46: u32 = (((arg1[2]) as u32) << 16); let x47: u32 = (((arg1[1]) as u32) << 8); let x48: u8 = (arg1[0]); let x49: u32 = (x47 + (x48 as u32)); let x50: u32 = (x46 + x49); let x51: u32 = (x45 + x50); let x52: u32 = (x43 + (x44 as u32)); let x53: u32 = (x42 + x52); let x54: u32 = (x41 + x53); let x55: u32 = (x39 + (x40 as u32)); let x56: u32 = (x38 + x55); let x57: u32 = (x37 + x56); let x58: u32 = (x35 + (x36 as u32)); let x59: u32 = (x34 + x58); let x60: u32 = (x33 + x59); let x61: u32 = (x31 + (x32 as u32)); let x62: u32 = (x30 + x61); let x63: u32 = (x29 + x62); let x64: u32 = (x27 + (x28 as u32)); let x65: u32 = (x26 + x64); let x66: u32 = (x25 + x65); let x67: u32 = (x23 + (x24 as u32)); let x68: u32 = (x22 + x67); let x69: u32 = (x21 + x68); let x70: u32 = (x19 + (x20 as u32)); let x71: u32 = (x18 + x70); let x72: u32 = (x17 + x71); let x73: u32 = (x15 + (x16 as u32)); let x74: u32 = (x14 + x73); let x75: u32 = (x13 + x74); let x76: u32 = (x11 + (x12 as u32)); let x77: u32 = (x10 + x76); let x78: u32 = (x9 + x77); let x79: u32 = (x7 + (x8 as u32)); let x80: u32 = (x6 + x79); let x81: u32 = (x5 + x80); let x82: u32 = (x3 + (x4 as u32)); let x83: u32 = (x2 + x82); let x84: u32 = (x1 + x83); out1[0] = x51; out1[1] = x54; out1[2] = x57; out1[3] = x60; out1[4] = x63; out1[5] = x66; out1[6] = x69; out1[7] = x72; out1[8] = x75; out1[9] = x78; out1[10] = x81; out1[11] = x84; out1 } #[doc = " The function fiat_p384_set_one returns the field element one in the Montgomery domain."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = 1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_set_one() -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 12]; out1[0] = (0x1 as u32); out1[1] = 0xffffffff; out1[2] = 0xffffffff; out1[3] = (0x0 as u32); out1[4] = (0x1 as u32); out1[5] = (0x0 as u32); out1[6] = (0x0 as u32); out1[7] = (0x0 as u32); out1[8] = (0x0 as u32); out1[9] = (0x0 as u32); out1[10] = (0x0 as u32); out1[11] = (0x0 as u32); out1 } #[doc = " The function fiat_p384_msat returns the saturated representation of the prime modulus."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " twos_complement_eval out1 = m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_msat() -> [u32; 13] { let mut out1: [u32; 13] = [0; 13]; out1[0] = 0xffffffff; out1[1] = (0x0 as u32); out1[2] = (0x0 as u32); out1[3] = 0xffffffff; out1[4] = 0xfffffffe; out1[5] = 0xffffffff; out1[6] = 0xffffffff; out1[7] = 0xffffffff; out1[8] = 0xffffffff; out1[9] = 0xffffffff; out1[10] = 0xffffffff; out1[11] = 0xffffffff; out1[12] = (0x0 as u32); out1 } #[doc = " The function fiat_p384_divstep computes a divstep."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg4 < m"] #[doc = " 0 ≤ eval arg5 < m"] #[doc = " Postconditions:"] #[doc = " out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1)"] #[doc = " twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2)"] #[doc = " twos_complement_eval out3 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then ⌊(twos_complement_eval arg3 - twos_complement_eval arg2) / 2⌋ else ⌊(twos_complement_eval arg3 + (twos_complement_eval arg3 mod 2) * twos_complement_eval arg2) / 2⌋)"] #[doc = " eval (from_montgomery out4) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (2 * eval (from_montgomery arg5)) mod m else (2 * eval (from_montgomery arg4)) mod m)"] #[doc = " eval (from_montgomery out5) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (eval (from_montgomery arg4) - eval (from_montgomery arg4)) mod m else (eval (from_montgomery arg5) + (twos_complement_eval arg3 mod 2) * eval (from_montgomery arg4)) mod m)"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out2 < m"] #[doc = " 0 ≤ eval out3 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffff]"] #[doc = " arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg4: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg5: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out4: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out5: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_divstep( arg1: u32, arg2: &[u32; 13], arg3: &[u32; 13], arg4: &[u32; 12], arg5: &[u32; 12], ) -> (u32, [u32; 13], [u32; 13], [u32; 12], [u32; 12]) { let mut out1: u32 = 0; let mut out2: [u32; 13] = [0; 13]; let mut out3: [u32; 13] = [0; 13]; let mut out4: [u32; 12] = [0; 12]; let mut out5: [u32; 12] = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_addcarryx_u32(0x0, (!arg1), (0x1 as u32)); let x3: fiat_p384_u1 = (((x1 >> 31) as fiat_p384_u1) & (((arg3[0]) & (0x1 as u32)) as fiat_p384_u1)); let mut x4: u32 = 0; let mut x5: fiat_p384_u1 = 0; let (x4, x5) = fiat_p384_addcarryx_u32(0x0, (!arg1), (0x1 as u32)); let mut x6: u32 = 0; let (x6) = fiat_p384_cmovznz_u32(x3, arg1, x4); let mut x7: u32 = 0; let (x7) = fiat_p384_cmovznz_u32(x3, (arg2[0]), (arg3[0])); let mut x8: u32 = 0; let (x8) = fiat_p384_cmovznz_u32(x3, (arg2[1]), (arg3[1])); let mut x9: u32 = 0; let (x9) = fiat_p384_cmovznz_u32(x3, (arg2[2]), (arg3[2])); let mut x10: u32 = 0; let (x10) = fiat_p384_cmovznz_u32(x3, (arg2[3]), (arg3[3])); let mut x11: u32 = 0; let (x11) = fiat_p384_cmovznz_u32(x3, (arg2[4]), (arg3[4])); let mut x12: u32 = 0; let (x12) = fiat_p384_cmovznz_u32(x3, (arg2[5]), (arg3[5])); let mut x13: u32 = 0; let (x13) = fiat_p384_cmovznz_u32(x3, (arg2[6]), (arg3[6])); let mut x14: u32 = 0; let (x14) = fiat_p384_cmovznz_u32(x3, (arg2[7]), (arg3[7])); let mut x15: u32 = 0; let (x15) = fiat_p384_cmovznz_u32(x3, (arg2[8]), (arg3[8])); let mut x16: u32 = 0; let (x16) = fiat_p384_cmovznz_u32(x3, (arg2[9]), (arg3[9])); let mut x17: u32 = 0; let (x17) = fiat_p384_cmovznz_u32(x3, (arg2[10]), (arg3[10])); let mut x18: u32 = 0; let (x18) = fiat_p384_cmovznz_u32(x3, (arg2[11]), (arg3[11])); let mut x19: u32 = 0; let (x19) = fiat_p384_cmovznz_u32(x3, (arg2[12]), (arg3[12])); let mut x20: u32 = 0; let mut x21: fiat_p384_u1 = 0; let (x20, x21) = fiat_p384_addcarryx_u32(0x0, (0x1 as u32), (!(arg2[0]))); let mut x22: u32 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u32(x21, (0x0 as u32), (!(arg2[1]))); let mut x24: u32 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u32(x23, (0x0 as u32), (!(arg2[2]))); let mut x26: u32 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u32(x25, (0x0 as u32), (!(arg2[3]))); let mut x28: u32 = 0; let mut x29: fiat_p384_u1 = 0; let (x28, x29) = fiat_p384_addcarryx_u32(x27, (0x0 as u32), (!(arg2[4]))); let mut x30: u32 = 0; let mut x31: fiat_p384_u1 = 0; let (x30, x31) = fiat_p384_addcarryx_u32(x29, (0x0 as u32), (!(arg2[5]))); let mut x32: u32 = 0; let mut x33: fiat_p384_u1 = 0; let (x32, x33) = fiat_p384_addcarryx_u32(x31, (0x0 as u32), (!(arg2[6]))); let mut x34: u32 = 0; let mut x35: fiat_p384_u1 = 0; let (x34, x35) = fiat_p384_addcarryx_u32(x33, (0x0 as u32), (!(arg2[7]))); let mut x36: u32 = 0; let mut x37: fiat_p384_u1 = 0; let (x36, x37) = fiat_p384_addcarryx_u32(x35, (0x0 as u32), (!(arg2[8]))); let mut x38: u32 = 0; let mut x39: fiat_p384_u1 = 0; let (x38, x39) = fiat_p384_addcarryx_u32(x37, (0x0 as u32), (!(arg2[9]))); let mut x40: u32 = 0; let mut x41: fiat_p384_u1 = 0; let (x40, x41) = fiat_p384_addcarryx_u32(x39, (0x0 as u32), (!(arg2[10]))); let mut x42: u32 = 0; let mut x43: fiat_p384_u1 = 0; let (x42, x43) = fiat_p384_addcarryx_u32(x41, (0x0 as u32), (!(arg2[11]))); let mut x44: u32 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u32(x43, (0x0 as u32), (!(arg2[12]))); let mut x46: u32 = 0; let (x46) = fiat_p384_cmovznz_u32(x3, (arg3[0]), x20); let mut x47: u32 = 0; let (x47) = fiat_p384_cmovznz_u32(x3, (arg3[1]), x22); let mut x48: u32 = 0; let (x48) = fiat_p384_cmovznz_u32(x3, (arg3[2]), x24); let mut x49: u32 = 0; let (x49) = fiat_p384_cmovznz_u32(x3, (arg3[3]), x26); let mut x50: u32 = 0; let (x50) = fiat_p384_cmovznz_u32(x3, (arg3[4]), x28); let mut x51: u32 = 0; let (x51) = fiat_p384_cmovznz_u32(x3, (arg3[5]), x30); let mut x52: u32 = 0; let (x52) = fiat_p384_cmovznz_u32(x3, (arg3[6]), x32); let mut x53: u32 = 0; let (x53) = fiat_p384_cmovznz_u32(x3, (arg3[7]), x34); let mut x54: u32 = 0; let (x54) = fiat_p384_cmovznz_u32(x3, (arg3[8]), x36); let mut x55: u32 = 0; let (x55) = fiat_p384_cmovznz_u32(x3, (arg3[9]), x38); let mut x56: u32 = 0; let (x56) = fiat_p384_cmovznz_u32(x3, (arg3[10]), x40); let mut x57: u32 = 0; let (x57) = fiat_p384_cmovznz_u32(x3, (arg3[11]), x42); let mut x58: u32 = 0; let (x58) = fiat_p384_cmovznz_u32(x3, (arg3[12]), x44); let mut x59: u32 = 0; let (x59) = fiat_p384_cmovznz_u32(x3, (arg4[0]), (arg5[0])); let mut x60: u32 = 0; let (x60) = fiat_p384_cmovznz_u32(x3, (arg4[1]), (arg5[1])); let mut x61: u32 = 0; let (x61) = fiat_p384_cmovznz_u32(x3, (arg4[2]), (arg5[2])); let mut x62: u32 = 0; let (x62) = fiat_p384_cmovznz_u32(x3, (arg4[3]), (arg5[3])); let mut x63: u32 = 0; let (x63) = fiat_p384_cmovznz_u32(x3, (arg4[4]), (arg5[4])); let mut x64: u32 = 0; let (x64) = fiat_p384_cmovznz_u32(x3, (arg4[5]), (arg5[5])); let mut x65: u32 = 0; let (x65) = fiat_p384_cmovznz_u32(x3, (arg4[6]), (arg5[6])); let mut x66: u32 = 0; let (x66) = fiat_p384_cmovznz_u32(x3, (arg4[7]), (arg5[7])); let mut x67: u32 = 0; let (x67) = fiat_p384_cmovznz_u32(x3, (arg4[8]), (arg5[8])); let mut x68: u32 = 0; let (x68) = fiat_p384_cmovznz_u32(x3, (arg4[9]), (arg5[9])); let mut x69: u32 = 0; let (x69) = fiat_p384_cmovznz_u32(x3, (arg4[10]), (arg5[10])); let mut x70: u32 = 0; let (x70) = fiat_p384_cmovznz_u32(x3, (arg4[11]), (arg5[11])); let mut x71: u32 = 0; let mut x72: fiat_p384_u1 = 0; let (x71, x72) = fiat_p384_addcarryx_u32(0x0, x59, x59); let mut x73: u32 = 0; let mut x74: fiat_p384_u1 = 0; let (x73, x74) = fiat_p384_addcarryx_u32(x72, x60, x60); let mut x75: u32 = 0; let mut x76: fiat_p384_u1 = 0; let (x75, x76) = fiat_p384_addcarryx_u32(x74, x61, x61); let mut x77: u32 = 0; let mut x78: fiat_p384_u1 = 0; let (x77, x78) = fiat_p384_addcarryx_u32(x76, x62, x62); let mut x79: u32 = 0; let mut x80: fiat_p384_u1 = 0; let (x79, x80) = fiat_p384_addcarryx_u32(x78, x63, x63); let mut x81: u32 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_addcarryx_u32(x80, x64, x64); let mut x83: u32 = 0; let mut x84: fiat_p384_u1 = 0; let (x83, x84) = fiat_p384_addcarryx_u32(x82, x65, x65); let mut x85: u32 = 0; let mut x86: fiat_p384_u1 = 0; let (x85, x86) = fiat_p384_addcarryx_u32(x84, x66, x66); let mut x87: u32 = 0; let mut x88: fiat_p384_u1 = 0; let (x87, x88) = fiat_p384_addcarryx_u32(x86, x67, x67); let mut x89: u32 = 0; let mut x90: fiat_p384_u1 = 0; let (x89, x90) = fiat_p384_addcarryx_u32(x88, x68, x68); let mut x91: u32 = 0; let mut x92: fiat_p384_u1 = 0; let (x91, x92) = fiat_p384_addcarryx_u32(x90, x69, x69); let mut x93: u32 = 0; let mut x94: fiat_p384_u1 = 0; let (x93, x94) = fiat_p384_addcarryx_u32(x92, x70, x70); let mut x95: u32 = 0; let mut x96: fiat_p384_u1 = 0; let (x95, x96) = fiat_p384_subborrowx_u32(0x0, x71, 0xffffffff); let mut x97: u32 = 0; let mut x98: fiat_p384_u1 = 0; let (x97, x98) = fiat_p384_subborrowx_u32(x96, x73, (0x0 as u32)); let mut x99: u32 = 0; let mut x100: fiat_p384_u1 = 0; let (x99, x100) = fiat_p384_subborrowx_u32(x98, x75, (0x0 as u32)); let mut x101: u32 = 0; let mut x102: fiat_p384_u1 = 0; let (x101, x102) = fiat_p384_subborrowx_u32(x100, x77, 0xffffffff); let mut x103: u32 = 0; let mut x104: fiat_p384_u1 = 0; let (x103, x104) = fiat_p384_subborrowx_u32(x102, x79, 0xfffffffe); let mut x105: u32 = 0; let mut x106: fiat_p384_u1 = 0; let (x105, x106) = fiat_p384_subborrowx_u32(x104, x81, 0xffffffff); let mut x107: u32 = 0; let mut x108: fiat_p384_u1 = 0; let (x107, x108) = fiat_p384_subborrowx_u32(x106, x83, 0xffffffff); let mut x109: u32 = 0; let mut x110: fiat_p384_u1 = 0; let (x109, x110) = fiat_p384_subborrowx_u32(x108, x85, 0xffffffff); let mut x111: u32 = 0; let mut x112: fiat_p384_u1 = 0; let (x111, x112) = fiat_p384_subborrowx_u32(x110, x87, 0xffffffff); let mut x113: u32 = 0; let mut x114: fiat_p384_u1 = 0; let (x113, x114) = fiat_p384_subborrowx_u32(x112, x89, 0xffffffff); let mut x115: u32 = 0; let mut x116: fiat_p384_u1 = 0; let (x115, x116) = fiat_p384_subborrowx_u32(x114, x91, 0xffffffff); let mut x117: u32 = 0; let mut x118: fiat_p384_u1 = 0; let (x117, x118) = fiat_p384_subborrowx_u32(x116, x93, 0xffffffff); let mut x119: u32 = 0; let mut x120: fiat_p384_u1 = 0; let (x119, x120) = fiat_p384_subborrowx_u32(x118, (x94 as u32), (0x0 as u32)); let x121: u32 = (arg4[11]); let x122: u32 = (arg4[10]); let x123: u32 = (arg4[9]); let x124: u32 = (arg4[8]); let x125: u32 = (arg4[7]); let x126: u32 = (arg4[6]); let x127: u32 = (arg4[5]); let x128: u32 = (arg4[4]); let x129: u32 = (arg4[3]); let x130: u32 = (arg4[2]); let x131: u32 = (arg4[1]); let x132: u32 = (arg4[0]); let mut x133: u32 = 0; let mut x134: fiat_p384_u1 = 0; let (x133, x134) = fiat_p384_subborrowx_u32(0x0, (0x0 as u32), x132); let mut x135: u32 = 0; let mut x136: fiat_p384_u1 = 0; let (x135, x136) = fiat_p384_subborrowx_u32(x134, (0x0 as u32), x131); let mut x137: u32 = 0; let mut x138: fiat_p384_u1 = 0; let (x137, x138) = fiat_p384_subborrowx_u32(x136, (0x0 as u32), x130); let mut x139: u32 = 0; let mut x140: fiat_p384_u1 = 0; let (x139, x140) = fiat_p384_subborrowx_u32(x138, (0x0 as u32), x129); let mut x141: u32 = 0; let mut x142: fiat_p384_u1 = 0; let (x141, x142) = fiat_p384_subborrowx_u32(x140, (0x0 as u32), x128); let mut x143: u32 = 0; let mut x144: fiat_p384_u1 = 0; let (x143, x144) = fiat_p384_subborrowx_u32(x142, (0x0 as u32), x127); let mut x145: u32 = 0; let mut x146: fiat_p384_u1 = 0; let (x145, x146) = fiat_p384_subborrowx_u32(x144, (0x0 as u32), x126); let mut x147: u32 = 0; let mut x148: fiat_p384_u1 = 0; let (x147, x148) = fiat_p384_subborrowx_u32(x146, (0x0 as u32), x125); let mut x149: u32 = 0; let mut x150: fiat_p384_u1 = 0; let (x149, x150) = fiat_p384_subborrowx_u32(x148, (0x0 as u32), x124); let mut x151: u32 = 0; let mut x152: fiat_p384_u1 = 0; let (x151, x152) = fiat_p384_subborrowx_u32(x150, (0x0 as u32), x123); let mut x153: u32 = 0; let mut x154: fiat_p384_u1 = 0; let (x153, x154) = fiat_p384_subborrowx_u32(x152, (0x0 as u32), x122); let mut x155: u32 = 0; let mut x156: fiat_p384_u1 = 0; let (x155, x156) = fiat_p384_subborrowx_u32(x154, (0x0 as u32), x121); let mut x157: u32 = 0; let (x157) = fiat_p384_cmovznz_u32(x156, (0x0 as u32), 0xffffffff); let mut x158: u32 = 0; let mut x159: fiat_p384_u1 = 0; let (x158, x159) = fiat_p384_addcarryx_u32(0x0, x133, x157); let mut x160: u32 = 0; let mut x161: fiat_p384_u1 = 0; let (x160, x161) = fiat_p384_addcarryx_u32(x159, x135, (0x0 as u32)); let mut x162: u32 = 0; let mut x163: fiat_p384_u1 = 0; let (x162, x163) = fiat_p384_addcarryx_u32(x161, x137, (0x0 as u32)); let mut x164: u32 = 0; let mut x165: fiat_p384_u1 = 0; let (x164, x165) = fiat_p384_addcarryx_u32(x163, x139, x157); let mut x166: u32 = 0; let mut x167: fiat_p384_u1 = 0; let (x166, x167) = fiat_p384_addcarryx_u32(x165, x141, (x157 & 0xfffffffe)); let mut x168: u32 = 0; let mut x169: fiat_p384_u1 = 0; let (x168, x169) = fiat_p384_addcarryx_u32(x167, x143, x157); let mut x170: u32 = 0; let mut x171: fiat_p384_u1 = 0; let (x170, x171) = fiat_p384_addcarryx_u32(x169, x145, x157); let mut x172: u32 = 0; let mut x173: fiat_p384_u1 = 0; let (x172, x173) = fiat_p384_addcarryx_u32(x171, x147, x157); let mut x174: u32 = 0; let mut x175: fiat_p384_u1 = 0; let (x174, x175) = fiat_p384_addcarryx_u32(x173, x149, x157); let mut x176: u32 = 0; let mut x177: fiat_p384_u1 = 0; let (x176, x177) = fiat_p384_addcarryx_u32(x175, x151, x157); let mut x178: u32 = 0; let mut x179: fiat_p384_u1 = 0; let (x178, x179) = fiat_p384_addcarryx_u32(x177, x153, x157); let mut x180: u32 = 0; let mut x181: fiat_p384_u1 = 0; let (x180, x181) = fiat_p384_addcarryx_u32(x179, x155, x157); let mut x182: u32 = 0; let (x182) = fiat_p384_cmovznz_u32(x3, (arg5[0]), x158); let mut x183: u32 = 0; let (x183) = fiat_p384_cmovznz_u32(x3, (arg5[1]), x160); let mut x184: u32 = 0; let (x184) = fiat_p384_cmovznz_u32(x3, (arg5[2]), x162); let mut x185: u32 = 0; let (x185) = fiat_p384_cmovznz_u32(x3, (arg5[3]), x164); let mut x186: u32 = 0; let (x186) = fiat_p384_cmovznz_u32(x3, (arg5[4]), x166); let mut x187: u32 = 0; let (x187) = fiat_p384_cmovznz_u32(x3, (arg5[5]), x168); let mut x188: u32 = 0; let (x188) = fiat_p384_cmovznz_u32(x3, (arg5[6]), x170); let mut x189: u32 = 0; let (x189) = fiat_p384_cmovznz_u32(x3, (arg5[7]), x172); let mut x190: u32 = 0; let (x190) = fiat_p384_cmovznz_u32(x3, (arg5[8]), x174); let mut x191: u32 = 0; let (x191) = fiat_p384_cmovznz_u32(x3, (arg5[9]), x176); let mut x192: u32 = 0; let (x192) = fiat_p384_cmovznz_u32(x3, (arg5[10]), x178); let mut x193: u32 = 0; let (x193) = fiat_p384_cmovznz_u32(x3, (arg5[11]), x180); let x194: fiat_p384_u1 = ((x46 & (0x1 as u32)) as fiat_p384_u1); let mut x195: u32 = 0; let (x195) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x7); let mut x196: u32 = 0; let (x196) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x8); let mut x197: u32 = 0; let (x197) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x9); let mut x198: u32 = 0; let (x198) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x10); let mut x199: u32 = 0; let (x199) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x11); let mut x200: u32 = 0; let (x200) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x12); let mut x201: u32 = 0; let (x201) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x13); let mut x202: u32 = 0; let (x202) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x14); let mut x203: u32 = 0; let (x203) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x15); let mut x204: u32 = 0; let (x204) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x16); let mut x205: u32 = 0; let (x205) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x17); let mut x206: u32 = 0; let (x206) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x18); let mut x207: u32 = 0; let (x207) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x19); let mut x208: u32 = 0; let mut x209: fiat_p384_u1 = 0; let (x208, x209) = fiat_p384_addcarryx_u32(0x0, x46, x195); let mut x210: u32 = 0; let mut x211: fiat_p384_u1 = 0; let (x210, x211) = fiat_p384_addcarryx_u32(x209, x47, x196); let mut x212: u32 = 0; let mut x213: fiat_p384_u1 = 0; let (x212, x213) = fiat_p384_addcarryx_u32(x211, x48, x197); let mut x214: u32 = 0; let mut x215: fiat_p384_u1 = 0; let (x214, x215) = fiat_p384_addcarryx_u32(x213, x49, x198); let mut x216: u32 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u32(x215, x50, x199); let mut x218: u32 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u32(x217, x51, x200); let mut x220: u32 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u32(x219, x52, x201); let mut x222: u32 = 0; let mut x223: fiat_p384_u1 = 0; let (x222, x223) = fiat_p384_addcarryx_u32(x221, x53, x202); let mut x224: u32 = 0; let mut x225: fiat_p384_u1 = 0; let (x224, x225) = fiat_p384_addcarryx_u32(x223, x54, x203); let mut x226: u32 = 0; let mut x227: fiat_p384_u1 = 0; let (x226, x227) = fiat_p384_addcarryx_u32(x225, x55, x204); let mut x228: u32 = 0; let mut x229: fiat_p384_u1 = 0; let (x228, x229) = fiat_p384_addcarryx_u32(x227, x56, x205); let mut x230: u32 = 0; let mut x231: fiat_p384_u1 = 0; let (x230, x231) = fiat_p384_addcarryx_u32(x229, x57, x206); let mut x232: u32 = 0; let mut x233: fiat_p384_u1 = 0; let (x232, x233) = fiat_p384_addcarryx_u32(x231, x58, x207); let mut x234: u32 = 0; let (x234) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x59); let mut x235: u32 = 0; let (x235) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x60); let mut x236: u32 = 0; let (x236) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x61); let mut x237: u32 = 0; let (x237) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x62); let mut x238: u32 = 0; let (x238) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x63); let mut x239: u32 = 0; let (x239) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x64); let mut x240: u32 = 0; let (x240) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x65); let mut x241: u32 = 0; let (x241) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x66); let mut x242: u32 = 0; let (x242) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x67); let mut x243: u32 = 0; let (x243) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x68); let mut x244: u32 = 0; let (x244) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x69); let mut x245: u32 = 0; let (x245) = fiat_p384_cmovznz_u32(x194, (0x0 as u32), x70); let mut x246: u32 = 0; let mut x247: fiat_p384_u1 = 0; let (x246, x247) = fiat_p384_addcarryx_u32(0x0, x182, x234); let mut x248: u32 = 0; let mut x249: fiat_p384_u1 = 0; let (x248, x249) = fiat_p384_addcarryx_u32(x247, x183, x235); let mut x250: u32 = 0; let mut x251: fiat_p384_u1 = 0; let (x250, x251) = fiat_p384_addcarryx_u32(x249, x184, x236); let mut x252: u32 = 0; let mut x253: fiat_p384_u1 = 0; let (x252, x253) = fiat_p384_addcarryx_u32(x251, x185, x237); let mut x254: u32 = 0; let mut x255: fiat_p384_u1 = 0; let (x254, x255) = fiat_p384_addcarryx_u32(x253, x186, x238); let mut x256: u32 = 0; let mut x257: fiat_p384_u1 = 0; let (x256, x257) = fiat_p384_addcarryx_u32(x255, x187, x239); let mut x258: u32 = 0; let mut x259: fiat_p384_u1 = 0; let (x258, x259) = fiat_p384_addcarryx_u32(x257, x188, x240); let mut x260: u32 = 0; let mut x261: fiat_p384_u1 = 0; let (x260, x261) = fiat_p384_addcarryx_u32(x259, x189, x241); let mut x262: u32 = 0; let mut x263: fiat_p384_u1 = 0; let (x262, x263) = fiat_p384_addcarryx_u32(x261, x190, x242); let mut x264: u32 = 0; let mut x265: fiat_p384_u1 = 0; let (x264, x265) = fiat_p384_addcarryx_u32(x263, x191, x243); let mut x266: u32 = 0; let mut x267: fiat_p384_u1 = 0; let (x266, x267) = fiat_p384_addcarryx_u32(x265, x192, x244); let mut x268: u32 = 0; let mut x269: fiat_p384_u1 = 0; let (x268, x269) = fiat_p384_addcarryx_u32(x267, x193, x245); let mut x270: u32 = 0; let mut x271: fiat_p384_u1 = 0; let (x270, x271) = fiat_p384_subborrowx_u32(0x0, x246, 0xffffffff); let mut x272: u32 = 0; let mut x273: fiat_p384_u1 = 0; let (x272, x273) = fiat_p384_subborrowx_u32(x271, x248, (0x0 as u32)); let mut x274: u32 = 0; let mut x275: fiat_p384_u1 = 0; let (x274, x275) = fiat_p384_subborrowx_u32(x273, x250, (0x0 as u32)); let mut x276: u32 = 0; let mut x277: fiat_p384_u1 = 0; let (x276, x277) = fiat_p384_subborrowx_u32(x275, x252, 0xffffffff); let mut x278: u32 = 0; let mut x279: fiat_p384_u1 = 0; let (x278, x279) = fiat_p384_subborrowx_u32(x277, x254, 0xfffffffe); let mut x280: u32 = 0; let mut x281: fiat_p384_u1 = 0; let (x280, x281) = fiat_p384_subborrowx_u32(x279, x256, 0xffffffff); let mut x282: u32 = 0; let mut x283: fiat_p384_u1 = 0; let (x282, x283) = fiat_p384_subborrowx_u32(x281, x258, 0xffffffff); let mut x284: u32 = 0; let mut x285: fiat_p384_u1 = 0; let (x284, x285) = fiat_p384_subborrowx_u32(x283, x260, 0xffffffff); let mut x286: u32 = 0; let mut x287: fiat_p384_u1 = 0; let (x286, x287) = fiat_p384_subborrowx_u32(x285, x262, 0xffffffff); let mut x288: u32 = 0; let mut x289: fiat_p384_u1 = 0; let (x288, x289) = fiat_p384_subborrowx_u32(x287, x264, 0xffffffff); let mut x290: u32 = 0; let mut x291: fiat_p384_u1 = 0; let (x290, x291) = fiat_p384_subborrowx_u32(x289, x266, 0xffffffff); let mut x292: u32 = 0; let mut x293: fiat_p384_u1 = 0; let (x292, x293) = fiat_p384_subborrowx_u32(x291, x268, 0xffffffff); let mut x294: u32 = 0; let mut x295: fiat_p384_u1 = 0; let (x294, x295) = fiat_p384_subborrowx_u32(x293, (x269 as u32), (0x0 as u32)); let mut x296: u32 = 0; let mut x297: fiat_p384_u1 = 0; let (x296, x297) = fiat_p384_addcarryx_u32(0x0, x6, (0x1 as u32)); let x298: u32 = ((x208 >> 1) | ((x210 << 31) & 0xffffffff)); let x299: u32 = ((x210 >> 1) | ((x212 << 31) & 0xffffffff)); let x300: u32 = ((x212 >> 1) | ((x214 << 31) & 0xffffffff)); let x301: u32 = ((x214 >> 1) | ((x216 << 31) & 0xffffffff)); let x302: u32 = ((x216 >> 1) | ((x218 << 31) & 0xffffffff)); let x303: u32 = ((x218 >> 1) | ((x220 << 31) & 0xffffffff)); let x304: u32 = ((x220 >> 1) | ((x222 << 31) & 0xffffffff)); let x305: u32 = ((x222 >> 1) | ((x224 << 31) & 0xffffffff)); let x306: u32 = ((x224 >> 1) | ((x226 << 31) & 0xffffffff)); let x307: u32 = ((x226 >> 1) | ((x228 << 31) & 0xffffffff)); let x308: u32 = ((x228 >> 1) | ((x230 << 31) & 0xffffffff)); let x309: u32 = ((x230 >> 1) | ((x232 << 31) & 0xffffffff)); let x310: u32 = ((x232 & 0x80000000) | (x232 >> 1)); let mut x311: u32 = 0; let (x311) = fiat_p384_cmovznz_u32(x120, x95, x71); let mut x312: u32 = 0; let (x312) = fiat_p384_cmovznz_u32(x120, x97, x73); let mut x313: u32 = 0; let (x313) = fiat_p384_cmovznz_u32(x120, x99, x75); let mut x314: u32 = 0; let (x314) = fiat_p384_cmovznz_u32(x120, x101, x77); let mut x315: u32 = 0; let (x315) = fiat_p384_cmovznz_u32(x120, x103, x79); let mut x316: u32 = 0; let (x316) = fiat_p384_cmovznz_u32(x120, x105, x81); let mut x317: u32 = 0; let (x317) = fiat_p384_cmovznz_u32(x120, x107, x83); let mut x318: u32 = 0; let (x318) = fiat_p384_cmovznz_u32(x120, x109, x85); let mut x319: u32 = 0; let (x319) = fiat_p384_cmovznz_u32(x120, x111, x87); let mut x320: u32 = 0; let (x320) = fiat_p384_cmovznz_u32(x120, x113, x89); let mut x321: u32 = 0; let (x321) = fiat_p384_cmovznz_u32(x120, x115, x91); let mut x322: u32 = 0; let (x322) = fiat_p384_cmovznz_u32(x120, x117, x93); let mut x323: u32 = 0; let (x323) = fiat_p384_cmovznz_u32(x295, x270, x246); let mut x324: u32 = 0; let (x324) = fiat_p384_cmovznz_u32(x295, x272, x248); let mut x325: u32 = 0; let (x325) = fiat_p384_cmovznz_u32(x295, x274, x250); let mut x326: u32 = 0; let (x326) = fiat_p384_cmovznz_u32(x295, x276, x252); let mut x327: u32 = 0; let (x327) = fiat_p384_cmovznz_u32(x295, x278, x254); let mut x328: u32 = 0; let (x328) = fiat_p384_cmovznz_u32(x295, x280, x256); let mut x329: u32 = 0; let (x329) = fiat_p384_cmovznz_u32(x295, x282, x258); let mut x330: u32 = 0; let (x330) = fiat_p384_cmovznz_u32(x295, x284, x260); let mut x331: u32 = 0; let (x331) = fiat_p384_cmovznz_u32(x295, x286, x262); let mut x332: u32 = 0; let (x332) = fiat_p384_cmovznz_u32(x295, x288, x264); let mut x333: u32 = 0; let (x333) = fiat_p384_cmovznz_u32(x295, x290, x266); let mut x334: u32 = 0; let (x334) = fiat_p384_cmovznz_u32(x295, x292, x268); out1 = x296; out2[0] = x7; out2[1] = x8; out2[2] = x9; out2[3] = x10; out2[4] = x11; out2[5] = x12; out2[6] = x13; out2[7] = x14; out2[8] = x15; out2[9] = x16; out2[10] = x17; out2[11] = x18; out2[12] = x19; out3[0] = x298; out3[1] = x299; out3[2] = x300; out3[3] = x301; out3[4] = x302; out3[5] = x303; out3[6] = x304; out3[7] = x305; out3[8] = x306; out3[9] = x307; out3[10] = x308; out3[11] = x309; out3[12] = x310; out4[0] = x311; out4[1] = x312; out4[2] = x313; out4[3] = x314; out4[4] = x315; out4[5] = x316; out4[6] = x317; out4[7] = x318; out4[8] = x319; out4[9] = x320; out4[10] = x321; out4[11] = x322; out5[0] = x323; out5[1] = x324; out5[2] = x325; out5[3] = x326; out5[4] = x327; out5[5] = x328; out5[6] = x329; out5[7] = x330; out5[8] = x331; out5[9] = x332; out5[10] = x333; out5[11] = x334; (out1, out2, out3, out4, out5) } #[doc = " The function fiat_p384_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form)."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) = ⌊(m - 1) / 2⌋^(if ⌊log2 m⌋ + 1 < 46 then ⌊(49 * (⌊log2 m⌋ + 1) + 80) / 17⌋ else ⌊(49 * (⌊log2 m⌋ + 1) + 57) / 17⌋)"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_divstep_precomp() -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; out1[0] = 0xfff18fff; out1[1] = 0xfff69400; out1[2] = 0xffffd3ff; out1[3] = 0x2b7fe; out1[4] = 0xfffe97ff; out1[5] = 0xfffedbff; out1[6] = 0x2fff; out1[7] = 0x28400; out1[8] = 0x50400; out1[9] = 0x60400; out1[10] = 0x38000; out1[11] = 0xfffc4800; out1 } p384-0.13.0/src/arithmetic/field/p384_64.rs000064400000000000000000004544641046102023000160040ustar 00000000000000#![doc = " fiat-crypto output postprocessed by fiat-constify: https://github.com/rustcrypto/utils"] #![doc = " Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Rust --inline p384 64 '2^384 - 2^128 - 2^96 + 2^32 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp"] #![doc = " curve description: p384"] #![doc = " machine_wordsize = 64 (from \"64\")"] #![doc = " requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp"] #![doc = " m = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff (from \"2^384 - 2^128 - 2^96 + 2^32 - 1\")"] #![doc = ""] #![doc = " NOTE: In addition to the bounds specified above each function, all"] #![doc = " functions synthesized for this Montgomery arithmetic require the"] #![doc = " input to be strictly less than the prime modulus (m), and also"] #![doc = " require the input to be in the unique saturated representation."] #![doc = " All functions also ensure that these two properties are true of"] #![doc = " return values."] #![doc = ""] #![doc = " Computed values:"] #![doc = " eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140)"] #![doc = " 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)"] #![doc = " twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) in"] #![doc = " if x1 & (2^384-1) < 2^383 then x1 & (2^384-1) else (x1 & (2^384-1)) - 2^384"] #![allow(unused_parens)] #![allow(non_camel_case_types)] #![allow( dead_code, rustdoc::bare_urls, rustdoc::broken_intra_doc_links, unused_assignments, unused_mut, unused_variables )] pub type fiat_p384_u1 = u8; pub type fiat_p384_i1 = i8; pub type fiat_p384_u2 = u8; pub type fiat_p384_i2 = i8; pub type fiat_p384_montgomery_domain_field_element = [u64; 6]; pub type fiat_p384_non_montgomery_domain_field_element = [u64; 6]; #[doc = " The function fiat_p384_addcarryx_u64 is an addition with carry."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 + arg2 + arg3) mod 2^64"] #[doc = " out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_addcarryx_u64( arg1: fiat_p384_u1, arg2: u64, arg3: u64, ) -> (u64, fiat_p384_u1) { let mut out1: u64 = 0; let mut out2: fiat_p384_u1 = 0; let x1: u128 = (((arg1 as u128) + (arg2 as u128)) + (arg3 as u128)); let x2: u64 = ((x1 & (0xffffffffffffffff as u128)) as u64); let x3: fiat_p384_u1 = ((x1 >> 64) as fiat_p384_u1); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_subborrowx_u64 is a subtraction with borrow."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (-arg1 + arg2 + -arg3) mod 2^64"] #[doc = " out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_subborrowx_u64( arg1: fiat_p384_u1, arg2: u64, arg3: u64, ) -> (u64, fiat_p384_u1) { let mut out1: u64 = 0; let mut out2: fiat_p384_u1 = 0; let x1: i128 = (((arg2 as i128) - (arg1 as i128)) - (arg3 as i128)); let x2: fiat_p384_i1 = ((x1 >> 64) as fiat_p384_i1); let x3: u64 = ((x1 & (0xffffffffffffffff as i128)) as u64); out1 = x3; out2 = (((0x0 as fiat_p384_i2) - (x2 as fiat_p384_i2)) as fiat_p384_u1); (out1, out2) } #[doc = " The function fiat_p384_mulx_u64 is a multiplication, returning the full double-width result."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 * arg2) mod 2^64"] #[doc = " out2 = ⌊arg1 * arg2 / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0xffffffffffffffff]"] #[inline] pub const fn fiat_p384_mulx_u64(arg1: u64, arg2: u64) -> (u64, u64) { let mut out1: u64 = 0; let mut out2: u64 = 0; let x1: u128 = ((arg1 as u128) * (arg2 as u128)); let x2: u64 = ((x1 & (0xffffffffffffffff as u128)) as u64); let x3: u64 = ((x1 >> 64) as u64); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_cmovznz_u64 is a single-word conditional move."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[inline] pub const fn fiat_p384_cmovznz_u64(arg1: fiat_p384_u1, arg2: u64, arg3: u64) -> u64 { let mut out1: u64 = 0; let x1: fiat_p384_u1 = (!(!arg1)); let x2: u64 = ((((((0x0 as fiat_p384_i2) - (x1 as fiat_p384_i2)) as fiat_p384_i1) as i128) & (0xffffffffffffffff as i128)) as u64); let x3: u64 = ((x2 & arg3) | ((!x2) & arg2)); out1 = x3; out1 } #[doc = " The function fiat_p384_mul multiplies two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_mul( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_mulx_u64(x6, (arg2[5])); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_mulx_u64(x6, (arg2[4])); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_mulx_u64(x6, (arg2[3])); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_mulx_u64(x6, (arg2[2])); let mut x15: u64 = 0; let mut x16: u64 = 0; let (x15, x16) = fiat_p384_mulx_u64(x6, (arg2[1])); let mut x17: u64 = 0; let mut x18: u64 = 0; let (x17, x18) = fiat_p384_mulx_u64(x6, (arg2[0])); let mut x19: u64 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_addcarryx_u64(0x0, x18, x15); let mut x21: u64 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_addcarryx_u64(x20, x16, x13); let mut x23: u64 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_addcarryx_u64(x22, x14, x11); let mut x25: u64 = 0; let mut x26: fiat_p384_u1 = 0; let (x25, x26) = fiat_p384_addcarryx_u64(x24, x12, x9); let mut x27: u64 = 0; let mut x28: fiat_p384_u1 = 0; let (x27, x28) = fiat_p384_addcarryx_u64(x26, x10, x7); let x29: u64 = ((x28 as u64) + x8); let mut x30: u64 = 0; let mut x31: u64 = 0; let (x30, x31) = fiat_p384_mulx_u64(x17, 0x100000001); let mut x32: u64 = 0; let mut x33: u64 = 0; let (x32, x33) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x34: u64 = 0; let mut x35: u64 = 0; let (x34, x35) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x36: u64 = 0; let mut x37: u64 = 0; let (x36, x37) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x38: u64 = 0; let mut x39: u64 = 0; let (x38, x39) = fiat_p384_mulx_u64(x30, 0xfffffffffffffffe); let mut x40: u64 = 0; let mut x41: u64 = 0; let (x40, x41) = fiat_p384_mulx_u64(x30, 0xffffffff00000000); let mut x42: u64 = 0; let mut x43: u64 = 0; let (x42, x43) = fiat_p384_mulx_u64(x30, 0xffffffff); let mut x44: u64 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u64(0x0, x43, x40); let mut x46: u64 = 0; let mut x47: fiat_p384_u1 = 0; let (x46, x47) = fiat_p384_addcarryx_u64(x45, x41, x38); let mut x48: u64 = 0; let mut x49: fiat_p384_u1 = 0; let (x48, x49) = fiat_p384_addcarryx_u64(x47, x39, x36); let mut x50: u64 = 0; let mut x51: fiat_p384_u1 = 0; let (x50, x51) = fiat_p384_addcarryx_u64(x49, x37, x34); let mut x52: u64 = 0; let mut x53: fiat_p384_u1 = 0; let (x52, x53) = fiat_p384_addcarryx_u64(x51, x35, x32); let x54: u64 = ((x53 as u64) + x33); let mut x55: u64 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u64(0x0, x17, x42); let mut x57: u64 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u64(x56, x19, x44); let mut x59: u64 = 0; let mut x60: fiat_p384_u1 = 0; let (x59, x60) = fiat_p384_addcarryx_u64(x58, x21, x46); let mut x61: u64 = 0; let mut x62: fiat_p384_u1 = 0; let (x61, x62) = fiat_p384_addcarryx_u64(x60, x23, x48); let mut x63: u64 = 0; let mut x64: fiat_p384_u1 = 0; let (x63, x64) = fiat_p384_addcarryx_u64(x62, x25, x50); let mut x65: u64 = 0; let mut x66: fiat_p384_u1 = 0; let (x65, x66) = fiat_p384_addcarryx_u64(x64, x27, x52); let mut x67: u64 = 0; let mut x68: fiat_p384_u1 = 0; let (x67, x68) = fiat_p384_addcarryx_u64(x66, x29, x54); let mut x69: u64 = 0; let mut x70: u64 = 0; let (x69, x70) = fiat_p384_mulx_u64(x1, (arg2[5])); let mut x71: u64 = 0; let mut x72: u64 = 0; let (x71, x72) = fiat_p384_mulx_u64(x1, (arg2[4])); let mut x73: u64 = 0; let mut x74: u64 = 0; let (x73, x74) = fiat_p384_mulx_u64(x1, (arg2[3])); let mut x75: u64 = 0; let mut x76: u64 = 0; let (x75, x76) = fiat_p384_mulx_u64(x1, (arg2[2])); let mut x77: u64 = 0; let mut x78: u64 = 0; let (x77, x78) = fiat_p384_mulx_u64(x1, (arg2[1])); let mut x79: u64 = 0; let mut x80: u64 = 0; let (x79, x80) = fiat_p384_mulx_u64(x1, (arg2[0])); let mut x81: u64 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_addcarryx_u64(0x0, x80, x77); let mut x83: u64 = 0; let mut x84: fiat_p384_u1 = 0; let (x83, x84) = fiat_p384_addcarryx_u64(x82, x78, x75); let mut x85: u64 = 0; let mut x86: fiat_p384_u1 = 0; let (x85, x86) = fiat_p384_addcarryx_u64(x84, x76, x73); let mut x87: u64 = 0; let mut x88: fiat_p384_u1 = 0; let (x87, x88) = fiat_p384_addcarryx_u64(x86, x74, x71); let mut x89: u64 = 0; let mut x90: fiat_p384_u1 = 0; let (x89, x90) = fiat_p384_addcarryx_u64(x88, x72, x69); let x91: u64 = ((x90 as u64) + x70); let mut x92: u64 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u64(0x0, x57, x79); let mut x94: u64 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u64(x93, x59, x81); let mut x96: u64 = 0; let mut x97: fiat_p384_u1 = 0; let (x96, x97) = fiat_p384_addcarryx_u64(x95, x61, x83); let mut x98: u64 = 0; let mut x99: fiat_p384_u1 = 0; let (x98, x99) = fiat_p384_addcarryx_u64(x97, x63, x85); let mut x100: u64 = 0; let mut x101: fiat_p384_u1 = 0; let (x100, x101) = fiat_p384_addcarryx_u64(x99, x65, x87); let mut x102: u64 = 0; let mut x103: fiat_p384_u1 = 0; let (x102, x103) = fiat_p384_addcarryx_u64(x101, x67, x89); let mut x104: u64 = 0; let mut x105: fiat_p384_u1 = 0; let (x104, x105) = fiat_p384_addcarryx_u64(x103, (x68 as u64), x91); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_mulx_u64(x92, 0x100000001); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_mulx_u64(x106, 0xfffffffffffffffe); let mut x116: u64 = 0; let mut x117: u64 = 0; let (x116, x117) = fiat_p384_mulx_u64(x106, 0xffffffff00000000); let mut x118: u64 = 0; let mut x119: u64 = 0; let (x118, x119) = fiat_p384_mulx_u64(x106, 0xffffffff); let mut x120: u64 = 0; let mut x121: fiat_p384_u1 = 0; let (x120, x121) = fiat_p384_addcarryx_u64(0x0, x119, x116); let mut x122: u64 = 0; let mut x123: fiat_p384_u1 = 0; let (x122, x123) = fiat_p384_addcarryx_u64(x121, x117, x114); let mut x124: u64 = 0; let mut x125: fiat_p384_u1 = 0; let (x124, x125) = fiat_p384_addcarryx_u64(x123, x115, x112); let mut x126: u64 = 0; let mut x127: fiat_p384_u1 = 0; let (x126, x127) = fiat_p384_addcarryx_u64(x125, x113, x110); let mut x128: u64 = 0; let mut x129: fiat_p384_u1 = 0; let (x128, x129) = fiat_p384_addcarryx_u64(x127, x111, x108); let x130: u64 = ((x129 as u64) + x109); let mut x131: u64 = 0; let mut x132: fiat_p384_u1 = 0; let (x131, x132) = fiat_p384_addcarryx_u64(0x0, x92, x118); let mut x133: u64 = 0; let mut x134: fiat_p384_u1 = 0; let (x133, x134) = fiat_p384_addcarryx_u64(x132, x94, x120); let mut x135: u64 = 0; let mut x136: fiat_p384_u1 = 0; let (x135, x136) = fiat_p384_addcarryx_u64(x134, x96, x122); let mut x137: u64 = 0; let mut x138: fiat_p384_u1 = 0; let (x137, x138) = fiat_p384_addcarryx_u64(x136, x98, x124); let mut x139: u64 = 0; let mut x140: fiat_p384_u1 = 0; let (x139, x140) = fiat_p384_addcarryx_u64(x138, x100, x126); let mut x141: u64 = 0; let mut x142: fiat_p384_u1 = 0; let (x141, x142) = fiat_p384_addcarryx_u64(x140, x102, x128); let mut x143: u64 = 0; let mut x144: fiat_p384_u1 = 0; let (x143, x144) = fiat_p384_addcarryx_u64(x142, x104, x130); let x145: u64 = ((x144 as u64) + (x105 as u64)); let mut x146: u64 = 0; let mut x147: u64 = 0; let (x146, x147) = fiat_p384_mulx_u64(x2, (arg2[5])); let mut x148: u64 = 0; let mut x149: u64 = 0; let (x148, x149) = fiat_p384_mulx_u64(x2, (arg2[4])); let mut x150: u64 = 0; let mut x151: u64 = 0; let (x150, x151) = fiat_p384_mulx_u64(x2, (arg2[3])); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_mulx_u64(x2, (arg2[2])); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_mulx_u64(x2, (arg2[1])); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_mulx_u64(x2, (arg2[0])); let mut x158: u64 = 0; let mut x159: fiat_p384_u1 = 0; let (x158, x159) = fiat_p384_addcarryx_u64(0x0, x157, x154); let mut x160: u64 = 0; let mut x161: fiat_p384_u1 = 0; let (x160, x161) = fiat_p384_addcarryx_u64(x159, x155, x152); let mut x162: u64 = 0; let mut x163: fiat_p384_u1 = 0; let (x162, x163) = fiat_p384_addcarryx_u64(x161, x153, x150); let mut x164: u64 = 0; let mut x165: fiat_p384_u1 = 0; let (x164, x165) = fiat_p384_addcarryx_u64(x163, x151, x148); let mut x166: u64 = 0; let mut x167: fiat_p384_u1 = 0; let (x166, x167) = fiat_p384_addcarryx_u64(x165, x149, x146); let x168: u64 = ((x167 as u64) + x147); let mut x169: u64 = 0; let mut x170: fiat_p384_u1 = 0; let (x169, x170) = fiat_p384_addcarryx_u64(0x0, x133, x156); let mut x171: u64 = 0; let mut x172: fiat_p384_u1 = 0; let (x171, x172) = fiat_p384_addcarryx_u64(x170, x135, x158); let mut x173: u64 = 0; let mut x174: fiat_p384_u1 = 0; let (x173, x174) = fiat_p384_addcarryx_u64(x172, x137, x160); let mut x175: u64 = 0; let mut x176: fiat_p384_u1 = 0; let (x175, x176) = fiat_p384_addcarryx_u64(x174, x139, x162); let mut x177: u64 = 0; let mut x178: fiat_p384_u1 = 0; let (x177, x178) = fiat_p384_addcarryx_u64(x176, x141, x164); let mut x179: u64 = 0; let mut x180: fiat_p384_u1 = 0; let (x179, x180) = fiat_p384_addcarryx_u64(x178, x143, x166); let mut x181: u64 = 0; let mut x182: fiat_p384_u1 = 0; let (x181, x182) = fiat_p384_addcarryx_u64(x180, x145, x168); let mut x183: u64 = 0; let mut x184: u64 = 0; let (x183, x184) = fiat_p384_mulx_u64(x169, 0x100000001); let mut x185: u64 = 0; let mut x186: u64 = 0; let (x185, x186) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x187: u64 = 0; let mut x188: u64 = 0; let (x187, x188) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x189: u64 = 0; let mut x190: u64 = 0; let (x189, x190) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x191: u64 = 0; let mut x192: u64 = 0; let (x191, x192) = fiat_p384_mulx_u64(x183, 0xfffffffffffffffe); let mut x193: u64 = 0; let mut x194: u64 = 0; let (x193, x194) = fiat_p384_mulx_u64(x183, 0xffffffff00000000); let mut x195: u64 = 0; let mut x196: u64 = 0; let (x195, x196) = fiat_p384_mulx_u64(x183, 0xffffffff); let mut x197: u64 = 0; let mut x198: fiat_p384_u1 = 0; let (x197, x198) = fiat_p384_addcarryx_u64(0x0, x196, x193); let mut x199: u64 = 0; let mut x200: fiat_p384_u1 = 0; let (x199, x200) = fiat_p384_addcarryx_u64(x198, x194, x191); let mut x201: u64 = 0; let mut x202: fiat_p384_u1 = 0; let (x201, x202) = fiat_p384_addcarryx_u64(x200, x192, x189); let mut x203: u64 = 0; let mut x204: fiat_p384_u1 = 0; let (x203, x204) = fiat_p384_addcarryx_u64(x202, x190, x187); let mut x205: u64 = 0; let mut x206: fiat_p384_u1 = 0; let (x205, x206) = fiat_p384_addcarryx_u64(x204, x188, x185); let x207: u64 = ((x206 as u64) + x186); let mut x208: u64 = 0; let mut x209: fiat_p384_u1 = 0; let (x208, x209) = fiat_p384_addcarryx_u64(0x0, x169, x195); let mut x210: u64 = 0; let mut x211: fiat_p384_u1 = 0; let (x210, x211) = fiat_p384_addcarryx_u64(x209, x171, x197); let mut x212: u64 = 0; let mut x213: fiat_p384_u1 = 0; let (x212, x213) = fiat_p384_addcarryx_u64(x211, x173, x199); let mut x214: u64 = 0; let mut x215: fiat_p384_u1 = 0; let (x214, x215) = fiat_p384_addcarryx_u64(x213, x175, x201); let mut x216: u64 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u64(x215, x177, x203); let mut x218: u64 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u64(x217, x179, x205); let mut x220: u64 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u64(x219, x181, x207); let x222: u64 = ((x221 as u64) + (x182 as u64)); let mut x223: u64 = 0; let mut x224: u64 = 0; let (x223, x224) = fiat_p384_mulx_u64(x3, (arg2[5])); let mut x225: u64 = 0; let mut x226: u64 = 0; let (x225, x226) = fiat_p384_mulx_u64(x3, (arg2[4])); let mut x227: u64 = 0; let mut x228: u64 = 0; let (x227, x228) = fiat_p384_mulx_u64(x3, (arg2[3])); let mut x229: u64 = 0; let mut x230: u64 = 0; let (x229, x230) = fiat_p384_mulx_u64(x3, (arg2[2])); let mut x231: u64 = 0; let mut x232: u64 = 0; let (x231, x232) = fiat_p384_mulx_u64(x3, (arg2[1])); let mut x233: u64 = 0; let mut x234: u64 = 0; let (x233, x234) = fiat_p384_mulx_u64(x3, (arg2[0])); let mut x235: u64 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u64(0x0, x234, x231); let mut x237: u64 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u64(x236, x232, x229); let mut x239: u64 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u64(x238, x230, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u64(x240, x228, x225); let mut x243: u64 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u64(x242, x226, x223); let x245: u64 = ((x244 as u64) + x224); let mut x246: u64 = 0; let mut x247: fiat_p384_u1 = 0; let (x246, x247) = fiat_p384_addcarryx_u64(0x0, x210, x233); let mut x248: u64 = 0; let mut x249: fiat_p384_u1 = 0; let (x248, x249) = fiat_p384_addcarryx_u64(x247, x212, x235); let mut x250: u64 = 0; let mut x251: fiat_p384_u1 = 0; let (x250, x251) = fiat_p384_addcarryx_u64(x249, x214, x237); let mut x252: u64 = 0; let mut x253: fiat_p384_u1 = 0; let (x252, x253) = fiat_p384_addcarryx_u64(x251, x216, x239); let mut x254: u64 = 0; let mut x255: fiat_p384_u1 = 0; let (x254, x255) = fiat_p384_addcarryx_u64(x253, x218, x241); let mut x256: u64 = 0; let mut x257: fiat_p384_u1 = 0; let (x256, x257) = fiat_p384_addcarryx_u64(x255, x220, x243); let mut x258: u64 = 0; let mut x259: fiat_p384_u1 = 0; let (x258, x259) = fiat_p384_addcarryx_u64(x257, x222, x245); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_mulx_u64(x246, 0x100000001); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x266: u64 = 0; let mut x267: u64 = 0; let (x266, x267) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x268: u64 = 0; let mut x269: u64 = 0; let (x268, x269) = fiat_p384_mulx_u64(x260, 0xfffffffffffffffe); let mut x270: u64 = 0; let mut x271: u64 = 0; let (x270, x271) = fiat_p384_mulx_u64(x260, 0xffffffff00000000); let mut x272: u64 = 0; let mut x273: u64 = 0; let (x272, x273) = fiat_p384_mulx_u64(x260, 0xffffffff); let mut x274: u64 = 0; let mut x275: fiat_p384_u1 = 0; let (x274, x275) = fiat_p384_addcarryx_u64(0x0, x273, x270); let mut x276: u64 = 0; let mut x277: fiat_p384_u1 = 0; let (x276, x277) = fiat_p384_addcarryx_u64(x275, x271, x268); let mut x278: u64 = 0; let mut x279: fiat_p384_u1 = 0; let (x278, x279) = fiat_p384_addcarryx_u64(x277, x269, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_u1 = 0; let (x280, x281) = fiat_p384_addcarryx_u64(x279, x267, x264); let mut x282: u64 = 0; let mut x283: fiat_p384_u1 = 0; let (x282, x283) = fiat_p384_addcarryx_u64(x281, x265, x262); let x284: u64 = ((x283 as u64) + x263); let mut x285: u64 = 0; let mut x286: fiat_p384_u1 = 0; let (x285, x286) = fiat_p384_addcarryx_u64(0x0, x246, x272); let mut x287: u64 = 0; let mut x288: fiat_p384_u1 = 0; let (x287, x288) = fiat_p384_addcarryx_u64(x286, x248, x274); let mut x289: u64 = 0; let mut x290: fiat_p384_u1 = 0; let (x289, x290) = fiat_p384_addcarryx_u64(x288, x250, x276); let mut x291: u64 = 0; let mut x292: fiat_p384_u1 = 0; let (x291, x292) = fiat_p384_addcarryx_u64(x290, x252, x278); let mut x293: u64 = 0; let mut x294: fiat_p384_u1 = 0; let (x293, x294) = fiat_p384_addcarryx_u64(x292, x254, x280); let mut x295: u64 = 0; let mut x296: fiat_p384_u1 = 0; let (x295, x296) = fiat_p384_addcarryx_u64(x294, x256, x282); let mut x297: u64 = 0; let mut x298: fiat_p384_u1 = 0; let (x297, x298) = fiat_p384_addcarryx_u64(x296, x258, x284); let x299: u64 = ((x298 as u64) + (x259 as u64)); let mut x300: u64 = 0; let mut x301: u64 = 0; let (x300, x301) = fiat_p384_mulx_u64(x4, (arg2[5])); let mut x302: u64 = 0; let mut x303: u64 = 0; let (x302, x303) = fiat_p384_mulx_u64(x4, (arg2[4])); let mut x304: u64 = 0; let mut x305: u64 = 0; let (x304, x305) = fiat_p384_mulx_u64(x4, (arg2[3])); let mut x306: u64 = 0; let mut x307: u64 = 0; let (x306, x307) = fiat_p384_mulx_u64(x4, (arg2[2])); let mut x308: u64 = 0; let mut x309: u64 = 0; let (x308, x309) = fiat_p384_mulx_u64(x4, (arg2[1])); let mut x310: u64 = 0; let mut x311: u64 = 0; let (x310, x311) = fiat_p384_mulx_u64(x4, (arg2[0])); let mut x312: u64 = 0; let mut x313: fiat_p384_u1 = 0; let (x312, x313) = fiat_p384_addcarryx_u64(0x0, x311, x308); let mut x314: u64 = 0; let mut x315: fiat_p384_u1 = 0; let (x314, x315) = fiat_p384_addcarryx_u64(x313, x309, x306); let mut x316: u64 = 0; let mut x317: fiat_p384_u1 = 0; let (x316, x317) = fiat_p384_addcarryx_u64(x315, x307, x304); let mut x318: u64 = 0; let mut x319: fiat_p384_u1 = 0; let (x318, x319) = fiat_p384_addcarryx_u64(x317, x305, x302); let mut x320: u64 = 0; let mut x321: fiat_p384_u1 = 0; let (x320, x321) = fiat_p384_addcarryx_u64(x319, x303, x300); let x322: u64 = ((x321 as u64) + x301); let mut x323: u64 = 0; let mut x324: fiat_p384_u1 = 0; let (x323, x324) = fiat_p384_addcarryx_u64(0x0, x287, x310); let mut x325: u64 = 0; let mut x326: fiat_p384_u1 = 0; let (x325, x326) = fiat_p384_addcarryx_u64(x324, x289, x312); let mut x327: u64 = 0; let mut x328: fiat_p384_u1 = 0; let (x327, x328) = fiat_p384_addcarryx_u64(x326, x291, x314); let mut x329: u64 = 0; let mut x330: fiat_p384_u1 = 0; let (x329, x330) = fiat_p384_addcarryx_u64(x328, x293, x316); let mut x331: u64 = 0; let mut x332: fiat_p384_u1 = 0; let (x331, x332) = fiat_p384_addcarryx_u64(x330, x295, x318); let mut x333: u64 = 0; let mut x334: fiat_p384_u1 = 0; let (x333, x334) = fiat_p384_addcarryx_u64(x332, x297, x320); let mut x335: u64 = 0; let mut x336: fiat_p384_u1 = 0; let (x335, x336) = fiat_p384_addcarryx_u64(x334, x299, x322); let mut x337: u64 = 0; let mut x338: u64 = 0; let (x337, x338) = fiat_p384_mulx_u64(x323, 0x100000001); let mut x339: u64 = 0; let mut x340: u64 = 0; let (x339, x340) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x341: u64 = 0; let mut x342: u64 = 0; let (x341, x342) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x343: u64 = 0; let mut x344: u64 = 0; let (x343, x344) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x345: u64 = 0; let mut x346: u64 = 0; let (x345, x346) = fiat_p384_mulx_u64(x337, 0xfffffffffffffffe); let mut x347: u64 = 0; let mut x348: u64 = 0; let (x347, x348) = fiat_p384_mulx_u64(x337, 0xffffffff00000000); let mut x349: u64 = 0; let mut x350: u64 = 0; let (x349, x350) = fiat_p384_mulx_u64(x337, 0xffffffff); let mut x351: u64 = 0; let mut x352: fiat_p384_u1 = 0; let (x351, x352) = fiat_p384_addcarryx_u64(0x0, x350, x347); let mut x353: u64 = 0; let mut x354: fiat_p384_u1 = 0; let (x353, x354) = fiat_p384_addcarryx_u64(x352, x348, x345); let mut x355: u64 = 0; let mut x356: fiat_p384_u1 = 0; let (x355, x356) = fiat_p384_addcarryx_u64(x354, x346, x343); let mut x357: u64 = 0; let mut x358: fiat_p384_u1 = 0; let (x357, x358) = fiat_p384_addcarryx_u64(x356, x344, x341); let mut x359: u64 = 0; let mut x360: fiat_p384_u1 = 0; let (x359, x360) = fiat_p384_addcarryx_u64(x358, x342, x339); let x361: u64 = ((x360 as u64) + x340); let mut x362: u64 = 0; let mut x363: fiat_p384_u1 = 0; let (x362, x363) = fiat_p384_addcarryx_u64(0x0, x323, x349); let mut x364: u64 = 0; let mut x365: fiat_p384_u1 = 0; let (x364, x365) = fiat_p384_addcarryx_u64(x363, x325, x351); let mut x366: u64 = 0; let mut x367: fiat_p384_u1 = 0; let (x366, x367) = fiat_p384_addcarryx_u64(x365, x327, x353); let mut x368: u64 = 0; let mut x369: fiat_p384_u1 = 0; let (x368, x369) = fiat_p384_addcarryx_u64(x367, x329, x355); let mut x370: u64 = 0; let mut x371: fiat_p384_u1 = 0; let (x370, x371) = fiat_p384_addcarryx_u64(x369, x331, x357); let mut x372: u64 = 0; let mut x373: fiat_p384_u1 = 0; let (x372, x373) = fiat_p384_addcarryx_u64(x371, x333, x359); let mut x374: u64 = 0; let mut x375: fiat_p384_u1 = 0; let (x374, x375) = fiat_p384_addcarryx_u64(x373, x335, x361); let x376: u64 = ((x375 as u64) + (x336 as u64)); let mut x377: u64 = 0; let mut x378: u64 = 0; let (x377, x378) = fiat_p384_mulx_u64(x5, (arg2[5])); let mut x379: u64 = 0; let mut x380: u64 = 0; let (x379, x380) = fiat_p384_mulx_u64(x5, (arg2[4])); let mut x381: u64 = 0; let mut x382: u64 = 0; let (x381, x382) = fiat_p384_mulx_u64(x5, (arg2[3])); let mut x383: u64 = 0; let mut x384: u64 = 0; let (x383, x384) = fiat_p384_mulx_u64(x5, (arg2[2])); let mut x385: u64 = 0; let mut x386: u64 = 0; let (x385, x386) = fiat_p384_mulx_u64(x5, (arg2[1])); let mut x387: u64 = 0; let mut x388: u64 = 0; let (x387, x388) = fiat_p384_mulx_u64(x5, (arg2[0])); let mut x389: u64 = 0; let mut x390: fiat_p384_u1 = 0; let (x389, x390) = fiat_p384_addcarryx_u64(0x0, x388, x385); let mut x391: u64 = 0; let mut x392: fiat_p384_u1 = 0; let (x391, x392) = fiat_p384_addcarryx_u64(x390, x386, x383); let mut x393: u64 = 0; let mut x394: fiat_p384_u1 = 0; let (x393, x394) = fiat_p384_addcarryx_u64(x392, x384, x381); let mut x395: u64 = 0; let mut x396: fiat_p384_u1 = 0; let (x395, x396) = fiat_p384_addcarryx_u64(x394, x382, x379); let mut x397: u64 = 0; let mut x398: fiat_p384_u1 = 0; let (x397, x398) = fiat_p384_addcarryx_u64(x396, x380, x377); let x399: u64 = ((x398 as u64) + x378); let mut x400: u64 = 0; let mut x401: fiat_p384_u1 = 0; let (x400, x401) = fiat_p384_addcarryx_u64(0x0, x364, x387); let mut x402: u64 = 0; let mut x403: fiat_p384_u1 = 0; let (x402, x403) = fiat_p384_addcarryx_u64(x401, x366, x389); let mut x404: u64 = 0; let mut x405: fiat_p384_u1 = 0; let (x404, x405) = fiat_p384_addcarryx_u64(x403, x368, x391); let mut x406: u64 = 0; let mut x407: fiat_p384_u1 = 0; let (x406, x407) = fiat_p384_addcarryx_u64(x405, x370, x393); let mut x408: u64 = 0; let mut x409: fiat_p384_u1 = 0; let (x408, x409) = fiat_p384_addcarryx_u64(x407, x372, x395); let mut x410: u64 = 0; let mut x411: fiat_p384_u1 = 0; let (x410, x411) = fiat_p384_addcarryx_u64(x409, x374, x397); let mut x412: u64 = 0; let mut x413: fiat_p384_u1 = 0; let (x412, x413) = fiat_p384_addcarryx_u64(x411, x376, x399); let mut x414: u64 = 0; let mut x415: u64 = 0; let (x414, x415) = fiat_p384_mulx_u64(x400, 0x100000001); let mut x416: u64 = 0; let mut x417: u64 = 0; let (x416, x417) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x418: u64 = 0; let mut x419: u64 = 0; let (x418, x419) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x420: u64 = 0; let mut x421: u64 = 0; let (x420, x421) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x422: u64 = 0; let mut x423: u64 = 0; let (x422, x423) = fiat_p384_mulx_u64(x414, 0xfffffffffffffffe); let mut x424: u64 = 0; let mut x425: u64 = 0; let (x424, x425) = fiat_p384_mulx_u64(x414, 0xffffffff00000000); let mut x426: u64 = 0; let mut x427: u64 = 0; let (x426, x427) = fiat_p384_mulx_u64(x414, 0xffffffff); let mut x428: u64 = 0; let mut x429: fiat_p384_u1 = 0; let (x428, x429) = fiat_p384_addcarryx_u64(0x0, x427, x424); let mut x430: u64 = 0; let mut x431: fiat_p384_u1 = 0; let (x430, x431) = fiat_p384_addcarryx_u64(x429, x425, x422); let mut x432: u64 = 0; let mut x433: fiat_p384_u1 = 0; let (x432, x433) = fiat_p384_addcarryx_u64(x431, x423, x420); let mut x434: u64 = 0; let mut x435: fiat_p384_u1 = 0; let (x434, x435) = fiat_p384_addcarryx_u64(x433, x421, x418); let mut x436: u64 = 0; let mut x437: fiat_p384_u1 = 0; let (x436, x437) = fiat_p384_addcarryx_u64(x435, x419, x416); let x438: u64 = ((x437 as u64) + x417); let mut x439: u64 = 0; let mut x440: fiat_p384_u1 = 0; let (x439, x440) = fiat_p384_addcarryx_u64(0x0, x400, x426); let mut x441: u64 = 0; let mut x442: fiat_p384_u1 = 0; let (x441, x442) = fiat_p384_addcarryx_u64(x440, x402, x428); let mut x443: u64 = 0; let mut x444: fiat_p384_u1 = 0; let (x443, x444) = fiat_p384_addcarryx_u64(x442, x404, x430); let mut x445: u64 = 0; let mut x446: fiat_p384_u1 = 0; let (x445, x446) = fiat_p384_addcarryx_u64(x444, x406, x432); let mut x447: u64 = 0; let mut x448: fiat_p384_u1 = 0; let (x447, x448) = fiat_p384_addcarryx_u64(x446, x408, x434); let mut x449: u64 = 0; let mut x450: fiat_p384_u1 = 0; let (x449, x450) = fiat_p384_addcarryx_u64(x448, x410, x436); let mut x451: u64 = 0; let mut x452: fiat_p384_u1 = 0; let (x451, x452) = fiat_p384_addcarryx_u64(x450, x412, x438); let x453: u64 = ((x452 as u64) + (x413 as u64)); let mut x454: u64 = 0; let mut x455: fiat_p384_u1 = 0; let (x454, x455) = fiat_p384_subborrowx_u64(0x0, x441, 0xffffffff); let mut x456: u64 = 0; let mut x457: fiat_p384_u1 = 0; let (x456, x457) = fiat_p384_subborrowx_u64(x455, x443, 0xffffffff00000000); let mut x458: u64 = 0; let mut x459: fiat_p384_u1 = 0; let (x458, x459) = fiat_p384_subborrowx_u64(x457, x445, 0xfffffffffffffffe); let mut x460: u64 = 0; let mut x461: fiat_p384_u1 = 0; let (x460, x461) = fiat_p384_subborrowx_u64(x459, x447, 0xffffffffffffffff); let mut x462: u64 = 0; let mut x463: fiat_p384_u1 = 0; let (x462, x463) = fiat_p384_subborrowx_u64(x461, x449, 0xffffffffffffffff); let mut x464: u64 = 0; let mut x465: fiat_p384_u1 = 0; let (x464, x465) = fiat_p384_subborrowx_u64(x463, x451, 0xffffffffffffffff); let mut x466: u64 = 0; let mut x467: fiat_p384_u1 = 0; let (x466, x467) = fiat_p384_subborrowx_u64(x465, x453, (0x0 as u64)); let mut x468: u64 = 0; let (x468) = fiat_p384_cmovznz_u64(x467, x454, x441); let mut x469: u64 = 0; let (x469) = fiat_p384_cmovznz_u64(x467, x456, x443); let mut x470: u64 = 0; let (x470) = fiat_p384_cmovznz_u64(x467, x458, x445); let mut x471: u64 = 0; let (x471) = fiat_p384_cmovznz_u64(x467, x460, x447); let mut x472: u64 = 0; let (x472) = fiat_p384_cmovznz_u64(x467, x462, x449); let mut x473: u64 = 0; let (x473) = fiat_p384_cmovznz_u64(x467, x464, x451); out1[0] = x468; out1[1] = x469; out1[2] = x470; out1[3] = x471; out1[4] = x472; out1[5] = x473; out1 } #[doc = " The function fiat_p384_square squares a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_square( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_mulx_u64(x6, (arg1[5])); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_mulx_u64(x6, (arg1[4])); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_mulx_u64(x6, (arg1[3])); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_mulx_u64(x6, (arg1[2])); let mut x15: u64 = 0; let mut x16: u64 = 0; let (x15, x16) = fiat_p384_mulx_u64(x6, (arg1[1])); let mut x17: u64 = 0; let mut x18: u64 = 0; let (x17, x18) = fiat_p384_mulx_u64(x6, (arg1[0])); let mut x19: u64 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_addcarryx_u64(0x0, x18, x15); let mut x21: u64 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_addcarryx_u64(x20, x16, x13); let mut x23: u64 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_addcarryx_u64(x22, x14, x11); let mut x25: u64 = 0; let mut x26: fiat_p384_u1 = 0; let (x25, x26) = fiat_p384_addcarryx_u64(x24, x12, x9); let mut x27: u64 = 0; let mut x28: fiat_p384_u1 = 0; let (x27, x28) = fiat_p384_addcarryx_u64(x26, x10, x7); let x29: u64 = ((x28 as u64) + x8); let mut x30: u64 = 0; let mut x31: u64 = 0; let (x30, x31) = fiat_p384_mulx_u64(x17, 0x100000001); let mut x32: u64 = 0; let mut x33: u64 = 0; let (x32, x33) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x34: u64 = 0; let mut x35: u64 = 0; let (x34, x35) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x36: u64 = 0; let mut x37: u64 = 0; let (x36, x37) = fiat_p384_mulx_u64(x30, 0xffffffffffffffff); let mut x38: u64 = 0; let mut x39: u64 = 0; let (x38, x39) = fiat_p384_mulx_u64(x30, 0xfffffffffffffffe); let mut x40: u64 = 0; let mut x41: u64 = 0; let (x40, x41) = fiat_p384_mulx_u64(x30, 0xffffffff00000000); let mut x42: u64 = 0; let mut x43: u64 = 0; let (x42, x43) = fiat_p384_mulx_u64(x30, 0xffffffff); let mut x44: u64 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u64(0x0, x43, x40); let mut x46: u64 = 0; let mut x47: fiat_p384_u1 = 0; let (x46, x47) = fiat_p384_addcarryx_u64(x45, x41, x38); let mut x48: u64 = 0; let mut x49: fiat_p384_u1 = 0; let (x48, x49) = fiat_p384_addcarryx_u64(x47, x39, x36); let mut x50: u64 = 0; let mut x51: fiat_p384_u1 = 0; let (x50, x51) = fiat_p384_addcarryx_u64(x49, x37, x34); let mut x52: u64 = 0; let mut x53: fiat_p384_u1 = 0; let (x52, x53) = fiat_p384_addcarryx_u64(x51, x35, x32); let x54: u64 = ((x53 as u64) + x33); let mut x55: u64 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u64(0x0, x17, x42); let mut x57: u64 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u64(x56, x19, x44); let mut x59: u64 = 0; let mut x60: fiat_p384_u1 = 0; let (x59, x60) = fiat_p384_addcarryx_u64(x58, x21, x46); let mut x61: u64 = 0; let mut x62: fiat_p384_u1 = 0; let (x61, x62) = fiat_p384_addcarryx_u64(x60, x23, x48); let mut x63: u64 = 0; let mut x64: fiat_p384_u1 = 0; let (x63, x64) = fiat_p384_addcarryx_u64(x62, x25, x50); let mut x65: u64 = 0; let mut x66: fiat_p384_u1 = 0; let (x65, x66) = fiat_p384_addcarryx_u64(x64, x27, x52); let mut x67: u64 = 0; let mut x68: fiat_p384_u1 = 0; let (x67, x68) = fiat_p384_addcarryx_u64(x66, x29, x54); let mut x69: u64 = 0; let mut x70: u64 = 0; let (x69, x70) = fiat_p384_mulx_u64(x1, (arg1[5])); let mut x71: u64 = 0; let mut x72: u64 = 0; let (x71, x72) = fiat_p384_mulx_u64(x1, (arg1[4])); let mut x73: u64 = 0; let mut x74: u64 = 0; let (x73, x74) = fiat_p384_mulx_u64(x1, (arg1[3])); let mut x75: u64 = 0; let mut x76: u64 = 0; let (x75, x76) = fiat_p384_mulx_u64(x1, (arg1[2])); let mut x77: u64 = 0; let mut x78: u64 = 0; let (x77, x78) = fiat_p384_mulx_u64(x1, (arg1[1])); let mut x79: u64 = 0; let mut x80: u64 = 0; let (x79, x80) = fiat_p384_mulx_u64(x1, (arg1[0])); let mut x81: u64 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_addcarryx_u64(0x0, x80, x77); let mut x83: u64 = 0; let mut x84: fiat_p384_u1 = 0; let (x83, x84) = fiat_p384_addcarryx_u64(x82, x78, x75); let mut x85: u64 = 0; let mut x86: fiat_p384_u1 = 0; let (x85, x86) = fiat_p384_addcarryx_u64(x84, x76, x73); let mut x87: u64 = 0; let mut x88: fiat_p384_u1 = 0; let (x87, x88) = fiat_p384_addcarryx_u64(x86, x74, x71); let mut x89: u64 = 0; let mut x90: fiat_p384_u1 = 0; let (x89, x90) = fiat_p384_addcarryx_u64(x88, x72, x69); let x91: u64 = ((x90 as u64) + x70); let mut x92: u64 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u64(0x0, x57, x79); let mut x94: u64 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u64(x93, x59, x81); let mut x96: u64 = 0; let mut x97: fiat_p384_u1 = 0; let (x96, x97) = fiat_p384_addcarryx_u64(x95, x61, x83); let mut x98: u64 = 0; let mut x99: fiat_p384_u1 = 0; let (x98, x99) = fiat_p384_addcarryx_u64(x97, x63, x85); let mut x100: u64 = 0; let mut x101: fiat_p384_u1 = 0; let (x100, x101) = fiat_p384_addcarryx_u64(x99, x65, x87); let mut x102: u64 = 0; let mut x103: fiat_p384_u1 = 0; let (x102, x103) = fiat_p384_addcarryx_u64(x101, x67, x89); let mut x104: u64 = 0; let mut x105: fiat_p384_u1 = 0; let (x104, x105) = fiat_p384_addcarryx_u64(x103, (x68 as u64), x91); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_mulx_u64(x92, 0x100000001); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_mulx_u64(x106, 0xffffffffffffffff); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_mulx_u64(x106, 0xfffffffffffffffe); let mut x116: u64 = 0; let mut x117: u64 = 0; let (x116, x117) = fiat_p384_mulx_u64(x106, 0xffffffff00000000); let mut x118: u64 = 0; let mut x119: u64 = 0; let (x118, x119) = fiat_p384_mulx_u64(x106, 0xffffffff); let mut x120: u64 = 0; let mut x121: fiat_p384_u1 = 0; let (x120, x121) = fiat_p384_addcarryx_u64(0x0, x119, x116); let mut x122: u64 = 0; let mut x123: fiat_p384_u1 = 0; let (x122, x123) = fiat_p384_addcarryx_u64(x121, x117, x114); let mut x124: u64 = 0; let mut x125: fiat_p384_u1 = 0; let (x124, x125) = fiat_p384_addcarryx_u64(x123, x115, x112); let mut x126: u64 = 0; let mut x127: fiat_p384_u1 = 0; let (x126, x127) = fiat_p384_addcarryx_u64(x125, x113, x110); let mut x128: u64 = 0; let mut x129: fiat_p384_u1 = 0; let (x128, x129) = fiat_p384_addcarryx_u64(x127, x111, x108); let x130: u64 = ((x129 as u64) + x109); let mut x131: u64 = 0; let mut x132: fiat_p384_u1 = 0; let (x131, x132) = fiat_p384_addcarryx_u64(0x0, x92, x118); let mut x133: u64 = 0; let mut x134: fiat_p384_u1 = 0; let (x133, x134) = fiat_p384_addcarryx_u64(x132, x94, x120); let mut x135: u64 = 0; let mut x136: fiat_p384_u1 = 0; let (x135, x136) = fiat_p384_addcarryx_u64(x134, x96, x122); let mut x137: u64 = 0; let mut x138: fiat_p384_u1 = 0; let (x137, x138) = fiat_p384_addcarryx_u64(x136, x98, x124); let mut x139: u64 = 0; let mut x140: fiat_p384_u1 = 0; let (x139, x140) = fiat_p384_addcarryx_u64(x138, x100, x126); let mut x141: u64 = 0; let mut x142: fiat_p384_u1 = 0; let (x141, x142) = fiat_p384_addcarryx_u64(x140, x102, x128); let mut x143: u64 = 0; let mut x144: fiat_p384_u1 = 0; let (x143, x144) = fiat_p384_addcarryx_u64(x142, x104, x130); let x145: u64 = ((x144 as u64) + (x105 as u64)); let mut x146: u64 = 0; let mut x147: u64 = 0; let (x146, x147) = fiat_p384_mulx_u64(x2, (arg1[5])); let mut x148: u64 = 0; let mut x149: u64 = 0; let (x148, x149) = fiat_p384_mulx_u64(x2, (arg1[4])); let mut x150: u64 = 0; let mut x151: u64 = 0; let (x150, x151) = fiat_p384_mulx_u64(x2, (arg1[3])); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_mulx_u64(x2, (arg1[2])); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_mulx_u64(x2, (arg1[1])); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_mulx_u64(x2, (arg1[0])); let mut x158: u64 = 0; let mut x159: fiat_p384_u1 = 0; let (x158, x159) = fiat_p384_addcarryx_u64(0x0, x157, x154); let mut x160: u64 = 0; let mut x161: fiat_p384_u1 = 0; let (x160, x161) = fiat_p384_addcarryx_u64(x159, x155, x152); let mut x162: u64 = 0; let mut x163: fiat_p384_u1 = 0; let (x162, x163) = fiat_p384_addcarryx_u64(x161, x153, x150); let mut x164: u64 = 0; let mut x165: fiat_p384_u1 = 0; let (x164, x165) = fiat_p384_addcarryx_u64(x163, x151, x148); let mut x166: u64 = 0; let mut x167: fiat_p384_u1 = 0; let (x166, x167) = fiat_p384_addcarryx_u64(x165, x149, x146); let x168: u64 = ((x167 as u64) + x147); let mut x169: u64 = 0; let mut x170: fiat_p384_u1 = 0; let (x169, x170) = fiat_p384_addcarryx_u64(0x0, x133, x156); let mut x171: u64 = 0; let mut x172: fiat_p384_u1 = 0; let (x171, x172) = fiat_p384_addcarryx_u64(x170, x135, x158); let mut x173: u64 = 0; let mut x174: fiat_p384_u1 = 0; let (x173, x174) = fiat_p384_addcarryx_u64(x172, x137, x160); let mut x175: u64 = 0; let mut x176: fiat_p384_u1 = 0; let (x175, x176) = fiat_p384_addcarryx_u64(x174, x139, x162); let mut x177: u64 = 0; let mut x178: fiat_p384_u1 = 0; let (x177, x178) = fiat_p384_addcarryx_u64(x176, x141, x164); let mut x179: u64 = 0; let mut x180: fiat_p384_u1 = 0; let (x179, x180) = fiat_p384_addcarryx_u64(x178, x143, x166); let mut x181: u64 = 0; let mut x182: fiat_p384_u1 = 0; let (x181, x182) = fiat_p384_addcarryx_u64(x180, x145, x168); let mut x183: u64 = 0; let mut x184: u64 = 0; let (x183, x184) = fiat_p384_mulx_u64(x169, 0x100000001); let mut x185: u64 = 0; let mut x186: u64 = 0; let (x185, x186) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x187: u64 = 0; let mut x188: u64 = 0; let (x187, x188) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x189: u64 = 0; let mut x190: u64 = 0; let (x189, x190) = fiat_p384_mulx_u64(x183, 0xffffffffffffffff); let mut x191: u64 = 0; let mut x192: u64 = 0; let (x191, x192) = fiat_p384_mulx_u64(x183, 0xfffffffffffffffe); let mut x193: u64 = 0; let mut x194: u64 = 0; let (x193, x194) = fiat_p384_mulx_u64(x183, 0xffffffff00000000); let mut x195: u64 = 0; let mut x196: u64 = 0; let (x195, x196) = fiat_p384_mulx_u64(x183, 0xffffffff); let mut x197: u64 = 0; let mut x198: fiat_p384_u1 = 0; let (x197, x198) = fiat_p384_addcarryx_u64(0x0, x196, x193); let mut x199: u64 = 0; let mut x200: fiat_p384_u1 = 0; let (x199, x200) = fiat_p384_addcarryx_u64(x198, x194, x191); let mut x201: u64 = 0; let mut x202: fiat_p384_u1 = 0; let (x201, x202) = fiat_p384_addcarryx_u64(x200, x192, x189); let mut x203: u64 = 0; let mut x204: fiat_p384_u1 = 0; let (x203, x204) = fiat_p384_addcarryx_u64(x202, x190, x187); let mut x205: u64 = 0; let mut x206: fiat_p384_u1 = 0; let (x205, x206) = fiat_p384_addcarryx_u64(x204, x188, x185); let x207: u64 = ((x206 as u64) + x186); let mut x208: u64 = 0; let mut x209: fiat_p384_u1 = 0; let (x208, x209) = fiat_p384_addcarryx_u64(0x0, x169, x195); let mut x210: u64 = 0; let mut x211: fiat_p384_u1 = 0; let (x210, x211) = fiat_p384_addcarryx_u64(x209, x171, x197); let mut x212: u64 = 0; let mut x213: fiat_p384_u1 = 0; let (x212, x213) = fiat_p384_addcarryx_u64(x211, x173, x199); let mut x214: u64 = 0; let mut x215: fiat_p384_u1 = 0; let (x214, x215) = fiat_p384_addcarryx_u64(x213, x175, x201); let mut x216: u64 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u64(x215, x177, x203); let mut x218: u64 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u64(x217, x179, x205); let mut x220: u64 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u64(x219, x181, x207); let x222: u64 = ((x221 as u64) + (x182 as u64)); let mut x223: u64 = 0; let mut x224: u64 = 0; let (x223, x224) = fiat_p384_mulx_u64(x3, (arg1[5])); let mut x225: u64 = 0; let mut x226: u64 = 0; let (x225, x226) = fiat_p384_mulx_u64(x3, (arg1[4])); let mut x227: u64 = 0; let mut x228: u64 = 0; let (x227, x228) = fiat_p384_mulx_u64(x3, (arg1[3])); let mut x229: u64 = 0; let mut x230: u64 = 0; let (x229, x230) = fiat_p384_mulx_u64(x3, (arg1[2])); let mut x231: u64 = 0; let mut x232: u64 = 0; let (x231, x232) = fiat_p384_mulx_u64(x3, (arg1[1])); let mut x233: u64 = 0; let mut x234: u64 = 0; let (x233, x234) = fiat_p384_mulx_u64(x3, (arg1[0])); let mut x235: u64 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u64(0x0, x234, x231); let mut x237: u64 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u64(x236, x232, x229); let mut x239: u64 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u64(x238, x230, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u64(x240, x228, x225); let mut x243: u64 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u64(x242, x226, x223); let x245: u64 = ((x244 as u64) + x224); let mut x246: u64 = 0; let mut x247: fiat_p384_u1 = 0; let (x246, x247) = fiat_p384_addcarryx_u64(0x0, x210, x233); let mut x248: u64 = 0; let mut x249: fiat_p384_u1 = 0; let (x248, x249) = fiat_p384_addcarryx_u64(x247, x212, x235); let mut x250: u64 = 0; let mut x251: fiat_p384_u1 = 0; let (x250, x251) = fiat_p384_addcarryx_u64(x249, x214, x237); let mut x252: u64 = 0; let mut x253: fiat_p384_u1 = 0; let (x252, x253) = fiat_p384_addcarryx_u64(x251, x216, x239); let mut x254: u64 = 0; let mut x255: fiat_p384_u1 = 0; let (x254, x255) = fiat_p384_addcarryx_u64(x253, x218, x241); let mut x256: u64 = 0; let mut x257: fiat_p384_u1 = 0; let (x256, x257) = fiat_p384_addcarryx_u64(x255, x220, x243); let mut x258: u64 = 0; let mut x259: fiat_p384_u1 = 0; let (x258, x259) = fiat_p384_addcarryx_u64(x257, x222, x245); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_mulx_u64(x246, 0x100000001); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x266: u64 = 0; let mut x267: u64 = 0; let (x266, x267) = fiat_p384_mulx_u64(x260, 0xffffffffffffffff); let mut x268: u64 = 0; let mut x269: u64 = 0; let (x268, x269) = fiat_p384_mulx_u64(x260, 0xfffffffffffffffe); let mut x270: u64 = 0; let mut x271: u64 = 0; let (x270, x271) = fiat_p384_mulx_u64(x260, 0xffffffff00000000); let mut x272: u64 = 0; let mut x273: u64 = 0; let (x272, x273) = fiat_p384_mulx_u64(x260, 0xffffffff); let mut x274: u64 = 0; let mut x275: fiat_p384_u1 = 0; let (x274, x275) = fiat_p384_addcarryx_u64(0x0, x273, x270); let mut x276: u64 = 0; let mut x277: fiat_p384_u1 = 0; let (x276, x277) = fiat_p384_addcarryx_u64(x275, x271, x268); let mut x278: u64 = 0; let mut x279: fiat_p384_u1 = 0; let (x278, x279) = fiat_p384_addcarryx_u64(x277, x269, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_u1 = 0; let (x280, x281) = fiat_p384_addcarryx_u64(x279, x267, x264); let mut x282: u64 = 0; let mut x283: fiat_p384_u1 = 0; let (x282, x283) = fiat_p384_addcarryx_u64(x281, x265, x262); let x284: u64 = ((x283 as u64) + x263); let mut x285: u64 = 0; let mut x286: fiat_p384_u1 = 0; let (x285, x286) = fiat_p384_addcarryx_u64(0x0, x246, x272); let mut x287: u64 = 0; let mut x288: fiat_p384_u1 = 0; let (x287, x288) = fiat_p384_addcarryx_u64(x286, x248, x274); let mut x289: u64 = 0; let mut x290: fiat_p384_u1 = 0; let (x289, x290) = fiat_p384_addcarryx_u64(x288, x250, x276); let mut x291: u64 = 0; let mut x292: fiat_p384_u1 = 0; let (x291, x292) = fiat_p384_addcarryx_u64(x290, x252, x278); let mut x293: u64 = 0; let mut x294: fiat_p384_u1 = 0; let (x293, x294) = fiat_p384_addcarryx_u64(x292, x254, x280); let mut x295: u64 = 0; let mut x296: fiat_p384_u1 = 0; let (x295, x296) = fiat_p384_addcarryx_u64(x294, x256, x282); let mut x297: u64 = 0; let mut x298: fiat_p384_u1 = 0; let (x297, x298) = fiat_p384_addcarryx_u64(x296, x258, x284); let x299: u64 = ((x298 as u64) + (x259 as u64)); let mut x300: u64 = 0; let mut x301: u64 = 0; let (x300, x301) = fiat_p384_mulx_u64(x4, (arg1[5])); let mut x302: u64 = 0; let mut x303: u64 = 0; let (x302, x303) = fiat_p384_mulx_u64(x4, (arg1[4])); let mut x304: u64 = 0; let mut x305: u64 = 0; let (x304, x305) = fiat_p384_mulx_u64(x4, (arg1[3])); let mut x306: u64 = 0; let mut x307: u64 = 0; let (x306, x307) = fiat_p384_mulx_u64(x4, (arg1[2])); let mut x308: u64 = 0; let mut x309: u64 = 0; let (x308, x309) = fiat_p384_mulx_u64(x4, (arg1[1])); let mut x310: u64 = 0; let mut x311: u64 = 0; let (x310, x311) = fiat_p384_mulx_u64(x4, (arg1[0])); let mut x312: u64 = 0; let mut x313: fiat_p384_u1 = 0; let (x312, x313) = fiat_p384_addcarryx_u64(0x0, x311, x308); let mut x314: u64 = 0; let mut x315: fiat_p384_u1 = 0; let (x314, x315) = fiat_p384_addcarryx_u64(x313, x309, x306); let mut x316: u64 = 0; let mut x317: fiat_p384_u1 = 0; let (x316, x317) = fiat_p384_addcarryx_u64(x315, x307, x304); let mut x318: u64 = 0; let mut x319: fiat_p384_u1 = 0; let (x318, x319) = fiat_p384_addcarryx_u64(x317, x305, x302); let mut x320: u64 = 0; let mut x321: fiat_p384_u1 = 0; let (x320, x321) = fiat_p384_addcarryx_u64(x319, x303, x300); let x322: u64 = ((x321 as u64) + x301); let mut x323: u64 = 0; let mut x324: fiat_p384_u1 = 0; let (x323, x324) = fiat_p384_addcarryx_u64(0x0, x287, x310); let mut x325: u64 = 0; let mut x326: fiat_p384_u1 = 0; let (x325, x326) = fiat_p384_addcarryx_u64(x324, x289, x312); let mut x327: u64 = 0; let mut x328: fiat_p384_u1 = 0; let (x327, x328) = fiat_p384_addcarryx_u64(x326, x291, x314); let mut x329: u64 = 0; let mut x330: fiat_p384_u1 = 0; let (x329, x330) = fiat_p384_addcarryx_u64(x328, x293, x316); let mut x331: u64 = 0; let mut x332: fiat_p384_u1 = 0; let (x331, x332) = fiat_p384_addcarryx_u64(x330, x295, x318); let mut x333: u64 = 0; let mut x334: fiat_p384_u1 = 0; let (x333, x334) = fiat_p384_addcarryx_u64(x332, x297, x320); let mut x335: u64 = 0; let mut x336: fiat_p384_u1 = 0; let (x335, x336) = fiat_p384_addcarryx_u64(x334, x299, x322); let mut x337: u64 = 0; let mut x338: u64 = 0; let (x337, x338) = fiat_p384_mulx_u64(x323, 0x100000001); let mut x339: u64 = 0; let mut x340: u64 = 0; let (x339, x340) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x341: u64 = 0; let mut x342: u64 = 0; let (x341, x342) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x343: u64 = 0; let mut x344: u64 = 0; let (x343, x344) = fiat_p384_mulx_u64(x337, 0xffffffffffffffff); let mut x345: u64 = 0; let mut x346: u64 = 0; let (x345, x346) = fiat_p384_mulx_u64(x337, 0xfffffffffffffffe); let mut x347: u64 = 0; let mut x348: u64 = 0; let (x347, x348) = fiat_p384_mulx_u64(x337, 0xffffffff00000000); let mut x349: u64 = 0; let mut x350: u64 = 0; let (x349, x350) = fiat_p384_mulx_u64(x337, 0xffffffff); let mut x351: u64 = 0; let mut x352: fiat_p384_u1 = 0; let (x351, x352) = fiat_p384_addcarryx_u64(0x0, x350, x347); let mut x353: u64 = 0; let mut x354: fiat_p384_u1 = 0; let (x353, x354) = fiat_p384_addcarryx_u64(x352, x348, x345); let mut x355: u64 = 0; let mut x356: fiat_p384_u1 = 0; let (x355, x356) = fiat_p384_addcarryx_u64(x354, x346, x343); let mut x357: u64 = 0; let mut x358: fiat_p384_u1 = 0; let (x357, x358) = fiat_p384_addcarryx_u64(x356, x344, x341); let mut x359: u64 = 0; let mut x360: fiat_p384_u1 = 0; let (x359, x360) = fiat_p384_addcarryx_u64(x358, x342, x339); let x361: u64 = ((x360 as u64) + x340); let mut x362: u64 = 0; let mut x363: fiat_p384_u1 = 0; let (x362, x363) = fiat_p384_addcarryx_u64(0x0, x323, x349); let mut x364: u64 = 0; let mut x365: fiat_p384_u1 = 0; let (x364, x365) = fiat_p384_addcarryx_u64(x363, x325, x351); let mut x366: u64 = 0; let mut x367: fiat_p384_u1 = 0; let (x366, x367) = fiat_p384_addcarryx_u64(x365, x327, x353); let mut x368: u64 = 0; let mut x369: fiat_p384_u1 = 0; let (x368, x369) = fiat_p384_addcarryx_u64(x367, x329, x355); let mut x370: u64 = 0; let mut x371: fiat_p384_u1 = 0; let (x370, x371) = fiat_p384_addcarryx_u64(x369, x331, x357); let mut x372: u64 = 0; let mut x373: fiat_p384_u1 = 0; let (x372, x373) = fiat_p384_addcarryx_u64(x371, x333, x359); let mut x374: u64 = 0; let mut x375: fiat_p384_u1 = 0; let (x374, x375) = fiat_p384_addcarryx_u64(x373, x335, x361); let x376: u64 = ((x375 as u64) + (x336 as u64)); let mut x377: u64 = 0; let mut x378: u64 = 0; let (x377, x378) = fiat_p384_mulx_u64(x5, (arg1[5])); let mut x379: u64 = 0; let mut x380: u64 = 0; let (x379, x380) = fiat_p384_mulx_u64(x5, (arg1[4])); let mut x381: u64 = 0; let mut x382: u64 = 0; let (x381, x382) = fiat_p384_mulx_u64(x5, (arg1[3])); let mut x383: u64 = 0; let mut x384: u64 = 0; let (x383, x384) = fiat_p384_mulx_u64(x5, (arg1[2])); let mut x385: u64 = 0; let mut x386: u64 = 0; let (x385, x386) = fiat_p384_mulx_u64(x5, (arg1[1])); let mut x387: u64 = 0; let mut x388: u64 = 0; let (x387, x388) = fiat_p384_mulx_u64(x5, (arg1[0])); let mut x389: u64 = 0; let mut x390: fiat_p384_u1 = 0; let (x389, x390) = fiat_p384_addcarryx_u64(0x0, x388, x385); let mut x391: u64 = 0; let mut x392: fiat_p384_u1 = 0; let (x391, x392) = fiat_p384_addcarryx_u64(x390, x386, x383); let mut x393: u64 = 0; let mut x394: fiat_p384_u1 = 0; let (x393, x394) = fiat_p384_addcarryx_u64(x392, x384, x381); let mut x395: u64 = 0; let mut x396: fiat_p384_u1 = 0; let (x395, x396) = fiat_p384_addcarryx_u64(x394, x382, x379); let mut x397: u64 = 0; let mut x398: fiat_p384_u1 = 0; let (x397, x398) = fiat_p384_addcarryx_u64(x396, x380, x377); let x399: u64 = ((x398 as u64) + x378); let mut x400: u64 = 0; let mut x401: fiat_p384_u1 = 0; let (x400, x401) = fiat_p384_addcarryx_u64(0x0, x364, x387); let mut x402: u64 = 0; let mut x403: fiat_p384_u1 = 0; let (x402, x403) = fiat_p384_addcarryx_u64(x401, x366, x389); let mut x404: u64 = 0; let mut x405: fiat_p384_u1 = 0; let (x404, x405) = fiat_p384_addcarryx_u64(x403, x368, x391); let mut x406: u64 = 0; let mut x407: fiat_p384_u1 = 0; let (x406, x407) = fiat_p384_addcarryx_u64(x405, x370, x393); let mut x408: u64 = 0; let mut x409: fiat_p384_u1 = 0; let (x408, x409) = fiat_p384_addcarryx_u64(x407, x372, x395); let mut x410: u64 = 0; let mut x411: fiat_p384_u1 = 0; let (x410, x411) = fiat_p384_addcarryx_u64(x409, x374, x397); let mut x412: u64 = 0; let mut x413: fiat_p384_u1 = 0; let (x412, x413) = fiat_p384_addcarryx_u64(x411, x376, x399); let mut x414: u64 = 0; let mut x415: u64 = 0; let (x414, x415) = fiat_p384_mulx_u64(x400, 0x100000001); let mut x416: u64 = 0; let mut x417: u64 = 0; let (x416, x417) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x418: u64 = 0; let mut x419: u64 = 0; let (x418, x419) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x420: u64 = 0; let mut x421: u64 = 0; let (x420, x421) = fiat_p384_mulx_u64(x414, 0xffffffffffffffff); let mut x422: u64 = 0; let mut x423: u64 = 0; let (x422, x423) = fiat_p384_mulx_u64(x414, 0xfffffffffffffffe); let mut x424: u64 = 0; let mut x425: u64 = 0; let (x424, x425) = fiat_p384_mulx_u64(x414, 0xffffffff00000000); let mut x426: u64 = 0; let mut x427: u64 = 0; let (x426, x427) = fiat_p384_mulx_u64(x414, 0xffffffff); let mut x428: u64 = 0; let mut x429: fiat_p384_u1 = 0; let (x428, x429) = fiat_p384_addcarryx_u64(0x0, x427, x424); let mut x430: u64 = 0; let mut x431: fiat_p384_u1 = 0; let (x430, x431) = fiat_p384_addcarryx_u64(x429, x425, x422); let mut x432: u64 = 0; let mut x433: fiat_p384_u1 = 0; let (x432, x433) = fiat_p384_addcarryx_u64(x431, x423, x420); let mut x434: u64 = 0; let mut x435: fiat_p384_u1 = 0; let (x434, x435) = fiat_p384_addcarryx_u64(x433, x421, x418); let mut x436: u64 = 0; let mut x437: fiat_p384_u1 = 0; let (x436, x437) = fiat_p384_addcarryx_u64(x435, x419, x416); let x438: u64 = ((x437 as u64) + x417); let mut x439: u64 = 0; let mut x440: fiat_p384_u1 = 0; let (x439, x440) = fiat_p384_addcarryx_u64(0x0, x400, x426); let mut x441: u64 = 0; let mut x442: fiat_p384_u1 = 0; let (x441, x442) = fiat_p384_addcarryx_u64(x440, x402, x428); let mut x443: u64 = 0; let mut x444: fiat_p384_u1 = 0; let (x443, x444) = fiat_p384_addcarryx_u64(x442, x404, x430); let mut x445: u64 = 0; let mut x446: fiat_p384_u1 = 0; let (x445, x446) = fiat_p384_addcarryx_u64(x444, x406, x432); let mut x447: u64 = 0; let mut x448: fiat_p384_u1 = 0; let (x447, x448) = fiat_p384_addcarryx_u64(x446, x408, x434); let mut x449: u64 = 0; let mut x450: fiat_p384_u1 = 0; let (x449, x450) = fiat_p384_addcarryx_u64(x448, x410, x436); let mut x451: u64 = 0; let mut x452: fiat_p384_u1 = 0; let (x451, x452) = fiat_p384_addcarryx_u64(x450, x412, x438); let x453: u64 = ((x452 as u64) + (x413 as u64)); let mut x454: u64 = 0; let mut x455: fiat_p384_u1 = 0; let (x454, x455) = fiat_p384_subborrowx_u64(0x0, x441, 0xffffffff); let mut x456: u64 = 0; let mut x457: fiat_p384_u1 = 0; let (x456, x457) = fiat_p384_subborrowx_u64(x455, x443, 0xffffffff00000000); let mut x458: u64 = 0; let mut x459: fiat_p384_u1 = 0; let (x458, x459) = fiat_p384_subborrowx_u64(x457, x445, 0xfffffffffffffffe); let mut x460: u64 = 0; let mut x461: fiat_p384_u1 = 0; let (x460, x461) = fiat_p384_subborrowx_u64(x459, x447, 0xffffffffffffffff); let mut x462: u64 = 0; let mut x463: fiat_p384_u1 = 0; let (x462, x463) = fiat_p384_subborrowx_u64(x461, x449, 0xffffffffffffffff); let mut x464: u64 = 0; let mut x465: fiat_p384_u1 = 0; let (x464, x465) = fiat_p384_subborrowx_u64(x463, x451, 0xffffffffffffffff); let mut x466: u64 = 0; let mut x467: fiat_p384_u1 = 0; let (x466, x467) = fiat_p384_subborrowx_u64(x465, x453, (0x0 as u64)); let mut x468: u64 = 0; let (x468) = fiat_p384_cmovznz_u64(x467, x454, x441); let mut x469: u64 = 0; let (x469) = fiat_p384_cmovznz_u64(x467, x456, x443); let mut x470: u64 = 0; let (x470) = fiat_p384_cmovznz_u64(x467, x458, x445); let mut x471: u64 = 0; let (x471) = fiat_p384_cmovznz_u64(x467, x460, x447); let mut x472: u64 = 0; let (x472) = fiat_p384_cmovznz_u64(x467, x462, x449); let mut x473: u64 = 0; let (x473) = fiat_p384_cmovznz_u64(x467, x464, x451); out1[0] = x468; out1[1] = x469; out1[2] = x470; out1[3] = x471; out1[4] = x472; out1[5] = x473; out1 } #[doc = " The function fiat_p384_add adds two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_add( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_addcarryx_u64(0x0, (arg1[0]), (arg2[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_addcarryx_u64(x2, (arg1[1]), (arg2[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_addcarryx_u64(x4, (arg1[2]), (arg2[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_addcarryx_u64(x6, (arg1[3]), (arg2[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_addcarryx_u64(x8, (arg1[4]), (arg2[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_addcarryx_u64(x10, (arg1[5]), (arg2[5])); let mut x13: u64 = 0; let mut x14: fiat_p384_u1 = 0; let (x13, x14) = fiat_p384_subborrowx_u64(0x0, x1, 0xffffffff); let mut x15: u64 = 0; let mut x16: fiat_p384_u1 = 0; let (x15, x16) = fiat_p384_subborrowx_u64(x14, x3, 0xffffffff00000000); let mut x17: u64 = 0; let mut x18: fiat_p384_u1 = 0; let (x17, x18) = fiat_p384_subborrowx_u64(x16, x5, 0xfffffffffffffffe); let mut x19: u64 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_subborrowx_u64(x18, x7, 0xffffffffffffffff); let mut x21: u64 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_subborrowx_u64(x20, x9, 0xffffffffffffffff); let mut x23: u64 = 0; let mut x24: fiat_p384_u1 = 0; let (x23, x24) = fiat_p384_subborrowx_u64(x22, x11, 0xffffffffffffffff); let mut x25: u64 = 0; let mut x26: fiat_p384_u1 = 0; let (x25, x26) = fiat_p384_subborrowx_u64(x24, (x12 as u64), (0x0 as u64)); let mut x27: u64 = 0; let (x27) = fiat_p384_cmovznz_u64(x26, x13, x1); let mut x28: u64 = 0; let (x28) = fiat_p384_cmovznz_u64(x26, x15, x3); let mut x29: u64 = 0; let (x29) = fiat_p384_cmovznz_u64(x26, x17, x5); let mut x30: u64 = 0; let (x30) = fiat_p384_cmovznz_u64(x26, x19, x7); let mut x31: u64 = 0; let (x31) = fiat_p384_cmovznz_u64(x26, x21, x9); let mut x32: u64 = 0; let (x32) = fiat_p384_cmovznz_u64(x26, x23, x11); out1[0] = x27; out1[1] = x28; out1[2] = x29; out1[3] = x30; out1[4] = x31; out1[5] = x32; out1 } #[doc = " The function fiat_p384_sub subtracts two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_sub( arg1: &fiat_p384_montgomery_domain_field_element, arg2: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_subborrowx_u64(0x0, (arg1[0]), (arg2[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_subborrowx_u64(x2, (arg1[1]), (arg2[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_subborrowx_u64(x4, (arg1[2]), (arg2[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_subborrowx_u64(x6, (arg1[3]), (arg2[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_subborrowx_u64(x8, (arg1[4]), (arg2[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_subborrowx_u64(x10, (arg1[5]), (arg2[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_cmovznz_u64(x12, (0x0 as u64), 0xffffffffffffffff); let mut x14: u64 = 0; let mut x15: fiat_p384_u1 = 0; let (x14, x15) = fiat_p384_addcarryx_u64(0x0, x1, (x13 & 0xffffffff)); let mut x16: u64 = 0; let mut x17: fiat_p384_u1 = 0; let (x16, x17) = fiat_p384_addcarryx_u64(x15, x3, (x13 & 0xffffffff00000000)); let mut x18: u64 = 0; let mut x19: fiat_p384_u1 = 0; let (x18, x19) = fiat_p384_addcarryx_u64(x17, x5, (x13 & 0xfffffffffffffffe)); let mut x20: u64 = 0; let mut x21: fiat_p384_u1 = 0; let (x20, x21) = fiat_p384_addcarryx_u64(x19, x7, x13); let mut x22: u64 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u64(x21, x9, x13); let mut x24: u64 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u64(x23, x11, x13); out1[0] = x14; out1[1] = x16; out1[2] = x18; out1[3] = x20; out1[4] = x22; out1[5] = x24; out1 } #[doc = " The function fiat_p384_opp negates a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_opp( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_subborrowx_u64(0x0, (0x0 as u64), (arg1[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_u1 = 0; let (x3, x4) = fiat_p384_subborrowx_u64(x2, (0x0 as u64), (arg1[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_u1 = 0; let (x5, x6) = fiat_p384_subborrowx_u64(x4, (0x0 as u64), (arg1[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_u1 = 0; let (x7, x8) = fiat_p384_subborrowx_u64(x6, (0x0 as u64), (arg1[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_u1 = 0; let (x9, x10) = fiat_p384_subborrowx_u64(x8, (0x0 as u64), (arg1[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_u1 = 0; let (x11, x12) = fiat_p384_subborrowx_u64(x10, (0x0 as u64), (arg1[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_cmovznz_u64(x12, (0x0 as u64), 0xffffffffffffffff); let mut x14: u64 = 0; let mut x15: fiat_p384_u1 = 0; let (x14, x15) = fiat_p384_addcarryx_u64(0x0, x1, (x13 & 0xffffffff)); let mut x16: u64 = 0; let mut x17: fiat_p384_u1 = 0; let (x16, x17) = fiat_p384_addcarryx_u64(x15, x3, (x13 & 0xffffffff00000000)); let mut x18: u64 = 0; let mut x19: fiat_p384_u1 = 0; let (x18, x19) = fiat_p384_addcarryx_u64(x17, x5, (x13 & 0xfffffffffffffffe)); let mut x20: u64 = 0; let mut x21: fiat_p384_u1 = 0; let (x20, x21) = fiat_p384_addcarryx_u64(x19, x7, x13); let mut x22: u64 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u64(x21, x9, x13); let mut x24: u64 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u64(x23, x11, x13); out1[0] = x14; out1[1] = x16; out1[2] = x18; out1[3] = x20; out1[4] = x22; out1[5] = x24; out1 } #[doc = " The function fiat_p384_from_montgomery translates a field element out of the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^6) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_from_montgomery( arg1: &fiat_p384_montgomery_domain_field_element, ) -> fiat_p384_non_montgomery_domain_field_element { let mut out1: fiat_p384_non_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[0]); let mut x2: u64 = 0; let mut x3: u64 = 0; let (x2, x3) = fiat_p384_mulx_u64(x1, 0x100000001); let mut x4: u64 = 0; let mut x5: u64 = 0; let (x4, x5) = fiat_p384_mulx_u64(x2, 0xffffffffffffffff); let mut x6: u64 = 0; let mut x7: u64 = 0; let (x6, x7) = fiat_p384_mulx_u64(x2, 0xffffffffffffffff); let mut x8: u64 = 0; let mut x9: u64 = 0; let (x8, x9) = fiat_p384_mulx_u64(x2, 0xffffffffffffffff); let mut x10: u64 = 0; let mut x11: u64 = 0; let (x10, x11) = fiat_p384_mulx_u64(x2, 0xfffffffffffffffe); let mut x12: u64 = 0; let mut x13: u64 = 0; let (x12, x13) = fiat_p384_mulx_u64(x2, 0xffffffff00000000); let mut x14: u64 = 0; let mut x15: u64 = 0; let (x14, x15) = fiat_p384_mulx_u64(x2, 0xffffffff); let mut x16: u64 = 0; let mut x17: fiat_p384_u1 = 0; let (x16, x17) = fiat_p384_addcarryx_u64(0x0, x15, x12); let mut x18: u64 = 0; let mut x19: fiat_p384_u1 = 0; let (x18, x19) = fiat_p384_addcarryx_u64(x17, x13, x10); let mut x20: u64 = 0; let mut x21: fiat_p384_u1 = 0; let (x20, x21) = fiat_p384_addcarryx_u64(x19, x11, x8); let mut x22: u64 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u64(x21, x9, x6); let mut x24: u64 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u64(x23, x7, x4); let mut x26: u64 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u64(0x0, x1, x14); let mut x28: u64 = 0; let mut x29: fiat_p384_u1 = 0; let (x28, x29) = fiat_p384_addcarryx_u64(x27, (0x0 as u64), x16); let mut x30: u64 = 0; let mut x31: fiat_p384_u1 = 0; let (x30, x31) = fiat_p384_addcarryx_u64(x29, (0x0 as u64), x18); let mut x32: u64 = 0; let mut x33: fiat_p384_u1 = 0; let (x32, x33) = fiat_p384_addcarryx_u64(x31, (0x0 as u64), x20); let mut x34: u64 = 0; let mut x35: fiat_p384_u1 = 0; let (x34, x35) = fiat_p384_addcarryx_u64(x33, (0x0 as u64), x22); let mut x36: u64 = 0; let mut x37: fiat_p384_u1 = 0; let (x36, x37) = fiat_p384_addcarryx_u64(x35, (0x0 as u64), x24); let mut x38: u64 = 0; let mut x39: fiat_p384_u1 = 0; let (x38, x39) = fiat_p384_addcarryx_u64(x37, (0x0 as u64), ((x25 as u64) + x5)); let mut x40: u64 = 0; let mut x41: fiat_p384_u1 = 0; let (x40, x41) = fiat_p384_addcarryx_u64(0x0, x28, (arg1[1])); let mut x42: u64 = 0; let mut x43: fiat_p384_u1 = 0; let (x42, x43) = fiat_p384_addcarryx_u64(x41, x30, (0x0 as u64)); let mut x44: u64 = 0; let mut x45: fiat_p384_u1 = 0; let (x44, x45) = fiat_p384_addcarryx_u64(x43, x32, (0x0 as u64)); let mut x46: u64 = 0; let mut x47: fiat_p384_u1 = 0; let (x46, x47) = fiat_p384_addcarryx_u64(x45, x34, (0x0 as u64)); let mut x48: u64 = 0; let mut x49: fiat_p384_u1 = 0; let (x48, x49) = fiat_p384_addcarryx_u64(x47, x36, (0x0 as u64)); let mut x50: u64 = 0; let mut x51: fiat_p384_u1 = 0; let (x50, x51) = fiat_p384_addcarryx_u64(x49, x38, (0x0 as u64)); let mut x52: u64 = 0; let mut x53: u64 = 0; let (x52, x53) = fiat_p384_mulx_u64(x40, 0x100000001); let mut x54: u64 = 0; let mut x55: u64 = 0; let (x54, x55) = fiat_p384_mulx_u64(x52, 0xffffffffffffffff); let mut x56: u64 = 0; let mut x57: u64 = 0; let (x56, x57) = fiat_p384_mulx_u64(x52, 0xffffffffffffffff); let mut x58: u64 = 0; let mut x59: u64 = 0; let (x58, x59) = fiat_p384_mulx_u64(x52, 0xffffffffffffffff); let mut x60: u64 = 0; let mut x61: u64 = 0; let (x60, x61) = fiat_p384_mulx_u64(x52, 0xfffffffffffffffe); let mut x62: u64 = 0; let mut x63: u64 = 0; let (x62, x63) = fiat_p384_mulx_u64(x52, 0xffffffff00000000); let mut x64: u64 = 0; let mut x65: u64 = 0; let (x64, x65) = fiat_p384_mulx_u64(x52, 0xffffffff); let mut x66: u64 = 0; let mut x67: fiat_p384_u1 = 0; let (x66, x67) = fiat_p384_addcarryx_u64(0x0, x65, x62); let mut x68: u64 = 0; let mut x69: fiat_p384_u1 = 0; let (x68, x69) = fiat_p384_addcarryx_u64(x67, x63, x60); let mut x70: u64 = 0; let mut x71: fiat_p384_u1 = 0; let (x70, x71) = fiat_p384_addcarryx_u64(x69, x61, x58); let mut x72: u64 = 0; let mut x73: fiat_p384_u1 = 0; let (x72, x73) = fiat_p384_addcarryx_u64(x71, x59, x56); let mut x74: u64 = 0; let mut x75: fiat_p384_u1 = 0; let (x74, x75) = fiat_p384_addcarryx_u64(x73, x57, x54); let mut x76: u64 = 0; let mut x77: fiat_p384_u1 = 0; let (x76, x77) = fiat_p384_addcarryx_u64(0x0, x40, x64); let mut x78: u64 = 0; let mut x79: fiat_p384_u1 = 0; let (x78, x79) = fiat_p384_addcarryx_u64(x77, x42, x66); let mut x80: u64 = 0; let mut x81: fiat_p384_u1 = 0; let (x80, x81) = fiat_p384_addcarryx_u64(x79, x44, x68); let mut x82: u64 = 0; let mut x83: fiat_p384_u1 = 0; let (x82, x83) = fiat_p384_addcarryx_u64(x81, x46, x70); let mut x84: u64 = 0; let mut x85: fiat_p384_u1 = 0; let (x84, x85) = fiat_p384_addcarryx_u64(x83, x48, x72); let mut x86: u64 = 0; let mut x87: fiat_p384_u1 = 0; let (x86, x87) = fiat_p384_addcarryx_u64(x85, x50, x74); let mut x88: u64 = 0; let mut x89: fiat_p384_u1 = 0; let (x88, x89) = fiat_p384_addcarryx_u64(x87, ((x51 as u64) + (x39 as u64)), ((x75 as u64) + x55)); let mut x90: u64 = 0; let mut x91: fiat_p384_u1 = 0; let (x90, x91) = fiat_p384_addcarryx_u64(0x0, x78, (arg1[2])); let mut x92: u64 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u64(x91, x80, (0x0 as u64)); let mut x94: u64 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u64(x93, x82, (0x0 as u64)); let mut x96: u64 = 0; let mut x97: fiat_p384_u1 = 0; let (x96, x97) = fiat_p384_addcarryx_u64(x95, x84, (0x0 as u64)); let mut x98: u64 = 0; let mut x99: fiat_p384_u1 = 0; let (x98, x99) = fiat_p384_addcarryx_u64(x97, x86, (0x0 as u64)); let mut x100: u64 = 0; let mut x101: fiat_p384_u1 = 0; let (x100, x101) = fiat_p384_addcarryx_u64(x99, x88, (0x0 as u64)); let mut x102: u64 = 0; let mut x103: u64 = 0; let (x102, x103) = fiat_p384_mulx_u64(x90, 0x100000001); let mut x104: u64 = 0; let mut x105: u64 = 0; let (x104, x105) = fiat_p384_mulx_u64(x102, 0xffffffffffffffff); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_mulx_u64(x102, 0xffffffffffffffff); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_mulx_u64(x102, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_mulx_u64(x102, 0xfffffffffffffffe); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_mulx_u64(x102, 0xffffffff00000000); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_mulx_u64(x102, 0xffffffff); let mut x116: u64 = 0; let mut x117: fiat_p384_u1 = 0; let (x116, x117) = fiat_p384_addcarryx_u64(0x0, x115, x112); let mut x118: u64 = 0; let mut x119: fiat_p384_u1 = 0; let (x118, x119) = fiat_p384_addcarryx_u64(x117, x113, x110); let mut x120: u64 = 0; let mut x121: fiat_p384_u1 = 0; let (x120, x121) = fiat_p384_addcarryx_u64(x119, x111, x108); let mut x122: u64 = 0; let mut x123: fiat_p384_u1 = 0; let (x122, x123) = fiat_p384_addcarryx_u64(x121, x109, x106); let mut x124: u64 = 0; let mut x125: fiat_p384_u1 = 0; let (x124, x125) = fiat_p384_addcarryx_u64(x123, x107, x104); let mut x126: u64 = 0; let mut x127: fiat_p384_u1 = 0; let (x126, x127) = fiat_p384_addcarryx_u64(0x0, x90, x114); let mut x128: u64 = 0; let mut x129: fiat_p384_u1 = 0; let (x128, x129) = fiat_p384_addcarryx_u64(x127, x92, x116); let mut x130: u64 = 0; let mut x131: fiat_p384_u1 = 0; let (x130, x131) = fiat_p384_addcarryx_u64(x129, x94, x118); let mut x132: u64 = 0; let mut x133: fiat_p384_u1 = 0; let (x132, x133) = fiat_p384_addcarryx_u64(x131, x96, x120); let mut x134: u64 = 0; let mut x135: fiat_p384_u1 = 0; let (x134, x135) = fiat_p384_addcarryx_u64(x133, x98, x122); let mut x136: u64 = 0; let mut x137: fiat_p384_u1 = 0; let (x136, x137) = fiat_p384_addcarryx_u64(x135, x100, x124); let mut x138: u64 = 0; let mut x139: fiat_p384_u1 = 0; let (x138, x139) = fiat_p384_addcarryx_u64(x137, ((x101 as u64) + (x89 as u64)), ((x125 as u64) + x105)); let mut x140: u64 = 0; let mut x141: fiat_p384_u1 = 0; let (x140, x141) = fiat_p384_addcarryx_u64(0x0, x128, (arg1[3])); let mut x142: u64 = 0; let mut x143: fiat_p384_u1 = 0; let (x142, x143) = fiat_p384_addcarryx_u64(x141, x130, (0x0 as u64)); let mut x144: u64 = 0; let mut x145: fiat_p384_u1 = 0; let (x144, x145) = fiat_p384_addcarryx_u64(x143, x132, (0x0 as u64)); let mut x146: u64 = 0; let mut x147: fiat_p384_u1 = 0; let (x146, x147) = fiat_p384_addcarryx_u64(x145, x134, (0x0 as u64)); let mut x148: u64 = 0; let mut x149: fiat_p384_u1 = 0; let (x148, x149) = fiat_p384_addcarryx_u64(x147, x136, (0x0 as u64)); let mut x150: u64 = 0; let mut x151: fiat_p384_u1 = 0; let (x150, x151) = fiat_p384_addcarryx_u64(x149, x138, (0x0 as u64)); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_mulx_u64(x140, 0x100000001); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_mulx_u64(x152, 0xffffffffffffffff); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_mulx_u64(x152, 0xffffffffffffffff); let mut x158: u64 = 0; let mut x159: u64 = 0; let (x158, x159) = fiat_p384_mulx_u64(x152, 0xffffffffffffffff); let mut x160: u64 = 0; let mut x161: u64 = 0; let (x160, x161) = fiat_p384_mulx_u64(x152, 0xfffffffffffffffe); let mut x162: u64 = 0; let mut x163: u64 = 0; let (x162, x163) = fiat_p384_mulx_u64(x152, 0xffffffff00000000); let mut x164: u64 = 0; let mut x165: u64 = 0; let (x164, x165) = fiat_p384_mulx_u64(x152, 0xffffffff); let mut x166: u64 = 0; let mut x167: fiat_p384_u1 = 0; let (x166, x167) = fiat_p384_addcarryx_u64(0x0, x165, x162); let mut x168: u64 = 0; let mut x169: fiat_p384_u1 = 0; let (x168, x169) = fiat_p384_addcarryx_u64(x167, x163, x160); let mut x170: u64 = 0; let mut x171: fiat_p384_u1 = 0; let (x170, x171) = fiat_p384_addcarryx_u64(x169, x161, x158); let mut x172: u64 = 0; let mut x173: fiat_p384_u1 = 0; let (x172, x173) = fiat_p384_addcarryx_u64(x171, x159, x156); let mut x174: u64 = 0; let mut x175: fiat_p384_u1 = 0; let (x174, x175) = fiat_p384_addcarryx_u64(x173, x157, x154); let mut x176: u64 = 0; let mut x177: fiat_p384_u1 = 0; let (x176, x177) = fiat_p384_addcarryx_u64(0x0, x140, x164); let mut x178: u64 = 0; let mut x179: fiat_p384_u1 = 0; let (x178, x179) = fiat_p384_addcarryx_u64(x177, x142, x166); let mut x180: u64 = 0; let mut x181: fiat_p384_u1 = 0; let (x180, x181) = fiat_p384_addcarryx_u64(x179, x144, x168); let mut x182: u64 = 0; let mut x183: fiat_p384_u1 = 0; let (x182, x183) = fiat_p384_addcarryx_u64(x181, x146, x170); let mut x184: u64 = 0; let mut x185: fiat_p384_u1 = 0; let (x184, x185) = fiat_p384_addcarryx_u64(x183, x148, x172); let mut x186: u64 = 0; let mut x187: fiat_p384_u1 = 0; let (x186, x187) = fiat_p384_addcarryx_u64(x185, x150, x174); let mut x188: u64 = 0; let mut x189: fiat_p384_u1 = 0; let (x188, x189) = fiat_p384_addcarryx_u64( x187, ((x151 as u64) + (x139 as u64)), ((x175 as u64) + x155), ); let mut x190: u64 = 0; let mut x191: fiat_p384_u1 = 0; let (x190, x191) = fiat_p384_addcarryx_u64(0x0, x178, (arg1[4])); let mut x192: u64 = 0; let mut x193: fiat_p384_u1 = 0; let (x192, x193) = fiat_p384_addcarryx_u64(x191, x180, (0x0 as u64)); let mut x194: u64 = 0; let mut x195: fiat_p384_u1 = 0; let (x194, x195) = fiat_p384_addcarryx_u64(x193, x182, (0x0 as u64)); let mut x196: u64 = 0; let mut x197: fiat_p384_u1 = 0; let (x196, x197) = fiat_p384_addcarryx_u64(x195, x184, (0x0 as u64)); let mut x198: u64 = 0; let mut x199: fiat_p384_u1 = 0; let (x198, x199) = fiat_p384_addcarryx_u64(x197, x186, (0x0 as u64)); let mut x200: u64 = 0; let mut x201: fiat_p384_u1 = 0; let (x200, x201) = fiat_p384_addcarryx_u64(x199, x188, (0x0 as u64)); let mut x202: u64 = 0; let mut x203: u64 = 0; let (x202, x203) = fiat_p384_mulx_u64(x190, 0x100000001); let mut x204: u64 = 0; let mut x205: u64 = 0; let (x204, x205) = fiat_p384_mulx_u64(x202, 0xffffffffffffffff); let mut x206: u64 = 0; let mut x207: u64 = 0; let (x206, x207) = fiat_p384_mulx_u64(x202, 0xffffffffffffffff); let mut x208: u64 = 0; let mut x209: u64 = 0; let (x208, x209) = fiat_p384_mulx_u64(x202, 0xffffffffffffffff); let mut x210: u64 = 0; let mut x211: u64 = 0; let (x210, x211) = fiat_p384_mulx_u64(x202, 0xfffffffffffffffe); let mut x212: u64 = 0; let mut x213: u64 = 0; let (x212, x213) = fiat_p384_mulx_u64(x202, 0xffffffff00000000); let mut x214: u64 = 0; let mut x215: u64 = 0; let (x214, x215) = fiat_p384_mulx_u64(x202, 0xffffffff); let mut x216: u64 = 0; let mut x217: fiat_p384_u1 = 0; let (x216, x217) = fiat_p384_addcarryx_u64(0x0, x215, x212); let mut x218: u64 = 0; let mut x219: fiat_p384_u1 = 0; let (x218, x219) = fiat_p384_addcarryx_u64(x217, x213, x210); let mut x220: u64 = 0; let mut x221: fiat_p384_u1 = 0; let (x220, x221) = fiat_p384_addcarryx_u64(x219, x211, x208); let mut x222: u64 = 0; let mut x223: fiat_p384_u1 = 0; let (x222, x223) = fiat_p384_addcarryx_u64(x221, x209, x206); let mut x224: u64 = 0; let mut x225: fiat_p384_u1 = 0; let (x224, x225) = fiat_p384_addcarryx_u64(x223, x207, x204); let mut x226: u64 = 0; let mut x227: fiat_p384_u1 = 0; let (x226, x227) = fiat_p384_addcarryx_u64(0x0, x190, x214); let mut x228: u64 = 0; let mut x229: fiat_p384_u1 = 0; let (x228, x229) = fiat_p384_addcarryx_u64(x227, x192, x216); let mut x230: u64 = 0; let mut x231: fiat_p384_u1 = 0; let (x230, x231) = fiat_p384_addcarryx_u64(x229, x194, x218); let mut x232: u64 = 0; let mut x233: fiat_p384_u1 = 0; let (x232, x233) = fiat_p384_addcarryx_u64(x231, x196, x220); let mut x234: u64 = 0; let mut x235: fiat_p384_u1 = 0; let (x234, x235) = fiat_p384_addcarryx_u64(x233, x198, x222); let mut x236: u64 = 0; let mut x237: fiat_p384_u1 = 0; let (x236, x237) = fiat_p384_addcarryx_u64(x235, x200, x224); let mut x238: u64 = 0; let mut x239: fiat_p384_u1 = 0; let (x238, x239) = fiat_p384_addcarryx_u64( x237, ((x201 as u64) + (x189 as u64)), ((x225 as u64) + x205), ); let mut x240: u64 = 0; let mut x241: fiat_p384_u1 = 0; let (x240, x241) = fiat_p384_addcarryx_u64(0x0, x228, (arg1[5])); let mut x242: u64 = 0; let mut x243: fiat_p384_u1 = 0; let (x242, x243) = fiat_p384_addcarryx_u64(x241, x230, (0x0 as u64)); let mut x244: u64 = 0; let mut x245: fiat_p384_u1 = 0; let (x244, x245) = fiat_p384_addcarryx_u64(x243, x232, (0x0 as u64)); let mut x246: u64 = 0; let mut x247: fiat_p384_u1 = 0; let (x246, x247) = fiat_p384_addcarryx_u64(x245, x234, (0x0 as u64)); let mut x248: u64 = 0; let mut x249: fiat_p384_u1 = 0; let (x248, x249) = fiat_p384_addcarryx_u64(x247, x236, (0x0 as u64)); let mut x250: u64 = 0; let mut x251: fiat_p384_u1 = 0; let (x250, x251) = fiat_p384_addcarryx_u64(x249, x238, (0x0 as u64)); let mut x252: u64 = 0; let mut x253: u64 = 0; let (x252, x253) = fiat_p384_mulx_u64(x240, 0x100000001); let mut x254: u64 = 0; let mut x255: u64 = 0; let (x254, x255) = fiat_p384_mulx_u64(x252, 0xffffffffffffffff); let mut x256: u64 = 0; let mut x257: u64 = 0; let (x256, x257) = fiat_p384_mulx_u64(x252, 0xffffffffffffffff); let mut x258: u64 = 0; let mut x259: u64 = 0; let (x258, x259) = fiat_p384_mulx_u64(x252, 0xffffffffffffffff); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_mulx_u64(x252, 0xfffffffffffffffe); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_mulx_u64(x252, 0xffffffff00000000); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_mulx_u64(x252, 0xffffffff); let mut x266: u64 = 0; let mut x267: fiat_p384_u1 = 0; let (x266, x267) = fiat_p384_addcarryx_u64(0x0, x265, x262); let mut x268: u64 = 0; let mut x269: fiat_p384_u1 = 0; let (x268, x269) = fiat_p384_addcarryx_u64(x267, x263, x260); let mut x270: u64 = 0; let mut x271: fiat_p384_u1 = 0; let (x270, x271) = fiat_p384_addcarryx_u64(x269, x261, x258); let mut x272: u64 = 0; let mut x273: fiat_p384_u1 = 0; let (x272, x273) = fiat_p384_addcarryx_u64(x271, x259, x256); let mut x274: u64 = 0; let mut x275: fiat_p384_u1 = 0; let (x274, x275) = fiat_p384_addcarryx_u64(x273, x257, x254); let mut x276: u64 = 0; let mut x277: fiat_p384_u1 = 0; let (x276, x277) = fiat_p384_addcarryx_u64(0x0, x240, x264); let mut x278: u64 = 0; let mut x279: fiat_p384_u1 = 0; let (x278, x279) = fiat_p384_addcarryx_u64(x277, x242, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_u1 = 0; let (x280, x281) = fiat_p384_addcarryx_u64(x279, x244, x268); let mut x282: u64 = 0; let mut x283: fiat_p384_u1 = 0; let (x282, x283) = fiat_p384_addcarryx_u64(x281, x246, x270); let mut x284: u64 = 0; let mut x285: fiat_p384_u1 = 0; let (x284, x285) = fiat_p384_addcarryx_u64(x283, x248, x272); let mut x286: u64 = 0; let mut x287: fiat_p384_u1 = 0; let (x286, x287) = fiat_p384_addcarryx_u64(x285, x250, x274); let mut x288: u64 = 0; let mut x289: fiat_p384_u1 = 0; let (x288, x289) = fiat_p384_addcarryx_u64( x287, ((x251 as u64) + (x239 as u64)), ((x275 as u64) + x255), ); let mut x290: u64 = 0; let mut x291: fiat_p384_u1 = 0; let (x290, x291) = fiat_p384_subborrowx_u64(0x0, x278, 0xffffffff); let mut x292: u64 = 0; let mut x293: fiat_p384_u1 = 0; let (x292, x293) = fiat_p384_subborrowx_u64(x291, x280, 0xffffffff00000000); let mut x294: u64 = 0; let mut x295: fiat_p384_u1 = 0; let (x294, x295) = fiat_p384_subborrowx_u64(x293, x282, 0xfffffffffffffffe); let mut x296: u64 = 0; let mut x297: fiat_p384_u1 = 0; let (x296, x297) = fiat_p384_subborrowx_u64(x295, x284, 0xffffffffffffffff); let mut x298: u64 = 0; let mut x299: fiat_p384_u1 = 0; let (x298, x299) = fiat_p384_subborrowx_u64(x297, x286, 0xffffffffffffffff); let mut x300: u64 = 0; let mut x301: fiat_p384_u1 = 0; let (x300, x301) = fiat_p384_subborrowx_u64(x299, x288, 0xffffffffffffffff); let mut x302: u64 = 0; let mut x303: fiat_p384_u1 = 0; let (x302, x303) = fiat_p384_subborrowx_u64(x301, (x289 as u64), (0x0 as u64)); let mut x304: u64 = 0; let (x304) = fiat_p384_cmovznz_u64(x303, x290, x278); let mut x305: u64 = 0; let (x305) = fiat_p384_cmovznz_u64(x303, x292, x280); let mut x306: u64 = 0; let (x306) = fiat_p384_cmovznz_u64(x303, x294, x282); let mut x307: u64 = 0; let (x307) = fiat_p384_cmovznz_u64(x303, x296, x284); let mut x308: u64 = 0; let (x308) = fiat_p384_cmovznz_u64(x303, x298, x286); let mut x309: u64 = 0; let (x309) = fiat_p384_cmovznz_u64(x303, x300, x288); out1[0] = x304; out1[1] = x305; out1[2] = x306; out1[3] = x307; out1[4] = x308; out1[5] = x309; out1 } #[doc = " The function fiat_p384_to_montgomery translates a field element into the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_to_montgomery( arg1: &fiat_p384_non_montgomery_domain_field_element, ) -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_mulx_u64(x6, 0x200000000); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_mulx_u64(x6, 0xfffffffe00000000); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_mulx_u64(x6, 0x200000000); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_mulx_u64(x6, 0xfffffffe00000001); let mut x15: u64 = 0; let mut x16: fiat_p384_u1 = 0; let (x15, x16) = fiat_p384_addcarryx_u64(0x0, x14, x11); let mut x17: u64 = 0; let mut x18: fiat_p384_u1 = 0; let (x17, x18) = fiat_p384_addcarryx_u64(x16, x12, x9); let mut x19: u64 = 0; let mut x20: fiat_p384_u1 = 0; let (x19, x20) = fiat_p384_addcarryx_u64(x18, x10, x7); let mut x21: u64 = 0; let mut x22: fiat_p384_u1 = 0; let (x21, x22) = fiat_p384_addcarryx_u64(x20, x8, x6); let mut x23: u64 = 0; let mut x24: u64 = 0; let (x23, x24) = fiat_p384_mulx_u64(x13, 0x100000001); let mut x25: u64 = 0; let mut x26: u64 = 0; let (x25, x26) = fiat_p384_mulx_u64(x23, 0xffffffffffffffff); let mut x27: u64 = 0; let mut x28: u64 = 0; let (x27, x28) = fiat_p384_mulx_u64(x23, 0xffffffffffffffff); let mut x29: u64 = 0; let mut x30: u64 = 0; let (x29, x30) = fiat_p384_mulx_u64(x23, 0xffffffffffffffff); let mut x31: u64 = 0; let mut x32: u64 = 0; let (x31, x32) = fiat_p384_mulx_u64(x23, 0xfffffffffffffffe); let mut x33: u64 = 0; let mut x34: u64 = 0; let (x33, x34) = fiat_p384_mulx_u64(x23, 0xffffffff00000000); let mut x35: u64 = 0; let mut x36: u64 = 0; let (x35, x36) = fiat_p384_mulx_u64(x23, 0xffffffff); let mut x37: u64 = 0; let mut x38: fiat_p384_u1 = 0; let (x37, x38) = fiat_p384_addcarryx_u64(0x0, x36, x33); let mut x39: u64 = 0; let mut x40: fiat_p384_u1 = 0; let (x39, x40) = fiat_p384_addcarryx_u64(x38, x34, x31); let mut x41: u64 = 0; let mut x42: fiat_p384_u1 = 0; let (x41, x42) = fiat_p384_addcarryx_u64(x40, x32, x29); let mut x43: u64 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_addcarryx_u64(x42, x30, x27); let mut x45: u64 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_addcarryx_u64(x44, x28, x25); let mut x47: u64 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_addcarryx_u64(0x0, x13, x35); let mut x49: u64 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_addcarryx_u64(x48, x15, x37); let mut x51: u64 = 0; let mut x52: fiat_p384_u1 = 0; let (x51, x52) = fiat_p384_addcarryx_u64(x50, x17, x39); let mut x53: u64 = 0; let mut x54: fiat_p384_u1 = 0; let (x53, x54) = fiat_p384_addcarryx_u64(x52, x19, x41); let mut x55: u64 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_addcarryx_u64(x54, x21, x43); let mut x57: u64 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_addcarryx_u64(x56, (x22 as u64), x45); let mut x59: u64 = 0; let mut x60: fiat_p384_u1 = 0; let (x59, x60) = fiat_p384_addcarryx_u64(x58, (0x0 as u64), ((x46 as u64) + x26)); let mut x61: u64 = 0; let mut x62: u64 = 0; let (x61, x62) = fiat_p384_mulx_u64(x1, 0x200000000); let mut x63: u64 = 0; let mut x64: u64 = 0; let (x63, x64) = fiat_p384_mulx_u64(x1, 0xfffffffe00000000); let mut x65: u64 = 0; let mut x66: u64 = 0; let (x65, x66) = fiat_p384_mulx_u64(x1, 0x200000000); let mut x67: u64 = 0; let mut x68: u64 = 0; let (x67, x68) = fiat_p384_mulx_u64(x1, 0xfffffffe00000001); let mut x69: u64 = 0; let mut x70: fiat_p384_u1 = 0; let (x69, x70) = fiat_p384_addcarryx_u64(0x0, x68, x65); let mut x71: u64 = 0; let mut x72: fiat_p384_u1 = 0; let (x71, x72) = fiat_p384_addcarryx_u64(x70, x66, x63); let mut x73: u64 = 0; let mut x74: fiat_p384_u1 = 0; let (x73, x74) = fiat_p384_addcarryx_u64(x72, x64, x61); let mut x75: u64 = 0; let mut x76: fiat_p384_u1 = 0; let (x75, x76) = fiat_p384_addcarryx_u64(x74, x62, x1); let mut x77: u64 = 0; let mut x78: fiat_p384_u1 = 0; let (x77, x78) = fiat_p384_addcarryx_u64(0x0, x49, x67); let mut x79: u64 = 0; let mut x80: fiat_p384_u1 = 0; let (x79, x80) = fiat_p384_addcarryx_u64(x78, x51, x69); let mut x81: u64 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_addcarryx_u64(x80, x53, x71); let mut x83: u64 = 0; let mut x84: fiat_p384_u1 = 0; let (x83, x84) = fiat_p384_addcarryx_u64(x82, x55, x73); let mut x85: u64 = 0; let mut x86: fiat_p384_u1 = 0; let (x85, x86) = fiat_p384_addcarryx_u64(x84, x57, x75); let mut x87: u64 = 0; let mut x88: fiat_p384_u1 = 0; let (x87, x88) = fiat_p384_addcarryx_u64(x86, x59, (x76 as u64)); let mut x89: u64 = 0; let mut x90: u64 = 0; let (x89, x90) = fiat_p384_mulx_u64(x77, 0x100000001); let mut x91: u64 = 0; let mut x92: u64 = 0; let (x91, x92) = fiat_p384_mulx_u64(x89, 0xffffffffffffffff); let mut x93: u64 = 0; let mut x94: u64 = 0; let (x93, x94) = fiat_p384_mulx_u64(x89, 0xffffffffffffffff); let mut x95: u64 = 0; let mut x96: u64 = 0; let (x95, x96) = fiat_p384_mulx_u64(x89, 0xffffffffffffffff); let mut x97: u64 = 0; let mut x98: u64 = 0; let (x97, x98) = fiat_p384_mulx_u64(x89, 0xfffffffffffffffe); let mut x99: u64 = 0; let mut x100: u64 = 0; let (x99, x100) = fiat_p384_mulx_u64(x89, 0xffffffff00000000); let mut x101: u64 = 0; let mut x102: u64 = 0; let (x101, x102) = fiat_p384_mulx_u64(x89, 0xffffffff); let mut x103: u64 = 0; let mut x104: fiat_p384_u1 = 0; let (x103, x104) = fiat_p384_addcarryx_u64(0x0, x102, x99); let mut x105: u64 = 0; let mut x106: fiat_p384_u1 = 0; let (x105, x106) = fiat_p384_addcarryx_u64(x104, x100, x97); let mut x107: u64 = 0; let mut x108: fiat_p384_u1 = 0; let (x107, x108) = fiat_p384_addcarryx_u64(x106, x98, x95); let mut x109: u64 = 0; let mut x110: fiat_p384_u1 = 0; let (x109, x110) = fiat_p384_addcarryx_u64(x108, x96, x93); let mut x111: u64 = 0; let mut x112: fiat_p384_u1 = 0; let (x111, x112) = fiat_p384_addcarryx_u64(x110, x94, x91); let mut x113: u64 = 0; let mut x114: fiat_p384_u1 = 0; let (x113, x114) = fiat_p384_addcarryx_u64(0x0, x77, x101); let mut x115: u64 = 0; let mut x116: fiat_p384_u1 = 0; let (x115, x116) = fiat_p384_addcarryx_u64(x114, x79, x103); let mut x117: u64 = 0; let mut x118: fiat_p384_u1 = 0; let (x117, x118) = fiat_p384_addcarryx_u64(x116, x81, x105); let mut x119: u64 = 0; let mut x120: fiat_p384_u1 = 0; let (x119, x120) = fiat_p384_addcarryx_u64(x118, x83, x107); let mut x121: u64 = 0; let mut x122: fiat_p384_u1 = 0; let (x121, x122) = fiat_p384_addcarryx_u64(x120, x85, x109); let mut x123: u64 = 0; let mut x124: fiat_p384_u1 = 0; let (x123, x124) = fiat_p384_addcarryx_u64(x122, x87, x111); let mut x125: u64 = 0; let mut x126: fiat_p384_u1 = 0; let (x125, x126) = fiat_p384_addcarryx_u64(x124, ((x88 as u64) + (x60 as u64)), ((x112 as u64) + x92)); let mut x127: u64 = 0; let mut x128: u64 = 0; let (x127, x128) = fiat_p384_mulx_u64(x2, 0x200000000); let mut x129: u64 = 0; let mut x130: u64 = 0; let (x129, x130) = fiat_p384_mulx_u64(x2, 0xfffffffe00000000); let mut x131: u64 = 0; let mut x132: u64 = 0; let (x131, x132) = fiat_p384_mulx_u64(x2, 0x200000000); let mut x133: u64 = 0; let mut x134: u64 = 0; let (x133, x134) = fiat_p384_mulx_u64(x2, 0xfffffffe00000001); let mut x135: u64 = 0; let mut x136: fiat_p384_u1 = 0; let (x135, x136) = fiat_p384_addcarryx_u64(0x0, x134, x131); let mut x137: u64 = 0; let mut x138: fiat_p384_u1 = 0; let (x137, x138) = fiat_p384_addcarryx_u64(x136, x132, x129); let mut x139: u64 = 0; let mut x140: fiat_p384_u1 = 0; let (x139, x140) = fiat_p384_addcarryx_u64(x138, x130, x127); let mut x141: u64 = 0; let mut x142: fiat_p384_u1 = 0; let (x141, x142) = fiat_p384_addcarryx_u64(x140, x128, x2); let mut x143: u64 = 0; let mut x144: fiat_p384_u1 = 0; let (x143, x144) = fiat_p384_addcarryx_u64(0x0, x115, x133); let mut x145: u64 = 0; let mut x146: fiat_p384_u1 = 0; let (x145, x146) = fiat_p384_addcarryx_u64(x144, x117, x135); let mut x147: u64 = 0; let mut x148: fiat_p384_u1 = 0; let (x147, x148) = fiat_p384_addcarryx_u64(x146, x119, x137); let mut x149: u64 = 0; let mut x150: fiat_p384_u1 = 0; let (x149, x150) = fiat_p384_addcarryx_u64(x148, x121, x139); let mut x151: u64 = 0; let mut x152: fiat_p384_u1 = 0; let (x151, x152) = fiat_p384_addcarryx_u64(x150, x123, x141); let mut x153: u64 = 0; let mut x154: fiat_p384_u1 = 0; let (x153, x154) = fiat_p384_addcarryx_u64(x152, x125, (x142 as u64)); let mut x155: u64 = 0; let mut x156: u64 = 0; let (x155, x156) = fiat_p384_mulx_u64(x143, 0x100000001); let mut x157: u64 = 0; let mut x158: u64 = 0; let (x157, x158) = fiat_p384_mulx_u64(x155, 0xffffffffffffffff); let mut x159: u64 = 0; let mut x160: u64 = 0; let (x159, x160) = fiat_p384_mulx_u64(x155, 0xffffffffffffffff); let mut x161: u64 = 0; let mut x162: u64 = 0; let (x161, x162) = fiat_p384_mulx_u64(x155, 0xffffffffffffffff); let mut x163: u64 = 0; let mut x164: u64 = 0; let (x163, x164) = fiat_p384_mulx_u64(x155, 0xfffffffffffffffe); let mut x165: u64 = 0; let mut x166: u64 = 0; let (x165, x166) = fiat_p384_mulx_u64(x155, 0xffffffff00000000); let mut x167: u64 = 0; let mut x168: u64 = 0; let (x167, x168) = fiat_p384_mulx_u64(x155, 0xffffffff); let mut x169: u64 = 0; let mut x170: fiat_p384_u1 = 0; let (x169, x170) = fiat_p384_addcarryx_u64(0x0, x168, x165); let mut x171: u64 = 0; let mut x172: fiat_p384_u1 = 0; let (x171, x172) = fiat_p384_addcarryx_u64(x170, x166, x163); let mut x173: u64 = 0; let mut x174: fiat_p384_u1 = 0; let (x173, x174) = fiat_p384_addcarryx_u64(x172, x164, x161); let mut x175: u64 = 0; let mut x176: fiat_p384_u1 = 0; let (x175, x176) = fiat_p384_addcarryx_u64(x174, x162, x159); let mut x177: u64 = 0; let mut x178: fiat_p384_u1 = 0; let (x177, x178) = fiat_p384_addcarryx_u64(x176, x160, x157); let mut x179: u64 = 0; let mut x180: fiat_p384_u1 = 0; let (x179, x180) = fiat_p384_addcarryx_u64(0x0, x143, x167); let mut x181: u64 = 0; let mut x182: fiat_p384_u1 = 0; let (x181, x182) = fiat_p384_addcarryx_u64(x180, x145, x169); let mut x183: u64 = 0; let mut x184: fiat_p384_u1 = 0; let (x183, x184) = fiat_p384_addcarryx_u64(x182, x147, x171); let mut x185: u64 = 0; let mut x186: fiat_p384_u1 = 0; let (x185, x186) = fiat_p384_addcarryx_u64(x184, x149, x173); let mut x187: u64 = 0; let mut x188: fiat_p384_u1 = 0; let (x187, x188) = fiat_p384_addcarryx_u64(x186, x151, x175); let mut x189: u64 = 0; let mut x190: fiat_p384_u1 = 0; let (x189, x190) = fiat_p384_addcarryx_u64(x188, x153, x177); let mut x191: u64 = 0; let mut x192: fiat_p384_u1 = 0; let (x191, x192) = fiat_p384_addcarryx_u64( x190, ((x154 as u64) + (x126 as u64)), ((x178 as u64) + x158), ); let mut x193: u64 = 0; let mut x194: u64 = 0; let (x193, x194) = fiat_p384_mulx_u64(x3, 0x200000000); let mut x195: u64 = 0; let mut x196: u64 = 0; let (x195, x196) = fiat_p384_mulx_u64(x3, 0xfffffffe00000000); let mut x197: u64 = 0; let mut x198: u64 = 0; let (x197, x198) = fiat_p384_mulx_u64(x3, 0x200000000); let mut x199: u64 = 0; let mut x200: u64 = 0; let (x199, x200) = fiat_p384_mulx_u64(x3, 0xfffffffe00000001); let mut x201: u64 = 0; let mut x202: fiat_p384_u1 = 0; let (x201, x202) = fiat_p384_addcarryx_u64(0x0, x200, x197); let mut x203: u64 = 0; let mut x204: fiat_p384_u1 = 0; let (x203, x204) = fiat_p384_addcarryx_u64(x202, x198, x195); let mut x205: u64 = 0; let mut x206: fiat_p384_u1 = 0; let (x205, x206) = fiat_p384_addcarryx_u64(x204, x196, x193); let mut x207: u64 = 0; let mut x208: fiat_p384_u1 = 0; let (x207, x208) = fiat_p384_addcarryx_u64(x206, x194, x3); let mut x209: u64 = 0; let mut x210: fiat_p384_u1 = 0; let (x209, x210) = fiat_p384_addcarryx_u64(0x0, x181, x199); let mut x211: u64 = 0; let mut x212: fiat_p384_u1 = 0; let (x211, x212) = fiat_p384_addcarryx_u64(x210, x183, x201); let mut x213: u64 = 0; let mut x214: fiat_p384_u1 = 0; let (x213, x214) = fiat_p384_addcarryx_u64(x212, x185, x203); let mut x215: u64 = 0; let mut x216: fiat_p384_u1 = 0; let (x215, x216) = fiat_p384_addcarryx_u64(x214, x187, x205); let mut x217: u64 = 0; let mut x218: fiat_p384_u1 = 0; let (x217, x218) = fiat_p384_addcarryx_u64(x216, x189, x207); let mut x219: u64 = 0; let mut x220: fiat_p384_u1 = 0; let (x219, x220) = fiat_p384_addcarryx_u64(x218, x191, (x208 as u64)); let mut x221: u64 = 0; let mut x222: u64 = 0; let (x221, x222) = fiat_p384_mulx_u64(x209, 0x100000001); let mut x223: u64 = 0; let mut x224: u64 = 0; let (x223, x224) = fiat_p384_mulx_u64(x221, 0xffffffffffffffff); let mut x225: u64 = 0; let mut x226: u64 = 0; let (x225, x226) = fiat_p384_mulx_u64(x221, 0xffffffffffffffff); let mut x227: u64 = 0; let mut x228: u64 = 0; let (x227, x228) = fiat_p384_mulx_u64(x221, 0xffffffffffffffff); let mut x229: u64 = 0; let mut x230: u64 = 0; let (x229, x230) = fiat_p384_mulx_u64(x221, 0xfffffffffffffffe); let mut x231: u64 = 0; let mut x232: u64 = 0; let (x231, x232) = fiat_p384_mulx_u64(x221, 0xffffffff00000000); let mut x233: u64 = 0; let mut x234: u64 = 0; let (x233, x234) = fiat_p384_mulx_u64(x221, 0xffffffff); let mut x235: u64 = 0; let mut x236: fiat_p384_u1 = 0; let (x235, x236) = fiat_p384_addcarryx_u64(0x0, x234, x231); let mut x237: u64 = 0; let mut x238: fiat_p384_u1 = 0; let (x237, x238) = fiat_p384_addcarryx_u64(x236, x232, x229); let mut x239: u64 = 0; let mut x240: fiat_p384_u1 = 0; let (x239, x240) = fiat_p384_addcarryx_u64(x238, x230, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_u1 = 0; let (x241, x242) = fiat_p384_addcarryx_u64(x240, x228, x225); let mut x243: u64 = 0; let mut x244: fiat_p384_u1 = 0; let (x243, x244) = fiat_p384_addcarryx_u64(x242, x226, x223); let mut x245: u64 = 0; let mut x246: fiat_p384_u1 = 0; let (x245, x246) = fiat_p384_addcarryx_u64(0x0, x209, x233); let mut x247: u64 = 0; let mut x248: fiat_p384_u1 = 0; let (x247, x248) = fiat_p384_addcarryx_u64(x246, x211, x235); let mut x249: u64 = 0; let mut x250: fiat_p384_u1 = 0; let (x249, x250) = fiat_p384_addcarryx_u64(x248, x213, x237); let mut x251: u64 = 0; let mut x252: fiat_p384_u1 = 0; let (x251, x252) = fiat_p384_addcarryx_u64(x250, x215, x239); let mut x253: u64 = 0; let mut x254: fiat_p384_u1 = 0; let (x253, x254) = fiat_p384_addcarryx_u64(x252, x217, x241); let mut x255: u64 = 0; let mut x256: fiat_p384_u1 = 0; let (x255, x256) = fiat_p384_addcarryx_u64(x254, x219, x243); let mut x257: u64 = 0; let mut x258: fiat_p384_u1 = 0; let (x257, x258) = fiat_p384_addcarryx_u64( x256, ((x220 as u64) + (x192 as u64)), ((x244 as u64) + x224), ); let mut x259: u64 = 0; let mut x260: u64 = 0; let (x259, x260) = fiat_p384_mulx_u64(x4, 0x200000000); let mut x261: u64 = 0; let mut x262: u64 = 0; let (x261, x262) = fiat_p384_mulx_u64(x4, 0xfffffffe00000000); let mut x263: u64 = 0; let mut x264: u64 = 0; let (x263, x264) = fiat_p384_mulx_u64(x4, 0x200000000); let mut x265: u64 = 0; let mut x266: u64 = 0; let (x265, x266) = fiat_p384_mulx_u64(x4, 0xfffffffe00000001); let mut x267: u64 = 0; let mut x268: fiat_p384_u1 = 0; let (x267, x268) = fiat_p384_addcarryx_u64(0x0, x266, x263); let mut x269: u64 = 0; let mut x270: fiat_p384_u1 = 0; let (x269, x270) = fiat_p384_addcarryx_u64(x268, x264, x261); let mut x271: u64 = 0; let mut x272: fiat_p384_u1 = 0; let (x271, x272) = fiat_p384_addcarryx_u64(x270, x262, x259); let mut x273: u64 = 0; let mut x274: fiat_p384_u1 = 0; let (x273, x274) = fiat_p384_addcarryx_u64(x272, x260, x4); let mut x275: u64 = 0; let mut x276: fiat_p384_u1 = 0; let (x275, x276) = fiat_p384_addcarryx_u64(0x0, x247, x265); let mut x277: u64 = 0; let mut x278: fiat_p384_u1 = 0; let (x277, x278) = fiat_p384_addcarryx_u64(x276, x249, x267); let mut x279: u64 = 0; let mut x280: fiat_p384_u1 = 0; let (x279, x280) = fiat_p384_addcarryx_u64(x278, x251, x269); let mut x281: u64 = 0; let mut x282: fiat_p384_u1 = 0; let (x281, x282) = fiat_p384_addcarryx_u64(x280, x253, x271); let mut x283: u64 = 0; let mut x284: fiat_p384_u1 = 0; let (x283, x284) = fiat_p384_addcarryx_u64(x282, x255, x273); let mut x285: u64 = 0; let mut x286: fiat_p384_u1 = 0; let (x285, x286) = fiat_p384_addcarryx_u64(x284, x257, (x274 as u64)); let mut x287: u64 = 0; let mut x288: u64 = 0; let (x287, x288) = fiat_p384_mulx_u64(x275, 0x100000001); let mut x289: u64 = 0; let mut x290: u64 = 0; let (x289, x290) = fiat_p384_mulx_u64(x287, 0xffffffffffffffff); let mut x291: u64 = 0; let mut x292: u64 = 0; let (x291, x292) = fiat_p384_mulx_u64(x287, 0xffffffffffffffff); let mut x293: u64 = 0; let mut x294: u64 = 0; let (x293, x294) = fiat_p384_mulx_u64(x287, 0xffffffffffffffff); let mut x295: u64 = 0; let mut x296: u64 = 0; let (x295, x296) = fiat_p384_mulx_u64(x287, 0xfffffffffffffffe); let mut x297: u64 = 0; let mut x298: u64 = 0; let (x297, x298) = fiat_p384_mulx_u64(x287, 0xffffffff00000000); let mut x299: u64 = 0; let mut x300: u64 = 0; let (x299, x300) = fiat_p384_mulx_u64(x287, 0xffffffff); let mut x301: u64 = 0; let mut x302: fiat_p384_u1 = 0; let (x301, x302) = fiat_p384_addcarryx_u64(0x0, x300, x297); let mut x303: u64 = 0; let mut x304: fiat_p384_u1 = 0; let (x303, x304) = fiat_p384_addcarryx_u64(x302, x298, x295); let mut x305: u64 = 0; let mut x306: fiat_p384_u1 = 0; let (x305, x306) = fiat_p384_addcarryx_u64(x304, x296, x293); let mut x307: u64 = 0; let mut x308: fiat_p384_u1 = 0; let (x307, x308) = fiat_p384_addcarryx_u64(x306, x294, x291); let mut x309: u64 = 0; let mut x310: fiat_p384_u1 = 0; let (x309, x310) = fiat_p384_addcarryx_u64(x308, x292, x289); let mut x311: u64 = 0; let mut x312: fiat_p384_u1 = 0; let (x311, x312) = fiat_p384_addcarryx_u64(0x0, x275, x299); let mut x313: u64 = 0; let mut x314: fiat_p384_u1 = 0; let (x313, x314) = fiat_p384_addcarryx_u64(x312, x277, x301); let mut x315: u64 = 0; let mut x316: fiat_p384_u1 = 0; let (x315, x316) = fiat_p384_addcarryx_u64(x314, x279, x303); let mut x317: u64 = 0; let mut x318: fiat_p384_u1 = 0; let (x317, x318) = fiat_p384_addcarryx_u64(x316, x281, x305); let mut x319: u64 = 0; let mut x320: fiat_p384_u1 = 0; let (x319, x320) = fiat_p384_addcarryx_u64(x318, x283, x307); let mut x321: u64 = 0; let mut x322: fiat_p384_u1 = 0; let (x321, x322) = fiat_p384_addcarryx_u64(x320, x285, x309); let mut x323: u64 = 0; let mut x324: fiat_p384_u1 = 0; let (x323, x324) = fiat_p384_addcarryx_u64( x322, ((x286 as u64) + (x258 as u64)), ((x310 as u64) + x290), ); let mut x325: u64 = 0; let mut x326: u64 = 0; let (x325, x326) = fiat_p384_mulx_u64(x5, 0x200000000); let mut x327: u64 = 0; let mut x328: u64 = 0; let (x327, x328) = fiat_p384_mulx_u64(x5, 0xfffffffe00000000); let mut x329: u64 = 0; let mut x330: u64 = 0; let (x329, x330) = fiat_p384_mulx_u64(x5, 0x200000000); let mut x331: u64 = 0; let mut x332: u64 = 0; let (x331, x332) = fiat_p384_mulx_u64(x5, 0xfffffffe00000001); let mut x333: u64 = 0; let mut x334: fiat_p384_u1 = 0; let (x333, x334) = fiat_p384_addcarryx_u64(0x0, x332, x329); let mut x335: u64 = 0; let mut x336: fiat_p384_u1 = 0; let (x335, x336) = fiat_p384_addcarryx_u64(x334, x330, x327); let mut x337: u64 = 0; let mut x338: fiat_p384_u1 = 0; let (x337, x338) = fiat_p384_addcarryx_u64(x336, x328, x325); let mut x339: u64 = 0; let mut x340: fiat_p384_u1 = 0; let (x339, x340) = fiat_p384_addcarryx_u64(x338, x326, x5); let mut x341: u64 = 0; let mut x342: fiat_p384_u1 = 0; let (x341, x342) = fiat_p384_addcarryx_u64(0x0, x313, x331); let mut x343: u64 = 0; let mut x344: fiat_p384_u1 = 0; let (x343, x344) = fiat_p384_addcarryx_u64(x342, x315, x333); let mut x345: u64 = 0; let mut x346: fiat_p384_u1 = 0; let (x345, x346) = fiat_p384_addcarryx_u64(x344, x317, x335); let mut x347: u64 = 0; let mut x348: fiat_p384_u1 = 0; let (x347, x348) = fiat_p384_addcarryx_u64(x346, x319, x337); let mut x349: u64 = 0; let mut x350: fiat_p384_u1 = 0; let (x349, x350) = fiat_p384_addcarryx_u64(x348, x321, x339); let mut x351: u64 = 0; let mut x352: fiat_p384_u1 = 0; let (x351, x352) = fiat_p384_addcarryx_u64(x350, x323, (x340 as u64)); let mut x353: u64 = 0; let mut x354: u64 = 0; let (x353, x354) = fiat_p384_mulx_u64(x341, 0x100000001); let mut x355: u64 = 0; let mut x356: u64 = 0; let (x355, x356) = fiat_p384_mulx_u64(x353, 0xffffffffffffffff); let mut x357: u64 = 0; let mut x358: u64 = 0; let (x357, x358) = fiat_p384_mulx_u64(x353, 0xffffffffffffffff); let mut x359: u64 = 0; let mut x360: u64 = 0; let (x359, x360) = fiat_p384_mulx_u64(x353, 0xffffffffffffffff); let mut x361: u64 = 0; let mut x362: u64 = 0; let (x361, x362) = fiat_p384_mulx_u64(x353, 0xfffffffffffffffe); let mut x363: u64 = 0; let mut x364: u64 = 0; let (x363, x364) = fiat_p384_mulx_u64(x353, 0xffffffff00000000); let mut x365: u64 = 0; let mut x366: u64 = 0; let (x365, x366) = fiat_p384_mulx_u64(x353, 0xffffffff); let mut x367: u64 = 0; let mut x368: fiat_p384_u1 = 0; let (x367, x368) = fiat_p384_addcarryx_u64(0x0, x366, x363); let mut x369: u64 = 0; let mut x370: fiat_p384_u1 = 0; let (x369, x370) = fiat_p384_addcarryx_u64(x368, x364, x361); let mut x371: u64 = 0; let mut x372: fiat_p384_u1 = 0; let (x371, x372) = fiat_p384_addcarryx_u64(x370, x362, x359); let mut x373: u64 = 0; let mut x374: fiat_p384_u1 = 0; let (x373, x374) = fiat_p384_addcarryx_u64(x372, x360, x357); let mut x375: u64 = 0; let mut x376: fiat_p384_u1 = 0; let (x375, x376) = fiat_p384_addcarryx_u64(x374, x358, x355); let mut x377: u64 = 0; let mut x378: fiat_p384_u1 = 0; let (x377, x378) = fiat_p384_addcarryx_u64(0x0, x341, x365); let mut x379: u64 = 0; let mut x380: fiat_p384_u1 = 0; let (x379, x380) = fiat_p384_addcarryx_u64(x378, x343, x367); let mut x381: u64 = 0; let mut x382: fiat_p384_u1 = 0; let (x381, x382) = fiat_p384_addcarryx_u64(x380, x345, x369); let mut x383: u64 = 0; let mut x384: fiat_p384_u1 = 0; let (x383, x384) = fiat_p384_addcarryx_u64(x382, x347, x371); let mut x385: u64 = 0; let mut x386: fiat_p384_u1 = 0; let (x385, x386) = fiat_p384_addcarryx_u64(x384, x349, x373); let mut x387: u64 = 0; let mut x388: fiat_p384_u1 = 0; let (x387, x388) = fiat_p384_addcarryx_u64(x386, x351, x375); let mut x389: u64 = 0; let mut x390: fiat_p384_u1 = 0; let (x389, x390) = fiat_p384_addcarryx_u64( x388, ((x352 as u64) + (x324 as u64)), ((x376 as u64) + x356), ); let mut x391: u64 = 0; let mut x392: fiat_p384_u1 = 0; let (x391, x392) = fiat_p384_subborrowx_u64(0x0, x379, 0xffffffff); let mut x393: u64 = 0; let mut x394: fiat_p384_u1 = 0; let (x393, x394) = fiat_p384_subborrowx_u64(x392, x381, 0xffffffff00000000); let mut x395: u64 = 0; let mut x396: fiat_p384_u1 = 0; let (x395, x396) = fiat_p384_subborrowx_u64(x394, x383, 0xfffffffffffffffe); let mut x397: u64 = 0; let mut x398: fiat_p384_u1 = 0; let (x397, x398) = fiat_p384_subborrowx_u64(x396, x385, 0xffffffffffffffff); let mut x399: u64 = 0; let mut x400: fiat_p384_u1 = 0; let (x399, x400) = fiat_p384_subborrowx_u64(x398, x387, 0xffffffffffffffff); let mut x401: u64 = 0; let mut x402: fiat_p384_u1 = 0; let (x401, x402) = fiat_p384_subborrowx_u64(x400, x389, 0xffffffffffffffff); let mut x403: u64 = 0; let mut x404: fiat_p384_u1 = 0; let (x403, x404) = fiat_p384_subborrowx_u64(x402, (x390 as u64), (0x0 as u64)); let mut x405: u64 = 0; let (x405) = fiat_p384_cmovznz_u64(x404, x391, x379); let mut x406: u64 = 0; let (x406) = fiat_p384_cmovznz_u64(x404, x393, x381); let mut x407: u64 = 0; let (x407) = fiat_p384_cmovznz_u64(x404, x395, x383); let mut x408: u64 = 0; let (x408) = fiat_p384_cmovznz_u64(x404, x397, x385); let mut x409: u64 = 0; let (x409) = fiat_p384_cmovznz_u64(x404, x399, x387); let mut x410: u64 = 0; let (x410) = fiat_p384_cmovznz_u64(x404, x401, x389); out1[0] = x405; out1[1] = x406; out1[2] = x407; out1[3] = x408; out1[4] = x409; out1[5] = x410; out1 } #[doc = " The function fiat_p384_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[inline] pub const fn fiat_p384_nonzero(arg1: &[u64; 6]) -> u64 { let mut out1: u64 = 0; let x1: u64 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | ((arg1[3]) | ((arg1[4]) | (arg1[5])))))); out1 = x1; out1 } #[doc = " The function fiat_p384_selectznz is a multi-limb conditional select."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval out1 = (if arg1 = 0 then eval arg2 else eval arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_selectznz(arg1: fiat_p384_u1, arg2: &[u64; 6], arg3: &[u64; 6]) -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; let mut x1: u64 = 0; let (x1) = fiat_p384_cmovznz_u64(arg1, (arg2[0]), (arg3[0])); let mut x2: u64 = 0; let (x2) = fiat_p384_cmovznz_u64(arg1, (arg2[1]), (arg3[1])); let mut x3: u64 = 0; let (x3) = fiat_p384_cmovznz_u64(arg1, (arg2[2]), (arg3[2])); let mut x4: u64 = 0; let (x4) = fiat_p384_cmovznz_u64(arg1, (arg2[3]), (arg3[3])); let mut x5: u64 = 0; let (x5) = fiat_p384_cmovznz_u64(arg1, (arg2[4]), (arg3[4])); let mut x6: u64 = 0; let (x6) = fiat_p384_cmovznz_u64(arg1, (arg2[5]), (arg3[5])); out1[0] = x1; out1[1] = x2; out1[2] = x3; out1[3] = x4; out1[4] = x5; out1[5] = x6; out1 } #[doc = " The function fiat_p384_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..47]"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " Output Bounds:"] #[doc = " 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]]"] #[inline] pub const fn fiat_p384_to_bytes(arg1: &[u64; 6]) -> [u8; 48] { let mut out1: [u8; 48] = [0; 48]; let x1: u64 = (arg1[5]); let x2: u64 = (arg1[4]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[2]); let x5: u64 = (arg1[1]); let x6: u64 = (arg1[0]); let x7: u8 = ((x6 & (0xff as u64)) as u8); let x8: u64 = (x6 >> 8); let x9: u8 = ((x8 & (0xff as u64)) as u8); let x10: u64 = (x8 >> 8); let x11: u8 = ((x10 & (0xff as u64)) as u8); let x12: u64 = (x10 >> 8); let x13: u8 = ((x12 & (0xff as u64)) as u8); let x14: u64 = (x12 >> 8); let x15: u8 = ((x14 & (0xff as u64)) as u8); let x16: u64 = (x14 >> 8); let x17: u8 = ((x16 & (0xff as u64)) as u8); let x18: u64 = (x16 >> 8); let x19: u8 = ((x18 & (0xff as u64)) as u8); let x20: u8 = ((x18 >> 8) as u8); let x21: u8 = ((x5 & (0xff as u64)) as u8); let x22: u64 = (x5 >> 8); let x23: u8 = ((x22 & (0xff as u64)) as u8); let x24: u64 = (x22 >> 8); let x25: u8 = ((x24 & (0xff as u64)) as u8); let x26: u64 = (x24 >> 8); let x27: u8 = ((x26 & (0xff as u64)) as u8); let x28: u64 = (x26 >> 8); let x29: u8 = ((x28 & (0xff as u64)) as u8); let x30: u64 = (x28 >> 8); let x31: u8 = ((x30 & (0xff as u64)) as u8); let x32: u64 = (x30 >> 8); let x33: u8 = ((x32 & (0xff as u64)) as u8); let x34: u8 = ((x32 >> 8) as u8); let x35: u8 = ((x4 & (0xff as u64)) as u8); let x36: u64 = (x4 >> 8); let x37: u8 = ((x36 & (0xff as u64)) as u8); let x38: u64 = (x36 >> 8); let x39: u8 = ((x38 & (0xff as u64)) as u8); let x40: u64 = (x38 >> 8); let x41: u8 = ((x40 & (0xff as u64)) as u8); let x42: u64 = (x40 >> 8); let x43: u8 = ((x42 & (0xff as u64)) as u8); let x44: u64 = (x42 >> 8); let x45: u8 = ((x44 & (0xff as u64)) as u8); let x46: u64 = (x44 >> 8); let x47: u8 = ((x46 & (0xff as u64)) as u8); let x48: u8 = ((x46 >> 8) as u8); let x49: u8 = ((x3 & (0xff as u64)) as u8); let x50: u64 = (x3 >> 8); let x51: u8 = ((x50 & (0xff as u64)) as u8); let x52: u64 = (x50 >> 8); let x53: u8 = ((x52 & (0xff as u64)) as u8); let x54: u64 = (x52 >> 8); let x55: u8 = ((x54 & (0xff as u64)) as u8); let x56: u64 = (x54 >> 8); let x57: u8 = ((x56 & (0xff as u64)) as u8); let x58: u64 = (x56 >> 8); let x59: u8 = ((x58 & (0xff as u64)) as u8); let x60: u64 = (x58 >> 8); let x61: u8 = ((x60 & (0xff as u64)) as u8); let x62: u8 = ((x60 >> 8) as u8); let x63: u8 = ((x2 & (0xff as u64)) as u8); let x64: u64 = (x2 >> 8); let x65: u8 = ((x64 & (0xff as u64)) as u8); let x66: u64 = (x64 >> 8); let x67: u8 = ((x66 & (0xff as u64)) as u8); let x68: u64 = (x66 >> 8); let x69: u8 = ((x68 & (0xff as u64)) as u8); let x70: u64 = (x68 >> 8); let x71: u8 = ((x70 & (0xff as u64)) as u8); let x72: u64 = (x70 >> 8); let x73: u8 = ((x72 & (0xff as u64)) as u8); let x74: u64 = (x72 >> 8); let x75: u8 = ((x74 & (0xff as u64)) as u8); let x76: u8 = ((x74 >> 8) as u8); let x77: u8 = ((x1 & (0xff as u64)) as u8); let x78: u64 = (x1 >> 8); let x79: u8 = ((x78 & (0xff as u64)) as u8); let x80: u64 = (x78 >> 8); let x81: u8 = ((x80 & (0xff as u64)) as u8); let x82: u64 = (x80 >> 8); let x83: u8 = ((x82 & (0xff as u64)) as u8); let x84: u64 = (x82 >> 8); let x85: u8 = ((x84 & (0xff as u64)) as u8); let x86: u64 = (x84 >> 8); let x87: u8 = ((x86 & (0xff as u64)) as u8); let x88: u64 = (x86 >> 8); let x89: u8 = ((x88 & (0xff as u64)) as u8); let x90: u8 = ((x88 >> 8) as u8); out1[0] = x7; out1[1] = x9; out1[2] = x11; out1[3] = x13; out1[4] = x15; out1[5] = x17; out1[6] = x19; out1[7] = x20; out1[8] = x21; out1[9] = x23; out1[10] = x25; out1[11] = x27; out1[12] = x29; out1[13] = x31; out1[14] = x33; out1[15] = x34; out1[16] = x35; out1[17] = x37; out1[18] = x39; out1[19] = x41; out1[20] = x43; out1[21] = x45; out1[22] = x47; out1[23] = x48; out1[24] = x49; out1[25] = x51; out1[26] = x53; out1[27] = x55; out1[28] = x57; out1[29] = x59; out1[30] = x61; out1[31] = x62; out1[32] = x63; out1[33] = x65; out1[34] = x67; out1[35] = x69; out1[36] = x71; out1[37] = x73; out1[38] = x75; out1[39] = x76; out1[40] = x77; out1[41] = x79; out1[42] = x81; out1[43] = x83; out1[44] = x85; out1[45] = x87; out1[46] = x89; out1[47] = x90; out1 } #[doc = " The function fiat_p384_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ bytes_eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = bytes_eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " 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]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_from_bytes(arg1: &[u8; 48]) -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; let x1: u64 = (((arg1[47]) as u64) << 56); let x2: u64 = (((arg1[46]) as u64) << 48); let x3: u64 = (((arg1[45]) as u64) << 40); let x4: u64 = (((arg1[44]) as u64) << 32); let x5: u64 = (((arg1[43]) as u64) << 24); let x6: u64 = (((arg1[42]) as u64) << 16); let x7: u64 = (((arg1[41]) as u64) << 8); let x8: u8 = (arg1[40]); let x9: u64 = (((arg1[39]) as u64) << 56); let x10: u64 = (((arg1[38]) as u64) << 48); let x11: u64 = (((arg1[37]) as u64) << 40); let x12: u64 = (((arg1[36]) as u64) << 32); let x13: u64 = (((arg1[35]) as u64) << 24); let x14: u64 = (((arg1[34]) as u64) << 16); let x15: u64 = (((arg1[33]) as u64) << 8); let x16: u8 = (arg1[32]); let x17: u64 = (((arg1[31]) as u64) << 56); let x18: u64 = (((arg1[30]) as u64) << 48); let x19: u64 = (((arg1[29]) as u64) << 40); let x20: u64 = (((arg1[28]) as u64) << 32); let x21: u64 = (((arg1[27]) as u64) << 24); let x22: u64 = (((arg1[26]) as u64) << 16); let x23: u64 = (((arg1[25]) as u64) << 8); let x24: u8 = (arg1[24]); let x25: u64 = (((arg1[23]) as u64) << 56); let x26: u64 = (((arg1[22]) as u64) << 48); let x27: u64 = (((arg1[21]) as u64) << 40); let x28: u64 = (((arg1[20]) as u64) << 32); let x29: u64 = (((arg1[19]) as u64) << 24); let x30: u64 = (((arg1[18]) as u64) << 16); let x31: u64 = (((arg1[17]) as u64) << 8); let x32: u8 = (arg1[16]); let x33: u64 = (((arg1[15]) as u64) << 56); let x34: u64 = (((arg1[14]) as u64) << 48); let x35: u64 = (((arg1[13]) as u64) << 40); let x36: u64 = (((arg1[12]) as u64) << 32); let x37: u64 = (((arg1[11]) as u64) << 24); let x38: u64 = (((arg1[10]) as u64) << 16); let x39: u64 = (((arg1[9]) as u64) << 8); let x40: u8 = (arg1[8]); let x41: u64 = (((arg1[7]) as u64) << 56); let x42: u64 = (((arg1[6]) as u64) << 48); let x43: u64 = (((arg1[5]) as u64) << 40); let x44: u64 = (((arg1[4]) as u64) << 32); let x45: u64 = (((arg1[3]) as u64) << 24); let x46: u64 = (((arg1[2]) as u64) << 16); let x47: u64 = (((arg1[1]) as u64) << 8); let x48: u8 = (arg1[0]); let x49: u64 = (x47 + (x48 as u64)); let x50: u64 = (x46 + x49); let x51: u64 = (x45 + x50); let x52: u64 = (x44 + x51); let x53: u64 = (x43 + x52); let x54: u64 = (x42 + x53); let x55: u64 = (x41 + x54); let x56: u64 = (x39 + (x40 as u64)); let x57: u64 = (x38 + x56); let x58: u64 = (x37 + x57); let x59: u64 = (x36 + x58); let x60: u64 = (x35 + x59); let x61: u64 = (x34 + x60); let x62: u64 = (x33 + x61); let x63: u64 = (x31 + (x32 as u64)); let x64: u64 = (x30 + x63); let x65: u64 = (x29 + x64); let x66: u64 = (x28 + x65); let x67: u64 = (x27 + x66); let x68: u64 = (x26 + x67); let x69: u64 = (x25 + x68); let x70: u64 = (x23 + (x24 as u64)); let x71: u64 = (x22 + x70); let x72: u64 = (x21 + x71); let x73: u64 = (x20 + x72); let x74: u64 = (x19 + x73); let x75: u64 = (x18 + x74); let x76: u64 = (x17 + x75); let x77: u64 = (x15 + (x16 as u64)); let x78: u64 = (x14 + x77); let x79: u64 = (x13 + x78); let x80: u64 = (x12 + x79); let x81: u64 = (x11 + x80); let x82: u64 = (x10 + x81); let x83: u64 = (x9 + x82); let x84: u64 = (x7 + (x8 as u64)); let x85: u64 = (x6 + x84); let x86: u64 = (x5 + x85); let x87: u64 = (x4 + x86); let x88: u64 = (x3 + x87); let x89: u64 = (x2 + x88); let x90: u64 = (x1 + x89); out1[0] = x55; out1[1] = x62; out1[2] = x69; out1[3] = x76; out1[4] = x83; out1[5] = x90; out1 } #[doc = " The function fiat_p384_set_one returns the field element one in the Montgomery domain."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = 1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_set_one() -> fiat_p384_montgomery_domain_field_element { let mut out1: fiat_p384_montgomery_domain_field_element = [0; 6]; out1[0] = 0xffffffff00000001; out1[1] = 0xffffffff; out1[2] = (0x1 as u64); out1[3] = (0x0 as u64); out1[4] = (0x0 as u64); out1[5] = (0x0 as u64); out1 } #[doc = " The function fiat_p384_msat returns the saturated representation of the prime modulus."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " twos_complement_eval out1 = m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_msat() -> [u64; 7] { let mut out1: [u64; 7] = [0; 7]; out1[0] = 0xffffffff; out1[1] = 0xffffffff00000000; out1[2] = 0xfffffffffffffffe; out1[3] = 0xffffffffffffffff; out1[4] = 0xffffffffffffffff; out1[5] = 0xffffffffffffffff; out1[6] = (0x0 as u64); out1 } #[doc = " The function fiat_p384_divstep computes a divstep."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg4 < m"] #[doc = " 0 ≤ eval arg5 < m"] #[doc = " Postconditions:"] #[doc = " out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1)"] #[doc = " twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2)"] #[doc = " twos_complement_eval out3 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then ⌊(twos_complement_eval arg3 - twos_complement_eval arg2) / 2⌋ else ⌊(twos_complement_eval arg3 + (twos_complement_eval arg3 mod 2) * twos_complement_eval arg2) / 2⌋)"] #[doc = " eval (from_montgomery out4) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (2 * eval (from_montgomery arg5)) mod m else (2 * eval (from_montgomery arg4)) mod m)"] #[doc = " eval (from_montgomery out5) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (eval (from_montgomery arg4) - eval (from_montgomery arg4)) mod m else (eval (from_montgomery arg5) + (twos_complement_eval arg3 mod 2) * eval (from_montgomery arg4)) mod m)"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out2 < m"] #[doc = " 0 ≤ eval out3 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " arg4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " arg5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " out3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " out4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[doc = " out5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_divstep( arg1: u64, arg2: &[u64; 7], arg3: &[u64; 7], arg4: &[u64; 6], arg5: &[u64; 6], ) -> (u64, [u64; 7], [u64; 7], [u64; 6], [u64; 6]) { let mut out1: u64 = 0; let mut out2: [u64; 7] = [0; 7]; let mut out3: [u64; 7] = [0; 7]; let mut out4: [u64; 6] = [0; 6]; let mut out5: [u64; 6] = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_u1 = 0; let (x1, x2) = fiat_p384_addcarryx_u64(0x0, (!arg1), (0x1 as u64)); let x3: fiat_p384_u1 = (((x1 >> 63) as fiat_p384_u1) & (((arg3[0]) & (0x1 as u64)) as fiat_p384_u1)); let mut x4: u64 = 0; let mut x5: fiat_p384_u1 = 0; let (x4, x5) = fiat_p384_addcarryx_u64(0x0, (!arg1), (0x1 as u64)); let mut x6: u64 = 0; let (x6) = fiat_p384_cmovznz_u64(x3, arg1, x4); let mut x7: u64 = 0; let (x7) = fiat_p384_cmovznz_u64(x3, (arg2[0]), (arg3[0])); let mut x8: u64 = 0; let (x8) = fiat_p384_cmovznz_u64(x3, (arg2[1]), (arg3[1])); let mut x9: u64 = 0; let (x9) = fiat_p384_cmovznz_u64(x3, (arg2[2]), (arg3[2])); let mut x10: u64 = 0; let (x10) = fiat_p384_cmovznz_u64(x3, (arg2[3]), (arg3[3])); let mut x11: u64 = 0; let (x11) = fiat_p384_cmovznz_u64(x3, (arg2[4]), (arg3[4])); let mut x12: u64 = 0; let (x12) = fiat_p384_cmovznz_u64(x3, (arg2[5]), (arg3[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_cmovznz_u64(x3, (arg2[6]), (arg3[6])); let mut x14: u64 = 0; let mut x15: fiat_p384_u1 = 0; let (x14, x15) = fiat_p384_addcarryx_u64(0x0, (0x1 as u64), (!(arg2[0]))); let mut x16: u64 = 0; let mut x17: fiat_p384_u1 = 0; let (x16, x17) = fiat_p384_addcarryx_u64(x15, (0x0 as u64), (!(arg2[1]))); let mut x18: u64 = 0; let mut x19: fiat_p384_u1 = 0; let (x18, x19) = fiat_p384_addcarryx_u64(x17, (0x0 as u64), (!(arg2[2]))); let mut x20: u64 = 0; let mut x21: fiat_p384_u1 = 0; let (x20, x21) = fiat_p384_addcarryx_u64(x19, (0x0 as u64), (!(arg2[3]))); let mut x22: u64 = 0; let mut x23: fiat_p384_u1 = 0; let (x22, x23) = fiat_p384_addcarryx_u64(x21, (0x0 as u64), (!(arg2[4]))); let mut x24: u64 = 0; let mut x25: fiat_p384_u1 = 0; let (x24, x25) = fiat_p384_addcarryx_u64(x23, (0x0 as u64), (!(arg2[5]))); let mut x26: u64 = 0; let mut x27: fiat_p384_u1 = 0; let (x26, x27) = fiat_p384_addcarryx_u64(x25, (0x0 as u64), (!(arg2[6]))); let mut x28: u64 = 0; let (x28) = fiat_p384_cmovznz_u64(x3, (arg3[0]), x14); let mut x29: u64 = 0; let (x29) = fiat_p384_cmovznz_u64(x3, (arg3[1]), x16); let mut x30: u64 = 0; let (x30) = fiat_p384_cmovznz_u64(x3, (arg3[2]), x18); let mut x31: u64 = 0; let (x31) = fiat_p384_cmovznz_u64(x3, (arg3[3]), x20); let mut x32: u64 = 0; let (x32) = fiat_p384_cmovznz_u64(x3, (arg3[4]), x22); let mut x33: u64 = 0; let (x33) = fiat_p384_cmovznz_u64(x3, (arg3[5]), x24); let mut x34: u64 = 0; let (x34) = fiat_p384_cmovznz_u64(x3, (arg3[6]), x26); let mut x35: u64 = 0; let (x35) = fiat_p384_cmovznz_u64(x3, (arg4[0]), (arg5[0])); let mut x36: u64 = 0; let (x36) = fiat_p384_cmovznz_u64(x3, (arg4[1]), (arg5[1])); let mut x37: u64 = 0; let (x37) = fiat_p384_cmovznz_u64(x3, (arg4[2]), (arg5[2])); let mut x38: u64 = 0; let (x38) = fiat_p384_cmovznz_u64(x3, (arg4[3]), (arg5[3])); let mut x39: u64 = 0; let (x39) = fiat_p384_cmovznz_u64(x3, (arg4[4]), (arg5[4])); let mut x40: u64 = 0; let (x40) = fiat_p384_cmovznz_u64(x3, (arg4[5]), (arg5[5])); let mut x41: u64 = 0; let mut x42: fiat_p384_u1 = 0; let (x41, x42) = fiat_p384_addcarryx_u64(0x0, x35, x35); let mut x43: u64 = 0; let mut x44: fiat_p384_u1 = 0; let (x43, x44) = fiat_p384_addcarryx_u64(x42, x36, x36); let mut x45: u64 = 0; let mut x46: fiat_p384_u1 = 0; let (x45, x46) = fiat_p384_addcarryx_u64(x44, x37, x37); let mut x47: u64 = 0; let mut x48: fiat_p384_u1 = 0; let (x47, x48) = fiat_p384_addcarryx_u64(x46, x38, x38); let mut x49: u64 = 0; let mut x50: fiat_p384_u1 = 0; let (x49, x50) = fiat_p384_addcarryx_u64(x48, x39, x39); let mut x51: u64 = 0; let mut x52: fiat_p384_u1 = 0; let (x51, x52) = fiat_p384_addcarryx_u64(x50, x40, x40); let mut x53: u64 = 0; let mut x54: fiat_p384_u1 = 0; let (x53, x54) = fiat_p384_subborrowx_u64(0x0, x41, 0xffffffff); let mut x55: u64 = 0; let mut x56: fiat_p384_u1 = 0; let (x55, x56) = fiat_p384_subborrowx_u64(x54, x43, 0xffffffff00000000); let mut x57: u64 = 0; let mut x58: fiat_p384_u1 = 0; let (x57, x58) = fiat_p384_subborrowx_u64(x56, x45, 0xfffffffffffffffe); let mut x59: u64 = 0; let mut x60: fiat_p384_u1 = 0; let (x59, x60) = fiat_p384_subborrowx_u64(x58, x47, 0xffffffffffffffff); let mut x61: u64 = 0; let mut x62: fiat_p384_u1 = 0; let (x61, x62) = fiat_p384_subborrowx_u64(x60, x49, 0xffffffffffffffff); let mut x63: u64 = 0; let mut x64: fiat_p384_u1 = 0; let (x63, x64) = fiat_p384_subborrowx_u64(x62, x51, 0xffffffffffffffff); let mut x65: u64 = 0; let mut x66: fiat_p384_u1 = 0; let (x65, x66) = fiat_p384_subborrowx_u64(x64, (x52 as u64), (0x0 as u64)); let x67: u64 = (arg4[5]); let x68: u64 = (arg4[4]); let x69: u64 = (arg4[3]); let x70: u64 = (arg4[2]); let x71: u64 = (arg4[1]); let x72: u64 = (arg4[0]); let mut x73: u64 = 0; let mut x74: fiat_p384_u1 = 0; let (x73, x74) = fiat_p384_subborrowx_u64(0x0, (0x0 as u64), x72); let mut x75: u64 = 0; let mut x76: fiat_p384_u1 = 0; let (x75, x76) = fiat_p384_subborrowx_u64(x74, (0x0 as u64), x71); let mut x77: u64 = 0; let mut x78: fiat_p384_u1 = 0; let (x77, x78) = fiat_p384_subborrowx_u64(x76, (0x0 as u64), x70); let mut x79: u64 = 0; let mut x80: fiat_p384_u1 = 0; let (x79, x80) = fiat_p384_subborrowx_u64(x78, (0x0 as u64), x69); let mut x81: u64 = 0; let mut x82: fiat_p384_u1 = 0; let (x81, x82) = fiat_p384_subborrowx_u64(x80, (0x0 as u64), x68); let mut x83: u64 = 0; let mut x84: fiat_p384_u1 = 0; let (x83, x84) = fiat_p384_subborrowx_u64(x82, (0x0 as u64), x67); let mut x85: u64 = 0; let (x85) = fiat_p384_cmovznz_u64(x84, (0x0 as u64), 0xffffffffffffffff); let mut x86: u64 = 0; let mut x87: fiat_p384_u1 = 0; let (x86, x87) = fiat_p384_addcarryx_u64(0x0, x73, (x85 & 0xffffffff)); let mut x88: u64 = 0; let mut x89: fiat_p384_u1 = 0; let (x88, x89) = fiat_p384_addcarryx_u64(x87, x75, (x85 & 0xffffffff00000000)); let mut x90: u64 = 0; let mut x91: fiat_p384_u1 = 0; let (x90, x91) = fiat_p384_addcarryx_u64(x89, x77, (x85 & 0xfffffffffffffffe)); let mut x92: u64 = 0; let mut x93: fiat_p384_u1 = 0; let (x92, x93) = fiat_p384_addcarryx_u64(x91, x79, x85); let mut x94: u64 = 0; let mut x95: fiat_p384_u1 = 0; let (x94, x95) = fiat_p384_addcarryx_u64(x93, x81, x85); let mut x96: u64 = 0; let mut x97: fiat_p384_u1 = 0; let (x96, x97) = fiat_p384_addcarryx_u64(x95, x83, x85); let mut x98: u64 = 0; let (x98) = fiat_p384_cmovznz_u64(x3, (arg5[0]), x86); let mut x99: u64 = 0; let (x99) = fiat_p384_cmovznz_u64(x3, (arg5[1]), x88); let mut x100: u64 = 0; let (x100) = fiat_p384_cmovznz_u64(x3, (arg5[2]), x90); let mut x101: u64 = 0; let (x101) = fiat_p384_cmovznz_u64(x3, (arg5[3]), x92); let mut x102: u64 = 0; let (x102) = fiat_p384_cmovznz_u64(x3, (arg5[4]), x94); let mut x103: u64 = 0; let (x103) = fiat_p384_cmovznz_u64(x3, (arg5[5]), x96); let x104: fiat_p384_u1 = ((x28 & (0x1 as u64)) as fiat_p384_u1); let mut x105: u64 = 0; let (x105) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x7); let mut x106: u64 = 0; let (x106) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x8); let mut x107: u64 = 0; let (x107) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x9); let mut x108: u64 = 0; let (x108) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x10); let mut x109: u64 = 0; let (x109) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x11); let mut x110: u64 = 0; let (x110) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x12); let mut x111: u64 = 0; let (x111) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x13); let mut x112: u64 = 0; let mut x113: fiat_p384_u1 = 0; let (x112, x113) = fiat_p384_addcarryx_u64(0x0, x28, x105); let mut x114: u64 = 0; let mut x115: fiat_p384_u1 = 0; let (x114, x115) = fiat_p384_addcarryx_u64(x113, x29, x106); let mut x116: u64 = 0; let mut x117: fiat_p384_u1 = 0; let (x116, x117) = fiat_p384_addcarryx_u64(x115, x30, x107); let mut x118: u64 = 0; let mut x119: fiat_p384_u1 = 0; let (x118, x119) = fiat_p384_addcarryx_u64(x117, x31, x108); let mut x120: u64 = 0; let mut x121: fiat_p384_u1 = 0; let (x120, x121) = fiat_p384_addcarryx_u64(x119, x32, x109); let mut x122: u64 = 0; let mut x123: fiat_p384_u1 = 0; let (x122, x123) = fiat_p384_addcarryx_u64(x121, x33, x110); let mut x124: u64 = 0; let mut x125: fiat_p384_u1 = 0; let (x124, x125) = fiat_p384_addcarryx_u64(x123, x34, x111); let mut x126: u64 = 0; let (x126) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x35); let mut x127: u64 = 0; let (x127) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x36); let mut x128: u64 = 0; let (x128) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x37); let mut x129: u64 = 0; let (x129) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x38); let mut x130: u64 = 0; let (x130) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x39); let mut x131: u64 = 0; let (x131) = fiat_p384_cmovznz_u64(x104, (0x0 as u64), x40); let mut x132: u64 = 0; let mut x133: fiat_p384_u1 = 0; let (x132, x133) = fiat_p384_addcarryx_u64(0x0, x98, x126); let mut x134: u64 = 0; let mut x135: fiat_p384_u1 = 0; let (x134, x135) = fiat_p384_addcarryx_u64(x133, x99, x127); let mut x136: u64 = 0; let mut x137: fiat_p384_u1 = 0; let (x136, x137) = fiat_p384_addcarryx_u64(x135, x100, x128); let mut x138: u64 = 0; let mut x139: fiat_p384_u1 = 0; let (x138, x139) = fiat_p384_addcarryx_u64(x137, x101, x129); let mut x140: u64 = 0; let mut x141: fiat_p384_u1 = 0; let (x140, x141) = fiat_p384_addcarryx_u64(x139, x102, x130); let mut x142: u64 = 0; let mut x143: fiat_p384_u1 = 0; let (x142, x143) = fiat_p384_addcarryx_u64(x141, x103, x131); let mut x144: u64 = 0; let mut x145: fiat_p384_u1 = 0; let (x144, x145) = fiat_p384_subborrowx_u64(0x0, x132, 0xffffffff); let mut x146: u64 = 0; let mut x147: fiat_p384_u1 = 0; let (x146, x147) = fiat_p384_subborrowx_u64(x145, x134, 0xffffffff00000000); let mut x148: u64 = 0; let mut x149: fiat_p384_u1 = 0; let (x148, x149) = fiat_p384_subborrowx_u64(x147, x136, 0xfffffffffffffffe); let mut x150: u64 = 0; let mut x151: fiat_p384_u1 = 0; let (x150, x151) = fiat_p384_subborrowx_u64(x149, x138, 0xffffffffffffffff); let mut x152: u64 = 0; let mut x153: fiat_p384_u1 = 0; let (x152, x153) = fiat_p384_subborrowx_u64(x151, x140, 0xffffffffffffffff); let mut x154: u64 = 0; let mut x155: fiat_p384_u1 = 0; let (x154, x155) = fiat_p384_subborrowx_u64(x153, x142, 0xffffffffffffffff); let mut x156: u64 = 0; let mut x157: fiat_p384_u1 = 0; let (x156, x157) = fiat_p384_subborrowx_u64(x155, (x143 as u64), (0x0 as u64)); let mut x158: u64 = 0; let mut x159: fiat_p384_u1 = 0; let (x158, x159) = fiat_p384_addcarryx_u64(0x0, x6, (0x1 as u64)); let x160: u64 = ((x112 >> 1) | ((x114 << 63) & 0xffffffffffffffff)); let x161: u64 = ((x114 >> 1) | ((x116 << 63) & 0xffffffffffffffff)); let x162: u64 = ((x116 >> 1) | ((x118 << 63) & 0xffffffffffffffff)); let x163: u64 = ((x118 >> 1) | ((x120 << 63) & 0xffffffffffffffff)); let x164: u64 = ((x120 >> 1) | ((x122 << 63) & 0xffffffffffffffff)); let x165: u64 = ((x122 >> 1) | ((x124 << 63) & 0xffffffffffffffff)); let x166: u64 = ((x124 & 0x8000000000000000) | (x124 >> 1)); let mut x167: u64 = 0; let (x167) = fiat_p384_cmovznz_u64(x66, x53, x41); let mut x168: u64 = 0; let (x168) = fiat_p384_cmovznz_u64(x66, x55, x43); let mut x169: u64 = 0; let (x169) = fiat_p384_cmovznz_u64(x66, x57, x45); let mut x170: u64 = 0; let (x170) = fiat_p384_cmovznz_u64(x66, x59, x47); let mut x171: u64 = 0; let (x171) = fiat_p384_cmovznz_u64(x66, x61, x49); let mut x172: u64 = 0; let (x172) = fiat_p384_cmovznz_u64(x66, x63, x51); let mut x173: u64 = 0; let (x173) = fiat_p384_cmovznz_u64(x157, x144, x132); let mut x174: u64 = 0; let (x174) = fiat_p384_cmovznz_u64(x157, x146, x134); let mut x175: u64 = 0; let (x175) = fiat_p384_cmovznz_u64(x157, x148, x136); let mut x176: u64 = 0; let (x176) = fiat_p384_cmovznz_u64(x157, x150, x138); let mut x177: u64 = 0; let (x177) = fiat_p384_cmovznz_u64(x157, x152, x140); let mut x178: u64 = 0; let (x178) = fiat_p384_cmovznz_u64(x157, x154, x142); out1 = x158; out2[0] = x7; out2[1] = x8; out2[2] = x9; out2[3] = x10; out2[4] = x11; out2[5] = x12; out2[6] = x13; out3[0] = x160; out3[1] = x161; out3[2] = x162; out3[3] = x163; out3[4] = x164; out3[5] = x165; out3[6] = x166; out4[0] = x167; out4[1] = x168; out4[2] = x169; out4[3] = x170; out4[4] = x171; out4[5] = x172; out5[0] = x173; out5[1] = x174; out5[2] = x175; out5[3] = x176; out5[4] = x177; out5[5] = x178; (out1, out2, out3, out4, out5) } #[doc = " The function fiat_p384_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form)."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) = ⌊(m - 1) / 2⌋^(if ⌊log2 m⌋ + 1 < 46 then ⌊(49 * (⌊log2 m⌋ + 1) + 80) / 17⌋ else ⌊(49 * (⌊log2 m⌋ + 1) + 57) / 17⌋)"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_divstep_precomp() -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; out1[0] = 0xfff69400fff18fff; out1[1] = 0x2b7feffffd3ff; out1[2] = 0xfffedbfffffe97ff; out1[3] = 0x2840000002fff; out1[4] = 0x6040000050400; out1[5] = 0xfffc480000038000; out1 } p384-0.13.0/src/arithmetic/field.rs000064400000000000000000000131611046102023000147560ustar 00000000000000//! Field arithmetic modulo p = 2^{384} − 2^{128} − 2^{96} + 2^{32} − 1 //! //! Arithmetic implementations are extracted Rust code from the Coq fiat-crypto //! libraries. //! //! # License //! //! Copyright (c) 2015-2020 the fiat-crypto authors //! //! fiat-crypto is distributed under the terms of the MIT License, the //! Apache License (Version 2.0), and the BSD 1-Clause License; //! users may pick which license to apply. #![allow( clippy::should_implement_trait, clippy::suspicious_op_assign_impl, clippy::unused_unit, clippy::unnecessary_cast, clippy::too_many_arguments, clippy::identity_op )] #[cfg_attr(target_pointer_width = "32", path = "field/p384_32.rs")] #[cfg_attr(target_pointer_width = "64", path = "field/p384_64.rs")] mod field_impl; use self::field_impl::*; use crate::{FieldBytes, NistP384}; use core::{ iter::{Product, Sum}, ops::{AddAssign, MulAssign, Neg, SubAssign}, }; use elliptic_curve::{ bigint::{self, Limb, U384}, ff::PrimeField, subtle::{Choice, ConstantTimeEq, CtOption}, }; /// Constant representing the modulus /// p = 2^{384} − 2^{128} − 2^{96} + 2^{32} − 1 pub(crate) const MODULUS: U384 = U384::from_be_hex(FieldElement::MODULUS); /// Element of the secp384r1 base field used for curve coordinates. #[derive(Clone, Copy, Debug)] pub struct FieldElement(pub(super) U384); primeorder::impl_mont_field_element!( NistP384, FieldElement, FieldBytes, U384, MODULUS, fiat_p384_montgomery_domain_field_element, fiat_p384_from_montgomery, fiat_p384_to_montgomery, fiat_p384_add, fiat_p384_sub, fiat_p384_mul, fiat_p384_opp, fiat_p384_square ); impl FieldElement { /// Compute [`FieldElement`] inversion: `1 / self`. pub fn invert(&self) -> CtOption { CtOption::new(self.invert_unchecked(), !self.is_zero()) } /// Returns the multiplicative inverse of self. /// /// Does not check that self is non-zero. const fn invert_unchecked(&self) -> Self { let words = impl_field_invert!( self.to_canonical().as_words(), Self::ONE.0.to_words(), Limb::BITS, bigint::nlimbs!(U384::BITS), fiat_p384_mul, fiat_p384_opp, fiat_p384_divstep_precomp, fiat_p384_divstep, fiat_p384_msat, fiat_p384_selectznz, ); Self(U384::from_words(words)) } /// Returns the square root of self mod p, or `None` if no square root /// exists. pub fn sqrt(&self) -> CtOption { // p mod 4 = 3 -> compute sqrt(x) using x^((p+1)/4) = // x^9850501549098619803069760025035903451269934817616361666987073351061430442874217582261816522064734500465401743278080 let t1 = *self; let t10 = t1.square(); let t11 = t1 * t10; let t110 = t11.square(); let t111 = t1 * t110; let t111000 = t111.sqn(3); let t111111 = t111 * t111000; let t1111110 = t111111.square(); let t1111111 = t1 * t1111110; let x12 = t1111110.sqn(5) * t111111; let x24 = x12.sqn(12) * x12; let x31 = x24.sqn(7) * t1111111; let x32 = x31.square() * t1; let x63 = x32.sqn(31) * x31; let x126 = x63.sqn(63) * x63; let x252 = x126.sqn(126) * x126; let x255 = x252.sqn(3) * t111; let x = ((x255.sqn(33) * x32).sqn(64) * t1).sqn(30); CtOption::new(x, x.square().ct_eq(&t1)) } /// Returns self^(2^n) mod p. fn sqn(&self, n: usize) -> Self { let mut x = *self; for _ in 0..n { x = x.square(); } x } } impl PrimeField for FieldElement { type Repr = FieldBytes; const MODULUS: &'static str = "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000ffffffff"; const NUM_BITS: u32 = 384; const CAPACITY: u32 = 383; const TWO_INV: Self = Self::from_u64(2).invert_unchecked(); const MULTIPLICATIVE_GENERATOR: Self = Self::from_u64(19); const S: u32 = 1; const ROOT_OF_UNITY: Self = Self::from_hex("fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffe"); const ROOT_OF_UNITY_INV: Self = Self::ROOT_OF_UNITY.invert_unchecked(); const DELTA: Self = Self::from_u64(49); #[inline] fn from_repr(bytes: FieldBytes) -> CtOption { Self::from_bytes(&bytes) } #[inline] fn to_repr(&self) -> FieldBytes { self.to_bytes() } #[inline] fn is_odd(&self) -> Choice { self.is_odd() } } #[cfg(test)] mod tests { use super::FieldElement; use elliptic_curve::ff::PrimeField; use primeorder::impl_primefield_tests; /// t = (modulus - 1) >> S const T: [u64; 6] = [ 0x000000007fffffff, 0x7fffffff80000000, 0xffffffffffffffff, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffffffffff, ]; impl_primefield_tests!(FieldElement, T); /// Basic tests that field inversion works. #[test] fn invert() { let one = FieldElement::ONE; assert_eq!(one.invert().unwrap(), one); let three = one + &one + &one; let inv_three = three.invert().unwrap(); assert_eq!(three * &inv_three, one); let minus_three = -three; let inv_minus_three = minus_three.invert().unwrap(); assert_eq!(inv_minus_three, -inv_three); assert_eq!(three * &inv_minus_three, -one); } #[test] fn sqrt() { let one = FieldElement::ONE; let two = one + &one; let four = two.square(); assert_eq!(four.sqrt().unwrap(), two); } } p384-0.13.0/src/arithmetic/hash2curve.rs000064400000000000000000000372541046102023000157560ustar 00000000000000use super::FieldElement; use crate::{AffinePoint, FieldBytes, NistP384, ProjectivePoint, Scalar}; use elliptic_curve::{ bigint::{ArrayEncoding, U384}, consts::U72, generic_array::GenericArray, hash2curve::{FromOkm, GroupDigest, MapToCurve, OsswuMap, OsswuMapParams, Sgn0}, ops::Reduce, point::DecompressPoint, subtle::Choice, }; impl GroupDigest for NistP384 { type FieldElement = FieldElement; } impl FromOkm for FieldElement { type Length = U72; fn from_okm(data: &GenericArray) -> Self { const F_2_288: FieldElement = FieldElement::from_hex( "000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000", ); let mut d0 = FieldBytes::default(); d0[12..].copy_from_slice(&data[0..36]); let d0 = FieldElement::from_uint_unchecked(U384::from_be_byte_array(d0)); let mut d1 = FieldBytes::default(); d1[12..].copy_from_slice(&data[36..]); let d1 = FieldElement::from_uint_unchecked(U384::from_be_byte_array(d1)); d0 * F_2_288 + d1 } } impl Sgn0 for FieldElement { fn sgn0(&self) -> Choice { self.is_odd() } } impl OsswuMap for FieldElement { const PARAMS: OsswuMapParams = OsswuMapParams { c1: &[ 0x0000_0000_3fff_ffff, 0xbfff_ffff_c000_0000, 0xffff_ffff_ffff_ffff, 0xffff_ffff_ffff_ffff, 0xffff_ffff_ffff_ffff, 0x3fff_ffff_ffff_ffff, ], c2: FieldElement::from_hex( "019877cc1041b7555743c0ae2e3a3e61fb2aaa2e0e87ea557a563d8b598a0940d0a697a9e0b9e92cfaa314f583c9d066", ), map_a: FieldElement::from_hex( "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc", ), map_b: FieldElement::from_hex( "b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef", ), z: FieldElement::from_hex( "fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffff3", ), }; } impl MapToCurve for FieldElement { type Output = ProjectivePoint; fn map_to_curve(&self) -> Self::Output { let (qx, qy) = self.osswu(); // TODO(tarcieri): assert that `qy` is correct? less circuitous conversion? AffinePoint::decompress(&qx.to_bytes(), qy.is_odd()) .unwrap() .into() } } impl FromOkm for Scalar { type Length = U72; fn from_okm(data: &GenericArray) -> Self { const F_2_288: Scalar = Scalar::from_hex( "000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000", ); let mut d0 = FieldBytes::default(); d0[12..].copy_from_slice(&data[0..36]); let d0 = Scalar::reduce(U384::from_be_byte_array(d0)); let mut d1 = FieldBytes::default(); d1[12..].copy_from_slice(&data[36..]); let d1 = Scalar::reduce(U384::from_be_byte_array(d1)); d0 * F_2_288 + d1 } } #[cfg(test)] mod tests { use crate::{FieldElement, NistP384, Scalar}; use elliptic_curve::{ bigint::{ArrayEncoding, NonZero, U384, U576}, consts::U72, generic_array::GenericArray, group::cofactor::CofactorGroup, hash2curve::{self, ExpandMsgXmd, FromOkm, GroupDigest, MapToCurve}, ops::Reduce, sec1::{self, ToEncodedPoint}, Curve, }; use hex_literal::hex; use proptest::{num::u64::ANY, prelude::ProptestConfig, proptest}; use sha2::Sha384; #[test] fn hash_to_curve() { struct TestVector { msg: &'static [u8], p_x: [u8; 48], p_y: [u8; 48], u_0: [u8; 48], u_1: [u8; 48], q0_x: [u8; 48], q0_y: [u8; 48], q1_x: [u8; 48], q1_y: [u8; 48], } const DST: &[u8] = b"QUUX-V01-CS02-with-P384_XMD:SHA-384_SSWU_RO_"; const TEST_VECTORS: &[TestVector] = &[ TestVector { msg: b"", p_x: hex!("eb9fe1b4f4e14e7140803c1d99d0a93cd823d2b024040f9c067a8eca1f5a2eeac9ad604973527a356f3fa3aeff0e4d83"), p_y: hex!("0c21708cff382b7f4643c07b105c2eaec2cead93a917d825601e63c8f21f6abd9abc22c93c2bed6f235954b25048bb1a"), u_0: hex!("25c8d7dc1acd4ee617766693f7f8829396065d1b447eedb155871feffd9c6653279ac7e5c46edb7010a0e4ff64c9f3b4"), u_1: hex!("59428be4ed69131df59a0c6a8e188d2d4ece3f1b2a3a02602962b47efa4d7905945b1e2cc80b36aa35c99451073521ac"), q0_x: hex!("e4717e29eef38d862bee4902a7d21b44efb58c464e3e1f0d03894d94de310f8ffc6de86786dd3e15a1541b18d4eb2846"), q0_y: hex!("6b95a6e639822312298a47526bb77d9cd7bcf76244c991c8cd70075e2ee6e8b9a135c4a37e3c0768c7ca871c0ceb53d4"), q1_x: hex!("509527cfc0750eedc53147e6d5f78596c8a3b7360e0608e2fab0563a1670d58d8ae107c9f04bcf90e89489ace5650efd"), q1_y: hex!("33337b13cb35e173fdea4cb9e8cce915d836ff57803dbbeb7998aa49d17df2ff09b67031773039d09fbd9305a1566bc4"), }, TestVector { msg: b"abc", p_x: hex!("e02fc1a5f44a7519419dd314e29863f30df55a514da2d655775a81d413003c4d4e7fd59af0826dfaad4200ac6f60abe1"), p_y: hex!("01f638d04d98677d65bef99aef1a12a70a4cbb9270ec55248c04530d8bc1f8f90f8a6a859a7c1f1ddccedf8f96d675f6"), u_0: hex!("53350214cb6bef0b51abb791b1c4209a2b4c16a0c67e1ab1401017fad774cd3b3f9a8bcdf7f6229dd8dd5a075cb149a0"), u_1: hex!("c0473083898f63e03f26f14877a2407bd60c75ad491e7d26cbc6cc5ce815654075ec6b6898c7a41d74ceaf720a10c02e"), q0_x: hex!("fc853b69437aee9a19d5acf96a4ee4c5e04cf7b53406dfaa2afbdd7ad2351b7f554e4bbc6f5db4177d4d44f933a8f6ee"), q0_y: hex!("7e042547e01834c9043b10f3a8221c4a879cb156f04f72bfccab0c047a304e30f2aa8b2e260d34c4592c0c33dd0c6482"), q1_x: hex!("57912293709b3556b43a2dfb137a315d256d573b82ded120ef8c782d607c05d930d958e50cb6dc1cc480b9afc38c45f1"), q1_y: hex!("de9387dab0eef0bda219c6f168a92645a84665c4f2137c14270fb424b7532ff84843c3da383ceea24c47fa343c227bb8"), }, TestVector { msg: b"abcdef0123456789", p_x: hex!("bdecc1c1d870624965f19505be50459d363c71a699a496ab672f9a5d6b78676400926fbceee6fcd1780fe86e62b2aa89"), p_y: hex!("57cf1f99b5ee00f3c201139b3bfe4dd30a653193778d89a0accc5e0f47e46e4e4b85a0595da29c9494c1814acafe183c"), u_0: hex!("aab7fb87238cf6b2ab56cdcca7e028959bb2ea599d34f68484139dde85ec6548a6e48771d17956421bdb7790598ea52e"), u_1: hex!("26e8d833552d7844d167833ca5a87c35bcfaa5a0d86023479fb28e5cd6075c18b168bf1f5d2a0ea146d057971336d8d1"), q0_x: hex!("0ceece45b73f89844671df962ad2932122e878ad2259e650626924e4e7f132589341dec1480ebcbbbe3509d11fb570b7"), q0_y: hex!("fafd71a3115298f6be4ae5c6dfc96c400cfb55760f185b7b03f3fa45f3f91eb65d27628b3c705cafd0466fafa54883ce"), q1_x: hex!("dea1be8d3f9be4cbf4fab9d71d549dde76875b5d9b876832313a083ec81e528cbc2a0a1d0596b3bcb0ba77866b129776"), q1_y: hex!("eb15fe71662214fb03b65541f40d3eb0f4cf5c3b559f647da138c9f9b7484c48a08760e02c16f1992762cb7298fa52cf"), }, TestVector { msg: b"q128_qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq", p_x: hex!("03c3a9f401b78c6c36a52f07eeee0ec1289f178adf78448f43a3850e0456f5dd7f7633dd31676d990eda32882ab486c0"), p_y: hex!("cc183d0d7bdfd0a3af05f50e16a3f2de4abbc523215bf57c848d5ea662482b8c1f43dc453a93b94a8026db58f3f5d878"), u_0: hex!("04c00051b0de6e726d228c85bf243bf5f4789efb512b22b498cde3821db9da667199b74bd5a09a79583c6d353a3bb41c"), u_1: hex!("97580f218255f899f9204db64cd15e6a312cb4d8182375d1e5157c8f80f41d6a1a4b77fb1ded9dce56c32058b8d5202b"), q0_x: hex!("051a22105e0817a35d66196338c8d85bd52690d79bba373ead8a86dd9899411513bb9f75273f6483395a7847fb21edb4"), q0_y: hex!("f168295c1bbcff5f8b01248e9dbc885335d6d6a04aea960f7384f746ba6502ce477e624151cc1d1392b00df0f5400c06"), q1_x: hex!("6ad7bc8ed8b841efd8ad0765c8a23d0b968ec9aa360a558ff33500f164faa02bee6c704f5f91507c4c5aad2b0dc5b943"), q1_y: hex!("47313cc0a873ade774048338fc34ca5313f96bbf6ae22ac6ef475d85f03d24792dc6afba8d0b4a70170c1b4f0f716629"), }, TestVector { msg: b"a512_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", p_x: hex!("7b18d210b1f090ac701f65f606f6ca18fb8d081e3bc6cbd937c5604325f1cdea4c15c10a54ef303aabf2ea58bd9947a4"), p_y: hex!("ea857285a33abb516732915c353c75c576bf82ccc96adb63c094dde580021eddeafd91f8c0bfee6f636528f3d0c47fd2"), u_0: hex!("480cb3ac2c389db7f9dac9c396d2647ae946db844598971c26d1afd53912a1491199c0a5902811e4b809c26fcd37a014"), u_1: hex!("d28435eb34680e148bf3908536e42231cba9e1f73ae2c6902a222a89db5c49c97db2f8fa4d4cd6e424b17ac60bdb9bb6"), q0_x: hex!("42e6666f505e854187186bad3011598d9278b9d6e3e4d2503c3d236381a56748dec5d139c223129b324df53fa147c4df"), q0_y: hex!("8ee51dbda46413bf621838cc935d18d617881c6f33f3838a79c767a1e5618e34b22f79142df708d2432f75c7366c8512"), q1_x: hex!("4ff01ceeba60484fa1bc0d825fe1e5e383d8f79f1e5bb78e5fb26b7a7ef758153e31e78b9d60ce75c5e32e43869d4e12"), q1_y: hex!("0f84b978fac8ceda7304b47e229d6037d32062e597dc7a9b95bcd9af441f3c56c619a901d21635f9ec6ab4710b9fcd0e"), }, ]; for test_vector in TEST_VECTORS { // in parts let mut u = [FieldElement::default(), FieldElement::default()]; hash2curve::hash_to_field::, FieldElement>( &[test_vector.msg], &[DST], &mut u, ) .unwrap(); /// Assert that the provided projective point matches the given test vector. // TODO(tarcieri): use coordinate APIs. See zkcrypto/group#30 macro_rules! assert_point_eq { ($actual:expr, $expected_x:expr, $expected_y:expr) => { let point = $actual.to_affine().to_encoded_point(false); let (actual_x, actual_y) = match point.coordinates() { sec1::Coordinates::Uncompressed { x, y } => (x, y), _ => unreachable!(), }; assert_eq!(&$expected_x, actual_x.as_slice()); assert_eq!(&$expected_y, actual_y.as_slice()); }; } assert_eq!(u[0].to_bytes().as_slice(), test_vector.u_0); assert_eq!(u[1].to_bytes().as_slice(), test_vector.u_1); let q0 = u[0].map_to_curve(); assert_point_eq!(q0, test_vector.q0_x, test_vector.q0_y); let q1 = u[1].map_to_curve(); assert_point_eq!(q1, test_vector.q1_x, test_vector.q1_y); let p = q0.clear_cofactor() + q1.clear_cofactor(); assert_point_eq!(p, test_vector.p_x, test_vector.p_y); // complete run let pt = NistP384::hash_from_bytes::>(&[test_vector.msg], &[DST]) .unwrap(); assert_point_eq!(pt, test_vector.p_x, test_vector.p_y); } } /// Taken from . #[test] fn hash_to_scalar_voprf() { struct TestVector { dst: &'static [u8], key_info: &'static [u8], seed: &'static [u8], sk_sm: &'static [u8], } const TEST_VECTORS: &[TestVector] = &[ TestVector { dst: b"DeriveKeyPairVOPRF10-\x00\x00\x04", key_info: b"test key", seed: &hex!("a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"), sk_sm: &hex!("c0503759ddd1e31d8c7eae9304c9b1c16f83d1f6d962e3e7b789cd85fd581800e96c5c4256131aafcff9a76919abbd55"), }, TestVector { dst: b"DeriveKeyPairVOPRF10-\x01\x00\x04", key_info: b"test key", seed: &hex!("a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"), sk_sm: &hex!("514fb6fe2e66af1383840759d56f71730331280f062930ee2a2f7ea42f935acf94087355699d788abfdf09d19a5c85ac"), }, TestVector { dst: b"DeriveKeyPairVOPRF10-\x02\x00\x04", key_info: b"test key", seed: &hex!("a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3a3"), sk_sm: &hex!("0fcba4a204f67d6c13f780e613915f755319aaa3cb03cd20a5a4a6c403a4812a4fff5d3223e2c309aa66b05cb7611fd4"), }, ]; 'outer: for test_vector in TEST_VECTORS { let key_info_len = u16::try_from(test_vector.key_info.len()) .unwrap() .to_be_bytes(); for counter in 0_u8..=u8::MAX { let scalar = NistP384::hash_to_scalar::>( &[ test_vector.seed, &key_info_len, test_vector.key_info, &counter.to_be_bytes(), ], &[test_vector.dst], ) .unwrap(); if !bool::from(scalar.is_zero()) { assert_eq!(scalar.to_bytes().as_slice(), test_vector.sk_sm); continue 'outer; } } panic!("deriving key failed"); } } #[test] fn from_okm_fuzz() { let mut wide_order = GenericArray::default(); wide_order[24..].copy_from_slice(&NistP384::ORDER.to_be_byte_array()); let wide_order = NonZero::new(U576::from_be_byte_array(wide_order)).unwrap(); let simple_from_okm = move |data: GenericArray| -> Scalar { let data = U576::from_be_slice(&data); let scalar = data % wide_order; let reduced_scalar = U384::from_be_slice(&scalar.to_be_byte_array()[24..]); Scalar::reduce(reduced_scalar) }; proptest!(ProptestConfig::with_cases(1000), |(b0 in ANY, b1 in ANY, b2 in ANY, b3 in ANY, b4 in ANY, b5 in ANY, b6 in ANY, b7 in ANY, b8 in ANY)| { let mut data = GenericArray::default(); data[..8].copy_from_slice(&b0.to_be_bytes()); data[8..16].copy_from_slice(&b1.to_be_bytes()); data[16..24].copy_from_slice(&b2.to_be_bytes()); data[24..32].copy_from_slice(&b3.to_be_bytes()); data[32..40].copy_from_slice(&b4.to_be_bytes()); data[40..48].copy_from_slice(&b5.to_be_bytes()); data[48..56].copy_from_slice(&b6.to_be_bytes()); data[56..64].copy_from_slice(&b7.to_be_bytes()); data[64..].copy_from_slice(&b8.to_be_bytes()); let from_okm = Scalar::from_okm(&data); let simple_from_okm = simple_from_okm(data); assert_eq!(from_okm, simple_from_okm); }); } } p384-0.13.0/src/arithmetic/macros.rs000064400000000000000000000025171046102023000151620ustar 00000000000000/// Implement field element inversion. macro_rules! impl_field_invert { ( $a:expr, $one:expr, $word_bits:expr, $nlimbs:expr, $mul:ident, $neg:ident, $divstep_precomp:ident, $divstep:ident, $msat:ident, $selectznz:ident, ) => {{ const ITERATIONS: usize = (49 * $nlimbs * $word_bits + 57) / 17; let mut d = 1; let mut f = $msat(); let mut g = [0; $nlimbs + 1]; let mut v = [0; $nlimbs]; let mut r = $one; let mut i = 0; let mut j = 0; while j < $nlimbs { g[j] = $a[j]; j += 1; } while i < ITERATIONS - ITERATIONS % 2 { let (out1, out2, out3, out4, out5) = $divstep(d, &f, &g, &v, &r); let (out1, out2, out3, out4, out5) = $divstep(out1, &out2, &out3, &out4, &out5); d = out1; f = out2; g = out3; v = out4; r = out5; i += 2; } if ITERATIONS % 2 != 0 { let (_out1, out2, _out3, out4, _out5) = $divstep(d, &f, &g, &v, &r); v = out4; f = out2; } let s = ((f[f.len() - 1] >> $word_bits - 1) & 1) as u8; let v = $selectznz(s, &v, &$neg(&v)); $mul(&v, &$divstep_precomp()) }}; } p384-0.13.0/src/arithmetic/scalar/p384_scalar_32.rs000064400000000000000000020075201046102023000174730ustar 00000000000000#![doc = " fiat-crypto output postprocessed by fiat-constify: https://github.com/rustcrypto/utils"] #![doc = " Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --lang Rust --inline p384_scalar 32 '2^384 - 1388124618062372383947042015309946732620727252194336364173' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp"] #![doc = " curve description: p384_scalar"] #![doc = " machine_wordsize = 32 (from \"32\")"] #![doc = " requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp"] #![doc = " m = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973 (from \"2^384 - 1388124618062372383947042015309946732620727252194336364173\")"] #![doc = ""] #![doc = " NOTE: In addition to the bounds specified above each function, all"] #![doc = " functions synthesized for this Montgomery arithmetic require the"] #![doc = " input to be strictly less than the prime modulus (m), and also"] #![doc = " require the input to be in the unique saturated representation."] #![doc = " All functions also ensure that these two properties are true of"] #![doc = " return values."] #![doc = ""] #![doc = " Computed values:"] #![doc = " eval z = z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160)"] #![doc = " 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)"] #![doc = " twos_complement_eval z = let x1 := z[0] + (z[1] << 32) + (z[2] << 64) + (z[3] << 96) + (z[4] << 128) + (z[5] << 160) + (z[6] << 192) + (z[7] << 224) + (z[8] << 256) + (z[9] << 0x120) + (z[10] << 0x140) + (z[11] << 0x160) in"] #![doc = " if x1 & (2^384-1) < 2^383 then x1 & (2^384-1) else (x1 & (2^384-1)) - 2^384"] #![allow(unused_parens)] #![allow(non_camel_case_types)] #![allow( dead_code, rustdoc::bare_urls, rustdoc::broken_intra_doc_links, unused_assignments, unused_mut, unused_variables )] pub type fiat_p384_scalar_u1 = u8; pub type fiat_p384_scalar_i1 = i8; pub type fiat_p384_scalar_u2 = u8; pub type fiat_p384_scalar_i2 = i8; pub type fiat_p384_scalar_montgomery_domain_field_element = [u32; 12]; pub type fiat_p384_scalar_non_montgomery_domain_field_element = [u32; 12]; #[doc = " The function fiat_p384_scalar_addcarryx_u32 is an addition with carry."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 + arg2 + arg3) mod 2^32"] #[doc = " out2 = ⌊(arg1 + arg2 + arg3) / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_scalar_addcarryx_u32( arg1: fiat_p384_scalar_u1, arg2: u32, arg3: u32, ) -> (u32, fiat_p384_scalar_u1) { let mut out1: u32 = 0; let mut out2: fiat_p384_scalar_u1 = 0; let x1: u64 = (((arg1 as u64) + (arg2 as u64)) + (arg3 as u64)); let x2: u32 = ((x1 & (0xffffffff as u64)) as u32); let x3: fiat_p384_scalar_u1 = ((x1 >> 32) as fiat_p384_scalar_u1); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_scalar_subborrowx_u32 is a subtraction with borrow."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (-arg1 + arg2 + -arg3) mod 2^32"] #[doc = " out2 = -⌊(-arg1 + arg2 + -arg3) / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_scalar_subborrowx_u32( arg1: fiat_p384_scalar_u1, arg2: u32, arg3: u32, ) -> (u32, fiat_p384_scalar_u1) { let mut out1: u32 = 0; let mut out2: fiat_p384_scalar_u1 = 0; let x1: i64 = (((arg2 as i64) - (arg1 as i64)) - (arg3 as i64)); let x2: fiat_p384_scalar_i1 = ((x1 >> 32) as fiat_p384_scalar_i1); let x3: u32 = ((x1 & (0xffffffff as i64)) as u32); out1 = x3; out2 = (((0x0 as fiat_p384_scalar_i2) - (x2 as fiat_p384_scalar_i2)) as fiat_p384_scalar_u1); (out1, out2) } #[doc = " The function fiat_p384_scalar_mulx_u32 is a multiplication, returning the full double-width result."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 * arg2) mod 2^32"] #[doc = " out2 = ⌊arg1 * arg2 / 2^32⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffff]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_scalar_mulx_u32(arg1: u32, arg2: u32) -> (u32, u32) { let mut out1: u32 = 0; let mut out2: u32 = 0; let x1: u64 = ((arg1 as u64) * (arg2 as u64)); let x2: u32 = ((x1 & (0xffffffff as u64)) as u32); let x3: u32 = ((x1 >> 32) as u32); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_scalar_cmovznz_u32 is a single-word conditional move."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_scalar_cmovznz_u32(arg1: fiat_p384_scalar_u1, arg2: u32, arg3: u32) -> u32 { let mut out1: u32 = 0; let x1: fiat_p384_scalar_u1 = (!(!arg1)); let x2: u32 = ((((((0x0 as fiat_p384_scalar_i2) - (x1 as fiat_p384_scalar_i2)) as fiat_p384_scalar_i1) as i64) & (0xffffffff as i64)) as u32); let x3: u32 = ((x2 & arg3) | ((!x2) & arg2)); out1 = x3; out1 } #[doc = " The function fiat_p384_scalar_mul multiplies two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_mul( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u32(x12, (arg2[11])); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u32(x12, (arg2[10])); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u32(x12, (arg2[9])); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_scalar_mulx_u32(x12, (arg2[8])); let mut x21: u32 = 0; let mut x22: u32 = 0; let (x21, x22) = fiat_p384_scalar_mulx_u32(x12, (arg2[7])); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_scalar_mulx_u32(x12, (arg2[6])); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_scalar_mulx_u32(x12, (arg2[5])); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_scalar_mulx_u32(x12, (arg2[4])); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_scalar_mulx_u32(x12, (arg2[3])); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_scalar_mulx_u32(x12, (arg2[2])); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_scalar_mulx_u32(x12, (arg2[1])); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_scalar_mulx_u32(x12, (arg2[0])); let mut x37: u32 = 0; let mut x38: fiat_p384_scalar_u1 = 0; let (x37, x38) = fiat_p384_scalar_addcarryx_u32(0x0, x36, x33); let mut x39: u32 = 0; let mut x40: fiat_p384_scalar_u1 = 0; let (x39, x40) = fiat_p384_scalar_addcarryx_u32(x38, x34, x31); let mut x41: u32 = 0; let mut x42: fiat_p384_scalar_u1 = 0; let (x41, x42) = fiat_p384_scalar_addcarryx_u32(x40, x32, x29); let mut x43: u32 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_addcarryx_u32(x42, x30, x27); let mut x45: u32 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_addcarryx_u32(x44, x28, x25); let mut x47: u32 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_addcarryx_u32(x46, x26, x23); let mut x49: u32 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_addcarryx_u32(x48, x24, x21); let mut x51: u32 = 0; let mut x52: fiat_p384_scalar_u1 = 0; let (x51, x52) = fiat_p384_scalar_addcarryx_u32(x50, x22, x19); let mut x53: u32 = 0; let mut x54: fiat_p384_scalar_u1 = 0; let (x53, x54) = fiat_p384_scalar_addcarryx_u32(x52, x20, x17); let mut x55: u32 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u32(x54, x18, x15); let mut x57: u32 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u32(x56, x16, x13); let x59: u32 = ((x58 as u32) + x14); let mut x60: u32 = 0; let mut x61: u32 = 0; let (x60, x61) = fiat_p384_scalar_mulx_u32(x35, 0xe88fdc45); let mut x62: u32 = 0; let mut x63: u32 = 0; let (x62, x63) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x64: u32 = 0; let mut x65: u32 = 0; let (x64, x65) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x66: u32 = 0; let mut x67: u32 = 0; let (x66, x67) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x68: u32 = 0; let mut x69: u32 = 0; let (x68, x69) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x70: u32 = 0; let mut x71: u32 = 0; let (x70, x71) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x72: u32 = 0; let mut x73: u32 = 0; let (x72, x73) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x74: u32 = 0; let mut x75: u32 = 0; let (x74, x75) = fiat_p384_scalar_mulx_u32(x60, 0xc7634d81); let mut x76: u32 = 0; let mut x77: u32 = 0; let (x76, x77) = fiat_p384_scalar_mulx_u32(x60, 0xf4372ddf); let mut x78: u32 = 0; let mut x79: u32 = 0; let (x78, x79) = fiat_p384_scalar_mulx_u32(x60, 0x581a0db2); let mut x80: u32 = 0; let mut x81: u32 = 0; let (x80, x81) = fiat_p384_scalar_mulx_u32(x60, 0x48b0a77a); let mut x82: u32 = 0; let mut x83: u32 = 0; let (x82, x83) = fiat_p384_scalar_mulx_u32(x60, 0xecec196a); let mut x84: u32 = 0; let mut x85: u32 = 0; let (x84, x85) = fiat_p384_scalar_mulx_u32(x60, 0xccc52973); let mut x86: u32 = 0; let mut x87: fiat_p384_scalar_u1 = 0; let (x86, x87) = fiat_p384_scalar_addcarryx_u32(0x0, x85, x82); let mut x88: u32 = 0; let mut x89: fiat_p384_scalar_u1 = 0; let (x88, x89) = fiat_p384_scalar_addcarryx_u32(x87, x83, x80); let mut x90: u32 = 0; let mut x91: fiat_p384_scalar_u1 = 0; let (x90, x91) = fiat_p384_scalar_addcarryx_u32(x89, x81, x78); let mut x92: u32 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u32(x91, x79, x76); let mut x94: u32 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u32(x93, x77, x74); let mut x96: u32 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u32(x95, x75, x72); let mut x98: u32 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u32(x97, x73, x70); let mut x100: u32 = 0; let mut x101: fiat_p384_scalar_u1 = 0; let (x100, x101) = fiat_p384_scalar_addcarryx_u32(x99, x71, x68); let mut x102: u32 = 0; let mut x103: fiat_p384_scalar_u1 = 0; let (x102, x103) = fiat_p384_scalar_addcarryx_u32(x101, x69, x66); let mut x104: u32 = 0; let mut x105: fiat_p384_scalar_u1 = 0; let (x104, x105) = fiat_p384_scalar_addcarryx_u32(x103, x67, x64); let mut x106: u32 = 0; let mut x107: fiat_p384_scalar_u1 = 0; let (x106, x107) = fiat_p384_scalar_addcarryx_u32(x105, x65, x62); let x108: u32 = ((x107 as u32) + x63); let mut x109: u32 = 0; let mut x110: fiat_p384_scalar_u1 = 0; let (x109, x110) = fiat_p384_scalar_addcarryx_u32(0x0, x35, x84); let mut x111: u32 = 0; let mut x112: fiat_p384_scalar_u1 = 0; let (x111, x112) = fiat_p384_scalar_addcarryx_u32(x110, x37, x86); let mut x113: u32 = 0; let mut x114: fiat_p384_scalar_u1 = 0; let (x113, x114) = fiat_p384_scalar_addcarryx_u32(x112, x39, x88); let mut x115: u32 = 0; let mut x116: fiat_p384_scalar_u1 = 0; let (x115, x116) = fiat_p384_scalar_addcarryx_u32(x114, x41, x90); let mut x117: u32 = 0; let mut x118: fiat_p384_scalar_u1 = 0; let (x117, x118) = fiat_p384_scalar_addcarryx_u32(x116, x43, x92); let mut x119: u32 = 0; let mut x120: fiat_p384_scalar_u1 = 0; let (x119, x120) = fiat_p384_scalar_addcarryx_u32(x118, x45, x94); let mut x121: u32 = 0; let mut x122: fiat_p384_scalar_u1 = 0; let (x121, x122) = fiat_p384_scalar_addcarryx_u32(x120, x47, x96); let mut x123: u32 = 0; let mut x124: fiat_p384_scalar_u1 = 0; let (x123, x124) = fiat_p384_scalar_addcarryx_u32(x122, x49, x98); let mut x125: u32 = 0; let mut x126: fiat_p384_scalar_u1 = 0; let (x125, x126) = fiat_p384_scalar_addcarryx_u32(x124, x51, x100); let mut x127: u32 = 0; let mut x128: fiat_p384_scalar_u1 = 0; let (x127, x128) = fiat_p384_scalar_addcarryx_u32(x126, x53, x102); let mut x129: u32 = 0; let mut x130: fiat_p384_scalar_u1 = 0; let (x129, x130) = fiat_p384_scalar_addcarryx_u32(x128, x55, x104); let mut x131: u32 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u32(x130, x57, x106); let mut x133: u32 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_addcarryx_u32(x132, x59, x108); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_scalar_mulx_u32(x1, (arg2[11])); let mut x137: u32 = 0; let mut x138: u32 = 0; let (x137, x138) = fiat_p384_scalar_mulx_u32(x1, (arg2[10])); let mut x139: u32 = 0; let mut x140: u32 = 0; let (x139, x140) = fiat_p384_scalar_mulx_u32(x1, (arg2[9])); let mut x141: u32 = 0; let mut x142: u32 = 0; let (x141, x142) = fiat_p384_scalar_mulx_u32(x1, (arg2[8])); let mut x143: u32 = 0; let mut x144: u32 = 0; let (x143, x144) = fiat_p384_scalar_mulx_u32(x1, (arg2[7])); let mut x145: u32 = 0; let mut x146: u32 = 0; let (x145, x146) = fiat_p384_scalar_mulx_u32(x1, (arg2[6])); let mut x147: u32 = 0; let mut x148: u32 = 0; let (x147, x148) = fiat_p384_scalar_mulx_u32(x1, (arg2[5])); let mut x149: u32 = 0; let mut x150: u32 = 0; let (x149, x150) = fiat_p384_scalar_mulx_u32(x1, (arg2[4])); let mut x151: u32 = 0; let mut x152: u32 = 0; let (x151, x152) = fiat_p384_scalar_mulx_u32(x1, (arg2[3])); let mut x153: u32 = 0; let mut x154: u32 = 0; let (x153, x154) = fiat_p384_scalar_mulx_u32(x1, (arg2[2])); let mut x155: u32 = 0; let mut x156: u32 = 0; let (x155, x156) = fiat_p384_scalar_mulx_u32(x1, (arg2[1])); let mut x157: u32 = 0; let mut x158: u32 = 0; let (x157, x158) = fiat_p384_scalar_mulx_u32(x1, (arg2[0])); let mut x159: u32 = 0; let mut x160: fiat_p384_scalar_u1 = 0; let (x159, x160) = fiat_p384_scalar_addcarryx_u32(0x0, x158, x155); let mut x161: u32 = 0; let mut x162: fiat_p384_scalar_u1 = 0; let (x161, x162) = fiat_p384_scalar_addcarryx_u32(x160, x156, x153); let mut x163: u32 = 0; let mut x164: fiat_p384_scalar_u1 = 0; let (x163, x164) = fiat_p384_scalar_addcarryx_u32(x162, x154, x151); let mut x165: u32 = 0; let mut x166: fiat_p384_scalar_u1 = 0; let (x165, x166) = fiat_p384_scalar_addcarryx_u32(x164, x152, x149); let mut x167: u32 = 0; let mut x168: fiat_p384_scalar_u1 = 0; let (x167, x168) = fiat_p384_scalar_addcarryx_u32(x166, x150, x147); let mut x169: u32 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u32(x168, x148, x145); let mut x171: u32 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u32(x170, x146, x143); let mut x173: u32 = 0; let mut x174: fiat_p384_scalar_u1 = 0; let (x173, x174) = fiat_p384_scalar_addcarryx_u32(x172, x144, x141); let mut x175: u32 = 0; let mut x176: fiat_p384_scalar_u1 = 0; let (x175, x176) = fiat_p384_scalar_addcarryx_u32(x174, x142, x139); let mut x177: u32 = 0; let mut x178: fiat_p384_scalar_u1 = 0; let (x177, x178) = fiat_p384_scalar_addcarryx_u32(x176, x140, x137); let mut x179: u32 = 0; let mut x180: fiat_p384_scalar_u1 = 0; let (x179, x180) = fiat_p384_scalar_addcarryx_u32(x178, x138, x135); let x181: u32 = ((x180 as u32) + x136); let mut x182: u32 = 0; let mut x183: fiat_p384_scalar_u1 = 0; let (x182, x183) = fiat_p384_scalar_addcarryx_u32(0x0, x111, x157); let mut x184: u32 = 0; let mut x185: fiat_p384_scalar_u1 = 0; let (x184, x185) = fiat_p384_scalar_addcarryx_u32(x183, x113, x159); let mut x186: u32 = 0; let mut x187: fiat_p384_scalar_u1 = 0; let (x186, x187) = fiat_p384_scalar_addcarryx_u32(x185, x115, x161); let mut x188: u32 = 0; let mut x189: fiat_p384_scalar_u1 = 0; let (x188, x189) = fiat_p384_scalar_addcarryx_u32(x187, x117, x163); let mut x190: u32 = 0; let mut x191: fiat_p384_scalar_u1 = 0; let (x190, x191) = fiat_p384_scalar_addcarryx_u32(x189, x119, x165); let mut x192: u32 = 0; let mut x193: fiat_p384_scalar_u1 = 0; let (x192, x193) = fiat_p384_scalar_addcarryx_u32(x191, x121, x167); let mut x194: u32 = 0; let mut x195: fiat_p384_scalar_u1 = 0; let (x194, x195) = fiat_p384_scalar_addcarryx_u32(x193, x123, x169); let mut x196: u32 = 0; let mut x197: fiat_p384_scalar_u1 = 0; let (x196, x197) = fiat_p384_scalar_addcarryx_u32(x195, x125, x171); let mut x198: u32 = 0; let mut x199: fiat_p384_scalar_u1 = 0; let (x198, x199) = fiat_p384_scalar_addcarryx_u32(x197, x127, x173); let mut x200: u32 = 0; let mut x201: fiat_p384_scalar_u1 = 0; let (x200, x201) = fiat_p384_scalar_addcarryx_u32(x199, x129, x175); let mut x202: u32 = 0; let mut x203: fiat_p384_scalar_u1 = 0; let (x202, x203) = fiat_p384_scalar_addcarryx_u32(x201, x131, x177); let mut x204: u32 = 0; let mut x205: fiat_p384_scalar_u1 = 0; let (x204, x205) = fiat_p384_scalar_addcarryx_u32(x203, x133, x179); let mut x206: u32 = 0; let mut x207: fiat_p384_scalar_u1 = 0; let (x206, x207) = fiat_p384_scalar_addcarryx_u32(x205, (x134 as u32), x181); let mut x208: u32 = 0; let mut x209: u32 = 0; let (x208, x209) = fiat_p384_scalar_mulx_u32(x182, 0xe88fdc45); let mut x210: u32 = 0; let mut x211: u32 = 0; let (x210, x211) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x212: u32 = 0; let mut x213: u32 = 0; let (x212, x213) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x216: u32 = 0; let mut x217: u32 = 0; let (x216, x217) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x218: u32 = 0; let mut x219: u32 = 0; let (x218, x219) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x220: u32 = 0; let mut x221: u32 = 0; let (x220, x221) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x222: u32 = 0; let mut x223: u32 = 0; let (x222, x223) = fiat_p384_scalar_mulx_u32(x208, 0xc7634d81); let mut x224: u32 = 0; let mut x225: u32 = 0; let (x224, x225) = fiat_p384_scalar_mulx_u32(x208, 0xf4372ddf); let mut x226: u32 = 0; let mut x227: u32 = 0; let (x226, x227) = fiat_p384_scalar_mulx_u32(x208, 0x581a0db2); let mut x228: u32 = 0; let mut x229: u32 = 0; let (x228, x229) = fiat_p384_scalar_mulx_u32(x208, 0x48b0a77a); let mut x230: u32 = 0; let mut x231: u32 = 0; let (x230, x231) = fiat_p384_scalar_mulx_u32(x208, 0xecec196a); let mut x232: u32 = 0; let mut x233: u32 = 0; let (x232, x233) = fiat_p384_scalar_mulx_u32(x208, 0xccc52973); let mut x234: u32 = 0; let mut x235: fiat_p384_scalar_u1 = 0; let (x234, x235) = fiat_p384_scalar_addcarryx_u32(0x0, x233, x230); let mut x236: u32 = 0; let mut x237: fiat_p384_scalar_u1 = 0; let (x236, x237) = fiat_p384_scalar_addcarryx_u32(x235, x231, x228); let mut x238: u32 = 0; let mut x239: fiat_p384_scalar_u1 = 0; let (x238, x239) = fiat_p384_scalar_addcarryx_u32(x237, x229, x226); let mut x240: u32 = 0; let mut x241: fiat_p384_scalar_u1 = 0; let (x240, x241) = fiat_p384_scalar_addcarryx_u32(x239, x227, x224); let mut x242: u32 = 0; let mut x243: fiat_p384_scalar_u1 = 0; let (x242, x243) = fiat_p384_scalar_addcarryx_u32(x241, x225, x222); let mut x244: u32 = 0; let mut x245: fiat_p384_scalar_u1 = 0; let (x244, x245) = fiat_p384_scalar_addcarryx_u32(x243, x223, x220); let mut x246: u32 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u32(x245, x221, x218); let mut x248: u32 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u32(x247, x219, x216); let mut x250: u32 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u32(x249, x217, x214); let mut x252: u32 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u32(x251, x215, x212); let mut x254: u32 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u32(x253, x213, x210); let x256: u32 = ((x255 as u32) + x211); let mut x257: u32 = 0; let mut x258: fiat_p384_scalar_u1 = 0; let (x257, x258) = fiat_p384_scalar_addcarryx_u32(0x0, x182, x232); let mut x259: u32 = 0; let mut x260: fiat_p384_scalar_u1 = 0; let (x259, x260) = fiat_p384_scalar_addcarryx_u32(x258, x184, x234); let mut x261: u32 = 0; let mut x262: fiat_p384_scalar_u1 = 0; let (x261, x262) = fiat_p384_scalar_addcarryx_u32(x260, x186, x236); let mut x263: u32 = 0; let mut x264: fiat_p384_scalar_u1 = 0; let (x263, x264) = fiat_p384_scalar_addcarryx_u32(x262, x188, x238); let mut x265: u32 = 0; let mut x266: fiat_p384_scalar_u1 = 0; let (x265, x266) = fiat_p384_scalar_addcarryx_u32(x264, x190, x240); let mut x267: u32 = 0; let mut x268: fiat_p384_scalar_u1 = 0; let (x267, x268) = fiat_p384_scalar_addcarryx_u32(x266, x192, x242); let mut x269: u32 = 0; let mut x270: fiat_p384_scalar_u1 = 0; let (x269, x270) = fiat_p384_scalar_addcarryx_u32(x268, x194, x244); let mut x271: u32 = 0; let mut x272: fiat_p384_scalar_u1 = 0; let (x271, x272) = fiat_p384_scalar_addcarryx_u32(x270, x196, x246); let mut x273: u32 = 0; let mut x274: fiat_p384_scalar_u1 = 0; let (x273, x274) = fiat_p384_scalar_addcarryx_u32(x272, x198, x248); let mut x275: u32 = 0; let mut x276: fiat_p384_scalar_u1 = 0; let (x275, x276) = fiat_p384_scalar_addcarryx_u32(x274, x200, x250); let mut x277: u32 = 0; let mut x278: fiat_p384_scalar_u1 = 0; let (x277, x278) = fiat_p384_scalar_addcarryx_u32(x276, x202, x252); let mut x279: u32 = 0; let mut x280: fiat_p384_scalar_u1 = 0; let (x279, x280) = fiat_p384_scalar_addcarryx_u32(x278, x204, x254); let mut x281: u32 = 0; let mut x282: fiat_p384_scalar_u1 = 0; let (x281, x282) = fiat_p384_scalar_addcarryx_u32(x280, x206, x256); let x283: u32 = ((x282 as u32) + (x207 as u32)); let mut x284: u32 = 0; let mut x285: u32 = 0; let (x284, x285) = fiat_p384_scalar_mulx_u32(x2, (arg2[11])); let mut x286: u32 = 0; let mut x287: u32 = 0; let (x286, x287) = fiat_p384_scalar_mulx_u32(x2, (arg2[10])); let mut x288: u32 = 0; let mut x289: u32 = 0; let (x288, x289) = fiat_p384_scalar_mulx_u32(x2, (arg2[9])); let mut x290: u32 = 0; let mut x291: u32 = 0; let (x290, x291) = fiat_p384_scalar_mulx_u32(x2, (arg2[8])); let mut x292: u32 = 0; let mut x293: u32 = 0; let (x292, x293) = fiat_p384_scalar_mulx_u32(x2, (arg2[7])); let mut x294: u32 = 0; let mut x295: u32 = 0; let (x294, x295) = fiat_p384_scalar_mulx_u32(x2, (arg2[6])); let mut x296: u32 = 0; let mut x297: u32 = 0; let (x296, x297) = fiat_p384_scalar_mulx_u32(x2, (arg2[5])); let mut x298: u32 = 0; let mut x299: u32 = 0; let (x298, x299) = fiat_p384_scalar_mulx_u32(x2, (arg2[4])); let mut x300: u32 = 0; let mut x301: u32 = 0; let (x300, x301) = fiat_p384_scalar_mulx_u32(x2, (arg2[3])); let mut x302: u32 = 0; let mut x303: u32 = 0; let (x302, x303) = fiat_p384_scalar_mulx_u32(x2, (arg2[2])); let mut x304: u32 = 0; let mut x305: u32 = 0; let (x304, x305) = fiat_p384_scalar_mulx_u32(x2, (arg2[1])); let mut x306: u32 = 0; let mut x307: u32 = 0; let (x306, x307) = fiat_p384_scalar_mulx_u32(x2, (arg2[0])); let mut x308: u32 = 0; let mut x309: fiat_p384_scalar_u1 = 0; let (x308, x309) = fiat_p384_scalar_addcarryx_u32(0x0, x307, x304); let mut x310: u32 = 0; let mut x311: fiat_p384_scalar_u1 = 0; let (x310, x311) = fiat_p384_scalar_addcarryx_u32(x309, x305, x302); let mut x312: u32 = 0; let mut x313: fiat_p384_scalar_u1 = 0; let (x312, x313) = fiat_p384_scalar_addcarryx_u32(x311, x303, x300); let mut x314: u32 = 0; let mut x315: fiat_p384_scalar_u1 = 0; let (x314, x315) = fiat_p384_scalar_addcarryx_u32(x313, x301, x298); let mut x316: u32 = 0; let mut x317: fiat_p384_scalar_u1 = 0; let (x316, x317) = fiat_p384_scalar_addcarryx_u32(x315, x299, x296); let mut x318: u32 = 0; let mut x319: fiat_p384_scalar_u1 = 0; let (x318, x319) = fiat_p384_scalar_addcarryx_u32(x317, x297, x294); let mut x320: u32 = 0; let mut x321: fiat_p384_scalar_u1 = 0; let (x320, x321) = fiat_p384_scalar_addcarryx_u32(x319, x295, x292); let mut x322: u32 = 0; let mut x323: fiat_p384_scalar_u1 = 0; let (x322, x323) = fiat_p384_scalar_addcarryx_u32(x321, x293, x290); let mut x324: u32 = 0; let mut x325: fiat_p384_scalar_u1 = 0; let (x324, x325) = fiat_p384_scalar_addcarryx_u32(x323, x291, x288); let mut x326: u32 = 0; let mut x327: fiat_p384_scalar_u1 = 0; let (x326, x327) = fiat_p384_scalar_addcarryx_u32(x325, x289, x286); let mut x328: u32 = 0; let mut x329: fiat_p384_scalar_u1 = 0; let (x328, x329) = fiat_p384_scalar_addcarryx_u32(x327, x287, x284); let x330: u32 = ((x329 as u32) + x285); let mut x331: u32 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u32(0x0, x259, x306); let mut x333: u32 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u32(x332, x261, x308); let mut x335: u32 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u32(x334, x263, x310); let mut x337: u32 = 0; let mut x338: fiat_p384_scalar_u1 = 0; let (x337, x338) = fiat_p384_scalar_addcarryx_u32(x336, x265, x312); let mut x339: u32 = 0; let mut x340: fiat_p384_scalar_u1 = 0; let (x339, x340) = fiat_p384_scalar_addcarryx_u32(x338, x267, x314); let mut x341: u32 = 0; let mut x342: fiat_p384_scalar_u1 = 0; let (x341, x342) = fiat_p384_scalar_addcarryx_u32(x340, x269, x316); let mut x343: u32 = 0; let mut x344: fiat_p384_scalar_u1 = 0; let (x343, x344) = fiat_p384_scalar_addcarryx_u32(x342, x271, x318); let mut x345: u32 = 0; let mut x346: fiat_p384_scalar_u1 = 0; let (x345, x346) = fiat_p384_scalar_addcarryx_u32(x344, x273, x320); let mut x347: u32 = 0; let mut x348: fiat_p384_scalar_u1 = 0; let (x347, x348) = fiat_p384_scalar_addcarryx_u32(x346, x275, x322); let mut x349: u32 = 0; let mut x350: fiat_p384_scalar_u1 = 0; let (x349, x350) = fiat_p384_scalar_addcarryx_u32(x348, x277, x324); let mut x351: u32 = 0; let mut x352: fiat_p384_scalar_u1 = 0; let (x351, x352) = fiat_p384_scalar_addcarryx_u32(x350, x279, x326); let mut x353: u32 = 0; let mut x354: fiat_p384_scalar_u1 = 0; let (x353, x354) = fiat_p384_scalar_addcarryx_u32(x352, x281, x328); let mut x355: u32 = 0; let mut x356: fiat_p384_scalar_u1 = 0; let (x355, x356) = fiat_p384_scalar_addcarryx_u32(x354, x283, x330); let mut x357: u32 = 0; let mut x358: u32 = 0; let (x357, x358) = fiat_p384_scalar_mulx_u32(x331, 0xe88fdc45); let mut x359: u32 = 0; let mut x360: u32 = 0; let (x359, x360) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x361: u32 = 0; let mut x362: u32 = 0; let (x361, x362) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x363: u32 = 0; let mut x364: u32 = 0; let (x363, x364) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x365: u32 = 0; let mut x366: u32 = 0; let (x365, x366) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x367: u32 = 0; let mut x368: u32 = 0; let (x367, x368) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x369: u32 = 0; let mut x370: u32 = 0; let (x369, x370) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x371: u32 = 0; let mut x372: u32 = 0; let (x371, x372) = fiat_p384_scalar_mulx_u32(x357, 0xc7634d81); let mut x373: u32 = 0; let mut x374: u32 = 0; let (x373, x374) = fiat_p384_scalar_mulx_u32(x357, 0xf4372ddf); let mut x375: u32 = 0; let mut x376: u32 = 0; let (x375, x376) = fiat_p384_scalar_mulx_u32(x357, 0x581a0db2); let mut x377: u32 = 0; let mut x378: u32 = 0; let (x377, x378) = fiat_p384_scalar_mulx_u32(x357, 0x48b0a77a); let mut x379: u32 = 0; let mut x380: u32 = 0; let (x379, x380) = fiat_p384_scalar_mulx_u32(x357, 0xecec196a); let mut x381: u32 = 0; let mut x382: u32 = 0; let (x381, x382) = fiat_p384_scalar_mulx_u32(x357, 0xccc52973); let mut x383: u32 = 0; let mut x384: fiat_p384_scalar_u1 = 0; let (x383, x384) = fiat_p384_scalar_addcarryx_u32(0x0, x382, x379); let mut x385: u32 = 0; let mut x386: fiat_p384_scalar_u1 = 0; let (x385, x386) = fiat_p384_scalar_addcarryx_u32(x384, x380, x377); let mut x387: u32 = 0; let mut x388: fiat_p384_scalar_u1 = 0; let (x387, x388) = fiat_p384_scalar_addcarryx_u32(x386, x378, x375); let mut x389: u32 = 0; let mut x390: fiat_p384_scalar_u1 = 0; let (x389, x390) = fiat_p384_scalar_addcarryx_u32(x388, x376, x373); let mut x391: u32 = 0; let mut x392: fiat_p384_scalar_u1 = 0; let (x391, x392) = fiat_p384_scalar_addcarryx_u32(x390, x374, x371); let mut x393: u32 = 0; let mut x394: fiat_p384_scalar_u1 = 0; let (x393, x394) = fiat_p384_scalar_addcarryx_u32(x392, x372, x369); let mut x395: u32 = 0; let mut x396: fiat_p384_scalar_u1 = 0; let (x395, x396) = fiat_p384_scalar_addcarryx_u32(x394, x370, x367); let mut x397: u32 = 0; let mut x398: fiat_p384_scalar_u1 = 0; let (x397, x398) = fiat_p384_scalar_addcarryx_u32(x396, x368, x365); let mut x399: u32 = 0; let mut x400: fiat_p384_scalar_u1 = 0; let (x399, x400) = fiat_p384_scalar_addcarryx_u32(x398, x366, x363); let mut x401: u32 = 0; let mut x402: fiat_p384_scalar_u1 = 0; let (x401, x402) = fiat_p384_scalar_addcarryx_u32(x400, x364, x361); let mut x403: u32 = 0; let mut x404: fiat_p384_scalar_u1 = 0; let (x403, x404) = fiat_p384_scalar_addcarryx_u32(x402, x362, x359); let x405: u32 = ((x404 as u32) + x360); let mut x406: u32 = 0; let mut x407: fiat_p384_scalar_u1 = 0; let (x406, x407) = fiat_p384_scalar_addcarryx_u32(0x0, x331, x381); let mut x408: u32 = 0; let mut x409: fiat_p384_scalar_u1 = 0; let (x408, x409) = fiat_p384_scalar_addcarryx_u32(x407, x333, x383); let mut x410: u32 = 0; let mut x411: fiat_p384_scalar_u1 = 0; let (x410, x411) = fiat_p384_scalar_addcarryx_u32(x409, x335, x385); let mut x412: u32 = 0; let mut x413: fiat_p384_scalar_u1 = 0; let (x412, x413) = fiat_p384_scalar_addcarryx_u32(x411, x337, x387); let mut x414: u32 = 0; let mut x415: fiat_p384_scalar_u1 = 0; let (x414, x415) = fiat_p384_scalar_addcarryx_u32(x413, x339, x389); let mut x416: u32 = 0; let mut x417: fiat_p384_scalar_u1 = 0; let (x416, x417) = fiat_p384_scalar_addcarryx_u32(x415, x341, x391); let mut x418: u32 = 0; let mut x419: fiat_p384_scalar_u1 = 0; let (x418, x419) = fiat_p384_scalar_addcarryx_u32(x417, x343, x393); let mut x420: u32 = 0; let mut x421: fiat_p384_scalar_u1 = 0; let (x420, x421) = fiat_p384_scalar_addcarryx_u32(x419, x345, x395); let mut x422: u32 = 0; let mut x423: fiat_p384_scalar_u1 = 0; let (x422, x423) = fiat_p384_scalar_addcarryx_u32(x421, x347, x397); let mut x424: u32 = 0; let mut x425: fiat_p384_scalar_u1 = 0; let (x424, x425) = fiat_p384_scalar_addcarryx_u32(x423, x349, x399); let mut x426: u32 = 0; let mut x427: fiat_p384_scalar_u1 = 0; let (x426, x427) = fiat_p384_scalar_addcarryx_u32(x425, x351, x401); let mut x428: u32 = 0; let mut x429: fiat_p384_scalar_u1 = 0; let (x428, x429) = fiat_p384_scalar_addcarryx_u32(x427, x353, x403); let mut x430: u32 = 0; let mut x431: fiat_p384_scalar_u1 = 0; let (x430, x431) = fiat_p384_scalar_addcarryx_u32(x429, x355, x405); let x432: u32 = ((x431 as u32) + (x356 as u32)); let mut x433: u32 = 0; let mut x434: u32 = 0; let (x433, x434) = fiat_p384_scalar_mulx_u32(x3, (arg2[11])); let mut x435: u32 = 0; let mut x436: u32 = 0; let (x435, x436) = fiat_p384_scalar_mulx_u32(x3, (arg2[10])); let mut x437: u32 = 0; let mut x438: u32 = 0; let (x437, x438) = fiat_p384_scalar_mulx_u32(x3, (arg2[9])); let mut x439: u32 = 0; let mut x440: u32 = 0; let (x439, x440) = fiat_p384_scalar_mulx_u32(x3, (arg2[8])); let mut x441: u32 = 0; let mut x442: u32 = 0; let (x441, x442) = fiat_p384_scalar_mulx_u32(x3, (arg2[7])); let mut x443: u32 = 0; let mut x444: u32 = 0; let (x443, x444) = fiat_p384_scalar_mulx_u32(x3, (arg2[6])); let mut x445: u32 = 0; let mut x446: u32 = 0; let (x445, x446) = fiat_p384_scalar_mulx_u32(x3, (arg2[5])); let mut x447: u32 = 0; let mut x448: u32 = 0; let (x447, x448) = fiat_p384_scalar_mulx_u32(x3, (arg2[4])); let mut x449: u32 = 0; let mut x450: u32 = 0; let (x449, x450) = fiat_p384_scalar_mulx_u32(x3, (arg2[3])); let mut x451: u32 = 0; let mut x452: u32 = 0; let (x451, x452) = fiat_p384_scalar_mulx_u32(x3, (arg2[2])); let mut x453: u32 = 0; let mut x454: u32 = 0; let (x453, x454) = fiat_p384_scalar_mulx_u32(x3, (arg2[1])); let mut x455: u32 = 0; let mut x456: u32 = 0; let (x455, x456) = fiat_p384_scalar_mulx_u32(x3, (arg2[0])); let mut x457: u32 = 0; let mut x458: fiat_p384_scalar_u1 = 0; let (x457, x458) = fiat_p384_scalar_addcarryx_u32(0x0, x456, x453); let mut x459: u32 = 0; let mut x460: fiat_p384_scalar_u1 = 0; let (x459, x460) = fiat_p384_scalar_addcarryx_u32(x458, x454, x451); let mut x461: u32 = 0; let mut x462: fiat_p384_scalar_u1 = 0; let (x461, x462) = fiat_p384_scalar_addcarryx_u32(x460, x452, x449); let mut x463: u32 = 0; let mut x464: fiat_p384_scalar_u1 = 0; let (x463, x464) = fiat_p384_scalar_addcarryx_u32(x462, x450, x447); let mut x465: u32 = 0; let mut x466: fiat_p384_scalar_u1 = 0; let (x465, x466) = fiat_p384_scalar_addcarryx_u32(x464, x448, x445); let mut x467: u32 = 0; let mut x468: fiat_p384_scalar_u1 = 0; let (x467, x468) = fiat_p384_scalar_addcarryx_u32(x466, x446, x443); let mut x469: u32 = 0; let mut x470: fiat_p384_scalar_u1 = 0; let (x469, x470) = fiat_p384_scalar_addcarryx_u32(x468, x444, x441); let mut x471: u32 = 0; let mut x472: fiat_p384_scalar_u1 = 0; let (x471, x472) = fiat_p384_scalar_addcarryx_u32(x470, x442, x439); let mut x473: u32 = 0; let mut x474: fiat_p384_scalar_u1 = 0; let (x473, x474) = fiat_p384_scalar_addcarryx_u32(x472, x440, x437); let mut x475: u32 = 0; let mut x476: fiat_p384_scalar_u1 = 0; let (x475, x476) = fiat_p384_scalar_addcarryx_u32(x474, x438, x435); let mut x477: u32 = 0; let mut x478: fiat_p384_scalar_u1 = 0; let (x477, x478) = fiat_p384_scalar_addcarryx_u32(x476, x436, x433); let x479: u32 = ((x478 as u32) + x434); let mut x480: u32 = 0; let mut x481: fiat_p384_scalar_u1 = 0; let (x480, x481) = fiat_p384_scalar_addcarryx_u32(0x0, x408, x455); let mut x482: u32 = 0; let mut x483: fiat_p384_scalar_u1 = 0; let (x482, x483) = fiat_p384_scalar_addcarryx_u32(x481, x410, x457); let mut x484: u32 = 0; let mut x485: fiat_p384_scalar_u1 = 0; let (x484, x485) = fiat_p384_scalar_addcarryx_u32(x483, x412, x459); let mut x486: u32 = 0; let mut x487: fiat_p384_scalar_u1 = 0; let (x486, x487) = fiat_p384_scalar_addcarryx_u32(x485, x414, x461); let mut x488: u32 = 0; let mut x489: fiat_p384_scalar_u1 = 0; let (x488, x489) = fiat_p384_scalar_addcarryx_u32(x487, x416, x463); let mut x490: u32 = 0; let mut x491: fiat_p384_scalar_u1 = 0; let (x490, x491) = fiat_p384_scalar_addcarryx_u32(x489, x418, x465); let mut x492: u32 = 0; let mut x493: fiat_p384_scalar_u1 = 0; let (x492, x493) = fiat_p384_scalar_addcarryx_u32(x491, x420, x467); let mut x494: u32 = 0; let mut x495: fiat_p384_scalar_u1 = 0; let (x494, x495) = fiat_p384_scalar_addcarryx_u32(x493, x422, x469); let mut x496: u32 = 0; let mut x497: fiat_p384_scalar_u1 = 0; let (x496, x497) = fiat_p384_scalar_addcarryx_u32(x495, x424, x471); let mut x498: u32 = 0; let mut x499: fiat_p384_scalar_u1 = 0; let (x498, x499) = fiat_p384_scalar_addcarryx_u32(x497, x426, x473); let mut x500: u32 = 0; let mut x501: fiat_p384_scalar_u1 = 0; let (x500, x501) = fiat_p384_scalar_addcarryx_u32(x499, x428, x475); let mut x502: u32 = 0; let mut x503: fiat_p384_scalar_u1 = 0; let (x502, x503) = fiat_p384_scalar_addcarryx_u32(x501, x430, x477); let mut x504: u32 = 0; let mut x505: fiat_p384_scalar_u1 = 0; let (x504, x505) = fiat_p384_scalar_addcarryx_u32(x503, x432, x479); let mut x506: u32 = 0; let mut x507: u32 = 0; let (x506, x507) = fiat_p384_scalar_mulx_u32(x480, 0xe88fdc45); let mut x508: u32 = 0; let mut x509: u32 = 0; let (x508, x509) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x510: u32 = 0; let mut x511: u32 = 0; let (x510, x511) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x512: u32 = 0; let mut x513: u32 = 0; let (x512, x513) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x514: u32 = 0; let mut x515: u32 = 0; let (x514, x515) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x516: u32 = 0; let mut x517: u32 = 0; let (x516, x517) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x518: u32 = 0; let mut x519: u32 = 0; let (x518, x519) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x520: u32 = 0; let mut x521: u32 = 0; let (x520, x521) = fiat_p384_scalar_mulx_u32(x506, 0xc7634d81); let mut x522: u32 = 0; let mut x523: u32 = 0; let (x522, x523) = fiat_p384_scalar_mulx_u32(x506, 0xf4372ddf); let mut x524: u32 = 0; let mut x525: u32 = 0; let (x524, x525) = fiat_p384_scalar_mulx_u32(x506, 0x581a0db2); let mut x526: u32 = 0; let mut x527: u32 = 0; let (x526, x527) = fiat_p384_scalar_mulx_u32(x506, 0x48b0a77a); let mut x528: u32 = 0; let mut x529: u32 = 0; let (x528, x529) = fiat_p384_scalar_mulx_u32(x506, 0xecec196a); let mut x530: u32 = 0; let mut x531: u32 = 0; let (x530, x531) = fiat_p384_scalar_mulx_u32(x506, 0xccc52973); let mut x532: u32 = 0; let mut x533: fiat_p384_scalar_u1 = 0; let (x532, x533) = fiat_p384_scalar_addcarryx_u32(0x0, x531, x528); let mut x534: u32 = 0; let mut x535: fiat_p384_scalar_u1 = 0; let (x534, x535) = fiat_p384_scalar_addcarryx_u32(x533, x529, x526); let mut x536: u32 = 0; let mut x537: fiat_p384_scalar_u1 = 0; let (x536, x537) = fiat_p384_scalar_addcarryx_u32(x535, x527, x524); let mut x538: u32 = 0; let mut x539: fiat_p384_scalar_u1 = 0; let (x538, x539) = fiat_p384_scalar_addcarryx_u32(x537, x525, x522); let mut x540: u32 = 0; let mut x541: fiat_p384_scalar_u1 = 0; let (x540, x541) = fiat_p384_scalar_addcarryx_u32(x539, x523, x520); let mut x542: u32 = 0; let mut x543: fiat_p384_scalar_u1 = 0; let (x542, x543) = fiat_p384_scalar_addcarryx_u32(x541, x521, x518); let mut x544: u32 = 0; let mut x545: fiat_p384_scalar_u1 = 0; let (x544, x545) = fiat_p384_scalar_addcarryx_u32(x543, x519, x516); let mut x546: u32 = 0; let mut x547: fiat_p384_scalar_u1 = 0; let (x546, x547) = fiat_p384_scalar_addcarryx_u32(x545, x517, x514); let mut x548: u32 = 0; let mut x549: fiat_p384_scalar_u1 = 0; let (x548, x549) = fiat_p384_scalar_addcarryx_u32(x547, x515, x512); let mut x550: u32 = 0; let mut x551: fiat_p384_scalar_u1 = 0; let (x550, x551) = fiat_p384_scalar_addcarryx_u32(x549, x513, x510); let mut x552: u32 = 0; let mut x553: fiat_p384_scalar_u1 = 0; let (x552, x553) = fiat_p384_scalar_addcarryx_u32(x551, x511, x508); let x554: u32 = ((x553 as u32) + x509); let mut x555: u32 = 0; let mut x556: fiat_p384_scalar_u1 = 0; let (x555, x556) = fiat_p384_scalar_addcarryx_u32(0x0, x480, x530); let mut x557: u32 = 0; let mut x558: fiat_p384_scalar_u1 = 0; let (x557, x558) = fiat_p384_scalar_addcarryx_u32(x556, x482, x532); let mut x559: u32 = 0; let mut x560: fiat_p384_scalar_u1 = 0; let (x559, x560) = fiat_p384_scalar_addcarryx_u32(x558, x484, x534); let mut x561: u32 = 0; let mut x562: fiat_p384_scalar_u1 = 0; let (x561, x562) = fiat_p384_scalar_addcarryx_u32(x560, x486, x536); let mut x563: u32 = 0; let mut x564: fiat_p384_scalar_u1 = 0; let (x563, x564) = fiat_p384_scalar_addcarryx_u32(x562, x488, x538); let mut x565: u32 = 0; let mut x566: fiat_p384_scalar_u1 = 0; let (x565, x566) = fiat_p384_scalar_addcarryx_u32(x564, x490, x540); let mut x567: u32 = 0; let mut x568: fiat_p384_scalar_u1 = 0; let (x567, x568) = fiat_p384_scalar_addcarryx_u32(x566, x492, x542); let mut x569: u32 = 0; let mut x570: fiat_p384_scalar_u1 = 0; let (x569, x570) = fiat_p384_scalar_addcarryx_u32(x568, x494, x544); let mut x571: u32 = 0; let mut x572: fiat_p384_scalar_u1 = 0; let (x571, x572) = fiat_p384_scalar_addcarryx_u32(x570, x496, x546); let mut x573: u32 = 0; let mut x574: fiat_p384_scalar_u1 = 0; let (x573, x574) = fiat_p384_scalar_addcarryx_u32(x572, x498, x548); let mut x575: u32 = 0; let mut x576: fiat_p384_scalar_u1 = 0; let (x575, x576) = fiat_p384_scalar_addcarryx_u32(x574, x500, x550); let mut x577: u32 = 0; let mut x578: fiat_p384_scalar_u1 = 0; let (x577, x578) = fiat_p384_scalar_addcarryx_u32(x576, x502, x552); let mut x579: u32 = 0; let mut x580: fiat_p384_scalar_u1 = 0; let (x579, x580) = fiat_p384_scalar_addcarryx_u32(x578, x504, x554); let x581: u32 = ((x580 as u32) + (x505 as u32)); let mut x582: u32 = 0; let mut x583: u32 = 0; let (x582, x583) = fiat_p384_scalar_mulx_u32(x4, (arg2[11])); let mut x584: u32 = 0; let mut x585: u32 = 0; let (x584, x585) = fiat_p384_scalar_mulx_u32(x4, (arg2[10])); let mut x586: u32 = 0; let mut x587: u32 = 0; let (x586, x587) = fiat_p384_scalar_mulx_u32(x4, (arg2[9])); let mut x588: u32 = 0; let mut x589: u32 = 0; let (x588, x589) = fiat_p384_scalar_mulx_u32(x4, (arg2[8])); let mut x590: u32 = 0; let mut x591: u32 = 0; let (x590, x591) = fiat_p384_scalar_mulx_u32(x4, (arg2[7])); let mut x592: u32 = 0; let mut x593: u32 = 0; let (x592, x593) = fiat_p384_scalar_mulx_u32(x4, (arg2[6])); let mut x594: u32 = 0; let mut x595: u32 = 0; let (x594, x595) = fiat_p384_scalar_mulx_u32(x4, (arg2[5])); let mut x596: u32 = 0; let mut x597: u32 = 0; let (x596, x597) = fiat_p384_scalar_mulx_u32(x4, (arg2[4])); let mut x598: u32 = 0; let mut x599: u32 = 0; let (x598, x599) = fiat_p384_scalar_mulx_u32(x4, (arg2[3])); let mut x600: u32 = 0; let mut x601: u32 = 0; let (x600, x601) = fiat_p384_scalar_mulx_u32(x4, (arg2[2])); let mut x602: u32 = 0; let mut x603: u32 = 0; let (x602, x603) = fiat_p384_scalar_mulx_u32(x4, (arg2[1])); let mut x604: u32 = 0; let mut x605: u32 = 0; let (x604, x605) = fiat_p384_scalar_mulx_u32(x4, (arg2[0])); let mut x606: u32 = 0; let mut x607: fiat_p384_scalar_u1 = 0; let (x606, x607) = fiat_p384_scalar_addcarryx_u32(0x0, x605, x602); let mut x608: u32 = 0; let mut x609: fiat_p384_scalar_u1 = 0; let (x608, x609) = fiat_p384_scalar_addcarryx_u32(x607, x603, x600); let mut x610: u32 = 0; let mut x611: fiat_p384_scalar_u1 = 0; let (x610, x611) = fiat_p384_scalar_addcarryx_u32(x609, x601, x598); let mut x612: u32 = 0; let mut x613: fiat_p384_scalar_u1 = 0; let (x612, x613) = fiat_p384_scalar_addcarryx_u32(x611, x599, x596); let mut x614: u32 = 0; let mut x615: fiat_p384_scalar_u1 = 0; let (x614, x615) = fiat_p384_scalar_addcarryx_u32(x613, x597, x594); let mut x616: u32 = 0; let mut x617: fiat_p384_scalar_u1 = 0; let (x616, x617) = fiat_p384_scalar_addcarryx_u32(x615, x595, x592); let mut x618: u32 = 0; let mut x619: fiat_p384_scalar_u1 = 0; let (x618, x619) = fiat_p384_scalar_addcarryx_u32(x617, x593, x590); let mut x620: u32 = 0; let mut x621: fiat_p384_scalar_u1 = 0; let (x620, x621) = fiat_p384_scalar_addcarryx_u32(x619, x591, x588); let mut x622: u32 = 0; let mut x623: fiat_p384_scalar_u1 = 0; let (x622, x623) = fiat_p384_scalar_addcarryx_u32(x621, x589, x586); let mut x624: u32 = 0; let mut x625: fiat_p384_scalar_u1 = 0; let (x624, x625) = fiat_p384_scalar_addcarryx_u32(x623, x587, x584); let mut x626: u32 = 0; let mut x627: fiat_p384_scalar_u1 = 0; let (x626, x627) = fiat_p384_scalar_addcarryx_u32(x625, x585, x582); let x628: u32 = ((x627 as u32) + x583); let mut x629: u32 = 0; let mut x630: fiat_p384_scalar_u1 = 0; let (x629, x630) = fiat_p384_scalar_addcarryx_u32(0x0, x557, x604); let mut x631: u32 = 0; let mut x632: fiat_p384_scalar_u1 = 0; let (x631, x632) = fiat_p384_scalar_addcarryx_u32(x630, x559, x606); let mut x633: u32 = 0; let mut x634: fiat_p384_scalar_u1 = 0; let (x633, x634) = fiat_p384_scalar_addcarryx_u32(x632, x561, x608); let mut x635: u32 = 0; let mut x636: fiat_p384_scalar_u1 = 0; let (x635, x636) = fiat_p384_scalar_addcarryx_u32(x634, x563, x610); let mut x637: u32 = 0; let mut x638: fiat_p384_scalar_u1 = 0; let (x637, x638) = fiat_p384_scalar_addcarryx_u32(x636, x565, x612); let mut x639: u32 = 0; let mut x640: fiat_p384_scalar_u1 = 0; let (x639, x640) = fiat_p384_scalar_addcarryx_u32(x638, x567, x614); let mut x641: u32 = 0; let mut x642: fiat_p384_scalar_u1 = 0; let (x641, x642) = fiat_p384_scalar_addcarryx_u32(x640, x569, x616); let mut x643: u32 = 0; let mut x644: fiat_p384_scalar_u1 = 0; let (x643, x644) = fiat_p384_scalar_addcarryx_u32(x642, x571, x618); let mut x645: u32 = 0; let mut x646: fiat_p384_scalar_u1 = 0; let (x645, x646) = fiat_p384_scalar_addcarryx_u32(x644, x573, x620); let mut x647: u32 = 0; let mut x648: fiat_p384_scalar_u1 = 0; let (x647, x648) = fiat_p384_scalar_addcarryx_u32(x646, x575, x622); let mut x649: u32 = 0; let mut x650: fiat_p384_scalar_u1 = 0; let (x649, x650) = fiat_p384_scalar_addcarryx_u32(x648, x577, x624); let mut x651: u32 = 0; let mut x652: fiat_p384_scalar_u1 = 0; let (x651, x652) = fiat_p384_scalar_addcarryx_u32(x650, x579, x626); let mut x653: u32 = 0; let mut x654: fiat_p384_scalar_u1 = 0; let (x653, x654) = fiat_p384_scalar_addcarryx_u32(x652, x581, x628); let mut x655: u32 = 0; let mut x656: u32 = 0; let (x655, x656) = fiat_p384_scalar_mulx_u32(x629, 0xe88fdc45); let mut x657: u32 = 0; let mut x658: u32 = 0; let (x657, x658) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x659: u32 = 0; let mut x660: u32 = 0; let (x659, x660) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x661: u32 = 0; let mut x662: u32 = 0; let (x661, x662) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x663: u32 = 0; let mut x664: u32 = 0; let (x663, x664) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x665: u32 = 0; let mut x666: u32 = 0; let (x665, x666) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x667: u32 = 0; let mut x668: u32 = 0; let (x667, x668) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x669: u32 = 0; let mut x670: u32 = 0; let (x669, x670) = fiat_p384_scalar_mulx_u32(x655, 0xc7634d81); let mut x671: u32 = 0; let mut x672: u32 = 0; let (x671, x672) = fiat_p384_scalar_mulx_u32(x655, 0xf4372ddf); let mut x673: u32 = 0; let mut x674: u32 = 0; let (x673, x674) = fiat_p384_scalar_mulx_u32(x655, 0x581a0db2); let mut x675: u32 = 0; let mut x676: u32 = 0; let (x675, x676) = fiat_p384_scalar_mulx_u32(x655, 0x48b0a77a); let mut x677: u32 = 0; let mut x678: u32 = 0; let (x677, x678) = fiat_p384_scalar_mulx_u32(x655, 0xecec196a); let mut x679: u32 = 0; let mut x680: u32 = 0; let (x679, x680) = fiat_p384_scalar_mulx_u32(x655, 0xccc52973); let mut x681: u32 = 0; let mut x682: fiat_p384_scalar_u1 = 0; let (x681, x682) = fiat_p384_scalar_addcarryx_u32(0x0, x680, x677); let mut x683: u32 = 0; let mut x684: fiat_p384_scalar_u1 = 0; let (x683, x684) = fiat_p384_scalar_addcarryx_u32(x682, x678, x675); let mut x685: u32 = 0; let mut x686: fiat_p384_scalar_u1 = 0; let (x685, x686) = fiat_p384_scalar_addcarryx_u32(x684, x676, x673); let mut x687: u32 = 0; let mut x688: fiat_p384_scalar_u1 = 0; let (x687, x688) = fiat_p384_scalar_addcarryx_u32(x686, x674, x671); let mut x689: u32 = 0; let mut x690: fiat_p384_scalar_u1 = 0; let (x689, x690) = fiat_p384_scalar_addcarryx_u32(x688, x672, x669); let mut x691: u32 = 0; let mut x692: fiat_p384_scalar_u1 = 0; let (x691, x692) = fiat_p384_scalar_addcarryx_u32(x690, x670, x667); let mut x693: u32 = 0; let mut x694: fiat_p384_scalar_u1 = 0; let (x693, x694) = fiat_p384_scalar_addcarryx_u32(x692, x668, x665); let mut x695: u32 = 0; let mut x696: fiat_p384_scalar_u1 = 0; let (x695, x696) = fiat_p384_scalar_addcarryx_u32(x694, x666, x663); let mut x697: u32 = 0; let mut x698: fiat_p384_scalar_u1 = 0; let (x697, x698) = fiat_p384_scalar_addcarryx_u32(x696, x664, x661); let mut x699: u32 = 0; let mut x700: fiat_p384_scalar_u1 = 0; let (x699, x700) = fiat_p384_scalar_addcarryx_u32(x698, x662, x659); let mut x701: u32 = 0; let mut x702: fiat_p384_scalar_u1 = 0; let (x701, x702) = fiat_p384_scalar_addcarryx_u32(x700, x660, x657); let x703: u32 = ((x702 as u32) + x658); let mut x704: u32 = 0; let mut x705: fiat_p384_scalar_u1 = 0; let (x704, x705) = fiat_p384_scalar_addcarryx_u32(0x0, x629, x679); let mut x706: u32 = 0; let mut x707: fiat_p384_scalar_u1 = 0; let (x706, x707) = fiat_p384_scalar_addcarryx_u32(x705, x631, x681); let mut x708: u32 = 0; let mut x709: fiat_p384_scalar_u1 = 0; let (x708, x709) = fiat_p384_scalar_addcarryx_u32(x707, x633, x683); let mut x710: u32 = 0; let mut x711: fiat_p384_scalar_u1 = 0; let (x710, x711) = fiat_p384_scalar_addcarryx_u32(x709, x635, x685); let mut x712: u32 = 0; let mut x713: fiat_p384_scalar_u1 = 0; let (x712, x713) = fiat_p384_scalar_addcarryx_u32(x711, x637, x687); let mut x714: u32 = 0; let mut x715: fiat_p384_scalar_u1 = 0; let (x714, x715) = fiat_p384_scalar_addcarryx_u32(x713, x639, x689); let mut x716: u32 = 0; let mut x717: fiat_p384_scalar_u1 = 0; let (x716, x717) = fiat_p384_scalar_addcarryx_u32(x715, x641, x691); let mut x718: u32 = 0; let mut x719: fiat_p384_scalar_u1 = 0; let (x718, x719) = fiat_p384_scalar_addcarryx_u32(x717, x643, x693); let mut x720: u32 = 0; let mut x721: fiat_p384_scalar_u1 = 0; let (x720, x721) = fiat_p384_scalar_addcarryx_u32(x719, x645, x695); let mut x722: u32 = 0; let mut x723: fiat_p384_scalar_u1 = 0; let (x722, x723) = fiat_p384_scalar_addcarryx_u32(x721, x647, x697); let mut x724: u32 = 0; let mut x725: fiat_p384_scalar_u1 = 0; let (x724, x725) = fiat_p384_scalar_addcarryx_u32(x723, x649, x699); let mut x726: u32 = 0; let mut x727: fiat_p384_scalar_u1 = 0; let (x726, x727) = fiat_p384_scalar_addcarryx_u32(x725, x651, x701); let mut x728: u32 = 0; let mut x729: fiat_p384_scalar_u1 = 0; let (x728, x729) = fiat_p384_scalar_addcarryx_u32(x727, x653, x703); let x730: u32 = ((x729 as u32) + (x654 as u32)); let mut x731: u32 = 0; let mut x732: u32 = 0; let (x731, x732) = fiat_p384_scalar_mulx_u32(x5, (arg2[11])); let mut x733: u32 = 0; let mut x734: u32 = 0; let (x733, x734) = fiat_p384_scalar_mulx_u32(x5, (arg2[10])); let mut x735: u32 = 0; let mut x736: u32 = 0; let (x735, x736) = fiat_p384_scalar_mulx_u32(x5, (arg2[9])); let mut x737: u32 = 0; let mut x738: u32 = 0; let (x737, x738) = fiat_p384_scalar_mulx_u32(x5, (arg2[8])); let mut x739: u32 = 0; let mut x740: u32 = 0; let (x739, x740) = fiat_p384_scalar_mulx_u32(x5, (arg2[7])); let mut x741: u32 = 0; let mut x742: u32 = 0; let (x741, x742) = fiat_p384_scalar_mulx_u32(x5, (arg2[6])); let mut x743: u32 = 0; let mut x744: u32 = 0; let (x743, x744) = fiat_p384_scalar_mulx_u32(x5, (arg2[5])); let mut x745: u32 = 0; let mut x746: u32 = 0; let (x745, x746) = fiat_p384_scalar_mulx_u32(x5, (arg2[4])); let mut x747: u32 = 0; let mut x748: u32 = 0; let (x747, x748) = fiat_p384_scalar_mulx_u32(x5, (arg2[3])); let mut x749: u32 = 0; let mut x750: u32 = 0; let (x749, x750) = fiat_p384_scalar_mulx_u32(x5, (arg2[2])); let mut x751: u32 = 0; let mut x752: u32 = 0; let (x751, x752) = fiat_p384_scalar_mulx_u32(x5, (arg2[1])); let mut x753: u32 = 0; let mut x754: u32 = 0; let (x753, x754) = fiat_p384_scalar_mulx_u32(x5, (arg2[0])); let mut x755: u32 = 0; let mut x756: fiat_p384_scalar_u1 = 0; let (x755, x756) = fiat_p384_scalar_addcarryx_u32(0x0, x754, x751); let mut x757: u32 = 0; let mut x758: fiat_p384_scalar_u1 = 0; let (x757, x758) = fiat_p384_scalar_addcarryx_u32(x756, x752, x749); let mut x759: u32 = 0; let mut x760: fiat_p384_scalar_u1 = 0; let (x759, x760) = fiat_p384_scalar_addcarryx_u32(x758, x750, x747); let mut x761: u32 = 0; let mut x762: fiat_p384_scalar_u1 = 0; let (x761, x762) = fiat_p384_scalar_addcarryx_u32(x760, x748, x745); let mut x763: u32 = 0; let mut x764: fiat_p384_scalar_u1 = 0; let (x763, x764) = fiat_p384_scalar_addcarryx_u32(x762, x746, x743); let mut x765: u32 = 0; let mut x766: fiat_p384_scalar_u1 = 0; let (x765, x766) = fiat_p384_scalar_addcarryx_u32(x764, x744, x741); let mut x767: u32 = 0; let mut x768: fiat_p384_scalar_u1 = 0; let (x767, x768) = fiat_p384_scalar_addcarryx_u32(x766, x742, x739); let mut x769: u32 = 0; let mut x770: fiat_p384_scalar_u1 = 0; let (x769, x770) = fiat_p384_scalar_addcarryx_u32(x768, x740, x737); let mut x771: u32 = 0; let mut x772: fiat_p384_scalar_u1 = 0; let (x771, x772) = fiat_p384_scalar_addcarryx_u32(x770, x738, x735); let mut x773: u32 = 0; let mut x774: fiat_p384_scalar_u1 = 0; let (x773, x774) = fiat_p384_scalar_addcarryx_u32(x772, x736, x733); let mut x775: u32 = 0; let mut x776: fiat_p384_scalar_u1 = 0; let (x775, x776) = fiat_p384_scalar_addcarryx_u32(x774, x734, x731); let x777: u32 = ((x776 as u32) + x732); let mut x778: u32 = 0; let mut x779: fiat_p384_scalar_u1 = 0; let (x778, x779) = fiat_p384_scalar_addcarryx_u32(0x0, x706, x753); let mut x780: u32 = 0; let mut x781: fiat_p384_scalar_u1 = 0; let (x780, x781) = fiat_p384_scalar_addcarryx_u32(x779, x708, x755); let mut x782: u32 = 0; let mut x783: fiat_p384_scalar_u1 = 0; let (x782, x783) = fiat_p384_scalar_addcarryx_u32(x781, x710, x757); let mut x784: u32 = 0; let mut x785: fiat_p384_scalar_u1 = 0; let (x784, x785) = fiat_p384_scalar_addcarryx_u32(x783, x712, x759); let mut x786: u32 = 0; let mut x787: fiat_p384_scalar_u1 = 0; let (x786, x787) = fiat_p384_scalar_addcarryx_u32(x785, x714, x761); let mut x788: u32 = 0; let mut x789: fiat_p384_scalar_u1 = 0; let (x788, x789) = fiat_p384_scalar_addcarryx_u32(x787, x716, x763); let mut x790: u32 = 0; let mut x791: fiat_p384_scalar_u1 = 0; let (x790, x791) = fiat_p384_scalar_addcarryx_u32(x789, x718, x765); let mut x792: u32 = 0; let mut x793: fiat_p384_scalar_u1 = 0; let (x792, x793) = fiat_p384_scalar_addcarryx_u32(x791, x720, x767); let mut x794: u32 = 0; let mut x795: fiat_p384_scalar_u1 = 0; let (x794, x795) = fiat_p384_scalar_addcarryx_u32(x793, x722, x769); let mut x796: u32 = 0; let mut x797: fiat_p384_scalar_u1 = 0; let (x796, x797) = fiat_p384_scalar_addcarryx_u32(x795, x724, x771); let mut x798: u32 = 0; let mut x799: fiat_p384_scalar_u1 = 0; let (x798, x799) = fiat_p384_scalar_addcarryx_u32(x797, x726, x773); let mut x800: u32 = 0; let mut x801: fiat_p384_scalar_u1 = 0; let (x800, x801) = fiat_p384_scalar_addcarryx_u32(x799, x728, x775); let mut x802: u32 = 0; let mut x803: fiat_p384_scalar_u1 = 0; let (x802, x803) = fiat_p384_scalar_addcarryx_u32(x801, x730, x777); let mut x804: u32 = 0; let mut x805: u32 = 0; let (x804, x805) = fiat_p384_scalar_mulx_u32(x778, 0xe88fdc45); let mut x806: u32 = 0; let mut x807: u32 = 0; let (x806, x807) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x808: u32 = 0; let mut x809: u32 = 0; let (x808, x809) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x810: u32 = 0; let mut x811: u32 = 0; let (x810, x811) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x812: u32 = 0; let mut x813: u32 = 0; let (x812, x813) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x814: u32 = 0; let mut x815: u32 = 0; let (x814, x815) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x816: u32 = 0; let mut x817: u32 = 0; let (x816, x817) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x818: u32 = 0; let mut x819: u32 = 0; let (x818, x819) = fiat_p384_scalar_mulx_u32(x804, 0xc7634d81); let mut x820: u32 = 0; let mut x821: u32 = 0; let (x820, x821) = fiat_p384_scalar_mulx_u32(x804, 0xf4372ddf); let mut x822: u32 = 0; let mut x823: u32 = 0; let (x822, x823) = fiat_p384_scalar_mulx_u32(x804, 0x581a0db2); let mut x824: u32 = 0; let mut x825: u32 = 0; let (x824, x825) = fiat_p384_scalar_mulx_u32(x804, 0x48b0a77a); let mut x826: u32 = 0; let mut x827: u32 = 0; let (x826, x827) = fiat_p384_scalar_mulx_u32(x804, 0xecec196a); let mut x828: u32 = 0; let mut x829: u32 = 0; let (x828, x829) = fiat_p384_scalar_mulx_u32(x804, 0xccc52973); let mut x830: u32 = 0; let mut x831: fiat_p384_scalar_u1 = 0; let (x830, x831) = fiat_p384_scalar_addcarryx_u32(0x0, x829, x826); let mut x832: u32 = 0; let mut x833: fiat_p384_scalar_u1 = 0; let (x832, x833) = fiat_p384_scalar_addcarryx_u32(x831, x827, x824); let mut x834: u32 = 0; let mut x835: fiat_p384_scalar_u1 = 0; let (x834, x835) = fiat_p384_scalar_addcarryx_u32(x833, x825, x822); let mut x836: u32 = 0; let mut x837: fiat_p384_scalar_u1 = 0; let (x836, x837) = fiat_p384_scalar_addcarryx_u32(x835, x823, x820); let mut x838: u32 = 0; let mut x839: fiat_p384_scalar_u1 = 0; let (x838, x839) = fiat_p384_scalar_addcarryx_u32(x837, x821, x818); let mut x840: u32 = 0; let mut x841: fiat_p384_scalar_u1 = 0; let (x840, x841) = fiat_p384_scalar_addcarryx_u32(x839, x819, x816); let mut x842: u32 = 0; let mut x843: fiat_p384_scalar_u1 = 0; let (x842, x843) = fiat_p384_scalar_addcarryx_u32(x841, x817, x814); let mut x844: u32 = 0; let mut x845: fiat_p384_scalar_u1 = 0; let (x844, x845) = fiat_p384_scalar_addcarryx_u32(x843, x815, x812); let mut x846: u32 = 0; let mut x847: fiat_p384_scalar_u1 = 0; let (x846, x847) = fiat_p384_scalar_addcarryx_u32(x845, x813, x810); let mut x848: u32 = 0; let mut x849: fiat_p384_scalar_u1 = 0; let (x848, x849) = fiat_p384_scalar_addcarryx_u32(x847, x811, x808); let mut x850: u32 = 0; let mut x851: fiat_p384_scalar_u1 = 0; let (x850, x851) = fiat_p384_scalar_addcarryx_u32(x849, x809, x806); let x852: u32 = ((x851 as u32) + x807); let mut x853: u32 = 0; let mut x854: fiat_p384_scalar_u1 = 0; let (x853, x854) = fiat_p384_scalar_addcarryx_u32(0x0, x778, x828); let mut x855: u32 = 0; let mut x856: fiat_p384_scalar_u1 = 0; let (x855, x856) = fiat_p384_scalar_addcarryx_u32(x854, x780, x830); let mut x857: u32 = 0; let mut x858: fiat_p384_scalar_u1 = 0; let (x857, x858) = fiat_p384_scalar_addcarryx_u32(x856, x782, x832); let mut x859: u32 = 0; let mut x860: fiat_p384_scalar_u1 = 0; let (x859, x860) = fiat_p384_scalar_addcarryx_u32(x858, x784, x834); let mut x861: u32 = 0; let mut x862: fiat_p384_scalar_u1 = 0; let (x861, x862) = fiat_p384_scalar_addcarryx_u32(x860, x786, x836); let mut x863: u32 = 0; let mut x864: fiat_p384_scalar_u1 = 0; let (x863, x864) = fiat_p384_scalar_addcarryx_u32(x862, x788, x838); let mut x865: u32 = 0; let mut x866: fiat_p384_scalar_u1 = 0; let (x865, x866) = fiat_p384_scalar_addcarryx_u32(x864, x790, x840); let mut x867: u32 = 0; let mut x868: fiat_p384_scalar_u1 = 0; let (x867, x868) = fiat_p384_scalar_addcarryx_u32(x866, x792, x842); let mut x869: u32 = 0; let mut x870: fiat_p384_scalar_u1 = 0; let (x869, x870) = fiat_p384_scalar_addcarryx_u32(x868, x794, x844); let mut x871: u32 = 0; let mut x872: fiat_p384_scalar_u1 = 0; let (x871, x872) = fiat_p384_scalar_addcarryx_u32(x870, x796, x846); let mut x873: u32 = 0; let mut x874: fiat_p384_scalar_u1 = 0; let (x873, x874) = fiat_p384_scalar_addcarryx_u32(x872, x798, x848); let mut x875: u32 = 0; let mut x876: fiat_p384_scalar_u1 = 0; let (x875, x876) = fiat_p384_scalar_addcarryx_u32(x874, x800, x850); let mut x877: u32 = 0; let mut x878: fiat_p384_scalar_u1 = 0; let (x877, x878) = fiat_p384_scalar_addcarryx_u32(x876, x802, x852); let x879: u32 = ((x878 as u32) + (x803 as u32)); let mut x880: u32 = 0; let mut x881: u32 = 0; let (x880, x881) = fiat_p384_scalar_mulx_u32(x6, (arg2[11])); let mut x882: u32 = 0; let mut x883: u32 = 0; let (x882, x883) = fiat_p384_scalar_mulx_u32(x6, (arg2[10])); let mut x884: u32 = 0; let mut x885: u32 = 0; let (x884, x885) = fiat_p384_scalar_mulx_u32(x6, (arg2[9])); let mut x886: u32 = 0; let mut x887: u32 = 0; let (x886, x887) = fiat_p384_scalar_mulx_u32(x6, (arg2[8])); let mut x888: u32 = 0; let mut x889: u32 = 0; let (x888, x889) = fiat_p384_scalar_mulx_u32(x6, (arg2[7])); let mut x890: u32 = 0; let mut x891: u32 = 0; let (x890, x891) = fiat_p384_scalar_mulx_u32(x6, (arg2[6])); let mut x892: u32 = 0; let mut x893: u32 = 0; let (x892, x893) = fiat_p384_scalar_mulx_u32(x6, (arg2[5])); let mut x894: u32 = 0; let mut x895: u32 = 0; let (x894, x895) = fiat_p384_scalar_mulx_u32(x6, (arg2[4])); let mut x896: u32 = 0; let mut x897: u32 = 0; let (x896, x897) = fiat_p384_scalar_mulx_u32(x6, (arg2[3])); let mut x898: u32 = 0; let mut x899: u32 = 0; let (x898, x899) = fiat_p384_scalar_mulx_u32(x6, (arg2[2])); let mut x900: u32 = 0; let mut x901: u32 = 0; let (x900, x901) = fiat_p384_scalar_mulx_u32(x6, (arg2[1])); let mut x902: u32 = 0; let mut x903: u32 = 0; let (x902, x903) = fiat_p384_scalar_mulx_u32(x6, (arg2[0])); let mut x904: u32 = 0; let mut x905: fiat_p384_scalar_u1 = 0; let (x904, x905) = fiat_p384_scalar_addcarryx_u32(0x0, x903, x900); let mut x906: u32 = 0; let mut x907: fiat_p384_scalar_u1 = 0; let (x906, x907) = fiat_p384_scalar_addcarryx_u32(x905, x901, x898); let mut x908: u32 = 0; let mut x909: fiat_p384_scalar_u1 = 0; let (x908, x909) = fiat_p384_scalar_addcarryx_u32(x907, x899, x896); let mut x910: u32 = 0; let mut x911: fiat_p384_scalar_u1 = 0; let (x910, x911) = fiat_p384_scalar_addcarryx_u32(x909, x897, x894); let mut x912: u32 = 0; let mut x913: fiat_p384_scalar_u1 = 0; let (x912, x913) = fiat_p384_scalar_addcarryx_u32(x911, x895, x892); let mut x914: u32 = 0; let mut x915: fiat_p384_scalar_u1 = 0; let (x914, x915) = fiat_p384_scalar_addcarryx_u32(x913, x893, x890); let mut x916: u32 = 0; let mut x917: fiat_p384_scalar_u1 = 0; let (x916, x917) = fiat_p384_scalar_addcarryx_u32(x915, x891, x888); let mut x918: u32 = 0; let mut x919: fiat_p384_scalar_u1 = 0; let (x918, x919) = fiat_p384_scalar_addcarryx_u32(x917, x889, x886); let mut x920: u32 = 0; let mut x921: fiat_p384_scalar_u1 = 0; let (x920, x921) = fiat_p384_scalar_addcarryx_u32(x919, x887, x884); let mut x922: u32 = 0; let mut x923: fiat_p384_scalar_u1 = 0; let (x922, x923) = fiat_p384_scalar_addcarryx_u32(x921, x885, x882); let mut x924: u32 = 0; let mut x925: fiat_p384_scalar_u1 = 0; let (x924, x925) = fiat_p384_scalar_addcarryx_u32(x923, x883, x880); let x926: u32 = ((x925 as u32) + x881); let mut x927: u32 = 0; let mut x928: fiat_p384_scalar_u1 = 0; let (x927, x928) = fiat_p384_scalar_addcarryx_u32(0x0, x855, x902); let mut x929: u32 = 0; let mut x930: fiat_p384_scalar_u1 = 0; let (x929, x930) = fiat_p384_scalar_addcarryx_u32(x928, x857, x904); let mut x931: u32 = 0; let mut x932: fiat_p384_scalar_u1 = 0; let (x931, x932) = fiat_p384_scalar_addcarryx_u32(x930, x859, x906); let mut x933: u32 = 0; let mut x934: fiat_p384_scalar_u1 = 0; let (x933, x934) = fiat_p384_scalar_addcarryx_u32(x932, x861, x908); let mut x935: u32 = 0; let mut x936: fiat_p384_scalar_u1 = 0; let (x935, x936) = fiat_p384_scalar_addcarryx_u32(x934, x863, x910); let mut x937: u32 = 0; let mut x938: fiat_p384_scalar_u1 = 0; let (x937, x938) = fiat_p384_scalar_addcarryx_u32(x936, x865, x912); let mut x939: u32 = 0; let mut x940: fiat_p384_scalar_u1 = 0; let (x939, x940) = fiat_p384_scalar_addcarryx_u32(x938, x867, x914); let mut x941: u32 = 0; let mut x942: fiat_p384_scalar_u1 = 0; let (x941, x942) = fiat_p384_scalar_addcarryx_u32(x940, x869, x916); let mut x943: u32 = 0; let mut x944: fiat_p384_scalar_u1 = 0; let (x943, x944) = fiat_p384_scalar_addcarryx_u32(x942, x871, x918); let mut x945: u32 = 0; let mut x946: fiat_p384_scalar_u1 = 0; let (x945, x946) = fiat_p384_scalar_addcarryx_u32(x944, x873, x920); let mut x947: u32 = 0; let mut x948: fiat_p384_scalar_u1 = 0; let (x947, x948) = fiat_p384_scalar_addcarryx_u32(x946, x875, x922); let mut x949: u32 = 0; let mut x950: fiat_p384_scalar_u1 = 0; let (x949, x950) = fiat_p384_scalar_addcarryx_u32(x948, x877, x924); let mut x951: u32 = 0; let mut x952: fiat_p384_scalar_u1 = 0; let (x951, x952) = fiat_p384_scalar_addcarryx_u32(x950, x879, x926); let mut x953: u32 = 0; let mut x954: u32 = 0; let (x953, x954) = fiat_p384_scalar_mulx_u32(x927, 0xe88fdc45); let mut x955: u32 = 0; let mut x956: u32 = 0; let (x955, x956) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x957: u32 = 0; let mut x958: u32 = 0; let (x957, x958) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x959: u32 = 0; let mut x960: u32 = 0; let (x959, x960) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x961: u32 = 0; let mut x962: u32 = 0; let (x961, x962) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x963: u32 = 0; let mut x964: u32 = 0; let (x963, x964) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x965: u32 = 0; let mut x966: u32 = 0; let (x965, x966) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x967: u32 = 0; let mut x968: u32 = 0; let (x967, x968) = fiat_p384_scalar_mulx_u32(x953, 0xc7634d81); let mut x969: u32 = 0; let mut x970: u32 = 0; let (x969, x970) = fiat_p384_scalar_mulx_u32(x953, 0xf4372ddf); let mut x971: u32 = 0; let mut x972: u32 = 0; let (x971, x972) = fiat_p384_scalar_mulx_u32(x953, 0x581a0db2); let mut x973: u32 = 0; let mut x974: u32 = 0; let (x973, x974) = fiat_p384_scalar_mulx_u32(x953, 0x48b0a77a); let mut x975: u32 = 0; let mut x976: u32 = 0; let (x975, x976) = fiat_p384_scalar_mulx_u32(x953, 0xecec196a); let mut x977: u32 = 0; let mut x978: u32 = 0; let (x977, x978) = fiat_p384_scalar_mulx_u32(x953, 0xccc52973); let mut x979: u32 = 0; let mut x980: fiat_p384_scalar_u1 = 0; let (x979, x980) = fiat_p384_scalar_addcarryx_u32(0x0, x978, x975); let mut x981: u32 = 0; let mut x982: fiat_p384_scalar_u1 = 0; let (x981, x982) = fiat_p384_scalar_addcarryx_u32(x980, x976, x973); let mut x983: u32 = 0; let mut x984: fiat_p384_scalar_u1 = 0; let (x983, x984) = fiat_p384_scalar_addcarryx_u32(x982, x974, x971); let mut x985: u32 = 0; let mut x986: fiat_p384_scalar_u1 = 0; let (x985, x986) = fiat_p384_scalar_addcarryx_u32(x984, x972, x969); let mut x987: u32 = 0; let mut x988: fiat_p384_scalar_u1 = 0; let (x987, x988) = fiat_p384_scalar_addcarryx_u32(x986, x970, x967); let mut x989: u32 = 0; let mut x990: fiat_p384_scalar_u1 = 0; let (x989, x990) = fiat_p384_scalar_addcarryx_u32(x988, x968, x965); let mut x991: u32 = 0; let mut x992: fiat_p384_scalar_u1 = 0; let (x991, x992) = fiat_p384_scalar_addcarryx_u32(x990, x966, x963); let mut x993: u32 = 0; let mut x994: fiat_p384_scalar_u1 = 0; let (x993, x994) = fiat_p384_scalar_addcarryx_u32(x992, x964, x961); let mut x995: u32 = 0; let mut x996: fiat_p384_scalar_u1 = 0; let (x995, x996) = fiat_p384_scalar_addcarryx_u32(x994, x962, x959); let mut x997: u32 = 0; let mut x998: fiat_p384_scalar_u1 = 0; let (x997, x998) = fiat_p384_scalar_addcarryx_u32(x996, x960, x957); let mut x999: u32 = 0; let mut x1000: fiat_p384_scalar_u1 = 0; let (x999, x1000) = fiat_p384_scalar_addcarryx_u32(x998, x958, x955); let x1001: u32 = ((x1000 as u32) + x956); let mut x1002: u32 = 0; let mut x1003: fiat_p384_scalar_u1 = 0; let (x1002, x1003) = fiat_p384_scalar_addcarryx_u32(0x0, x927, x977); let mut x1004: u32 = 0; let mut x1005: fiat_p384_scalar_u1 = 0; let (x1004, x1005) = fiat_p384_scalar_addcarryx_u32(x1003, x929, x979); let mut x1006: u32 = 0; let mut x1007: fiat_p384_scalar_u1 = 0; let (x1006, x1007) = fiat_p384_scalar_addcarryx_u32(x1005, x931, x981); let mut x1008: u32 = 0; let mut x1009: fiat_p384_scalar_u1 = 0; let (x1008, x1009) = fiat_p384_scalar_addcarryx_u32(x1007, x933, x983); let mut x1010: u32 = 0; let mut x1011: fiat_p384_scalar_u1 = 0; let (x1010, x1011) = fiat_p384_scalar_addcarryx_u32(x1009, x935, x985); let mut x1012: u32 = 0; let mut x1013: fiat_p384_scalar_u1 = 0; let (x1012, x1013) = fiat_p384_scalar_addcarryx_u32(x1011, x937, x987); let mut x1014: u32 = 0; let mut x1015: fiat_p384_scalar_u1 = 0; let (x1014, x1015) = fiat_p384_scalar_addcarryx_u32(x1013, x939, x989); let mut x1016: u32 = 0; let mut x1017: fiat_p384_scalar_u1 = 0; let (x1016, x1017) = fiat_p384_scalar_addcarryx_u32(x1015, x941, x991); let mut x1018: u32 = 0; let mut x1019: fiat_p384_scalar_u1 = 0; let (x1018, x1019) = fiat_p384_scalar_addcarryx_u32(x1017, x943, x993); let mut x1020: u32 = 0; let mut x1021: fiat_p384_scalar_u1 = 0; let (x1020, x1021) = fiat_p384_scalar_addcarryx_u32(x1019, x945, x995); let mut x1022: u32 = 0; let mut x1023: fiat_p384_scalar_u1 = 0; let (x1022, x1023) = fiat_p384_scalar_addcarryx_u32(x1021, x947, x997); let mut x1024: u32 = 0; let mut x1025: fiat_p384_scalar_u1 = 0; let (x1024, x1025) = fiat_p384_scalar_addcarryx_u32(x1023, x949, x999); let mut x1026: u32 = 0; let mut x1027: fiat_p384_scalar_u1 = 0; let (x1026, x1027) = fiat_p384_scalar_addcarryx_u32(x1025, x951, x1001); let x1028: u32 = ((x1027 as u32) + (x952 as u32)); let mut x1029: u32 = 0; let mut x1030: u32 = 0; let (x1029, x1030) = fiat_p384_scalar_mulx_u32(x7, (arg2[11])); let mut x1031: u32 = 0; let mut x1032: u32 = 0; let (x1031, x1032) = fiat_p384_scalar_mulx_u32(x7, (arg2[10])); let mut x1033: u32 = 0; let mut x1034: u32 = 0; let (x1033, x1034) = fiat_p384_scalar_mulx_u32(x7, (arg2[9])); let mut x1035: u32 = 0; let mut x1036: u32 = 0; let (x1035, x1036) = fiat_p384_scalar_mulx_u32(x7, (arg2[8])); let mut x1037: u32 = 0; let mut x1038: u32 = 0; let (x1037, x1038) = fiat_p384_scalar_mulx_u32(x7, (arg2[7])); let mut x1039: u32 = 0; let mut x1040: u32 = 0; let (x1039, x1040) = fiat_p384_scalar_mulx_u32(x7, (arg2[6])); let mut x1041: u32 = 0; let mut x1042: u32 = 0; let (x1041, x1042) = fiat_p384_scalar_mulx_u32(x7, (arg2[5])); let mut x1043: u32 = 0; let mut x1044: u32 = 0; let (x1043, x1044) = fiat_p384_scalar_mulx_u32(x7, (arg2[4])); let mut x1045: u32 = 0; let mut x1046: u32 = 0; let (x1045, x1046) = fiat_p384_scalar_mulx_u32(x7, (arg2[3])); let mut x1047: u32 = 0; let mut x1048: u32 = 0; let (x1047, x1048) = fiat_p384_scalar_mulx_u32(x7, (arg2[2])); let mut x1049: u32 = 0; let mut x1050: u32 = 0; let (x1049, x1050) = fiat_p384_scalar_mulx_u32(x7, (arg2[1])); let mut x1051: u32 = 0; let mut x1052: u32 = 0; let (x1051, x1052) = fiat_p384_scalar_mulx_u32(x7, (arg2[0])); let mut x1053: u32 = 0; let mut x1054: fiat_p384_scalar_u1 = 0; let (x1053, x1054) = fiat_p384_scalar_addcarryx_u32(0x0, x1052, x1049); let mut x1055: u32 = 0; let mut x1056: fiat_p384_scalar_u1 = 0; let (x1055, x1056) = fiat_p384_scalar_addcarryx_u32(x1054, x1050, x1047); let mut x1057: u32 = 0; let mut x1058: fiat_p384_scalar_u1 = 0; let (x1057, x1058) = fiat_p384_scalar_addcarryx_u32(x1056, x1048, x1045); let mut x1059: u32 = 0; let mut x1060: fiat_p384_scalar_u1 = 0; let (x1059, x1060) = fiat_p384_scalar_addcarryx_u32(x1058, x1046, x1043); let mut x1061: u32 = 0; let mut x1062: fiat_p384_scalar_u1 = 0; let (x1061, x1062) = fiat_p384_scalar_addcarryx_u32(x1060, x1044, x1041); let mut x1063: u32 = 0; let mut x1064: fiat_p384_scalar_u1 = 0; let (x1063, x1064) = fiat_p384_scalar_addcarryx_u32(x1062, x1042, x1039); let mut x1065: u32 = 0; let mut x1066: fiat_p384_scalar_u1 = 0; let (x1065, x1066) = fiat_p384_scalar_addcarryx_u32(x1064, x1040, x1037); let mut x1067: u32 = 0; let mut x1068: fiat_p384_scalar_u1 = 0; let (x1067, x1068) = fiat_p384_scalar_addcarryx_u32(x1066, x1038, x1035); let mut x1069: u32 = 0; let mut x1070: fiat_p384_scalar_u1 = 0; let (x1069, x1070) = fiat_p384_scalar_addcarryx_u32(x1068, x1036, x1033); let mut x1071: u32 = 0; let mut x1072: fiat_p384_scalar_u1 = 0; let (x1071, x1072) = fiat_p384_scalar_addcarryx_u32(x1070, x1034, x1031); let mut x1073: u32 = 0; let mut x1074: fiat_p384_scalar_u1 = 0; let (x1073, x1074) = fiat_p384_scalar_addcarryx_u32(x1072, x1032, x1029); let x1075: u32 = ((x1074 as u32) + x1030); let mut x1076: u32 = 0; let mut x1077: fiat_p384_scalar_u1 = 0; let (x1076, x1077) = fiat_p384_scalar_addcarryx_u32(0x0, x1004, x1051); let mut x1078: u32 = 0; let mut x1079: fiat_p384_scalar_u1 = 0; let (x1078, x1079) = fiat_p384_scalar_addcarryx_u32(x1077, x1006, x1053); let mut x1080: u32 = 0; let mut x1081: fiat_p384_scalar_u1 = 0; let (x1080, x1081) = fiat_p384_scalar_addcarryx_u32(x1079, x1008, x1055); let mut x1082: u32 = 0; let mut x1083: fiat_p384_scalar_u1 = 0; let (x1082, x1083) = fiat_p384_scalar_addcarryx_u32(x1081, x1010, x1057); let mut x1084: u32 = 0; let mut x1085: fiat_p384_scalar_u1 = 0; let (x1084, x1085) = fiat_p384_scalar_addcarryx_u32(x1083, x1012, x1059); let mut x1086: u32 = 0; let mut x1087: fiat_p384_scalar_u1 = 0; let (x1086, x1087) = fiat_p384_scalar_addcarryx_u32(x1085, x1014, x1061); let mut x1088: u32 = 0; let mut x1089: fiat_p384_scalar_u1 = 0; let (x1088, x1089) = fiat_p384_scalar_addcarryx_u32(x1087, x1016, x1063); let mut x1090: u32 = 0; let mut x1091: fiat_p384_scalar_u1 = 0; let (x1090, x1091) = fiat_p384_scalar_addcarryx_u32(x1089, x1018, x1065); let mut x1092: u32 = 0; let mut x1093: fiat_p384_scalar_u1 = 0; let (x1092, x1093) = fiat_p384_scalar_addcarryx_u32(x1091, x1020, x1067); let mut x1094: u32 = 0; let mut x1095: fiat_p384_scalar_u1 = 0; let (x1094, x1095) = fiat_p384_scalar_addcarryx_u32(x1093, x1022, x1069); let mut x1096: u32 = 0; let mut x1097: fiat_p384_scalar_u1 = 0; let (x1096, x1097) = fiat_p384_scalar_addcarryx_u32(x1095, x1024, x1071); let mut x1098: u32 = 0; let mut x1099: fiat_p384_scalar_u1 = 0; let (x1098, x1099) = fiat_p384_scalar_addcarryx_u32(x1097, x1026, x1073); let mut x1100: u32 = 0; let mut x1101: fiat_p384_scalar_u1 = 0; let (x1100, x1101) = fiat_p384_scalar_addcarryx_u32(x1099, x1028, x1075); let mut x1102: u32 = 0; let mut x1103: u32 = 0; let (x1102, x1103) = fiat_p384_scalar_mulx_u32(x1076, 0xe88fdc45); let mut x1104: u32 = 0; let mut x1105: u32 = 0; let (x1104, x1105) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1106: u32 = 0; let mut x1107: u32 = 0; let (x1106, x1107) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1108: u32 = 0; let mut x1109: u32 = 0; let (x1108, x1109) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1110: u32 = 0; let mut x1111: u32 = 0; let (x1110, x1111) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1112: u32 = 0; let mut x1113: u32 = 0; let (x1112, x1113) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1114: u32 = 0; let mut x1115: u32 = 0; let (x1114, x1115) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1116: u32 = 0; let mut x1117: u32 = 0; let (x1116, x1117) = fiat_p384_scalar_mulx_u32(x1102, 0xc7634d81); let mut x1118: u32 = 0; let mut x1119: u32 = 0; let (x1118, x1119) = fiat_p384_scalar_mulx_u32(x1102, 0xf4372ddf); let mut x1120: u32 = 0; let mut x1121: u32 = 0; let (x1120, x1121) = fiat_p384_scalar_mulx_u32(x1102, 0x581a0db2); let mut x1122: u32 = 0; let mut x1123: u32 = 0; let (x1122, x1123) = fiat_p384_scalar_mulx_u32(x1102, 0x48b0a77a); let mut x1124: u32 = 0; let mut x1125: u32 = 0; let (x1124, x1125) = fiat_p384_scalar_mulx_u32(x1102, 0xecec196a); let mut x1126: u32 = 0; let mut x1127: u32 = 0; let (x1126, x1127) = fiat_p384_scalar_mulx_u32(x1102, 0xccc52973); let mut x1128: u32 = 0; let mut x1129: fiat_p384_scalar_u1 = 0; let (x1128, x1129) = fiat_p384_scalar_addcarryx_u32(0x0, x1127, x1124); let mut x1130: u32 = 0; let mut x1131: fiat_p384_scalar_u1 = 0; let (x1130, x1131) = fiat_p384_scalar_addcarryx_u32(x1129, x1125, x1122); let mut x1132: u32 = 0; let mut x1133: fiat_p384_scalar_u1 = 0; let (x1132, x1133) = fiat_p384_scalar_addcarryx_u32(x1131, x1123, x1120); let mut x1134: u32 = 0; let mut x1135: fiat_p384_scalar_u1 = 0; let (x1134, x1135) = fiat_p384_scalar_addcarryx_u32(x1133, x1121, x1118); let mut x1136: u32 = 0; let mut x1137: fiat_p384_scalar_u1 = 0; let (x1136, x1137) = fiat_p384_scalar_addcarryx_u32(x1135, x1119, x1116); let mut x1138: u32 = 0; let mut x1139: fiat_p384_scalar_u1 = 0; let (x1138, x1139) = fiat_p384_scalar_addcarryx_u32(x1137, x1117, x1114); let mut x1140: u32 = 0; let mut x1141: fiat_p384_scalar_u1 = 0; let (x1140, x1141) = fiat_p384_scalar_addcarryx_u32(x1139, x1115, x1112); let mut x1142: u32 = 0; let mut x1143: fiat_p384_scalar_u1 = 0; let (x1142, x1143) = fiat_p384_scalar_addcarryx_u32(x1141, x1113, x1110); let mut x1144: u32 = 0; let mut x1145: fiat_p384_scalar_u1 = 0; let (x1144, x1145) = fiat_p384_scalar_addcarryx_u32(x1143, x1111, x1108); let mut x1146: u32 = 0; let mut x1147: fiat_p384_scalar_u1 = 0; let (x1146, x1147) = fiat_p384_scalar_addcarryx_u32(x1145, x1109, x1106); let mut x1148: u32 = 0; let mut x1149: fiat_p384_scalar_u1 = 0; let (x1148, x1149) = fiat_p384_scalar_addcarryx_u32(x1147, x1107, x1104); let x1150: u32 = ((x1149 as u32) + x1105); let mut x1151: u32 = 0; let mut x1152: fiat_p384_scalar_u1 = 0; let (x1151, x1152) = fiat_p384_scalar_addcarryx_u32(0x0, x1076, x1126); let mut x1153: u32 = 0; let mut x1154: fiat_p384_scalar_u1 = 0; let (x1153, x1154) = fiat_p384_scalar_addcarryx_u32(x1152, x1078, x1128); let mut x1155: u32 = 0; let mut x1156: fiat_p384_scalar_u1 = 0; let (x1155, x1156) = fiat_p384_scalar_addcarryx_u32(x1154, x1080, x1130); let mut x1157: u32 = 0; let mut x1158: fiat_p384_scalar_u1 = 0; let (x1157, x1158) = fiat_p384_scalar_addcarryx_u32(x1156, x1082, x1132); let mut x1159: u32 = 0; let mut x1160: fiat_p384_scalar_u1 = 0; let (x1159, x1160) = fiat_p384_scalar_addcarryx_u32(x1158, x1084, x1134); let mut x1161: u32 = 0; let mut x1162: fiat_p384_scalar_u1 = 0; let (x1161, x1162) = fiat_p384_scalar_addcarryx_u32(x1160, x1086, x1136); let mut x1163: u32 = 0; let mut x1164: fiat_p384_scalar_u1 = 0; let (x1163, x1164) = fiat_p384_scalar_addcarryx_u32(x1162, x1088, x1138); let mut x1165: u32 = 0; let mut x1166: fiat_p384_scalar_u1 = 0; let (x1165, x1166) = fiat_p384_scalar_addcarryx_u32(x1164, x1090, x1140); let mut x1167: u32 = 0; let mut x1168: fiat_p384_scalar_u1 = 0; let (x1167, x1168) = fiat_p384_scalar_addcarryx_u32(x1166, x1092, x1142); let mut x1169: u32 = 0; let mut x1170: fiat_p384_scalar_u1 = 0; let (x1169, x1170) = fiat_p384_scalar_addcarryx_u32(x1168, x1094, x1144); let mut x1171: u32 = 0; let mut x1172: fiat_p384_scalar_u1 = 0; let (x1171, x1172) = fiat_p384_scalar_addcarryx_u32(x1170, x1096, x1146); let mut x1173: u32 = 0; let mut x1174: fiat_p384_scalar_u1 = 0; let (x1173, x1174) = fiat_p384_scalar_addcarryx_u32(x1172, x1098, x1148); let mut x1175: u32 = 0; let mut x1176: fiat_p384_scalar_u1 = 0; let (x1175, x1176) = fiat_p384_scalar_addcarryx_u32(x1174, x1100, x1150); let x1177: u32 = ((x1176 as u32) + (x1101 as u32)); let mut x1178: u32 = 0; let mut x1179: u32 = 0; let (x1178, x1179) = fiat_p384_scalar_mulx_u32(x8, (arg2[11])); let mut x1180: u32 = 0; let mut x1181: u32 = 0; let (x1180, x1181) = fiat_p384_scalar_mulx_u32(x8, (arg2[10])); let mut x1182: u32 = 0; let mut x1183: u32 = 0; let (x1182, x1183) = fiat_p384_scalar_mulx_u32(x8, (arg2[9])); let mut x1184: u32 = 0; let mut x1185: u32 = 0; let (x1184, x1185) = fiat_p384_scalar_mulx_u32(x8, (arg2[8])); let mut x1186: u32 = 0; let mut x1187: u32 = 0; let (x1186, x1187) = fiat_p384_scalar_mulx_u32(x8, (arg2[7])); let mut x1188: u32 = 0; let mut x1189: u32 = 0; let (x1188, x1189) = fiat_p384_scalar_mulx_u32(x8, (arg2[6])); let mut x1190: u32 = 0; let mut x1191: u32 = 0; let (x1190, x1191) = fiat_p384_scalar_mulx_u32(x8, (arg2[5])); let mut x1192: u32 = 0; let mut x1193: u32 = 0; let (x1192, x1193) = fiat_p384_scalar_mulx_u32(x8, (arg2[4])); let mut x1194: u32 = 0; let mut x1195: u32 = 0; let (x1194, x1195) = fiat_p384_scalar_mulx_u32(x8, (arg2[3])); let mut x1196: u32 = 0; let mut x1197: u32 = 0; let (x1196, x1197) = fiat_p384_scalar_mulx_u32(x8, (arg2[2])); let mut x1198: u32 = 0; let mut x1199: u32 = 0; let (x1198, x1199) = fiat_p384_scalar_mulx_u32(x8, (arg2[1])); let mut x1200: u32 = 0; let mut x1201: u32 = 0; let (x1200, x1201) = fiat_p384_scalar_mulx_u32(x8, (arg2[0])); let mut x1202: u32 = 0; let mut x1203: fiat_p384_scalar_u1 = 0; let (x1202, x1203) = fiat_p384_scalar_addcarryx_u32(0x0, x1201, x1198); let mut x1204: u32 = 0; let mut x1205: fiat_p384_scalar_u1 = 0; let (x1204, x1205) = fiat_p384_scalar_addcarryx_u32(x1203, x1199, x1196); let mut x1206: u32 = 0; let mut x1207: fiat_p384_scalar_u1 = 0; let (x1206, x1207) = fiat_p384_scalar_addcarryx_u32(x1205, x1197, x1194); let mut x1208: u32 = 0; let mut x1209: fiat_p384_scalar_u1 = 0; let (x1208, x1209) = fiat_p384_scalar_addcarryx_u32(x1207, x1195, x1192); let mut x1210: u32 = 0; let mut x1211: fiat_p384_scalar_u1 = 0; let (x1210, x1211) = fiat_p384_scalar_addcarryx_u32(x1209, x1193, x1190); let mut x1212: u32 = 0; let mut x1213: fiat_p384_scalar_u1 = 0; let (x1212, x1213) = fiat_p384_scalar_addcarryx_u32(x1211, x1191, x1188); let mut x1214: u32 = 0; let mut x1215: fiat_p384_scalar_u1 = 0; let (x1214, x1215) = fiat_p384_scalar_addcarryx_u32(x1213, x1189, x1186); let mut x1216: u32 = 0; let mut x1217: fiat_p384_scalar_u1 = 0; let (x1216, x1217) = fiat_p384_scalar_addcarryx_u32(x1215, x1187, x1184); let mut x1218: u32 = 0; let mut x1219: fiat_p384_scalar_u1 = 0; let (x1218, x1219) = fiat_p384_scalar_addcarryx_u32(x1217, x1185, x1182); let mut x1220: u32 = 0; let mut x1221: fiat_p384_scalar_u1 = 0; let (x1220, x1221) = fiat_p384_scalar_addcarryx_u32(x1219, x1183, x1180); let mut x1222: u32 = 0; let mut x1223: fiat_p384_scalar_u1 = 0; let (x1222, x1223) = fiat_p384_scalar_addcarryx_u32(x1221, x1181, x1178); let x1224: u32 = ((x1223 as u32) + x1179); let mut x1225: u32 = 0; let mut x1226: fiat_p384_scalar_u1 = 0; let (x1225, x1226) = fiat_p384_scalar_addcarryx_u32(0x0, x1153, x1200); let mut x1227: u32 = 0; let mut x1228: fiat_p384_scalar_u1 = 0; let (x1227, x1228) = fiat_p384_scalar_addcarryx_u32(x1226, x1155, x1202); let mut x1229: u32 = 0; let mut x1230: fiat_p384_scalar_u1 = 0; let (x1229, x1230) = fiat_p384_scalar_addcarryx_u32(x1228, x1157, x1204); let mut x1231: u32 = 0; let mut x1232: fiat_p384_scalar_u1 = 0; let (x1231, x1232) = fiat_p384_scalar_addcarryx_u32(x1230, x1159, x1206); let mut x1233: u32 = 0; let mut x1234: fiat_p384_scalar_u1 = 0; let (x1233, x1234) = fiat_p384_scalar_addcarryx_u32(x1232, x1161, x1208); let mut x1235: u32 = 0; let mut x1236: fiat_p384_scalar_u1 = 0; let (x1235, x1236) = fiat_p384_scalar_addcarryx_u32(x1234, x1163, x1210); let mut x1237: u32 = 0; let mut x1238: fiat_p384_scalar_u1 = 0; let (x1237, x1238) = fiat_p384_scalar_addcarryx_u32(x1236, x1165, x1212); let mut x1239: u32 = 0; let mut x1240: fiat_p384_scalar_u1 = 0; let (x1239, x1240) = fiat_p384_scalar_addcarryx_u32(x1238, x1167, x1214); let mut x1241: u32 = 0; let mut x1242: fiat_p384_scalar_u1 = 0; let (x1241, x1242) = fiat_p384_scalar_addcarryx_u32(x1240, x1169, x1216); let mut x1243: u32 = 0; let mut x1244: fiat_p384_scalar_u1 = 0; let (x1243, x1244) = fiat_p384_scalar_addcarryx_u32(x1242, x1171, x1218); let mut x1245: u32 = 0; let mut x1246: fiat_p384_scalar_u1 = 0; let (x1245, x1246) = fiat_p384_scalar_addcarryx_u32(x1244, x1173, x1220); let mut x1247: u32 = 0; let mut x1248: fiat_p384_scalar_u1 = 0; let (x1247, x1248) = fiat_p384_scalar_addcarryx_u32(x1246, x1175, x1222); let mut x1249: u32 = 0; let mut x1250: fiat_p384_scalar_u1 = 0; let (x1249, x1250) = fiat_p384_scalar_addcarryx_u32(x1248, x1177, x1224); let mut x1251: u32 = 0; let mut x1252: u32 = 0; let (x1251, x1252) = fiat_p384_scalar_mulx_u32(x1225, 0xe88fdc45); let mut x1253: u32 = 0; let mut x1254: u32 = 0; let (x1253, x1254) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1255: u32 = 0; let mut x1256: u32 = 0; let (x1255, x1256) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1257: u32 = 0; let mut x1258: u32 = 0; let (x1257, x1258) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1259: u32 = 0; let mut x1260: u32 = 0; let (x1259, x1260) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1261: u32 = 0; let mut x1262: u32 = 0; let (x1261, x1262) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1263: u32 = 0; let mut x1264: u32 = 0; let (x1263, x1264) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1265: u32 = 0; let mut x1266: u32 = 0; let (x1265, x1266) = fiat_p384_scalar_mulx_u32(x1251, 0xc7634d81); let mut x1267: u32 = 0; let mut x1268: u32 = 0; let (x1267, x1268) = fiat_p384_scalar_mulx_u32(x1251, 0xf4372ddf); let mut x1269: u32 = 0; let mut x1270: u32 = 0; let (x1269, x1270) = fiat_p384_scalar_mulx_u32(x1251, 0x581a0db2); let mut x1271: u32 = 0; let mut x1272: u32 = 0; let (x1271, x1272) = fiat_p384_scalar_mulx_u32(x1251, 0x48b0a77a); let mut x1273: u32 = 0; let mut x1274: u32 = 0; let (x1273, x1274) = fiat_p384_scalar_mulx_u32(x1251, 0xecec196a); let mut x1275: u32 = 0; let mut x1276: u32 = 0; let (x1275, x1276) = fiat_p384_scalar_mulx_u32(x1251, 0xccc52973); let mut x1277: u32 = 0; let mut x1278: fiat_p384_scalar_u1 = 0; let (x1277, x1278) = fiat_p384_scalar_addcarryx_u32(0x0, x1276, x1273); let mut x1279: u32 = 0; let mut x1280: fiat_p384_scalar_u1 = 0; let (x1279, x1280) = fiat_p384_scalar_addcarryx_u32(x1278, x1274, x1271); let mut x1281: u32 = 0; let mut x1282: fiat_p384_scalar_u1 = 0; let (x1281, x1282) = fiat_p384_scalar_addcarryx_u32(x1280, x1272, x1269); let mut x1283: u32 = 0; let mut x1284: fiat_p384_scalar_u1 = 0; let (x1283, x1284) = fiat_p384_scalar_addcarryx_u32(x1282, x1270, x1267); let mut x1285: u32 = 0; let mut x1286: fiat_p384_scalar_u1 = 0; let (x1285, x1286) = fiat_p384_scalar_addcarryx_u32(x1284, x1268, x1265); let mut x1287: u32 = 0; let mut x1288: fiat_p384_scalar_u1 = 0; let (x1287, x1288) = fiat_p384_scalar_addcarryx_u32(x1286, x1266, x1263); let mut x1289: u32 = 0; let mut x1290: fiat_p384_scalar_u1 = 0; let (x1289, x1290) = fiat_p384_scalar_addcarryx_u32(x1288, x1264, x1261); let mut x1291: u32 = 0; let mut x1292: fiat_p384_scalar_u1 = 0; let (x1291, x1292) = fiat_p384_scalar_addcarryx_u32(x1290, x1262, x1259); let mut x1293: u32 = 0; let mut x1294: fiat_p384_scalar_u1 = 0; let (x1293, x1294) = fiat_p384_scalar_addcarryx_u32(x1292, x1260, x1257); let mut x1295: u32 = 0; let mut x1296: fiat_p384_scalar_u1 = 0; let (x1295, x1296) = fiat_p384_scalar_addcarryx_u32(x1294, x1258, x1255); let mut x1297: u32 = 0; let mut x1298: fiat_p384_scalar_u1 = 0; let (x1297, x1298) = fiat_p384_scalar_addcarryx_u32(x1296, x1256, x1253); let x1299: u32 = ((x1298 as u32) + x1254); let mut x1300: u32 = 0; let mut x1301: fiat_p384_scalar_u1 = 0; let (x1300, x1301) = fiat_p384_scalar_addcarryx_u32(0x0, x1225, x1275); let mut x1302: u32 = 0; let mut x1303: fiat_p384_scalar_u1 = 0; let (x1302, x1303) = fiat_p384_scalar_addcarryx_u32(x1301, x1227, x1277); let mut x1304: u32 = 0; let mut x1305: fiat_p384_scalar_u1 = 0; let (x1304, x1305) = fiat_p384_scalar_addcarryx_u32(x1303, x1229, x1279); let mut x1306: u32 = 0; let mut x1307: fiat_p384_scalar_u1 = 0; let (x1306, x1307) = fiat_p384_scalar_addcarryx_u32(x1305, x1231, x1281); let mut x1308: u32 = 0; let mut x1309: fiat_p384_scalar_u1 = 0; let (x1308, x1309) = fiat_p384_scalar_addcarryx_u32(x1307, x1233, x1283); let mut x1310: u32 = 0; let mut x1311: fiat_p384_scalar_u1 = 0; let (x1310, x1311) = fiat_p384_scalar_addcarryx_u32(x1309, x1235, x1285); let mut x1312: u32 = 0; let mut x1313: fiat_p384_scalar_u1 = 0; let (x1312, x1313) = fiat_p384_scalar_addcarryx_u32(x1311, x1237, x1287); let mut x1314: u32 = 0; let mut x1315: fiat_p384_scalar_u1 = 0; let (x1314, x1315) = fiat_p384_scalar_addcarryx_u32(x1313, x1239, x1289); let mut x1316: u32 = 0; let mut x1317: fiat_p384_scalar_u1 = 0; let (x1316, x1317) = fiat_p384_scalar_addcarryx_u32(x1315, x1241, x1291); let mut x1318: u32 = 0; let mut x1319: fiat_p384_scalar_u1 = 0; let (x1318, x1319) = fiat_p384_scalar_addcarryx_u32(x1317, x1243, x1293); let mut x1320: u32 = 0; let mut x1321: fiat_p384_scalar_u1 = 0; let (x1320, x1321) = fiat_p384_scalar_addcarryx_u32(x1319, x1245, x1295); let mut x1322: u32 = 0; let mut x1323: fiat_p384_scalar_u1 = 0; let (x1322, x1323) = fiat_p384_scalar_addcarryx_u32(x1321, x1247, x1297); let mut x1324: u32 = 0; let mut x1325: fiat_p384_scalar_u1 = 0; let (x1324, x1325) = fiat_p384_scalar_addcarryx_u32(x1323, x1249, x1299); let x1326: u32 = ((x1325 as u32) + (x1250 as u32)); let mut x1327: u32 = 0; let mut x1328: u32 = 0; let (x1327, x1328) = fiat_p384_scalar_mulx_u32(x9, (arg2[11])); let mut x1329: u32 = 0; let mut x1330: u32 = 0; let (x1329, x1330) = fiat_p384_scalar_mulx_u32(x9, (arg2[10])); let mut x1331: u32 = 0; let mut x1332: u32 = 0; let (x1331, x1332) = fiat_p384_scalar_mulx_u32(x9, (arg2[9])); let mut x1333: u32 = 0; let mut x1334: u32 = 0; let (x1333, x1334) = fiat_p384_scalar_mulx_u32(x9, (arg2[8])); let mut x1335: u32 = 0; let mut x1336: u32 = 0; let (x1335, x1336) = fiat_p384_scalar_mulx_u32(x9, (arg2[7])); let mut x1337: u32 = 0; let mut x1338: u32 = 0; let (x1337, x1338) = fiat_p384_scalar_mulx_u32(x9, (arg2[6])); let mut x1339: u32 = 0; let mut x1340: u32 = 0; let (x1339, x1340) = fiat_p384_scalar_mulx_u32(x9, (arg2[5])); let mut x1341: u32 = 0; let mut x1342: u32 = 0; let (x1341, x1342) = fiat_p384_scalar_mulx_u32(x9, (arg2[4])); let mut x1343: u32 = 0; let mut x1344: u32 = 0; let (x1343, x1344) = fiat_p384_scalar_mulx_u32(x9, (arg2[3])); let mut x1345: u32 = 0; let mut x1346: u32 = 0; let (x1345, x1346) = fiat_p384_scalar_mulx_u32(x9, (arg2[2])); let mut x1347: u32 = 0; let mut x1348: u32 = 0; let (x1347, x1348) = fiat_p384_scalar_mulx_u32(x9, (arg2[1])); let mut x1349: u32 = 0; let mut x1350: u32 = 0; let (x1349, x1350) = fiat_p384_scalar_mulx_u32(x9, (arg2[0])); let mut x1351: u32 = 0; let mut x1352: fiat_p384_scalar_u1 = 0; let (x1351, x1352) = fiat_p384_scalar_addcarryx_u32(0x0, x1350, x1347); let mut x1353: u32 = 0; let mut x1354: fiat_p384_scalar_u1 = 0; let (x1353, x1354) = fiat_p384_scalar_addcarryx_u32(x1352, x1348, x1345); let mut x1355: u32 = 0; let mut x1356: fiat_p384_scalar_u1 = 0; let (x1355, x1356) = fiat_p384_scalar_addcarryx_u32(x1354, x1346, x1343); let mut x1357: u32 = 0; let mut x1358: fiat_p384_scalar_u1 = 0; let (x1357, x1358) = fiat_p384_scalar_addcarryx_u32(x1356, x1344, x1341); let mut x1359: u32 = 0; let mut x1360: fiat_p384_scalar_u1 = 0; let (x1359, x1360) = fiat_p384_scalar_addcarryx_u32(x1358, x1342, x1339); let mut x1361: u32 = 0; let mut x1362: fiat_p384_scalar_u1 = 0; let (x1361, x1362) = fiat_p384_scalar_addcarryx_u32(x1360, x1340, x1337); let mut x1363: u32 = 0; let mut x1364: fiat_p384_scalar_u1 = 0; let (x1363, x1364) = fiat_p384_scalar_addcarryx_u32(x1362, x1338, x1335); let mut x1365: u32 = 0; let mut x1366: fiat_p384_scalar_u1 = 0; let (x1365, x1366) = fiat_p384_scalar_addcarryx_u32(x1364, x1336, x1333); let mut x1367: u32 = 0; let mut x1368: fiat_p384_scalar_u1 = 0; let (x1367, x1368) = fiat_p384_scalar_addcarryx_u32(x1366, x1334, x1331); let mut x1369: u32 = 0; let mut x1370: fiat_p384_scalar_u1 = 0; let (x1369, x1370) = fiat_p384_scalar_addcarryx_u32(x1368, x1332, x1329); let mut x1371: u32 = 0; let mut x1372: fiat_p384_scalar_u1 = 0; let (x1371, x1372) = fiat_p384_scalar_addcarryx_u32(x1370, x1330, x1327); let x1373: u32 = ((x1372 as u32) + x1328); let mut x1374: u32 = 0; let mut x1375: fiat_p384_scalar_u1 = 0; let (x1374, x1375) = fiat_p384_scalar_addcarryx_u32(0x0, x1302, x1349); let mut x1376: u32 = 0; let mut x1377: fiat_p384_scalar_u1 = 0; let (x1376, x1377) = fiat_p384_scalar_addcarryx_u32(x1375, x1304, x1351); let mut x1378: u32 = 0; let mut x1379: fiat_p384_scalar_u1 = 0; let (x1378, x1379) = fiat_p384_scalar_addcarryx_u32(x1377, x1306, x1353); let mut x1380: u32 = 0; let mut x1381: fiat_p384_scalar_u1 = 0; let (x1380, x1381) = fiat_p384_scalar_addcarryx_u32(x1379, x1308, x1355); let mut x1382: u32 = 0; let mut x1383: fiat_p384_scalar_u1 = 0; let (x1382, x1383) = fiat_p384_scalar_addcarryx_u32(x1381, x1310, x1357); let mut x1384: u32 = 0; let mut x1385: fiat_p384_scalar_u1 = 0; let (x1384, x1385) = fiat_p384_scalar_addcarryx_u32(x1383, x1312, x1359); let mut x1386: u32 = 0; let mut x1387: fiat_p384_scalar_u1 = 0; let (x1386, x1387) = fiat_p384_scalar_addcarryx_u32(x1385, x1314, x1361); let mut x1388: u32 = 0; let mut x1389: fiat_p384_scalar_u1 = 0; let (x1388, x1389) = fiat_p384_scalar_addcarryx_u32(x1387, x1316, x1363); let mut x1390: u32 = 0; let mut x1391: fiat_p384_scalar_u1 = 0; let (x1390, x1391) = fiat_p384_scalar_addcarryx_u32(x1389, x1318, x1365); let mut x1392: u32 = 0; let mut x1393: fiat_p384_scalar_u1 = 0; let (x1392, x1393) = fiat_p384_scalar_addcarryx_u32(x1391, x1320, x1367); let mut x1394: u32 = 0; let mut x1395: fiat_p384_scalar_u1 = 0; let (x1394, x1395) = fiat_p384_scalar_addcarryx_u32(x1393, x1322, x1369); let mut x1396: u32 = 0; let mut x1397: fiat_p384_scalar_u1 = 0; let (x1396, x1397) = fiat_p384_scalar_addcarryx_u32(x1395, x1324, x1371); let mut x1398: u32 = 0; let mut x1399: fiat_p384_scalar_u1 = 0; let (x1398, x1399) = fiat_p384_scalar_addcarryx_u32(x1397, x1326, x1373); let mut x1400: u32 = 0; let mut x1401: u32 = 0; let (x1400, x1401) = fiat_p384_scalar_mulx_u32(x1374, 0xe88fdc45); let mut x1402: u32 = 0; let mut x1403: u32 = 0; let (x1402, x1403) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1404: u32 = 0; let mut x1405: u32 = 0; let (x1404, x1405) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1406: u32 = 0; let mut x1407: u32 = 0; let (x1406, x1407) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1408: u32 = 0; let mut x1409: u32 = 0; let (x1408, x1409) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1410: u32 = 0; let mut x1411: u32 = 0; let (x1410, x1411) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1412: u32 = 0; let mut x1413: u32 = 0; let (x1412, x1413) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1414: u32 = 0; let mut x1415: u32 = 0; let (x1414, x1415) = fiat_p384_scalar_mulx_u32(x1400, 0xc7634d81); let mut x1416: u32 = 0; let mut x1417: u32 = 0; let (x1416, x1417) = fiat_p384_scalar_mulx_u32(x1400, 0xf4372ddf); let mut x1418: u32 = 0; let mut x1419: u32 = 0; let (x1418, x1419) = fiat_p384_scalar_mulx_u32(x1400, 0x581a0db2); let mut x1420: u32 = 0; let mut x1421: u32 = 0; let (x1420, x1421) = fiat_p384_scalar_mulx_u32(x1400, 0x48b0a77a); let mut x1422: u32 = 0; let mut x1423: u32 = 0; let (x1422, x1423) = fiat_p384_scalar_mulx_u32(x1400, 0xecec196a); let mut x1424: u32 = 0; let mut x1425: u32 = 0; let (x1424, x1425) = fiat_p384_scalar_mulx_u32(x1400, 0xccc52973); let mut x1426: u32 = 0; let mut x1427: fiat_p384_scalar_u1 = 0; let (x1426, x1427) = fiat_p384_scalar_addcarryx_u32(0x0, x1425, x1422); let mut x1428: u32 = 0; let mut x1429: fiat_p384_scalar_u1 = 0; let (x1428, x1429) = fiat_p384_scalar_addcarryx_u32(x1427, x1423, x1420); let mut x1430: u32 = 0; let mut x1431: fiat_p384_scalar_u1 = 0; let (x1430, x1431) = fiat_p384_scalar_addcarryx_u32(x1429, x1421, x1418); let mut x1432: u32 = 0; let mut x1433: fiat_p384_scalar_u1 = 0; let (x1432, x1433) = fiat_p384_scalar_addcarryx_u32(x1431, x1419, x1416); let mut x1434: u32 = 0; let mut x1435: fiat_p384_scalar_u1 = 0; let (x1434, x1435) = fiat_p384_scalar_addcarryx_u32(x1433, x1417, x1414); let mut x1436: u32 = 0; let mut x1437: fiat_p384_scalar_u1 = 0; let (x1436, x1437) = fiat_p384_scalar_addcarryx_u32(x1435, x1415, x1412); let mut x1438: u32 = 0; let mut x1439: fiat_p384_scalar_u1 = 0; let (x1438, x1439) = fiat_p384_scalar_addcarryx_u32(x1437, x1413, x1410); let mut x1440: u32 = 0; let mut x1441: fiat_p384_scalar_u1 = 0; let (x1440, x1441) = fiat_p384_scalar_addcarryx_u32(x1439, x1411, x1408); let mut x1442: u32 = 0; let mut x1443: fiat_p384_scalar_u1 = 0; let (x1442, x1443) = fiat_p384_scalar_addcarryx_u32(x1441, x1409, x1406); let mut x1444: u32 = 0; let mut x1445: fiat_p384_scalar_u1 = 0; let (x1444, x1445) = fiat_p384_scalar_addcarryx_u32(x1443, x1407, x1404); let mut x1446: u32 = 0; let mut x1447: fiat_p384_scalar_u1 = 0; let (x1446, x1447) = fiat_p384_scalar_addcarryx_u32(x1445, x1405, x1402); let x1448: u32 = ((x1447 as u32) + x1403); let mut x1449: u32 = 0; let mut x1450: fiat_p384_scalar_u1 = 0; let (x1449, x1450) = fiat_p384_scalar_addcarryx_u32(0x0, x1374, x1424); let mut x1451: u32 = 0; let mut x1452: fiat_p384_scalar_u1 = 0; let (x1451, x1452) = fiat_p384_scalar_addcarryx_u32(x1450, x1376, x1426); let mut x1453: u32 = 0; let mut x1454: fiat_p384_scalar_u1 = 0; let (x1453, x1454) = fiat_p384_scalar_addcarryx_u32(x1452, x1378, x1428); let mut x1455: u32 = 0; let mut x1456: fiat_p384_scalar_u1 = 0; let (x1455, x1456) = fiat_p384_scalar_addcarryx_u32(x1454, x1380, x1430); let mut x1457: u32 = 0; let mut x1458: fiat_p384_scalar_u1 = 0; let (x1457, x1458) = fiat_p384_scalar_addcarryx_u32(x1456, x1382, x1432); let mut x1459: u32 = 0; let mut x1460: fiat_p384_scalar_u1 = 0; let (x1459, x1460) = fiat_p384_scalar_addcarryx_u32(x1458, x1384, x1434); let mut x1461: u32 = 0; let mut x1462: fiat_p384_scalar_u1 = 0; let (x1461, x1462) = fiat_p384_scalar_addcarryx_u32(x1460, x1386, x1436); let mut x1463: u32 = 0; let mut x1464: fiat_p384_scalar_u1 = 0; let (x1463, x1464) = fiat_p384_scalar_addcarryx_u32(x1462, x1388, x1438); let mut x1465: u32 = 0; let mut x1466: fiat_p384_scalar_u1 = 0; let (x1465, x1466) = fiat_p384_scalar_addcarryx_u32(x1464, x1390, x1440); let mut x1467: u32 = 0; let mut x1468: fiat_p384_scalar_u1 = 0; let (x1467, x1468) = fiat_p384_scalar_addcarryx_u32(x1466, x1392, x1442); let mut x1469: u32 = 0; let mut x1470: fiat_p384_scalar_u1 = 0; let (x1469, x1470) = fiat_p384_scalar_addcarryx_u32(x1468, x1394, x1444); let mut x1471: u32 = 0; let mut x1472: fiat_p384_scalar_u1 = 0; let (x1471, x1472) = fiat_p384_scalar_addcarryx_u32(x1470, x1396, x1446); let mut x1473: u32 = 0; let mut x1474: fiat_p384_scalar_u1 = 0; let (x1473, x1474) = fiat_p384_scalar_addcarryx_u32(x1472, x1398, x1448); let x1475: u32 = ((x1474 as u32) + (x1399 as u32)); let mut x1476: u32 = 0; let mut x1477: u32 = 0; let (x1476, x1477) = fiat_p384_scalar_mulx_u32(x10, (arg2[11])); let mut x1478: u32 = 0; let mut x1479: u32 = 0; let (x1478, x1479) = fiat_p384_scalar_mulx_u32(x10, (arg2[10])); let mut x1480: u32 = 0; let mut x1481: u32 = 0; let (x1480, x1481) = fiat_p384_scalar_mulx_u32(x10, (arg2[9])); let mut x1482: u32 = 0; let mut x1483: u32 = 0; let (x1482, x1483) = fiat_p384_scalar_mulx_u32(x10, (arg2[8])); let mut x1484: u32 = 0; let mut x1485: u32 = 0; let (x1484, x1485) = fiat_p384_scalar_mulx_u32(x10, (arg2[7])); let mut x1486: u32 = 0; let mut x1487: u32 = 0; let (x1486, x1487) = fiat_p384_scalar_mulx_u32(x10, (arg2[6])); let mut x1488: u32 = 0; let mut x1489: u32 = 0; let (x1488, x1489) = fiat_p384_scalar_mulx_u32(x10, (arg2[5])); let mut x1490: u32 = 0; let mut x1491: u32 = 0; let (x1490, x1491) = fiat_p384_scalar_mulx_u32(x10, (arg2[4])); let mut x1492: u32 = 0; let mut x1493: u32 = 0; let (x1492, x1493) = fiat_p384_scalar_mulx_u32(x10, (arg2[3])); let mut x1494: u32 = 0; let mut x1495: u32 = 0; let (x1494, x1495) = fiat_p384_scalar_mulx_u32(x10, (arg2[2])); let mut x1496: u32 = 0; let mut x1497: u32 = 0; let (x1496, x1497) = fiat_p384_scalar_mulx_u32(x10, (arg2[1])); let mut x1498: u32 = 0; let mut x1499: u32 = 0; let (x1498, x1499) = fiat_p384_scalar_mulx_u32(x10, (arg2[0])); let mut x1500: u32 = 0; let mut x1501: fiat_p384_scalar_u1 = 0; let (x1500, x1501) = fiat_p384_scalar_addcarryx_u32(0x0, x1499, x1496); let mut x1502: u32 = 0; let mut x1503: fiat_p384_scalar_u1 = 0; let (x1502, x1503) = fiat_p384_scalar_addcarryx_u32(x1501, x1497, x1494); let mut x1504: u32 = 0; let mut x1505: fiat_p384_scalar_u1 = 0; let (x1504, x1505) = fiat_p384_scalar_addcarryx_u32(x1503, x1495, x1492); let mut x1506: u32 = 0; let mut x1507: fiat_p384_scalar_u1 = 0; let (x1506, x1507) = fiat_p384_scalar_addcarryx_u32(x1505, x1493, x1490); let mut x1508: u32 = 0; let mut x1509: fiat_p384_scalar_u1 = 0; let (x1508, x1509) = fiat_p384_scalar_addcarryx_u32(x1507, x1491, x1488); let mut x1510: u32 = 0; let mut x1511: fiat_p384_scalar_u1 = 0; let (x1510, x1511) = fiat_p384_scalar_addcarryx_u32(x1509, x1489, x1486); let mut x1512: u32 = 0; let mut x1513: fiat_p384_scalar_u1 = 0; let (x1512, x1513) = fiat_p384_scalar_addcarryx_u32(x1511, x1487, x1484); let mut x1514: u32 = 0; let mut x1515: fiat_p384_scalar_u1 = 0; let (x1514, x1515) = fiat_p384_scalar_addcarryx_u32(x1513, x1485, x1482); let mut x1516: u32 = 0; let mut x1517: fiat_p384_scalar_u1 = 0; let (x1516, x1517) = fiat_p384_scalar_addcarryx_u32(x1515, x1483, x1480); let mut x1518: u32 = 0; let mut x1519: fiat_p384_scalar_u1 = 0; let (x1518, x1519) = fiat_p384_scalar_addcarryx_u32(x1517, x1481, x1478); let mut x1520: u32 = 0; let mut x1521: fiat_p384_scalar_u1 = 0; let (x1520, x1521) = fiat_p384_scalar_addcarryx_u32(x1519, x1479, x1476); let x1522: u32 = ((x1521 as u32) + x1477); let mut x1523: u32 = 0; let mut x1524: fiat_p384_scalar_u1 = 0; let (x1523, x1524) = fiat_p384_scalar_addcarryx_u32(0x0, x1451, x1498); let mut x1525: u32 = 0; let mut x1526: fiat_p384_scalar_u1 = 0; let (x1525, x1526) = fiat_p384_scalar_addcarryx_u32(x1524, x1453, x1500); let mut x1527: u32 = 0; let mut x1528: fiat_p384_scalar_u1 = 0; let (x1527, x1528) = fiat_p384_scalar_addcarryx_u32(x1526, x1455, x1502); let mut x1529: u32 = 0; let mut x1530: fiat_p384_scalar_u1 = 0; let (x1529, x1530) = fiat_p384_scalar_addcarryx_u32(x1528, x1457, x1504); let mut x1531: u32 = 0; let mut x1532: fiat_p384_scalar_u1 = 0; let (x1531, x1532) = fiat_p384_scalar_addcarryx_u32(x1530, x1459, x1506); let mut x1533: u32 = 0; let mut x1534: fiat_p384_scalar_u1 = 0; let (x1533, x1534) = fiat_p384_scalar_addcarryx_u32(x1532, x1461, x1508); let mut x1535: u32 = 0; let mut x1536: fiat_p384_scalar_u1 = 0; let (x1535, x1536) = fiat_p384_scalar_addcarryx_u32(x1534, x1463, x1510); let mut x1537: u32 = 0; let mut x1538: fiat_p384_scalar_u1 = 0; let (x1537, x1538) = fiat_p384_scalar_addcarryx_u32(x1536, x1465, x1512); let mut x1539: u32 = 0; let mut x1540: fiat_p384_scalar_u1 = 0; let (x1539, x1540) = fiat_p384_scalar_addcarryx_u32(x1538, x1467, x1514); let mut x1541: u32 = 0; let mut x1542: fiat_p384_scalar_u1 = 0; let (x1541, x1542) = fiat_p384_scalar_addcarryx_u32(x1540, x1469, x1516); let mut x1543: u32 = 0; let mut x1544: fiat_p384_scalar_u1 = 0; let (x1543, x1544) = fiat_p384_scalar_addcarryx_u32(x1542, x1471, x1518); let mut x1545: u32 = 0; let mut x1546: fiat_p384_scalar_u1 = 0; let (x1545, x1546) = fiat_p384_scalar_addcarryx_u32(x1544, x1473, x1520); let mut x1547: u32 = 0; let mut x1548: fiat_p384_scalar_u1 = 0; let (x1547, x1548) = fiat_p384_scalar_addcarryx_u32(x1546, x1475, x1522); let mut x1549: u32 = 0; let mut x1550: u32 = 0; let (x1549, x1550) = fiat_p384_scalar_mulx_u32(x1523, 0xe88fdc45); let mut x1551: u32 = 0; let mut x1552: u32 = 0; let (x1551, x1552) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1553: u32 = 0; let mut x1554: u32 = 0; let (x1553, x1554) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1555: u32 = 0; let mut x1556: u32 = 0; let (x1555, x1556) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1557: u32 = 0; let mut x1558: u32 = 0; let (x1557, x1558) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1559: u32 = 0; let mut x1560: u32 = 0; let (x1559, x1560) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1561: u32 = 0; let mut x1562: u32 = 0; let (x1561, x1562) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1563: u32 = 0; let mut x1564: u32 = 0; let (x1563, x1564) = fiat_p384_scalar_mulx_u32(x1549, 0xc7634d81); let mut x1565: u32 = 0; let mut x1566: u32 = 0; let (x1565, x1566) = fiat_p384_scalar_mulx_u32(x1549, 0xf4372ddf); let mut x1567: u32 = 0; let mut x1568: u32 = 0; let (x1567, x1568) = fiat_p384_scalar_mulx_u32(x1549, 0x581a0db2); let mut x1569: u32 = 0; let mut x1570: u32 = 0; let (x1569, x1570) = fiat_p384_scalar_mulx_u32(x1549, 0x48b0a77a); let mut x1571: u32 = 0; let mut x1572: u32 = 0; let (x1571, x1572) = fiat_p384_scalar_mulx_u32(x1549, 0xecec196a); let mut x1573: u32 = 0; let mut x1574: u32 = 0; let (x1573, x1574) = fiat_p384_scalar_mulx_u32(x1549, 0xccc52973); let mut x1575: u32 = 0; let mut x1576: fiat_p384_scalar_u1 = 0; let (x1575, x1576) = fiat_p384_scalar_addcarryx_u32(0x0, x1574, x1571); let mut x1577: u32 = 0; let mut x1578: fiat_p384_scalar_u1 = 0; let (x1577, x1578) = fiat_p384_scalar_addcarryx_u32(x1576, x1572, x1569); let mut x1579: u32 = 0; let mut x1580: fiat_p384_scalar_u1 = 0; let (x1579, x1580) = fiat_p384_scalar_addcarryx_u32(x1578, x1570, x1567); let mut x1581: u32 = 0; let mut x1582: fiat_p384_scalar_u1 = 0; let (x1581, x1582) = fiat_p384_scalar_addcarryx_u32(x1580, x1568, x1565); let mut x1583: u32 = 0; let mut x1584: fiat_p384_scalar_u1 = 0; let (x1583, x1584) = fiat_p384_scalar_addcarryx_u32(x1582, x1566, x1563); let mut x1585: u32 = 0; let mut x1586: fiat_p384_scalar_u1 = 0; let (x1585, x1586) = fiat_p384_scalar_addcarryx_u32(x1584, x1564, x1561); let mut x1587: u32 = 0; let mut x1588: fiat_p384_scalar_u1 = 0; let (x1587, x1588) = fiat_p384_scalar_addcarryx_u32(x1586, x1562, x1559); let mut x1589: u32 = 0; let mut x1590: fiat_p384_scalar_u1 = 0; let (x1589, x1590) = fiat_p384_scalar_addcarryx_u32(x1588, x1560, x1557); let mut x1591: u32 = 0; let mut x1592: fiat_p384_scalar_u1 = 0; let (x1591, x1592) = fiat_p384_scalar_addcarryx_u32(x1590, x1558, x1555); let mut x1593: u32 = 0; let mut x1594: fiat_p384_scalar_u1 = 0; let (x1593, x1594) = fiat_p384_scalar_addcarryx_u32(x1592, x1556, x1553); let mut x1595: u32 = 0; let mut x1596: fiat_p384_scalar_u1 = 0; let (x1595, x1596) = fiat_p384_scalar_addcarryx_u32(x1594, x1554, x1551); let x1597: u32 = ((x1596 as u32) + x1552); let mut x1598: u32 = 0; let mut x1599: fiat_p384_scalar_u1 = 0; let (x1598, x1599) = fiat_p384_scalar_addcarryx_u32(0x0, x1523, x1573); let mut x1600: u32 = 0; let mut x1601: fiat_p384_scalar_u1 = 0; let (x1600, x1601) = fiat_p384_scalar_addcarryx_u32(x1599, x1525, x1575); let mut x1602: u32 = 0; let mut x1603: fiat_p384_scalar_u1 = 0; let (x1602, x1603) = fiat_p384_scalar_addcarryx_u32(x1601, x1527, x1577); let mut x1604: u32 = 0; let mut x1605: fiat_p384_scalar_u1 = 0; let (x1604, x1605) = fiat_p384_scalar_addcarryx_u32(x1603, x1529, x1579); let mut x1606: u32 = 0; let mut x1607: fiat_p384_scalar_u1 = 0; let (x1606, x1607) = fiat_p384_scalar_addcarryx_u32(x1605, x1531, x1581); let mut x1608: u32 = 0; let mut x1609: fiat_p384_scalar_u1 = 0; let (x1608, x1609) = fiat_p384_scalar_addcarryx_u32(x1607, x1533, x1583); let mut x1610: u32 = 0; let mut x1611: fiat_p384_scalar_u1 = 0; let (x1610, x1611) = fiat_p384_scalar_addcarryx_u32(x1609, x1535, x1585); let mut x1612: u32 = 0; let mut x1613: fiat_p384_scalar_u1 = 0; let (x1612, x1613) = fiat_p384_scalar_addcarryx_u32(x1611, x1537, x1587); let mut x1614: u32 = 0; let mut x1615: fiat_p384_scalar_u1 = 0; let (x1614, x1615) = fiat_p384_scalar_addcarryx_u32(x1613, x1539, x1589); let mut x1616: u32 = 0; let mut x1617: fiat_p384_scalar_u1 = 0; let (x1616, x1617) = fiat_p384_scalar_addcarryx_u32(x1615, x1541, x1591); let mut x1618: u32 = 0; let mut x1619: fiat_p384_scalar_u1 = 0; let (x1618, x1619) = fiat_p384_scalar_addcarryx_u32(x1617, x1543, x1593); let mut x1620: u32 = 0; let mut x1621: fiat_p384_scalar_u1 = 0; let (x1620, x1621) = fiat_p384_scalar_addcarryx_u32(x1619, x1545, x1595); let mut x1622: u32 = 0; let mut x1623: fiat_p384_scalar_u1 = 0; let (x1622, x1623) = fiat_p384_scalar_addcarryx_u32(x1621, x1547, x1597); let x1624: u32 = ((x1623 as u32) + (x1548 as u32)); let mut x1625: u32 = 0; let mut x1626: u32 = 0; let (x1625, x1626) = fiat_p384_scalar_mulx_u32(x11, (arg2[11])); let mut x1627: u32 = 0; let mut x1628: u32 = 0; let (x1627, x1628) = fiat_p384_scalar_mulx_u32(x11, (arg2[10])); let mut x1629: u32 = 0; let mut x1630: u32 = 0; let (x1629, x1630) = fiat_p384_scalar_mulx_u32(x11, (arg2[9])); let mut x1631: u32 = 0; let mut x1632: u32 = 0; let (x1631, x1632) = fiat_p384_scalar_mulx_u32(x11, (arg2[8])); let mut x1633: u32 = 0; let mut x1634: u32 = 0; let (x1633, x1634) = fiat_p384_scalar_mulx_u32(x11, (arg2[7])); let mut x1635: u32 = 0; let mut x1636: u32 = 0; let (x1635, x1636) = fiat_p384_scalar_mulx_u32(x11, (arg2[6])); let mut x1637: u32 = 0; let mut x1638: u32 = 0; let (x1637, x1638) = fiat_p384_scalar_mulx_u32(x11, (arg2[5])); let mut x1639: u32 = 0; let mut x1640: u32 = 0; let (x1639, x1640) = fiat_p384_scalar_mulx_u32(x11, (arg2[4])); let mut x1641: u32 = 0; let mut x1642: u32 = 0; let (x1641, x1642) = fiat_p384_scalar_mulx_u32(x11, (arg2[3])); let mut x1643: u32 = 0; let mut x1644: u32 = 0; let (x1643, x1644) = fiat_p384_scalar_mulx_u32(x11, (arg2[2])); let mut x1645: u32 = 0; let mut x1646: u32 = 0; let (x1645, x1646) = fiat_p384_scalar_mulx_u32(x11, (arg2[1])); let mut x1647: u32 = 0; let mut x1648: u32 = 0; let (x1647, x1648) = fiat_p384_scalar_mulx_u32(x11, (arg2[0])); let mut x1649: u32 = 0; let mut x1650: fiat_p384_scalar_u1 = 0; let (x1649, x1650) = fiat_p384_scalar_addcarryx_u32(0x0, x1648, x1645); let mut x1651: u32 = 0; let mut x1652: fiat_p384_scalar_u1 = 0; let (x1651, x1652) = fiat_p384_scalar_addcarryx_u32(x1650, x1646, x1643); let mut x1653: u32 = 0; let mut x1654: fiat_p384_scalar_u1 = 0; let (x1653, x1654) = fiat_p384_scalar_addcarryx_u32(x1652, x1644, x1641); let mut x1655: u32 = 0; let mut x1656: fiat_p384_scalar_u1 = 0; let (x1655, x1656) = fiat_p384_scalar_addcarryx_u32(x1654, x1642, x1639); let mut x1657: u32 = 0; let mut x1658: fiat_p384_scalar_u1 = 0; let (x1657, x1658) = fiat_p384_scalar_addcarryx_u32(x1656, x1640, x1637); let mut x1659: u32 = 0; let mut x1660: fiat_p384_scalar_u1 = 0; let (x1659, x1660) = fiat_p384_scalar_addcarryx_u32(x1658, x1638, x1635); let mut x1661: u32 = 0; let mut x1662: fiat_p384_scalar_u1 = 0; let (x1661, x1662) = fiat_p384_scalar_addcarryx_u32(x1660, x1636, x1633); let mut x1663: u32 = 0; let mut x1664: fiat_p384_scalar_u1 = 0; let (x1663, x1664) = fiat_p384_scalar_addcarryx_u32(x1662, x1634, x1631); let mut x1665: u32 = 0; let mut x1666: fiat_p384_scalar_u1 = 0; let (x1665, x1666) = fiat_p384_scalar_addcarryx_u32(x1664, x1632, x1629); let mut x1667: u32 = 0; let mut x1668: fiat_p384_scalar_u1 = 0; let (x1667, x1668) = fiat_p384_scalar_addcarryx_u32(x1666, x1630, x1627); let mut x1669: u32 = 0; let mut x1670: fiat_p384_scalar_u1 = 0; let (x1669, x1670) = fiat_p384_scalar_addcarryx_u32(x1668, x1628, x1625); let x1671: u32 = ((x1670 as u32) + x1626); let mut x1672: u32 = 0; let mut x1673: fiat_p384_scalar_u1 = 0; let (x1672, x1673) = fiat_p384_scalar_addcarryx_u32(0x0, x1600, x1647); let mut x1674: u32 = 0; let mut x1675: fiat_p384_scalar_u1 = 0; let (x1674, x1675) = fiat_p384_scalar_addcarryx_u32(x1673, x1602, x1649); let mut x1676: u32 = 0; let mut x1677: fiat_p384_scalar_u1 = 0; let (x1676, x1677) = fiat_p384_scalar_addcarryx_u32(x1675, x1604, x1651); let mut x1678: u32 = 0; let mut x1679: fiat_p384_scalar_u1 = 0; let (x1678, x1679) = fiat_p384_scalar_addcarryx_u32(x1677, x1606, x1653); let mut x1680: u32 = 0; let mut x1681: fiat_p384_scalar_u1 = 0; let (x1680, x1681) = fiat_p384_scalar_addcarryx_u32(x1679, x1608, x1655); let mut x1682: u32 = 0; let mut x1683: fiat_p384_scalar_u1 = 0; let (x1682, x1683) = fiat_p384_scalar_addcarryx_u32(x1681, x1610, x1657); let mut x1684: u32 = 0; let mut x1685: fiat_p384_scalar_u1 = 0; let (x1684, x1685) = fiat_p384_scalar_addcarryx_u32(x1683, x1612, x1659); let mut x1686: u32 = 0; let mut x1687: fiat_p384_scalar_u1 = 0; let (x1686, x1687) = fiat_p384_scalar_addcarryx_u32(x1685, x1614, x1661); let mut x1688: u32 = 0; let mut x1689: fiat_p384_scalar_u1 = 0; let (x1688, x1689) = fiat_p384_scalar_addcarryx_u32(x1687, x1616, x1663); let mut x1690: u32 = 0; let mut x1691: fiat_p384_scalar_u1 = 0; let (x1690, x1691) = fiat_p384_scalar_addcarryx_u32(x1689, x1618, x1665); let mut x1692: u32 = 0; let mut x1693: fiat_p384_scalar_u1 = 0; let (x1692, x1693) = fiat_p384_scalar_addcarryx_u32(x1691, x1620, x1667); let mut x1694: u32 = 0; let mut x1695: fiat_p384_scalar_u1 = 0; let (x1694, x1695) = fiat_p384_scalar_addcarryx_u32(x1693, x1622, x1669); let mut x1696: u32 = 0; let mut x1697: fiat_p384_scalar_u1 = 0; let (x1696, x1697) = fiat_p384_scalar_addcarryx_u32(x1695, x1624, x1671); let mut x1698: u32 = 0; let mut x1699: u32 = 0; let (x1698, x1699) = fiat_p384_scalar_mulx_u32(x1672, 0xe88fdc45); let mut x1700: u32 = 0; let mut x1701: u32 = 0; let (x1700, x1701) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1702: u32 = 0; let mut x1703: u32 = 0; let (x1702, x1703) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1704: u32 = 0; let mut x1705: u32 = 0; let (x1704, x1705) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1706: u32 = 0; let mut x1707: u32 = 0; let (x1706, x1707) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1708: u32 = 0; let mut x1709: u32 = 0; let (x1708, x1709) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1710: u32 = 0; let mut x1711: u32 = 0; let (x1710, x1711) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1712: u32 = 0; let mut x1713: u32 = 0; let (x1712, x1713) = fiat_p384_scalar_mulx_u32(x1698, 0xc7634d81); let mut x1714: u32 = 0; let mut x1715: u32 = 0; let (x1714, x1715) = fiat_p384_scalar_mulx_u32(x1698, 0xf4372ddf); let mut x1716: u32 = 0; let mut x1717: u32 = 0; let (x1716, x1717) = fiat_p384_scalar_mulx_u32(x1698, 0x581a0db2); let mut x1718: u32 = 0; let mut x1719: u32 = 0; let (x1718, x1719) = fiat_p384_scalar_mulx_u32(x1698, 0x48b0a77a); let mut x1720: u32 = 0; let mut x1721: u32 = 0; let (x1720, x1721) = fiat_p384_scalar_mulx_u32(x1698, 0xecec196a); let mut x1722: u32 = 0; let mut x1723: u32 = 0; let (x1722, x1723) = fiat_p384_scalar_mulx_u32(x1698, 0xccc52973); let mut x1724: u32 = 0; let mut x1725: fiat_p384_scalar_u1 = 0; let (x1724, x1725) = fiat_p384_scalar_addcarryx_u32(0x0, x1723, x1720); let mut x1726: u32 = 0; let mut x1727: fiat_p384_scalar_u1 = 0; let (x1726, x1727) = fiat_p384_scalar_addcarryx_u32(x1725, x1721, x1718); let mut x1728: u32 = 0; let mut x1729: fiat_p384_scalar_u1 = 0; let (x1728, x1729) = fiat_p384_scalar_addcarryx_u32(x1727, x1719, x1716); let mut x1730: u32 = 0; let mut x1731: fiat_p384_scalar_u1 = 0; let (x1730, x1731) = fiat_p384_scalar_addcarryx_u32(x1729, x1717, x1714); let mut x1732: u32 = 0; let mut x1733: fiat_p384_scalar_u1 = 0; let (x1732, x1733) = fiat_p384_scalar_addcarryx_u32(x1731, x1715, x1712); let mut x1734: u32 = 0; let mut x1735: fiat_p384_scalar_u1 = 0; let (x1734, x1735) = fiat_p384_scalar_addcarryx_u32(x1733, x1713, x1710); let mut x1736: u32 = 0; let mut x1737: fiat_p384_scalar_u1 = 0; let (x1736, x1737) = fiat_p384_scalar_addcarryx_u32(x1735, x1711, x1708); let mut x1738: u32 = 0; let mut x1739: fiat_p384_scalar_u1 = 0; let (x1738, x1739) = fiat_p384_scalar_addcarryx_u32(x1737, x1709, x1706); let mut x1740: u32 = 0; let mut x1741: fiat_p384_scalar_u1 = 0; let (x1740, x1741) = fiat_p384_scalar_addcarryx_u32(x1739, x1707, x1704); let mut x1742: u32 = 0; let mut x1743: fiat_p384_scalar_u1 = 0; let (x1742, x1743) = fiat_p384_scalar_addcarryx_u32(x1741, x1705, x1702); let mut x1744: u32 = 0; let mut x1745: fiat_p384_scalar_u1 = 0; let (x1744, x1745) = fiat_p384_scalar_addcarryx_u32(x1743, x1703, x1700); let x1746: u32 = ((x1745 as u32) + x1701); let mut x1747: u32 = 0; let mut x1748: fiat_p384_scalar_u1 = 0; let (x1747, x1748) = fiat_p384_scalar_addcarryx_u32(0x0, x1672, x1722); let mut x1749: u32 = 0; let mut x1750: fiat_p384_scalar_u1 = 0; let (x1749, x1750) = fiat_p384_scalar_addcarryx_u32(x1748, x1674, x1724); let mut x1751: u32 = 0; let mut x1752: fiat_p384_scalar_u1 = 0; let (x1751, x1752) = fiat_p384_scalar_addcarryx_u32(x1750, x1676, x1726); let mut x1753: u32 = 0; let mut x1754: fiat_p384_scalar_u1 = 0; let (x1753, x1754) = fiat_p384_scalar_addcarryx_u32(x1752, x1678, x1728); let mut x1755: u32 = 0; let mut x1756: fiat_p384_scalar_u1 = 0; let (x1755, x1756) = fiat_p384_scalar_addcarryx_u32(x1754, x1680, x1730); let mut x1757: u32 = 0; let mut x1758: fiat_p384_scalar_u1 = 0; let (x1757, x1758) = fiat_p384_scalar_addcarryx_u32(x1756, x1682, x1732); let mut x1759: u32 = 0; let mut x1760: fiat_p384_scalar_u1 = 0; let (x1759, x1760) = fiat_p384_scalar_addcarryx_u32(x1758, x1684, x1734); let mut x1761: u32 = 0; let mut x1762: fiat_p384_scalar_u1 = 0; let (x1761, x1762) = fiat_p384_scalar_addcarryx_u32(x1760, x1686, x1736); let mut x1763: u32 = 0; let mut x1764: fiat_p384_scalar_u1 = 0; let (x1763, x1764) = fiat_p384_scalar_addcarryx_u32(x1762, x1688, x1738); let mut x1765: u32 = 0; let mut x1766: fiat_p384_scalar_u1 = 0; let (x1765, x1766) = fiat_p384_scalar_addcarryx_u32(x1764, x1690, x1740); let mut x1767: u32 = 0; let mut x1768: fiat_p384_scalar_u1 = 0; let (x1767, x1768) = fiat_p384_scalar_addcarryx_u32(x1766, x1692, x1742); let mut x1769: u32 = 0; let mut x1770: fiat_p384_scalar_u1 = 0; let (x1769, x1770) = fiat_p384_scalar_addcarryx_u32(x1768, x1694, x1744); let mut x1771: u32 = 0; let mut x1772: fiat_p384_scalar_u1 = 0; let (x1771, x1772) = fiat_p384_scalar_addcarryx_u32(x1770, x1696, x1746); let x1773: u32 = ((x1772 as u32) + (x1697 as u32)); let mut x1774: u32 = 0; let mut x1775: fiat_p384_scalar_u1 = 0; let (x1774, x1775) = fiat_p384_scalar_subborrowx_u32(0x0, x1749, 0xccc52973); let mut x1776: u32 = 0; let mut x1777: fiat_p384_scalar_u1 = 0; let (x1776, x1777) = fiat_p384_scalar_subborrowx_u32(x1775, x1751, 0xecec196a); let mut x1778: u32 = 0; let mut x1779: fiat_p384_scalar_u1 = 0; let (x1778, x1779) = fiat_p384_scalar_subborrowx_u32(x1777, x1753, 0x48b0a77a); let mut x1780: u32 = 0; let mut x1781: fiat_p384_scalar_u1 = 0; let (x1780, x1781) = fiat_p384_scalar_subborrowx_u32(x1779, x1755, 0x581a0db2); let mut x1782: u32 = 0; let mut x1783: fiat_p384_scalar_u1 = 0; let (x1782, x1783) = fiat_p384_scalar_subborrowx_u32(x1781, x1757, 0xf4372ddf); let mut x1784: u32 = 0; let mut x1785: fiat_p384_scalar_u1 = 0; let (x1784, x1785) = fiat_p384_scalar_subborrowx_u32(x1783, x1759, 0xc7634d81); let mut x1786: u32 = 0; let mut x1787: fiat_p384_scalar_u1 = 0; let (x1786, x1787) = fiat_p384_scalar_subborrowx_u32(x1785, x1761, 0xffffffff); let mut x1788: u32 = 0; let mut x1789: fiat_p384_scalar_u1 = 0; let (x1788, x1789) = fiat_p384_scalar_subborrowx_u32(x1787, x1763, 0xffffffff); let mut x1790: u32 = 0; let mut x1791: fiat_p384_scalar_u1 = 0; let (x1790, x1791) = fiat_p384_scalar_subborrowx_u32(x1789, x1765, 0xffffffff); let mut x1792: u32 = 0; let mut x1793: fiat_p384_scalar_u1 = 0; let (x1792, x1793) = fiat_p384_scalar_subborrowx_u32(x1791, x1767, 0xffffffff); let mut x1794: u32 = 0; let mut x1795: fiat_p384_scalar_u1 = 0; let (x1794, x1795) = fiat_p384_scalar_subborrowx_u32(x1793, x1769, 0xffffffff); let mut x1796: u32 = 0; let mut x1797: fiat_p384_scalar_u1 = 0; let (x1796, x1797) = fiat_p384_scalar_subborrowx_u32(x1795, x1771, 0xffffffff); let mut x1798: u32 = 0; let mut x1799: fiat_p384_scalar_u1 = 0; let (x1798, x1799) = fiat_p384_scalar_subborrowx_u32(x1797, x1773, (0x0 as u32)); let mut x1800: u32 = 0; let (x1800) = fiat_p384_scalar_cmovznz_u32(x1799, x1774, x1749); let mut x1801: u32 = 0; let (x1801) = fiat_p384_scalar_cmovznz_u32(x1799, x1776, x1751); let mut x1802: u32 = 0; let (x1802) = fiat_p384_scalar_cmovznz_u32(x1799, x1778, x1753); let mut x1803: u32 = 0; let (x1803) = fiat_p384_scalar_cmovznz_u32(x1799, x1780, x1755); let mut x1804: u32 = 0; let (x1804) = fiat_p384_scalar_cmovznz_u32(x1799, x1782, x1757); let mut x1805: u32 = 0; let (x1805) = fiat_p384_scalar_cmovznz_u32(x1799, x1784, x1759); let mut x1806: u32 = 0; let (x1806) = fiat_p384_scalar_cmovznz_u32(x1799, x1786, x1761); let mut x1807: u32 = 0; let (x1807) = fiat_p384_scalar_cmovznz_u32(x1799, x1788, x1763); let mut x1808: u32 = 0; let (x1808) = fiat_p384_scalar_cmovznz_u32(x1799, x1790, x1765); let mut x1809: u32 = 0; let (x1809) = fiat_p384_scalar_cmovznz_u32(x1799, x1792, x1767); let mut x1810: u32 = 0; let (x1810) = fiat_p384_scalar_cmovznz_u32(x1799, x1794, x1769); let mut x1811: u32 = 0; let (x1811) = fiat_p384_scalar_cmovznz_u32(x1799, x1796, x1771); out1[0] = x1800; out1[1] = x1801; out1[2] = x1802; out1[3] = x1803; out1[4] = x1804; out1[5] = x1805; out1[6] = x1806; out1[7] = x1807; out1[8] = x1808; out1[9] = x1809; out1[10] = x1810; out1[11] = x1811; out1 } #[doc = " The function fiat_p384_scalar_square squares a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_square( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u32(x12, (arg1[11])); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u32(x12, (arg1[10])); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u32(x12, (arg1[9])); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_scalar_mulx_u32(x12, (arg1[8])); let mut x21: u32 = 0; let mut x22: u32 = 0; let (x21, x22) = fiat_p384_scalar_mulx_u32(x12, (arg1[7])); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_scalar_mulx_u32(x12, (arg1[6])); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_scalar_mulx_u32(x12, (arg1[5])); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_scalar_mulx_u32(x12, (arg1[4])); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_scalar_mulx_u32(x12, (arg1[3])); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_scalar_mulx_u32(x12, (arg1[2])); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_scalar_mulx_u32(x12, (arg1[1])); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_scalar_mulx_u32(x12, (arg1[0])); let mut x37: u32 = 0; let mut x38: fiat_p384_scalar_u1 = 0; let (x37, x38) = fiat_p384_scalar_addcarryx_u32(0x0, x36, x33); let mut x39: u32 = 0; let mut x40: fiat_p384_scalar_u1 = 0; let (x39, x40) = fiat_p384_scalar_addcarryx_u32(x38, x34, x31); let mut x41: u32 = 0; let mut x42: fiat_p384_scalar_u1 = 0; let (x41, x42) = fiat_p384_scalar_addcarryx_u32(x40, x32, x29); let mut x43: u32 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_addcarryx_u32(x42, x30, x27); let mut x45: u32 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_addcarryx_u32(x44, x28, x25); let mut x47: u32 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_addcarryx_u32(x46, x26, x23); let mut x49: u32 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_addcarryx_u32(x48, x24, x21); let mut x51: u32 = 0; let mut x52: fiat_p384_scalar_u1 = 0; let (x51, x52) = fiat_p384_scalar_addcarryx_u32(x50, x22, x19); let mut x53: u32 = 0; let mut x54: fiat_p384_scalar_u1 = 0; let (x53, x54) = fiat_p384_scalar_addcarryx_u32(x52, x20, x17); let mut x55: u32 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u32(x54, x18, x15); let mut x57: u32 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u32(x56, x16, x13); let x59: u32 = ((x58 as u32) + x14); let mut x60: u32 = 0; let mut x61: u32 = 0; let (x60, x61) = fiat_p384_scalar_mulx_u32(x35, 0xe88fdc45); let mut x62: u32 = 0; let mut x63: u32 = 0; let (x62, x63) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x64: u32 = 0; let mut x65: u32 = 0; let (x64, x65) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x66: u32 = 0; let mut x67: u32 = 0; let (x66, x67) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x68: u32 = 0; let mut x69: u32 = 0; let (x68, x69) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x70: u32 = 0; let mut x71: u32 = 0; let (x70, x71) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x72: u32 = 0; let mut x73: u32 = 0; let (x72, x73) = fiat_p384_scalar_mulx_u32(x60, 0xffffffff); let mut x74: u32 = 0; let mut x75: u32 = 0; let (x74, x75) = fiat_p384_scalar_mulx_u32(x60, 0xc7634d81); let mut x76: u32 = 0; let mut x77: u32 = 0; let (x76, x77) = fiat_p384_scalar_mulx_u32(x60, 0xf4372ddf); let mut x78: u32 = 0; let mut x79: u32 = 0; let (x78, x79) = fiat_p384_scalar_mulx_u32(x60, 0x581a0db2); let mut x80: u32 = 0; let mut x81: u32 = 0; let (x80, x81) = fiat_p384_scalar_mulx_u32(x60, 0x48b0a77a); let mut x82: u32 = 0; let mut x83: u32 = 0; let (x82, x83) = fiat_p384_scalar_mulx_u32(x60, 0xecec196a); let mut x84: u32 = 0; let mut x85: u32 = 0; let (x84, x85) = fiat_p384_scalar_mulx_u32(x60, 0xccc52973); let mut x86: u32 = 0; let mut x87: fiat_p384_scalar_u1 = 0; let (x86, x87) = fiat_p384_scalar_addcarryx_u32(0x0, x85, x82); let mut x88: u32 = 0; let mut x89: fiat_p384_scalar_u1 = 0; let (x88, x89) = fiat_p384_scalar_addcarryx_u32(x87, x83, x80); let mut x90: u32 = 0; let mut x91: fiat_p384_scalar_u1 = 0; let (x90, x91) = fiat_p384_scalar_addcarryx_u32(x89, x81, x78); let mut x92: u32 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u32(x91, x79, x76); let mut x94: u32 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u32(x93, x77, x74); let mut x96: u32 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u32(x95, x75, x72); let mut x98: u32 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u32(x97, x73, x70); let mut x100: u32 = 0; let mut x101: fiat_p384_scalar_u1 = 0; let (x100, x101) = fiat_p384_scalar_addcarryx_u32(x99, x71, x68); let mut x102: u32 = 0; let mut x103: fiat_p384_scalar_u1 = 0; let (x102, x103) = fiat_p384_scalar_addcarryx_u32(x101, x69, x66); let mut x104: u32 = 0; let mut x105: fiat_p384_scalar_u1 = 0; let (x104, x105) = fiat_p384_scalar_addcarryx_u32(x103, x67, x64); let mut x106: u32 = 0; let mut x107: fiat_p384_scalar_u1 = 0; let (x106, x107) = fiat_p384_scalar_addcarryx_u32(x105, x65, x62); let x108: u32 = ((x107 as u32) + x63); let mut x109: u32 = 0; let mut x110: fiat_p384_scalar_u1 = 0; let (x109, x110) = fiat_p384_scalar_addcarryx_u32(0x0, x35, x84); let mut x111: u32 = 0; let mut x112: fiat_p384_scalar_u1 = 0; let (x111, x112) = fiat_p384_scalar_addcarryx_u32(x110, x37, x86); let mut x113: u32 = 0; let mut x114: fiat_p384_scalar_u1 = 0; let (x113, x114) = fiat_p384_scalar_addcarryx_u32(x112, x39, x88); let mut x115: u32 = 0; let mut x116: fiat_p384_scalar_u1 = 0; let (x115, x116) = fiat_p384_scalar_addcarryx_u32(x114, x41, x90); let mut x117: u32 = 0; let mut x118: fiat_p384_scalar_u1 = 0; let (x117, x118) = fiat_p384_scalar_addcarryx_u32(x116, x43, x92); let mut x119: u32 = 0; let mut x120: fiat_p384_scalar_u1 = 0; let (x119, x120) = fiat_p384_scalar_addcarryx_u32(x118, x45, x94); let mut x121: u32 = 0; let mut x122: fiat_p384_scalar_u1 = 0; let (x121, x122) = fiat_p384_scalar_addcarryx_u32(x120, x47, x96); let mut x123: u32 = 0; let mut x124: fiat_p384_scalar_u1 = 0; let (x123, x124) = fiat_p384_scalar_addcarryx_u32(x122, x49, x98); let mut x125: u32 = 0; let mut x126: fiat_p384_scalar_u1 = 0; let (x125, x126) = fiat_p384_scalar_addcarryx_u32(x124, x51, x100); let mut x127: u32 = 0; let mut x128: fiat_p384_scalar_u1 = 0; let (x127, x128) = fiat_p384_scalar_addcarryx_u32(x126, x53, x102); let mut x129: u32 = 0; let mut x130: fiat_p384_scalar_u1 = 0; let (x129, x130) = fiat_p384_scalar_addcarryx_u32(x128, x55, x104); let mut x131: u32 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u32(x130, x57, x106); let mut x133: u32 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_addcarryx_u32(x132, x59, x108); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_scalar_mulx_u32(x1, (arg1[11])); let mut x137: u32 = 0; let mut x138: u32 = 0; let (x137, x138) = fiat_p384_scalar_mulx_u32(x1, (arg1[10])); let mut x139: u32 = 0; let mut x140: u32 = 0; let (x139, x140) = fiat_p384_scalar_mulx_u32(x1, (arg1[9])); let mut x141: u32 = 0; let mut x142: u32 = 0; let (x141, x142) = fiat_p384_scalar_mulx_u32(x1, (arg1[8])); let mut x143: u32 = 0; let mut x144: u32 = 0; let (x143, x144) = fiat_p384_scalar_mulx_u32(x1, (arg1[7])); let mut x145: u32 = 0; let mut x146: u32 = 0; let (x145, x146) = fiat_p384_scalar_mulx_u32(x1, (arg1[6])); let mut x147: u32 = 0; let mut x148: u32 = 0; let (x147, x148) = fiat_p384_scalar_mulx_u32(x1, (arg1[5])); let mut x149: u32 = 0; let mut x150: u32 = 0; let (x149, x150) = fiat_p384_scalar_mulx_u32(x1, (arg1[4])); let mut x151: u32 = 0; let mut x152: u32 = 0; let (x151, x152) = fiat_p384_scalar_mulx_u32(x1, (arg1[3])); let mut x153: u32 = 0; let mut x154: u32 = 0; let (x153, x154) = fiat_p384_scalar_mulx_u32(x1, (arg1[2])); let mut x155: u32 = 0; let mut x156: u32 = 0; let (x155, x156) = fiat_p384_scalar_mulx_u32(x1, (arg1[1])); let mut x157: u32 = 0; let mut x158: u32 = 0; let (x157, x158) = fiat_p384_scalar_mulx_u32(x1, (arg1[0])); let mut x159: u32 = 0; let mut x160: fiat_p384_scalar_u1 = 0; let (x159, x160) = fiat_p384_scalar_addcarryx_u32(0x0, x158, x155); let mut x161: u32 = 0; let mut x162: fiat_p384_scalar_u1 = 0; let (x161, x162) = fiat_p384_scalar_addcarryx_u32(x160, x156, x153); let mut x163: u32 = 0; let mut x164: fiat_p384_scalar_u1 = 0; let (x163, x164) = fiat_p384_scalar_addcarryx_u32(x162, x154, x151); let mut x165: u32 = 0; let mut x166: fiat_p384_scalar_u1 = 0; let (x165, x166) = fiat_p384_scalar_addcarryx_u32(x164, x152, x149); let mut x167: u32 = 0; let mut x168: fiat_p384_scalar_u1 = 0; let (x167, x168) = fiat_p384_scalar_addcarryx_u32(x166, x150, x147); let mut x169: u32 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u32(x168, x148, x145); let mut x171: u32 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u32(x170, x146, x143); let mut x173: u32 = 0; let mut x174: fiat_p384_scalar_u1 = 0; let (x173, x174) = fiat_p384_scalar_addcarryx_u32(x172, x144, x141); let mut x175: u32 = 0; let mut x176: fiat_p384_scalar_u1 = 0; let (x175, x176) = fiat_p384_scalar_addcarryx_u32(x174, x142, x139); let mut x177: u32 = 0; let mut x178: fiat_p384_scalar_u1 = 0; let (x177, x178) = fiat_p384_scalar_addcarryx_u32(x176, x140, x137); let mut x179: u32 = 0; let mut x180: fiat_p384_scalar_u1 = 0; let (x179, x180) = fiat_p384_scalar_addcarryx_u32(x178, x138, x135); let x181: u32 = ((x180 as u32) + x136); let mut x182: u32 = 0; let mut x183: fiat_p384_scalar_u1 = 0; let (x182, x183) = fiat_p384_scalar_addcarryx_u32(0x0, x111, x157); let mut x184: u32 = 0; let mut x185: fiat_p384_scalar_u1 = 0; let (x184, x185) = fiat_p384_scalar_addcarryx_u32(x183, x113, x159); let mut x186: u32 = 0; let mut x187: fiat_p384_scalar_u1 = 0; let (x186, x187) = fiat_p384_scalar_addcarryx_u32(x185, x115, x161); let mut x188: u32 = 0; let mut x189: fiat_p384_scalar_u1 = 0; let (x188, x189) = fiat_p384_scalar_addcarryx_u32(x187, x117, x163); let mut x190: u32 = 0; let mut x191: fiat_p384_scalar_u1 = 0; let (x190, x191) = fiat_p384_scalar_addcarryx_u32(x189, x119, x165); let mut x192: u32 = 0; let mut x193: fiat_p384_scalar_u1 = 0; let (x192, x193) = fiat_p384_scalar_addcarryx_u32(x191, x121, x167); let mut x194: u32 = 0; let mut x195: fiat_p384_scalar_u1 = 0; let (x194, x195) = fiat_p384_scalar_addcarryx_u32(x193, x123, x169); let mut x196: u32 = 0; let mut x197: fiat_p384_scalar_u1 = 0; let (x196, x197) = fiat_p384_scalar_addcarryx_u32(x195, x125, x171); let mut x198: u32 = 0; let mut x199: fiat_p384_scalar_u1 = 0; let (x198, x199) = fiat_p384_scalar_addcarryx_u32(x197, x127, x173); let mut x200: u32 = 0; let mut x201: fiat_p384_scalar_u1 = 0; let (x200, x201) = fiat_p384_scalar_addcarryx_u32(x199, x129, x175); let mut x202: u32 = 0; let mut x203: fiat_p384_scalar_u1 = 0; let (x202, x203) = fiat_p384_scalar_addcarryx_u32(x201, x131, x177); let mut x204: u32 = 0; let mut x205: fiat_p384_scalar_u1 = 0; let (x204, x205) = fiat_p384_scalar_addcarryx_u32(x203, x133, x179); let mut x206: u32 = 0; let mut x207: fiat_p384_scalar_u1 = 0; let (x206, x207) = fiat_p384_scalar_addcarryx_u32(x205, (x134 as u32), x181); let mut x208: u32 = 0; let mut x209: u32 = 0; let (x208, x209) = fiat_p384_scalar_mulx_u32(x182, 0xe88fdc45); let mut x210: u32 = 0; let mut x211: u32 = 0; let (x210, x211) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x212: u32 = 0; let mut x213: u32 = 0; let (x212, x213) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x216: u32 = 0; let mut x217: u32 = 0; let (x216, x217) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x218: u32 = 0; let mut x219: u32 = 0; let (x218, x219) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x220: u32 = 0; let mut x221: u32 = 0; let (x220, x221) = fiat_p384_scalar_mulx_u32(x208, 0xffffffff); let mut x222: u32 = 0; let mut x223: u32 = 0; let (x222, x223) = fiat_p384_scalar_mulx_u32(x208, 0xc7634d81); let mut x224: u32 = 0; let mut x225: u32 = 0; let (x224, x225) = fiat_p384_scalar_mulx_u32(x208, 0xf4372ddf); let mut x226: u32 = 0; let mut x227: u32 = 0; let (x226, x227) = fiat_p384_scalar_mulx_u32(x208, 0x581a0db2); let mut x228: u32 = 0; let mut x229: u32 = 0; let (x228, x229) = fiat_p384_scalar_mulx_u32(x208, 0x48b0a77a); let mut x230: u32 = 0; let mut x231: u32 = 0; let (x230, x231) = fiat_p384_scalar_mulx_u32(x208, 0xecec196a); let mut x232: u32 = 0; let mut x233: u32 = 0; let (x232, x233) = fiat_p384_scalar_mulx_u32(x208, 0xccc52973); let mut x234: u32 = 0; let mut x235: fiat_p384_scalar_u1 = 0; let (x234, x235) = fiat_p384_scalar_addcarryx_u32(0x0, x233, x230); let mut x236: u32 = 0; let mut x237: fiat_p384_scalar_u1 = 0; let (x236, x237) = fiat_p384_scalar_addcarryx_u32(x235, x231, x228); let mut x238: u32 = 0; let mut x239: fiat_p384_scalar_u1 = 0; let (x238, x239) = fiat_p384_scalar_addcarryx_u32(x237, x229, x226); let mut x240: u32 = 0; let mut x241: fiat_p384_scalar_u1 = 0; let (x240, x241) = fiat_p384_scalar_addcarryx_u32(x239, x227, x224); let mut x242: u32 = 0; let mut x243: fiat_p384_scalar_u1 = 0; let (x242, x243) = fiat_p384_scalar_addcarryx_u32(x241, x225, x222); let mut x244: u32 = 0; let mut x245: fiat_p384_scalar_u1 = 0; let (x244, x245) = fiat_p384_scalar_addcarryx_u32(x243, x223, x220); let mut x246: u32 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u32(x245, x221, x218); let mut x248: u32 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u32(x247, x219, x216); let mut x250: u32 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u32(x249, x217, x214); let mut x252: u32 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u32(x251, x215, x212); let mut x254: u32 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u32(x253, x213, x210); let x256: u32 = ((x255 as u32) + x211); let mut x257: u32 = 0; let mut x258: fiat_p384_scalar_u1 = 0; let (x257, x258) = fiat_p384_scalar_addcarryx_u32(0x0, x182, x232); let mut x259: u32 = 0; let mut x260: fiat_p384_scalar_u1 = 0; let (x259, x260) = fiat_p384_scalar_addcarryx_u32(x258, x184, x234); let mut x261: u32 = 0; let mut x262: fiat_p384_scalar_u1 = 0; let (x261, x262) = fiat_p384_scalar_addcarryx_u32(x260, x186, x236); let mut x263: u32 = 0; let mut x264: fiat_p384_scalar_u1 = 0; let (x263, x264) = fiat_p384_scalar_addcarryx_u32(x262, x188, x238); let mut x265: u32 = 0; let mut x266: fiat_p384_scalar_u1 = 0; let (x265, x266) = fiat_p384_scalar_addcarryx_u32(x264, x190, x240); let mut x267: u32 = 0; let mut x268: fiat_p384_scalar_u1 = 0; let (x267, x268) = fiat_p384_scalar_addcarryx_u32(x266, x192, x242); let mut x269: u32 = 0; let mut x270: fiat_p384_scalar_u1 = 0; let (x269, x270) = fiat_p384_scalar_addcarryx_u32(x268, x194, x244); let mut x271: u32 = 0; let mut x272: fiat_p384_scalar_u1 = 0; let (x271, x272) = fiat_p384_scalar_addcarryx_u32(x270, x196, x246); let mut x273: u32 = 0; let mut x274: fiat_p384_scalar_u1 = 0; let (x273, x274) = fiat_p384_scalar_addcarryx_u32(x272, x198, x248); let mut x275: u32 = 0; let mut x276: fiat_p384_scalar_u1 = 0; let (x275, x276) = fiat_p384_scalar_addcarryx_u32(x274, x200, x250); let mut x277: u32 = 0; let mut x278: fiat_p384_scalar_u1 = 0; let (x277, x278) = fiat_p384_scalar_addcarryx_u32(x276, x202, x252); let mut x279: u32 = 0; let mut x280: fiat_p384_scalar_u1 = 0; let (x279, x280) = fiat_p384_scalar_addcarryx_u32(x278, x204, x254); let mut x281: u32 = 0; let mut x282: fiat_p384_scalar_u1 = 0; let (x281, x282) = fiat_p384_scalar_addcarryx_u32(x280, x206, x256); let x283: u32 = ((x282 as u32) + (x207 as u32)); let mut x284: u32 = 0; let mut x285: u32 = 0; let (x284, x285) = fiat_p384_scalar_mulx_u32(x2, (arg1[11])); let mut x286: u32 = 0; let mut x287: u32 = 0; let (x286, x287) = fiat_p384_scalar_mulx_u32(x2, (arg1[10])); let mut x288: u32 = 0; let mut x289: u32 = 0; let (x288, x289) = fiat_p384_scalar_mulx_u32(x2, (arg1[9])); let mut x290: u32 = 0; let mut x291: u32 = 0; let (x290, x291) = fiat_p384_scalar_mulx_u32(x2, (arg1[8])); let mut x292: u32 = 0; let mut x293: u32 = 0; let (x292, x293) = fiat_p384_scalar_mulx_u32(x2, (arg1[7])); let mut x294: u32 = 0; let mut x295: u32 = 0; let (x294, x295) = fiat_p384_scalar_mulx_u32(x2, (arg1[6])); let mut x296: u32 = 0; let mut x297: u32 = 0; let (x296, x297) = fiat_p384_scalar_mulx_u32(x2, (arg1[5])); let mut x298: u32 = 0; let mut x299: u32 = 0; let (x298, x299) = fiat_p384_scalar_mulx_u32(x2, (arg1[4])); let mut x300: u32 = 0; let mut x301: u32 = 0; let (x300, x301) = fiat_p384_scalar_mulx_u32(x2, (arg1[3])); let mut x302: u32 = 0; let mut x303: u32 = 0; let (x302, x303) = fiat_p384_scalar_mulx_u32(x2, (arg1[2])); let mut x304: u32 = 0; let mut x305: u32 = 0; let (x304, x305) = fiat_p384_scalar_mulx_u32(x2, (arg1[1])); let mut x306: u32 = 0; let mut x307: u32 = 0; let (x306, x307) = fiat_p384_scalar_mulx_u32(x2, (arg1[0])); let mut x308: u32 = 0; let mut x309: fiat_p384_scalar_u1 = 0; let (x308, x309) = fiat_p384_scalar_addcarryx_u32(0x0, x307, x304); let mut x310: u32 = 0; let mut x311: fiat_p384_scalar_u1 = 0; let (x310, x311) = fiat_p384_scalar_addcarryx_u32(x309, x305, x302); let mut x312: u32 = 0; let mut x313: fiat_p384_scalar_u1 = 0; let (x312, x313) = fiat_p384_scalar_addcarryx_u32(x311, x303, x300); let mut x314: u32 = 0; let mut x315: fiat_p384_scalar_u1 = 0; let (x314, x315) = fiat_p384_scalar_addcarryx_u32(x313, x301, x298); let mut x316: u32 = 0; let mut x317: fiat_p384_scalar_u1 = 0; let (x316, x317) = fiat_p384_scalar_addcarryx_u32(x315, x299, x296); let mut x318: u32 = 0; let mut x319: fiat_p384_scalar_u1 = 0; let (x318, x319) = fiat_p384_scalar_addcarryx_u32(x317, x297, x294); let mut x320: u32 = 0; let mut x321: fiat_p384_scalar_u1 = 0; let (x320, x321) = fiat_p384_scalar_addcarryx_u32(x319, x295, x292); let mut x322: u32 = 0; let mut x323: fiat_p384_scalar_u1 = 0; let (x322, x323) = fiat_p384_scalar_addcarryx_u32(x321, x293, x290); let mut x324: u32 = 0; let mut x325: fiat_p384_scalar_u1 = 0; let (x324, x325) = fiat_p384_scalar_addcarryx_u32(x323, x291, x288); let mut x326: u32 = 0; let mut x327: fiat_p384_scalar_u1 = 0; let (x326, x327) = fiat_p384_scalar_addcarryx_u32(x325, x289, x286); let mut x328: u32 = 0; let mut x329: fiat_p384_scalar_u1 = 0; let (x328, x329) = fiat_p384_scalar_addcarryx_u32(x327, x287, x284); let x330: u32 = ((x329 as u32) + x285); let mut x331: u32 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u32(0x0, x259, x306); let mut x333: u32 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u32(x332, x261, x308); let mut x335: u32 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u32(x334, x263, x310); let mut x337: u32 = 0; let mut x338: fiat_p384_scalar_u1 = 0; let (x337, x338) = fiat_p384_scalar_addcarryx_u32(x336, x265, x312); let mut x339: u32 = 0; let mut x340: fiat_p384_scalar_u1 = 0; let (x339, x340) = fiat_p384_scalar_addcarryx_u32(x338, x267, x314); let mut x341: u32 = 0; let mut x342: fiat_p384_scalar_u1 = 0; let (x341, x342) = fiat_p384_scalar_addcarryx_u32(x340, x269, x316); let mut x343: u32 = 0; let mut x344: fiat_p384_scalar_u1 = 0; let (x343, x344) = fiat_p384_scalar_addcarryx_u32(x342, x271, x318); let mut x345: u32 = 0; let mut x346: fiat_p384_scalar_u1 = 0; let (x345, x346) = fiat_p384_scalar_addcarryx_u32(x344, x273, x320); let mut x347: u32 = 0; let mut x348: fiat_p384_scalar_u1 = 0; let (x347, x348) = fiat_p384_scalar_addcarryx_u32(x346, x275, x322); let mut x349: u32 = 0; let mut x350: fiat_p384_scalar_u1 = 0; let (x349, x350) = fiat_p384_scalar_addcarryx_u32(x348, x277, x324); let mut x351: u32 = 0; let mut x352: fiat_p384_scalar_u1 = 0; let (x351, x352) = fiat_p384_scalar_addcarryx_u32(x350, x279, x326); let mut x353: u32 = 0; let mut x354: fiat_p384_scalar_u1 = 0; let (x353, x354) = fiat_p384_scalar_addcarryx_u32(x352, x281, x328); let mut x355: u32 = 0; let mut x356: fiat_p384_scalar_u1 = 0; let (x355, x356) = fiat_p384_scalar_addcarryx_u32(x354, x283, x330); let mut x357: u32 = 0; let mut x358: u32 = 0; let (x357, x358) = fiat_p384_scalar_mulx_u32(x331, 0xe88fdc45); let mut x359: u32 = 0; let mut x360: u32 = 0; let (x359, x360) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x361: u32 = 0; let mut x362: u32 = 0; let (x361, x362) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x363: u32 = 0; let mut x364: u32 = 0; let (x363, x364) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x365: u32 = 0; let mut x366: u32 = 0; let (x365, x366) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x367: u32 = 0; let mut x368: u32 = 0; let (x367, x368) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x369: u32 = 0; let mut x370: u32 = 0; let (x369, x370) = fiat_p384_scalar_mulx_u32(x357, 0xffffffff); let mut x371: u32 = 0; let mut x372: u32 = 0; let (x371, x372) = fiat_p384_scalar_mulx_u32(x357, 0xc7634d81); let mut x373: u32 = 0; let mut x374: u32 = 0; let (x373, x374) = fiat_p384_scalar_mulx_u32(x357, 0xf4372ddf); let mut x375: u32 = 0; let mut x376: u32 = 0; let (x375, x376) = fiat_p384_scalar_mulx_u32(x357, 0x581a0db2); let mut x377: u32 = 0; let mut x378: u32 = 0; let (x377, x378) = fiat_p384_scalar_mulx_u32(x357, 0x48b0a77a); let mut x379: u32 = 0; let mut x380: u32 = 0; let (x379, x380) = fiat_p384_scalar_mulx_u32(x357, 0xecec196a); let mut x381: u32 = 0; let mut x382: u32 = 0; let (x381, x382) = fiat_p384_scalar_mulx_u32(x357, 0xccc52973); let mut x383: u32 = 0; let mut x384: fiat_p384_scalar_u1 = 0; let (x383, x384) = fiat_p384_scalar_addcarryx_u32(0x0, x382, x379); let mut x385: u32 = 0; let mut x386: fiat_p384_scalar_u1 = 0; let (x385, x386) = fiat_p384_scalar_addcarryx_u32(x384, x380, x377); let mut x387: u32 = 0; let mut x388: fiat_p384_scalar_u1 = 0; let (x387, x388) = fiat_p384_scalar_addcarryx_u32(x386, x378, x375); let mut x389: u32 = 0; let mut x390: fiat_p384_scalar_u1 = 0; let (x389, x390) = fiat_p384_scalar_addcarryx_u32(x388, x376, x373); let mut x391: u32 = 0; let mut x392: fiat_p384_scalar_u1 = 0; let (x391, x392) = fiat_p384_scalar_addcarryx_u32(x390, x374, x371); let mut x393: u32 = 0; let mut x394: fiat_p384_scalar_u1 = 0; let (x393, x394) = fiat_p384_scalar_addcarryx_u32(x392, x372, x369); let mut x395: u32 = 0; let mut x396: fiat_p384_scalar_u1 = 0; let (x395, x396) = fiat_p384_scalar_addcarryx_u32(x394, x370, x367); let mut x397: u32 = 0; let mut x398: fiat_p384_scalar_u1 = 0; let (x397, x398) = fiat_p384_scalar_addcarryx_u32(x396, x368, x365); let mut x399: u32 = 0; let mut x400: fiat_p384_scalar_u1 = 0; let (x399, x400) = fiat_p384_scalar_addcarryx_u32(x398, x366, x363); let mut x401: u32 = 0; let mut x402: fiat_p384_scalar_u1 = 0; let (x401, x402) = fiat_p384_scalar_addcarryx_u32(x400, x364, x361); let mut x403: u32 = 0; let mut x404: fiat_p384_scalar_u1 = 0; let (x403, x404) = fiat_p384_scalar_addcarryx_u32(x402, x362, x359); let x405: u32 = ((x404 as u32) + x360); let mut x406: u32 = 0; let mut x407: fiat_p384_scalar_u1 = 0; let (x406, x407) = fiat_p384_scalar_addcarryx_u32(0x0, x331, x381); let mut x408: u32 = 0; let mut x409: fiat_p384_scalar_u1 = 0; let (x408, x409) = fiat_p384_scalar_addcarryx_u32(x407, x333, x383); let mut x410: u32 = 0; let mut x411: fiat_p384_scalar_u1 = 0; let (x410, x411) = fiat_p384_scalar_addcarryx_u32(x409, x335, x385); let mut x412: u32 = 0; let mut x413: fiat_p384_scalar_u1 = 0; let (x412, x413) = fiat_p384_scalar_addcarryx_u32(x411, x337, x387); let mut x414: u32 = 0; let mut x415: fiat_p384_scalar_u1 = 0; let (x414, x415) = fiat_p384_scalar_addcarryx_u32(x413, x339, x389); let mut x416: u32 = 0; let mut x417: fiat_p384_scalar_u1 = 0; let (x416, x417) = fiat_p384_scalar_addcarryx_u32(x415, x341, x391); let mut x418: u32 = 0; let mut x419: fiat_p384_scalar_u1 = 0; let (x418, x419) = fiat_p384_scalar_addcarryx_u32(x417, x343, x393); let mut x420: u32 = 0; let mut x421: fiat_p384_scalar_u1 = 0; let (x420, x421) = fiat_p384_scalar_addcarryx_u32(x419, x345, x395); let mut x422: u32 = 0; let mut x423: fiat_p384_scalar_u1 = 0; let (x422, x423) = fiat_p384_scalar_addcarryx_u32(x421, x347, x397); let mut x424: u32 = 0; let mut x425: fiat_p384_scalar_u1 = 0; let (x424, x425) = fiat_p384_scalar_addcarryx_u32(x423, x349, x399); let mut x426: u32 = 0; let mut x427: fiat_p384_scalar_u1 = 0; let (x426, x427) = fiat_p384_scalar_addcarryx_u32(x425, x351, x401); let mut x428: u32 = 0; let mut x429: fiat_p384_scalar_u1 = 0; let (x428, x429) = fiat_p384_scalar_addcarryx_u32(x427, x353, x403); let mut x430: u32 = 0; let mut x431: fiat_p384_scalar_u1 = 0; let (x430, x431) = fiat_p384_scalar_addcarryx_u32(x429, x355, x405); let x432: u32 = ((x431 as u32) + (x356 as u32)); let mut x433: u32 = 0; let mut x434: u32 = 0; let (x433, x434) = fiat_p384_scalar_mulx_u32(x3, (arg1[11])); let mut x435: u32 = 0; let mut x436: u32 = 0; let (x435, x436) = fiat_p384_scalar_mulx_u32(x3, (arg1[10])); let mut x437: u32 = 0; let mut x438: u32 = 0; let (x437, x438) = fiat_p384_scalar_mulx_u32(x3, (arg1[9])); let mut x439: u32 = 0; let mut x440: u32 = 0; let (x439, x440) = fiat_p384_scalar_mulx_u32(x3, (arg1[8])); let mut x441: u32 = 0; let mut x442: u32 = 0; let (x441, x442) = fiat_p384_scalar_mulx_u32(x3, (arg1[7])); let mut x443: u32 = 0; let mut x444: u32 = 0; let (x443, x444) = fiat_p384_scalar_mulx_u32(x3, (arg1[6])); let mut x445: u32 = 0; let mut x446: u32 = 0; let (x445, x446) = fiat_p384_scalar_mulx_u32(x3, (arg1[5])); let mut x447: u32 = 0; let mut x448: u32 = 0; let (x447, x448) = fiat_p384_scalar_mulx_u32(x3, (arg1[4])); let mut x449: u32 = 0; let mut x450: u32 = 0; let (x449, x450) = fiat_p384_scalar_mulx_u32(x3, (arg1[3])); let mut x451: u32 = 0; let mut x452: u32 = 0; let (x451, x452) = fiat_p384_scalar_mulx_u32(x3, (arg1[2])); let mut x453: u32 = 0; let mut x454: u32 = 0; let (x453, x454) = fiat_p384_scalar_mulx_u32(x3, (arg1[1])); let mut x455: u32 = 0; let mut x456: u32 = 0; let (x455, x456) = fiat_p384_scalar_mulx_u32(x3, (arg1[0])); let mut x457: u32 = 0; let mut x458: fiat_p384_scalar_u1 = 0; let (x457, x458) = fiat_p384_scalar_addcarryx_u32(0x0, x456, x453); let mut x459: u32 = 0; let mut x460: fiat_p384_scalar_u1 = 0; let (x459, x460) = fiat_p384_scalar_addcarryx_u32(x458, x454, x451); let mut x461: u32 = 0; let mut x462: fiat_p384_scalar_u1 = 0; let (x461, x462) = fiat_p384_scalar_addcarryx_u32(x460, x452, x449); let mut x463: u32 = 0; let mut x464: fiat_p384_scalar_u1 = 0; let (x463, x464) = fiat_p384_scalar_addcarryx_u32(x462, x450, x447); let mut x465: u32 = 0; let mut x466: fiat_p384_scalar_u1 = 0; let (x465, x466) = fiat_p384_scalar_addcarryx_u32(x464, x448, x445); let mut x467: u32 = 0; let mut x468: fiat_p384_scalar_u1 = 0; let (x467, x468) = fiat_p384_scalar_addcarryx_u32(x466, x446, x443); let mut x469: u32 = 0; let mut x470: fiat_p384_scalar_u1 = 0; let (x469, x470) = fiat_p384_scalar_addcarryx_u32(x468, x444, x441); let mut x471: u32 = 0; let mut x472: fiat_p384_scalar_u1 = 0; let (x471, x472) = fiat_p384_scalar_addcarryx_u32(x470, x442, x439); let mut x473: u32 = 0; let mut x474: fiat_p384_scalar_u1 = 0; let (x473, x474) = fiat_p384_scalar_addcarryx_u32(x472, x440, x437); let mut x475: u32 = 0; let mut x476: fiat_p384_scalar_u1 = 0; let (x475, x476) = fiat_p384_scalar_addcarryx_u32(x474, x438, x435); let mut x477: u32 = 0; let mut x478: fiat_p384_scalar_u1 = 0; let (x477, x478) = fiat_p384_scalar_addcarryx_u32(x476, x436, x433); let x479: u32 = ((x478 as u32) + x434); let mut x480: u32 = 0; let mut x481: fiat_p384_scalar_u1 = 0; let (x480, x481) = fiat_p384_scalar_addcarryx_u32(0x0, x408, x455); let mut x482: u32 = 0; let mut x483: fiat_p384_scalar_u1 = 0; let (x482, x483) = fiat_p384_scalar_addcarryx_u32(x481, x410, x457); let mut x484: u32 = 0; let mut x485: fiat_p384_scalar_u1 = 0; let (x484, x485) = fiat_p384_scalar_addcarryx_u32(x483, x412, x459); let mut x486: u32 = 0; let mut x487: fiat_p384_scalar_u1 = 0; let (x486, x487) = fiat_p384_scalar_addcarryx_u32(x485, x414, x461); let mut x488: u32 = 0; let mut x489: fiat_p384_scalar_u1 = 0; let (x488, x489) = fiat_p384_scalar_addcarryx_u32(x487, x416, x463); let mut x490: u32 = 0; let mut x491: fiat_p384_scalar_u1 = 0; let (x490, x491) = fiat_p384_scalar_addcarryx_u32(x489, x418, x465); let mut x492: u32 = 0; let mut x493: fiat_p384_scalar_u1 = 0; let (x492, x493) = fiat_p384_scalar_addcarryx_u32(x491, x420, x467); let mut x494: u32 = 0; let mut x495: fiat_p384_scalar_u1 = 0; let (x494, x495) = fiat_p384_scalar_addcarryx_u32(x493, x422, x469); let mut x496: u32 = 0; let mut x497: fiat_p384_scalar_u1 = 0; let (x496, x497) = fiat_p384_scalar_addcarryx_u32(x495, x424, x471); let mut x498: u32 = 0; let mut x499: fiat_p384_scalar_u1 = 0; let (x498, x499) = fiat_p384_scalar_addcarryx_u32(x497, x426, x473); let mut x500: u32 = 0; let mut x501: fiat_p384_scalar_u1 = 0; let (x500, x501) = fiat_p384_scalar_addcarryx_u32(x499, x428, x475); let mut x502: u32 = 0; let mut x503: fiat_p384_scalar_u1 = 0; let (x502, x503) = fiat_p384_scalar_addcarryx_u32(x501, x430, x477); let mut x504: u32 = 0; let mut x505: fiat_p384_scalar_u1 = 0; let (x504, x505) = fiat_p384_scalar_addcarryx_u32(x503, x432, x479); let mut x506: u32 = 0; let mut x507: u32 = 0; let (x506, x507) = fiat_p384_scalar_mulx_u32(x480, 0xe88fdc45); let mut x508: u32 = 0; let mut x509: u32 = 0; let (x508, x509) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x510: u32 = 0; let mut x511: u32 = 0; let (x510, x511) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x512: u32 = 0; let mut x513: u32 = 0; let (x512, x513) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x514: u32 = 0; let mut x515: u32 = 0; let (x514, x515) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x516: u32 = 0; let mut x517: u32 = 0; let (x516, x517) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x518: u32 = 0; let mut x519: u32 = 0; let (x518, x519) = fiat_p384_scalar_mulx_u32(x506, 0xffffffff); let mut x520: u32 = 0; let mut x521: u32 = 0; let (x520, x521) = fiat_p384_scalar_mulx_u32(x506, 0xc7634d81); let mut x522: u32 = 0; let mut x523: u32 = 0; let (x522, x523) = fiat_p384_scalar_mulx_u32(x506, 0xf4372ddf); let mut x524: u32 = 0; let mut x525: u32 = 0; let (x524, x525) = fiat_p384_scalar_mulx_u32(x506, 0x581a0db2); let mut x526: u32 = 0; let mut x527: u32 = 0; let (x526, x527) = fiat_p384_scalar_mulx_u32(x506, 0x48b0a77a); let mut x528: u32 = 0; let mut x529: u32 = 0; let (x528, x529) = fiat_p384_scalar_mulx_u32(x506, 0xecec196a); let mut x530: u32 = 0; let mut x531: u32 = 0; let (x530, x531) = fiat_p384_scalar_mulx_u32(x506, 0xccc52973); let mut x532: u32 = 0; let mut x533: fiat_p384_scalar_u1 = 0; let (x532, x533) = fiat_p384_scalar_addcarryx_u32(0x0, x531, x528); let mut x534: u32 = 0; let mut x535: fiat_p384_scalar_u1 = 0; let (x534, x535) = fiat_p384_scalar_addcarryx_u32(x533, x529, x526); let mut x536: u32 = 0; let mut x537: fiat_p384_scalar_u1 = 0; let (x536, x537) = fiat_p384_scalar_addcarryx_u32(x535, x527, x524); let mut x538: u32 = 0; let mut x539: fiat_p384_scalar_u1 = 0; let (x538, x539) = fiat_p384_scalar_addcarryx_u32(x537, x525, x522); let mut x540: u32 = 0; let mut x541: fiat_p384_scalar_u1 = 0; let (x540, x541) = fiat_p384_scalar_addcarryx_u32(x539, x523, x520); let mut x542: u32 = 0; let mut x543: fiat_p384_scalar_u1 = 0; let (x542, x543) = fiat_p384_scalar_addcarryx_u32(x541, x521, x518); let mut x544: u32 = 0; let mut x545: fiat_p384_scalar_u1 = 0; let (x544, x545) = fiat_p384_scalar_addcarryx_u32(x543, x519, x516); let mut x546: u32 = 0; let mut x547: fiat_p384_scalar_u1 = 0; let (x546, x547) = fiat_p384_scalar_addcarryx_u32(x545, x517, x514); let mut x548: u32 = 0; let mut x549: fiat_p384_scalar_u1 = 0; let (x548, x549) = fiat_p384_scalar_addcarryx_u32(x547, x515, x512); let mut x550: u32 = 0; let mut x551: fiat_p384_scalar_u1 = 0; let (x550, x551) = fiat_p384_scalar_addcarryx_u32(x549, x513, x510); let mut x552: u32 = 0; let mut x553: fiat_p384_scalar_u1 = 0; let (x552, x553) = fiat_p384_scalar_addcarryx_u32(x551, x511, x508); let x554: u32 = ((x553 as u32) + x509); let mut x555: u32 = 0; let mut x556: fiat_p384_scalar_u1 = 0; let (x555, x556) = fiat_p384_scalar_addcarryx_u32(0x0, x480, x530); let mut x557: u32 = 0; let mut x558: fiat_p384_scalar_u1 = 0; let (x557, x558) = fiat_p384_scalar_addcarryx_u32(x556, x482, x532); let mut x559: u32 = 0; let mut x560: fiat_p384_scalar_u1 = 0; let (x559, x560) = fiat_p384_scalar_addcarryx_u32(x558, x484, x534); let mut x561: u32 = 0; let mut x562: fiat_p384_scalar_u1 = 0; let (x561, x562) = fiat_p384_scalar_addcarryx_u32(x560, x486, x536); let mut x563: u32 = 0; let mut x564: fiat_p384_scalar_u1 = 0; let (x563, x564) = fiat_p384_scalar_addcarryx_u32(x562, x488, x538); let mut x565: u32 = 0; let mut x566: fiat_p384_scalar_u1 = 0; let (x565, x566) = fiat_p384_scalar_addcarryx_u32(x564, x490, x540); let mut x567: u32 = 0; let mut x568: fiat_p384_scalar_u1 = 0; let (x567, x568) = fiat_p384_scalar_addcarryx_u32(x566, x492, x542); let mut x569: u32 = 0; let mut x570: fiat_p384_scalar_u1 = 0; let (x569, x570) = fiat_p384_scalar_addcarryx_u32(x568, x494, x544); let mut x571: u32 = 0; let mut x572: fiat_p384_scalar_u1 = 0; let (x571, x572) = fiat_p384_scalar_addcarryx_u32(x570, x496, x546); let mut x573: u32 = 0; let mut x574: fiat_p384_scalar_u1 = 0; let (x573, x574) = fiat_p384_scalar_addcarryx_u32(x572, x498, x548); let mut x575: u32 = 0; let mut x576: fiat_p384_scalar_u1 = 0; let (x575, x576) = fiat_p384_scalar_addcarryx_u32(x574, x500, x550); let mut x577: u32 = 0; let mut x578: fiat_p384_scalar_u1 = 0; let (x577, x578) = fiat_p384_scalar_addcarryx_u32(x576, x502, x552); let mut x579: u32 = 0; let mut x580: fiat_p384_scalar_u1 = 0; let (x579, x580) = fiat_p384_scalar_addcarryx_u32(x578, x504, x554); let x581: u32 = ((x580 as u32) + (x505 as u32)); let mut x582: u32 = 0; let mut x583: u32 = 0; let (x582, x583) = fiat_p384_scalar_mulx_u32(x4, (arg1[11])); let mut x584: u32 = 0; let mut x585: u32 = 0; let (x584, x585) = fiat_p384_scalar_mulx_u32(x4, (arg1[10])); let mut x586: u32 = 0; let mut x587: u32 = 0; let (x586, x587) = fiat_p384_scalar_mulx_u32(x4, (arg1[9])); let mut x588: u32 = 0; let mut x589: u32 = 0; let (x588, x589) = fiat_p384_scalar_mulx_u32(x4, (arg1[8])); let mut x590: u32 = 0; let mut x591: u32 = 0; let (x590, x591) = fiat_p384_scalar_mulx_u32(x4, (arg1[7])); let mut x592: u32 = 0; let mut x593: u32 = 0; let (x592, x593) = fiat_p384_scalar_mulx_u32(x4, (arg1[6])); let mut x594: u32 = 0; let mut x595: u32 = 0; let (x594, x595) = fiat_p384_scalar_mulx_u32(x4, (arg1[5])); let mut x596: u32 = 0; let mut x597: u32 = 0; let (x596, x597) = fiat_p384_scalar_mulx_u32(x4, (arg1[4])); let mut x598: u32 = 0; let mut x599: u32 = 0; let (x598, x599) = fiat_p384_scalar_mulx_u32(x4, (arg1[3])); let mut x600: u32 = 0; let mut x601: u32 = 0; let (x600, x601) = fiat_p384_scalar_mulx_u32(x4, (arg1[2])); let mut x602: u32 = 0; let mut x603: u32 = 0; let (x602, x603) = fiat_p384_scalar_mulx_u32(x4, (arg1[1])); let mut x604: u32 = 0; let mut x605: u32 = 0; let (x604, x605) = fiat_p384_scalar_mulx_u32(x4, (arg1[0])); let mut x606: u32 = 0; let mut x607: fiat_p384_scalar_u1 = 0; let (x606, x607) = fiat_p384_scalar_addcarryx_u32(0x0, x605, x602); let mut x608: u32 = 0; let mut x609: fiat_p384_scalar_u1 = 0; let (x608, x609) = fiat_p384_scalar_addcarryx_u32(x607, x603, x600); let mut x610: u32 = 0; let mut x611: fiat_p384_scalar_u1 = 0; let (x610, x611) = fiat_p384_scalar_addcarryx_u32(x609, x601, x598); let mut x612: u32 = 0; let mut x613: fiat_p384_scalar_u1 = 0; let (x612, x613) = fiat_p384_scalar_addcarryx_u32(x611, x599, x596); let mut x614: u32 = 0; let mut x615: fiat_p384_scalar_u1 = 0; let (x614, x615) = fiat_p384_scalar_addcarryx_u32(x613, x597, x594); let mut x616: u32 = 0; let mut x617: fiat_p384_scalar_u1 = 0; let (x616, x617) = fiat_p384_scalar_addcarryx_u32(x615, x595, x592); let mut x618: u32 = 0; let mut x619: fiat_p384_scalar_u1 = 0; let (x618, x619) = fiat_p384_scalar_addcarryx_u32(x617, x593, x590); let mut x620: u32 = 0; let mut x621: fiat_p384_scalar_u1 = 0; let (x620, x621) = fiat_p384_scalar_addcarryx_u32(x619, x591, x588); let mut x622: u32 = 0; let mut x623: fiat_p384_scalar_u1 = 0; let (x622, x623) = fiat_p384_scalar_addcarryx_u32(x621, x589, x586); let mut x624: u32 = 0; let mut x625: fiat_p384_scalar_u1 = 0; let (x624, x625) = fiat_p384_scalar_addcarryx_u32(x623, x587, x584); let mut x626: u32 = 0; let mut x627: fiat_p384_scalar_u1 = 0; let (x626, x627) = fiat_p384_scalar_addcarryx_u32(x625, x585, x582); let x628: u32 = ((x627 as u32) + x583); let mut x629: u32 = 0; let mut x630: fiat_p384_scalar_u1 = 0; let (x629, x630) = fiat_p384_scalar_addcarryx_u32(0x0, x557, x604); let mut x631: u32 = 0; let mut x632: fiat_p384_scalar_u1 = 0; let (x631, x632) = fiat_p384_scalar_addcarryx_u32(x630, x559, x606); let mut x633: u32 = 0; let mut x634: fiat_p384_scalar_u1 = 0; let (x633, x634) = fiat_p384_scalar_addcarryx_u32(x632, x561, x608); let mut x635: u32 = 0; let mut x636: fiat_p384_scalar_u1 = 0; let (x635, x636) = fiat_p384_scalar_addcarryx_u32(x634, x563, x610); let mut x637: u32 = 0; let mut x638: fiat_p384_scalar_u1 = 0; let (x637, x638) = fiat_p384_scalar_addcarryx_u32(x636, x565, x612); let mut x639: u32 = 0; let mut x640: fiat_p384_scalar_u1 = 0; let (x639, x640) = fiat_p384_scalar_addcarryx_u32(x638, x567, x614); let mut x641: u32 = 0; let mut x642: fiat_p384_scalar_u1 = 0; let (x641, x642) = fiat_p384_scalar_addcarryx_u32(x640, x569, x616); let mut x643: u32 = 0; let mut x644: fiat_p384_scalar_u1 = 0; let (x643, x644) = fiat_p384_scalar_addcarryx_u32(x642, x571, x618); let mut x645: u32 = 0; let mut x646: fiat_p384_scalar_u1 = 0; let (x645, x646) = fiat_p384_scalar_addcarryx_u32(x644, x573, x620); let mut x647: u32 = 0; let mut x648: fiat_p384_scalar_u1 = 0; let (x647, x648) = fiat_p384_scalar_addcarryx_u32(x646, x575, x622); let mut x649: u32 = 0; let mut x650: fiat_p384_scalar_u1 = 0; let (x649, x650) = fiat_p384_scalar_addcarryx_u32(x648, x577, x624); let mut x651: u32 = 0; let mut x652: fiat_p384_scalar_u1 = 0; let (x651, x652) = fiat_p384_scalar_addcarryx_u32(x650, x579, x626); let mut x653: u32 = 0; let mut x654: fiat_p384_scalar_u1 = 0; let (x653, x654) = fiat_p384_scalar_addcarryx_u32(x652, x581, x628); let mut x655: u32 = 0; let mut x656: u32 = 0; let (x655, x656) = fiat_p384_scalar_mulx_u32(x629, 0xe88fdc45); let mut x657: u32 = 0; let mut x658: u32 = 0; let (x657, x658) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x659: u32 = 0; let mut x660: u32 = 0; let (x659, x660) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x661: u32 = 0; let mut x662: u32 = 0; let (x661, x662) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x663: u32 = 0; let mut x664: u32 = 0; let (x663, x664) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x665: u32 = 0; let mut x666: u32 = 0; let (x665, x666) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x667: u32 = 0; let mut x668: u32 = 0; let (x667, x668) = fiat_p384_scalar_mulx_u32(x655, 0xffffffff); let mut x669: u32 = 0; let mut x670: u32 = 0; let (x669, x670) = fiat_p384_scalar_mulx_u32(x655, 0xc7634d81); let mut x671: u32 = 0; let mut x672: u32 = 0; let (x671, x672) = fiat_p384_scalar_mulx_u32(x655, 0xf4372ddf); let mut x673: u32 = 0; let mut x674: u32 = 0; let (x673, x674) = fiat_p384_scalar_mulx_u32(x655, 0x581a0db2); let mut x675: u32 = 0; let mut x676: u32 = 0; let (x675, x676) = fiat_p384_scalar_mulx_u32(x655, 0x48b0a77a); let mut x677: u32 = 0; let mut x678: u32 = 0; let (x677, x678) = fiat_p384_scalar_mulx_u32(x655, 0xecec196a); let mut x679: u32 = 0; let mut x680: u32 = 0; let (x679, x680) = fiat_p384_scalar_mulx_u32(x655, 0xccc52973); let mut x681: u32 = 0; let mut x682: fiat_p384_scalar_u1 = 0; let (x681, x682) = fiat_p384_scalar_addcarryx_u32(0x0, x680, x677); let mut x683: u32 = 0; let mut x684: fiat_p384_scalar_u1 = 0; let (x683, x684) = fiat_p384_scalar_addcarryx_u32(x682, x678, x675); let mut x685: u32 = 0; let mut x686: fiat_p384_scalar_u1 = 0; let (x685, x686) = fiat_p384_scalar_addcarryx_u32(x684, x676, x673); let mut x687: u32 = 0; let mut x688: fiat_p384_scalar_u1 = 0; let (x687, x688) = fiat_p384_scalar_addcarryx_u32(x686, x674, x671); let mut x689: u32 = 0; let mut x690: fiat_p384_scalar_u1 = 0; let (x689, x690) = fiat_p384_scalar_addcarryx_u32(x688, x672, x669); let mut x691: u32 = 0; let mut x692: fiat_p384_scalar_u1 = 0; let (x691, x692) = fiat_p384_scalar_addcarryx_u32(x690, x670, x667); let mut x693: u32 = 0; let mut x694: fiat_p384_scalar_u1 = 0; let (x693, x694) = fiat_p384_scalar_addcarryx_u32(x692, x668, x665); let mut x695: u32 = 0; let mut x696: fiat_p384_scalar_u1 = 0; let (x695, x696) = fiat_p384_scalar_addcarryx_u32(x694, x666, x663); let mut x697: u32 = 0; let mut x698: fiat_p384_scalar_u1 = 0; let (x697, x698) = fiat_p384_scalar_addcarryx_u32(x696, x664, x661); let mut x699: u32 = 0; let mut x700: fiat_p384_scalar_u1 = 0; let (x699, x700) = fiat_p384_scalar_addcarryx_u32(x698, x662, x659); let mut x701: u32 = 0; let mut x702: fiat_p384_scalar_u1 = 0; let (x701, x702) = fiat_p384_scalar_addcarryx_u32(x700, x660, x657); let x703: u32 = ((x702 as u32) + x658); let mut x704: u32 = 0; let mut x705: fiat_p384_scalar_u1 = 0; let (x704, x705) = fiat_p384_scalar_addcarryx_u32(0x0, x629, x679); let mut x706: u32 = 0; let mut x707: fiat_p384_scalar_u1 = 0; let (x706, x707) = fiat_p384_scalar_addcarryx_u32(x705, x631, x681); let mut x708: u32 = 0; let mut x709: fiat_p384_scalar_u1 = 0; let (x708, x709) = fiat_p384_scalar_addcarryx_u32(x707, x633, x683); let mut x710: u32 = 0; let mut x711: fiat_p384_scalar_u1 = 0; let (x710, x711) = fiat_p384_scalar_addcarryx_u32(x709, x635, x685); let mut x712: u32 = 0; let mut x713: fiat_p384_scalar_u1 = 0; let (x712, x713) = fiat_p384_scalar_addcarryx_u32(x711, x637, x687); let mut x714: u32 = 0; let mut x715: fiat_p384_scalar_u1 = 0; let (x714, x715) = fiat_p384_scalar_addcarryx_u32(x713, x639, x689); let mut x716: u32 = 0; let mut x717: fiat_p384_scalar_u1 = 0; let (x716, x717) = fiat_p384_scalar_addcarryx_u32(x715, x641, x691); let mut x718: u32 = 0; let mut x719: fiat_p384_scalar_u1 = 0; let (x718, x719) = fiat_p384_scalar_addcarryx_u32(x717, x643, x693); let mut x720: u32 = 0; let mut x721: fiat_p384_scalar_u1 = 0; let (x720, x721) = fiat_p384_scalar_addcarryx_u32(x719, x645, x695); let mut x722: u32 = 0; let mut x723: fiat_p384_scalar_u1 = 0; let (x722, x723) = fiat_p384_scalar_addcarryx_u32(x721, x647, x697); let mut x724: u32 = 0; let mut x725: fiat_p384_scalar_u1 = 0; let (x724, x725) = fiat_p384_scalar_addcarryx_u32(x723, x649, x699); let mut x726: u32 = 0; let mut x727: fiat_p384_scalar_u1 = 0; let (x726, x727) = fiat_p384_scalar_addcarryx_u32(x725, x651, x701); let mut x728: u32 = 0; let mut x729: fiat_p384_scalar_u1 = 0; let (x728, x729) = fiat_p384_scalar_addcarryx_u32(x727, x653, x703); let x730: u32 = ((x729 as u32) + (x654 as u32)); let mut x731: u32 = 0; let mut x732: u32 = 0; let (x731, x732) = fiat_p384_scalar_mulx_u32(x5, (arg1[11])); let mut x733: u32 = 0; let mut x734: u32 = 0; let (x733, x734) = fiat_p384_scalar_mulx_u32(x5, (arg1[10])); let mut x735: u32 = 0; let mut x736: u32 = 0; let (x735, x736) = fiat_p384_scalar_mulx_u32(x5, (arg1[9])); let mut x737: u32 = 0; let mut x738: u32 = 0; let (x737, x738) = fiat_p384_scalar_mulx_u32(x5, (arg1[8])); let mut x739: u32 = 0; let mut x740: u32 = 0; let (x739, x740) = fiat_p384_scalar_mulx_u32(x5, (arg1[7])); let mut x741: u32 = 0; let mut x742: u32 = 0; let (x741, x742) = fiat_p384_scalar_mulx_u32(x5, (arg1[6])); let mut x743: u32 = 0; let mut x744: u32 = 0; let (x743, x744) = fiat_p384_scalar_mulx_u32(x5, (arg1[5])); let mut x745: u32 = 0; let mut x746: u32 = 0; let (x745, x746) = fiat_p384_scalar_mulx_u32(x5, (arg1[4])); let mut x747: u32 = 0; let mut x748: u32 = 0; let (x747, x748) = fiat_p384_scalar_mulx_u32(x5, (arg1[3])); let mut x749: u32 = 0; let mut x750: u32 = 0; let (x749, x750) = fiat_p384_scalar_mulx_u32(x5, (arg1[2])); let mut x751: u32 = 0; let mut x752: u32 = 0; let (x751, x752) = fiat_p384_scalar_mulx_u32(x5, (arg1[1])); let mut x753: u32 = 0; let mut x754: u32 = 0; let (x753, x754) = fiat_p384_scalar_mulx_u32(x5, (arg1[0])); let mut x755: u32 = 0; let mut x756: fiat_p384_scalar_u1 = 0; let (x755, x756) = fiat_p384_scalar_addcarryx_u32(0x0, x754, x751); let mut x757: u32 = 0; let mut x758: fiat_p384_scalar_u1 = 0; let (x757, x758) = fiat_p384_scalar_addcarryx_u32(x756, x752, x749); let mut x759: u32 = 0; let mut x760: fiat_p384_scalar_u1 = 0; let (x759, x760) = fiat_p384_scalar_addcarryx_u32(x758, x750, x747); let mut x761: u32 = 0; let mut x762: fiat_p384_scalar_u1 = 0; let (x761, x762) = fiat_p384_scalar_addcarryx_u32(x760, x748, x745); let mut x763: u32 = 0; let mut x764: fiat_p384_scalar_u1 = 0; let (x763, x764) = fiat_p384_scalar_addcarryx_u32(x762, x746, x743); let mut x765: u32 = 0; let mut x766: fiat_p384_scalar_u1 = 0; let (x765, x766) = fiat_p384_scalar_addcarryx_u32(x764, x744, x741); let mut x767: u32 = 0; let mut x768: fiat_p384_scalar_u1 = 0; let (x767, x768) = fiat_p384_scalar_addcarryx_u32(x766, x742, x739); let mut x769: u32 = 0; let mut x770: fiat_p384_scalar_u1 = 0; let (x769, x770) = fiat_p384_scalar_addcarryx_u32(x768, x740, x737); let mut x771: u32 = 0; let mut x772: fiat_p384_scalar_u1 = 0; let (x771, x772) = fiat_p384_scalar_addcarryx_u32(x770, x738, x735); let mut x773: u32 = 0; let mut x774: fiat_p384_scalar_u1 = 0; let (x773, x774) = fiat_p384_scalar_addcarryx_u32(x772, x736, x733); let mut x775: u32 = 0; let mut x776: fiat_p384_scalar_u1 = 0; let (x775, x776) = fiat_p384_scalar_addcarryx_u32(x774, x734, x731); let x777: u32 = ((x776 as u32) + x732); let mut x778: u32 = 0; let mut x779: fiat_p384_scalar_u1 = 0; let (x778, x779) = fiat_p384_scalar_addcarryx_u32(0x0, x706, x753); let mut x780: u32 = 0; let mut x781: fiat_p384_scalar_u1 = 0; let (x780, x781) = fiat_p384_scalar_addcarryx_u32(x779, x708, x755); let mut x782: u32 = 0; let mut x783: fiat_p384_scalar_u1 = 0; let (x782, x783) = fiat_p384_scalar_addcarryx_u32(x781, x710, x757); let mut x784: u32 = 0; let mut x785: fiat_p384_scalar_u1 = 0; let (x784, x785) = fiat_p384_scalar_addcarryx_u32(x783, x712, x759); let mut x786: u32 = 0; let mut x787: fiat_p384_scalar_u1 = 0; let (x786, x787) = fiat_p384_scalar_addcarryx_u32(x785, x714, x761); let mut x788: u32 = 0; let mut x789: fiat_p384_scalar_u1 = 0; let (x788, x789) = fiat_p384_scalar_addcarryx_u32(x787, x716, x763); let mut x790: u32 = 0; let mut x791: fiat_p384_scalar_u1 = 0; let (x790, x791) = fiat_p384_scalar_addcarryx_u32(x789, x718, x765); let mut x792: u32 = 0; let mut x793: fiat_p384_scalar_u1 = 0; let (x792, x793) = fiat_p384_scalar_addcarryx_u32(x791, x720, x767); let mut x794: u32 = 0; let mut x795: fiat_p384_scalar_u1 = 0; let (x794, x795) = fiat_p384_scalar_addcarryx_u32(x793, x722, x769); let mut x796: u32 = 0; let mut x797: fiat_p384_scalar_u1 = 0; let (x796, x797) = fiat_p384_scalar_addcarryx_u32(x795, x724, x771); let mut x798: u32 = 0; let mut x799: fiat_p384_scalar_u1 = 0; let (x798, x799) = fiat_p384_scalar_addcarryx_u32(x797, x726, x773); let mut x800: u32 = 0; let mut x801: fiat_p384_scalar_u1 = 0; let (x800, x801) = fiat_p384_scalar_addcarryx_u32(x799, x728, x775); let mut x802: u32 = 0; let mut x803: fiat_p384_scalar_u1 = 0; let (x802, x803) = fiat_p384_scalar_addcarryx_u32(x801, x730, x777); let mut x804: u32 = 0; let mut x805: u32 = 0; let (x804, x805) = fiat_p384_scalar_mulx_u32(x778, 0xe88fdc45); let mut x806: u32 = 0; let mut x807: u32 = 0; let (x806, x807) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x808: u32 = 0; let mut x809: u32 = 0; let (x808, x809) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x810: u32 = 0; let mut x811: u32 = 0; let (x810, x811) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x812: u32 = 0; let mut x813: u32 = 0; let (x812, x813) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x814: u32 = 0; let mut x815: u32 = 0; let (x814, x815) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x816: u32 = 0; let mut x817: u32 = 0; let (x816, x817) = fiat_p384_scalar_mulx_u32(x804, 0xffffffff); let mut x818: u32 = 0; let mut x819: u32 = 0; let (x818, x819) = fiat_p384_scalar_mulx_u32(x804, 0xc7634d81); let mut x820: u32 = 0; let mut x821: u32 = 0; let (x820, x821) = fiat_p384_scalar_mulx_u32(x804, 0xf4372ddf); let mut x822: u32 = 0; let mut x823: u32 = 0; let (x822, x823) = fiat_p384_scalar_mulx_u32(x804, 0x581a0db2); let mut x824: u32 = 0; let mut x825: u32 = 0; let (x824, x825) = fiat_p384_scalar_mulx_u32(x804, 0x48b0a77a); let mut x826: u32 = 0; let mut x827: u32 = 0; let (x826, x827) = fiat_p384_scalar_mulx_u32(x804, 0xecec196a); let mut x828: u32 = 0; let mut x829: u32 = 0; let (x828, x829) = fiat_p384_scalar_mulx_u32(x804, 0xccc52973); let mut x830: u32 = 0; let mut x831: fiat_p384_scalar_u1 = 0; let (x830, x831) = fiat_p384_scalar_addcarryx_u32(0x0, x829, x826); let mut x832: u32 = 0; let mut x833: fiat_p384_scalar_u1 = 0; let (x832, x833) = fiat_p384_scalar_addcarryx_u32(x831, x827, x824); let mut x834: u32 = 0; let mut x835: fiat_p384_scalar_u1 = 0; let (x834, x835) = fiat_p384_scalar_addcarryx_u32(x833, x825, x822); let mut x836: u32 = 0; let mut x837: fiat_p384_scalar_u1 = 0; let (x836, x837) = fiat_p384_scalar_addcarryx_u32(x835, x823, x820); let mut x838: u32 = 0; let mut x839: fiat_p384_scalar_u1 = 0; let (x838, x839) = fiat_p384_scalar_addcarryx_u32(x837, x821, x818); let mut x840: u32 = 0; let mut x841: fiat_p384_scalar_u1 = 0; let (x840, x841) = fiat_p384_scalar_addcarryx_u32(x839, x819, x816); let mut x842: u32 = 0; let mut x843: fiat_p384_scalar_u1 = 0; let (x842, x843) = fiat_p384_scalar_addcarryx_u32(x841, x817, x814); let mut x844: u32 = 0; let mut x845: fiat_p384_scalar_u1 = 0; let (x844, x845) = fiat_p384_scalar_addcarryx_u32(x843, x815, x812); let mut x846: u32 = 0; let mut x847: fiat_p384_scalar_u1 = 0; let (x846, x847) = fiat_p384_scalar_addcarryx_u32(x845, x813, x810); let mut x848: u32 = 0; let mut x849: fiat_p384_scalar_u1 = 0; let (x848, x849) = fiat_p384_scalar_addcarryx_u32(x847, x811, x808); let mut x850: u32 = 0; let mut x851: fiat_p384_scalar_u1 = 0; let (x850, x851) = fiat_p384_scalar_addcarryx_u32(x849, x809, x806); let x852: u32 = ((x851 as u32) + x807); let mut x853: u32 = 0; let mut x854: fiat_p384_scalar_u1 = 0; let (x853, x854) = fiat_p384_scalar_addcarryx_u32(0x0, x778, x828); let mut x855: u32 = 0; let mut x856: fiat_p384_scalar_u1 = 0; let (x855, x856) = fiat_p384_scalar_addcarryx_u32(x854, x780, x830); let mut x857: u32 = 0; let mut x858: fiat_p384_scalar_u1 = 0; let (x857, x858) = fiat_p384_scalar_addcarryx_u32(x856, x782, x832); let mut x859: u32 = 0; let mut x860: fiat_p384_scalar_u1 = 0; let (x859, x860) = fiat_p384_scalar_addcarryx_u32(x858, x784, x834); let mut x861: u32 = 0; let mut x862: fiat_p384_scalar_u1 = 0; let (x861, x862) = fiat_p384_scalar_addcarryx_u32(x860, x786, x836); let mut x863: u32 = 0; let mut x864: fiat_p384_scalar_u1 = 0; let (x863, x864) = fiat_p384_scalar_addcarryx_u32(x862, x788, x838); let mut x865: u32 = 0; let mut x866: fiat_p384_scalar_u1 = 0; let (x865, x866) = fiat_p384_scalar_addcarryx_u32(x864, x790, x840); let mut x867: u32 = 0; let mut x868: fiat_p384_scalar_u1 = 0; let (x867, x868) = fiat_p384_scalar_addcarryx_u32(x866, x792, x842); let mut x869: u32 = 0; let mut x870: fiat_p384_scalar_u1 = 0; let (x869, x870) = fiat_p384_scalar_addcarryx_u32(x868, x794, x844); let mut x871: u32 = 0; let mut x872: fiat_p384_scalar_u1 = 0; let (x871, x872) = fiat_p384_scalar_addcarryx_u32(x870, x796, x846); let mut x873: u32 = 0; let mut x874: fiat_p384_scalar_u1 = 0; let (x873, x874) = fiat_p384_scalar_addcarryx_u32(x872, x798, x848); let mut x875: u32 = 0; let mut x876: fiat_p384_scalar_u1 = 0; let (x875, x876) = fiat_p384_scalar_addcarryx_u32(x874, x800, x850); let mut x877: u32 = 0; let mut x878: fiat_p384_scalar_u1 = 0; let (x877, x878) = fiat_p384_scalar_addcarryx_u32(x876, x802, x852); let x879: u32 = ((x878 as u32) + (x803 as u32)); let mut x880: u32 = 0; let mut x881: u32 = 0; let (x880, x881) = fiat_p384_scalar_mulx_u32(x6, (arg1[11])); let mut x882: u32 = 0; let mut x883: u32 = 0; let (x882, x883) = fiat_p384_scalar_mulx_u32(x6, (arg1[10])); let mut x884: u32 = 0; let mut x885: u32 = 0; let (x884, x885) = fiat_p384_scalar_mulx_u32(x6, (arg1[9])); let mut x886: u32 = 0; let mut x887: u32 = 0; let (x886, x887) = fiat_p384_scalar_mulx_u32(x6, (arg1[8])); let mut x888: u32 = 0; let mut x889: u32 = 0; let (x888, x889) = fiat_p384_scalar_mulx_u32(x6, (arg1[7])); let mut x890: u32 = 0; let mut x891: u32 = 0; let (x890, x891) = fiat_p384_scalar_mulx_u32(x6, (arg1[6])); let mut x892: u32 = 0; let mut x893: u32 = 0; let (x892, x893) = fiat_p384_scalar_mulx_u32(x6, (arg1[5])); let mut x894: u32 = 0; let mut x895: u32 = 0; let (x894, x895) = fiat_p384_scalar_mulx_u32(x6, (arg1[4])); let mut x896: u32 = 0; let mut x897: u32 = 0; let (x896, x897) = fiat_p384_scalar_mulx_u32(x6, (arg1[3])); let mut x898: u32 = 0; let mut x899: u32 = 0; let (x898, x899) = fiat_p384_scalar_mulx_u32(x6, (arg1[2])); let mut x900: u32 = 0; let mut x901: u32 = 0; let (x900, x901) = fiat_p384_scalar_mulx_u32(x6, (arg1[1])); let mut x902: u32 = 0; let mut x903: u32 = 0; let (x902, x903) = fiat_p384_scalar_mulx_u32(x6, (arg1[0])); let mut x904: u32 = 0; let mut x905: fiat_p384_scalar_u1 = 0; let (x904, x905) = fiat_p384_scalar_addcarryx_u32(0x0, x903, x900); let mut x906: u32 = 0; let mut x907: fiat_p384_scalar_u1 = 0; let (x906, x907) = fiat_p384_scalar_addcarryx_u32(x905, x901, x898); let mut x908: u32 = 0; let mut x909: fiat_p384_scalar_u1 = 0; let (x908, x909) = fiat_p384_scalar_addcarryx_u32(x907, x899, x896); let mut x910: u32 = 0; let mut x911: fiat_p384_scalar_u1 = 0; let (x910, x911) = fiat_p384_scalar_addcarryx_u32(x909, x897, x894); let mut x912: u32 = 0; let mut x913: fiat_p384_scalar_u1 = 0; let (x912, x913) = fiat_p384_scalar_addcarryx_u32(x911, x895, x892); let mut x914: u32 = 0; let mut x915: fiat_p384_scalar_u1 = 0; let (x914, x915) = fiat_p384_scalar_addcarryx_u32(x913, x893, x890); let mut x916: u32 = 0; let mut x917: fiat_p384_scalar_u1 = 0; let (x916, x917) = fiat_p384_scalar_addcarryx_u32(x915, x891, x888); let mut x918: u32 = 0; let mut x919: fiat_p384_scalar_u1 = 0; let (x918, x919) = fiat_p384_scalar_addcarryx_u32(x917, x889, x886); let mut x920: u32 = 0; let mut x921: fiat_p384_scalar_u1 = 0; let (x920, x921) = fiat_p384_scalar_addcarryx_u32(x919, x887, x884); let mut x922: u32 = 0; let mut x923: fiat_p384_scalar_u1 = 0; let (x922, x923) = fiat_p384_scalar_addcarryx_u32(x921, x885, x882); let mut x924: u32 = 0; let mut x925: fiat_p384_scalar_u1 = 0; let (x924, x925) = fiat_p384_scalar_addcarryx_u32(x923, x883, x880); let x926: u32 = ((x925 as u32) + x881); let mut x927: u32 = 0; let mut x928: fiat_p384_scalar_u1 = 0; let (x927, x928) = fiat_p384_scalar_addcarryx_u32(0x0, x855, x902); let mut x929: u32 = 0; let mut x930: fiat_p384_scalar_u1 = 0; let (x929, x930) = fiat_p384_scalar_addcarryx_u32(x928, x857, x904); let mut x931: u32 = 0; let mut x932: fiat_p384_scalar_u1 = 0; let (x931, x932) = fiat_p384_scalar_addcarryx_u32(x930, x859, x906); let mut x933: u32 = 0; let mut x934: fiat_p384_scalar_u1 = 0; let (x933, x934) = fiat_p384_scalar_addcarryx_u32(x932, x861, x908); let mut x935: u32 = 0; let mut x936: fiat_p384_scalar_u1 = 0; let (x935, x936) = fiat_p384_scalar_addcarryx_u32(x934, x863, x910); let mut x937: u32 = 0; let mut x938: fiat_p384_scalar_u1 = 0; let (x937, x938) = fiat_p384_scalar_addcarryx_u32(x936, x865, x912); let mut x939: u32 = 0; let mut x940: fiat_p384_scalar_u1 = 0; let (x939, x940) = fiat_p384_scalar_addcarryx_u32(x938, x867, x914); let mut x941: u32 = 0; let mut x942: fiat_p384_scalar_u1 = 0; let (x941, x942) = fiat_p384_scalar_addcarryx_u32(x940, x869, x916); let mut x943: u32 = 0; let mut x944: fiat_p384_scalar_u1 = 0; let (x943, x944) = fiat_p384_scalar_addcarryx_u32(x942, x871, x918); let mut x945: u32 = 0; let mut x946: fiat_p384_scalar_u1 = 0; let (x945, x946) = fiat_p384_scalar_addcarryx_u32(x944, x873, x920); let mut x947: u32 = 0; let mut x948: fiat_p384_scalar_u1 = 0; let (x947, x948) = fiat_p384_scalar_addcarryx_u32(x946, x875, x922); let mut x949: u32 = 0; let mut x950: fiat_p384_scalar_u1 = 0; let (x949, x950) = fiat_p384_scalar_addcarryx_u32(x948, x877, x924); let mut x951: u32 = 0; let mut x952: fiat_p384_scalar_u1 = 0; let (x951, x952) = fiat_p384_scalar_addcarryx_u32(x950, x879, x926); let mut x953: u32 = 0; let mut x954: u32 = 0; let (x953, x954) = fiat_p384_scalar_mulx_u32(x927, 0xe88fdc45); let mut x955: u32 = 0; let mut x956: u32 = 0; let (x955, x956) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x957: u32 = 0; let mut x958: u32 = 0; let (x957, x958) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x959: u32 = 0; let mut x960: u32 = 0; let (x959, x960) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x961: u32 = 0; let mut x962: u32 = 0; let (x961, x962) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x963: u32 = 0; let mut x964: u32 = 0; let (x963, x964) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x965: u32 = 0; let mut x966: u32 = 0; let (x965, x966) = fiat_p384_scalar_mulx_u32(x953, 0xffffffff); let mut x967: u32 = 0; let mut x968: u32 = 0; let (x967, x968) = fiat_p384_scalar_mulx_u32(x953, 0xc7634d81); let mut x969: u32 = 0; let mut x970: u32 = 0; let (x969, x970) = fiat_p384_scalar_mulx_u32(x953, 0xf4372ddf); let mut x971: u32 = 0; let mut x972: u32 = 0; let (x971, x972) = fiat_p384_scalar_mulx_u32(x953, 0x581a0db2); let mut x973: u32 = 0; let mut x974: u32 = 0; let (x973, x974) = fiat_p384_scalar_mulx_u32(x953, 0x48b0a77a); let mut x975: u32 = 0; let mut x976: u32 = 0; let (x975, x976) = fiat_p384_scalar_mulx_u32(x953, 0xecec196a); let mut x977: u32 = 0; let mut x978: u32 = 0; let (x977, x978) = fiat_p384_scalar_mulx_u32(x953, 0xccc52973); let mut x979: u32 = 0; let mut x980: fiat_p384_scalar_u1 = 0; let (x979, x980) = fiat_p384_scalar_addcarryx_u32(0x0, x978, x975); let mut x981: u32 = 0; let mut x982: fiat_p384_scalar_u1 = 0; let (x981, x982) = fiat_p384_scalar_addcarryx_u32(x980, x976, x973); let mut x983: u32 = 0; let mut x984: fiat_p384_scalar_u1 = 0; let (x983, x984) = fiat_p384_scalar_addcarryx_u32(x982, x974, x971); let mut x985: u32 = 0; let mut x986: fiat_p384_scalar_u1 = 0; let (x985, x986) = fiat_p384_scalar_addcarryx_u32(x984, x972, x969); let mut x987: u32 = 0; let mut x988: fiat_p384_scalar_u1 = 0; let (x987, x988) = fiat_p384_scalar_addcarryx_u32(x986, x970, x967); let mut x989: u32 = 0; let mut x990: fiat_p384_scalar_u1 = 0; let (x989, x990) = fiat_p384_scalar_addcarryx_u32(x988, x968, x965); let mut x991: u32 = 0; let mut x992: fiat_p384_scalar_u1 = 0; let (x991, x992) = fiat_p384_scalar_addcarryx_u32(x990, x966, x963); let mut x993: u32 = 0; let mut x994: fiat_p384_scalar_u1 = 0; let (x993, x994) = fiat_p384_scalar_addcarryx_u32(x992, x964, x961); let mut x995: u32 = 0; let mut x996: fiat_p384_scalar_u1 = 0; let (x995, x996) = fiat_p384_scalar_addcarryx_u32(x994, x962, x959); let mut x997: u32 = 0; let mut x998: fiat_p384_scalar_u1 = 0; let (x997, x998) = fiat_p384_scalar_addcarryx_u32(x996, x960, x957); let mut x999: u32 = 0; let mut x1000: fiat_p384_scalar_u1 = 0; let (x999, x1000) = fiat_p384_scalar_addcarryx_u32(x998, x958, x955); let x1001: u32 = ((x1000 as u32) + x956); let mut x1002: u32 = 0; let mut x1003: fiat_p384_scalar_u1 = 0; let (x1002, x1003) = fiat_p384_scalar_addcarryx_u32(0x0, x927, x977); let mut x1004: u32 = 0; let mut x1005: fiat_p384_scalar_u1 = 0; let (x1004, x1005) = fiat_p384_scalar_addcarryx_u32(x1003, x929, x979); let mut x1006: u32 = 0; let mut x1007: fiat_p384_scalar_u1 = 0; let (x1006, x1007) = fiat_p384_scalar_addcarryx_u32(x1005, x931, x981); let mut x1008: u32 = 0; let mut x1009: fiat_p384_scalar_u1 = 0; let (x1008, x1009) = fiat_p384_scalar_addcarryx_u32(x1007, x933, x983); let mut x1010: u32 = 0; let mut x1011: fiat_p384_scalar_u1 = 0; let (x1010, x1011) = fiat_p384_scalar_addcarryx_u32(x1009, x935, x985); let mut x1012: u32 = 0; let mut x1013: fiat_p384_scalar_u1 = 0; let (x1012, x1013) = fiat_p384_scalar_addcarryx_u32(x1011, x937, x987); let mut x1014: u32 = 0; let mut x1015: fiat_p384_scalar_u1 = 0; let (x1014, x1015) = fiat_p384_scalar_addcarryx_u32(x1013, x939, x989); let mut x1016: u32 = 0; let mut x1017: fiat_p384_scalar_u1 = 0; let (x1016, x1017) = fiat_p384_scalar_addcarryx_u32(x1015, x941, x991); let mut x1018: u32 = 0; let mut x1019: fiat_p384_scalar_u1 = 0; let (x1018, x1019) = fiat_p384_scalar_addcarryx_u32(x1017, x943, x993); let mut x1020: u32 = 0; let mut x1021: fiat_p384_scalar_u1 = 0; let (x1020, x1021) = fiat_p384_scalar_addcarryx_u32(x1019, x945, x995); let mut x1022: u32 = 0; let mut x1023: fiat_p384_scalar_u1 = 0; let (x1022, x1023) = fiat_p384_scalar_addcarryx_u32(x1021, x947, x997); let mut x1024: u32 = 0; let mut x1025: fiat_p384_scalar_u1 = 0; let (x1024, x1025) = fiat_p384_scalar_addcarryx_u32(x1023, x949, x999); let mut x1026: u32 = 0; let mut x1027: fiat_p384_scalar_u1 = 0; let (x1026, x1027) = fiat_p384_scalar_addcarryx_u32(x1025, x951, x1001); let x1028: u32 = ((x1027 as u32) + (x952 as u32)); let mut x1029: u32 = 0; let mut x1030: u32 = 0; let (x1029, x1030) = fiat_p384_scalar_mulx_u32(x7, (arg1[11])); let mut x1031: u32 = 0; let mut x1032: u32 = 0; let (x1031, x1032) = fiat_p384_scalar_mulx_u32(x7, (arg1[10])); let mut x1033: u32 = 0; let mut x1034: u32 = 0; let (x1033, x1034) = fiat_p384_scalar_mulx_u32(x7, (arg1[9])); let mut x1035: u32 = 0; let mut x1036: u32 = 0; let (x1035, x1036) = fiat_p384_scalar_mulx_u32(x7, (arg1[8])); let mut x1037: u32 = 0; let mut x1038: u32 = 0; let (x1037, x1038) = fiat_p384_scalar_mulx_u32(x7, (arg1[7])); let mut x1039: u32 = 0; let mut x1040: u32 = 0; let (x1039, x1040) = fiat_p384_scalar_mulx_u32(x7, (arg1[6])); let mut x1041: u32 = 0; let mut x1042: u32 = 0; let (x1041, x1042) = fiat_p384_scalar_mulx_u32(x7, (arg1[5])); let mut x1043: u32 = 0; let mut x1044: u32 = 0; let (x1043, x1044) = fiat_p384_scalar_mulx_u32(x7, (arg1[4])); let mut x1045: u32 = 0; let mut x1046: u32 = 0; let (x1045, x1046) = fiat_p384_scalar_mulx_u32(x7, (arg1[3])); let mut x1047: u32 = 0; let mut x1048: u32 = 0; let (x1047, x1048) = fiat_p384_scalar_mulx_u32(x7, (arg1[2])); let mut x1049: u32 = 0; let mut x1050: u32 = 0; let (x1049, x1050) = fiat_p384_scalar_mulx_u32(x7, (arg1[1])); let mut x1051: u32 = 0; let mut x1052: u32 = 0; let (x1051, x1052) = fiat_p384_scalar_mulx_u32(x7, (arg1[0])); let mut x1053: u32 = 0; let mut x1054: fiat_p384_scalar_u1 = 0; let (x1053, x1054) = fiat_p384_scalar_addcarryx_u32(0x0, x1052, x1049); let mut x1055: u32 = 0; let mut x1056: fiat_p384_scalar_u1 = 0; let (x1055, x1056) = fiat_p384_scalar_addcarryx_u32(x1054, x1050, x1047); let mut x1057: u32 = 0; let mut x1058: fiat_p384_scalar_u1 = 0; let (x1057, x1058) = fiat_p384_scalar_addcarryx_u32(x1056, x1048, x1045); let mut x1059: u32 = 0; let mut x1060: fiat_p384_scalar_u1 = 0; let (x1059, x1060) = fiat_p384_scalar_addcarryx_u32(x1058, x1046, x1043); let mut x1061: u32 = 0; let mut x1062: fiat_p384_scalar_u1 = 0; let (x1061, x1062) = fiat_p384_scalar_addcarryx_u32(x1060, x1044, x1041); let mut x1063: u32 = 0; let mut x1064: fiat_p384_scalar_u1 = 0; let (x1063, x1064) = fiat_p384_scalar_addcarryx_u32(x1062, x1042, x1039); let mut x1065: u32 = 0; let mut x1066: fiat_p384_scalar_u1 = 0; let (x1065, x1066) = fiat_p384_scalar_addcarryx_u32(x1064, x1040, x1037); let mut x1067: u32 = 0; let mut x1068: fiat_p384_scalar_u1 = 0; let (x1067, x1068) = fiat_p384_scalar_addcarryx_u32(x1066, x1038, x1035); let mut x1069: u32 = 0; let mut x1070: fiat_p384_scalar_u1 = 0; let (x1069, x1070) = fiat_p384_scalar_addcarryx_u32(x1068, x1036, x1033); let mut x1071: u32 = 0; let mut x1072: fiat_p384_scalar_u1 = 0; let (x1071, x1072) = fiat_p384_scalar_addcarryx_u32(x1070, x1034, x1031); let mut x1073: u32 = 0; let mut x1074: fiat_p384_scalar_u1 = 0; let (x1073, x1074) = fiat_p384_scalar_addcarryx_u32(x1072, x1032, x1029); let x1075: u32 = ((x1074 as u32) + x1030); let mut x1076: u32 = 0; let mut x1077: fiat_p384_scalar_u1 = 0; let (x1076, x1077) = fiat_p384_scalar_addcarryx_u32(0x0, x1004, x1051); let mut x1078: u32 = 0; let mut x1079: fiat_p384_scalar_u1 = 0; let (x1078, x1079) = fiat_p384_scalar_addcarryx_u32(x1077, x1006, x1053); let mut x1080: u32 = 0; let mut x1081: fiat_p384_scalar_u1 = 0; let (x1080, x1081) = fiat_p384_scalar_addcarryx_u32(x1079, x1008, x1055); let mut x1082: u32 = 0; let mut x1083: fiat_p384_scalar_u1 = 0; let (x1082, x1083) = fiat_p384_scalar_addcarryx_u32(x1081, x1010, x1057); let mut x1084: u32 = 0; let mut x1085: fiat_p384_scalar_u1 = 0; let (x1084, x1085) = fiat_p384_scalar_addcarryx_u32(x1083, x1012, x1059); let mut x1086: u32 = 0; let mut x1087: fiat_p384_scalar_u1 = 0; let (x1086, x1087) = fiat_p384_scalar_addcarryx_u32(x1085, x1014, x1061); let mut x1088: u32 = 0; let mut x1089: fiat_p384_scalar_u1 = 0; let (x1088, x1089) = fiat_p384_scalar_addcarryx_u32(x1087, x1016, x1063); let mut x1090: u32 = 0; let mut x1091: fiat_p384_scalar_u1 = 0; let (x1090, x1091) = fiat_p384_scalar_addcarryx_u32(x1089, x1018, x1065); let mut x1092: u32 = 0; let mut x1093: fiat_p384_scalar_u1 = 0; let (x1092, x1093) = fiat_p384_scalar_addcarryx_u32(x1091, x1020, x1067); let mut x1094: u32 = 0; let mut x1095: fiat_p384_scalar_u1 = 0; let (x1094, x1095) = fiat_p384_scalar_addcarryx_u32(x1093, x1022, x1069); let mut x1096: u32 = 0; let mut x1097: fiat_p384_scalar_u1 = 0; let (x1096, x1097) = fiat_p384_scalar_addcarryx_u32(x1095, x1024, x1071); let mut x1098: u32 = 0; let mut x1099: fiat_p384_scalar_u1 = 0; let (x1098, x1099) = fiat_p384_scalar_addcarryx_u32(x1097, x1026, x1073); let mut x1100: u32 = 0; let mut x1101: fiat_p384_scalar_u1 = 0; let (x1100, x1101) = fiat_p384_scalar_addcarryx_u32(x1099, x1028, x1075); let mut x1102: u32 = 0; let mut x1103: u32 = 0; let (x1102, x1103) = fiat_p384_scalar_mulx_u32(x1076, 0xe88fdc45); let mut x1104: u32 = 0; let mut x1105: u32 = 0; let (x1104, x1105) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1106: u32 = 0; let mut x1107: u32 = 0; let (x1106, x1107) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1108: u32 = 0; let mut x1109: u32 = 0; let (x1108, x1109) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1110: u32 = 0; let mut x1111: u32 = 0; let (x1110, x1111) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1112: u32 = 0; let mut x1113: u32 = 0; let (x1112, x1113) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1114: u32 = 0; let mut x1115: u32 = 0; let (x1114, x1115) = fiat_p384_scalar_mulx_u32(x1102, 0xffffffff); let mut x1116: u32 = 0; let mut x1117: u32 = 0; let (x1116, x1117) = fiat_p384_scalar_mulx_u32(x1102, 0xc7634d81); let mut x1118: u32 = 0; let mut x1119: u32 = 0; let (x1118, x1119) = fiat_p384_scalar_mulx_u32(x1102, 0xf4372ddf); let mut x1120: u32 = 0; let mut x1121: u32 = 0; let (x1120, x1121) = fiat_p384_scalar_mulx_u32(x1102, 0x581a0db2); let mut x1122: u32 = 0; let mut x1123: u32 = 0; let (x1122, x1123) = fiat_p384_scalar_mulx_u32(x1102, 0x48b0a77a); let mut x1124: u32 = 0; let mut x1125: u32 = 0; let (x1124, x1125) = fiat_p384_scalar_mulx_u32(x1102, 0xecec196a); let mut x1126: u32 = 0; let mut x1127: u32 = 0; let (x1126, x1127) = fiat_p384_scalar_mulx_u32(x1102, 0xccc52973); let mut x1128: u32 = 0; let mut x1129: fiat_p384_scalar_u1 = 0; let (x1128, x1129) = fiat_p384_scalar_addcarryx_u32(0x0, x1127, x1124); let mut x1130: u32 = 0; let mut x1131: fiat_p384_scalar_u1 = 0; let (x1130, x1131) = fiat_p384_scalar_addcarryx_u32(x1129, x1125, x1122); let mut x1132: u32 = 0; let mut x1133: fiat_p384_scalar_u1 = 0; let (x1132, x1133) = fiat_p384_scalar_addcarryx_u32(x1131, x1123, x1120); let mut x1134: u32 = 0; let mut x1135: fiat_p384_scalar_u1 = 0; let (x1134, x1135) = fiat_p384_scalar_addcarryx_u32(x1133, x1121, x1118); let mut x1136: u32 = 0; let mut x1137: fiat_p384_scalar_u1 = 0; let (x1136, x1137) = fiat_p384_scalar_addcarryx_u32(x1135, x1119, x1116); let mut x1138: u32 = 0; let mut x1139: fiat_p384_scalar_u1 = 0; let (x1138, x1139) = fiat_p384_scalar_addcarryx_u32(x1137, x1117, x1114); let mut x1140: u32 = 0; let mut x1141: fiat_p384_scalar_u1 = 0; let (x1140, x1141) = fiat_p384_scalar_addcarryx_u32(x1139, x1115, x1112); let mut x1142: u32 = 0; let mut x1143: fiat_p384_scalar_u1 = 0; let (x1142, x1143) = fiat_p384_scalar_addcarryx_u32(x1141, x1113, x1110); let mut x1144: u32 = 0; let mut x1145: fiat_p384_scalar_u1 = 0; let (x1144, x1145) = fiat_p384_scalar_addcarryx_u32(x1143, x1111, x1108); let mut x1146: u32 = 0; let mut x1147: fiat_p384_scalar_u1 = 0; let (x1146, x1147) = fiat_p384_scalar_addcarryx_u32(x1145, x1109, x1106); let mut x1148: u32 = 0; let mut x1149: fiat_p384_scalar_u1 = 0; let (x1148, x1149) = fiat_p384_scalar_addcarryx_u32(x1147, x1107, x1104); let x1150: u32 = ((x1149 as u32) + x1105); let mut x1151: u32 = 0; let mut x1152: fiat_p384_scalar_u1 = 0; let (x1151, x1152) = fiat_p384_scalar_addcarryx_u32(0x0, x1076, x1126); let mut x1153: u32 = 0; let mut x1154: fiat_p384_scalar_u1 = 0; let (x1153, x1154) = fiat_p384_scalar_addcarryx_u32(x1152, x1078, x1128); let mut x1155: u32 = 0; let mut x1156: fiat_p384_scalar_u1 = 0; let (x1155, x1156) = fiat_p384_scalar_addcarryx_u32(x1154, x1080, x1130); let mut x1157: u32 = 0; let mut x1158: fiat_p384_scalar_u1 = 0; let (x1157, x1158) = fiat_p384_scalar_addcarryx_u32(x1156, x1082, x1132); let mut x1159: u32 = 0; let mut x1160: fiat_p384_scalar_u1 = 0; let (x1159, x1160) = fiat_p384_scalar_addcarryx_u32(x1158, x1084, x1134); let mut x1161: u32 = 0; let mut x1162: fiat_p384_scalar_u1 = 0; let (x1161, x1162) = fiat_p384_scalar_addcarryx_u32(x1160, x1086, x1136); let mut x1163: u32 = 0; let mut x1164: fiat_p384_scalar_u1 = 0; let (x1163, x1164) = fiat_p384_scalar_addcarryx_u32(x1162, x1088, x1138); let mut x1165: u32 = 0; let mut x1166: fiat_p384_scalar_u1 = 0; let (x1165, x1166) = fiat_p384_scalar_addcarryx_u32(x1164, x1090, x1140); let mut x1167: u32 = 0; let mut x1168: fiat_p384_scalar_u1 = 0; let (x1167, x1168) = fiat_p384_scalar_addcarryx_u32(x1166, x1092, x1142); let mut x1169: u32 = 0; let mut x1170: fiat_p384_scalar_u1 = 0; let (x1169, x1170) = fiat_p384_scalar_addcarryx_u32(x1168, x1094, x1144); let mut x1171: u32 = 0; let mut x1172: fiat_p384_scalar_u1 = 0; let (x1171, x1172) = fiat_p384_scalar_addcarryx_u32(x1170, x1096, x1146); let mut x1173: u32 = 0; let mut x1174: fiat_p384_scalar_u1 = 0; let (x1173, x1174) = fiat_p384_scalar_addcarryx_u32(x1172, x1098, x1148); let mut x1175: u32 = 0; let mut x1176: fiat_p384_scalar_u1 = 0; let (x1175, x1176) = fiat_p384_scalar_addcarryx_u32(x1174, x1100, x1150); let x1177: u32 = ((x1176 as u32) + (x1101 as u32)); let mut x1178: u32 = 0; let mut x1179: u32 = 0; let (x1178, x1179) = fiat_p384_scalar_mulx_u32(x8, (arg1[11])); let mut x1180: u32 = 0; let mut x1181: u32 = 0; let (x1180, x1181) = fiat_p384_scalar_mulx_u32(x8, (arg1[10])); let mut x1182: u32 = 0; let mut x1183: u32 = 0; let (x1182, x1183) = fiat_p384_scalar_mulx_u32(x8, (arg1[9])); let mut x1184: u32 = 0; let mut x1185: u32 = 0; let (x1184, x1185) = fiat_p384_scalar_mulx_u32(x8, (arg1[8])); let mut x1186: u32 = 0; let mut x1187: u32 = 0; let (x1186, x1187) = fiat_p384_scalar_mulx_u32(x8, (arg1[7])); let mut x1188: u32 = 0; let mut x1189: u32 = 0; let (x1188, x1189) = fiat_p384_scalar_mulx_u32(x8, (arg1[6])); let mut x1190: u32 = 0; let mut x1191: u32 = 0; let (x1190, x1191) = fiat_p384_scalar_mulx_u32(x8, (arg1[5])); let mut x1192: u32 = 0; let mut x1193: u32 = 0; let (x1192, x1193) = fiat_p384_scalar_mulx_u32(x8, (arg1[4])); let mut x1194: u32 = 0; let mut x1195: u32 = 0; let (x1194, x1195) = fiat_p384_scalar_mulx_u32(x8, (arg1[3])); let mut x1196: u32 = 0; let mut x1197: u32 = 0; let (x1196, x1197) = fiat_p384_scalar_mulx_u32(x8, (arg1[2])); let mut x1198: u32 = 0; let mut x1199: u32 = 0; let (x1198, x1199) = fiat_p384_scalar_mulx_u32(x8, (arg1[1])); let mut x1200: u32 = 0; let mut x1201: u32 = 0; let (x1200, x1201) = fiat_p384_scalar_mulx_u32(x8, (arg1[0])); let mut x1202: u32 = 0; let mut x1203: fiat_p384_scalar_u1 = 0; let (x1202, x1203) = fiat_p384_scalar_addcarryx_u32(0x0, x1201, x1198); let mut x1204: u32 = 0; let mut x1205: fiat_p384_scalar_u1 = 0; let (x1204, x1205) = fiat_p384_scalar_addcarryx_u32(x1203, x1199, x1196); let mut x1206: u32 = 0; let mut x1207: fiat_p384_scalar_u1 = 0; let (x1206, x1207) = fiat_p384_scalar_addcarryx_u32(x1205, x1197, x1194); let mut x1208: u32 = 0; let mut x1209: fiat_p384_scalar_u1 = 0; let (x1208, x1209) = fiat_p384_scalar_addcarryx_u32(x1207, x1195, x1192); let mut x1210: u32 = 0; let mut x1211: fiat_p384_scalar_u1 = 0; let (x1210, x1211) = fiat_p384_scalar_addcarryx_u32(x1209, x1193, x1190); let mut x1212: u32 = 0; let mut x1213: fiat_p384_scalar_u1 = 0; let (x1212, x1213) = fiat_p384_scalar_addcarryx_u32(x1211, x1191, x1188); let mut x1214: u32 = 0; let mut x1215: fiat_p384_scalar_u1 = 0; let (x1214, x1215) = fiat_p384_scalar_addcarryx_u32(x1213, x1189, x1186); let mut x1216: u32 = 0; let mut x1217: fiat_p384_scalar_u1 = 0; let (x1216, x1217) = fiat_p384_scalar_addcarryx_u32(x1215, x1187, x1184); let mut x1218: u32 = 0; let mut x1219: fiat_p384_scalar_u1 = 0; let (x1218, x1219) = fiat_p384_scalar_addcarryx_u32(x1217, x1185, x1182); let mut x1220: u32 = 0; let mut x1221: fiat_p384_scalar_u1 = 0; let (x1220, x1221) = fiat_p384_scalar_addcarryx_u32(x1219, x1183, x1180); let mut x1222: u32 = 0; let mut x1223: fiat_p384_scalar_u1 = 0; let (x1222, x1223) = fiat_p384_scalar_addcarryx_u32(x1221, x1181, x1178); let x1224: u32 = ((x1223 as u32) + x1179); let mut x1225: u32 = 0; let mut x1226: fiat_p384_scalar_u1 = 0; let (x1225, x1226) = fiat_p384_scalar_addcarryx_u32(0x0, x1153, x1200); let mut x1227: u32 = 0; let mut x1228: fiat_p384_scalar_u1 = 0; let (x1227, x1228) = fiat_p384_scalar_addcarryx_u32(x1226, x1155, x1202); let mut x1229: u32 = 0; let mut x1230: fiat_p384_scalar_u1 = 0; let (x1229, x1230) = fiat_p384_scalar_addcarryx_u32(x1228, x1157, x1204); let mut x1231: u32 = 0; let mut x1232: fiat_p384_scalar_u1 = 0; let (x1231, x1232) = fiat_p384_scalar_addcarryx_u32(x1230, x1159, x1206); let mut x1233: u32 = 0; let mut x1234: fiat_p384_scalar_u1 = 0; let (x1233, x1234) = fiat_p384_scalar_addcarryx_u32(x1232, x1161, x1208); let mut x1235: u32 = 0; let mut x1236: fiat_p384_scalar_u1 = 0; let (x1235, x1236) = fiat_p384_scalar_addcarryx_u32(x1234, x1163, x1210); let mut x1237: u32 = 0; let mut x1238: fiat_p384_scalar_u1 = 0; let (x1237, x1238) = fiat_p384_scalar_addcarryx_u32(x1236, x1165, x1212); let mut x1239: u32 = 0; let mut x1240: fiat_p384_scalar_u1 = 0; let (x1239, x1240) = fiat_p384_scalar_addcarryx_u32(x1238, x1167, x1214); let mut x1241: u32 = 0; let mut x1242: fiat_p384_scalar_u1 = 0; let (x1241, x1242) = fiat_p384_scalar_addcarryx_u32(x1240, x1169, x1216); let mut x1243: u32 = 0; let mut x1244: fiat_p384_scalar_u1 = 0; let (x1243, x1244) = fiat_p384_scalar_addcarryx_u32(x1242, x1171, x1218); let mut x1245: u32 = 0; let mut x1246: fiat_p384_scalar_u1 = 0; let (x1245, x1246) = fiat_p384_scalar_addcarryx_u32(x1244, x1173, x1220); let mut x1247: u32 = 0; let mut x1248: fiat_p384_scalar_u1 = 0; let (x1247, x1248) = fiat_p384_scalar_addcarryx_u32(x1246, x1175, x1222); let mut x1249: u32 = 0; let mut x1250: fiat_p384_scalar_u1 = 0; let (x1249, x1250) = fiat_p384_scalar_addcarryx_u32(x1248, x1177, x1224); let mut x1251: u32 = 0; let mut x1252: u32 = 0; let (x1251, x1252) = fiat_p384_scalar_mulx_u32(x1225, 0xe88fdc45); let mut x1253: u32 = 0; let mut x1254: u32 = 0; let (x1253, x1254) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1255: u32 = 0; let mut x1256: u32 = 0; let (x1255, x1256) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1257: u32 = 0; let mut x1258: u32 = 0; let (x1257, x1258) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1259: u32 = 0; let mut x1260: u32 = 0; let (x1259, x1260) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1261: u32 = 0; let mut x1262: u32 = 0; let (x1261, x1262) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1263: u32 = 0; let mut x1264: u32 = 0; let (x1263, x1264) = fiat_p384_scalar_mulx_u32(x1251, 0xffffffff); let mut x1265: u32 = 0; let mut x1266: u32 = 0; let (x1265, x1266) = fiat_p384_scalar_mulx_u32(x1251, 0xc7634d81); let mut x1267: u32 = 0; let mut x1268: u32 = 0; let (x1267, x1268) = fiat_p384_scalar_mulx_u32(x1251, 0xf4372ddf); let mut x1269: u32 = 0; let mut x1270: u32 = 0; let (x1269, x1270) = fiat_p384_scalar_mulx_u32(x1251, 0x581a0db2); let mut x1271: u32 = 0; let mut x1272: u32 = 0; let (x1271, x1272) = fiat_p384_scalar_mulx_u32(x1251, 0x48b0a77a); let mut x1273: u32 = 0; let mut x1274: u32 = 0; let (x1273, x1274) = fiat_p384_scalar_mulx_u32(x1251, 0xecec196a); let mut x1275: u32 = 0; let mut x1276: u32 = 0; let (x1275, x1276) = fiat_p384_scalar_mulx_u32(x1251, 0xccc52973); let mut x1277: u32 = 0; let mut x1278: fiat_p384_scalar_u1 = 0; let (x1277, x1278) = fiat_p384_scalar_addcarryx_u32(0x0, x1276, x1273); let mut x1279: u32 = 0; let mut x1280: fiat_p384_scalar_u1 = 0; let (x1279, x1280) = fiat_p384_scalar_addcarryx_u32(x1278, x1274, x1271); let mut x1281: u32 = 0; let mut x1282: fiat_p384_scalar_u1 = 0; let (x1281, x1282) = fiat_p384_scalar_addcarryx_u32(x1280, x1272, x1269); let mut x1283: u32 = 0; let mut x1284: fiat_p384_scalar_u1 = 0; let (x1283, x1284) = fiat_p384_scalar_addcarryx_u32(x1282, x1270, x1267); let mut x1285: u32 = 0; let mut x1286: fiat_p384_scalar_u1 = 0; let (x1285, x1286) = fiat_p384_scalar_addcarryx_u32(x1284, x1268, x1265); let mut x1287: u32 = 0; let mut x1288: fiat_p384_scalar_u1 = 0; let (x1287, x1288) = fiat_p384_scalar_addcarryx_u32(x1286, x1266, x1263); let mut x1289: u32 = 0; let mut x1290: fiat_p384_scalar_u1 = 0; let (x1289, x1290) = fiat_p384_scalar_addcarryx_u32(x1288, x1264, x1261); let mut x1291: u32 = 0; let mut x1292: fiat_p384_scalar_u1 = 0; let (x1291, x1292) = fiat_p384_scalar_addcarryx_u32(x1290, x1262, x1259); let mut x1293: u32 = 0; let mut x1294: fiat_p384_scalar_u1 = 0; let (x1293, x1294) = fiat_p384_scalar_addcarryx_u32(x1292, x1260, x1257); let mut x1295: u32 = 0; let mut x1296: fiat_p384_scalar_u1 = 0; let (x1295, x1296) = fiat_p384_scalar_addcarryx_u32(x1294, x1258, x1255); let mut x1297: u32 = 0; let mut x1298: fiat_p384_scalar_u1 = 0; let (x1297, x1298) = fiat_p384_scalar_addcarryx_u32(x1296, x1256, x1253); let x1299: u32 = ((x1298 as u32) + x1254); let mut x1300: u32 = 0; let mut x1301: fiat_p384_scalar_u1 = 0; let (x1300, x1301) = fiat_p384_scalar_addcarryx_u32(0x0, x1225, x1275); let mut x1302: u32 = 0; let mut x1303: fiat_p384_scalar_u1 = 0; let (x1302, x1303) = fiat_p384_scalar_addcarryx_u32(x1301, x1227, x1277); let mut x1304: u32 = 0; let mut x1305: fiat_p384_scalar_u1 = 0; let (x1304, x1305) = fiat_p384_scalar_addcarryx_u32(x1303, x1229, x1279); let mut x1306: u32 = 0; let mut x1307: fiat_p384_scalar_u1 = 0; let (x1306, x1307) = fiat_p384_scalar_addcarryx_u32(x1305, x1231, x1281); let mut x1308: u32 = 0; let mut x1309: fiat_p384_scalar_u1 = 0; let (x1308, x1309) = fiat_p384_scalar_addcarryx_u32(x1307, x1233, x1283); let mut x1310: u32 = 0; let mut x1311: fiat_p384_scalar_u1 = 0; let (x1310, x1311) = fiat_p384_scalar_addcarryx_u32(x1309, x1235, x1285); let mut x1312: u32 = 0; let mut x1313: fiat_p384_scalar_u1 = 0; let (x1312, x1313) = fiat_p384_scalar_addcarryx_u32(x1311, x1237, x1287); let mut x1314: u32 = 0; let mut x1315: fiat_p384_scalar_u1 = 0; let (x1314, x1315) = fiat_p384_scalar_addcarryx_u32(x1313, x1239, x1289); let mut x1316: u32 = 0; let mut x1317: fiat_p384_scalar_u1 = 0; let (x1316, x1317) = fiat_p384_scalar_addcarryx_u32(x1315, x1241, x1291); let mut x1318: u32 = 0; let mut x1319: fiat_p384_scalar_u1 = 0; let (x1318, x1319) = fiat_p384_scalar_addcarryx_u32(x1317, x1243, x1293); let mut x1320: u32 = 0; let mut x1321: fiat_p384_scalar_u1 = 0; let (x1320, x1321) = fiat_p384_scalar_addcarryx_u32(x1319, x1245, x1295); let mut x1322: u32 = 0; let mut x1323: fiat_p384_scalar_u1 = 0; let (x1322, x1323) = fiat_p384_scalar_addcarryx_u32(x1321, x1247, x1297); let mut x1324: u32 = 0; let mut x1325: fiat_p384_scalar_u1 = 0; let (x1324, x1325) = fiat_p384_scalar_addcarryx_u32(x1323, x1249, x1299); let x1326: u32 = ((x1325 as u32) + (x1250 as u32)); let mut x1327: u32 = 0; let mut x1328: u32 = 0; let (x1327, x1328) = fiat_p384_scalar_mulx_u32(x9, (arg1[11])); let mut x1329: u32 = 0; let mut x1330: u32 = 0; let (x1329, x1330) = fiat_p384_scalar_mulx_u32(x9, (arg1[10])); let mut x1331: u32 = 0; let mut x1332: u32 = 0; let (x1331, x1332) = fiat_p384_scalar_mulx_u32(x9, (arg1[9])); let mut x1333: u32 = 0; let mut x1334: u32 = 0; let (x1333, x1334) = fiat_p384_scalar_mulx_u32(x9, (arg1[8])); let mut x1335: u32 = 0; let mut x1336: u32 = 0; let (x1335, x1336) = fiat_p384_scalar_mulx_u32(x9, (arg1[7])); let mut x1337: u32 = 0; let mut x1338: u32 = 0; let (x1337, x1338) = fiat_p384_scalar_mulx_u32(x9, (arg1[6])); let mut x1339: u32 = 0; let mut x1340: u32 = 0; let (x1339, x1340) = fiat_p384_scalar_mulx_u32(x9, (arg1[5])); let mut x1341: u32 = 0; let mut x1342: u32 = 0; let (x1341, x1342) = fiat_p384_scalar_mulx_u32(x9, (arg1[4])); let mut x1343: u32 = 0; let mut x1344: u32 = 0; let (x1343, x1344) = fiat_p384_scalar_mulx_u32(x9, (arg1[3])); let mut x1345: u32 = 0; let mut x1346: u32 = 0; let (x1345, x1346) = fiat_p384_scalar_mulx_u32(x9, (arg1[2])); let mut x1347: u32 = 0; let mut x1348: u32 = 0; let (x1347, x1348) = fiat_p384_scalar_mulx_u32(x9, (arg1[1])); let mut x1349: u32 = 0; let mut x1350: u32 = 0; let (x1349, x1350) = fiat_p384_scalar_mulx_u32(x9, (arg1[0])); let mut x1351: u32 = 0; let mut x1352: fiat_p384_scalar_u1 = 0; let (x1351, x1352) = fiat_p384_scalar_addcarryx_u32(0x0, x1350, x1347); let mut x1353: u32 = 0; let mut x1354: fiat_p384_scalar_u1 = 0; let (x1353, x1354) = fiat_p384_scalar_addcarryx_u32(x1352, x1348, x1345); let mut x1355: u32 = 0; let mut x1356: fiat_p384_scalar_u1 = 0; let (x1355, x1356) = fiat_p384_scalar_addcarryx_u32(x1354, x1346, x1343); let mut x1357: u32 = 0; let mut x1358: fiat_p384_scalar_u1 = 0; let (x1357, x1358) = fiat_p384_scalar_addcarryx_u32(x1356, x1344, x1341); let mut x1359: u32 = 0; let mut x1360: fiat_p384_scalar_u1 = 0; let (x1359, x1360) = fiat_p384_scalar_addcarryx_u32(x1358, x1342, x1339); let mut x1361: u32 = 0; let mut x1362: fiat_p384_scalar_u1 = 0; let (x1361, x1362) = fiat_p384_scalar_addcarryx_u32(x1360, x1340, x1337); let mut x1363: u32 = 0; let mut x1364: fiat_p384_scalar_u1 = 0; let (x1363, x1364) = fiat_p384_scalar_addcarryx_u32(x1362, x1338, x1335); let mut x1365: u32 = 0; let mut x1366: fiat_p384_scalar_u1 = 0; let (x1365, x1366) = fiat_p384_scalar_addcarryx_u32(x1364, x1336, x1333); let mut x1367: u32 = 0; let mut x1368: fiat_p384_scalar_u1 = 0; let (x1367, x1368) = fiat_p384_scalar_addcarryx_u32(x1366, x1334, x1331); let mut x1369: u32 = 0; let mut x1370: fiat_p384_scalar_u1 = 0; let (x1369, x1370) = fiat_p384_scalar_addcarryx_u32(x1368, x1332, x1329); let mut x1371: u32 = 0; let mut x1372: fiat_p384_scalar_u1 = 0; let (x1371, x1372) = fiat_p384_scalar_addcarryx_u32(x1370, x1330, x1327); let x1373: u32 = ((x1372 as u32) + x1328); let mut x1374: u32 = 0; let mut x1375: fiat_p384_scalar_u1 = 0; let (x1374, x1375) = fiat_p384_scalar_addcarryx_u32(0x0, x1302, x1349); let mut x1376: u32 = 0; let mut x1377: fiat_p384_scalar_u1 = 0; let (x1376, x1377) = fiat_p384_scalar_addcarryx_u32(x1375, x1304, x1351); let mut x1378: u32 = 0; let mut x1379: fiat_p384_scalar_u1 = 0; let (x1378, x1379) = fiat_p384_scalar_addcarryx_u32(x1377, x1306, x1353); let mut x1380: u32 = 0; let mut x1381: fiat_p384_scalar_u1 = 0; let (x1380, x1381) = fiat_p384_scalar_addcarryx_u32(x1379, x1308, x1355); let mut x1382: u32 = 0; let mut x1383: fiat_p384_scalar_u1 = 0; let (x1382, x1383) = fiat_p384_scalar_addcarryx_u32(x1381, x1310, x1357); let mut x1384: u32 = 0; let mut x1385: fiat_p384_scalar_u1 = 0; let (x1384, x1385) = fiat_p384_scalar_addcarryx_u32(x1383, x1312, x1359); let mut x1386: u32 = 0; let mut x1387: fiat_p384_scalar_u1 = 0; let (x1386, x1387) = fiat_p384_scalar_addcarryx_u32(x1385, x1314, x1361); let mut x1388: u32 = 0; let mut x1389: fiat_p384_scalar_u1 = 0; let (x1388, x1389) = fiat_p384_scalar_addcarryx_u32(x1387, x1316, x1363); let mut x1390: u32 = 0; let mut x1391: fiat_p384_scalar_u1 = 0; let (x1390, x1391) = fiat_p384_scalar_addcarryx_u32(x1389, x1318, x1365); let mut x1392: u32 = 0; let mut x1393: fiat_p384_scalar_u1 = 0; let (x1392, x1393) = fiat_p384_scalar_addcarryx_u32(x1391, x1320, x1367); let mut x1394: u32 = 0; let mut x1395: fiat_p384_scalar_u1 = 0; let (x1394, x1395) = fiat_p384_scalar_addcarryx_u32(x1393, x1322, x1369); let mut x1396: u32 = 0; let mut x1397: fiat_p384_scalar_u1 = 0; let (x1396, x1397) = fiat_p384_scalar_addcarryx_u32(x1395, x1324, x1371); let mut x1398: u32 = 0; let mut x1399: fiat_p384_scalar_u1 = 0; let (x1398, x1399) = fiat_p384_scalar_addcarryx_u32(x1397, x1326, x1373); let mut x1400: u32 = 0; let mut x1401: u32 = 0; let (x1400, x1401) = fiat_p384_scalar_mulx_u32(x1374, 0xe88fdc45); let mut x1402: u32 = 0; let mut x1403: u32 = 0; let (x1402, x1403) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1404: u32 = 0; let mut x1405: u32 = 0; let (x1404, x1405) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1406: u32 = 0; let mut x1407: u32 = 0; let (x1406, x1407) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1408: u32 = 0; let mut x1409: u32 = 0; let (x1408, x1409) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1410: u32 = 0; let mut x1411: u32 = 0; let (x1410, x1411) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1412: u32 = 0; let mut x1413: u32 = 0; let (x1412, x1413) = fiat_p384_scalar_mulx_u32(x1400, 0xffffffff); let mut x1414: u32 = 0; let mut x1415: u32 = 0; let (x1414, x1415) = fiat_p384_scalar_mulx_u32(x1400, 0xc7634d81); let mut x1416: u32 = 0; let mut x1417: u32 = 0; let (x1416, x1417) = fiat_p384_scalar_mulx_u32(x1400, 0xf4372ddf); let mut x1418: u32 = 0; let mut x1419: u32 = 0; let (x1418, x1419) = fiat_p384_scalar_mulx_u32(x1400, 0x581a0db2); let mut x1420: u32 = 0; let mut x1421: u32 = 0; let (x1420, x1421) = fiat_p384_scalar_mulx_u32(x1400, 0x48b0a77a); let mut x1422: u32 = 0; let mut x1423: u32 = 0; let (x1422, x1423) = fiat_p384_scalar_mulx_u32(x1400, 0xecec196a); let mut x1424: u32 = 0; let mut x1425: u32 = 0; let (x1424, x1425) = fiat_p384_scalar_mulx_u32(x1400, 0xccc52973); let mut x1426: u32 = 0; let mut x1427: fiat_p384_scalar_u1 = 0; let (x1426, x1427) = fiat_p384_scalar_addcarryx_u32(0x0, x1425, x1422); let mut x1428: u32 = 0; let mut x1429: fiat_p384_scalar_u1 = 0; let (x1428, x1429) = fiat_p384_scalar_addcarryx_u32(x1427, x1423, x1420); let mut x1430: u32 = 0; let mut x1431: fiat_p384_scalar_u1 = 0; let (x1430, x1431) = fiat_p384_scalar_addcarryx_u32(x1429, x1421, x1418); let mut x1432: u32 = 0; let mut x1433: fiat_p384_scalar_u1 = 0; let (x1432, x1433) = fiat_p384_scalar_addcarryx_u32(x1431, x1419, x1416); let mut x1434: u32 = 0; let mut x1435: fiat_p384_scalar_u1 = 0; let (x1434, x1435) = fiat_p384_scalar_addcarryx_u32(x1433, x1417, x1414); let mut x1436: u32 = 0; let mut x1437: fiat_p384_scalar_u1 = 0; let (x1436, x1437) = fiat_p384_scalar_addcarryx_u32(x1435, x1415, x1412); let mut x1438: u32 = 0; let mut x1439: fiat_p384_scalar_u1 = 0; let (x1438, x1439) = fiat_p384_scalar_addcarryx_u32(x1437, x1413, x1410); let mut x1440: u32 = 0; let mut x1441: fiat_p384_scalar_u1 = 0; let (x1440, x1441) = fiat_p384_scalar_addcarryx_u32(x1439, x1411, x1408); let mut x1442: u32 = 0; let mut x1443: fiat_p384_scalar_u1 = 0; let (x1442, x1443) = fiat_p384_scalar_addcarryx_u32(x1441, x1409, x1406); let mut x1444: u32 = 0; let mut x1445: fiat_p384_scalar_u1 = 0; let (x1444, x1445) = fiat_p384_scalar_addcarryx_u32(x1443, x1407, x1404); let mut x1446: u32 = 0; let mut x1447: fiat_p384_scalar_u1 = 0; let (x1446, x1447) = fiat_p384_scalar_addcarryx_u32(x1445, x1405, x1402); let x1448: u32 = ((x1447 as u32) + x1403); let mut x1449: u32 = 0; let mut x1450: fiat_p384_scalar_u1 = 0; let (x1449, x1450) = fiat_p384_scalar_addcarryx_u32(0x0, x1374, x1424); let mut x1451: u32 = 0; let mut x1452: fiat_p384_scalar_u1 = 0; let (x1451, x1452) = fiat_p384_scalar_addcarryx_u32(x1450, x1376, x1426); let mut x1453: u32 = 0; let mut x1454: fiat_p384_scalar_u1 = 0; let (x1453, x1454) = fiat_p384_scalar_addcarryx_u32(x1452, x1378, x1428); let mut x1455: u32 = 0; let mut x1456: fiat_p384_scalar_u1 = 0; let (x1455, x1456) = fiat_p384_scalar_addcarryx_u32(x1454, x1380, x1430); let mut x1457: u32 = 0; let mut x1458: fiat_p384_scalar_u1 = 0; let (x1457, x1458) = fiat_p384_scalar_addcarryx_u32(x1456, x1382, x1432); let mut x1459: u32 = 0; let mut x1460: fiat_p384_scalar_u1 = 0; let (x1459, x1460) = fiat_p384_scalar_addcarryx_u32(x1458, x1384, x1434); let mut x1461: u32 = 0; let mut x1462: fiat_p384_scalar_u1 = 0; let (x1461, x1462) = fiat_p384_scalar_addcarryx_u32(x1460, x1386, x1436); let mut x1463: u32 = 0; let mut x1464: fiat_p384_scalar_u1 = 0; let (x1463, x1464) = fiat_p384_scalar_addcarryx_u32(x1462, x1388, x1438); let mut x1465: u32 = 0; let mut x1466: fiat_p384_scalar_u1 = 0; let (x1465, x1466) = fiat_p384_scalar_addcarryx_u32(x1464, x1390, x1440); let mut x1467: u32 = 0; let mut x1468: fiat_p384_scalar_u1 = 0; let (x1467, x1468) = fiat_p384_scalar_addcarryx_u32(x1466, x1392, x1442); let mut x1469: u32 = 0; let mut x1470: fiat_p384_scalar_u1 = 0; let (x1469, x1470) = fiat_p384_scalar_addcarryx_u32(x1468, x1394, x1444); let mut x1471: u32 = 0; let mut x1472: fiat_p384_scalar_u1 = 0; let (x1471, x1472) = fiat_p384_scalar_addcarryx_u32(x1470, x1396, x1446); let mut x1473: u32 = 0; let mut x1474: fiat_p384_scalar_u1 = 0; let (x1473, x1474) = fiat_p384_scalar_addcarryx_u32(x1472, x1398, x1448); let x1475: u32 = ((x1474 as u32) + (x1399 as u32)); let mut x1476: u32 = 0; let mut x1477: u32 = 0; let (x1476, x1477) = fiat_p384_scalar_mulx_u32(x10, (arg1[11])); let mut x1478: u32 = 0; let mut x1479: u32 = 0; let (x1478, x1479) = fiat_p384_scalar_mulx_u32(x10, (arg1[10])); let mut x1480: u32 = 0; let mut x1481: u32 = 0; let (x1480, x1481) = fiat_p384_scalar_mulx_u32(x10, (arg1[9])); let mut x1482: u32 = 0; let mut x1483: u32 = 0; let (x1482, x1483) = fiat_p384_scalar_mulx_u32(x10, (arg1[8])); let mut x1484: u32 = 0; let mut x1485: u32 = 0; let (x1484, x1485) = fiat_p384_scalar_mulx_u32(x10, (arg1[7])); let mut x1486: u32 = 0; let mut x1487: u32 = 0; let (x1486, x1487) = fiat_p384_scalar_mulx_u32(x10, (arg1[6])); let mut x1488: u32 = 0; let mut x1489: u32 = 0; let (x1488, x1489) = fiat_p384_scalar_mulx_u32(x10, (arg1[5])); let mut x1490: u32 = 0; let mut x1491: u32 = 0; let (x1490, x1491) = fiat_p384_scalar_mulx_u32(x10, (arg1[4])); let mut x1492: u32 = 0; let mut x1493: u32 = 0; let (x1492, x1493) = fiat_p384_scalar_mulx_u32(x10, (arg1[3])); let mut x1494: u32 = 0; let mut x1495: u32 = 0; let (x1494, x1495) = fiat_p384_scalar_mulx_u32(x10, (arg1[2])); let mut x1496: u32 = 0; let mut x1497: u32 = 0; let (x1496, x1497) = fiat_p384_scalar_mulx_u32(x10, (arg1[1])); let mut x1498: u32 = 0; let mut x1499: u32 = 0; let (x1498, x1499) = fiat_p384_scalar_mulx_u32(x10, (arg1[0])); let mut x1500: u32 = 0; let mut x1501: fiat_p384_scalar_u1 = 0; let (x1500, x1501) = fiat_p384_scalar_addcarryx_u32(0x0, x1499, x1496); let mut x1502: u32 = 0; let mut x1503: fiat_p384_scalar_u1 = 0; let (x1502, x1503) = fiat_p384_scalar_addcarryx_u32(x1501, x1497, x1494); let mut x1504: u32 = 0; let mut x1505: fiat_p384_scalar_u1 = 0; let (x1504, x1505) = fiat_p384_scalar_addcarryx_u32(x1503, x1495, x1492); let mut x1506: u32 = 0; let mut x1507: fiat_p384_scalar_u1 = 0; let (x1506, x1507) = fiat_p384_scalar_addcarryx_u32(x1505, x1493, x1490); let mut x1508: u32 = 0; let mut x1509: fiat_p384_scalar_u1 = 0; let (x1508, x1509) = fiat_p384_scalar_addcarryx_u32(x1507, x1491, x1488); let mut x1510: u32 = 0; let mut x1511: fiat_p384_scalar_u1 = 0; let (x1510, x1511) = fiat_p384_scalar_addcarryx_u32(x1509, x1489, x1486); let mut x1512: u32 = 0; let mut x1513: fiat_p384_scalar_u1 = 0; let (x1512, x1513) = fiat_p384_scalar_addcarryx_u32(x1511, x1487, x1484); let mut x1514: u32 = 0; let mut x1515: fiat_p384_scalar_u1 = 0; let (x1514, x1515) = fiat_p384_scalar_addcarryx_u32(x1513, x1485, x1482); let mut x1516: u32 = 0; let mut x1517: fiat_p384_scalar_u1 = 0; let (x1516, x1517) = fiat_p384_scalar_addcarryx_u32(x1515, x1483, x1480); let mut x1518: u32 = 0; let mut x1519: fiat_p384_scalar_u1 = 0; let (x1518, x1519) = fiat_p384_scalar_addcarryx_u32(x1517, x1481, x1478); let mut x1520: u32 = 0; let mut x1521: fiat_p384_scalar_u1 = 0; let (x1520, x1521) = fiat_p384_scalar_addcarryx_u32(x1519, x1479, x1476); let x1522: u32 = ((x1521 as u32) + x1477); let mut x1523: u32 = 0; let mut x1524: fiat_p384_scalar_u1 = 0; let (x1523, x1524) = fiat_p384_scalar_addcarryx_u32(0x0, x1451, x1498); let mut x1525: u32 = 0; let mut x1526: fiat_p384_scalar_u1 = 0; let (x1525, x1526) = fiat_p384_scalar_addcarryx_u32(x1524, x1453, x1500); let mut x1527: u32 = 0; let mut x1528: fiat_p384_scalar_u1 = 0; let (x1527, x1528) = fiat_p384_scalar_addcarryx_u32(x1526, x1455, x1502); let mut x1529: u32 = 0; let mut x1530: fiat_p384_scalar_u1 = 0; let (x1529, x1530) = fiat_p384_scalar_addcarryx_u32(x1528, x1457, x1504); let mut x1531: u32 = 0; let mut x1532: fiat_p384_scalar_u1 = 0; let (x1531, x1532) = fiat_p384_scalar_addcarryx_u32(x1530, x1459, x1506); let mut x1533: u32 = 0; let mut x1534: fiat_p384_scalar_u1 = 0; let (x1533, x1534) = fiat_p384_scalar_addcarryx_u32(x1532, x1461, x1508); let mut x1535: u32 = 0; let mut x1536: fiat_p384_scalar_u1 = 0; let (x1535, x1536) = fiat_p384_scalar_addcarryx_u32(x1534, x1463, x1510); let mut x1537: u32 = 0; let mut x1538: fiat_p384_scalar_u1 = 0; let (x1537, x1538) = fiat_p384_scalar_addcarryx_u32(x1536, x1465, x1512); let mut x1539: u32 = 0; let mut x1540: fiat_p384_scalar_u1 = 0; let (x1539, x1540) = fiat_p384_scalar_addcarryx_u32(x1538, x1467, x1514); let mut x1541: u32 = 0; let mut x1542: fiat_p384_scalar_u1 = 0; let (x1541, x1542) = fiat_p384_scalar_addcarryx_u32(x1540, x1469, x1516); let mut x1543: u32 = 0; let mut x1544: fiat_p384_scalar_u1 = 0; let (x1543, x1544) = fiat_p384_scalar_addcarryx_u32(x1542, x1471, x1518); let mut x1545: u32 = 0; let mut x1546: fiat_p384_scalar_u1 = 0; let (x1545, x1546) = fiat_p384_scalar_addcarryx_u32(x1544, x1473, x1520); let mut x1547: u32 = 0; let mut x1548: fiat_p384_scalar_u1 = 0; let (x1547, x1548) = fiat_p384_scalar_addcarryx_u32(x1546, x1475, x1522); let mut x1549: u32 = 0; let mut x1550: u32 = 0; let (x1549, x1550) = fiat_p384_scalar_mulx_u32(x1523, 0xe88fdc45); let mut x1551: u32 = 0; let mut x1552: u32 = 0; let (x1551, x1552) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1553: u32 = 0; let mut x1554: u32 = 0; let (x1553, x1554) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1555: u32 = 0; let mut x1556: u32 = 0; let (x1555, x1556) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1557: u32 = 0; let mut x1558: u32 = 0; let (x1557, x1558) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1559: u32 = 0; let mut x1560: u32 = 0; let (x1559, x1560) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1561: u32 = 0; let mut x1562: u32 = 0; let (x1561, x1562) = fiat_p384_scalar_mulx_u32(x1549, 0xffffffff); let mut x1563: u32 = 0; let mut x1564: u32 = 0; let (x1563, x1564) = fiat_p384_scalar_mulx_u32(x1549, 0xc7634d81); let mut x1565: u32 = 0; let mut x1566: u32 = 0; let (x1565, x1566) = fiat_p384_scalar_mulx_u32(x1549, 0xf4372ddf); let mut x1567: u32 = 0; let mut x1568: u32 = 0; let (x1567, x1568) = fiat_p384_scalar_mulx_u32(x1549, 0x581a0db2); let mut x1569: u32 = 0; let mut x1570: u32 = 0; let (x1569, x1570) = fiat_p384_scalar_mulx_u32(x1549, 0x48b0a77a); let mut x1571: u32 = 0; let mut x1572: u32 = 0; let (x1571, x1572) = fiat_p384_scalar_mulx_u32(x1549, 0xecec196a); let mut x1573: u32 = 0; let mut x1574: u32 = 0; let (x1573, x1574) = fiat_p384_scalar_mulx_u32(x1549, 0xccc52973); let mut x1575: u32 = 0; let mut x1576: fiat_p384_scalar_u1 = 0; let (x1575, x1576) = fiat_p384_scalar_addcarryx_u32(0x0, x1574, x1571); let mut x1577: u32 = 0; let mut x1578: fiat_p384_scalar_u1 = 0; let (x1577, x1578) = fiat_p384_scalar_addcarryx_u32(x1576, x1572, x1569); let mut x1579: u32 = 0; let mut x1580: fiat_p384_scalar_u1 = 0; let (x1579, x1580) = fiat_p384_scalar_addcarryx_u32(x1578, x1570, x1567); let mut x1581: u32 = 0; let mut x1582: fiat_p384_scalar_u1 = 0; let (x1581, x1582) = fiat_p384_scalar_addcarryx_u32(x1580, x1568, x1565); let mut x1583: u32 = 0; let mut x1584: fiat_p384_scalar_u1 = 0; let (x1583, x1584) = fiat_p384_scalar_addcarryx_u32(x1582, x1566, x1563); let mut x1585: u32 = 0; let mut x1586: fiat_p384_scalar_u1 = 0; let (x1585, x1586) = fiat_p384_scalar_addcarryx_u32(x1584, x1564, x1561); let mut x1587: u32 = 0; let mut x1588: fiat_p384_scalar_u1 = 0; let (x1587, x1588) = fiat_p384_scalar_addcarryx_u32(x1586, x1562, x1559); let mut x1589: u32 = 0; let mut x1590: fiat_p384_scalar_u1 = 0; let (x1589, x1590) = fiat_p384_scalar_addcarryx_u32(x1588, x1560, x1557); let mut x1591: u32 = 0; let mut x1592: fiat_p384_scalar_u1 = 0; let (x1591, x1592) = fiat_p384_scalar_addcarryx_u32(x1590, x1558, x1555); let mut x1593: u32 = 0; let mut x1594: fiat_p384_scalar_u1 = 0; let (x1593, x1594) = fiat_p384_scalar_addcarryx_u32(x1592, x1556, x1553); let mut x1595: u32 = 0; let mut x1596: fiat_p384_scalar_u1 = 0; let (x1595, x1596) = fiat_p384_scalar_addcarryx_u32(x1594, x1554, x1551); let x1597: u32 = ((x1596 as u32) + x1552); let mut x1598: u32 = 0; let mut x1599: fiat_p384_scalar_u1 = 0; let (x1598, x1599) = fiat_p384_scalar_addcarryx_u32(0x0, x1523, x1573); let mut x1600: u32 = 0; let mut x1601: fiat_p384_scalar_u1 = 0; let (x1600, x1601) = fiat_p384_scalar_addcarryx_u32(x1599, x1525, x1575); let mut x1602: u32 = 0; let mut x1603: fiat_p384_scalar_u1 = 0; let (x1602, x1603) = fiat_p384_scalar_addcarryx_u32(x1601, x1527, x1577); let mut x1604: u32 = 0; let mut x1605: fiat_p384_scalar_u1 = 0; let (x1604, x1605) = fiat_p384_scalar_addcarryx_u32(x1603, x1529, x1579); let mut x1606: u32 = 0; let mut x1607: fiat_p384_scalar_u1 = 0; let (x1606, x1607) = fiat_p384_scalar_addcarryx_u32(x1605, x1531, x1581); let mut x1608: u32 = 0; let mut x1609: fiat_p384_scalar_u1 = 0; let (x1608, x1609) = fiat_p384_scalar_addcarryx_u32(x1607, x1533, x1583); let mut x1610: u32 = 0; let mut x1611: fiat_p384_scalar_u1 = 0; let (x1610, x1611) = fiat_p384_scalar_addcarryx_u32(x1609, x1535, x1585); let mut x1612: u32 = 0; let mut x1613: fiat_p384_scalar_u1 = 0; let (x1612, x1613) = fiat_p384_scalar_addcarryx_u32(x1611, x1537, x1587); let mut x1614: u32 = 0; let mut x1615: fiat_p384_scalar_u1 = 0; let (x1614, x1615) = fiat_p384_scalar_addcarryx_u32(x1613, x1539, x1589); let mut x1616: u32 = 0; let mut x1617: fiat_p384_scalar_u1 = 0; let (x1616, x1617) = fiat_p384_scalar_addcarryx_u32(x1615, x1541, x1591); let mut x1618: u32 = 0; let mut x1619: fiat_p384_scalar_u1 = 0; let (x1618, x1619) = fiat_p384_scalar_addcarryx_u32(x1617, x1543, x1593); let mut x1620: u32 = 0; let mut x1621: fiat_p384_scalar_u1 = 0; let (x1620, x1621) = fiat_p384_scalar_addcarryx_u32(x1619, x1545, x1595); let mut x1622: u32 = 0; let mut x1623: fiat_p384_scalar_u1 = 0; let (x1622, x1623) = fiat_p384_scalar_addcarryx_u32(x1621, x1547, x1597); let x1624: u32 = ((x1623 as u32) + (x1548 as u32)); let mut x1625: u32 = 0; let mut x1626: u32 = 0; let (x1625, x1626) = fiat_p384_scalar_mulx_u32(x11, (arg1[11])); let mut x1627: u32 = 0; let mut x1628: u32 = 0; let (x1627, x1628) = fiat_p384_scalar_mulx_u32(x11, (arg1[10])); let mut x1629: u32 = 0; let mut x1630: u32 = 0; let (x1629, x1630) = fiat_p384_scalar_mulx_u32(x11, (arg1[9])); let mut x1631: u32 = 0; let mut x1632: u32 = 0; let (x1631, x1632) = fiat_p384_scalar_mulx_u32(x11, (arg1[8])); let mut x1633: u32 = 0; let mut x1634: u32 = 0; let (x1633, x1634) = fiat_p384_scalar_mulx_u32(x11, (arg1[7])); let mut x1635: u32 = 0; let mut x1636: u32 = 0; let (x1635, x1636) = fiat_p384_scalar_mulx_u32(x11, (arg1[6])); let mut x1637: u32 = 0; let mut x1638: u32 = 0; let (x1637, x1638) = fiat_p384_scalar_mulx_u32(x11, (arg1[5])); let mut x1639: u32 = 0; let mut x1640: u32 = 0; let (x1639, x1640) = fiat_p384_scalar_mulx_u32(x11, (arg1[4])); let mut x1641: u32 = 0; let mut x1642: u32 = 0; let (x1641, x1642) = fiat_p384_scalar_mulx_u32(x11, (arg1[3])); let mut x1643: u32 = 0; let mut x1644: u32 = 0; let (x1643, x1644) = fiat_p384_scalar_mulx_u32(x11, (arg1[2])); let mut x1645: u32 = 0; let mut x1646: u32 = 0; let (x1645, x1646) = fiat_p384_scalar_mulx_u32(x11, (arg1[1])); let mut x1647: u32 = 0; let mut x1648: u32 = 0; let (x1647, x1648) = fiat_p384_scalar_mulx_u32(x11, (arg1[0])); let mut x1649: u32 = 0; let mut x1650: fiat_p384_scalar_u1 = 0; let (x1649, x1650) = fiat_p384_scalar_addcarryx_u32(0x0, x1648, x1645); let mut x1651: u32 = 0; let mut x1652: fiat_p384_scalar_u1 = 0; let (x1651, x1652) = fiat_p384_scalar_addcarryx_u32(x1650, x1646, x1643); let mut x1653: u32 = 0; let mut x1654: fiat_p384_scalar_u1 = 0; let (x1653, x1654) = fiat_p384_scalar_addcarryx_u32(x1652, x1644, x1641); let mut x1655: u32 = 0; let mut x1656: fiat_p384_scalar_u1 = 0; let (x1655, x1656) = fiat_p384_scalar_addcarryx_u32(x1654, x1642, x1639); let mut x1657: u32 = 0; let mut x1658: fiat_p384_scalar_u1 = 0; let (x1657, x1658) = fiat_p384_scalar_addcarryx_u32(x1656, x1640, x1637); let mut x1659: u32 = 0; let mut x1660: fiat_p384_scalar_u1 = 0; let (x1659, x1660) = fiat_p384_scalar_addcarryx_u32(x1658, x1638, x1635); let mut x1661: u32 = 0; let mut x1662: fiat_p384_scalar_u1 = 0; let (x1661, x1662) = fiat_p384_scalar_addcarryx_u32(x1660, x1636, x1633); let mut x1663: u32 = 0; let mut x1664: fiat_p384_scalar_u1 = 0; let (x1663, x1664) = fiat_p384_scalar_addcarryx_u32(x1662, x1634, x1631); let mut x1665: u32 = 0; let mut x1666: fiat_p384_scalar_u1 = 0; let (x1665, x1666) = fiat_p384_scalar_addcarryx_u32(x1664, x1632, x1629); let mut x1667: u32 = 0; let mut x1668: fiat_p384_scalar_u1 = 0; let (x1667, x1668) = fiat_p384_scalar_addcarryx_u32(x1666, x1630, x1627); let mut x1669: u32 = 0; let mut x1670: fiat_p384_scalar_u1 = 0; let (x1669, x1670) = fiat_p384_scalar_addcarryx_u32(x1668, x1628, x1625); let x1671: u32 = ((x1670 as u32) + x1626); let mut x1672: u32 = 0; let mut x1673: fiat_p384_scalar_u1 = 0; let (x1672, x1673) = fiat_p384_scalar_addcarryx_u32(0x0, x1600, x1647); let mut x1674: u32 = 0; let mut x1675: fiat_p384_scalar_u1 = 0; let (x1674, x1675) = fiat_p384_scalar_addcarryx_u32(x1673, x1602, x1649); let mut x1676: u32 = 0; let mut x1677: fiat_p384_scalar_u1 = 0; let (x1676, x1677) = fiat_p384_scalar_addcarryx_u32(x1675, x1604, x1651); let mut x1678: u32 = 0; let mut x1679: fiat_p384_scalar_u1 = 0; let (x1678, x1679) = fiat_p384_scalar_addcarryx_u32(x1677, x1606, x1653); let mut x1680: u32 = 0; let mut x1681: fiat_p384_scalar_u1 = 0; let (x1680, x1681) = fiat_p384_scalar_addcarryx_u32(x1679, x1608, x1655); let mut x1682: u32 = 0; let mut x1683: fiat_p384_scalar_u1 = 0; let (x1682, x1683) = fiat_p384_scalar_addcarryx_u32(x1681, x1610, x1657); let mut x1684: u32 = 0; let mut x1685: fiat_p384_scalar_u1 = 0; let (x1684, x1685) = fiat_p384_scalar_addcarryx_u32(x1683, x1612, x1659); let mut x1686: u32 = 0; let mut x1687: fiat_p384_scalar_u1 = 0; let (x1686, x1687) = fiat_p384_scalar_addcarryx_u32(x1685, x1614, x1661); let mut x1688: u32 = 0; let mut x1689: fiat_p384_scalar_u1 = 0; let (x1688, x1689) = fiat_p384_scalar_addcarryx_u32(x1687, x1616, x1663); let mut x1690: u32 = 0; let mut x1691: fiat_p384_scalar_u1 = 0; let (x1690, x1691) = fiat_p384_scalar_addcarryx_u32(x1689, x1618, x1665); let mut x1692: u32 = 0; let mut x1693: fiat_p384_scalar_u1 = 0; let (x1692, x1693) = fiat_p384_scalar_addcarryx_u32(x1691, x1620, x1667); let mut x1694: u32 = 0; let mut x1695: fiat_p384_scalar_u1 = 0; let (x1694, x1695) = fiat_p384_scalar_addcarryx_u32(x1693, x1622, x1669); let mut x1696: u32 = 0; let mut x1697: fiat_p384_scalar_u1 = 0; let (x1696, x1697) = fiat_p384_scalar_addcarryx_u32(x1695, x1624, x1671); let mut x1698: u32 = 0; let mut x1699: u32 = 0; let (x1698, x1699) = fiat_p384_scalar_mulx_u32(x1672, 0xe88fdc45); let mut x1700: u32 = 0; let mut x1701: u32 = 0; let (x1700, x1701) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1702: u32 = 0; let mut x1703: u32 = 0; let (x1702, x1703) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1704: u32 = 0; let mut x1705: u32 = 0; let (x1704, x1705) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1706: u32 = 0; let mut x1707: u32 = 0; let (x1706, x1707) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1708: u32 = 0; let mut x1709: u32 = 0; let (x1708, x1709) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1710: u32 = 0; let mut x1711: u32 = 0; let (x1710, x1711) = fiat_p384_scalar_mulx_u32(x1698, 0xffffffff); let mut x1712: u32 = 0; let mut x1713: u32 = 0; let (x1712, x1713) = fiat_p384_scalar_mulx_u32(x1698, 0xc7634d81); let mut x1714: u32 = 0; let mut x1715: u32 = 0; let (x1714, x1715) = fiat_p384_scalar_mulx_u32(x1698, 0xf4372ddf); let mut x1716: u32 = 0; let mut x1717: u32 = 0; let (x1716, x1717) = fiat_p384_scalar_mulx_u32(x1698, 0x581a0db2); let mut x1718: u32 = 0; let mut x1719: u32 = 0; let (x1718, x1719) = fiat_p384_scalar_mulx_u32(x1698, 0x48b0a77a); let mut x1720: u32 = 0; let mut x1721: u32 = 0; let (x1720, x1721) = fiat_p384_scalar_mulx_u32(x1698, 0xecec196a); let mut x1722: u32 = 0; let mut x1723: u32 = 0; let (x1722, x1723) = fiat_p384_scalar_mulx_u32(x1698, 0xccc52973); let mut x1724: u32 = 0; let mut x1725: fiat_p384_scalar_u1 = 0; let (x1724, x1725) = fiat_p384_scalar_addcarryx_u32(0x0, x1723, x1720); let mut x1726: u32 = 0; let mut x1727: fiat_p384_scalar_u1 = 0; let (x1726, x1727) = fiat_p384_scalar_addcarryx_u32(x1725, x1721, x1718); let mut x1728: u32 = 0; let mut x1729: fiat_p384_scalar_u1 = 0; let (x1728, x1729) = fiat_p384_scalar_addcarryx_u32(x1727, x1719, x1716); let mut x1730: u32 = 0; let mut x1731: fiat_p384_scalar_u1 = 0; let (x1730, x1731) = fiat_p384_scalar_addcarryx_u32(x1729, x1717, x1714); let mut x1732: u32 = 0; let mut x1733: fiat_p384_scalar_u1 = 0; let (x1732, x1733) = fiat_p384_scalar_addcarryx_u32(x1731, x1715, x1712); let mut x1734: u32 = 0; let mut x1735: fiat_p384_scalar_u1 = 0; let (x1734, x1735) = fiat_p384_scalar_addcarryx_u32(x1733, x1713, x1710); let mut x1736: u32 = 0; let mut x1737: fiat_p384_scalar_u1 = 0; let (x1736, x1737) = fiat_p384_scalar_addcarryx_u32(x1735, x1711, x1708); let mut x1738: u32 = 0; let mut x1739: fiat_p384_scalar_u1 = 0; let (x1738, x1739) = fiat_p384_scalar_addcarryx_u32(x1737, x1709, x1706); let mut x1740: u32 = 0; let mut x1741: fiat_p384_scalar_u1 = 0; let (x1740, x1741) = fiat_p384_scalar_addcarryx_u32(x1739, x1707, x1704); let mut x1742: u32 = 0; let mut x1743: fiat_p384_scalar_u1 = 0; let (x1742, x1743) = fiat_p384_scalar_addcarryx_u32(x1741, x1705, x1702); let mut x1744: u32 = 0; let mut x1745: fiat_p384_scalar_u1 = 0; let (x1744, x1745) = fiat_p384_scalar_addcarryx_u32(x1743, x1703, x1700); let x1746: u32 = ((x1745 as u32) + x1701); let mut x1747: u32 = 0; let mut x1748: fiat_p384_scalar_u1 = 0; let (x1747, x1748) = fiat_p384_scalar_addcarryx_u32(0x0, x1672, x1722); let mut x1749: u32 = 0; let mut x1750: fiat_p384_scalar_u1 = 0; let (x1749, x1750) = fiat_p384_scalar_addcarryx_u32(x1748, x1674, x1724); let mut x1751: u32 = 0; let mut x1752: fiat_p384_scalar_u1 = 0; let (x1751, x1752) = fiat_p384_scalar_addcarryx_u32(x1750, x1676, x1726); let mut x1753: u32 = 0; let mut x1754: fiat_p384_scalar_u1 = 0; let (x1753, x1754) = fiat_p384_scalar_addcarryx_u32(x1752, x1678, x1728); let mut x1755: u32 = 0; let mut x1756: fiat_p384_scalar_u1 = 0; let (x1755, x1756) = fiat_p384_scalar_addcarryx_u32(x1754, x1680, x1730); let mut x1757: u32 = 0; let mut x1758: fiat_p384_scalar_u1 = 0; let (x1757, x1758) = fiat_p384_scalar_addcarryx_u32(x1756, x1682, x1732); let mut x1759: u32 = 0; let mut x1760: fiat_p384_scalar_u1 = 0; let (x1759, x1760) = fiat_p384_scalar_addcarryx_u32(x1758, x1684, x1734); let mut x1761: u32 = 0; let mut x1762: fiat_p384_scalar_u1 = 0; let (x1761, x1762) = fiat_p384_scalar_addcarryx_u32(x1760, x1686, x1736); let mut x1763: u32 = 0; let mut x1764: fiat_p384_scalar_u1 = 0; let (x1763, x1764) = fiat_p384_scalar_addcarryx_u32(x1762, x1688, x1738); let mut x1765: u32 = 0; let mut x1766: fiat_p384_scalar_u1 = 0; let (x1765, x1766) = fiat_p384_scalar_addcarryx_u32(x1764, x1690, x1740); let mut x1767: u32 = 0; let mut x1768: fiat_p384_scalar_u1 = 0; let (x1767, x1768) = fiat_p384_scalar_addcarryx_u32(x1766, x1692, x1742); let mut x1769: u32 = 0; let mut x1770: fiat_p384_scalar_u1 = 0; let (x1769, x1770) = fiat_p384_scalar_addcarryx_u32(x1768, x1694, x1744); let mut x1771: u32 = 0; let mut x1772: fiat_p384_scalar_u1 = 0; let (x1771, x1772) = fiat_p384_scalar_addcarryx_u32(x1770, x1696, x1746); let x1773: u32 = ((x1772 as u32) + (x1697 as u32)); let mut x1774: u32 = 0; let mut x1775: fiat_p384_scalar_u1 = 0; let (x1774, x1775) = fiat_p384_scalar_subborrowx_u32(0x0, x1749, 0xccc52973); let mut x1776: u32 = 0; let mut x1777: fiat_p384_scalar_u1 = 0; let (x1776, x1777) = fiat_p384_scalar_subborrowx_u32(x1775, x1751, 0xecec196a); let mut x1778: u32 = 0; let mut x1779: fiat_p384_scalar_u1 = 0; let (x1778, x1779) = fiat_p384_scalar_subborrowx_u32(x1777, x1753, 0x48b0a77a); let mut x1780: u32 = 0; let mut x1781: fiat_p384_scalar_u1 = 0; let (x1780, x1781) = fiat_p384_scalar_subborrowx_u32(x1779, x1755, 0x581a0db2); let mut x1782: u32 = 0; let mut x1783: fiat_p384_scalar_u1 = 0; let (x1782, x1783) = fiat_p384_scalar_subborrowx_u32(x1781, x1757, 0xf4372ddf); let mut x1784: u32 = 0; let mut x1785: fiat_p384_scalar_u1 = 0; let (x1784, x1785) = fiat_p384_scalar_subborrowx_u32(x1783, x1759, 0xc7634d81); let mut x1786: u32 = 0; let mut x1787: fiat_p384_scalar_u1 = 0; let (x1786, x1787) = fiat_p384_scalar_subborrowx_u32(x1785, x1761, 0xffffffff); let mut x1788: u32 = 0; let mut x1789: fiat_p384_scalar_u1 = 0; let (x1788, x1789) = fiat_p384_scalar_subborrowx_u32(x1787, x1763, 0xffffffff); let mut x1790: u32 = 0; let mut x1791: fiat_p384_scalar_u1 = 0; let (x1790, x1791) = fiat_p384_scalar_subborrowx_u32(x1789, x1765, 0xffffffff); let mut x1792: u32 = 0; let mut x1793: fiat_p384_scalar_u1 = 0; let (x1792, x1793) = fiat_p384_scalar_subborrowx_u32(x1791, x1767, 0xffffffff); let mut x1794: u32 = 0; let mut x1795: fiat_p384_scalar_u1 = 0; let (x1794, x1795) = fiat_p384_scalar_subborrowx_u32(x1793, x1769, 0xffffffff); let mut x1796: u32 = 0; let mut x1797: fiat_p384_scalar_u1 = 0; let (x1796, x1797) = fiat_p384_scalar_subborrowx_u32(x1795, x1771, 0xffffffff); let mut x1798: u32 = 0; let mut x1799: fiat_p384_scalar_u1 = 0; let (x1798, x1799) = fiat_p384_scalar_subborrowx_u32(x1797, x1773, (0x0 as u32)); let mut x1800: u32 = 0; let (x1800) = fiat_p384_scalar_cmovznz_u32(x1799, x1774, x1749); let mut x1801: u32 = 0; let (x1801) = fiat_p384_scalar_cmovznz_u32(x1799, x1776, x1751); let mut x1802: u32 = 0; let (x1802) = fiat_p384_scalar_cmovznz_u32(x1799, x1778, x1753); let mut x1803: u32 = 0; let (x1803) = fiat_p384_scalar_cmovznz_u32(x1799, x1780, x1755); let mut x1804: u32 = 0; let (x1804) = fiat_p384_scalar_cmovznz_u32(x1799, x1782, x1757); let mut x1805: u32 = 0; let (x1805) = fiat_p384_scalar_cmovznz_u32(x1799, x1784, x1759); let mut x1806: u32 = 0; let (x1806) = fiat_p384_scalar_cmovznz_u32(x1799, x1786, x1761); let mut x1807: u32 = 0; let (x1807) = fiat_p384_scalar_cmovznz_u32(x1799, x1788, x1763); let mut x1808: u32 = 0; let (x1808) = fiat_p384_scalar_cmovznz_u32(x1799, x1790, x1765); let mut x1809: u32 = 0; let (x1809) = fiat_p384_scalar_cmovznz_u32(x1799, x1792, x1767); let mut x1810: u32 = 0; let (x1810) = fiat_p384_scalar_cmovznz_u32(x1799, x1794, x1769); let mut x1811: u32 = 0; let (x1811) = fiat_p384_scalar_cmovznz_u32(x1799, x1796, x1771); out1[0] = x1800; out1[1] = x1801; out1[2] = x1802; out1[3] = x1803; out1[4] = x1804; out1[5] = x1805; out1[6] = x1806; out1[7] = x1807; out1[8] = x1808; out1[9] = x1809; out1[10] = x1810; out1[11] = x1811; out1 } #[doc = " The function fiat_p384_scalar_add adds two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_add( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_addcarryx_u32(0x0, (arg1[0]), (arg2[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_addcarryx_u32(x2, (arg1[1]), (arg2[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_addcarryx_u32(x4, (arg1[2]), (arg2[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_addcarryx_u32(x6, (arg1[3]), (arg2[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_addcarryx_u32(x8, (arg1[4]), (arg2[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_addcarryx_u32(x10, (arg1[5]), (arg2[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_scalar_u1 = 0; let (x13, x14) = fiat_p384_scalar_addcarryx_u32(x12, (arg1[6]), (arg2[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_scalar_u1 = 0; let (x15, x16) = fiat_p384_scalar_addcarryx_u32(x14, (arg1[7]), (arg2[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_scalar_u1 = 0; let (x17, x18) = fiat_p384_scalar_addcarryx_u32(x16, (arg1[8]), (arg2[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_addcarryx_u32(x18, (arg1[9]), (arg2[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_addcarryx_u32(x20, (arg1[10]), (arg2[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_addcarryx_u32(x22, (arg1[11]), (arg2[11])); let mut x25: u32 = 0; let mut x26: fiat_p384_scalar_u1 = 0; let (x25, x26) = fiat_p384_scalar_subborrowx_u32(0x0, x1, 0xccc52973); let mut x27: u32 = 0; let mut x28: fiat_p384_scalar_u1 = 0; let (x27, x28) = fiat_p384_scalar_subborrowx_u32(x26, x3, 0xecec196a); let mut x29: u32 = 0; let mut x30: fiat_p384_scalar_u1 = 0; let (x29, x30) = fiat_p384_scalar_subborrowx_u32(x28, x5, 0x48b0a77a); let mut x31: u32 = 0; let mut x32: fiat_p384_scalar_u1 = 0; let (x31, x32) = fiat_p384_scalar_subborrowx_u32(x30, x7, 0x581a0db2); let mut x33: u32 = 0; let mut x34: fiat_p384_scalar_u1 = 0; let (x33, x34) = fiat_p384_scalar_subborrowx_u32(x32, x9, 0xf4372ddf); let mut x35: u32 = 0; let mut x36: fiat_p384_scalar_u1 = 0; let (x35, x36) = fiat_p384_scalar_subborrowx_u32(x34, x11, 0xc7634d81); let mut x37: u32 = 0; let mut x38: fiat_p384_scalar_u1 = 0; let (x37, x38) = fiat_p384_scalar_subborrowx_u32(x36, x13, 0xffffffff); let mut x39: u32 = 0; let mut x40: fiat_p384_scalar_u1 = 0; let (x39, x40) = fiat_p384_scalar_subborrowx_u32(x38, x15, 0xffffffff); let mut x41: u32 = 0; let mut x42: fiat_p384_scalar_u1 = 0; let (x41, x42) = fiat_p384_scalar_subborrowx_u32(x40, x17, 0xffffffff); let mut x43: u32 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_subborrowx_u32(x42, x19, 0xffffffff); let mut x45: u32 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_subborrowx_u32(x44, x21, 0xffffffff); let mut x47: u32 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_subborrowx_u32(x46, x23, 0xffffffff); let mut x49: u32 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_subborrowx_u32(x48, (x24 as u32), (0x0 as u32)); let mut x51: u32 = 0; let (x51) = fiat_p384_scalar_cmovznz_u32(x50, x25, x1); let mut x52: u32 = 0; let (x52) = fiat_p384_scalar_cmovznz_u32(x50, x27, x3); let mut x53: u32 = 0; let (x53) = fiat_p384_scalar_cmovznz_u32(x50, x29, x5); let mut x54: u32 = 0; let (x54) = fiat_p384_scalar_cmovznz_u32(x50, x31, x7); let mut x55: u32 = 0; let (x55) = fiat_p384_scalar_cmovznz_u32(x50, x33, x9); let mut x56: u32 = 0; let (x56) = fiat_p384_scalar_cmovznz_u32(x50, x35, x11); let mut x57: u32 = 0; let (x57) = fiat_p384_scalar_cmovznz_u32(x50, x37, x13); let mut x58: u32 = 0; let (x58) = fiat_p384_scalar_cmovznz_u32(x50, x39, x15); let mut x59: u32 = 0; let (x59) = fiat_p384_scalar_cmovznz_u32(x50, x41, x17); let mut x60: u32 = 0; let (x60) = fiat_p384_scalar_cmovznz_u32(x50, x43, x19); let mut x61: u32 = 0; let (x61) = fiat_p384_scalar_cmovznz_u32(x50, x45, x21); let mut x62: u32 = 0; let (x62) = fiat_p384_scalar_cmovznz_u32(x50, x47, x23); out1[0] = x51; out1[1] = x52; out1[2] = x53; out1[3] = x54; out1[4] = x55; out1[5] = x56; out1[6] = x57; out1[7] = x58; out1[8] = x59; out1[9] = x60; out1[10] = x61; out1[11] = x62; out1 } #[doc = " The function fiat_p384_scalar_sub subtracts two field elements in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_sub( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_subborrowx_u32(0x0, (arg1[0]), (arg2[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_subborrowx_u32(x2, (arg1[1]), (arg2[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_subborrowx_u32(x4, (arg1[2]), (arg2[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_subborrowx_u32(x6, (arg1[3]), (arg2[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_subborrowx_u32(x8, (arg1[4]), (arg2[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_subborrowx_u32(x10, (arg1[5]), (arg2[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_scalar_u1 = 0; let (x13, x14) = fiat_p384_scalar_subborrowx_u32(x12, (arg1[6]), (arg2[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_scalar_u1 = 0; let (x15, x16) = fiat_p384_scalar_subborrowx_u32(x14, (arg1[7]), (arg2[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_scalar_u1 = 0; let (x17, x18) = fiat_p384_scalar_subborrowx_u32(x16, (arg1[8]), (arg2[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_subborrowx_u32(x18, (arg1[9]), (arg2[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_subborrowx_u32(x20, (arg1[10]), (arg2[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_subborrowx_u32(x22, (arg1[11]), (arg2[11])); let mut x25: u32 = 0; let (x25) = fiat_p384_scalar_cmovznz_u32(x24, (0x0 as u32), 0xffffffff); let mut x26: u32 = 0; let mut x27: fiat_p384_scalar_u1 = 0; let (x26, x27) = fiat_p384_scalar_addcarryx_u32(0x0, x1, (x25 & 0xccc52973)); let mut x28: u32 = 0; let mut x29: fiat_p384_scalar_u1 = 0; let (x28, x29) = fiat_p384_scalar_addcarryx_u32(x27, x3, (x25 & 0xecec196a)); let mut x30: u32 = 0; let mut x31: fiat_p384_scalar_u1 = 0; let (x30, x31) = fiat_p384_scalar_addcarryx_u32(x29, x5, (x25 & 0x48b0a77a)); let mut x32: u32 = 0; let mut x33: fiat_p384_scalar_u1 = 0; let (x32, x33) = fiat_p384_scalar_addcarryx_u32(x31, x7, (x25 & 0x581a0db2)); let mut x34: u32 = 0; let mut x35: fiat_p384_scalar_u1 = 0; let (x34, x35) = fiat_p384_scalar_addcarryx_u32(x33, x9, (x25 & 0xf4372ddf)); let mut x36: u32 = 0; let mut x37: fiat_p384_scalar_u1 = 0; let (x36, x37) = fiat_p384_scalar_addcarryx_u32(x35, x11, (x25 & 0xc7634d81)); let mut x38: u32 = 0; let mut x39: fiat_p384_scalar_u1 = 0; let (x38, x39) = fiat_p384_scalar_addcarryx_u32(x37, x13, x25); let mut x40: u32 = 0; let mut x41: fiat_p384_scalar_u1 = 0; let (x40, x41) = fiat_p384_scalar_addcarryx_u32(x39, x15, x25); let mut x42: u32 = 0; let mut x43: fiat_p384_scalar_u1 = 0; let (x42, x43) = fiat_p384_scalar_addcarryx_u32(x41, x17, x25); let mut x44: u32 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u32(x43, x19, x25); let mut x46: u32 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u32(x45, x21, x25); let mut x48: u32 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u32(x47, x23, x25); out1[0] = x26; out1[1] = x28; out1[2] = x30; out1[3] = x32; out1[4] = x34; out1[5] = x36; out1[6] = x38; out1[7] = x40; out1[8] = x42; out1[9] = x44; out1[10] = x46; out1[11] = x48; out1 } #[doc = " The function fiat_p384_scalar_opp negates a field element in the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_opp( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_subborrowx_u32(0x0, (0x0 as u32), (arg1[0])); let mut x3: u32 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_subborrowx_u32(x2, (0x0 as u32), (arg1[1])); let mut x5: u32 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_subborrowx_u32(x4, (0x0 as u32), (arg1[2])); let mut x7: u32 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_subborrowx_u32(x6, (0x0 as u32), (arg1[3])); let mut x9: u32 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_subborrowx_u32(x8, (0x0 as u32), (arg1[4])); let mut x11: u32 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_subborrowx_u32(x10, (0x0 as u32), (arg1[5])); let mut x13: u32 = 0; let mut x14: fiat_p384_scalar_u1 = 0; let (x13, x14) = fiat_p384_scalar_subborrowx_u32(x12, (0x0 as u32), (arg1[6])); let mut x15: u32 = 0; let mut x16: fiat_p384_scalar_u1 = 0; let (x15, x16) = fiat_p384_scalar_subborrowx_u32(x14, (0x0 as u32), (arg1[7])); let mut x17: u32 = 0; let mut x18: fiat_p384_scalar_u1 = 0; let (x17, x18) = fiat_p384_scalar_subborrowx_u32(x16, (0x0 as u32), (arg1[8])); let mut x19: u32 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_subborrowx_u32(x18, (0x0 as u32), (arg1[9])); let mut x21: u32 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_subborrowx_u32(x20, (0x0 as u32), (arg1[10])); let mut x23: u32 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_subborrowx_u32(x22, (0x0 as u32), (arg1[11])); let mut x25: u32 = 0; let (x25) = fiat_p384_scalar_cmovznz_u32(x24, (0x0 as u32), 0xffffffff); let mut x26: u32 = 0; let mut x27: fiat_p384_scalar_u1 = 0; let (x26, x27) = fiat_p384_scalar_addcarryx_u32(0x0, x1, (x25 & 0xccc52973)); let mut x28: u32 = 0; let mut x29: fiat_p384_scalar_u1 = 0; let (x28, x29) = fiat_p384_scalar_addcarryx_u32(x27, x3, (x25 & 0xecec196a)); let mut x30: u32 = 0; let mut x31: fiat_p384_scalar_u1 = 0; let (x30, x31) = fiat_p384_scalar_addcarryx_u32(x29, x5, (x25 & 0x48b0a77a)); let mut x32: u32 = 0; let mut x33: fiat_p384_scalar_u1 = 0; let (x32, x33) = fiat_p384_scalar_addcarryx_u32(x31, x7, (x25 & 0x581a0db2)); let mut x34: u32 = 0; let mut x35: fiat_p384_scalar_u1 = 0; let (x34, x35) = fiat_p384_scalar_addcarryx_u32(x33, x9, (x25 & 0xf4372ddf)); let mut x36: u32 = 0; let mut x37: fiat_p384_scalar_u1 = 0; let (x36, x37) = fiat_p384_scalar_addcarryx_u32(x35, x11, (x25 & 0xc7634d81)); let mut x38: u32 = 0; let mut x39: fiat_p384_scalar_u1 = 0; let (x38, x39) = fiat_p384_scalar_addcarryx_u32(x37, x13, x25); let mut x40: u32 = 0; let mut x41: fiat_p384_scalar_u1 = 0; let (x40, x41) = fiat_p384_scalar_addcarryx_u32(x39, x15, x25); let mut x42: u32 = 0; let mut x43: fiat_p384_scalar_u1 = 0; let (x42, x43) = fiat_p384_scalar_addcarryx_u32(x41, x17, x25); let mut x44: u32 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u32(x43, x19, x25); let mut x46: u32 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u32(x45, x21, x25); let mut x48: u32 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u32(x47, x23, x25); out1[0] = x26; out1[1] = x28; out1[2] = x30; out1[3] = x32; out1[4] = x34; out1[5] = x36; out1[6] = x38; out1[7] = x40; out1[8] = x42; out1[9] = x44; out1[10] = x46; out1[11] = x48; out1 } #[doc = " The function fiat_p384_scalar_from_montgomery translates a field element out of the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = (eval arg1 * ((2^32)⁻¹ mod m)^12) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_from_montgomery( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_non_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_non_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[0]); let mut x2: u32 = 0; let mut x3: u32 = 0; let (x2, x3) = fiat_p384_scalar_mulx_u32(x1, 0xe88fdc45); let mut x4: u32 = 0; let mut x5: u32 = 0; let (x4, x5) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x6: u32 = 0; let mut x7: u32 = 0; let (x6, x7) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x8: u32 = 0; let mut x9: u32 = 0; let (x8, x9) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x10: u32 = 0; let mut x11: u32 = 0; let (x10, x11) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x12: u32 = 0; let mut x13: u32 = 0; let (x12, x13) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x14: u32 = 0; let mut x15: u32 = 0; let (x14, x15) = fiat_p384_scalar_mulx_u32(x2, 0xffffffff); let mut x16: u32 = 0; let mut x17: u32 = 0; let (x16, x17) = fiat_p384_scalar_mulx_u32(x2, 0xc7634d81); let mut x18: u32 = 0; let mut x19: u32 = 0; let (x18, x19) = fiat_p384_scalar_mulx_u32(x2, 0xf4372ddf); let mut x20: u32 = 0; let mut x21: u32 = 0; let (x20, x21) = fiat_p384_scalar_mulx_u32(x2, 0x581a0db2); let mut x22: u32 = 0; let mut x23: u32 = 0; let (x22, x23) = fiat_p384_scalar_mulx_u32(x2, 0x48b0a77a); let mut x24: u32 = 0; let mut x25: u32 = 0; let (x24, x25) = fiat_p384_scalar_mulx_u32(x2, 0xecec196a); let mut x26: u32 = 0; let mut x27: u32 = 0; let (x26, x27) = fiat_p384_scalar_mulx_u32(x2, 0xccc52973); let mut x28: u32 = 0; let mut x29: fiat_p384_scalar_u1 = 0; let (x28, x29) = fiat_p384_scalar_addcarryx_u32(0x0, x27, x24); let mut x30: u32 = 0; let mut x31: fiat_p384_scalar_u1 = 0; let (x30, x31) = fiat_p384_scalar_addcarryx_u32(x29, x25, x22); let mut x32: u32 = 0; let mut x33: fiat_p384_scalar_u1 = 0; let (x32, x33) = fiat_p384_scalar_addcarryx_u32(x31, x23, x20); let mut x34: u32 = 0; let mut x35: fiat_p384_scalar_u1 = 0; let (x34, x35) = fiat_p384_scalar_addcarryx_u32(x33, x21, x18); let mut x36: u32 = 0; let mut x37: fiat_p384_scalar_u1 = 0; let (x36, x37) = fiat_p384_scalar_addcarryx_u32(x35, x19, x16); let mut x38: u32 = 0; let mut x39: fiat_p384_scalar_u1 = 0; let (x38, x39) = fiat_p384_scalar_addcarryx_u32(x37, x17, x14); let mut x40: u32 = 0; let mut x41: fiat_p384_scalar_u1 = 0; let (x40, x41) = fiat_p384_scalar_addcarryx_u32(x39, x15, x12); let mut x42: u32 = 0; let mut x43: fiat_p384_scalar_u1 = 0; let (x42, x43) = fiat_p384_scalar_addcarryx_u32(x41, x13, x10); let mut x44: u32 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u32(x43, x11, x8); let mut x46: u32 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u32(x45, x9, x6); let mut x48: u32 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u32(x47, x7, x4); let mut x50: u32 = 0; let mut x51: fiat_p384_scalar_u1 = 0; let (x50, x51) = fiat_p384_scalar_addcarryx_u32(0x0, x1, x26); let mut x52: u32 = 0; let mut x53: fiat_p384_scalar_u1 = 0; let (x52, x53) = fiat_p384_scalar_addcarryx_u32(x51, (0x0 as u32), x28); let mut x54: u32 = 0; let mut x55: fiat_p384_scalar_u1 = 0; let (x54, x55) = fiat_p384_scalar_addcarryx_u32(x53, (0x0 as u32), x30); let mut x56: u32 = 0; let mut x57: fiat_p384_scalar_u1 = 0; let (x56, x57) = fiat_p384_scalar_addcarryx_u32(x55, (0x0 as u32), x32); let mut x58: u32 = 0; let mut x59: fiat_p384_scalar_u1 = 0; let (x58, x59) = fiat_p384_scalar_addcarryx_u32(x57, (0x0 as u32), x34); let mut x60: u32 = 0; let mut x61: fiat_p384_scalar_u1 = 0; let (x60, x61) = fiat_p384_scalar_addcarryx_u32(x59, (0x0 as u32), x36); let mut x62: u32 = 0; let mut x63: fiat_p384_scalar_u1 = 0; let (x62, x63) = fiat_p384_scalar_addcarryx_u32(x61, (0x0 as u32), x38); let mut x64: u32 = 0; let mut x65: fiat_p384_scalar_u1 = 0; let (x64, x65) = fiat_p384_scalar_addcarryx_u32(x63, (0x0 as u32), x40); let mut x66: u32 = 0; let mut x67: fiat_p384_scalar_u1 = 0; let (x66, x67) = fiat_p384_scalar_addcarryx_u32(x65, (0x0 as u32), x42); let mut x68: u32 = 0; let mut x69: fiat_p384_scalar_u1 = 0; let (x68, x69) = fiat_p384_scalar_addcarryx_u32(x67, (0x0 as u32), x44); let mut x70: u32 = 0; let mut x71: fiat_p384_scalar_u1 = 0; let (x70, x71) = fiat_p384_scalar_addcarryx_u32(x69, (0x0 as u32), x46); let mut x72: u32 = 0; let mut x73: fiat_p384_scalar_u1 = 0; let (x72, x73) = fiat_p384_scalar_addcarryx_u32(x71, (0x0 as u32), x48); let mut x74: u32 = 0; let mut x75: fiat_p384_scalar_u1 = 0; let (x74, x75) = fiat_p384_scalar_addcarryx_u32(x73, (0x0 as u32), ((x49 as u32) + x5)); let mut x76: u32 = 0; let mut x77: fiat_p384_scalar_u1 = 0; let (x76, x77) = fiat_p384_scalar_addcarryx_u32(0x0, x52, (arg1[1])); let mut x78: u32 = 0; let mut x79: fiat_p384_scalar_u1 = 0; let (x78, x79) = fiat_p384_scalar_addcarryx_u32(x77, x54, (0x0 as u32)); let mut x80: u32 = 0; let mut x81: fiat_p384_scalar_u1 = 0; let (x80, x81) = fiat_p384_scalar_addcarryx_u32(x79, x56, (0x0 as u32)); let mut x82: u32 = 0; let mut x83: fiat_p384_scalar_u1 = 0; let (x82, x83) = fiat_p384_scalar_addcarryx_u32(x81, x58, (0x0 as u32)); let mut x84: u32 = 0; let mut x85: fiat_p384_scalar_u1 = 0; let (x84, x85) = fiat_p384_scalar_addcarryx_u32(x83, x60, (0x0 as u32)); let mut x86: u32 = 0; let mut x87: fiat_p384_scalar_u1 = 0; let (x86, x87) = fiat_p384_scalar_addcarryx_u32(x85, x62, (0x0 as u32)); let mut x88: u32 = 0; let mut x89: fiat_p384_scalar_u1 = 0; let (x88, x89) = fiat_p384_scalar_addcarryx_u32(x87, x64, (0x0 as u32)); let mut x90: u32 = 0; let mut x91: fiat_p384_scalar_u1 = 0; let (x90, x91) = fiat_p384_scalar_addcarryx_u32(x89, x66, (0x0 as u32)); let mut x92: u32 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u32(x91, x68, (0x0 as u32)); let mut x94: u32 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u32(x93, x70, (0x0 as u32)); let mut x96: u32 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u32(x95, x72, (0x0 as u32)); let mut x98: u32 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u32(x97, x74, (0x0 as u32)); let mut x100: u32 = 0; let mut x101: u32 = 0; let (x100, x101) = fiat_p384_scalar_mulx_u32(x76, 0xe88fdc45); let mut x102: u32 = 0; let mut x103: u32 = 0; let (x102, x103) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x104: u32 = 0; let mut x105: u32 = 0; let (x104, x105) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x106: u32 = 0; let mut x107: u32 = 0; let (x106, x107) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x108: u32 = 0; let mut x109: u32 = 0; let (x108, x109) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x110: u32 = 0; let mut x111: u32 = 0; let (x110, x111) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x112: u32 = 0; let mut x113: u32 = 0; let (x112, x113) = fiat_p384_scalar_mulx_u32(x100, 0xffffffff); let mut x114: u32 = 0; let mut x115: u32 = 0; let (x114, x115) = fiat_p384_scalar_mulx_u32(x100, 0xc7634d81); let mut x116: u32 = 0; let mut x117: u32 = 0; let (x116, x117) = fiat_p384_scalar_mulx_u32(x100, 0xf4372ddf); let mut x118: u32 = 0; let mut x119: u32 = 0; let (x118, x119) = fiat_p384_scalar_mulx_u32(x100, 0x581a0db2); let mut x120: u32 = 0; let mut x121: u32 = 0; let (x120, x121) = fiat_p384_scalar_mulx_u32(x100, 0x48b0a77a); let mut x122: u32 = 0; let mut x123: u32 = 0; let (x122, x123) = fiat_p384_scalar_mulx_u32(x100, 0xecec196a); let mut x124: u32 = 0; let mut x125: u32 = 0; let (x124, x125) = fiat_p384_scalar_mulx_u32(x100, 0xccc52973); let mut x126: u32 = 0; let mut x127: fiat_p384_scalar_u1 = 0; let (x126, x127) = fiat_p384_scalar_addcarryx_u32(0x0, x125, x122); let mut x128: u32 = 0; let mut x129: fiat_p384_scalar_u1 = 0; let (x128, x129) = fiat_p384_scalar_addcarryx_u32(x127, x123, x120); let mut x130: u32 = 0; let mut x131: fiat_p384_scalar_u1 = 0; let (x130, x131) = fiat_p384_scalar_addcarryx_u32(x129, x121, x118); let mut x132: u32 = 0; let mut x133: fiat_p384_scalar_u1 = 0; let (x132, x133) = fiat_p384_scalar_addcarryx_u32(x131, x119, x116); let mut x134: u32 = 0; let mut x135: fiat_p384_scalar_u1 = 0; let (x134, x135) = fiat_p384_scalar_addcarryx_u32(x133, x117, x114); let mut x136: u32 = 0; let mut x137: fiat_p384_scalar_u1 = 0; let (x136, x137) = fiat_p384_scalar_addcarryx_u32(x135, x115, x112); let mut x138: u32 = 0; let mut x139: fiat_p384_scalar_u1 = 0; let (x138, x139) = fiat_p384_scalar_addcarryx_u32(x137, x113, x110); let mut x140: u32 = 0; let mut x141: fiat_p384_scalar_u1 = 0; let (x140, x141) = fiat_p384_scalar_addcarryx_u32(x139, x111, x108); let mut x142: u32 = 0; let mut x143: fiat_p384_scalar_u1 = 0; let (x142, x143) = fiat_p384_scalar_addcarryx_u32(x141, x109, x106); let mut x144: u32 = 0; let mut x145: fiat_p384_scalar_u1 = 0; let (x144, x145) = fiat_p384_scalar_addcarryx_u32(x143, x107, x104); let mut x146: u32 = 0; let mut x147: fiat_p384_scalar_u1 = 0; let (x146, x147) = fiat_p384_scalar_addcarryx_u32(x145, x105, x102); let mut x148: u32 = 0; let mut x149: fiat_p384_scalar_u1 = 0; let (x148, x149) = fiat_p384_scalar_addcarryx_u32(0x0, x76, x124); let mut x150: u32 = 0; let mut x151: fiat_p384_scalar_u1 = 0; let (x150, x151) = fiat_p384_scalar_addcarryx_u32(x149, x78, x126); let mut x152: u32 = 0; let mut x153: fiat_p384_scalar_u1 = 0; let (x152, x153) = fiat_p384_scalar_addcarryx_u32(x151, x80, x128); let mut x154: u32 = 0; let mut x155: fiat_p384_scalar_u1 = 0; let (x154, x155) = fiat_p384_scalar_addcarryx_u32(x153, x82, x130); let mut x156: u32 = 0; let mut x157: fiat_p384_scalar_u1 = 0; let (x156, x157) = fiat_p384_scalar_addcarryx_u32(x155, x84, x132); let mut x158: u32 = 0; let mut x159: fiat_p384_scalar_u1 = 0; let (x158, x159) = fiat_p384_scalar_addcarryx_u32(x157, x86, x134); let mut x160: u32 = 0; let mut x161: fiat_p384_scalar_u1 = 0; let (x160, x161) = fiat_p384_scalar_addcarryx_u32(x159, x88, x136); let mut x162: u32 = 0; let mut x163: fiat_p384_scalar_u1 = 0; let (x162, x163) = fiat_p384_scalar_addcarryx_u32(x161, x90, x138); let mut x164: u32 = 0; let mut x165: fiat_p384_scalar_u1 = 0; let (x164, x165) = fiat_p384_scalar_addcarryx_u32(x163, x92, x140); let mut x166: u32 = 0; let mut x167: fiat_p384_scalar_u1 = 0; let (x166, x167) = fiat_p384_scalar_addcarryx_u32(x165, x94, x142); let mut x168: u32 = 0; let mut x169: fiat_p384_scalar_u1 = 0; let (x168, x169) = fiat_p384_scalar_addcarryx_u32(x167, x96, x144); let mut x170: u32 = 0; let mut x171: fiat_p384_scalar_u1 = 0; let (x170, x171) = fiat_p384_scalar_addcarryx_u32(x169, x98, x146); let mut x172: u32 = 0; let mut x173: fiat_p384_scalar_u1 = 0; let (x172, x173) = fiat_p384_scalar_addcarryx_u32(x171, ((x99 as u32) + (x75 as u32)), ((x147 as u32) + x103)); let mut x174: u32 = 0; let mut x175: fiat_p384_scalar_u1 = 0; let (x174, x175) = fiat_p384_scalar_addcarryx_u32(0x0, x150, (arg1[2])); let mut x176: u32 = 0; let mut x177: fiat_p384_scalar_u1 = 0; let (x176, x177) = fiat_p384_scalar_addcarryx_u32(x175, x152, (0x0 as u32)); let mut x178: u32 = 0; let mut x179: fiat_p384_scalar_u1 = 0; let (x178, x179) = fiat_p384_scalar_addcarryx_u32(x177, x154, (0x0 as u32)); let mut x180: u32 = 0; let mut x181: fiat_p384_scalar_u1 = 0; let (x180, x181) = fiat_p384_scalar_addcarryx_u32(x179, x156, (0x0 as u32)); let mut x182: u32 = 0; let mut x183: fiat_p384_scalar_u1 = 0; let (x182, x183) = fiat_p384_scalar_addcarryx_u32(x181, x158, (0x0 as u32)); let mut x184: u32 = 0; let mut x185: fiat_p384_scalar_u1 = 0; let (x184, x185) = fiat_p384_scalar_addcarryx_u32(x183, x160, (0x0 as u32)); let mut x186: u32 = 0; let mut x187: fiat_p384_scalar_u1 = 0; let (x186, x187) = fiat_p384_scalar_addcarryx_u32(x185, x162, (0x0 as u32)); let mut x188: u32 = 0; let mut x189: fiat_p384_scalar_u1 = 0; let (x188, x189) = fiat_p384_scalar_addcarryx_u32(x187, x164, (0x0 as u32)); let mut x190: u32 = 0; let mut x191: fiat_p384_scalar_u1 = 0; let (x190, x191) = fiat_p384_scalar_addcarryx_u32(x189, x166, (0x0 as u32)); let mut x192: u32 = 0; let mut x193: fiat_p384_scalar_u1 = 0; let (x192, x193) = fiat_p384_scalar_addcarryx_u32(x191, x168, (0x0 as u32)); let mut x194: u32 = 0; let mut x195: fiat_p384_scalar_u1 = 0; let (x194, x195) = fiat_p384_scalar_addcarryx_u32(x193, x170, (0x0 as u32)); let mut x196: u32 = 0; let mut x197: fiat_p384_scalar_u1 = 0; let (x196, x197) = fiat_p384_scalar_addcarryx_u32(x195, x172, (0x0 as u32)); let mut x198: u32 = 0; let mut x199: u32 = 0; let (x198, x199) = fiat_p384_scalar_mulx_u32(x174, 0xe88fdc45); let mut x200: u32 = 0; let mut x201: u32 = 0; let (x200, x201) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x202: u32 = 0; let mut x203: u32 = 0; let (x202, x203) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x204: u32 = 0; let mut x205: u32 = 0; let (x204, x205) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x206: u32 = 0; let mut x207: u32 = 0; let (x206, x207) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x208: u32 = 0; let mut x209: u32 = 0; let (x208, x209) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x210: u32 = 0; let mut x211: u32 = 0; let (x210, x211) = fiat_p384_scalar_mulx_u32(x198, 0xffffffff); let mut x212: u32 = 0; let mut x213: u32 = 0; let (x212, x213) = fiat_p384_scalar_mulx_u32(x198, 0xc7634d81); let mut x214: u32 = 0; let mut x215: u32 = 0; let (x214, x215) = fiat_p384_scalar_mulx_u32(x198, 0xf4372ddf); let mut x216: u32 = 0; let mut x217: u32 = 0; let (x216, x217) = fiat_p384_scalar_mulx_u32(x198, 0x581a0db2); let mut x218: u32 = 0; let mut x219: u32 = 0; let (x218, x219) = fiat_p384_scalar_mulx_u32(x198, 0x48b0a77a); let mut x220: u32 = 0; let mut x221: u32 = 0; let (x220, x221) = fiat_p384_scalar_mulx_u32(x198, 0xecec196a); let mut x222: u32 = 0; let mut x223: u32 = 0; let (x222, x223) = fiat_p384_scalar_mulx_u32(x198, 0xccc52973); let mut x224: u32 = 0; let mut x225: fiat_p384_scalar_u1 = 0; let (x224, x225) = fiat_p384_scalar_addcarryx_u32(0x0, x223, x220); let mut x226: u32 = 0; let mut x227: fiat_p384_scalar_u1 = 0; let (x226, x227) = fiat_p384_scalar_addcarryx_u32(x225, x221, x218); let mut x228: u32 = 0; let mut x229: fiat_p384_scalar_u1 = 0; let (x228, x229) = fiat_p384_scalar_addcarryx_u32(x227, x219, x216); let mut x230: u32 = 0; let mut x231: fiat_p384_scalar_u1 = 0; let (x230, x231) = fiat_p384_scalar_addcarryx_u32(x229, x217, x214); let mut x232: u32 = 0; let mut x233: fiat_p384_scalar_u1 = 0; let (x232, x233) = fiat_p384_scalar_addcarryx_u32(x231, x215, x212); let mut x234: u32 = 0; let mut x235: fiat_p384_scalar_u1 = 0; let (x234, x235) = fiat_p384_scalar_addcarryx_u32(x233, x213, x210); let mut x236: u32 = 0; let mut x237: fiat_p384_scalar_u1 = 0; let (x236, x237) = fiat_p384_scalar_addcarryx_u32(x235, x211, x208); let mut x238: u32 = 0; let mut x239: fiat_p384_scalar_u1 = 0; let (x238, x239) = fiat_p384_scalar_addcarryx_u32(x237, x209, x206); let mut x240: u32 = 0; let mut x241: fiat_p384_scalar_u1 = 0; let (x240, x241) = fiat_p384_scalar_addcarryx_u32(x239, x207, x204); let mut x242: u32 = 0; let mut x243: fiat_p384_scalar_u1 = 0; let (x242, x243) = fiat_p384_scalar_addcarryx_u32(x241, x205, x202); let mut x244: u32 = 0; let mut x245: fiat_p384_scalar_u1 = 0; let (x244, x245) = fiat_p384_scalar_addcarryx_u32(x243, x203, x200); let mut x246: u32 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u32(0x0, x174, x222); let mut x248: u32 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u32(x247, x176, x224); let mut x250: u32 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u32(x249, x178, x226); let mut x252: u32 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u32(x251, x180, x228); let mut x254: u32 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u32(x253, x182, x230); let mut x256: u32 = 0; let mut x257: fiat_p384_scalar_u1 = 0; let (x256, x257) = fiat_p384_scalar_addcarryx_u32(x255, x184, x232); let mut x258: u32 = 0; let mut x259: fiat_p384_scalar_u1 = 0; let (x258, x259) = fiat_p384_scalar_addcarryx_u32(x257, x186, x234); let mut x260: u32 = 0; let mut x261: fiat_p384_scalar_u1 = 0; let (x260, x261) = fiat_p384_scalar_addcarryx_u32(x259, x188, x236); let mut x262: u32 = 0; let mut x263: fiat_p384_scalar_u1 = 0; let (x262, x263) = fiat_p384_scalar_addcarryx_u32(x261, x190, x238); let mut x264: u32 = 0; let mut x265: fiat_p384_scalar_u1 = 0; let (x264, x265) = fiat_p384_scalar_addcarryx_u32(x263, x192, x240); let mut x266: u32 = 0; let mut x267: fiat_p384_scalar_u1 = 0; let (x266, x267) = fiat_p384_scalar_addcarryx_u32(x265, x194, x242); let mut x268: u32 = 0; let mut x269: fiat_p384_scalar_u1 = 0; let (x268, x269) = fiat_p384_scalar_addcarryx_u32(x267, x196, x244); let mut x270: u32 = 0; let mut x271: fiat_p384_scalar_u1 = 0; let (x270, x271) = fiat_p384_scalar_addcarryx_u32( x269, ((x197 as u32) + (x173 as u32)), ((x245 as u32) + x201), ); let mut x272: u32 = 0; let mut x273: fiat_p384_scalar_u1 = 0; let (x272, x273) = fiat_p384_scalar_addcarryx_u32(0x0, x248, (arg1[3])); let mut x274: u32 = 0; let mut x275: fiat_p384_scalar_u1 = 0; let (x274, x275) = fiat_p384_scalar_addcarryx_u32(x273, x250, (0x0 as u32)); let mut x276: u32 = 0; let mut x277: fiat_p384_scalar_u1 = 0; let (x276, x277) = fiat_p384_scalar_addcarryx_u32(x275, x252, (0x0 as u32)); let mut x278: u32 = 0; let mut x279: fiat_p384_scalar_u1 = 0; let (x278, x279) = fiat_p384_scalar_addcarryx_u32(x277, x254, (0x0 as u32)); let mut x280: u32 = 0; let mut x281: fiat_p384_scalar_u1 = 0; let (x280, x281) = fiat_p384_scalar_addcarryx_u32(x279, x256, (0x0 as u32)); let mut x282: u32 = 0; let mut x283: fiat_p384_scalar_u1 = 0; let (x282, x283) = fiat_p384_scalar_addcarryx_u32(x281, x258, (0x0 as u32)); let mut x284: u32 = 0; let mut x285: fiat_p384_scalar_u1 = 0; let (x284, x285) = fiat_p384_scalar_addcarryx_u32(x283, x260, (0x0 as u32)); let mut x286: u32 = 0; let mut x287: fiat_p384_scalar_u1 = 0; let (x286, x287) = fiat_p384_scalar_addcarryx_u32(x285, x262, (0x0 as u32)); let mut x288: u32 = 0; let mut x289: fiat_p384_scalar_u1 = 0; let (x288, x289) = fiat_p384_scalar_addcarryx_u32(x287, x264, (0x0 as u32)); let mut x290: u32 = 0; let mut x291: fiat_p384_scalar_u1 = 0; let (x290, x291) = fiat_p384_scalar_addcarryx_u32(x289, x266, (0x0 as u32)); let mut x292: u32 = 0; let mut x293: fiat_p384_scalar_u1 = 0; let (x292, x293) = fiat_p384_scalar_addcarryx_u32(x291, x268, (0x0 as u32)); let mut x294: u32 = 0; let mut x295: fiat_p384_scalar_u1 = 0; let (x294, x295) = fiat_p384_scalar_addcarryx_u32(x293, x270, (0x0 as u32)); let mut x296: u32 = 0; let mut x297: u32 = 0; let (x296, x297) = fiat_p384_scalar_mulx_u32(x272, 0xe88fdc45); let mut x298: u32 = 0; let mut x299: u32 = 0; let (x298, x299) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x300: u32 = 0; let mut x301: u32 = 0; let (x300, x301) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x302: u32 = 0; let mut x303: u32 = 0; let (x302, x303) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x304: u32 = 0; let mut x305: u32 = 0; let (x304, x305) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x306: u32 = 0; let mut x307: u32 = 0; let (x306, x307) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x308: u32 = 0; let mut x309: u32 = 0; let (x308, x309) = fiat_p384_scalar_mulx_u32(x296, 0xffffffff); let mut x310: u32 = 0; let mut x311: u32 = 0; let (x310, x311) = fiat_p384_scalar_mulx_u32(x296, 0xc7634d81); let mut x312: u32 = 0; let mut x313: u32 = 0; let (x312, x313) = fiat_p384_scalar_mulx_u32(x296, 0xf4372ddf); let mut x314: u32 = 0; let mut x315: u32 = 0; let (x314, x315) = fiat_p384_scalar_mulx_u32(x296, 0x581a0db2); let mut x316: u32 = 0; let mut x317: u32 = 0; let (x316, x317) = fiat_p384_scalar_mulx_u32(x296, 0x48b0a77a); let mut x318: u32 = 0; let mut x319: u32 = 0; let (x318, x319) = fiat_p384_scalar_mulx_u32(x296, 0xecec196a); let mut x320: u32 = 0; let mut x321: u32 = 0; let (x320, x321) = fiat_p384_scalar_mulx_u32(x296, 0xccc52973); let mut x322: u32 = 0; let mut x323: fiat_p384_scalar_u1 = 0; let (x322, x323) = fiat_p384_scalar_addcarryx_u32(0x0, x321, x318); let mut x324: u32 = 0; let mut x325: fiat_p384_scalar_u1 = 0; let (x324, x325) = fiat_p384_scalar_addcarryx_u32(x323, x319, x316); let mut x326: u32 = 0; let mut x327: fiat_p384_scalar_u1 = 0; let (x326, x327) = fiat_p384_scalar_addcarryx_u32(x325, x317, x314); let mut x328: u32 = 0; let mut x329: fiat_p384_scalar_u1 = 0; let (x328, x329) = fiat_p384_scalar_addcarryx_u32(x327, x315, x312); let mut x330: u32 = 0; let mut x331: fiat_p384_scalar_u1 = 0; let (x330, x331) = fiat_p384_scalar_addcarryx_u32(x329, x313, x310); let mut x332: u32 = 0; let mut x333: fiat_p384_scalar_u1 = 0; let (x332, x333) = fiat_p384_scalar_addcarryx_u32(x331, x311, x308); let mut x334: u32 = 0; let mut x335: fiat_p384_scalar_u1 = 0; let (x334, x335) = fiat_p384_scalar_addcarryx_u32(x333, x309, x306); let mut x336: u32 = 0; let mut x337: fiat_p384_scalar_u1 = 0; let (x336, x337) = fiat_p384_scalar_addcarryx_u32(x335, x307, x304); let mut x338: u32 = 0; let mut x339: fiat_p384_scalar_u1 = 0; let (x338, x339) = fiat_p384_scalar_addcarryx_u32(x337, x305, x302); let mut x340: u32 = 0; let mut x341: fiat_p384_scalar_u1 = 0; let (x340, x341) = fiat_p384_scalar_addcarryx_u32(x339, x303, x300); let mut x342: u32 = 0; let mut x343: fiat_p384_scalar_u1 = 0; let (x342, x343) = fiat_p384_scalar_addcarryx_u32(x341, x301, x298); let mut x344: u32 = 0; let mut x345: fiat_p384_scalar_u1 = 0; let (x344, x345) = fiat_p384_scalar_addcarryx_u32(0x0, x272, x320); let mut x346: u32 = 0; let mut x347: fiat_p384_scalar_u1 = 0; let (x346, x347) = fiat_p384_scalar_addcarryx_u32(x345, x274, x322); let mut x348: u32 = 0; let mut x349: fiat_p384_scalar_u1 = 0; let (x348, x349) = fiat_p384_scalar_addcarryx_u32(x347, x276, x324); let mut x350: u32 = 0; let mut x351: fiat_p384_scalar_u1 = 0; let (x350, x351) = fiat_p384_scalar_addcarryx_u32(x349, x278, x326); let mut x352: u32 = 0; let mut x353: fiat_p384_scalar_u1 = 0; let (x352, x353) = fiat_p384_scalar_addcarryx_u32(x351, x280, x328); let mut x354: u32 = 0; let mut x355: fiat_p384_scalar_u1 = 0; let (x354, x355) = fiat_p384_scalar_addcarryx_u32(x353, x282, x330); let mut x356: u32 = 0; let mut x357: fiat_p384_scalar_u1 = 0; let (x356, x357) = fiat_p384_scalar_addcarryx_u32(x355, x284, x332); let mut x358: u32 = 0; let mut x359: fiat_p384_scalar_u1 = 0; let (x358, x359) = fiat_p384_scalar_addcarryx_u32(x357, x286, x334); let mut x360: u32 = 0; let mut x361: fiat_p384_scalar_u1 = 0; let (x360, x361) = fiat_p384_scalar_addcarryx_u32(x359, x288, x336); let mut x362: u32 = 0; let mut x363: fiat_p384_scalar_u1 = 0; let (x362, x363) = fiat_p384_scalar_addcarryx_u32(x361, x290, x338); let mut x364: u32 = 0; let mut x365: fiat_p384_scalar_u1 = 0; let (x364, x365) = fiat_p384_scalar_addcarryx_u32(x363, x292, x340); let mut x366: u32 = 0; let mut x367: fiat_p384_scalar_u1 = 0; let (x366, x367) = fiat_p384_scalar_addcarryx_u32(x365, x294, x342); let mut x368: u32 = 0; let mut x369: fiat_p384_scalar_u1 = 0; let (x368, x369) = fiat_p384_scalar_addcarryx_u32( x367, ((x295 as u32) + (x271 as u32)), ((x343 as u32) + x299), ); let mut x370: u32 = 0; let mut x371: fiat_p384_scalar_u1 = 0; let (x370, x371) = fiat_p384_scalar_addcarryx_u32(0x0, x346, (arg1[4])); let mut x372: u32 = 0; let mut x373: fiat_p384_scalar_u1 = 0; let (x372, x373) = fiat_p384_scalar_addcarryx_u32(x371, x348, (0x0 as u32)); let mut x374: u32 = 0; let mut x375: fiat_p384_scalar_u1 = 0; let (x374, x375) = fiat_p384_scalar_addcarryx_u32(x373, x350, (0x0 as u32)); let mut x376: u32 = 0; let mut x377: fiat_p384_scalar_u1 = 0; let (x376, x377) = fiat_p384_scalar_addcarryx_u32(x375, x352, (0x0 as u32)); let mut x378: u32 = 0; let mut x379: fiat_p384_scalar_u1 = 0; let (x378, x379) = fiat_p384_scalar_addcarryx_u32(x377, x354, (0x0 as u32)); let mut x380: u32 = 0; let mut x381: fiat_p384_scalar_u1 = 0; let (x380, x381) = fiat_p384_scalar_addcarryx_u32(x379, x356, (0x0 as u32)); let mut x382: u32 = 0; let mut x383: fiat_p384_scalar_u1 = 0; let (x382, x383) = fiat_p384_scalar_addcarryx_u32(x381, x358, (0x0 as u32)); let mut x384: u32 = 0; let mut x385: fiat_p384_scalar_u1 = 0; let (x384, x385) = fiat_p384_scalar_addcarryx_u32(x383, x360, (0x0 as u32)); let mut x386: u32 = 0; let mut x387: fiat_p384_scalar_u1 = 0; let (x386, x387) = fiat_p384_scalar_addcarryx_u32(x385, x362, (0x0 as u32)); let mut x388: u32 = 0; let mut x389: fiat_p384_scalar_u1 = 0; let (x388, x389) = fiat_p384_scalar_addcarryx_u32(x387, x364, (0x0 as u32)); let mut x390: u32 = 0; let mut x391: fiat_p384_scalar_u1 = 0; let (x390, x391) = fiat_p384_scalar_addcarryx_u32(x389, x366, (0x0 as u32)); let mut x392: u32 = 0; let mut x393: fiat_p384_scalar_u1 = 0; let (x392, x393) = fiat_p384_scalar_addcarryx_u32(x391, x368, (0x0 as u32)); let mut x394: u32 = 0; let mut x395: u32 = 0; let (x394, x395) = fiat_p384_scalar_mulx_u32(x370, 0xe88fdc45); let mut x396: u32 = 0; let mut x397: u32 = 0; let (x396, x397) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x398: u32 = 0; let mut x399: u32 = 0; let (x398, x399) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x400: u32 = 0; let mut x401: u32 = 0; let (x400, x401) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x402: u32 = 0; let mut x403: u32 = 0; let (x402, x403) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x404: u32 = 0; let mut x405: u32 = 0; let (x404, x405) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x406: u32 = 0; let mut x407: u32 = 0; let (x406, x407) = fiat_p384_scalar_mulx_u32(x394, 0xffffffff); let mut x408: u32 = 0; let mut x409: u32 = 0; let (x408, x409) = fiat_p384_scalar_mulx_u32(x394, 0xc7634d81); let mut x410: u32 = 0; let mut x411: u32 = 0; let (x410, x411) = fiat_p384_scalar_mulx_u32(x394, 0xf4372ddf); let mut x412: u32 = 0; let mut x413: u32 = 0; let (x412, x413) = fiat_p384_scalar_mulx_u32(x394, 0x581a0db2); let mut x414: u32 = 0; let mut x415: u32 = 0; let (x414, x415) = fiat_p384_scalar_mulx_u32(x394, 0x48b0a77a); let mut x416: u32 = 0; let mut x417: u32 = 0; let (x416, x417) = fiat_p384_scalar_mulx_u32(x394, 0xecec196a); let mut x418: u32 = 0; let mut x419: u32 = 0; let (x418, x419) = fiat_p384_scalar_mulx_u32(x394, 0xccc52973); let mut x420: u32 = 0; let mut x421: fiat_p384_scalar_u1 = 0; let (x420, x421) = fiat_p384_scalar_addcarryx_u32(0x0, x419, x416); let mut x422: u32 = 0; let mut x423: fiat_p384_scalar_u1 = 0; let (x422, x423) = fiat_p384_scalar_addcarryx_u32(x421, x417, x414); let mut x424: u32 = 0; let mut x425: fiat_p384_scalar_u1 = 0; let (x424, x425) = fiat_p384_scalar_addcarryx_u32(x423, x415, x412); let mut x426: u32 = 0; let mut x427: fiat_p384_scalar_u1 = 0; let (x426, x427) = fiat_p384_scalar_addcarryx_u32(x425, x413, x410); let mut x428: u32 = 0; let mut x429: fiat_p384_scalar_u1 = 0; let (x428, x429) = fiat_p384_scalar_addcarryx_u32(x427, x411, x408); let mut x430: u32 = 0; let mut x431: fiat_p384_scalar_u1 = 0; let (x430, x431) = fiat_p384_scalar_addcarryx_u32(x429, x409, x406); let mut x432: u32 = 0; let mut x433: fiat_p384_scalar_u1 = 0; let (x432, x433) = fiat_p384_scalar_addcarryx_u32(x431, x407, x404); let mut x434: u32 = 0; let mut x435: fiat_p384_scalar_u1 = 0; let (x434, x435) = fiat_p384_scalar_addcarryx_u32(x433, x405, x402); let mut x436: u32 = 0; let mut x437: fiat_p384_scalar_u1 = 0; let (x436, x437) = fiat_p384_scalar_addcarryx_u32(x435, x403, x400); let mut x438: u32 = 0; let mut x439: fiat_p384_scalar_u1 = 0; let (x438, x439) = fiat_p384_scalar_addcarryx_u32(x437, x401, x398); let mut x440: u32 = 0; let mut x441: fiat_p384_scalar_u1 = 0; let (x440, x441) = fiat_p384_scalar_addcarryx_u32(x439, x399, x396); let mut x442: u32 = 0; let mut x443: fiat_p384_scalar_u1 = 0; let (x442, x443) = fiat_p384_scalar_addcarryx_u32(0x0, x370, x418); let mut x444: u32 = 0; let mut x445: fiat_p384_scalar_u1 = 0; let (x444, x445) = fiat_p384_scalar_addcarryx_u32(x443, x372, x420); let mut x446: u32 = 0; let mut x447: fiat_p384_scalar_u1 = 0; let (x446, x447) = fiat_p384_scalar_addcarryx_u32(x445, x374, x422); let mut x448: u32 = 0; let mut x449: fiat_p384_scalar_u1 = 0; let (x448, x449) = fiat_p384_scalar_addcarryx_u32(x447, x376, x424); let mut x450: u32 = 0; let mut x451: fiat_p384_scalar_u1 = 0; let (x450, x451) = fiat_p384_scalar_addcarryx_u32(x449, x378, x426); let mut x452: u32 = 0; let mut x453: fiat_p384_scalar_u1 = 0; let (x452, x453) = fiat_p384_scalar_addcarryx_u32(x451, x380, x428); let mut x454: u32 = 0; let mut x455: fiat_p384_scalar_u1 = 0; let (x454, x455) = fiat_p384_scalar_addcarryx_u32(x453, x382, x430); let mut x456: u32 = 0; let mut x457: fiat_p384_scalar_u1 = 0; let (x456, x457) = fiat_p384_scalar_addcarryx_u32(x455, x384, x432); let mut x458: u32 = 0; let mut x459: fiat_p384_scalar_u1 = 0; let (x458, x459) = fiat_p384_scalar_addcarryx_u32(x457, x386, x434); let mut x460: u32 = 0; let mut x461: fiat_p384_scalar_u1 = 0; let (x460, x461) = fiat_p384_scalar_addcarryx_u32(x459, x388, x436); let mut x462: u32 = 0; let mut x463: fiat_p384_scalar_u1 = 0; let (x462, x463) = fiat_p384_scalar_addcarryx_u32(x461, x390, x438); let mut x464: u32 = 0; let mut x465: fiat_p384_scalar_u1 = 0; let (x464, x465) = fiat_p384_scalar_addcarryx_u32(x463, x392, x440); let mut x466: u32 = 0; let mut x467: fiat_p384_scalar_u1 = 0; let (x466, x467) = fiat_p384_scalar_addcarryx_u32( x465, ((x393 as u32) + (x369 as u32)), ((x441 as u32) + x397), ); let mut x468: u32 = 0; let mut x469: fiat_p384_scalar_u1 = 0; let (x468, x469) = fiat_p384_scalar_addcarryx_u32(0x0, x444, (arg1[5])); let mut x470: u32 = 0; let mut x471: fiat_p384_scalar_u1 = 0; let (x470, x471) = fiat_p384_scalar_addcarryx_u32(x469, x446, (0x0 as u32)); let mut x472: u32 = 0; let mut x473: fiat_p384_scalar_u1 = 0; let (x472, x473) = fiat_p384_scalar_addcarryx_u32(x471, x448, (0x0 as u32)); let mut x474: u32 = 0; let mut x475: fiat_p384_scalar_u1 = 0; let (x474, x475) = fiat_p384_scalar_addcarryx_u32(x473, x450, (0x0 as u32)); let mut x476: u32 = 0; let mut x477: fiat_p384_scalar_u1 = 0; let (x476, x477) = fiat_p384_scalar_addcarryx_u32(x475, x452, (0x0 as u32)); let mut x478: u32 = 0; let mut x479: fiat_p384_scalar_u1 = 0; let (x478, x479) = fiat_p384_scalar_addcarryx_u32(x477, x454, (0x0 as u32)); let mut x480: u32 = 0; let mut x481: fiat_p384_scalar_u1 = 0; let (x480, x481) = fiat_p384_scalar_addcarryx_u32(x479, x456, (0x0 as u32)); let mut x482: u32 = 0; let mut x483: fiat_p384_scalar_u1 = 0; let (x482, x483) = fiat_p384_scalar_addcarryx_u32(x481, x458, (0x0 as u32)); let mut x484: u32 = 0; let mut x485: fiat_p384_scalar_u1 = 0; let (x484, x485) = fiat_p384_scalar_addcarryx_u32(x483, x460, (0x0 as u32)); let mut x486: u32 = 0; let mut x487: fiat_p384_scalar_u1 = 0; let (x486, x487) = fiat_p384_scalar_addcarryx_u32(x485, x462, (0x0 as u32)); let mut x488: u32 = 0; let mut x489: fiat_p384_scalar_u1 = 0; let (x488, x489) = fiat_p384_scalar_addcarryx_u32(x487, x464, (0x0 as u32)); let mut x490: u32 = 0; let mut x491: fiat_p384_scalar_u1 = 0; let (x490, x491) = fiat_p384_scalar_addcarryx_u32(x489, x466, (0x0 as u32)); let mut x492: u32 = 0; let mut x493: u32 = 0; let (x492, x493) = fiat_p384_scalar_mulx_u32(x468, 0xe88fdc45); let mut x494: u32 = 0; let mut x495: u32 = 0; let (x494, x495) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x496: u32 = 0; let mut x497: u32 = 0; let (x496, x497) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x498: u32 = 0; let mut x499: u32 = 0; let (x498, x499) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x500: u32 = 0; let mut x501: u32 = 0; let (x500, x501) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x502: u32 = 0; let mut x503: u32 = 0; let (x502, x503) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x504: u32 = 0; let mut x505: u32 = 0; let (x504, x505) = fiat_p384_scalar_mulx_u32(x492, 0xffffffff); let mut x506: u32 = 0; let mut x507: u32 = 0; let (x506, x507) = fiat_p384_scalar_mulx_u32(x492, 0xc7634d81); let mut x508: u32 = 0; let mut x509: u32 = 0; let (x508, x509) = fiat_p384_scalar_mulx_u32(x492, 0xf4372ddf); let mut x510: u32 = 0; let mut x511: u32 = 0; let (x510, x511) = fiat_p384_scalar_mulx_u32(x492, 0x581a0db2); let mut x512: u32 = 0; let mut x513: u32 = 0; let (x512, x513) = fiat_p384_scalar_mulx_u32(x492, 0x48b0a77a); let mut x514: u32 = 0; let mut x515: u32 = 0; let (x514, x515) = fiat_p384_scalar_mulx_u32(x492, 0xecec196a); let mut x516: u32 = 0; let mut x517: u32 = 0; let (x516, x517) = fiat_p384_scalar_mulx_u32(x492, 0xccc52973); let mut x518: u32 = 0; let mut x519: fiat_p384_scalar_u1 = 0; let (x518, x519) = fiat_p384_scalar_addcarryx_u32(0x0, x517, x514); let mut x520: u32 = 0; let mut x521: fiat_p384_scalar_u1 = 0; let (x520, x521) = fiat_p384_scalar_addcarryx_u32(x519, x515, x512); let mut x522: u32 = 0; let mut x523: fiat_p384_scalar_u1 = 0; let (x522, x523) = fiat_p384_scalar_addcarryx_u32(x521, x513, x510); let mut x524: u32 = 0; let mut x525: fiat_p384_scalar_u1 = 0; let (x524, x525) = fiat_p384_scalar_addcarryx_u32(x523, x511, x508); let mut x526: u32 = 0; let mut x527: fiat_p384_scalar_u1 = 0; let (x526, x527) = fiat_p384_scalar_addcarryx_u32(x525, x509, x506); let mut x528: u32 = 0; let mut x529: fiat_p384_scalar_u1 = 0; let (x528, x529) = fiat_p384_scalar_addcarryx_u32(x527, x507, x504); let mut x530: u32 = 0; let mut x531: fiat_p384_scalar_u1 = 0; let (x530, x531) = fiat_p384_scalar_addcarryx_u32(x529, x505, x502); let mut x532: u32 = 0; let mut x533: fiat_p384_scalar_u1 = 0; let (x532, x533) = fiat_p384_scalar_addcarryx_u32(x531, x503, x500); let mut x534: u32 = 0; let mut x535: fiat_p384_scalar_u1 = 0; let (x534, x535) = fiat_p384_scalar_addcarryx_u32(x533, x501, x498); let mut x536: u32 = 0; let mut x537: fiat_p384_scalar_u1 = 0; let (x536, x537) = fiat_p384_scalar_addcarryx_u32(x535, x499, x496); let mut x538: u32 = 0; let mut x539: fiat_p384_scalar_u1 = 0; let (x538, x539) = fiat_p384_scalar_addcarryx_u32(x537, x497, x494); let mut x540: u32 = 0; let mut x541: fiat_p384_scalar_u1 = 0; let (x540, x541) = fiat_p384_scalar_addcarryx_u32(0x0, x468, x516); let mut x542: u32 = 0; let mut x543: fiat_p384_scalar_u1 = 0; let (x542, x543) = fiat_p384_scalar_addcarryx_u32(x541, x470, x518); let mut x544: u32 = 0; let mut x545: fiat_p384_scalar_u1 = 0; let (x544, x545) = fiat_p384_scalar_addcarryx_u32(x543, x472, x520); let mut x546: u32 = 0; let mut x547: fiat_p384_scalar_u1 = 0; let (x546, x547) = fiat_p384_scalar_addcarryx_u32(x545, x474, x522); let mut x548: u32 = 0; let mut x549: fiat_p384_scalar_u1 = 0; let (x548, x549) = fiat_p384_scalar_addcarryx_u32(x547, x476, x524); let mut x550: u32 = 0; let mut x551: fiat_p384_scalar_u1 = 0; let (x550, x551) = fiat_p384_scalar_addcarryx_u32(x549, x478, x526); let mut x552: u32 = 0; let mut x553: fiat_p384_scalar_u1 = 0; let (x552, x553) = fiat_p384_scalar_addcarryx_u32(x551, x480, x528); let mut x554: u32 = 0; let mut x555: fiat_p384_scalar_u1 = 0; let (x554, x555) = fiat_p384_scalar_addcarryx_u32(x553, x482, x530); let mut x556: u32 = 0; let mut x557: fiat_p384_scalar_u1 = 0; let (x556, x557) = fiat_p384_scalar_addcarryx_u32(x555, x484, x532); let mut x558: u32 = 0; let mut x559: fiat_p384_scalar_u1 = 0; let (x558, x559) = fiat_p384_scalar_addcarryx_u32(x557, x486, x534); let mut x560: u32 = 0; let mut x561: fiat_p384_scalar_u1 = 0; let (x560, x561) = fiat_p384_scalar_addcarryx_u32(x559, x488, x536); let mut x562: u32 = 0; let mut x563: fiat_p384_scalar_u1 = 0; let (x562, x563) = fiat_p384_scalar_addcarryx_u32(x561, x490, x538); let mut x564: u32 = 0; let mut x565: fiat_p384_scalar_u1 = 0; let (x564, x565) = fiat_p384_scalar_addcarryx_u32( x563, ((x491 as u32) + (x467 as u32)), ((x539 as u32) + x495), ); let mut x566: u32 = 0; let mut x567: fiat_p384_scalar_u1 = 0; let (x566, x567) = fiat_p384_scalar_addcarryx_u32(0x0, x542, (arg1[6])); let mut x568: u32 = 0; let mut x569: fiat_p384_scalar_u1 = 0; let (x568, x569) = fiat_p384_scalar_addcarryx_u32(x567, x544, (0x0 as u32)); let mut x570: u32 = 0; let mut x571: fiat_p384_scalar_u1 = 0; let (x570, x571) = fiat_p384_scalar_addcarryx_u32(x569, x546, (0x0 as u32)); let mut x572: u32 = 0; let mut x573: fiat_p384_scalar_u1 = 0; let (x572, x573) = fiat_p384_scalar_addcarryx_u32(x571, x548, (0x0 as u32)); let mut x574: u32 = 0; let mut x575: fiat_p384_scalar_u1 = 0; let (x574, x575) = fiat_p384_scalar_addcarryx_u32(x573, x550, (0x0 as u32)); let mut x576: u32 = 0; let mut x577: fiat_p384_scalar_u1 = 0; let (x576, x577) = fiat_p384_scalar_addcarryx_u32(x575, x552, (0x0 as u32)); let mut x578: u32 = 0; let mut x579: fiat_p384_scalar_u1 = 0; let (x578, x579) = fiat_p384_scalar_addcarryx_u32(x577, x554, (0x0 as u32)); let mut x580: u32 = 0; let mut x581: fiat_p384_scalar_u1 = 0; let (x580, x581) = fiat_p384_scalar_addcarryx_u32(x579, x556, (0x0 as u32)); let mut x582: u32 = 0; let mut x583: fiat_p384_scalar_u1 = 0; let (x582, x583) = fiat_p384_scalar_addcarryx_u32(x581, x558, (0x0 as u32)); let mut x584: u32 = 0; let mut x585: fiat_p384_scalar_u1 = 0; let (x584, x585) = fiat_p384_scalar_addcarryx_u32(x583, x560, (0x0 as u32)); let mut x586: u32 = 0; let mut x587: fiat_p384_scalar_u1 = 0; let (x586, x587) = fiat_p384_scalar_addcarryx_u32(x585, x562, (0x0 as u32)); let mut x588: u32 = 0; let mut x589: fiat_p384_scalar_u1 = 0; let (x588, x589) = fiat_p384_scalar_addcarryx_u32(x587, x564, (0x0 as u32)); let mut x590: u32 = 0; let mut x591: u32 = 0; let (x590, x591) = fiat_p384_scalar_mulx_u32(x566, 0xe88fdc45); let mut x592: u32 = 0; let mut x593: u32 = 0; let (x592, x593) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x594: u32 = 0; let mut x595: u32 = 0; let (x594, x595) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x596: u32 = 0; let mut x597: u32 = 0; let (x596, x597) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x598: u32 = 0; let mut x599: u32 = 0; let (x598, x599) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x600: u32 = 0; let mut x601: u32 = 0; let (x600, x601) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x602: u32 = 0; let mut x603: u32 = 0; let (x602, x603) = fiat_p384_scalar_mulx_u32(x590, 0xffffffff); let mut x604: u32 = 0; let mut x605: u32 = 0; let (x604, x605) = fiat_p384_scalar_mulx_u32(x590, 0xc7634d81); let mut x606: u32 = 0; let mut x607: u32 = 0; let (x606, x607) = fiat_p384_scalar_mulx_u32(x590, 0xf4372ddf); let mut x608: u32 = 0; let mut x609: u32 = 0; let (x608, x609) = fiat_p384_scalar_mulx_u32(x590, 0x581a0db2); let mut x610: u32 = 0; let mut x611: u32 = 0; let (x610, x611) = fiat_p384_scalar_mulx_u32(x590, 0x48b0a77a); let mut x612: u32 = 0; let mut x613: u32 = 0; let (x612, x613) = fiat_p384_scalar_mulx_u32(x590, 0xecec196a); let mut x614: u32 = 0; let mut x615: u32 = 0; let (x614, x615) = fiat_p384_scalar_mulx_u32(x590, 0xccc52973); let mut x616: u32 = 0; let mut x617: fiat_p384_scalar_u1 = 0; let (x616, x617) = fiat_p384_scalar_addcarryx_u32(0x0, x615, x612); let mut x618: u32 = 0; let mut x619: fiat_p384_scalar_u1 = 0; let (x618, x619) = fiat_p384_scalar_addcarryx_u32(x617, x613, x610); let mut x620: u32 = 0; let mut x621: fiat_p384_scalar_u1 = 0; let (x620, x621) = fiat_p384_scalar_addcarryx_u32(x619, x611, x608); let mut x622: u32 = 0; let mut x623: fiat_p384_scalar_u1 = 0; let (x622, x623) = fiat_p384_scalar_addcarryx_u32(x621, x609, x606); let mut x624: u32 = 0; let mut x625: fiat_p384_scalar_u1 = 0; let (x624, x625) = fiat_p384_scalar_addcarryx_u32(x623, x607, x604); let mut x626: u32 = 0; let mut x627: fiat_p384_scalar_u1 = 0; let (x626, x627) = fiat_p384_scalar_addcarryx_u32(x625, x605, x602); let mut x628: u32 = 0; let mut x629: fiat_p384_scalar_u1 = 0; let (x628, x629) = fiat_p384_scalar_addcarryx_u32(x627, x603, x600); let mut x630: u32 = 0; let mut x631: fiat_p384_scalar_u1 = 0; let (x630, x631) = fiat_p384_scalar_addcarryx_u32(x629, x601, x598); let mut x632: u32 = 0; let mut x633: fiat_p384_scalar_u1 = 0; let (x632, x633) = fiat_p384_scalar_addcarryx_u32(x631, x599, x596); let mut x634: u32 = 0; let mut x635: fiat_p384_scalar_u1 = 0; let (x634, x635) = fiat_p384_scalar_addcarryx_u32(x633, x597, x594); let mut x636: u32 = 0; let mut x637: fiat_p384_scalar_u1 = 0; let (x636, x637) = fiat_p384_scalar_addcarryx_u32(x635, x595, x592); let mut x638: u32 = 0; let mut x639: fiat_p384_scalar_u1 = 0; let (x638, x639) = fiat_p384_scalar_addcarryx_u32(0x0, x566, x614); let mut x640: u32 = 0; let mut x641: fiat_p384_scalar_u1 = 0; let (x640, x641) = fiat_p384_scalar_addcarryx_u32(x639, x568, x616); let mut x642: u32 = 0; let mut x643: fiat_p384_scalar_u1 = 0; let (x642, x643) = fiat_p384_scalar_addcarryx_u32(x641, x570, x618); let mut x644: u32 = 0; let mut x645: fiat_p384_scalar_u1 = 0; let (x644, x645) = fiat_p384_scalar_addcarryx_u32(x643, x572, x620); let mut x646: u32 = 0; let mut x647: fiat_p384_scalar_u1 = 0; let (x646, x647) = fiat_p384_scalar_addcarryx_u32(x645, x574, x622); let mut x648: u32 = 0; let mut x649: fiat_p384_scalar_u1 = 0; let (x648, x649) = fiat_p384_scalar_addcarryx_u32(x647, x576, x624); let mut x650: u32 = 0; let mut x651: fiat_p384_scalar_u1 = 0; let (x650, x651) = fiat_p384_scalar_addcarryx_u32(x649, x578, x626); let mut x652: u32 = 0; let mut x653: fiat_p384_scalar_u1 = 0; let (x652, x653) = fiat_p384_scalar_addcarryx_u32(x651, x580, x628); let mut x654: u32 = 0; let mut x655: fiat_p384_scalar_u1 = 0; let (x654, x655) = fiat_p384_scalar_addcarryx_u32(x653, x582, x630); let mut x656: u32 = 0; let mut x657: fiat_p384_scalar_u1 = 0; let (x656, x657) = fiat_p384_scalar_addcarryx_u32(x655, x584, x632); let mut x658: u32 = 0; let mut x659: fiat_p384_scalar_u1 = 0; let (x658, x659) = fiat_p384_scalar_addcarryx_u32(x657, x586, x634); let mut x660: u32 = 0; let mut x661: fiat_p384_scalar_u1 = 0; let (x660, x661) = fiat_p384_scalar_addcarryx_u32(x659, x588, x636); let mut x662: u32 = 0; let mut x663: fiat_p384_scalar_u1 = 0; let (x662, x663) = fiat_p384_scalar_addcarryx_u32( x661, ((x589 as u32) + (x565 as u32)), ((x637 as u32) + x593), ); let mut x664: u32 = 0; let mut x665: fiat_p384_scalar_u1 = 0; let (x664, x665) = fiat_p384_scalar_addcarryx_u32(0x0, x640, (arg1[7])); let mut x666: u32 = 0; let mut x667: fiat_p384_scalar_u1 = 0; let (x666, x667) = fiat_p384_scalar_addcarryx_u32(x665, x642, (0x0 as u32)); let mut x668: u32 = 0; let mut x669: fiat_p384_scalar_u1 = 0; let (x668, x669) = fiat_p384_scalar_addcarryx_u32(x667, x644, (0x0 as u32)); let mut x670: u32 = 0; let mut x671: fiat_p384_scalar_u1 = 0; let (x670, x671) = fiat_p384_scalar_addcarryx_u32(x669, x646, (0x0 as u32)); let mut x672: u32 = 0; let mut x673: fiat_p384_scalar_u1 = 0; let (x672, x673) = fiat_p384_scalar_addcarryx_u32(x671, x648, (0x0 as u32)); let mut x674: u32 = 0; let mut x675: fiat_p384_scalar_u1 = 0; let (x674, x675) = fiat_p384_scalar_addcarryx_u32(x673, x650, (0x0 as u32)); let mut x676: u32 = 0; let mut x677: fiat_p384_scalar_u1 = 0; let (x676, x677) = fiat_p384_scalar_addcarryx_u32(x675, x652, (0x0 as u32)); let mut x678: u32 = 0; let mut x679: fiat_p384_scalar_u1 = 0; let (x678, x679) = fiat_p384_scalar_addcarryx_u32(x677, x654, (0x0 as u32)); let mut x680: u32 = 0; let mut x681: fiat_p384_scalar_u1 = 0; let (x680, x681) = fiat_p384_scalar_addcarryx_u32(x679, x656, (0x0 as u32)); let mut x682: u32 = 0; let mut x683: fiat_p384_scalar_u1 = 0; let (x682, x683) = fiat_p384_scalar_addcarryx_u32(x681, x658, (0x0 as u32)); let mut x684: u32 = 0; let mut x685: fiat_p384_scalar_u1 = 0; let (x684, x685) = fiat_p384_scalar_addcarryx_u32(x683, x660, (0x0 as u32)); let mut x686: u32 = 0; let mut x687: fiat_p384_scalar_u1 = 0; let (x686, x687) = fiat_p384_scalar_addcarryx_u32(x685, x662, (0x0 as u32)); let mut x688: u32 = 0; let mut x689: u32 = 0; let (x688, x689) = fiat_p384_scalar_mulx_u32(x664, 0xe88fdc45); let mut x690: u32 = 0; let mut x691: u32 = 0; let (x690, x691) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x692: u32 = 0; let mut x693: u32 = 0; let (x692, x693) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x694: u32 = 0; let mut x695: u32 = 0; let (x694, x695) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x696: u32 = 0; let mut x697: u32 = 0; let (x696, x697) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x698: u32 = 0; let mut x699: u32 = 0; let (x698, x699) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x700: u32 = 0; let mut x701: u32 = 0; let (x700, x701) = fiat_p384_scalar_mulx_u32(x688, 0xffffffff); let mut x702: u32 = 0; let mut x703: u32 = 0; let (x702, x703) = fiat_p384_scalar_mulx_u32(x688, 0xc7634d81); let mut x704: u32 = 0; let mut x705: u32 = 0; let (x704, x705) = fiat_p384_scalar_mulx_u32(x688, 0xf4372ddf); let mut x706: u32 = 0; let mut x707: u32 = 0; let (x706, x707) = fiat_p384_scalar_mulx_u32(x688, 0x581a0db2); let mut x708: u32 = 0; let mut x709: u32 = 0; let (x708, x709) = fiat_p384_scalar_mulx_u32(x688, 0x48b0a77a); let mut x710: u32 = 0; let mut x711: u32 = 0; let (x710, x711) = fiat_p384_scalar_mulx_u32(x688, 0xecec196a); let mut x712: u32 = 0; let mut x713: u32 = 0; let (x712, x713) = fiat_p384_scalar_mulx_u32(x688, 0xccc52973); let mut x714: u32 = 0; let mut x715: fiat_p384_scalar_u1 = 0; let (x714, x715) = fiat_p384_scalar_addcarryx_u32(0x0, x713, x710); let mut x716: u32 = 0; let mut x717: fiat_p384_scalar_u1 = 0; let (x716, x717) = fiat_p384_scalar_addcarryx_u32(x715, x711, x708); let mut x718: u32 = 0; let mut x719: fiat_p384_scalar_u1 = 0; let (x718, x719) = fiat_p384_scalar_addcarryx_u32(x717, x709, x706); let mut x720: u32 = 0; let mut x721: fiat_p384_scalar_u1 = 0; let (x720, x721) = fiat_p384_scalar_addcarryx_u32(x719, x707, x704); let mut x722: u32 = 0; let mut x723: fiat_p384_scalar_u1 = 0; let (x722, x723) = fiat_p384_scalar_addcarryx_u32(x721, x705, x702); let mut x724: u32 = 0; let mut x725: fiat_p384_scalar_u1 = 0; let (x724, x725) = fiat_p384_scalar_addcarryx_u32(x723, x703, x700); let mut x726: u32 = 0; let mut x727: fiat_p384_scalar_u1 = 0; let (x726, x727) = fiat_p384_scalar_addcarryx_u32(x725, x701, x698); let mut x728: u32 = 0; let mut x729: fiat_p384_scalar_u1 = 0; let (x728, x729) = fiat_p384_scalar_addcarryx_u32(x727, x699, x696); let mut x730: u32 = 0; let mut x731: fiat_p384_scalar_u1 = 0; let (x730, x731) = fiat_p384_scalar_addcarryx_u32(x729, x697, x694); let mut x732: u32 = 0; let mut x733: fiat_p384_scalar_u1 = 0; let (x732, x733) = fiat_p384_scalar_addcarryx_u32(x731, x695, x692); let mut x734: u32 = 0; let mut x735: fiat_p384_scalar_u1 = 0; let (x734, x735) = fiat_p384_scalar_addcarryx_u32(x733, x693, x690); let mut x736: u32 = 0; let mut x737: fiat_p384_scalar_u1 = 0; let (x736, x737) = fiat_p384_scalar_addcarryx_u32(0x0, x664, x712); let mut x738: u32 = 0; let mut x739: fiat_p384_scalar_u1 = 0; let (x738, x739) = fiat_p384_scalar_addcarryx_u32(x737, x666, x714); let mut x740: u32 = 0; let mut x741: fiat_p384_scalar_u1 = 0; let (x740, x741) = fiat_p384_scalar_addcarryx_u32(x739, x668, x716); let mut x742: u32 = 0; let mut x743: fiat_p384_scalar_u1 = 0; let (x742, x743) = fiat_p384_scalar_addcarryx_u32(x741, x670, x718); let mut x744: u32 = 0; let mut x745: fiat_p384_scalar_u1 = 0; let (x744, x745) = fiat_p384_scalar_addcarryx_u32(x743, x672, x720); let mut x746: u32 = 0; let mut x747: fiat_p384_scalar_u1 = 0; let (x746, x747) = fiat_p384_scalar_addcarryx_u32(x745, x674, x722); let mut x748: u32 = 0; let mut x749: fiat_p384_scalar_u1 = 0; let (x748, x749) = fiat_p384_scalar_addcarryx_u32(x747, x676, x724); let mut x750: u32 = 0; let mut x751: fiat_p384_scalar_u1 = 0; let (x750, x751) = fiat_p384_scalar_addcarryx_u32(x749, x678, x726); let mut x752: u32 = 0; let mut x753: fiat_p384_scalar_u1 = 0; let (x752, x753) = fiat_p384_scalar_addcarryx_u32(x751, x680, x728); let mut x754: u32 = 0; let mut x755: fiat_p384_scalar_u1 = 0; let (x754, x755) = fiat_p384_scalar_addcarryx_u32(x753, x682, x730); let mut x756: u32 = 0; let mut x757: fiat_p384_scalar_u1 = 0; let (x756, x757) = fiat_p384_scalar_addcarryx_u32(x755, x684, x732); let mut x758: u32 = 0; let mut x759: fiat_p384_scalar_u1 = 0; let (x758, x759) = fiat_p384_scalar_addcarryx_u32(x757, x686, x734); let mut x760: u32 = 0; let mut x761: fiat_p384_scalar_u1 = 0; let (x760, x761) = fiat_p384_scalar_addcarryx_u32( x759, ((x687 as u32) + (x663 as u32)), ((x735 as u32) + x691), ); let mut x762: u32 = 0; let mut x763: fiat_p384_scalar_u1 = 0; let (x762, x763) = fiat_p384_scalar_addcarryx_u32(0x0, x738, (arg1[8])); let mut x764: u32 = 0; let mut x765: fiat_p384_scalar_u1 = 0; let (x764, x765) = fiat_p384_scalar_addcarryx_u32(x763, x740, (0x0 as u32)); let mut x766: u32 = 0; let mut x767: fiat_p384_scalar_u1 = 0; let (x766, x767) = fiat_p384_scalar_addcarryx_u32(x765, x742, (0x0 as u32)); let mut x768: u32 = 0; let mut x769: fiat_p384_scalar_u1 = 0; let (x768, x769) = fiat_p384_scalar_addcarryx_u32(x767, x744, (0x0 as u32)); let mut x770: u32 = 0; let mut x771: fiat_p384_scalar_u1 = 0; let (x770, x771) = fiat_p384_scalar_addcarryx_u32(x769, x746, (0x0 as u32)); let mut x772: u32 = 0; let mut x773: fiat_p384_scalar_u1 = 0; let (x772, x773) = fiat_p384_scalar_addcarryx_u32(x771, x748, (0x0 as u32)); let mut x774: u32 = 0; let mut x775: fiat_p384_scalar_u1 = 0; let (x774, x775) = fiat_p384_scalar_addcarryx_u32(x773, x750, (0x0 as u32)); let mut x776: u32 = 0; let mut x777: fiat_p384_scalar_u1 = 0; let (x776, x777) = fiat_p384_scalar_addcarryx_u32(x775, x752, (0x0 as u32)); let mut x778: u32 = 0; let mut x779: fiat_p384_scalar_u1 = 0; let (x778, x779) = fiat_p384_scalar_addcarryx_u32(x777, x754, (0x0 as u32)); let mut x780: u32 = 0; let mut x781: fiat_p384_scalar_u1 = 0; let (x780, x781) = fiat_p384_scalar_addcarryx_u32(x779, x756, (0x0 as u32)); let mut x782: u32 = 0; let mut x783: fiat_p384_scalar_u1 = 0; let (x782, x783) = fiat_p384_scalar_addcarryx_u32(x781, x758, (0x0 as u32)); let mut x784: u32 = 0; let mut x785: fiat_p384_scalar_u1 = 0; let (x784, x785) = fiat_p384_scalar_addcarryx_u32(x783, x760, (0x0 as u32)); let mut x786: u32 = 0; let mut x787: u32 = 0; let (x786, x787) = fiat_p384_scalar_mulx_u32(x762, 0xe88fdc45); let mut x788: u32 = 0; let mut x789: u32 = 0; let (x788, x789) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x790: u32 = 0; let mut x791: u32 = 0; let (x790, x791) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x792: u32 = 0; let mut x793: u32 = 0; let (x792, x793) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x794: u32 = 0; let mut x795: u32 = 0; let (x794, x795) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x796: u32 = 0; let mut x797: u32 = 0; let (x796, x797) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x798: u32 = 0; let mut x799: u32 = 0; let (x798, x799) = fiat_p384_scalar_mulx_u32(x786, 0xffffffff); let mut x800: u32 = 0; let mut x801: u32 = 0; let (x800, x801) = fiat_p384_scalar_mulx_u32(x786, 0xc7634d81); let mut x802: u32 = 0; let mut x803: u32 = 0; let (x802, x803) = fiat_p384_scalar_mulx_u32(x786, 0xf4372ddf); let mut x804: u32 = 0; let mut x805: u32 = 0; let (x804, x805) = fiat_p384_scalar_mulx_u32(x786, 0x581a0db2); let mut x806: u32 = 0; let mut x807: u32 = 0; let (x806, x807) = fiat_p384_scalar_mulx_u32(x786, 0x48b0a77a); let mut x808: u32 = 0; let mut x809: u32 = 0; let (x808, x809) = fiat_p384_scalar_mulx_u32(x786, 0xecec196a); let mut x810: u32 = 0; let mut x811: u32 = 0; let (x810, x811) = fiat_p384_scalar_mulx_u32(x786, 0xccc52973); let mut x812: u32 = 0; let mut x813: fiat_p384_scalar_u1 = 0; let (x812, x813) = fiat_p384_scalar_addcarryx_u32(0x0, x811, x808); let mut x814: u32 = 0; let mut x815: fiat_p384_scalar_u1 = 0; let (x814, x815) = fiat_p384_scalar_addcarryx_u32(x813, x809, x806); let mut x816: u32 = 0; let mut x817: fiat_p384_scalar_u1 = 0; let (x816, x817) = fiat_p384_scalar_addcarryx_u32(x815, x807, x804); let mut x818: u32 = 0; let mut x819: fiat_p384_scalar_u1 = 0; let (x818, x819) = fiat_p384_scalar_addcarryx_u32(x817, x805, x802); let mut x820: u32 = 0; let mut x821: fiat_p384_scalar_u1 = 0; let (x820, x821) = fiat_p384_scalar_addcarryx_u32(x819, x803, x800); let mut x822: u32 = 0; let mut x823: fiat_p384_scalar_u1 = 0; let (x822, x823) = fiat_p384_scalar_addcarryx_u32(x821, x801, x798); let mut x824: u32 = 0; let mut x825: fiat_p384_scalar_u1 = 0; let (x824, x825) = fiat_p384_scalar_addcarryx_u32(x823, x799, x796); let mut x826: u32 = 0; let mut x827: fiat_p384_scalar_u1 = 0; let (x826, x827) = fiat_p384_scalar_addcarryx_u32(x825, x797, x794); let mut x828: u32 = 0; let mut x829: fiat_p384_scalar_u1 = 0; let (x828, x829) = fiat_p384_scalar_addcarryx_u32(x827, x795, x792); let mut x830: u32 = 0; let mut x831: fiat_p384_scalar_u1 = 0; let (x830, x831) = fiat_p384_scalar_addcarryx_u32(x829, x793, x790); let mut x832: u32 = 0; let mut x833: fiat_p384_scalar_u1 = 0; let (x832, x833) = fiat_p384_scalar_addcarryx_u32(x831, x791, x788); let mut x834: u32 = 0; let mut x835: fiat_p384_scalar_u1 = 0; let (x834, x835) = fiat_p384_scalar_addcarryx_u32(0x0, x762, x810); let mut x836: u32 = 0; let mut x837: fiat_p384_scalar_u1 = 0; let (x836, x837) = fiat_p384_scalar_addcarryx_u32(x835, x764, x812); let mut x838: u32 = 0; let mut x839: fiat_p384_scalar_u1 = 0; let (x838, x839) = fiat_p384_scalar_addcarryx_u32(x837, x766, x814); let mut x840: u32 = 0; let mut x841: fiat_p384_scalar_u1 = 0; let (x840, x841) = fiat_p384_scalar_addcarryx_u32(x839, x768, x816); let mut x842: u32 = 0; let mut x843: fiat_p384_scalar_u1 = 0; let (x842, x843) = fiat_p384_scalar_addcarryx_u32(x841, x770, x818); let mut x844: u32 = 0; let mut x845: fiat_p384_scalar_u1 = 0; let (x844, x845) = fiat_p384_scalar_addcarryx_u32(x843, x772, x820); let mut x846: u32 = 0; let mut x847: fiat_p384_scalar_u1 = 0; let (x846, x847) = fiat_p384_scalar_addcarryx_u32(x845, x774, x822); let mut x848: u32 = 0; let mut x849: fiat_p384_scalar_u1 = 0; let (x848, x849) = fiat_p384_scalar_addcarryx_u32(x847, x776, x824); let mut x850: u32 = 0; let mut x851: fiat_p384_scalar_u1 = 0; let (x850, x851) = fiat_p384_scalar_addcarryx_u32(x849, x778, x826); let mut x852: u32 = 0; let mut x853: fiat_p384_scalar_u1 = 0; let (x852, x853) = fiat_p384_scalar_addcarryx_u32(x851, x780, x828); let mut x854: u32 = 0; let mut x855: fiat_p384_scalar_u1 = 0; let (x854, x855) = fiat_p384_scalar_addcarryx_u32(x853, x782, x830); let mut x856: u32 = 0; let mut x857: fiat_p384_scalar_u1 = 0; let (x856, x857) = fiat_p384_scalar_addcarryx_u32(x855, x784, x832); let mut x858: u32 = 0; let mut x859: fiat_p384_scalar_u1 = 0; let (x858, x859) = fiat_p384_scalar_addcarryx_u32( x857, ((x785 as u32) + (x761 as u32)), ((x833 as u32) + x789), ); let mut x860: u32 = 0; let mut x861: fiat_p384_scalar_u1 = 0; let (x860, x861) = fiat_p384_scalar_addcarryx_u32(0x0, x836, (arg1[9])); let mut x862: u32 = 0; let mut x863: fiat_p384_scalar_u1 = 0; let (x862, x863) = fiat_p384_scalar_addcarryx_u32(x861, x838, (0x0 as u32)); let mut x864: u32 = 0; let mut x865: fiat_p384_scalar_u1 = 0; let (x864, x865) = fiat_p384_scalar_addcarryx_u32(x863, x840, (0x0 as u32)); let mut x866: u32 = 0; let mut x867: fiat_p384_scalar_u1 = 0; let (x866, x867) = fiat_p384_scalar_addcarryx_u32(x865, x842, (0x0 as u32)); let mut x868: u32 = 0; let mut x869: fiat_p384_scalar_u1 = 0; let (x868, x869) = fiat_p384_scalar_addcarryx_u32(x867, x844, (0x0 as u32)); let mut x870: u32 = 0; let mut x871: fiat_p384_scalar_u1 = 0; let (x870, x871) = fiat_p384_scalar_addcarryx_u32(x869, x846, (0x0 as u32)); let mut x872: u32 = 0; let mut x873: fiat_p384_scalar_u1 = 0; let (x872, x873) = fiat_p384_scalar_addcarryx_u32(x871, x848, (0x0 as u32)); let mut x874: u32 = 0; let mut x875: fiat_p384_scalar_u1 = 0; let (x874, x875) = fiat_p384_scalar_addcarryx_u32(x873, x850, (0x0 as u32)); let mut x876: u32 = 0; let mut x877: fiat_p384_scalar_u1 = 0; let (x876, x877) = fiat_p384_scalar_addcarryx_u32(x875, x852, (0x0 as u32)); let mut x878: u32 = 0; let mut x879: fiat_p384_scalar_u1 = 0; let (x878, x879) = fiat_p384_scalar_addcarryx_u32(x877, x854, (0x0 as u32)); let mut x880: u32 = 0; let mut x881: fiat_p384_scalar_u1 = 0; let (x880, x881) = fiat_p384_scalar_addcarryx_u32(x879, x856, (0x0 as u32)); let mut x882: u32 = 0; let mut x883: fiat_p384_scalar_u1 = 0; let (x882, x883) = fiat_p384_scalar_addcarryx_u32(x881, x858, (0x0 as u32)); let mut x884: u32 = 0; let mut x885: u32 = 0; let (x884, x885) = fiat_p384_scalar_mulx_u32(x860, 0xe88fdc45); let mut x886: u32 = 0; let mut x887: u32 = 0; let (x886, x887) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x888: u32 = 0; let mut x889: u32 = 0; let (x888, x889) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x890: u32 = 0; let mut x891: u32 = 0; let (x890, x891) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x892: u32 = 0; let mut x893: u32 = 0; let (x892, x893) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x894: u32 = 0; let mut x895: u32 = 0; let (x894, x895) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x896: u32 = 0; let mut x897: u32 = 0; let (x896, x897) = fiat_p384_scalar_mulx_u32(x884, 0xffffffff); let mut x898: u32 = 0; let mut x899: u32 = 0; let (x898, x899) = fiat_p384_scalar_mulx_u32(x884, 0xc7634d81); let mut x900: u32 = 0; let mut x901: u32 = 0; let (x900, x901) = fiat_p384_scalar_mulx_u32(x884, 0xf4372ddf); let mut x902: u32 = 0; let mut x903: u32 = 0; let (x902, x903) = fiat_p384_scalar_mulx_u32(x884, 0x581a0db2); let mut x904: u32 = 0; let mut x905: u32 = 0; let (x904, x905) = fiat_p384_scalar_mulx_u32(x884, 0x48b0a77a); let mut x906: u32 = 0; let mut x907: u32 = 0; let (x906, x907) = fiat_p384_scalar_mulx_u32(x884, 0xecec196a); let mut x908: u32 = 0; let mut x909: u32 = 0; let (x908, x909) = fiat_p384_scalar_mulx_u32(x884, 0xccc52973); let mut x910: u32 = 0; let mut x911: fiat_p384_scalar_u1 = 0; let (x910, x911) = fiat_p384_scalar_addcarryx_u32(0x0, x909, x906); let mut x912: u32 = 0; let mut x913: fiat_p384_scalar_u1 = 0; let (x912, x913) = fiat_p384_scalar_addcarryx_u32(x911, x907, x904); let mut x914: u32 = 0; let mut x915: fiat_p384_scalar_u1 = 0; let (x914, x915) = fiat_p384_scalar_addcarryx_u32(x913, x905, x902); let mut x916: u32 = 0; let mut x917: fiat_p384_scalar_u1 = 0; let (x916, x917) = fiat_p384_scalar_addcarryx_u32(x915, x903, x900); let mut x918: u32 = 0; let mut x919: fiat_p384_scalar_u1 = 0; let (x918, x919) = fiat_p384_scalar_addcarryx_u32(x917, x901, x898); let mut x920: u32 = 0; let mut x921: fiat_p384_scalar_u1 = 0; let (x920, x921) = fiat_p384_scalar_addcarryx_u32(x919, x899, x896); let mut x922: u32 = 0; let mut x923: fiat_p384_scalar_u1 = 0; let (x922, x923) = fiat_p384_scalar_addcarryx_u32(x921, x897, x894); let mut x924: u32 = 0; let mut x925: fiat_p384_scalar_u1 = 0; let (x924, x925) = fiat_p384_scalar_addcarryx_u32(x923, x895, x892); let mut x926: u32 = 0; let mut x927: fiat_p384_scalar_u1 = 0; let (x926, x927) = fiat_p384_scalar_addcarryx_u32(x925, x893, x890); let mut x928: u32 = 0; let mut x929: fiat_p384_scalar_u1 = 0; let (x928, x929) = fiat_p384_scalar_addcarryx_u32(x927, x891, x888); let mut x930: u32 = 0; let mut x931: fiat_p384_scalar_u1 = 0; let (x930, x931) = fiat_p384_scalar_addcarryx_u32(x929, x889, x886); let mut x932: u32 = 0; let mut x933: fiat_p384_scalar_u1 = 0; let (x932, x933) = fiat_p384_scalar_addcarryx_u32(0x0, x860, x908); let mut x934: u32 = 0; let mut x935: fiat_p384_scalar_u1 = 0; let (x934, x935) = fiat_p384_scalar_addcarryx_u32(x933, x862, x910); let mut x936: u32 = 0; let mut x937: fiat_p384_scalar_u1 = 0; let (x936, x937) = fiat_p384_scalar_addcarryx_u32(x935, x864, x912); let mut x938: u32 = 0; let mut x939: fiat_p384_scalar_u1 = 0; let (x938, x939) = fiat_p384_scalar_addcarryx_u32(x937, x866, x914); let mut x940: u32 = 0; let mut x941: fiat_p384_scalar_u1 = 0; let (x940, x941) = fiat_p384_scalar_addcarryx_u32(x939, x868, x916); let mut x942: u32 = 0; let mut x943: fiat_p384_scalar_u1 = 0; let (x942, x943) = fiat_p384_scalar_addcarryx_u32(x941, x870, x918); let mut x944: u32 = 0; let mut x945: fiat_p384_scalar_u1 = 0; let (x944, x945) = fiat_p384_scalar_addcarryx_u32(x943, x872, x920); let mut x946: u32 = 0; let mut x947: fiat_p384_scalar_u1 = 0; let (x946, x947) = fiat_p384_scalar_addcarryx_u32(x945, x874, x922); let mut x948: u32 = 0; let mut x949: fiat_p384_scalar_u1 = 0; let (x948, x949) = fiat_p384_scalar_addcarryx_u32(x947, x876, x924); let mut x950: u32 = 0; let mut x951: fiat_p384_scalar_u1 = 0; let (x950, x951) = fiat_p384_scalar_addcarryx_u32(x949, x878, x926); let mut x952: u32 = 0; let mut x953: fiat_p384_scalar_u1 = 0; let (x952, x953) = fiat_p384_scalar_addcarryx_u32(x951, x880, x928); let mut x954: u32 = 0; let mut x955: fiat_p384_scalar_u1 = 0; let (x954, x955) = fiat_p384_scalar_addcarryx_u32(x953, x882, x930); let mut x956: u32 = 0; let mut x957: fiat_p384_scalar_u1 = 0; let (x956, x957) = fiat_p384_scalar_addcarryx_u32( x955, ((x883 as u32) + (x859 as u32)), ((x931 as u32) + x887), ); let mut x958: u32 = 0; let mut x959: fiat_p384_scalar_u1 = 0; let (x958, x959) = fiat_p384_scalar_addcarryx_u32(0x0, x934, (arg1[10])); let mut x960: u32 = 0; let mut x961: fiat_p384_scalar_u1 = 0; let (x960, x961) = fiat_p384_scalar_addcarryx_u32(x959, x936, (0x0 as u32)); let mut x962: u32 = 0; let mut x963: fiat_p384_scalar_u1 = 0; let (x962, x963) = fiat_p384_scalar_addcarryx_u32(x961, x938, (0x0 as u32)); let mut x964: u32 = 0; let mut x965: fiat_p384_scalar_u1 = 0; let (x964, x965) = fiat_p384_scalar_addcarryx_u32(x963, x940, (0x0 as u32)); let mut x966: u32 = 0; let mut x967: fiat_p384_scalar_u1 = 0; let (x966, x967) = fiat_p384_scalar_addcarryx_u32(x965, x942, (0x0 as u32)); let mut x968: u32 = 0; let mut x969: fiat_p384_scalar_u1 = 0; let (x968, x969) = fiat_p384_scalar_addcarryx_u32(x967, x944, (0x0 as u32)); let mut x970: u32 = 0; let mut x971: fiat_p384_scalar_u1 = 0; let (x970, x971) = fiat_p384_scalar_addcarryx_u32(x969, x946, (0x0 as u32)); let mut x972: u32 = 0; let mut x973: fiat_p384_scalar_u1 = 0; let (x972, x973) = fiat_p384_scalar_addcarryx_u32(x971, x948, (0x0 as u32)); let mut x974: u32 = 0; let mut x975: fiat_p384_scalar_u1 = 0; let (x974, x975) = fiat_p384_scalar_addcarryx_u32(x973, x950, (0x0 as u32)); let mut x976: u32 = 0; let mut x977: fiat_p384_scalar_u1 = 0; let (x976, x977) = fiat_p384_scalar_addcarryx_u32(x975, x952, (0x0 as u32)); let mut x978: u32 = 0; let mut x979: fiat_p384_scalar_u1 = 0; let (x978, x979) = fiat_p384_scalar_addcarryx_u32(x977, x954, (0x0 as u32)); let mut x980: u32 = 0; let mut x981: fiat_p384_scalar_u1 = 0; let (x980, x981) = fiat_p384_scalar_addcarryx_u32(x979, x956, (0x0 as u32)); let mut x982: u32 = 0; let mut x983: u32 = 0; let (x982, x983) = fiat_p384_scalar_mulx_u32(x958, 0xe88fdc45); let mut x984: u32 = 0; let mut x985: u32 = 0; let (x984, x985) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x986: u32 = 0; let mut x987: u32 = 0; let (x986, x987) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x988: u32 = 0; let mut x989: u32 = 0; let (x988, x989) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x990: u32 = 0; let mut x991: u32 = 0; let (x990, x991) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x992: u32 = 0; let mut x993: u32 = 0; let (x992, x993) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x994: u32 = 0; let mut x995: u32 = 0; let (x994, x995) = fiat_p384_scalar_mulx_u32(x982, 0xffffffff); let mut x996: u32 = 0; let mut x997: u32 = 0; let (x996, x997) = fiat_p384_scalar_mulx_u32(x982, 0xc7634d81); let mut x998: u32 = 0; let mut x999: u32 = 0; let (x998, x999) = fiat_p384_scalar_mulx_u32(x982, 0xf4372ddf); let mut x1000: u32 = 0; let mut x1001: u32 = 0; let (x1000, x1001) = fiat_p384_scalar_mulx_u32(x982, 0x581a0db2); let mut x1002: u32 = 0; let mut x1003: u32 = 0; let (x1002, x1003) = fiat_p384_scalar_mulx_u32(x982, 0x48b0a77a); let mut x1004: u32 = 0; let mut x1005: u32 = 0; let (x1004, x1005) = fiat_p384_scalar_mulx_u32(x982, 0xecec196a); let mut x1006: u32 = 0; let mut x1007: u32 = 0; let (x1006, x1007) = fiat_p384_scalar_mulx_u32(x982, 0xccc52973); let mut x1008: u32 = 0; let mut x1009: fiat_p384_scalar_u1 = 0; let (x1008, x1009) = fiat_p384_scalar_addcarryx_u32(0x0, x1007, x1004); let mut x1010: u32 = 0; let mut x1011: fiat_p384_scalar_u1 = 0; let (x1010, x1011) = fiat_p384_scalar_addcarryx_u32(x1009, x1005, x1002); let mut x1012: u32 = 0; let mut x1013: fiat_p384_scalar_u1 = 0; let (x1012, x1013) = fiat_p384_scalar_addcarryx_u32(x1011, x1003, x1000); let mut x1014: u32 = 0; let mut x1015: fiat_p384_scalar_u1 = 0; let (x1014, x1015) = fiat_p384_scalar_addcarryx_u32(x1013, x1001, x998); let mut x1016: u32 = 0; let mut x1017: fiat_p384_scalar_u1 = 0; let (x1016, x1017) = fiat_p384_scalar_addcarryx_u32(x1015, x999, x996); let mut x1018: u32 = 0; let mut x1019: fiat_p384_scalar_u1 = 0; let (x1018, x1019) = fiat_p384_scalar_addcarryx_u32(x1017, x997, x994); let mut x1020: u32 = 0; let mut x1021: fiat_p384_scalar_u1 = 0; let (x1020, x1021) = fiat_p384_scalar_addcarryx_u32(x1019, x995, x992); let mut x1022: u32 = 0; let mut x1023: fiat_p384_scalar_u1 = 0; let (x1022, x1023) = fiat_p384_scalar_addcarryx_u32(x1021, x993, x990); let mut x1024: u32 = 0; let mut x1025: fiat_p384_scalar_u1 = 0; let (x1024, x1025) = fiat_p384_scalar_addcarryx_u32(x1023, x991, x988); let mut x1026: u32 = 0; let mut x1027: fiat_p384_scalar_u1 = 0; let (x1026, x1027) = fiat_p384_scalar_addcarryx_u32(x1025, x989, x986); let mut x1028: u32 = 0; let mut x1029: fiat_p384_scalar_u1 = 0; let (x1028, x1029) = fiat_p384_scalar_addcarryx_u32(x1027, x987, x984); let mut x1030: u32 = 0; let mut x1031: fiat_p384_scalar_u1 = 0; let (x1030, x1031) = fiat_p384_scalar_addcarryx_u32(0x0, x958, x1006); let mut x1032: u32 = 0; let mut x1033: fiat_p384_scalar_u1 = 0; let (x1032, x1033) = fiat_p384_scalar_addcarryx_u32(x1031, x960, x1008); let mut x1034: u32 = 0; let mut x1035: fiat_p384_scalar_u1 = 0; let (x1034, x1035) = fiat_p384_scalar_addcarryx_u32(x1033, x962, x1010); let mut x1036: u32 = 0; let mut x1037: fiat_p384_scalar_u1 = 0; let (x1036, x1037) = fiat_p384_scalar_addcarryx_u32(x1035, x964, x1012); let mut x1038: u32 = 0; let mut x1039: fiat_p384_scalar_u1 = 0; let (x1038, x1039) = fiat_p384_scalar_addcarryx_u32(x1037, x966, x1014); let mut x1040: u32 = 0; let mut x1041: fiat_p384_scalar_u1 = 0; let (x1040, x1041) = fiat_p384_scalar_addcarryx_u32(x1039, x968, x1016); let mut x1042: u32 = 0; let mut x1043: fiat_p384_scalar_u1 = 0; let (x1042, x1043) = fiat_p384_scalar_addcarryx_u32(x1041, x970, x1018); let mut x1044: u32 = 0; let mut x1045: fiat_p384_scalar_u1 = 0; let (x1044, x1045) = fiat_p384_scalar_addcarryx_u32(x1043, x972, x1020); let mut x1046: u32 = 0; let mut x1047: fiat_p384_scalar_u1 = 0; let (x1046, x1047) = fiat_p384_scalar_addcarryx_u32(x1045, x974, x1022); let mut x1048: u32 = 0; let mut x1049: fiat_p384_scalar_u1 = 0; let (x1048, x1049) = fiat_p384_scalar_addcarryx_u32(x1047, x976, x1024); let mut x1050: u32 = 0; let mut x1051: fiat_p384_scalar_u1 = 0; let (x1050, x1051) = fiat_p384_scalar_addcarryx_u32(x1049, x978, x1026); let mut x1052: u32 = 0; let mut x1053: fiat_p384_scalar_u1 = 0; let (x1052, x1053) = fiat_p384_scalar_addcarryx_u32(x1051, x980, x1028); let mut x1054: u32 = 0; let mut x1055: fiat_p384_scalar_u1 = 0; let (x1054, x1055) = fiat_p384_scalar_addcarryx_u32( x1053, ((x981 as u32) + (x957 as u32)), ((x1029 as u32) + x985), ); let mut x1056: u32 = 0; let mut x1057: fiat_p384_scalar_u1 = 0; let (x1056, x1057) = fiat_p384_scalar_addcarryx_u32(0x0, x1032, (arg1[11])); let mut x1058: u32 = 0; let mut x1059: fiat_p384_scalar_u1 = 0; let (x1058, x1059) = fiat_p384_scalar_addcarryx_u32(x1057, x1034, (0x0 as u32)); let mut x1060: u32 = 0; let mut x1061: fiat_p384_scalar_u1 = 0; let (x1060, x1061) = fiat_p384_scalar_addcarryx_u32(x1059, x1036, (0x0 as u32)); let mut x1062: u32 = 0; let mut x1063: fiat_p384_scalar_u1 = 0; let (x1062, x1063) = fiat_p384_scalar_addcarryx_u32(x1061, x1038, (0x0 as u32)); let mut x1064: u32 = 0; let mut x1065: fiat_p384_scalar_u1 = 0; let (x1064, x1065) = fiat_p384_scalar_addcarryx_u32(x1063, x1040, (0x0 as u32)); let mut x1066: u32 = 0; let mut x1067: fiat_p384_scalar_u1 = 0; let (x1066, x1067) = fiat_p384_scalar_addcarryx_u32(x1065, x1042, (0x0 as u32)); let mut x1068: u32 = 0; let mut x1069: fiat_p384_scalar_u1 = 0; let (x1068, x1069) = fiat_p384_scalar_addcarryx_u32(x1067, x1044, (0x0 as u32)); let mut x1070: u32 = 0; let mut x1071: fiat_p384_scalar_u1 = 0; let (x1070, x1071) = fiat_p384_scalar_addcarryx_u32(x1069, x1046, (0x0 as u32)); let mut x1072: u32 = 0; let mut x1073: fiat_p384_scalar_u1 = 0; let (x1072, x1073) = fiat_p384_scalar_addcarryx_u32(x1071, x1048, (0x0 as u32)); let mut x1074: u32 = 0; let mut x1075: fiat_p384_scalar_u1 = 0; let (x1074, x1075) = fiat_p384_scalar_addcarryx_u32(x1073, x1050, (0x0 as u32)); let mut x1076: u32 = 0; let mut x1077: fiat_p384_scalar_u1 = 0; let (x1076, x1077) = fiat_p384_scalar_addcarryx_u32(x1075, x1052, (0x0 as u32)); let mut x1078: u32 = 0; let mut x1079: fiat_p384_scalar_u1 = 0; let (x1078, x1079) = fiat_p384_scalar_addcarryx_u32(x1077, x1054, (0x0 as u32)); let mut x1080: u32 = 0; let mut x1081: u32 = 0; let (x1080, x1081) = fiat_p384_scalar_mulx_u32(x1056, 0xe88fdc45); let mut x1082: u32 = 0; let mut x1083: u32 = 0; let (x1082, x1083) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1084: u32 = 0; let mut x1085: u32 = 0; let (x1084, x1085) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1086: u32 = 0; let mut x1087: u32 = 0; let (x1086, x1087) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1088: u32 = 0; let mut x1089: u32 = 0; let (x1088, x1089) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1090: u32 = 0; let mut x1091: u32 = 0; let (x1090, x1091) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1092: u32 = 0; let mut x1093: u32 = 0; let (x1092, x1093) = fiat_p384_scalar_mulx_u32(x1080, 0xffffffff); let mut x1094: u32 = 0; let mut x1095: u32 = 0; let (x1094, x1095) = fiat_p384_scalar_mulx_u32(x1080, 0xc7634d81); let mut x1096: u32 = 0; let mut x1097: u32 = 0; let (x1096, x1097) = fiat_p384_scalar_mulx_u32(x1080, 0xf4372ddf); let mut x1098: u32 = 0; let mut x1099: u32 = 0; let (x1098, x1099) = fiat_p384_scalar_mulx_u32(x1080, 0x581a0db2); let mut x1100: u32 = 0; let mut x1101: u32 = 0; let (x1100, x1101) = fiat_p384_scalar_mulx_u32(x1080, 0x48b0a77a); let mut x1102: u32 = 0; let mut x1103: u32 = 0; let (x1102, x1103) = fiat_p384_scalar_mulx_u32(x1080, 0xecec196a); let mut x1104: u32 = 0; let mut x1105: u32 = 0; let (x1104, x1105) = fiat_p384_scalar_mulx_u32(x1080, 0xccc52973); let mut x1106: u32 = 0; let mut x1107: fiat_p384_scalar_u1 = 0; let (x1106, x1107) = fiat_p384_scalar_addcarryx_u32(0x0, x1105, x1102); let mut x1108: u32 = 0; let mut x1109: fiat_p384_scalar_u1 = 0; let (x1108, x1109) = fiat_p384_scalar_addcarryx_u32(x1107, x1103, x1100); let mut x1110: u32 = 0; let mut x1111: fiat_p384_scalar_u1 = 0; let (x1110, x1111) = fiat_p384_scalar_addcarryx_u32(x1109, x1101, x1098); let mut x1112: u32 = 0; let mut x1113: fiat_p384_scalar_u1 = 0; let (x1112, x1113) = fiat_p384_scalar_addcarryx_u32(x1111, x1099, x1096); let mut x1114: u32 = 0; let mut x1115: fiat_p384_scalar_u1 = 0; let (x1114, x1115) = fiat_p384_scalar_addcarryx_u32(x1113, x1097, x1094); let mut x1116: u32 = 0; let mut x1117: fiat_p384_scalar_u1 = 0; let (x1116, x1117) = fiat_p384_scalar_addcarryx_u32(x1115, x1095, x1092); let mut x1118: u32 = 0; let mut x1119: fiat_p384_scalar_u1 = 0; let (x1118, x1119) = fiat_p384_scalar_addcarryx_u32(x1117, x1093, x1090); let mut x1120: u32 = 0; let mut x1121: fiat_p384_scalar_u1 = 0; let (x1120, x1121) = fiat_p384_scalar_addcarryx_u32(x1119, x1091, x1088); let mut x1122: u32 = 0; let mut x1123: fiat_p384_scalar_u1 = 0; let (x1122, x1123) = fiat_p384_scalar_addcarryx_u32(x1121, x1089, x1086); let mut x1124: u32 = 0; let mut x1125: fiat_p384_scalar_u1 = 0; let (x1124, x1125) = fiat_p384_scalar_addcarryx_u32(x1123, x1087, x1084); let mut x1126: u32 = 0; let mut x1127: fiat_p384_scalar_u1 = 0; let (x1126, x1127) = fiat_p384_scalar_addcarryx_u32(x1125, x1085, x1082); let mut x1128: u32 = 0; let mut x1129: fiat_p384_scalar_u1 = 0; let (x1128, x1129) = fiat_p384_scalar_addcarryx_u32(0x0, x1056, x1104); let mut x1130: u32 = 0; let mut x1131: fiat_p384_scalar_u1 = 0; let (x1130, x1131) = fiat_p384_scalar_addcarryx_u32(x1129, x1058, x1106); let mut x1132: u32 = 0; let mut x1133: fiat_p384_scalar_u1 = 0; let (x1132, x1133) = fiat_p384_scalar_addcarryx_u32(x1131, x1060, x1108); let mut x1134: u32 = 0; let mut x1135: fiat_p384_scalar_u1 = 0; let (x1134, x1135) = fiat_p384_scalar_addcarryx_u32(x1133, x1062, x1110); let mut x1136: u32 = 0; let mut x1137: fiat_p384_scalar_u1 = 0; let (x1136, x1137) = fiat_p384_scalar_addcarryx_u32(x1135, x1064, x1112); let mut x1138: u32 = 0; let mut x1139: fiat_p384_scalar_u1 = 0; let (x1138, x1139) = fiat_p384_scalar_addcarryx_u32(x1137, x1066, x1114); let mut x1140: u32 = 0; let mut x1141: fiat_p384_scalar_u1 = 0; let (x1140, x1141) = fiat_p384_scalar_addcarryx_u32(x1139, x1068, x1116); let mut x1142: u32 = 0; let mut x1143: fiat_p384_scalar_u1 = 0; let (x1142, x1143) = fiat_p384_scalar_addcarryx_u32(x1141, x1070, x1118); let mut x1144: u32 = 0; let mut x1145: fiat_p384_scalar_u1 = 0; let (x1144, x1145) = fiat_p384_scalar_addcarryx_u32(x1143, x1072, x1120); let mut x1146: u32 = 0; let mut x1147: fiat_p384_scalar_u1 = 0; let (x1146, x1147) = fiat_p384_scalar_addcarryx_u32(x1145, x1074, x1122); let mut x1148: u32 = 0; let mut x1149: fiat_p384_scalar_u1 = 0; let (x1148, x1149) = fiat_p384_scalar_addcarryx_u32(x1147, x1076, x1124); let mut x1150: u32 = 0; let mut x1151: fiat_p384_scalar_u1 = 0; let (x1150, x1151) = fiat_p384_scalar_addcarryx_u32(x1149, x1078, x1126); let mut x1152: u32 = 0; let mut x1153: fiat_p384_scalar_u1 = 0; let (x1152, x1153) = fiat_p384_scalar_addcarryx_u32( x1151, ((x1079 as u32) + (x1055 as u32)), ((x1127 as u32) + x1083), ); let mut x1154: u32 = 0; let mut x1155: fiat_p384_scalar_u1 = 0; let (x1154, x1155) = fiat_p384_scalar_subborrowx_u32(0x0, x1130, 0xccc52973); let mut x1156: u32 = 0; let mut x1157: fiat_p384_scalar_u1 = 0; let (x1156, x1157) = fiat_p384_scalar_subborrowx_u32(x1155, x1132, 0xecec196a); let mut x1158: u32 = 0; let mut x1159: fiat_p384_scalar_u1 = 0; let (x1158, x1159) = fiat_p384_scalar_subborrowx_u32(x1157, x1134, 0x48b0a77a); let mut x1160: u32 = 0; let mut x1161: fiat_p384_scalar_u1 = 0; let (x1160, x1161) = fiat_p384_scalar_subborrowx_u32(x1159, x1136, 0x581a0db2); let mut x1162: u32 = 0; let mut x1163: fiat_p384_scalar_u1 = 0; let (x1162, x1163) = fiat_p384_scalar_subborrowx_u32(x1161, x1138, 0xf4372ddf); let mut x1164: u32 = 0; let mut x1165: fiat_p384_scalar_u1 = 0; let (x1164, x1165) = fiat_p384_scalar_subborrowx_u32(x1163, x1140, 0xc7634d81); let mut x1166: u32 = 0; let mut x1167: fiat_p384_scalar_u1 = 0; let (x1166, x1167) = fiat_p384_scalar_subborrowx_u32(x1165, x1142, 0xffffffff); let mut x1168: u32 = 0; let mut x1169: fiat_p384_scalar_u1 = 0; let (x1168, x1169) = fiat_p384_scalar_subborrowx_u32(x1167, x1144, 0xffffffff); let mut x1170: u32 = 0; let mut x1171: fiat_p384_scalar_u1 = 0; let (x1170, x1171) = fiat_p384_scalar_subborrowx_u32(x1169, x1146, 0xffffffff); let mut x1172: u32 = 0; let mut x1173: fiat_p384_scalar_u1 = 0; let (x1172, x1173) = fiat_p384_scalar_subborrowx_u32(x1171, x1148, 0xffffffff); let mut x1174: u32 = 0; let mut x1175: fiat_p384_scalar_u1 = 0; let (x1174, x1175) = fiat_p384_scalar_subborrowx_u32(x1173, x1150, 0xffffffff); let mut x1176: u32 = 0; let mut x1177: fiat_p384_scalar_u1 = 0; let (x1176, x1177) = fiat_p384_scalar_subborrowx_u32(x1175, x1152, 0xffffffff); let mut x1178: u32 = 0; let mut x1179: fiat_p384_scalar_u1 = 0; let (x1178, x1179) = fiat_p384_scalar_subborrowx_u32(x1177, (x1153 as u32), (0x0 as u32)); let mut x1180: u32 = 0; let (x1180) = fiat_p384_scalar_cmovznz_u32(x1179, x1154, x1130); let mut x1181: u32 = 0; let (x1181) = fiat_p384_scalar_cmovznz_u32(x1179, x1156, x1132); let mut x1182: u32 = 0; let (x1182) = fiat_p384_scalar_cmovznz_u32(x1179, x1158, x1134); let mut x1183: u32 = 0; let (x1183) = fiat_p384_scalar_cmovznz_u32(x1179, x1160, x1136); let mut x1184: u32 = 0; let (x1184) = fiat_p384_scalar_cmovznz_u32(x1179, x1162, x1138); let mut x1185: u32 = 0; let (x1185) = fiat_p384_scalar_cmovznz_u32(x1179, x1164, x1140); let mut x1186: u32 = 0; let (x1186) = fiat_p384_scalar_cmovznz_u32(x1179, x1166, x1142); let mut x1187: u32 = 0; let (x1187) = fiat_p384_scalar_cmovznz_u32(x1179, x1168, x1144); let mut x1188: u32 = 0; let (x1188) = fiat_p384_scalar_cmovznz_u32(x1179, x1170, x1146); let mut x1189: u32 = 0; let (x1189) = fiat_p384_scalar_cmovznz_u32(x1179, x1172, x1148); let mut x1190: u32 = 0; let (x1190) = fiat_p384_scalar_cmovznz_u32(x1179, x1174, x1150); let mut x1191: u32 = 0; let (x1191) = fiat_p384_scalar_cmovznz_u32(x1179, x1176, x1152); out1[0] = x1180; out1[1] = x1181; out1[2] = x1182; out1[3] = x1183; out1[4] = x1184; out1[5] = x1185; out1[6] = x1186; out1[7] = x1187; out1[8] = x1188; out1[9] = x1189; out1[10] = x1190; out1[11] = x1191; out1 } #[doc = " The function fiat_p384_scalar_to_montgomery translates a field element into the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_to_montgomery( arg1: &fiat_p384_scalar_non_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; let x1: u32 = (arg1[1]); let x2: u32 = (arg1[2]); let x3: u32 = (arg1[3]); let x4: u32 = (arg1[4]); let x5: u32 = (arg1[5]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[7]); let x8: u32 = (arg1[8]); let x9: u32 = (arg1[9]); let x10: u32 = (arg1[10]); let x11: u32 = (arg1[11]); let x12: u32 = (arg1[0]); let mut x13: u32 = 0; let mut x14: u32 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u32(x12, 0xc84ee01); let mut x15: u32 = 0; let mut x16: u32 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u32(x12, 0x2b39bf21); let mut x17: u32 = 0; let mut x18: u32 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u32(x12, 0x3fb05b7a); let mut x19: u32 = 0; let mut x20: u32 = 0; let (x19, x20) = fiat_p384_scalar_mulx_u32(x12, 0x28266895); let mut x21: u32 = 0; let mut x22: u32 = 0; let (x21, x22) = fiat_p384_scalar_mulx_u32(x12, 0xd40d4917); let mut x23: u32 = 0; let mut x24: u32 = 0; let (x23, x24) = fiat_p384_scalar_mulx_u32(x12, 0x4aab1cc5); let mut x25: u32 = 0; let mut x26: u32 = 0; let (x25, x26) = fiat_p384_scalar_mulx_u32(x12, 0xbc3e483a); let mut x27: u32 = 0; let mut x28: u32 = 0; let (x27, x28) = fiat_p384_scalar_mulx_u32(x12, 0xfcb82947); let mut x29: u32 = 0; let mut x30: u32 = 0; let (x29, x30) = fiat_p384_scalar_mulx_u32(x12, 0xff3d81e5); let mut x31: u32 = 0; let mut x32: u32 = 0; let (x31, x32) = fiat_p384_scalar_mulx_u32(x12, 0xdf1aa419); let mut x33: u32 = 0; let mut x34: u32 = 0; let (x33, x34) = fiat_p384_scalar_mulx_u32(x12, 0x2d319b24); let mut x35: u32 = 0; let mut x36: u32 = 0; let (x35, x36) = fiat_p384_scalar_mulx_u32(x12, 0x19b409a9); let mut x37: u32 = 0; let mut x38: fiat_p384_scalar_u1 = 0; let (x37, x38) = fiat_p384_scalar_addcarryx_u32(0x0, x36, x33); let mut x39: u32 = 0; let mut x40: fiat_p384_scalar_u1 = 0; let (x39, x40) = fiat_p384_scalar_addcarryx_u32(x38, x34, x31); let mut x41: u32 = 0; let mut x42: fiat_p384_scalar_u1 = 0; let (x41, x42) = fiat_p384_scalar_addcarryx_u32(x40, x32, x29); let mut x43: u32 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_addcarryx_u32(x42, x30, x27); let mut x45: u32 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_addcarryx_u32(x44, x28, x25); let mut x47: u32 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_addcarryx_u32(x46, x26, x23); let mut x49: u32 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_addcarryx_u32(x48, x24, x21); let mut x51: u32 = 0; let mut x52: fiat_p384_scalar_u1 = 0; let (x51, x52) = fiat_p384_scalar_addcarryx_u32(x50, x22, x19); let mut x53: u32 = 0; let mut x54: fiat_p384_scalar_u1 = 0; let (x53, x54) = fiat_p384_scalar_addcarryx_u32(x52, x20, x17); let mut x55: u32 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u32(x54, x18, x15); let mut x57: u32 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u32(x56, x16, x13); let mut x59: u32 = 0; let mut x60: u32 = 0; let (x59, x60) = fiat_p384_scalar_mulx_u32(x35, 0xe88fdc45); let mut x61: u32 = 0; let mut x62: u32 = 0; let (x61, x62) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x63: u32 = 0; let mut x64: u32 = 0; let (x63, x64) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x65: u32 = 0; let mut x66: u32 = 0; let (x65, x66) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x67: u32 = 0; let mut x68: u32 = 0; let (x67, x68) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x69: u32 = 0; let mut x70: u32 = 0; let (x69, x70) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x71: u32 = 0; let mut x72: u32 = 0; let (x71, x72) = fiat_p384_scalar_mulx_u32(x59, 0xffffffff); let mut x73: u32 = 0; let mut x74: u32 = 0; let (x73, x74) = fiat_p384_scalar_mulx_u32(x59, 0xc7634d81); let mut x75: u32 = 0; let mut x76: u32 = 0; let (x75, x76) = fiat_p384_scalar_mulx_u32(x59, 0xf4372ddf); let mut x77: u32 = 0; let mut x78: u32 = 0; let (x77, x78) = fiat_p384_scalar_mulx_u32(x59, 0x581a0db2); let mut x79: u32 = 0; let mut x80: u32 = 0; let (x79, x80) = fiat_p384_scalar_mulx_u32(x59, 0x48b0a77a); let mut x81: u32 = 0; let mut x82: u32 = 0; let (x81, x82) = fiat_p384_scalar_mulx_u32(x59, 0xecec196a); let mut x83: u32 = 0; let mut x84: u32 = 0; let (x83, x84) = fiat_p384_scalar_mulx_u32(x59, 0xccc52973); let mut x85: u32 = 0; let mut x86: fiat_p384_scalar_u1 = 0; let (x85, x86) = fiat_p384_scalar_addcarryx_u32(0x0, x84, x81); let mut x87: u32 = 0; let mut x88: fiat_p384_scalar_u1 = 0; let (x87, x88) = fiat_p384_scalar_addcarryx_u32(x86, x82, x79); let mut x89: u32 = 0; let mut x90: fiat_p384_scalar_u1 = 0; let (x89, x90) = fiat_p384_scalar_addcarryx_u32(x88, x80, x77); let mut x91: u32 = 0; let mut x92: fiat_p384_scalar_u1 = 0; let (x91, x92) = fiat_p384_scalar_addcarryx_u32(x90, x78, x75); let mut x93: u32 = 0; let mut x94: fiat_p384_scalar_u1 = 0; let (x93, x94) = fiat_p384_scalar_addcarryx_u32(x92, x76, x73); let mut x95: u32 = 0; let mut x96: fiat_p384_scalar_u1 = 0; let (x95, x96) = fiat_p384_scalar_addcarryx_u32(x94, x74, x71); let mut x97: u32 = 0; let mut x98: fiat_p384_scalar_u1 = 0; let (x97, x98) = fiat_p384_scalar_addcarryx_u32(x96, x72, x69); let mut x99: u32 = 0; let mut x100: fiat_p384_scalar_u1 = 0; let (x99, x100) = fiat_p384_scalar_addcarryx_u32(x98, x70, x67); let mut x101: u32 = 0; let mut x102: fiat_p384_scalar_u1 = 0; let (x101, x102) = fiat_p384_scalar_addcarryx_u32(x100, x68, x65); let mut x103: u32 = 0; let mut x104: fiat_p384_scalar_u1 = 0; let (x103, x104) = fiat_p384_scalar_addcarryx_u32(x102, x66, x63); let mut x105: u32 = 0; let mut x106: fiat_p384_scalar_u1 = 0; let (x105, x106) = fiat_p384_scalar_addcarryx_u32(x104, x64, x61); let mut x107: u32 = 0; let mut x108: fiat_p384_scalar_u1 = 0; let (x107, x108) = fiat_p384_scalar_addcarryx_u32(0x0, x35, x83); let mut x109: u32 = 0; let mut x110: fiat_p384_scalar_u1 = 0; let (x109, x110) = fiat_p384_scalar_addcarryx_u32(x108, x37, x85); let mut x111: u32 = 0; let mut x112: fiat_p384_scalar_u1 = 0; let (x111, x112) = fiat_p384_scalar_addcarryx_u32(x110, x39, x87); let mut x113: u32 = 0; let mut x114: fiat_p384_scalar_u1 = 0; let (x113, x114) = fiat_p384_scalar_addcarryx_u32(x112, x41, x89); let mut x115: u32 = 0; let mut x116: fiat_p384_scalar_u1 = 0; let (x115, x116) = fiat_p384_scalar_addcarryx_u32(x114, x43, x91); let mut x117: u32 = 0; let mut x118: fiat_p384_scalar_u1 = 0; let (x117, x118) = fiat_p384_scalar_addcarryx_u32(x116, x45, x93); let mut x119: u32 = 0; let mut x120: fiat_p384_scalar_u1 = 0; let (x119, x120) = fiat_p384_scalar_addcarryx_u32(x118, x47, x95); let mut x121: u32 = 0; let mut x122: fiat_p384_scalar_u1 = 0; let (x121, x122) = fiat_p384_scalar_addcarryx_u32(x120, x49, x97); let mut x123: u32 = 0; let mut x124: fiat_p384_scalar_u1 = 0; let (x123, x124) = fiat_p384_scalar_addcarryx_u32(x122, x51, x99); let mut x125: u32 = 0; let mut x126: fiat_p384_scalar_u1 = 0; let (x125, x126) = fiat_p384_scalar_addcarryx_u32(x124, x53, x101); let mut x127: u32 = 0; let mut x128: fiat_p384_scalar_u1 = 0; let (x127, x128) = fiat_p384_scalar_addcarryx_u32(x126, x55, x103); let mut x129: u32 = 0; let mut x130: fiat_p384_scalar_u1 = 0; let (x129, x130) = fiat_p384_scalar_addcarryx_u32(x128, x57, x105); let mut x131: u32 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u32(x130, ((x58 as u32) + x14), ((x106 as u32) + x62)); let mut x133: u32 = 0; let mut x134: u32 = 0; let (x133, x134) = fiat_p384_scalar_mulx_u32(x1, 0xc84ee01); let mut x135: u32 = 0; let mut x136: u32 = 0; let (x135, x136) = fiat_p384_scalar_mulx_u32(x1, 0x2b39bf21); let mut x137: u32 = 0; let mut x138: u32 = 0; let (x137, x138) = fiat_p384_scalar_mulx_u32(x1, 0x3fb05b7a); let mut x139: u32 = 0; let mut x140: u32 = 0; let (x139, x140) = fiat_p384_scalar_mulx_u32(x1, 0x28266895); let mut x141: u32 = 0; let mut x142: u32 = 0; let (x141, x142) = fiat_p384_scalar_mulx_u32(x1, 0xd40d4917); let mut x143: u32 = 0; let mut x144: u32 = 0; let (x143, x144) = fiat_p384_scalar_mulx_u32(x1, 0x4aab1cc5); let mut x145: u32 = 0; let mut x146: u32 = 0; let (x145, x146) = fiat_p384_scalar_mulx_u32(x1, 0xbc3e483a); let mut x147: u32 = 0; let mut x148: u32 = 0; let (x147, x148) = fiat_p384_scalar_mulx_u32(x1, 0xfcb82947); let mut x149: u32 = 0; let mut x150: u32 = 0; let (x149, x150) = fiat_p384_scalar_mulx_u32(x1, 0xff3d81e5); let mut x151: u32 = 0; let mut x152: u32 = 0; let (x151, x152) = fiat_p384_scalar_mulx_u32(x1, 0xdf1aa419); let mut x153: u32 = 0; let mut x154: u32 = 0; let (x153, x154) = fiat_p384_scalar_mulx_u32(x1, 0x2d319b24); let mut x155: u32 = 0; let mut x156: u32 = 0; let (x155, x156) = fiat_p384_scalar_mulx_u32(x1, 0x19b409a9); let mut x157: u32 = 0; let mut x158: fiat_p384_scalar_u1 = 0; let (x157, x158) = fiat_p384_scalar_addcarryx_u32(0x0, x156, x153); let mut x159: u32 = 0; let mut x160: fiat_p384_scalar_u1 = 0; let (x159, x160) = fiat_p384_scalar_addcarryx_u32(x158, x154, x151); let mut x161: u32 = 0; let mut x162: fiat_p384_scalar_u1 = 0; let (x161, x162) = fiat_p384_scalar_addcarryx_u32(x160, x152, x149); let mut x163: u32 = 0; let mut x164: fiat_p384_scalar_u1 = 0; let (x163, x164) = fiat_p384_scalar_addcarryx_u32(x162, x150, x147); let mut x165: u32 = 0; let mut x166: fiat_p384_scalar_u1 = 0; let (x165, x166) = fiat_p384_scalar_addcarryx_u32(x164, x148, x145); let mut x167: u32 = 0; let mut x168: fiat_p384_scalar_u1 = 0; let (x167, x168) = fiat_p384_scalar_addcarryx_u32(x166, x146, x143); let mut x169: u32 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u32(x168, x144, x141); let mut x171: u32 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u32(x170, x142, x139); let mut x173: u32 = 0; let mut x174: fiat_p384_scalar_u1 = 0; let (x173, x174) = fiat_p384_scalar_addcarryx_u32(x172, x140, x137); let mut x175: u32 = 0; let mut x176: fiat_p384_scalar_u1 = 0; let (x175, x176) = fiat_p384_scalar_addcarryx_u32(x174, x138, x135); let mut x177: u32 = 0; let mut x178: fiat_p384_scalar_u1 = 0; let (x177, x178) = fiat_p384_scalar_addcarryx_u32(x176, x136, x133); let mut x179: u32 = 0; let mut x180: fiat_p384_scalar_u1 = 0; let (x179, x180) = fiat_p384_scalar_addcarryx_u32(0x0, x109, x155); let mut x181: u32 = 0; let mut x182: fiat_p384_scalar_u1 = 0; let (x181, x182) = fiat_p384_scalar_addcarryx_u32(x180, x111, x157); let mut x183: u32 = 0; let mut x184: fiat_p384_scalar_u1 = 0; let (x183, x184) = fiat_p384_scalar_addcarryx_u32(x182, x113, x159); let mut x185: u32 = 0; let mut x186: fiat_p384_scalar_u1 = 0; let (x185, x186) = fiat_p384_scalar_addcarryx_u32(x184, x115, x161); let mut x187: u32 = 0; let mut x188: fiat_p384_scalar_u1 = 0; let (x187, x188) = fiat_p384_scalar_addcarryx_u32(x186, x117, x163); let mut x189: u32 = 0; let mut x190: fiat_p384_scalar_u1 = 0; let (x189, x190) = fiat_p384_scalar_addcarryx_u32(x188, x119, x165); let mut x191: u32 = 0; let mut x192: fiat_p384_scalar_u1 = 0; let (x191, x192) = fiat_p384_scalar_addcarryx_u32(x190, x121, x167); let mut x193: u32 = 0; let mut x194: fiat_p384_scalar_u1 = 0; let (x193, x194) = fiat_p384_scalar_addcarryx_u32(x192, x123, x169); let mut x195: u32 = 0; let mut x196: fiat_p384_scalar_u1 = 0; let (x195, x196) = fiat_p384_scalar_addcarryx_u32(x194, x125, x171); let mut x197: u32 = 0; let mut x198: fiat_p384_scalar_u1 = 0; let (x197, x198) = fiat_p384_scalar_addcarryx_u32(x196, x127, x173); let mut x199: u32 = 0; let mut x200: fiat_p384_scalar_u1 = 0; let (x199, x200) = fiat_p384_scalar_addcarryx_u32(x198, x129, x175); let mut x201: u32 = 0; let mut x202: fiat_p384_scalar_u1 = 0; let (x201, x202) = fiat_p384_scalar_addcarryx_u32(x200, x131, x177); let mut x203: u32 = 0; let mut x204: u32 = 0; let (x203, x204) = fiat_p384_scalar_mulx_u32(x179, 0xe88fdc45); let mut x205: u32 = 0; let mut x206: u32 = 0; let (x205, x206) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x207: u32 = 0; let mut x208: u32 = 0; let (x207, x208) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x209: u32 = 0; let mut x210: u32 = 0; let (x209, x210) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x211: u32 = 0; let mut x212: u32 = 0; let (x211, x212) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x213: u32 = 0; let mut x214: u32 = 0; let (x213, x214) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x215: u32 = 0; let mut x216: u32 = 0; let (x215, x216) = fiat_p384_scalar_mulx_u32(x203, 0xffffffff); let mut x217: u32 = 0; let mut x218: u32 = 0; let (x217, x218) = fiat_p384_scalar_mulx_u32(x203, 0xc7634d81); let mut x219: u32 = 0; let mut x220: u32 = 0; let (x219, x220) = fiat_p384_scalar_mulx_u32(x203, 0xf4372ddf); let mut x221: u32 = 0; let mut x222: u32 = 0; let (x221, x222) = fiat_p384_scalar_mulx_u32(x203, 0x581a0db2); let mut x223: u32 = 0; let mut x224: u32 = 0; let (x223, x224) = fiat_p384_scalar_mulx_u32(x203, 0x48b0a77a); let mut x225: u32 = 0; let mut x226: u32 = 0; let (x225, x226) = fiat_p384_scalar_mulx_u32(x203, 0xecec196a); let mut x227: u32 = 0; let mut x228: u32 = 0; let (x227, x228) = fiat_p384_scalar_mulx_u32(x203, 0xccc52973); let mut x229: u32 = 0; let mut x230: fiat_p384_scalar_u1 = 0; let (x229, x230) = fiat_p384_scalar_addcarryx_u32(0x0, x228, x225); let mut x231: u32 = 0; let mut x232: fiat_p384_scalar_u1 = 0; let (x231, x232) = fiat_p384_scalar_addcarryx_u32(x230, x226, x223); let mut x233: u32 = 0; let mut x234: fiat_p384_scalar_u1 = 0; let (x233, x234) = fiat_p384_scalar_addcarryx_u32(x232, x224, x221); let mut x235: u32 = 0; let mut x236: fiat_p384_scalar_u1 = 0; let (x235, x236) = fiat_p384_scalar_addcarryx_u32(x234, x222, x219); let mut x237: u32 = 0; let mut x238: fiat_p384_scalar_u1 = 0; let (x237, x238) = fiat_p384_scalar_addcarryx_u32(x236, x220, x217); let mut x239: u32 = 0; let mut x240: fiat_p384_scalar_u1 = 0; let (x239, x240) = fiat_p384_scalar_addcarryx_u32(x238, x218, x215); let mut x241: u32 = 0; let mut x242: fiat_p384_scalar_u1 = 0; let (x241, x242) = fiat_p384_scalar_addcarryx_u32(x240, x216, x213); let mut x243: u32 = 0; let mut x244: fiat_p384_scalar_u1 = 0; let (x243, x244) = fiat_p384_scalar_addcarryx_u32(x242, x214, x211); let mut x245: u32 = 0; let mut x246: fiat_p384_scalar_u1 = 0; let (x245, x246) = fiat_p384_scalar_addcarryx_u32(x244, x212, x209); let mut x247: u32 = 0; let mut x248: fiat_p384_scalar_u1 = 0; let (x247, x248) = fiat_p384_scalar_addcarryx_u32(x246, x210, x207); let mut x249: u32 = 0; let mut x250: fiat_p384_scalar_u1 = 0; let (x249, x250) = fiat_p384_scalar_addcarryx_u32(x248, x208, x205); let mut x251: u32 = 0; let mut x252: fiat_p384_scalar_u1 = 0; let (x251, x252) = fiat_p384_scalar_addcarryx_u32(0x0, x179, x227); let mut x253: u32 = 0; let mut x254: fiat_p384_scalar_u1 = 0; let (x253, x254) = fiat_p384_scalar_addcarryx_u32(x252, x181, x229); let mut x255: u32 = 0; let mut x256: fiat_p384_scalar_u1 = 0; let (x255, x256) = fiat_p384_scalar_addcarryx_u32(x254, x183, x231); let mut x257: u32 = 0; let mut x258: fiat_p384_scalar_u1 = 0; let (x257, x258) = fiat_p384_scalar_addcarryx_u32(x256, x185, x233); let mut x259: u32 = 0; let mut x260: fiat_p384_scalar_u1 = 0; let (x259, x260) = fiat_p384_scalar_addcarryx_u32(x258, x187, x235); let mut x261: u32 = 0; let mut x262: fiat_p384_scalar_u1 = 0; let (x261, x262) = fiat_p384_scalar_addcarryx_u32(x260, x189, x237); let mut x263: u32 = 0; let mut x264: fiat_p384_scalar_u1 = 0; let (x263, x264) = fiat_p384_scalar_addcarryx_u32(x262, x191, x239); let mut x265: u32 = 0; let mut x266: fiat_p384_scalar_u1 = 0; let (x265, x266) = fiat_p384_scalar_addcarryx_u32(x264, x193, x241); let mut x267: u32 = 0; let mut x268: fiat_p384_scalar_u1 = 0; let (x267, x268) = fiat_p384_scalar_addcarryx_u32(x266, x195, x243); let mut x269: u32 = 0; let mut x270: fiat_p384_scalar_u1 = 0; let (x269, x270) = fiat_p384_scalar_addcarryx_u32(x268, x197, x245); let mut x271: u32 = 0; let mut x272: fiat_p384_scalar_u1 = 0; let (x271, x272) = fiat_p384_scalar_addcarryx_u32(x270, x199, x247); let mut x273: u32 = 0; let mut x274: fiat_p384_scalar_u1 = 0; let (x273, x274) = fiat_p384_scalar_addcarryx_u32(x272, x201, x249); let mut x275: u32 = 0; let mut x276: fiat_p384_scalar_u1 = 0; let (x275, x276) = fiat_p384_scalar_addcarryx_u32( x274, (((x202 as u32) + (x132 as u32)) + ((x178 as u32) + x134)), ((x250 as u32) + x206), ); let mut x277: u32 = 0; let mut x278: u32 = 0; let (x277, x278) = fiat_p384_scalar_mulx_u32(x2, 0xc84ee01); let mut x279: u32 = 0; let mut x280: u32 = 0; let (x279, x280) = fiat_p384_scalar_mulx_u32(x2, 0x2b39bf21); let mut x281: u32 = 0; let mut x282: u32 = 0; let (x281, x282) = fiat_p384_scalar_mulx_u32(x2, 0x3fb05b7a); let mut x283: u32 = 0; let mut x284: u32 = 0; let (x283, x284) = fiat_p384_scalar_mulx_u32(x2, 0x28266895); let mut x285: u32 = 0; let mut x286: u32 = 0; let (x285, x286) = fiat_p384_scalar_mulx_u32(x2, 0xd40d4917); let mut x287: u32 = 0; let mut x288: u32 = 0; let (x287, x288) = fiat_p384_scalar_mulx_u32(x2, 0x4aab1cc5); let mut x289: u32 = 0; let mut x290: u32 = 0; let (x289, x290) = fiat_p384_scalar_mulx_u32(x2, 0xbc3e483a); let mut x291: u32 = 0; let mut x292: u32 = 0; let (x291, x292) = fiat_p384_scalar_mulx_u32(x2, 0xfcb82947); let mut x293: u32 = 0; let mut x294: u32 = 0; let (x293, x294) = fiat_p384_scalar_mulx_u32(x2, 0xff3d81e5); let mut x295: u32 = 0; let mut x296: u32 = 0; let (x295, x296) = fiat_p384_scalar_mulx_u32(x2, 0xdf1aa419); let mut x297: u32 = 0; let mut x298: u32 = 0; let (x297, x298) = fiat_p384_scalar_mulx_u32(x2, 0x2d319b24); let mut x299: u32 = 0; let mut x300: u32 = 0; let (x299, x300) = fiat_p384_scalar_mulx_u32(x2, 0x19b409a9); let mut x301: u32 = 0; let mut x302: fiat_p384_scalar_u1 = 0; let (x301, x302) = fiat_p384_scalar_addcarryx_u32(0x0, x300, x297); let mut x303: u32 = 0; let mut x304: fiat_p384_scalar_u1 = 0; let (x303, x304) = fiat_p384_scalar_addcarryx_u32(x302, x298, x295); let mut x305: u32 = 0; let mut x306: fiat_p384_scalar_u1 = 0; let (x305, x306) = fiat_p384_scalar_addcarryx_u32(x304, x296, x293); let mut x307: u32 = 0; let mut x308: fiat_p384_scalar_u1 = 0; let (x307, x308) = fiat_p384_scalar_addcarryx_u32(x306, x294, x291); let mut x309: u32 = 0; let mut x310: fiat_p384_scalar_u1 = 0; let (x309, x310) = fiat_p384_scalar_addcarryx_u32(x308, x292, x289); let mut x311: u32 = 0; let mut x312: fiat_p384_scalar_u1 = 0; let (x311, x312) = fiat_p384_scalar_addcarryx_u32(x310, x290, x287); let mut x313: u32 = 0; let mut x314: fiat_p384_scalar_u1 = 0; let (x313, x314) = fiat_p384_scalar_addcarryx_u32(x312, x288, x285); let mut x315: u32 = 0; let mut x316: fiat_p384_scalar_u1 = 0; let (x315, x316) = fiat_p384_scalar_addcarryx_u32(x314, x286, x283); let mut x317: u32 = 0; let mut x318: fiat_p384_scalar_u1 = 0; let (x317, x318) = fiat_p384_scalar_addcarryx_u32(x316, x284, x281); let mut x319: u32 = 0; let mut x320: fiat_p384_scalar_u1 = 0; let (x319, x320) = fiat_p384_scalar_addcarryx_u32(x318, x282, x279); let mut x321: u32 = 0; let mut x322: fiat_p384_scalar_u1 = 0; let (x321, x322) = fiat_p384_scalar_addcarryx_u32(x320, x280, x277); let mut x323: u32 = 0; let mut x324: fiat_p384_scalar_u1 = 0; let (x323, x324) = fiat_p384_scalar_addcarryx_u32(0x0, x253, x299); let mut x325: u32 = 0; let mut x326: fiat_p384_scalar_u1 = 0; let (x325, x326) = fiat_p384_scalar_addcarryx_u32(x324, x255, x301); let mut x327: u32 = 0; let mut x328: fiat_p384_scalar_u1 = 0; let (x327, x328) = fiat_p384_scalar_addcarryx_u32(x326, x257, x303); let mut x329: u32 = 0; let mut x330: fiat_p384_scalar_u1 = 0; let (x329, x330) = fiat_p384_scalar_addcarryx_u32(x328, x259, x305); let mut x331: u32 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u32(x330, x261, x307); let mut x333: u32 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u32(x332, x263, x309); let mut x335: u32 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u32(x334, x265, x311); let mut x337: u32 = 0; let mut x338: fiat_p384_scalar_u1 = 0; let (x337, x338) = fiat_p384_scalar_addcarryx_u32(x336, x267, x313); let mut x339: u32 = 0; let mut x340: fiat_p384_scalar_u1 = 0; let (x339, x340) = fiat_p384_scalar_addcarryx_u32(x338, x269, x315); let mut x341: u32 = 0; let mut x342: fiat_p384_scalar_u1 = 0; let (x341, x342) = fiat_p384_scalar_addcarryx_u32(x340, x271, x317); let mut x343: u32 = 0; let mut x344: fiat_p384_scalar_u1 = 0; let (x343, x344) = fiat_p384_scalar_addcarryx_u32(x342, x273, x319); let mut x345: u32 = 0; let mut x346: fiat_p384_scalar_u1 = 0; let (x345, x346) = fiat_p384_scalar_addcarryx_u32(x344, x275, x321); let mut x347: u32 = 0; let mut x348: u32 = 0; let (x347, x348) = fiat_p384_scalar_mulx_u32(x323, 0xe88fdc45); let mut x349: u32 = 0; let mut x350: u32 = 0; let (x349, x350) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x351: u32 = 0; let mut x352: u32 = 0; let (x351, x352) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x353: u32 = 0; let mut x354: u32 = 0; let (x353, x354) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x355: u32 = 0; let mut x356: u32 = 0; let (x355, x356) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x357: u32 = 0; let mut x358: u32 = 0; let (x357, x358) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x359: u32 = 0; let mut x360: u32 = 0; let (x359, x360) = fiat_p384_scalar_mulx_u32(x347, 0xffffffff); let mut x361: u32 = 0; let mut x362: u32 = 0; let (x361, x362) = fiat_p384_scalar_mulx_u32(x347, 0xc7634d81); let mut x363: u32 = 0; let mut x364: u32 = 0; let (x363, x364) = fiat_p384_scalar_mulx_u32(x347, 0xf4372ddf); let mut x365: u32 = 0; let mut x366: u32 = 0; let (x365, x366) = fiat_p384_scalar_mulx_u32(x347, 0x581a0db2); let mut x367: u32 = 0; let mut x368: u32 = 0; let (x367, x368) = fiat_p384_scalar_mulx_u32(x347, 0x48b0a77a); let mut x369: u32 = 0; let mut x370: u32 = 0; let (x369, x370) = fiat_p384_scalar_mulx_u32(x347, 0xecec196a); let mut x371: u32 = 0; let mut x372: u32 = 0; let (x371, x372) = fiat_p384_scalar_mulx_u32(x347, 0xccc52973); let mut x373: u32 = 0; let mut x374: fiat_p384_scalar_u1 = 0; let (x373, x374) = fiat_p384_scalar_addcarryx_u32(0x0, x372, x369); let mut x375: u32 = 0; let mut x376: fiat_p384_scalar_u1 = 0; let (x375, x376) = fiat_p384_scalar_addcarryx_u32(x374, x370, x367); let mut x377: u32 = 0; let mut x378: fiat_p384_scalar_u1 = 0; let (x377, x378) = fiat_p384_scalar_addcarryx_u32(x376, x368, x365); let mut x379: u32 = 0; let mut x380: fiat_p384_scalar_u1 = 0; let (x379, x380) = fiat_p384_scalar_addcarryx_u32(x378, x366, x363); let mut x381: u32 = 0; let mut x382: fiat_p384_scalar_u1 = 0; let (x381, x382) = fiat_p384_scalar_addcarryx_u32(x380, x364, x361); let mut x383: u32 = 0; let mut x384: fiat_p384_scalar_u1 = 0; let (x383, x384) = fiat_p384_scalar_addcarryx_u32(x382, x362, x359); let mut x385: u32 = 0; let mut x386: fiat_p384_scalar_u1 = 0; let (x385, x386) = fiat_p384_scalar_addcarryx_u32(x384, x360, x357); let mut x387: u32 = 0; let mut x388: fiat_p384_scalar_u1 = 0; let (x387, x388) = fiat_p384_scalar_addcarryx_u32(x386, x358, x355); let mut x389: u32 = 0; let mut x390: fiat_p384_scalar_u1 = 0; let (x389, x390) = fiat_p384_scalar_addcarryx_u32(x388, x356, x353); let mut x391: u32 = 0; let mut x392: fiat_p384_scalar_u1 = 0; let (x391, x392) = fiat_p384_scalar_addcarryx_u32(x390, x354, x351); let mut x393: u32 = 0; let mut x394: fiat_p384_scalar_u1 = 0; let (x393, x394) = fiat_p384_scalar_addcarryx_u32(x392, x352, x349); let mut x395: u32 = 0; let mut x396: fiat_p384_scalar_u1 = 0; let (x395, x396) = fiat_p384_scalar_addcarryx_u32(0x0, x323, x371); let mut x397: u32 = 0; let mut x398: fiat_p384_scalar_u1 = 0; let (x397, x398) = fiat_p384_scalar_addcarryx_u32(x396, x325, x373); let mut x399: u32 = 0; let mut x400: fiat_p384_scalar_u1 = 0; let (x399, x400) = fiat_p384_scalar_addcarryx_u32(x398, x327, x375); let mut x401: u32 = 0; let mut x402: fiat_p384_scalar_u1 = 0; let (x401, x402) = fiat_p384_scalar_addcarryx_u32(x400, x329, x377); let mut x403: u32 = 0; let mut x404: fiat_p384_scalar_u1 = 0; let (x403, x404) = fiat_p384_scalar_addcarryx_u32(x402, x331, x379); let mut x405: u32 = 0; let mut x406: fiat_p384_scalar_u1 = 0; let (x405, x406) = fiat_p384_scalar_addcarryx_u32(x404, x333, x381); let mut x407: u32 = 0; let mut x408: fiat_p384_scalar_u1 = 0; let (x407, x408) = fiat_p384_scalar_addcarryx_u32(x406, x335, x383); let mut x409: u32 = 0; let mut x410: fiat_p384_scalar_u1 = 0; let (x409, x410) = fiat_p384_scalar_addcarryx_u32(x408, x337, x385); let mut x411: u32 = 0; let mut x412: fiat_p384_scalar_u1 = 0; let (x411, x412) = fiat_p384_scalar_addcarryx_u32(x410, x339, x387); let mut x413: u32 = 0; let mut x414: fiat_p384_scalar_u1 = 0; let (x413, x414) = fiat_p384_scalar_addcarryx_u32(x412, x341, x389); let mut x415: u32 = 0; let mut x416: fiat_p384_scalar_u1 = 0; let (x415, x416) = fiat_p384_scalar_addcarryx_u32(x414, x343, x391); let mut x417: u32 = 0; let mut x418: fiat_p384_scalar_u1 = 0; let (x417, x418) = fiat_p384_scalar_addcarryx_u32(x416, x345, x393); let mut x419: u32 = 0; let mut x420: fiat_p384_scalar_u1 = 0; let (x419, x420) = fiat_p384_scalar_addcarryx_u32( x418, (((x346 as u32) + (x276 as u32)) + ((x322 as u32) + x278)), ((x394 as u32) + x350), ); let mut x421: u32 = 0; let mut x422: u32 = 0; let (x421, x422) = fiat_p384_scalar_mulx_u32(x3, 0xc84ee01); let mut x423: u32 = 0; let mut x424: u32 = 0; let (x423, x424) = fiat_p384_scalar_mulx_u32(x3, 0x2b39bf21); let mut x425: u32 = 0; let mut x426: u32 = 0; let (x425, x426) = fiat_p384_scalar_mulx_u32(x3, 0x3fb05b7a); let mut x427: u32 = 0; let mut x428: u32 = 0; let (x427, x428) = fiat_p384_scalar_mulx_u32(x3, 0x28266895); let mut x429: u32 = 0; let mut x430: u32 = 0; let (x429, x430) = fiat_p384_scalar_mulx_u32(x3, 0xd40d4917); let mut x431: u32 = 0; let mut x432: u32 = 0; let (x431, x432) = fiat_p384_scalar_mulx_u32(x3, 0x4aab1cc5); let mut x433: u32 = 0; let mut x434: u32 = 0; let (x433, x434) = fiat_p384_scalar_mulx_u32(x3, 0xbc3e483a); let mut x435: u32 = 0; let mut x436: u32 = 0; let (x435, x436) = fiat_p384_scalar_mulx_u32(x3, 0xfcb82947); let mut x437: u32 = 0; let mut x438: u32 = 0; let (x437, x438) = fiat_p384_scalar_mulx_u32(x3, 0xff3d81e5); let mut x439: u32 = 0; let mut x440: u32 = 0; let (x439, x440) = fiat_p384_scalar_mulx_u32(x3, 0xdf1aa419); let mut x441: u32 = 0; let mut x442: u32 = 0; let (x441, x442) = fiat_p384_scalar_mulx_u32(x3, 0x2d319b24); let mut x443: u32 = 0; let mut x444: u32 = 0; let (x443, x444) = fiat_p384_scalar_mulx_u32(x3, 0x19b409a9); let mut x445: u32 = 0; let mut x446: fiat_p384_scalar_u1 = 0; let (x445, x446) = fiat_p384_scalar_addcarryx_u32(0x0, x444, x441); let mut x447: u32 = 0; let mut x448: fiat_p384_scalar_u1 = 0; let (x447, x448) = fiat_p384_scalar_addcarryx_u32(x446, x442, x439); let mut x449: u32 = 0; let mut x450: fiat_p384_scalar_u1 = 0; let (x449, x450) = fiat_p384_scalar_addcarryx_u32(x448, x440, x437); let mut x451: u32 = 0; let mut x452: fiat_p384_scalar_u1 = 0; let (x451, x452) = fiat_p384_scalar_addcarryx_u32(x450, x438, x435); let mut x453: u32 = 0; let mut x454: fiat_p384_scalar_u1 = 0; let (x453, x454) = fiat_p384_scalar_addcarryx_u32(x452, x436, x433); let mut x455: u32 = 0; let mut x456: fiat_p384_scalar_u1 = 0; let (x455, x456) = fiat_p384_scalar_addcarryx_u32(x454, x434, x431); let mut x457: u32 = 0; let mut x458: fiat_p384_scalar_u1 = 0; let (x457, x458) = fiat_p384_scalar_addcarryx_u32(x456, x432, x429); let mut x459: u32 = 0; let mut x460: fiat_p384_scalar_u1 = 0; let (x459, x460) = fiat_p384_scalar_addcarryx_u32(x458, x430, x427); let mut x461: u32 = 0; let mut x462: fiat_p384_scalar_u1 = 0; let (x461, x462) = fiat_p384_scalar_addcarryx_u32(x460, x428, x425); let mut x463: u32 = 0; let mut x464: fiat_p384_scalar_u1 = 0; let (x463, x464) = fiat_p384_scalar_addcarryx_u32(x462, x426, x423); let mut x465: u32 = 0; let mut x466: fiat_p384_scalar_u1 = 0; let (x465, x466) = fiat_p384_scalar_addcarryx_u32(x464, x424, x421); let mut x467: u32 = 0; let mut x468: fiat_p384_scalar_u1 = 0; let (x467, x468) = fiat_p384_scalar_addcarryx_u32(0x0, x397, x443); let mut x469: u32 = 0; let mut x470: fiat_p384_scalar_u1 = 0; let (x469, x470) = fiat_p384_scalar_addcarryx_u32(x468, x399, x445); let mut x471: u32 = 0; let mut x472: fiat_p384_scalar_u1 = 0; let (x471, x472) = fiat_p384_scalar_addcarryx_u32(x470, x401, x447); let mut x473: u32 = 0; let mut x474: fiat_p384_scalar_u1 = 0; let (x473, x474) = fiat_p384_scalar_addcarryx_u32(x472, x403, x449); let mut x475: u32 = 0; let mut x476: fiat_p384_scalar_u1 = 0; let (x475, x476) = fiat_p384_scalar_addcarryx_u32(x474, x405, x451); let mut x477: u32 = 0; let mut x478: fiat_p384_scalar_u1 = 0; let (x477, x478) = fiat_p384_scalar_addcarryx_u32(x476, x407, x453); let mut x479: u32 = 0; let mut x480: fiat_p384_scalar_u1 = 0; let (x479, x480) = fiat_p384_scalar_addcarryx_u32(x478, x409, x455); let mut x481: u32 = 0; let mut x482: fiat_p384_scalar_u1 = 0; let (x481, x482) = fiat_p384_scalar_addcarryx_u32(x480, x411, x457); let mut x483: u32 = 0; let mut x484: fiat_p384_scalar_u1 = 0; let (x483, x484) = fiat_p384_scalar_addcarryx_u32(x482, x413, x459); let mut x485: u32 = 0; let mut x486: fiat_p384_scalar_u1 = 0; let (x485, x486) = fiat_p384_scalar_addcarryx_u32(x484, x415, x461); let mut x487: u32 = 0; let mut x488: fiat_p384_scalar_u1 = 0; let (x487, x488) = fiat_p384_scalar_addcarryx_u32(x486, x417, x463); let mut x489: u32 = 0; let mut x490: fiat_p384_scalar_u1 = 0; let (x489, x490) = fiat_p384_scalar_addcarryx_u32(x488, x419, x465); let mut x491: u32 = 0; let mut x492: u32 = 0; let (x491, x492) = fiat_p384_scalar_mulx_u32(x467, 0xe88fdc45); let mut x493: u32 = 0; let mut x494: u32 = 0; let (x493, x494) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x495: u32 = 0; let mut x496: u32 = 0; let (x495, x496) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x497: u32 = 0; let mut x498: u32 = 0; let (x497, x498) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x499: u32 = 0; let mut x500: u32 = 0; let (x499, x500) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x501: u32 = 0; let mut x502: u32 = 0; let (x501, x502) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x503: u32 = 0; let mut x504: u32 = 0; let (x503, x504) = fiat_p384_scalar_mulx_u32(x491, 0xffffffff); let mut x505: u32 = 0; let mut x506: u32 = 0; let (x505, x506) = fiat_p384_scalar_mulx_u32(x491, 0xc7634d81); let mut x507: u32 = 0; let mut x508: u32 = 0; let (x507, x508) = fiat_p384_scalar_mulx_u32(x491, 0xf4372ddf); let mut x509: u32 = 0; let mut x510: u32 = 0; let (x509, x510) = fiat_p384_scalar_mulx_u32(x491, 0x581a0db2); let mut x511: u32 = 0; let mut x512: u32 = 0; let (x511, x512) = fiat_p384_scalar_mulx_u32(x491, 0x48b0a77a); let mut x513: u32 = 0; let mut x514: u32 = 0; let (x513, x514) = fiat_p384_scalar_mulx_u32(x491, 0xecec196a); let mut x515: u32 = 0; let mut x516: u32 = 0; let (x515, x516) = fiat_p384_scalar_mulx_u32(x491, 0xccc52973); let mut x517: u32 = 0; let mut x518: fiat_p384_scalar_u1 = 0; let (x517, x518) = fiat_p384_scalar_addcarryx_u32(0x0, x516, x513); let mut x519: u32 = 0; let mut x520: fiat_p384_scalar_u1 = 0; let (x519, x520) = fiat_p384_scalar_addcarryx_u32(x518, x514, x511); let mut x521: u32 = 0; let mut x522: fiat_p384_scalar_u1 = 0; let (x521, x522) = fiat_p384_scalar_addcarryx_u32(x520, x512, x509); let mut x523: u32 = 0; let mut x524: fiat_p384_scalar_u1 = 0; let (x523, x524) = fiat_p384_scalar_addcarryx_u32(x522, x510, x507); let mut x525: u32 = 0; let mut x526: fiat_p384_scalar_u1 = 0; let (x525, x526) = fiat_p384_scalar_addcarryx_u32(x524, x508, x505); let mut x527: u32 = 0; let mut x528: fiat_p384_scalar_u1 = 0; let (x527, x528) = fiat_p384_scalar_addcarryx_u32(x526, x506, x503); let mut x529: u32 = 0; let mut x530: fiat_p384_scalar_u1 = 0; let (x529, x530) = fiat_p384_scalar_addcarryx_u32(x528, x504, x501); let mut x531: u32 = 0; let mut x532: fiat_p384_scalar_u1 = 0; let (x531, x532) = fiat_p384_scalar_addcarryx_u32(x530, x502, x499); let mut x533: u32 = 0; let mut x534: fiat_p384_scalar_u1 = 0; let (x533, x534) = fiat_p384_scalar_addcarryx_u32(x532, x500, x497); let mut x535: u32 = 0; let mut x536: fiat_p384_scalar_u1 = 0; let (x535, x536) = fiat_p384_scalar_addcarryx_u32(x534, x498, x495); let mut x537: u32 = 0; let mut x538: fiat_p384_scalar_u1 = 0; let (x537, x538) = fiat_p384_scalar_addcarryx_u32(x536, x496, x493); let mut x539: u32 = 0; let mut x540: fiat_p384_scalar_u1 = 0; let (x539, x540) = fiat_p384_scalar_addcarryx_u32(0x0, x467, x515); let mut x541: u32 = 0; let mut x542: fiat_p384_scalar_u1 = 0; let (x541, x542) = fiat_p384_scalar_addcarryx_u32(x540, x469, x517); let mut x543: u32 = 0; let mut x544: fiat_p384_scalar_u1 = 0; let (x543, x544) = fiat_p384_scalar_addcarryx_u32(x542, x471, x519); let mut x545: u32 = 0; let mut x546: fiat_p384_scalar_u1 = 0; let (x545, x546) = fiat_p384_scalar_addcarryx_u32(x544, x473, x521); let mut x547: u32 = 0; let mut x548: fiat_p384_scalar_u1 = 0; let (x547, x548) = fiat_p384_scalar_addcarryx_u32(x546, x475, x523); let mut x549: u32 = 0; let mut x550: fiat_p384_scalar_u1 = 0; let (x549, x550) = fiat_p384_scalar_addcarryx_u32(x548, x477, x525); let mut x551: u32 = 0; let mut x552: fiat_p384_scalar_u1 = 0; let (x551, x552) = fiat_p384_scalar_addcarryx_u32(x550, x479, x527); let mut x553: u32 = 0; let mut x554: fiat_p384_scalar_u1 = 0; let (x553, x554) = fiat_p384_scalar_addcarryx_u32(x552, x481, x529); let mut x555: u32 = 0; let mut x556: fiat_p384_scalar_u1 = 0; let (x555, x556) = fiat_p384_scalar_addcarryx_u32(x554, x483, x531); let mut x557: u32 = 0; let mut x558: fiat_p384_scalar_u1 = 0; let (x557, x558) = fiat_p384_scalar_addcarryx_u32(x556, x485, x533); let mut x559: u32 = 0; let mut x560: fiat_p384_scalar_u1 = 0; let (x559, x560) = fiat_p384_scalar_addcarryx_u32(x558, x487, x535); let mut x561: u32 = 0; let mut x562: fiat_p384_scalar_u1 = 0; let (x561, x562) = fiat_p384_scalar_addcarryx_u32(x560, x489, x537); let mut x563: u32 = 0; let mut x564: fiat_p384_scalar_u1 = 0; let (x563, x564) = fiat_p384_scalar_addcarryx_u32( x562, (((x490 as u32) + (x420 as u32)) + ((x466 as u32) + x422)), ((x538 as u32) + x494), ); let mut x565: u32 = 0; let mut x566: u32 = 0; let (x565, x566) = fiat_p384_scalar_mulx_u32(x4, 0xc84ee01); let mut x567: u32 = 0; let mut x568: u32 = 0; let (x567, x568) = fiat_p384_scalar_mulx_u32(x4, 0x2b39bf21); let mut x569: u32 = 0; let mut x570: u32 = 0; let (x569, x570) = fiat_p384_scalar_mulx_u32(x4, 0x3fb05b7a); let mut x571: u32 = 0; let mut x572: u32 = 0; let (x571, x572) = fiat_p384_scalar_mulx_u32(x4, 0x28266895); let mut x573: u32 = 0; let mut x574: u32 = 0; let (x573, x574) = fiat_p384_scalar_mulx_u32(x4, 0xd40d4917); let mut x575: u32 = 0; let mut x576: u32 = 0; let (x575, x576) = fiat_p384_scalar_mulx_u32(x4, 0x4aab1cc5); let mut x577: u32 = 0; let mut x578: u32 = 0; let (x577, x578) = fiat_p384_scalar_mulx_u32(x4, 0xbc3e483a); let mut x579: u32 = 0; let mut x580: u32 = 0; let (x579, x580) = fiat_p384_scalar_mulx_u32(x4, 0xfcb82947); let mut x581: u32 = 0; let mut x582: u32 = 0; let (x581, x582) = fiat_p384_scalar_mulx_u32(x4, 0xff3d81e5); let mut x583: u32 = 0; let mut x584: u32 = 0; let (x583, x584) = fiat_p384_scalar_mulx_u32(x4, 0xdf1aa419); let mut x585: u32 = 0; let mut x586: u32 = 0; let (x585, x586) = fiat_p384_scalar_mulx_u32(x4, 0x2d319b24); let mut x587: u32 = 0; let mut x588: u32 = 0; let (x587, x588) = fiat_p384_scalar_mulx_u32(x4, 0x19b409a9); let mut x589: u32 = 0; let mut x590: fiat_p384_scalar_u1 = 0; let (x589, x590) = fiat_p384_scalar_addcarryx_u32(0x0, x588, x585); let mut x591: u32 = 0; let mut x592: fiat_p384_scalar_u1 = 0; let (x591, x592) = fiat_p384_scalar_addcarryx_u32(x590, x586, x583); let mut x593: u32 = 0; let mut x594: fiat_p384_scalar_u1 = 0; let (x593, x594) = fiat_p384_scalar_addcarryx_u32(x592, x584, x581); let mut x595: u32 = 0; let mut x596: fiat_p384_scalar_u1 = 0; let (x595, x596) = fiat_p384_scalar_addcarryx_u32(x594, x582, x579); let mut x597: u32 = 0; let mut x598: fiat_p384_scalar_u1 = 0; let (x597, x598) = fiat_p384_scalar_addcarryx_u32(x596, x580, x577); let mut x599: u32 = 0; let mut x600: fiat_p384_scalar_u1 = 0; let (x599, x600) = fiat_p384_scalar_addcarryx_u32(x598, x578, x575); let mut x601: u32 = 0; let mut x602: fiat_p384_scalar_u1 = 0; let (x601, x602) = fiat_p384_scalar_addcarryx_u32(x600, x576, x573); let mut x603: u32 = 0; let mut x604: fiat_p384_scalar_u1 = 0; let (x603, x604) = fiat_p384_scalar_addcarryx_u32(x602, x574, x571); let mut x605: u32 = 0; let mut x606: fiat_p384_scalar_u1 = 0; let (x605, x606) = fiat_p384_scalar_addcarryx_u32(x604, x572, x569); let mut x607: u32 = 0; let mut x608: fiat_p384_scalar_u1 = 0; let (x607, x608) = fiat_p384_scalar_addcarryx_u32(x606, x570, x567); let mut x609: u32 = 0; let mut x610: fiat_p384_scalar_u1 = 0; let (x609, x610) = fiat_p384_scalar_addcarryx_u32(x608, x568, x565); let mut x611: u32 = 0; let mut x612: fiat_p384_scalar_u1 = 0; let (x611, x612) = fiat_p384_scalar_addcarryx_u32(0x0, x541, x587); let mut x613: u32 = 0; let mut x614: fiat_p384_scalar_u1 = 0; let (x613, x614) = fiat_p384_scalar_addcarryx_u32(x612, x543, x589); let mut x615: u32 = 0; let mut x616: fiat_p384_scalar_u1 = 0; let (x615, x616) = fiat_p384_scalar_addcarryx_u32(x614, x545, x591); let mut x617: u32 = 0; let mut x618: fiat_p384_scalar_u1 = 0; let (x617, x618) = fiat_p384_scalar_addcarryx_u32(x616, x547, x593); let mut x619: u32 = 0; let mut x620: fiat_p384_scalar_u1 = 0; let (x619, x620) = fiat_p384_scalar_addcarryx_u32(x618, x549, x595); let mut x621: u32 = 0; let mut x622: fiat_p384_scalar_u1 = 0; let (x621, x622) = fiat_p384_scalar_addcarryx_u32(x620, x551, x597); let mut x623: u32 = 0; let mut x624: fiat_p384_scalar_u1 = 0; let (x623, x624) = fiat_p384_scalar_addcarryx_u32(x622, x553, x599); let mut x625: u32 = 0; let mut x626: fiat_p384_scalar_u1 = 0; let (x625, x626) = fiat_p384_scalar_addcarryx_u32(x624, x555, x601); let mut x627: u32 = 0; let mut x628: fiat_p384_scalar_u1 = 0; let (x627, x628) = fiat_p384_scalar_addcarryx_u32(x626, x557, x603); let mut x629: u32 = 0; let mut x630: fiat_p384_scalar_u1 = 0; let (x629, x630) = fiat_p384_scalar_addcarryx_u32(x628, x559, x605); let mut x631: u32 = 0; let mut x632: fiat_p384_scalar_u1 = 0; let (x631, x632) = fiat_p384_scalar_addcarryx_u32(x630, x561, x607); let mut x633: u32 = 0; let mut x634: fiat_p384_scalar_u1 = 0; let (x633, x634) = fiat_p384_scalar_addcarryx_u32(x632, x563, x609); let mut x635: u32 = 0; let mut x636: u32 = 0; let (x635, x636) = fiat_p384_scalar_mulx_u32(x611, 0xe88fdc45); let mut x637: u32 = 0; let mut x638: u32 = 0; let (x637, x638) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x639: u32 = 0; let mut x640: u32 = 0; let (x639, x640) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x641: u32 = 0; let mut x642: u32 = 0; let (x641, x642) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x643: u32 = 0; let mut x644: u32 = 0; let (x643, x644) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x645: u32 = 0; let mut x646: u32 = 0; let (x645, x646) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x647: u32 = 0; let mut x648: u32 = 0; let (x647, x648) = fiat_p384_scalar_mulx_u32(x635, 0xffffffff); let mut x649: u32 = 0; let mut x650: u32 = 0; let (x649, x650) = fiat_p384_scalar_mulx_u32(x635, 0xc7634d81); let mut x651: u32 = 0; let mut x652: u32 = 0; let (x651, x652) = fiat_p384_scalar_mulx_u32(x635, 0xf4372ddf); let mut x653: u32 = 0; let mut x654: u32 = 0; let (x653, x654) = fiat_p384_scalar_mulx_u32(x635, 0x581a0db2); let mut x655: u32 = 0; let mut x656: u32 = 0; let (x655, x656) = fiat_p384_scalar_mulx_u32(x635, 0x48b0a77a); let mut x657: u32 = 0; let mut x658: u32 = 0; let (x657, x658) = fiat_p384_scalar_mulx_u32(x635, 0xecec196a); let mut x659: u32 = 0; let mut x660: u32 = 0; let (x659, x660) = fiat_p384_scalar_mulx_u32(x635, 0xccc52973); let mut x661: u32 = 0; let mut x662: fiat_p384_scalar_u1 = 0; let (x661, x662) = fiat_p384_scalar_addcarryx_u32(0x0, x660, x657); let mut x663: u32 = 0; let mut x664: fiat_p384_scalar_u1 = 0; let (x663, x664) = fiat_p384_scalar_addcarryx_u32(x662, x658, x655); let mut x665: u32 = 0; let mut x666: fiat_p384_scalar_u1 = 0; let (x665, x666) = fiat_p384_scalar_addcarryx_u32(x664, x656, x653); let mut x667: u32 = 0; let mut x668: fiat_p384_scalar_u1 = 0; let (x667, x668) = fiat_p384_scalar_addcarryx_u32(x666, x654, x651); let mut x669: u32 = 0; let mut x670: fiat_p384_scalar_u1 = 0; let (x669, x670) = fiat_p384_scalar_addcarryx_u32(x668, x652, x649); let mut x671: u32 = 0; let mut x672: fiat_p384_scalar_u1 = 0; let (x671, x672) = fiat_p384_scalar_addcarryx_u32(x670, x650, x647); let mut x673: u32 = 0; let mut x674: fiat_p384_scalar_u1 = 0; let (x673, x674) = fiat_p384_scalar_addcarryx_u32(x672, x648, x645); let mut x675: u32 = 0; let mut x676: fiat_p384_scalar_u1 = 0; let (x675, x676) = fiat_p384_scalar_addcarryx_u32(x674, x646, x643); let mut x677: u32 = 0; let mut x678: fiat_p384_scalar_u1 = 0; let (x677, x678) = fiat_p384_scalar_addcarryx_u32(x676, x644, x641); let mut x679: u32 = 0; let mut x680: fiat_p384_scalar_u1 = 0; let (x679, x680) = fiat_p384_scalar_addcarryx_u32(x678, x642, x639); let mut x681: u32 = 0; let mut x682: fiat_p384_scalar_u1 = 0; let (x681, x682) = fiat_p384_scalar_addcarryx_u32(x680, x640, x637); let mut x683: u32 = 0; let mut x684: fiat_p384_scalar_u1 = 0; let (x683, x684) = fiat_p384_scalar_addcarryx_u32(0x0, x611, x659); let mut x685: u32 = 0; let mut x686: fiat_p384_scalar_u1 = 0; let (x685, x686) = fiat_p384_scalar_addcarryx_u32(x684, x613, x661); let mut x687: u32 = 0; let mut x688: fiat_p384_scalar_u1 = 0; let (x687, x688) = fiat_p384_scalar_addcarryx_u32(x686, x615, x663); let mut x689: u32 = 0; let mut x690: fiat_p384_scalar_u1 = 0; let (x689, x690) = fiat_p384_scalar_addcarryx_u32(x688, x617, x665); let mut x691: u32 = 0; let mut x692: fiat_p384_scalar_u1 = 0; let (x691, x692) = fiat_p384_scalar_addcarryx_u32(x690, x619, x667); let mut x693: u32 = 0; let mut x694: fiat_p384_scalar_u1 = 0; let (x693, x694) = fiat_p384_scalar_addcarryx_u32(x692, x621, x669); let mut x695: u32 = 0; let mut x696: fiat_p384_scalar_u1 = 0; let (x695, x696) = fiat_p384_scalar_addcarryx_u32(x694, x623, x671); let mut x697: u32 = 0; let mut x698: fiat_p384_scalar_u1 = 0; let (x697, x698) = fiat_p384_scalar_addcarryx_u32(x696, x625, x673); let mut x699: u32 = 0; let mut x700: fiat_p384_scalar_u1 = 0; let (x699, x700) = fiat_p384_scalar_addcarryx_u32(x698, x627, x675); let mut x701: u32 = 0; let mut x702: fiat_p384_scalar_u1 = 0; let (x701, x702) = fiat_p384_scalar_addcarryx_u32(x700, x629, x677); let mut x703: u32 = 0; let mut x704: fiat_p384_scalar_u1 = 0; let (x703, x704) = fiat_p384_scalar_addcarryx_u32(x702, x631, x679); let mut x705: u32 = 0; let mut x706: fiat_p384_scalar_u1 = 0; let (x705, x706) = fiat_p384_scalar_addcarryx_u32(x704, x633, x681); let mut x707: u32 = 0; let mut x708: fiat_p384_scalar_u1 = 0; let (x707, x708) = fiat_p384_scalar_addcarryx_u32( x706, (((x634 as u32) + (x564 as u32)) + ((x610 as u32) + x566)), ((x682 as u32) + x638), ); let mut x709: u32 = 0; let mut x710: u32 = 0; let (x709, x710) = fiat_p384_scalar_mulx_u32(x5, 0xc84ee01); let mut x711: u32 = 0; let mut x712: u32 = 0; let (x711, x712) = fiat_p384_scalar_mulx_u32(x5, 0x2b39bf21); let mut x713: u32 = 0; let mut x714: u32 = 0; let (x713, x714) = fiat_p384_scalar_mulx_u32(x5, 0x3fb05b7a); let mut x715: u32 = 0; let mut x716: u32 = 0; let (x715, x716) = fiat_p384_scalar_mulx_u32(x5, 0x28266895); let mut x717: u32 = 0; let mut x718: u32 = 0; let (x717, x718) = fiat_p384_scalar_mulx_u32(x5, 0xd40d4917); let mut x719: u32 = 0; let mut x720: u32 = 0; let (x719, x720) = fiat_p384_scalar_mulx_u32(x5, 0x4aab1cc5); let mut x721: u32 = 0; let mut x722: u32 = 0; let (x721, x722) = fiat_p384_scalar_mulx_u32(x5, 0xbc3e483a); let mut x723: u32 = 0; let mut x724: u32 = 0; let (x723, x724) = fiat_p384_scalar_mulx_u32(x5, 0xfcb82947); let mut x725: u32 = 0; let mut x726: u32 = 0; let (x725, x726) = fiat_p384_scalar_mulx_u32(x5, 0xff3d81e5); let mut x727: u32 = 0; let mut x728: u32 = 0; let (x727, x728) = fiat_p384_scalar_mulx_u32(x5, 0xdf1aa419); let mut x729: u32 = 0; let mut x730: u32 = 0; let (x729, x730) = fiat_p384_scalar_mulx_u32(x5, 0x2d319b24); let mut x731: u32 = 0; let mut x732: u32 = 0; let (x731, x732) = fiat_p384_scalar_mulx_u32(x5, 0x19b409a9); let mut x733: u32 = 0; let mut x734: fiat_p384_scalar_u1 = 0; let (x733, x734) = fiat_p384_scalar_addcarryx_u32(0x0, x732, x729); let mut x735: u32 = 0; let mut x736: fiat_p384_scalar_u1 = 0; let (x735, x736) = fiat_p384_scalar_addcarryx_u32(x734, x730, x727); let mut x737: u32 = 0; let mut x738: fiat_p384_scalar_u1 = 0; let (x737, x738) = fiat_p384_scalar_addcarryx_u32(x736, x728, x725); let mut x739: u32 = 0; let mut x740: fiat_p384_scalar_u1 = 0; let (x739, x740) = fiat_p384_scalar_addcarryx_u32(x738, x726, x723); let mut x741: u32 = 0; let mut x742: fiat_p384_scalar_u1 = 0; let (x741, x742) = fiat_p384_scalar_addcarryx_u32(x740, x724, x721); let mut x743: u32 = 0; let mut x744: fiat_p384_scalar_u1 = 0; let (x743, x744) = fiat_p384_scalar_addcarryx_u32(x742, x722, x719); let mut x745: u32 = 0; let mut x746: fiat_p384_scalar_u1 = 0; let (x745, x746) = fiat_p384_scalar_addcarryx_u32(x744, x720, x717); let mut x747: u32 = 0; let mut x748: fiat_p384_scalar_u1 = 0; let (x747, x748) = fiat_p384_scalar_addcarryx_u32(x746, x718, x715); let mut x749: u32 = 0; let mut x750: fiat_p384_scalar_u1 = 0; let (x749, x750) = fiat_p384_scalar_addcarryx_u32(x748, x716, x713); let mut x751: u32 = 0; let mut x752: fiat_p384_scalar_u1 = 0; let (x751, x752) = fiat_p384_scalar_addcarryx_u32(x750, x714, x711); let mut x753: u32 = 0; let mut x754: fiat_p384_scalar_u1 = 0; let (x753, x754) = fiat_p384_scalar_addcarryx_u32(x752, x712, x709); let mut x755: u32 = 0; let mut x756: fiat_p384_scalar_u1 = 0; let (x755, x756) = fiat_p384_scalar_addcarryx_u32(0x0, x685, x731); let mut x757: u32 = 0; let mut x758: fiat_p384_scalar_u1 = 0; let (x757, x758) = fiat_p384_scalar_addcarryx_u32(x756, x687, x733); let mut x759: u32 = 0; let mut x760: fiat_p384_scalar_u1 = 0; let (x759, x760) = fiat_p384_scalar_addcarryx_u32(x758, x689, x735); let mut x761: u32 = 0; let mut x762: fiat_p384_scalar_u1 = 0; let (x761, x762) = fiat_p384_scalar_addcarryx_u32(x760, x691, x737); let mut x763: u32 = 0; let mut x764: fiat_p384_scalar_u1 = 0; let (x763, x764) = fiat_p384_scalar_addcarryx_u32(x762, x693, x739); let mut x765: u32 = 0; let mut x766: fiat_p384_scalar_u1 = 0; let (x765, x766) = fiat_p384_scalar_addcarryx_u32(x764, x695, x741); let mut x767: u32 = 0; let mut x768: fiat_p384_scalar_u1 = 0; let (x767, x768) = fiat_p384_scalar_addcarryx_u32(x766, x697, x743); let mut x769: u32 = 0; let mut x770: fiat_p384_scalar_u1 = 0; let (x769, x770) = fiat_p384_scalar_addcarryx_u32(x768, x699, x745); let mut x771: u32 = 0; let mut x772: fiat_p384_scalar_u1 = 0; let (x771, x772) = fiat_p384_scalar_addcarryx_u32(x770, x701, x747); let mut x773: u32 = 0; let mut x774: fiat_p384_scalar_u1 = 0; let (x773, x774) = fiat_p384_scalar_addcarryx_u32(x772, x703, x749); let mut x775: u32 = 0; let mut x776: fiat_p384_scalar_u1 = 0; let (x775, x776) = fiat_p384_scalar_addcarryx_u32(x774, x705, x751); let mut x777: u32 = 0; let mut x778: fiat_p384_scalar_u1 = 0; let (x777, x778) = fiat_p384_scalar_addcarryx_u32(x776, x707, x753); let mut x779: u32 = 0; let mut x780: u32 = 0; let (x779, x780) = fiat_p384_scalar_mulx_u32(x755, 0xe88fdc45); let mut x781: u32 = 0; let mut x782: u32 = 0; let (x781, x782) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x783: u32 = 0; let mut x784: u32 = 0; let (x783, x784) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x785: u32 = 0; let mut x786: u32 = 0; let (x785, x786) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x787: u32 = 0; let mut x788: u32 = 0; let (x787, x788) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x789: u32 = 0; let mut x790: u32 = 0; let (x789, x790) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x791: u32 = 0; let mut x792: u32 = 0; let (x791, x792) = fiat_p384_scalar_mulx_u32(x779, 0xffffffff); let mut x793: u32 = 0; let mut x794: u32 = 0; let (x793, x794) = fiat_p384_scalar_mulx_u32(x779, 0xc7634d81); let mut x795: u32 = 0; let mut x796: u32 = 0; let (x795, x796) = fiat_p384_scalar_mulx_u32(x779, 0xf4372ddf); let mut x797: u32 = 0; let mut x798: u32 = 0; let (x797, x798) = fiat_p384_scalar_mulx_u32(x779, 0x581a0db2); let mut x799: u32 = 0; let mut x800: u32 = 0; let (x799, x800) = fiat_p384_scalar_mulx_u32(x779, 0x48b0a77a); let mut x801: u32 = 0; let mut x802: u32 = 0; let (x801, x802) = fiat_p384_scalar_mulx_u32(x779, 0xecec196a); let mut x803: u32 = 0; let mut x804: u32 = 0; let (x803, x804) = fiat_p384_scalar_mulx_u32(x779, 0xccc52973); let mut x805: u32 = 0; let mut x806: fiat_p384_scalar_u1 = 0; let (x805, x806) = fiat_p384_scalar_addcarryx_u32(0x0, x804, x801); let mut x807: u32 = 0; let mut x808: fiat_p384_scalar_u1 = 0; let (x807, x808) = fiat_p384_scalar_addcarryx_u32(x806, x802, x799); let mut x809: u32 = 0; let mut x810: fiat_p384_scalar_u1 = 0; let (x809, x810) = fiat_p384_scalar_addcarryx_u32(x808, x800, x797); let mut x811: u32 = 0; let mut x812: fiat_p384_scalar_u1 = 0; let (x811, x812) = fiat_p384_scalar_addcarryx_u32(x810, x798, x795); let mut x813: u32 = 0; let mut x814: fiat_p384_scalar_u1 = 0; let (x813, x814) = fiat_p384_scalar_addcarryx_u32(x812, x796, x793); let mut x815: u32 = 0; let mut x816: fiat_p384_scalar_u1 = 0; let (x815, x816) = fiat_p384_scalar_addcarryx_u32(x814, x794, x791); let mut x817: u32 = 0; let mut x818: fiat_p384_scalar_u1 = 0; let (x817, x818) = fiat_p384_scalar_addcarryx_u32(x816, x792, x789); let mut x819: u32 = 0; let mut x820: fiat_p384_scalar_u1 = 0; let (x819, x820) = fiat_p384_scalar_addcarryx_u32(x818, x790, x787); let mut x821: u32 = 0; let mut x822: fiat_p384_scalar_u1 = 0; let (x821, x822) = fiat_p384_scalar_addcarryx_u32(x820, x788, x785); let mut x823: u32 = 0; let mut x824: fiat_p384_scalar_u1 = 0; let (x823, x824) = fiat_p384_scalar_addcarryx_u32(x822, x786, x783); let mut x825: u32 = 0; let mut x826: fiat_p384_scalar_u1 = 0; let (x825, x826) = fiat_p384_scalar_addcarryx_u32(x824, x784, x781); let mut x827: u32 = 0; let mut x828: fiat_p384_scalar_u1 = 0; let (x827, x828) = fiat_p384_scalar_addcarryx_u32(0x0, x755, x803); let mut x829: u32 = 0; let mut x830: fiat_p384_scalar_u1 = 0; let (x829, x830) = fiat_p384_scalar_addcarryx_u32(x828, x757, x805); let mut x831: u32 = 0; let mut x832: fiat_p384_scalar_u1 = 0; let (x831, x832) = fiat_p384_scalar_addcarryx_u32(x830, x759, x807); let mut x833: u32 = 0; let mut x834: fiat_p384_scalar_u1 = 0; let (x833, x834) = fiat_p384_scalar_addcarryx_u32(x832, x761, x809); let mut x835: u32 = 0; let mut x836: fiat_p384_scalar_u1 = 0; let (x835, x836) = fiat_p384_scalar_addcarryx_u32(x834, x763, x811); let mut x837: u32 = 0; let mut x838: fiat_p384_scalar_u1 = 0; let (x837, x838) = fiat_p384_scalar_addcarryx_u32(x836, x765, x813); let mut x839: u32 = 0; let mut x840: fiat_p384_scalar_u1 = 0; let (x839, x840) = fiat_p384_scalar_addcarryx_u32(x838, x767, x815); let mut x841: u32 = 0; let mut x842: fiat_p384_scalar_u1 = 0; let (x841, x842) = fiat_p384_scalar_addcarryx_u32(x840, x769, x817); let mut x843: u32 = 0; let mut x844: fiat_p384_scalar_u1 = 0; let (x843, x844) = fiat_p384_scalar_addcarryx_u32(x842, x771, x819); let mut x845: u32 = 0; let mut x846: fiat_p384_scalar_u1 = 0; let (x845, x846) = fiat_p384_scalar_addcarryx_u32(x844, x773, x821); let mut x847: u32 = 0; let mut x848: fiat_p384_scalar_u1 = 0; let (x847, x848) = fiat_p384_scalar_addcarryx_u32(x846, x775, x823); let mut x849: u32 = 0; let mut x850: fiat_p384_scalar_u1 = 0; let (x849, x850) = fiat_p384_scalar_addcarryx_u32(x848, x777, x825); let mut x851: u32 = 0; let mut x852: fiat_p384_scalar_u1 = 0; let (x851, x852) = fiat_p384_scalar_addcarryx_u32( x850, (((x778 as u32) + (x708 as u32)) + ((x754 as u32) + x710)), ((x826 as u32) + x782), ); let mut x853: u32 = 0; let mut x854: u32 = 0; let (x853, x854) = fiat_p384_scalar_mulx_u32(x6, 0xc84ee01); let mut x855: u32 = 0; let mut x856: u32 = 0; let (x855, x856) = fiat_p384_scalar_mulx_u32(x6, 0x2b39bf21); let mut x857: u32 = 0; let mut x858: u32 = 0; let (x857, x858) = fiat_p384_scalar_mulx_u32(x6, 0x3fb05b7a); let mut x859: u32 = 0; let mut x860: u32 = 0; let (x859, x860) = fiat_p384_scalar_mulx_u32(x6, 0x28266895); let mut x861: u32 = 0; let mut x862: u32 = 0; let (x861, x862) = fiat_p384_scalar_mulx_u32(x6, 0xd40d4917); let mut x863: u32 = 0; let mut x864: u32 = 0; let (x863, x864) = fiat_p384_scalar_mulx_u32(x6, 0x4aab1cc5); let mut x865: u32 = 0; let mut x866: u32 = 0; let (x865, x866) = fiat_p384_scalar_mulx_u32(x6, 0xbc3e483a); let mut x867: u32 = 0; let mut x868: u32 = 0; let (x867, x868) = fiat_p384_scalar_mulx_u32(x6, 0xfcb82947); let mut x869: u32 = 0; let mut x870: u32 = 0; let (x869, x870) = fiat_p384_scalar_mulx_u32(x6, 0xff3d81e5); let mut x871: u32 = 0; let mut x872: u32 = 0; let (x871, x872) = fiat_p384_scalar_mulx_u32(x6, 0xdf1aa419); let mut x873: u32 = 0; let mut x874: u32 = 0; let (x873, x874) = fiat_p384_scalar_mulx_u32(x6, 0x2d319b24); let mut x875: u32 = 0; let mut x876: u32 = 0; let (x875, x876) = fiat_p384_scalar_mulx_u32(x6, 0x19b409a9); let mut x877: u32 = 0; let mut x878: fiat_p384_scalar_u1 = 0; let (x877, x878) = fiat_p384_scalar_addcarryx_u32(0x0, x876, x873); let mut x879: u32 = 0; let mut x880: fiat_p384_scalar_u1 = 0; let (x879, x880) = fiat_p384_scalar_addcarryx_u32(x878, x874, x871); let mut x881: u32 = 0; let mut x882: fiat_p384_scalar_u1 = 0; let (x881, x882) = fiat_p384_scalar_addcarryx_u32(x880, x872, x869); let mut x883: u32 = 0; let mut x884: fiat_p384_scalar_u1 = 0; let (x883, x884) = fiat_p384_scalar_addcarryx_u32(x882, x870, x867); let mut x885: u32 = 0; let mut x886: fiat_p384_scalar_u1 = 0; let (x885, x886) = fiat_p384_scalar_addcarryx_u32(x884, x868, x865); let mut x887: u32 = 0; let mut x888: fiat_p384_scalar_u1 = 0; let (x887, x888) = fiat_p384_scalar_addcarryx_u32(x886, x866, x863); let mut x889: u32 = 0; let mut x890: fiat_p384_scalar_u1 = 0; let (x889, x890) = fiat_p384_scalar_addcarryx_u32(x888, x864, x861); let mut x891: u32 = 0; let mut x892: fiat_p384_scalar_u1 = 0; let (x891, x892) = fiat_p384_scalar_addcarryx_u32(x890, x862, x859); let mut x893: u32 = 0; let mut x894: fiat_p384_scalar_u1 = 0; let (x893, x894) = fiat_p384_scalar_addcarryx_u32(x892, x860, x857); let mut x895: u32 = 0; let mut x896: fiat_p384_scalar_u1 = 0; let (x895, x896) = fiat_p384_scalar_addcarryx_u32(x894, x858, x855); let mut x897: u32 = 0; let mut x898: fiat_p384_scalar_u1 = 0; let (x897, x898) = fiat_p384_scalar_addcarryx_u32(x896, x856, x853); let mut x899: u32 = 0; let mut x900: fiat_p384_scalar_u1 = 0; let (x899, x900) = fiat_p384_scalar_addcarryx_u32(0x0, x829, x875); let mut x901: u32 = 0; let mut x902: fiat_p384_scalar_u1 = 0; let (x901, x902) = fiat_p384_scalar_addcarryx_u32(x900, x831, x877); let mut x903: u32 = 0; let mut x904: fiat_p384_scalar_u1 = 0; let (x903, x904) = fiat_p384_scalar_addcarryx_u32(x902, x833, x879); let mut x905: u32 = 0; let mut x906: fiat_p384_scalar_u1 = 0; let (x905, x906) = fiat_p384_scalar_addcarryx_u32(x904, x835, x881); let mut x907: u32 = 0; let mut x908: fiat_p384_scalar_u1 = 0; let (x907, x908) = fiat_p384_scalar_addcarryx_u32(x906, x837, x883); let mut x909: u32 = 0; let mut x910: fiat_p384_scalar_u1 = 0; let (x909, x910) = fiat_p384_scalar_addcarryx_u32(x908, x839, x885); let mut x911: u32 = 0; let mut x912: fiat_p384_scalar_u1 = 0; let (x911, x912) = fiat_p384_scalar_addcarryx_u32(x910, x841, x887); let mut x913: u32 = 0; let mut x914: fiat_p384_scalar_u1 = 0; let (x913, x914) = fiat_p384_scalar_addcarryx_u32(x912, x843, x889); let mut x915: u32 = 0; let mut x916: fiat_p384_scalar_u1 = 0; let (x915, x916) = fiat_p384_scalar_addcarryx_u32(x914, x845, x891); let mut x917: u32 = 0; let mut x918: fiat_p384_scalar_u1 = 0; let (x917, x918) = fiat_p384_scalar_addcarryx_u32(x916, x847, x893); let mut x919: u32 = 0; let mut x920: fiat_p384_scalar_u1 = 0; let (x919, x920) = fiat_p384_scalar_addcarryx_u32(x918, x849, x895); let mut x921: u32 = 0; let mut x922: fiat_p384_scalar_u1 = 0; let (x921, x922) = fiat_p384_scalar_addcarryx_u32(x920, x851, x897); let mut x923: u32 = 0; let mut x924: u32 = 0; let (x923, x924) = fiat_p384_scalar_mulx_u32(x899, 0xe88fdc45); let mut x925: u32 = 0; let mut x926: u32 = 0; let (x925, x926) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x927: u32 = 0; let mut x928: u32 = 0; let (x927, x928) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x929: u32 = 0; let mut x930: u32 = 0; let (x929, x930) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x931: u32 = 0; let mut x932: u32 = 0; let (x931, x932) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x933: u32 = 0; let mut x934: u32 = 0; let (x933, x934) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x935: u32 = 0; let mut x936: u32 = 0; let (x935, x936) = fiat_p384_scalar_mulx_u32(x923, 0xffffffff); let mut x937: u32 = 0; let mut x938: u32 = 0; let (x937, x938) = fiat_p384_scalar_mulx_u32(x923, 0xc7634d81); let mut x939: u32 = 0; let mut x940: u32 = 0; let (x939, x940) = fiat_p384_scalar_mulx_u32(x923, 0xf4372ddf); let mut x941: u32 = 0; let mut x942: u32 = 0; let (x941, x942) = fiat_p384_scalar_mulx_u32(x923, 0x581a0db2); let mut x943: u32 = 0; let mut x944: u32 = 0; let (x943, x944) = fiat_p384_scalar_mulx_u32(x923, 0x48b0a77a); let mut x945: u32 = 0; let mut x946: u32 = 0; let (x945, x946) = fiat_p384_scalar_mulx_u32(x923, 0xecec196a); let mut x947: u32 = 0; let mut x948: u32 = 0; let (x947, x948) = fiat_p384_scalar_mulx_u32(x923, 0xccc52973); let mut x949: u32 = 0; let mut x950: fiat_p384_scalar_u1 = 0; let (x949, x950) = fiat_p384_scalar_addcarryx_u32(0x0, x948, x945); let mut x951: u32 = 0; let mut x952: fiat_p384_scalar_u1 = 0; let (x951, x952) = fiat_p384_scalar_addcarryx_u32(x950, x946, x943); let mut x953: u32 = 0; let mut x954: fiat_p384_scalar_u1 = 0; let (x953, x954) = fiat_p384_scalar_addcarryx_u32(x952, x944, x941); let mut x955: u32 = 0; let mut x956: fiat_p384_scalar_u1 = 0; let (x955, x956) = fiat_p384_scalar_addcarryx_u32(x954, x942, x939); let mut x957: u32 = 0; let mut x958: fiat_p384_scalar_u1 = 0; let (x957, x958) = fiat_p384_scalar_addcarryx_u32(x956, x940, x937); let mut x959: u32 = 0; let mut x960: fiat_p384_scalar_u1 = 0; let (x959, x960) = fiat_p384_scalar_addcarryx_u32(x958, x938, x935); let mut x961: u32 = 0; let mut x962: fiat_p384_scalar_u1 = 0; let (x961, x962) = fiat_p384_scalar_addcarryx_u32(x960, x936, x933); let mut x963: u32 = 0; let mut x964: fiat_p384_scalar_u1 = 0; let (x963, x964) = fiat_p384_scalar_addcarryx_u32(x962, x934, x931); let mut x965: u32 = 0; let mut x966: fiat_p384_scalar_u1 = 0; let (x965, x966) = fiat_p384_scalar_addcarryx_u32(x964, x932, x929); let mut x967: u32 = 0; let mut x968: fiat_p384_scalar_u1 = 0; let (x967, x968) = fiat_p384_scalar_addcarryx_u32(x966, x930, x927); let mut x969: u32 = 0; let mut x970: fiat_p384_scalar_u1 = 0; let (x969, x970) = fiat_p384_scalar_addcarryx_u32(x968, x928, x925); let mut x971: u32 = 0; let mut x972: fiat_p384_scalar_u1 = 0; let (x971, x972) = fiat_p384_scalar_addcarryx_u32(0x0, x899, x947); let mut x973: u32 = 0; let mut x974: fiat_p384_scalar_u1 = 0; let (x973, x974) = fiat_p384_scalar_addcarryx_u32(x972, x901, x949); let mut x975: u32 = 0; let mut x976: fiat_p384_scalar_u1 = 0; let (x975, x976) = fiat_p384_scalar_addcarryx_u32(x974, x903, x951); let mut x977: u32 = 0; let mut x978: fiat_p384_scalar_u1 = 0; let (x977, x978) = fiat_p384_scalar_addcarryx_u32(x976, x905, x953); let mut x979: u32 = 0; let mut x980: fiat_p384_scalar_u1 = 0; let (x979, x980) = fiat_p384_scalar_addcarryx_u32(x978, x907, x955); let mut x981: u32 = 0; let mut x982: fiat_p384_scalar_u1 = 0; let (x981, x982) = fiat_p384_scalar_addcarryx_u32(x980, x909, x957); let mut x983: u32 = 0; let mut x984: fiat_p384_scalar_u1 = 0; let (x983, x984) = fiat_p384_scalar_addcarryx_u32(x982, x911, x959); let mut x985: u32 = 0; let mut x986: fiat_p384_scalar_u1 = 0; let (x985, x986) = fiat_p384_scalar_addcarryx_u32(x984, x913, x961); let mut x987: u32 = 0; let mut x988: fiat_p384_scalar_u1 = 0; let (x987, x988) = fiat_p384_scalar_addcarryx_u32(x986, x915, x963); let mut x989: u32 = 0; let mut x990: fiat_p384_scalar_u1 = 0; let (x989, x990) = fiat_p384_scalar_addcarryx_u32(x988, x917, x965); let mut x991: u32 = 0; let mut x992: fiat_p384_scalar_u1 = 0; let (x991, x992) = fiat_p384_scalar_addcarryx_u32(x990, x919, x967); let mut x993: u32 = 0; let mut x994: fiat_p384_scalar_u1 = 0; let (x993, x994) = fiat_p384_scalar_addcarryx_u32(x992, x921, x969); let mut x995: u32 = 0; let mut x996: fiat_p384_scalar_u1 = 0; let (x995, x996) = fiat_p384_scalar_addcarryx_u32( x994, (((x922 as u32) + (x852 as u32)) + ((x898 as u32) + x854)), ((x970 as u32) + x926), ); let mut x997: u32 = 0; let mut x998: u32 = 0; let (x997, x998) = fiat_p384_scalar_mulx_u32(x7, 0xc84ee01); let mut x999: u32 = 0; let mut x1000: u32 = 0; let (x999, x1000) = fiat_p384_scalar_mulx_u32(x7, 0x2b39bf21); let mut x1001: u32 = 0; let mut x1002: u32 = 0; let (x1001, x1002) = fiat_p384_scalar_mulx_u32(x7, 0x3fb05b7a); let mut x1003: u32 = 0; let mut x1004: u32 = 0; let (x1003, x1004) = fiat_p384_scalar_mulx_u32(x7, 0x28266895); let mut x1005: u32 = 0; let mut x1006: u32 = 0; let (x1005, x1006) = fiat_p384_scalar_mulx_u32(x7, 0xd40d4917); let mut x1007: u32 = 0; let mut x1008: u32 = 0; let (x1007, x1008) = fiat_p384_scalar_mulx_u32(x7, 0x4aab1cc5); let mut x1009: u32 = 0; let mut x1010: u32 = 0; let (x1009, x1010) = fiat_p384_scalar_mulx_u32(x7, 0xbc3e483a); let mut x1011: u32 = 0; let mut x1012: u32 = 0; let (x1011, x1012) = fiat_p384_scalar_mulx_u32(x7, 0xfcb82947); let mut x1013: u32 = 0; let mut x1014: u32 = 0; let (x1013, x1014) = fiat_p384_scalar_mulx_u32(x7, 0xff3d81e5); let mut x1015: u32 = 0; let mut x1016: u32 = 0; let (x1015, x1016) = fiat_p384_scalar_mulx_u32(x7, 0xdf1aa419); let mut x1017: u32 = 0; let mut x1018: u32 = 0; let (x1017, x1018) = fiat_p384_scalar_mulx_u32(x7, 0x2d319b24); let mut x1019: u32 = 0; let mut x1020: u32 = 0; let (x1019, x1020) = fiat_p384_scalar_mulx_u32(x7, 0x19b409a9); let mut x1021: u32 = 0; let mut x1022: fiat_p384_scalar_u1 = 0; let (x1021, x1022) = fiat_p384_scalar_addcarryx_u32(0x0, x1020, x1017); let mut x1023: u32 = 0; let mut x1024: fiat_p384_scalar_u1 = 0; let (x1023, x1024) = fiat_p384_scalar_addcarryx_u32(x1022, x1018, x1015); let mut x1025: u32 = 0; let mut x1026: fiat_p384_scalar_u1 = 0; let (x1025, x1026) = fiat_p384_scalar_addcarryx_u32(x1024, x1016, x1013); let mut x1027: u32 = 0; let mut x1028: fiat_p384_scalar_u1 = 0; let (x1027, x1028) = fiat_p384_scalar_addcarryx_u32(x1026, x1014, x1011); let mut x1029: u32 = 0; let mut x1030: fiat_p384_scalar_u1 = 0; let (x1029, x1030) = fiat_p384_scalar_addcarryx_u32(x1028, x1012, x1009); let mut x1031: u32 = 0; let mut x1032: fiat_p384_scalar_u1 = 0; let (x1031, x1032) = fiat_p384_scalar_addcarryx_u32(x1030, x1010, x1007); let mut x1033: u32 = 0; let mut x1034: fiat_p384_scalar_u1 = 0; let (x1033, x1034) = fiat_p384_scalar_addcarryx_u32(x1032, x1008, x1005); let mut x1035: u32 = 0; let mut x1036: fiat_p384_scalar_u1 = 0; let (x1035, x1036) = fiat_p384_scalar_addcarryx_u32(x1034, x1006, x1003); let mut x1037: u32 = 0; let mut x1038: fiat_p384_scalar_u1 = 0; let (x1037, x1038) = fiat_p384_scalar_addcarryx_u32(x1036, x1004, x1001); let mut x1039: u32 = 0; let mut x1040: fiat_p384_scalar_u1 = 0; let (x1039, x1040) = fiat_p384_scalar_addcarryx_u32(x1038, x1002, x999); let mut x1041: u32 = 0; let mut x1042: fiat_p384_scalar_u1 = 0; let (x1041, x1042) = fiat_p384_scalar_addcarryx_u32(x1040, x1000, x997); let mut x1043: u32 = 0; let mut x1044: fiat_p384_scalar_u1 = 0; let (x1043, x1044) = fiat_p384_scalar_addcarryx_u32(0x0, x973, x1019); let mut x1045: u32 = 0; let mut x1046: fiat_p384_scalar_u1 = 0; let (x1045, x1046) = fiat_p384_scalar_addcarryx_u32(x1044, x975, x1021); let mut x1047: u32 = 0; let mut x1048: fiat_p384_scalar_u1 = 0; let (x1047, x1048) = fiat_p384_scalar_addcarryx_u32(x1046, x977, x1023); let mut x1049: u32 = 0; let mut x1050: fiat_p384_scalar_u1 = 0; let (x1049, x1050) = fiat_p384_scalar_addcarryx_u32(x1048, x979, x1025); let mut x1051: u32 = 0; let mut x1052: fiat_p384_scalar_u1 = 0; let (x1051, x1052) = fiat_p384_scalar_addcarryx_u32(x1050, x981, x1027); let mut x1053: u32 = 0; let mut x1054: fiat_p384_scalar_u1 = 0; let (x1053, x1054) = fiat_p384_scalar_addcarryx_u32(x1052, x983, x1029); let mut x1055: u32 = 0; let mut x1056: fiat_p384_scalar_u1 = 0; let (x1055, x1056) = fiat_p384_scalar_addcarryx_u32(x1054, x985, x1031); let mut x1057: u32 = 0; let mut x1058: fiat_p384_scalar_u1 = 0; let (x1057, x1058) = fiat_p384_scalar_addcarryx_u32(x1056, x987, x1033); let mut x1059: u32 = 0; let mut x1060: fiat_p384_scalar_u1 = 0; let (x1059, x1060) = fiat_p384_scalar_addcarryx_u32(x1058, x989, x1035); let mut x1061: u32 = 0; let mut x1062: fiat_p384_scalar_u1 = 0; let (x1061, x1062) = fiat_p384_scalar_addcarryx_u32(x1060, x991, x1037); let mut x1063: u32 = 0; let mut x1064: fiat_p384_scalar_u1 = 0; let (x1063, x1064) = fiat_p384_scalar_addcarryx_u32(x1062, x993, x1039); let mut x1065: u32 = 0; let mut x1066: fiat_p384_scalar_u1 = 0; let (x1065, x1066) = fiat_p384_scalar_addcarryx_u32(x1064, x995, x1041); let mut x1067: u32 = 0; let mut x1068: u32 = 0; let (x1067, x1068) = fiat_p384_scalar_mulx_u32(x1043, 0xe88fdc45); let mut x1069: u32 = 0; let mut x1070: u32 = 0; let (x1069, x1070) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1071: u32 = 0; let mut x1072: u32 = 0; let (x1071, x1072) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1073: u32 = 0; let mut x1074: u32 = 0; let (x1073, x1074) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1075: u32 = 0; let mut x1076: u32 = 0; let (x1075, x1076) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1077: u32 = 0; let mut x1078: u32 = 0; let (x1077, x1078) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1079: u32 = 0; let mut x1080: u32 = 0; let (x1079, x1080) = fiat_p384_scalar_mulx_u32(x1067, 0xffffffff); let mut x1081: u32 = 0; let mut x1082: u32 = 0; let (x1081, x1082) = fiat_p384_scalar_mulx_u32(x1067, 0xc7634d81); let mut x1083: u32 = 0; let mut x1084: u32 = 0; let (x1083, x1084) = fiat_p384_scalar_mulx_u32(x1067, 0xf4372ddf); let mut x1085: u32 = 0; let mut x1086: u32 = 0; let (x1085, x1086) = fiat_p384_scalar_mulx_u32(x1067, 0x581a0db2); let mut x1087: u32 = 0; let mut x1088: u32 = 0; let (x1087, x1088) = fiat_p384_scalar_mulx_u32(x1067, 0x48b0a77a); let mut x1089: u32 = 0; let mut x1090: u32 = 0; let (x1089, x1090) = fiat_p384_scalar_mulx_u32(x1067, 0xecec196a); let mut x1091: u32 = 0; let mut x1092: u32 = 0; let (x1091, x1092) = fiat_p384_scalar_mulx_u32(x1067, 0xccc52973); let mut x1093: u32 = 0; let mut x1094: fiat_p384_scalar_u1 = 0; let (x1093, x1094) = fiat_p384_scalar_addcarryx_u32(0x0, x1092, x1089); let mut x1095: u32 = 0; let mut x1096: fiat_p384_scalar_u1 = 0; let (x1095, x1096) = fiat_p384_scalar_addcarryx_u32(x1094, x1090, x1087); let mut x1097: u32 = 0; let mut x1098: fiat_p384_scalar_u1 = 0; let (x1097, x1098) = fiat_p384_scalar_addcarryx_u32(x1096, x1088, x1085); let mut x1099: u32 = 0; let mut x1100: fiat_p384_scalar_u1 = 0; let (x1099, x1100) = fiat_p384_scalar_addcarryx_u32(x1098, x1086, x1083); let mut x1101: u32 = 0; let mut x1102: fiat_p384_scalar_u1 = 0; let (x1101, x1102) = fiat_p384_scalar_addcarryx_u32(x1100, x1084, x1081); let mut x1103: u32 = 0; let mut x1104: fiat_p384_scalar_u1 = 0; let (x1103, x1104) = fiat_p384_scalar_addcarryx_u32(x1102, x1082, x1079); let mut x1105: u32 = 0; let mut x1106: fiat_p384_scalar_u1 = 0; let (x1105, x1106) = fiat_p384_scalar_addcarryx_u32(x1104, x1080, x1077); let mut x1107: u32 = 0; let mut x1108: fiat_p384_scalar_u1 = 0; let (x1107, x1108) = fiat_p384_scalar_addcarryx_u32(x1106, x1078, x1075); let mut x1109: u32 = 0; let mut x1110: fiat_p384_scalar_u1 = 0; let (x1109, x1110) = fiat_p384_scalar_addcarryx_u32(x1108, x1076, x1073); let mut x1111: u32 = 0; let mut x1112: fiat_p384_scalar_u1 = 0; let (x1111, x1112) = fiat_p384_scalar_addcarryx_u32(x1110, x1074, x1071); let mut x1113: u32 = 0; let mut x1114: fiat_p384_scalar_u1 = 0; let (x1113, x1114) = fiat_p384_scalar_addcarryx_u32(x1112, x1072, x1069); let mut x1115: u32 = 0; let mut x1116: fiat_p384_scalar_u1 = 0; let (x1115, x1116) = fiat_p384_scalar_addcarryx_u32(0x0, x1043, x1091); let mut x1117: u32 = 0; let mut x1118: fiat_p384_scalar_u1 = 0; let (x1117, x1118) = fiat_p384_scalar_addcarryx_u32(x1116, x1045, x1093); let mut x1119: u32 = 0; let mut x1120: fiat_p384_scalar_u1 = 0; let (x1119, x1120) = fiat_p384_scalar_addcarryx_u32(x1118, x1047, x1095); let mut x1121: u32 = 0; let mut x1122: fiat_p384_scalar_u1 = 0; let (x1121, x1122) = fiat_p384_scalar_addcarryx_u32(x1120, x1049, x1097); let mut x1123: u32 = 0; let mut x1124: fiat_p384_scalar_u1 = 0; let (x1123, x1124) = fiat_p384_scalar_addcarryx_u32(x1122, x1051, x1099); let mut x1125: u32 = 0; let mut x1126: fiat_p384_scalar_u1 = 0; let (x1125, x1126) = fiat_p384_scalar_addcarryx_u32(x1124, x1053, x1101); let mut x1127: u32 = 0; let mut x1128: fiat_p384_scalar_u1 = 0; let (x1127, x1128) = fiat_p384_scalar_addcarryx_u32(x1126, x1055, x1103); let mut x1129: u32 = 0; let mut x1130: fiat_p384_scalar_u1 = 0; let (x1129, x1130) = fiat_p384_scalar_addcarryx_u32(x1128, x1057, x1105); let mut x1131: u32 = 0; let mut x1132: fiat_p384_scalar_u1 = 0; let (x1131, x1132) = fiat_p384_scalar_addcarryx_u32(x1130, x1059, x1107); let mut x1133: u32 = 0; let mut x1134: fiat_p384_scalar_u1 = 0; let (x1133, x1134) = fiat_p384_scalar_addcarryx_u32(x1132, x1061, x1109); let mut x1135: u32 = 0; let mut x1136: fiat_p384_scalar_u1 = 0; let (x1135, x1136) = fiat_p384_scalar_addcarryx_u32(x1134, x1063, x1111); let mut x1137: u32 = 0; let mut x1138: fiat_p384_scalar_u1 = 0; let (x1137, x1138) = fiat_p384_scalar_addcarryx_u32(x1136, x1065, x1113); let mut x1139: u32 = 0; let mut x1140: fiat_p384_scalar_u1 = 0; let (x1139, x1140) = fiat_p384_scalar_addcarryx_u32( x1138, (((x1066 as u32) + (x996 as u32)) + ((x1042 as u32) + x998)), ((x1114 as u32) + x1070), ); let mut x1141: u32 = 0; let mut x1142: u32 = 0; let (x1141, x1142) = fiat_p384_scalar_mulx_u32(x8, 0xc84ee01); let mut x1143: u32 = 0; let mut x1144: u32 = 0; let (x1143, x1144) = fiat_p384_scalar_mulx_u32(x8, 0x2b39bf21); let mut x1145: u32 = 0; let mut x1146: u32 = 0; let (x1145, x1146) = fiat_p384_scalar_mulx_u32(x8, 0x3fb05b7a); let mut x1147: u32 = 0; let mut x1148: u32 = 0; let (x1147, x1148) = fiat_p384_scalar_mulx_u32(x8, 0x28266895); let mut x1149: u32 = 0; let mut x1150: u32 = 0; let (x1149, x1150) = fiat_p384_scalar_mulx_u32(x8, 0xd40d4917); let mut x1151: u32 = 0; let mut x1152: u32 = 0; let (x1151, x1152) = fiat_p384_scalar_mulx_u32(x8, 0x4aab1cc5); let mut x1153: u32 = 0; let mut x1154: u32 = 0; let (x1153, x1154) = fiat_p384_scalar_mulx_u32(x8, 0xbc3e483a); let mut x1155: u32 = 0; let mut x1156: u32 = 0; let (x1155, x1156) = fiat_p384_scalar_mulx_u32(x8, 0xfcb82947); let mut x1157: u32 = 0; let mut x1158: u32 = 0; let (x1157, x1158) = fiat_p384_scalar_mulx_u32(x8, 0xff3d81e5); let mut x1159: u32 = 0; let mut x1160: u32 = 0; let (x1159, x1160) = fiat_p384_scalar_mulx_u32(x8, 0xdf1aa419); let mut x1161: u32 = 0; let mut x1162: u32 = 0; let (x1161, x1162) = fiat_p384_scalar_mulx_u32(x8, 0x2d319b24); let mut x1163: u32 = 0; let mut x1164: u32 = 0; let (x1163, x1164) = fiat_p384_scalar_mulx_u32(x8, 0x19b409a9); let mut x1165: u32 = 0; let mut x1166: fiat_p384_scalar_u1 = 0; let (x1165, x1166) = fiat_p384_scalar_addcarryx_u32(0x0, x1164, x1161); let mut x1167: u32 = 0; let mut x1168: fiat_p384_scalar_u1 = 0; let (x1167, x1168) = fiat_p384_scalar_addcarryx_u32(x1166, x1162, x1159); let mut x1169: u32 = 0; let mut x1170: fiat_p384_scalar_u1 = 0; let (x1169, x1170) = fiat_p384_scalar_addcarryx_u32(x1168, x1160, x1157); let mut x1171: u32 = 0; let mut x1172: fiat_p384_scalar_u1 = 0; let (x1171, x1172) = fiat_p384_scalar_addcarryx_u32(x1170, x1158, x1155); let mut x1173: u32 = 0; let mut x1174: fiat_p384_scalar_u1 = 0; let (x1173, x1174) = fiat_p384_scalar_addcarryx_u32(x1172, x1156, x1153); let mut x1175: u32 = 0; let mut x1176: fiat_p384_scalar_u1 = 0; let (x1175, x1176) = fiat_p384_scalar_addcarryx_u32(x1174, x1154, x1151); let mut x1177: u32 = 0; let mut x1178: fiat_p384_scalar_u1 = 0; let (x1177, x1178) = fiat_p384_scalar_addcarryx_u32(x1176, x1152, x1149); let mut x1179: u32 = 0; let mut x1180: fiat_p384_scalar_u1 = 0; let (x1179, x1180) = fiat_p384_scalar_addcarryx_u32(x1178, x1150, x1147); let mut x1181: u32 = 0; let mut x1182: fiat_p384_scalar_u1 = 0; let (x1181, x1182) = fiat_p384_scalar_addcarryx_u32(x1180, x1148, x1145); let mut x1183: u32 = 0; let mut x1184: fiat_p384_scalar_u1 = 0; let (x1183, x1184) = fiat_p384_scalar_addcarryx_u32(x1182, x1146, x1143); let mut x1185: u32 = 0; let mut x1186: fiat_p384_scalar_u1 = 0; let (x1185, x1186) = fiat_p384_scalar_addcarryx_u32(x1184, x1144, x1141); let mut x1187: u32 = 0; let mut x1188: fiat_p384_scalar_u1 = 0; let (x1187, x1188) = fiat_p384_scalar_addcarryx_u32(0x0, x1117, x1163); let mut x1189: u32 = 0; let mut x1190: fiat_p384_scalar_u1 = 0; let (x1189, x1190) = fiat_p384_scalar_addcarryx_u32(x1188, x1119, x1165); let mut x1191: u32 = 0; let mut x1192: fiat_p384_scalar_u1 = 0; let (x1191, x1192) = fiat_p384_scalar_addcarryx_u32(x1190, x1121, x1167); let mut x1193: u32 = 0; let mut x1194: fiat_p384_scalar_u1 = 0; let (x1193, x1194) = fiat_p384_scalar_addcarryx_u32(x1192, x1123, x1169); let mut x1195: u32 = 0; let mut x1196: fiat_p384_scalar_u1 = 0; let (x1195, x1196) = fiat_p384_scalar_addcarryx_u32(x1194, x1125, x1171); let mut x1197: u32 = 0; let mut x1198: fiat_p384_scalar_u1 = 0; let (x1197, x1198) = fiat_p384_scalar_addcarryx_u32(x1196, x1127, x1173); let mut x1199: u32 = 0; let mut x1200: fiat_p384_scalar_u1 = 0; let (x1199, x1200) = fiat_p384_scalar_addcarryx_u32(x1198, x1129, x1175); let mut x1201: u32 = 0; let mut x1202: fiat_p384_scalar_u1 = 0; let (x1201, x1202) = fiat_p384_scalar_addcarryx_u32(x1200, x1131, x1177); let mut x1203: u32 = 0; let mut x1204: fiat_p384_scalar_u1 = 0; let (x1203, x1204) = fiat_p384_scalar_addcarryx_u32(x1202, x1133, x1179); let mut x1205: u32 = 0; let mut x1206: fiat_p384_scalar_u1 = 0; let (x1205, x1206) = fiat_p384_scalar_addcarryx_u32(x1204, x1135, x1181); let mut x1207: u32 = 0; let mut x1208: fiat_p384_scalar_u1 = 0; let (x1207, x1208) = fiat_p384_scalar_addcarryx_u32(x1206, x1137, x1183); let mut x1209: u32 = 0; let mut x1210: fiat_p384_scalar_u1 = 0; let (x1209, x1210) = fiat_p384_scalar_addcarryx_u32(x1208, x1139, x1185); let mut x1211: u32 = 0; let mut x1212: u32 = 0; let (x1211, x1212) = fiat_p384_scalar_mulx_u32(x1187, 0xe88fdc45); let mut x1213: u32 = 0; let mut x1214: u32 = 0; let (x1213, x1214) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1215: u32 = 0; let mut x1216: u32 = 0; let (x1215, x1216) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1217: u32 = 0; let mut x1218: u32 = 0; let (x1217, x1218) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1219: u32 = 0; let mut x1220: u32 = 0; let (x1219, x1220) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1221: u32 = 0; let mut x1222: u32 = 0; let (x1221, x1222) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1223: u32 = 0; let mut x1224: u32 = 0; let (x1223, x1224) = fiat_p384_scalar_mulx_u32(x1211, 0xffffffff); let mut x1225: u32 = 0; let mut x1226: u32 = 0; let (x1225, x1226) = fiat_p384_scalar_mulx_u32(x1211, 0xc7634d81); let mut x1227: u32 = 0; let mut x1228: u32 = 0; let (x1227, x1228) = fiat_p384_scalar_mulx_u32(x1211, 0xf4372ddf); let mut x1229: u32 = 0; let mut x1230: u32 = 0; let (x1229, x1230) = fiat_p384_scalar_mulx_u32(x1211, 0x581a0db2); let mut x1231: u32 = 0; let mut x1232: u32 = 0; let (x1231, x1232) = fiat_p384_scalar_mulx_u32(x1211, 0x48b0a77a); let mut x1233: u32 = 0; let mut x1234: u32 = 0; let (x1233, x1234) = fiat_p384_scalar_mulx_u32(x1211, 0xecec196a); let mut x1235: u32 = 0; let mut x1236: u32 = 0; let (x1235, x1236) = fiat_p384_scalar_mulx_u32(x1211, 0xccc52973); let mut x1237: u32 = 0; let mut x1238: fiat_p384_scalar_u1 = 0; let (x1237, x1238) = fiat_p384_scalar_addcarryx_u32(0x0, x1236, x1233); let mut x1239: u32 = 0; let mut x1240: fiat_p384_scalar_u1 = 0; let (x1239, x1240) = fiat_p384_scalar_addcarryx_u32(x1238, x1234, x1231); let mut x1241: u32 = 0; let mut x1242: fiat_p384_scalar_u1 = 0; let (x1241, x1242) = fiat_p384_scalar_addcarryx_u32(x1240, x1232, x1229); let mut x1243: u32 = 0; let mut x1244: fiat_p384_scalar_u1 = 0; let (x1243, x1244) = fiat_p384_scalar_addcarryx_u32(x1242, x1230, x1227); let mut x1245: u32 = 0; let mut x1246: fiat_p384_scalar_u1 = 0; let (x1245, x1246) = fiat_p384_scalar_addcarryx_u32(x1244, x1228, x1225); let mut x1247: u32 = 0; let mut x1248: fiat_p384_scalar_u1 = 0; let (x1247, x1248) = fiat_p384_scalar_addcarryx_u32(x1246, x1226, x1223); let mut x1249: u32 = 0; let mut x1250: fiat_p384_scalar_u1 = 0; let (x1249, x1250) = fiat_p384_scalar_addcarryx_u32(x1248, x1224, x1221); let mut x1251: u32 = 0; let mut x1252: fiat_p384_scalar_u1 = 0; let (x1251, x1252) = fiat_p384_scalar_addcarryx_u32(x1250, x1222, x1219); let mut x1253: u32 = 0; let mut x1254: fiat_p384_scalar_u1 = 0; let (x1253, x1254) = fiat_p384_scalar_addcarryx_u32(x1252, x1220, x1217); let mut x1255: u32 = 0; let mut x1256: fiat_p384_scalar_u1 = 0; let (x1255, x1256) = fiat_p384_scalar_addcarryx_u32(x1254, x1218, x1215); let mut x1257: u32 = 0; let mut x1258: fiat_p384_scalar_u1 = 0; let (x1257, x1258) = fiat_p384_scalar_addcarryx_u32(x1256, x1216, x1213); let mut x1259: u32 = 0; let mut x1260: fiat_p384_scalar_u1 = 0; let (x1259, x1260) = fiat_p384_scalar_addcarryx_u32(0x0, x1187, x1235); let mut x1261: u32 = 0; let mut x1262: fiat_p384_scalar_u1 = 0; let (x1261, x1262) = fiat_p384_scalar_addcarryx_u32(x1260, x1189, x1237); let mut x1263: u32 = 0; let mut x1264: fiat_p384_scalar_u1 = 0; let (x1263, x1264) = fiat_p384_scalar_addcarryx_u32(x1262, x1191, x1239); let mut x1265: u32 = 0; let mut x1266: fiat_p384_scalar_u1 = 0; let (x1265, x1266) = fiat_p384_scalar_addcarryx_u32(x1264, x1193, x1241); let mut x1267: u32 = 0; let mut x1268: fiat_p384_scalar_u1 = 0; let (x1267, x1268) = fiat_p384_scalar_addcarryx_u32(x1266, x1195, x1243); let mut x1269: u32 = 0; let mut x1270: fiat_p384_scalar_u1 = 0; let (x1269, x1270) = fiat_p384_scalar_addcarryx_u32(x1268, x1197, x1245); let mut x1271: u32 = 0; let mut x1272: fiat_p384_scalar_u1 = 0; let (x1271, x1272) = fiat_p384_scalar_addcarryx_u32(x1270, x1199, x1247); let mut x1273: u32 = 0; let mut x1274: fiat_p384_scalar_u1 = 0; let (x1273, x1274) = fiat_p384_scalar_addcarryx_u32(x1272, x1201, x1249); let mut x1275: u32 = 0; let mut x1276: fiat_p384_scalar_u1 = 0; let (x1275, x1276) = fiat_p384_scalar_addcarryx_u32(x1274, x1203, x1251); let mut x1277: u32 = 0; let mut x1278: fiat_p384_scalar_u1 = 0; let (x1277, x1278) = fiat_p384_scalar_addcarryx_u32(x1276, x1205, x1253); let mut x1279: u32 = 0; let mut x1280: fiat_p384_scalar_u1 = 0; let (x1279, x1280) = fiat_p384_scalar_addcarryx_u32(x1278, x1207, x1255); let mut x1281: u32 = 0; let mut x1282: fiat_p384_scalar_u1 = 0; let (x1281, x1282) = fiat_p384_scalar_addcarryx_u32(x1280, x1209, x1257); let mut x1283: u32 = 0; let mut x1284: fiat_p384_scalar_u1 = 0; let (x1283, x1284) = fiat_p384_scalar_addcarryx_u32( x1282, (((x1210 as u32) + (x1140 as u32)) + ((x1186 as u32) + x1142)), ((x1258 as u32) + x1214), ); let mut x1285: u32 = 0; let mut x1286: u32 = 0; let (x1285, x1286) = fiat_p384_scalar_mulx_u32(x9, 0xc84ee01); let mut x1287: u32 = 0; let mut x1288: u32 = 0; let (x1287, x1288) = fiat_p384_scalar_mulx_u32(x9, 0x2b39bf21); let mut x1289: u32 = 0; let mut x1290: u32 = 0; let (x1289, x1290) = fiat_p384_scalar_mulx_u32(x9, 0x3fb05b7a); let mut x1291: u32 = 0; let mut x1292: u32 = 0; let (x1291, x1292) = fiat_p384_scalar_mulx_u32(x9, 0x28266895); let mut x1293: u32 = 0; let mut x1294: u32 = 0; let (x1293, x1294) = fiat_p384_scalar_mulx_u32(x9, 0xd40d4917); let mut x1295: u32 = 0; let mut x1296: u32 = 0; let (x1295, x1296) = fiat_p384_scalar_mulx_u32(x9, 0x4aab1cc5); let mut x1297: u32 = 0; let mut x1298: u32 = 0; let (x1297, x1298) = fiat_p384_scalar_mulx_u32(x9, 0xbc3e483a); let mut x1299: u32 = 0; let mut x1300: u32 = 0; let (x1299, x1300) = fiat_p384_scalar_mulx_u32(x9, 0xfcb82947); let mut x1301: u32 = 0; let mut x1302: u32 = 0; let (x1301, x1302) = fiat_p384_scalar_mulx_u32(x9, 0xff3d81e5); let mut x1303: u32 = 0; let mut x1304: u32 = 0; let (x1303, x1304) = fiat_p384_scalar_mulx_u32(x9, 0xdf1aa419); let mut x1305: u32 = 0; let mut x1306: u32 = 0; let (x1305, x1306) = fiat_p384_scalar_mulx_u32(x9, 0x2d319b24); let mut x1307: u32 = 0; let mut x1308: u32 = 0; let (x1307, x1308) = fiat_p384_scalar_mulx_u32(x9, 0x19b409a9); let mut x1309: u32 = 0; let mut x1310: fiat_p384_scalar_u1 = 0; let (x1309, x1310) = fiat_p384_scalar_addcarryx_u32(0x0, x1308, x1305); let mut x1311: u32 = 0; let mut x1312: fiat_p384_scalar_u1 = 0; let (x1311, x1312) = fiat_p384_scalar_addcarryx_u32(x1310, x1306, x1303); let mut x1313: u32 = 0; let mut x1314: fiat_p384_scalar_u1 = 0; let (x1313, x1314) = fiat_p384_scalar_addcarryx_u32(x1312, x1304, x1301); let mut x1315: u32 = 0; let mut x1316: fiat_p384_scalar_u1 = 0; let (x1315, x1316) = fiat_p384_scalar_addcarryx_u32(x1314, x1302, x1299); let mut x1317: u32 = 0; let mut x1318: fiat_p384_scalar_u1 = 0; let (x1317, x1318) = fiat_p384_scalar_addcarryx_u32(x1316, x1300, x1297); let mut x1319: u32 = 0; let mut x1320: fiat_p384_scalar_u1 = 0; let (x1319, x1320) = fiat_p384_scalar_addcarryx_u32(x1318, x1298, x1295); let mut x1321: u32 = 0; let mut x1322: fiat_p384_scalar_u1 = 0; let (x1321, x1322) = fiat_p384_scalar_addcarryx_u32(x1320, x1296, x1293); let mut x1323: u32 = 0; let mut x1324: fiat_p384_scalar_u1 = 0; let (x1323, x1324) = fiat_p384_scalar_addcarryx_u32(x1322, x1294, x1291); let mut x1325: u32 = 0; let mut x1326: fiat_p384_scalar_u1 = 0; let (x1325, x1326) = fiat_p384_scalar_addcarryx_u32(x1324, x1292, x1289); let mut x1327: u32 = 0; let mut x1328: fiat_p384_scalar_u1 = 0; let (x1327, x1328) = fiat_p384_scalar_addcarryx_u32(x1326, x1290, x1287); let mut x1329: u32 = 0; let mut x1330: fiat_p384_scalar_u1 = 0; let (x1329, x1330) = fiat_p384_scalar_addcarryx_u32(x1328, x1288, x1285); let mut x1331: u32 = 0; let mut x1332: fiat_p384_scalar_u1 = 0; let (x1331, x1332) = fiat_p384_scalar_addcarryx_u32(0x0, x1261, x1307); let mut x1333: u32 = 0; let mut x1334: fiat_p384_scalar_u1 = 0; let (x1333, x1334) = fiat_p384_scalar_addcarryx_u32(x1332, x1263, x1309); let mut x1335: u32 = 0; let mut x1336: fiat_p384_scalar_u1 = 0; let (x1335, x1336) = fiat_p384_scalar_addcarryx_u32(x1334, x1265, x1311); let mut x1337: u32 = 0; let mut x1338: fiat_p384_scalar_u1 = 0; let (x1337, x1338) = fiat_p384_scalar_addcarryx_u32(x1336, x1267, x1313); let mut x1339: u32 = 0; let mut x1340: fiat_p384_scalar_u1 = 0; let (x1339, x1340) = fiat_p384_scalar_addcarryx_u32(x1338, x1269, x1315); let mut x1341: u32 = 0; let mut x1342: fiat_p384_scalar_u1 = 0; let (x1341, x1342) = fiat_p384_scalar_addcarryx_u32(x1340, x1271, x1317); let mut x1343: u32 = 0; let mut x1344: fiat_p384_scalar_u1 = 0; let (x1343, x1344) = fiat_p384_scalar_addcarryx_u32(x1342, x1273, x1319); let mut x1345: u32 = 0; let mut x1346: fiat_p384_scalar_u1 = 0; let (x1345, x1346) = fiat_p384_scalar_addcarryx_u32(x1344, x1275, x1321); let mut x1347: u32 = 0; let mut x1348: fiat_p384_scalar_u1 = 0; let (x1347, x1348) = fiat_p384_scalar_addcarryx_u32(x1346, x1277, x1323); let mut x1349: u32 = 0; let mut x1350: fiat_p384_scalar_u1 = 0; let (x1349, x1350) = fiat_p384_scalar_addcarryx_u32(x1348, x1279, x1325); let mut x1351: u32 = 0; let mut x1352: fiat_p384_scalar_u1 = 0; let (x1351, x1352) = fiat_p384_scalar_addcarryx_u32(x1350, x1281, x1327); let mut x1353: u32 = 0; let mut x1354: fiat_p384_scalar_u1 = 0; let (x1353, x1354) = fiat_p384_scalar_addcarryx_u32(x1352, x1283, x1329); let mut x1355: u32 = 0; let mut x1356: u32 = 0; let (x1355, x1356) = fiat_p384_scalar_mulx_u32(x1331, 0xe88fdc45); let mut x1357: u32 = 0; let mut x1358: u32 = 0; let (x1357, x1358) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1359: u32 = 0; let mut x1360: u32 = 0; let (x1359, x1360) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1361: u32 = 0; let mut x1362: u32 = 0; let (x1361, x1362) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1363: u32 = 0; let mut x1364: u32 = 0; let (x1363, x1364) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1365: u32 = 0; let mut x1366: u32 = 0; let (x1365, x1366) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1367: u32 = 0; let mut x1368: u32 = 0; let (x1367, x1368) = fiat_p384_scalar_mulx_u32(x1355, 0xffffffff); let mut x1369: u32 = 0; let mut x1370: u32 = 0; let (x1369, x1370) = fiat_p384_scalar_mulx_u32(x1355, 0xc7634d81); let mut x1371: u32 = 0; let mut x1372: u32 = 0; let (x1371, x1372) = fiat_p384_scalar_mulx_u32(x1355, 0xf4372ddf); let mut x1373: u32 = 0; let mut x1374: u32 = 0; let (x1373, x1374) = fiat_p384_scalar_mulx_u32(x1355, 0x581a0db2); let mut x1375: u32 = 0; let mut x1376: u32 = 0; let (x1375, x1376) = fiat_p384_scalar_mulx_u32(x1355, 0x48b0a77a); let mut x1377: u32 = 0; let mut x1378: u32 = 0; let (x1377, x1378) = fiat_p384_scalar_mulx_u32(x1355, 0xecec196a); let mut x1379: u32 = 0; let mut x1380: u32 = 0; let (x1379, x1380) = fiat_p384_scalar_mulx_u32(x1355, 0xccc52973); let mut x1381: u32 = 0; let mut x1382: fiat_p384_scalar_u1 = 0; let (x1381, x1382) = fiat_p384_scalar_addcarryx_u32(0x0, x1380, x1377); let mut x1383: u32 = 0; let mut x1384: fiat_p384_scalar_u1 = 0; let (x1383, x1384) = fiat_p384_scalar_addcarryx_u32(x1382, x1378, x1375); let mut x1385: u32 = 0; let mut x1386: fiat_p384_scalar_u1 = 0; let (x1385, x1386) = fiat_p384_scalar_addcarryx_u32(x1384, x1376, x1373); let mut x1387: u32 = 0; let mut x1388: fiat_p384_scalar_u1 = 0; let (x1387, x1388) = fiat_p384_scalar_addcarryx_u32(x1386, x1374, x1371); let mut x1389: u32 = 0; let mut x1390: fiat_p384_scalar_u1 = 0; let (x1389, x1390) = fiat_p384_scalar_addcarryx_u32(x1388, x1372, x1369); let mut x1391: u32 = 0; let mut x1392: fiat_p384_scalar_u1 = 0; let (x1391, x1392) = fiat_p384_scalar_addcarryx_u32(x1390, x1370, x1367); let mut x1393: u32 = 0; let mut x1394: fiat_p384_scalar_u1 = 0; let (x1393, x1394) = fiat_p384_scalar_addcarryx_u32(x1392, x1368, x1365); let mut x1395: u32 = 0; let mut x1396: fiat_p384_scalar_u1 = 0; let (x1395, x1396) = fiat_p384_scalar_addcarryx_u32(x1394, x1366, x1363); let mut x1397: u32 = 0; let mut x1398: fiat_p384_scalar_u1 = 0; let (x1397, x1398) = fiat_p384_scalar_addcarryx_u32(x1396, x1364, x1361); let mut x1399: u32 = 0; let mut x1400: fiat_p384_scalar_u1 = 0; let (x1399, x1400) = fiat_p384_scalar_addcarryx_u32(x1398, x1362, x1359); let mut x1401: u32 = 0; let mut x1402: fiat_p384_scalar_u1 = 0; let (x1401, x1402) = fiat_p384_scalar_addcarryx_u32(x1400, x1360, x1357); let mut x1403: u32 = 0; let mut x1404: fiat_p384_scalar_u1 = 0; let (x1403, x1404) = fiat_p384_scalar_addcarryx_u32(0x0, x1331, x1379); let mut x1405: u32 = 0; let mut x1406: fiat_p384_scalar_u1 = 0; let (x1405, x1406) = fiat_p384_scalar_addcarryx_u32(x1404, x1333, x1381); let mut x1407: u32 = 0; let mut x1408: fiat_p384_scalar_u1 = 0; let (x1407, x1408) = fiat_p384_scalar_addcarryx_u32(x1406, x1335, x1383); let mut x1409: u32 = 0; let mut x1410: fiat_p384_scalar_u1 = 0; let (x1409, x1410) = fiat_p384_scalar_addcarryx_u32(x1408, x1337, x1385); let mut x1411: u32 = 0; let mut x1412: fiat_p384_scalar_u1 = 0; let (x1411, x1412) = fiat_p384_scalar_addcarryx_u32(x1410, x1339, x1387); let mut x1413: u32 = 0; let mut x1414: fiat_p384_scalar_u1 = 0; let (x1413, x1414) = fiat_p384_scalar_addcarryx_u32(x1412, x1341, x1389); let mut x1415: u32 = 0; let mut x1416: fiat_p384_scalar_u1 = 0; let (x1415, x1416) = fiat_p384_scalar_addcarryx_u32(x1414, x1343, x1391); let mut x1417: u32 = 0; let mut x1418: fiat_p384_scalar_u1 = 0; let (x1417, x1418) = fiat_p384_scalar_addcarryx_u32(x1416, x1345, x1393); let mut x1419: u32 = 0; let mut x1420: fiat_p384_scalar_u1 = 0; let (x1419, x1420) = fiat_p384_scalar_addcarryx_u32(x1418, x1347, x1395); let mut x1421: u32 = 0; let mut x1422: fiat_p384_scalar_u1 = 0; let (x1421, x1422) = fiat_p384_scalar_addcarryx_u32(x1420, x1349, x1397); let mut x1423: u32 = 0; let mut x1424: fiat_p384_scalar_u1 = 0; let (x1423, x1424) = fiat_p384_scalar_addcarryx_u32(x1422, x1351, x1399); let mut x1425: u32 = 0; let mut x1426: fiat_p384_scalar_u1 = 0; let (x1425, x1426) = fiat_p384_scalar_addcarryx_u32(x1424, x1353, x1401); let mut x1427: u32 = 0; let mut x1428: fiat_p384_scalar_u1 = 0; let (x1427, x1428) = fiat_p384_scalar_addcarryx_u32( x1426, (((x1354 as u32) + (x1284 as u32)) + ((x1330 as u32) + x1286)), ((x1402 as u32) + x1358), ); let mut x1429: u32 = 0; let mut x1430: u32 = 0; let (x1429, x1430) = fiat_p384_scalar_mulx_u32(x10, 0xc84ee01); let mut x1431: u32 = 0; let mut x1432: u32 = 0; let (x1431, x1432) = fiat_p384_scalar_mulx_u32(x10, 0x2b39bf21); let mut x1433: u32 = 0; let mut x1434: u32 = 0; let (x1433, x1434) = fiat_p384_scalar_mulx_u32(x10, 0x3fb05b7a); let mut x1435: u32 = 0; let mut x1436: u32 = 0; let (x1435, x1436) = fiat_p384_scalar_mulx_u32(x10, 0x28266895); let mut x1437: u32 = 0; let mut x1438: u32 = 0; let (x1437, x1438) = fiat_p384_scalar_mulx_u32(x10, 0xd40d4917); let mut x1439: u32 = 0; let mut x1440: u32 = 0; let (x1439, x1440) = fiat_p384_scalar_mulx_u32(x10, 0x4aab1cc5); let mut x1441: u32 = 0; let mut x1442: u32 = 0; let (x1441, x1442) = fiat_p384_scalar_mulx_u32(x10, 0xbc3e483a); let mut x1443: u32 = 0; let mut x1444: u32 = 0; let (x1443, x1444) = fiat_p384_scalar_mulx_u32(x10, 0xfcb82947); let mut x1445: u32 = 0; let mut x1446: u32 = 0; let (x1445, x1446) = fiat_p384_scalar_mulx_u32(x10, 0xff3d81e5); let mut x1447: u32 = 0; let mut x1448: u32 = 0; let (x1447, x1448) = fiat_p384_scalar_mulx_u32(x10, 0xdf1aa419); let mut x1449: u32 = 0; let mut x1450: u32 = 0; let (x1449, x1450) = fiat_p384_scalar_mulx_u32(x10, 0x2d319b24); let mut x1451: u32 = 0; let mut x1452: u32 = 0; let (x1451, x1452) = fiat_p384_scalar_mulx_u32(x10, 0x19b409a9); let mut x1453: u32 = 0; let mut x1454: fiat_p384_scalar_u1 = 0; let (x1453, x1454) = fiat_p384_scalar_addcarryx_u32(0x0, x1452, x1449); let mut x1455: u32 = 0; let mut x1456: fiat_p384_scalar_u1 = 0; let (x1455, x1456) = fiat_p384_scalar_addcarryx_u32(x1454, x1450, x1447); let mut x1457: u32 = 0; let mut x1458: fiat_p384_scalar_u1 = 0; let (x1457, x1458) = fiat_p384_scalar_addcarryx_u32(x1456, x1448, x1445); let mut x1459: u32 = 0; let mut x1460: fiat_p384_scalar_u1 = 0; let (x1459, x1460) = fiat_p384_scalar_addcarryx_u32(x1458, x1446, x1443); let mut x1461: u32 = 0; let mut x1462: fiat_p384_scalar_u1 = 0; let (x1461, x1462) = fiat_p384_scalar_addcarryx_u32(x1460, x1444, x1441); let mut x1463: u32 = 0; let mut x1464: fiat_p384_scalar_u1 = 0; let (x1463, x1464) = fiat_p384_scalar_addcarryx_u32(x1462, x1442, x1439); let mut x1465: u32 = 0; let mut x1466: fiat_p384_scalar_u1 = 0; let (x1465, x1466) = fiat_p384_scalar_addcarryx_u32(x1464, x1440, x1437); let mut x1467: u32 = 0; let mut x1468: fiat_p384_scalar_u1 = 0; let (x1467, x1468) = fiat_p384_scalar_addcarryx_u32(x1466, x1438, x1435); let mut x1469: u32 = 0; let mut x1470: fiat_p384_scalar_u1 = 0; let (x1469, x1470) = fiat_p384_scalar_addcarryx_u32(x1468, x1436, x1433); let mut x1471: u32 = 0; let mut x1472: fiat_p384_scalar_u1 = 0; let (x1471, x1472) = fiat_p384_scalar_addcarryx_u32(x1470, x1434, x1431); let mut x1473: u32 = 0; let mut x1474: fiat_p384_scalar_u1 = 0; let (x1473, x1474) = fiat_p384_scalar_addcarryx_u32(x1472, x1432, x1429); let mut x1475: u32 = 0; let mut x1476: fiat_p384_scalar_u1 = 0; let (x1475, x1476) = fiat_p384_scalar_addcarryx_u32(0x0, x1405, x1451); let mut x1477: u32 = 0; let mut x1478: fiat_p384_scalar_u1 = 0; let (x1477, x1478) = fiat_p384_scalar_addcarryx_u32(x1476, x1407, x1453); let mut x1479: u32 = 0; let mut x1480: fiat_p384_scalar_u1 = 0; let (x1479, x1480) = fiat_p384_scalar_addcarryx_u32(x1478, x1409, x1455); let mut x1481: u32 = 0; let mut x1482: fiat_p384_scalar_u1 = 0; let (x1481, x1482) = fiat_p384_scalar_addcarryx_u32(x1480, x1411, x1457); let mut x1483: u32 = 0; let mut x1484: fiat_p384_scalar_u1 = 0; let (x1483, x1484) = fiat_p384_scalar_addcarryx_u32(x1482, x1413, x1459); let mut x1485: u32 = 0; let mut x1486: fiat_p384_scalar_u1 = 0; let (x1485, x1486) = fiat_p384_scalar_addcarryx_u32(x1484, x1415, x1461); let mut x1487: u32 = 0; let mut x1488: fiat_p384_scalar_u1 = 0; let (x1487, x1488) = fiat_p384_scalar_addcarryx_u32(x1486, x1417, x1463); let mut x1489: u32 = 0; let mut x1490: fiat_p384_scalar_u1 = 0; let (x1489, x1490) = fiat_p384_scalar_addcarryx_u32(x1488, x1419, x1465); let mut x1491: u32 = 0; let mut x1492: fiat_p384_scalar_u1 = 0; let (x1491, x1492) = fiat_p384_scalar_addcarryx_u32(x1490, x1421, x1467); let mut x1493: u32 = 0; let mut x1494: fiat_p384_scalar_u1 = 0; let (x1493, x1494) = fiat_p384_scalar_addcarryx_u32(x1492, x1423, x1469); let mut x1495: u32 = 0; let mut x1496: fiat_p384_scalar_u1 = 0; let (x1495, x1496) = fiat_p384_scalar_addcarryx_u32(x1494, x1425, x1471); let mut x1497: u32 = 0; let mut x1498: fiat_p384_scalar_u1 = 0; let (x1497, x1498) = fiat_p384_scalar_addcarryx_u32(x1496, x1427, x1473); let mut x1499: u32 = 0; let mut x1500: u32 = 0; let (x1499, x1500) = fiat_p384_scalar_mulx_u32(x1475, 0xe88fdc45); let mut x1501: u32 = 0; let mut x1502: u32 = 0; let (x1501, x1502) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1503: u32 = 0; let mut x1504: u32 = 0; let (x1503, x1504) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1505: u32 = 0; let mut x1506: u32 = 0; let (x1505, x1506) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1507: u32 = 0; let mut x1508: u32 = 0; let (x1507, x1508) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1509: u32 = 0; let mut x1510: u32 = 0; let (x1509, x1510) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1511: u32 = 0; let mut x1512: u32 = 0; let (x1511, x1512) = fiat_p384_scalar_mulx_u32(x1499, 0xffffffff); let mut x1513: u32 = 0; let mut x1514: u32 = 0; let (x1513, x1514) = fiat_p384_scalar_mulx_u32(x1499, 0xc7634d81); let mut x1515: u32 = 0; let mut x1516: u32 = 0; let (x1515, x1516) = fiat_p384_scalar_mulx_u32(x1499, 0xf4372ddf); let mut x1517: u32 = 0; let mut x1518: u32 = 0; let (x1517, x1518) = fiat_p384_scalar_mulx_u32(x1499, 0x581a0db2); let mut x1519: u32 = 0; let mut x1520: u32 = 0; let (x1519, x1520) = fiat_p384_scalar_mulx_u32(x1499, 0x48b0a77a); let mut x1521: u32 = 0; let mut x1522: u32 = 0; let (x1521, x1522) = fiat_p384_scalar_mulx_u32(x1499, 0xecec196a); let mut x1523: u32 = 0; let mut x1524: u32 = 0; let (x1523, x1524) = fiat_p384_scalar_mulx_u32(x1499, 0xccc52973); let mut x1525: u32 = 0; let mut x1526: fiat_p384_scalar_u1 = 0; let (x1525, x1526) = fiat_p384_scalar_addcarryx_u32(0x0, x1524, x1521); let mut x1527: u32 = 0; let mut x1528: fiat_p384_scalar_u1 = 0; let (x1527, x1528) = fiat_p384_scalar_addcarryx_u32(x1526, x1522, x1519); let mut x1529: u32 = 0; let mut x1530: fiat_p384_scalar_u1 = 0; let (x1529, x1530) = fiat_p384_scalar_addcarryx_u32(x1528, x1520, x1517); let mut x1531: u32 = 0; let mut x1532: fiat_p384_scalar_u1 = 0; let (x1531, x1532) = fiat_p384_scalar_addcarryx_u32(x1530, x1518, x1515); let mut x1533: u32 = 0; let mut x1534: fiat_p384_scalar_u1 = 0; let (x1533, x1534) = fiat_p384_scalar_addcarryx_u32(x1532, x1516, x1513); let mut x1535: u32 = 0; let mut x1536: fiat_p384_scalar_u1 = 0; let (x1535, x1536) = fiat_p384_scalar_addcarryx_u32(x1534, x1514, x1511); let mut x1537: u32 = 0; let mut x1538: fiat_p384_scalar_u1 = 0; let (x1537, x1538) = fiat_p384_scalar_addcarryx_u32(x1536, x1512, x1509); let mut x1539: u32 = 0; let mut x1540: fiat_p384_scalar_u1 = 0; let (x1539, x1540) = fiat_p384_scalar_addcarryx_u32(x1538, x1510, x1507); let mut x1541: u32 = 0; let mut x1542: fiat_p384_scalar_u1 = 0; let (x1541, x1542) = fiat_p384_scalar_addcarryx_u32(x1540, x1508, x1505); let mut x1543: u32 = 0; let mut x1544: fiat_p384_scalar_u1 = 0; let (x1543, x1544) = fiat_p384_scalar_addcarryx_u32(x1542, x1506, x1503); let mut x1545: u32 = 0; let mut x1546: fiat_p384_scalar_u1 = 0; let (x1545, x1546) = fiat_p384_scalar_addcarryx_u32(x1544, x1504, x1501); let mut x1547: u32 = 0; let mut x1548: fiat_p384_scalar_u1 = 0; let (x1547, x1548) = fiat_p384_scalar_addcarryx_u32(0x0, x1475, x1523); let mut x1549: u32 = 0; let mut x1550: fiat_p384_scalar_u1 = 0; let (x1549, x1550) = fiat_p384_scalar_addcarryx_u32(x1548, x1477, x1525); let mut x1551: u32 = 0; let mut x1552: fiat_p384_scalar_u1 = 0; let (x1551, x1552) = fiat_p384_scalar_addcarryx_u32(x1550, x1479, x1527); let mut x1553: u32 = 0; let mut x1554: fiat_p384_scalar_u1 = 0; let (x1553, x1554) = fiat_p384_scalar_addcarryx_u32(x1552, x1481, x1529); let mut x1555: u32 = 0; let mut x1556: fiat_p384_scalar_u1 = 0; let (x1555, x1556) = fiat_p384_scalar_addcarryx_u32(x1554, x1483, x1531); let mut x1557: u32 = 0; let mut x1558: fiat_p384_scalar_u1 = 0; let (x1557, x1558) = fiat_p384_scalar_addcarryx_u32(x1556, x1485, x1533); let mut x1559: u32 = 0; let mut x1560: fiat_p384_scalar_u1 = 0; let (x1559, x1560) = fiat_p384_scalar_addcarryx_u32(x1558, x1487, x1535); let mut x1561: u32 = 0; let mut x1562: fiat_p384_scalar_u1 = 0; let (x1561, x1562) = fiat_p384_scalar_addcarryx_u32(x1560, x1489, x1537); let mut x1563: u32 = 0; let mut x1564: fiat_p384_scalar_u1 = 0; let (x1563, x1564) = fiat_p384_scalar_addcarryx_u32(x1562, x1491, x1539); let mut x1565: u32 = 0; let mut x1566: fiat_p384_scalar_u1 = 0; let (x1565, x1566) = fiat_p384_scalar_addcarryx_u32(x1564, x1493, x1541); let mut x1567: u32 = 0; let mut x1568: fiat_p384_scalar_u1 = 0; let (x1567, x1568) = fiat_p384_scalar_addcarryx_u32(x1566, x1495, x1543); let mut x1569: u32 = 0; let mut x1570: fiat_p384_scalar_u1 = 0; let (x1569, x1570) = fiat_p384_scalar_addcarryx_u32(x1568, x1497, x1545); let mut x1571: u32 = 0; let mut x1572: fiat_p384_scalar_u1 = 0; let (x1571, x1572) = fiat_p384_scalar_addcarryx_u32( x1570, (((x1498 as u32) + (x1428 as u32)) + ((x1474 as u32) + x1430)), ((x1546 as u32) + x1502), ); let mut x1573: u32 = 0; let mut x1574: u32 = 0; let (x1573, x1574) = fiat_p384_scalar_mulx_u32(x11, 0xc84ee01); let mut x1575: u32 = 0; let mut x1576: u32 = 0; let (x1575, x1576) = fiat_p384_scalar_mulx_u32(x11, 0x2b39bf21); let mut x1577: u32 = 0; let mut x1578: u32 = 0; let (x1577, x1578) = fiat_p384_scalar_mulx_u32(x11, 0x3fb05b7a); let mut x1579: u32 = 0; let mut x1580: u32 = 0; let (x1579, x1580) = fiat_p384_scalar_mulx_u32(x11, 0x28266895); let mut x1581: u32 = 0; let mut x1582: u32 = 0; let (x1581, x1582) = fiat_p384_scalar_mulx_u32(x11, 0xd40d4917); let mut x1583: u32 = 0; let mut x1584: u32 = 0; let (x1583, x1584) = fiat_p384_scalar_mulx_u32(x11, 0x4aab1cc5); let mut x1585: u32 = 0; let mut x1586: u32 = 0; let (x1585, x1586) = fiat_p384_scalar_mulx_u32(x11, 0xbc3e483a); let mut x1587: u32 = 0; let mut x1588: u32 = 0; let (x1587, x1588) = fiat_p384_scalar_mulx_u32(x11, 0xfcb82947); let mut x1589: u32 = 0; let mut x1590: u32 = 0; let (x1589, x1590) = fiat_p384_scalar_mulx_u32(x11, 0xff3d81e5); let mut x1591: u32 = 0; let mut x1592: u32 = 0; let (x1591, x1592) = fiat_p384_scalar_mulx_u32(x11, 0xdf1aa419); let mut x1593: u32 = 0; let mut x1594: u32 = 0; let (x1593, x1594) = fiat_p384_scalar_mulx_u32(x11, 0x2d319b24); let mut x1595: u32 = 0; let mut x1596: u32 = 0; let (x1595, x1596) = fiat_p384_scalar_mulx_u32(x11, 0x19b409a9); let mut x1597: u32 = 0; let mut x1598: fiat_p384_scalar_u1 = 0; let (x1597, x1598) = fiat_p384_scalar_addcarryx_u32(0x0, x1596, x1593); let mut x1599: u32 = 0; let mut x1600: fiat_p384_scalar_u1 = 0; let (x1599, x1600) = fiat_p384_scalar_addcarryx_u32(x1598, x1594, x1591); let mut x1601: u32 = 0; let mut x1602: fiat_p384_scalar_u1 = 0; let (x1601, x1602) = fiat_p384_scalar_addcarryx_u32(x1600, x1592, x1589); let mut x1603: u32 = 0; let mut x1604: fiat_p384_scalar_u1 = 0; let (x1603, x1604) = fiat_p384_scalar_addcarryx_u32(x1602, x1590, x1587); let mut x1605: u32 = 0; let mut x1606: fiat_p384_scalar_u1 = 0; let (x1605, x1606) = fiat_p384_scalar_addcarryx_u32(x1604, x1588, x1585); let mut x1607: u32 = 0; let mut x1608: fiat_p384_scalar_u1 = 0; let (x1607, x1608) = fiat_p384_scalar_addcarryx_u32(x1606, x1586, x1583); let mut x1609: u32 = 0; let mut x1610: fiat_p384_scalar_u1 = 0; let (x1609, x1610) = fiat_p384_scalar_addcarryx_u32(x1608, x1584, x1581); let mut x1611: u32 = 0; let mut x1612: fiat_p384_scalar_u1 = 0; let (x1611, x1612) = fiat_p384_scalar_addcarryx_u32(x1610, x1582, x1579); let mut x1613: u32 = 0; let mut x1614: fiat_p384_scalar_u1 = 0; let (x1613, x1614) = fiat_p384_scalar_addcarryx_u32(x1612, x1580, x1577); let mut x1615: u32 = 0; let mut x1616: fiat_p384_scalar_u1 = 0; let (x1615, x1616) = fiat_p384_scalar_addcarryx_u32(x1614, x1578, x1575); let mut x1617: u32 = 0; let mut x1618: fiat_p384_scalar_u1 = 0; let (x1617, x1618) = fiat_p384_scalar_addcarryx_u32(x1616, x1576, x1573); let mut x1619: u32 = 0; let mut x1620: fiat_p384_scalar_u1 = 0; let (x1619, x1620) = fiat_p384_scalar_addcarryx_u32(0x0, x1549, x1595); let mut x1621: u32 = 0; let mut x1622: fiat_p384_scalar_u1 = 0; let (x1621, x1622) = fiat_p384_scalar_addcarryx_u32(x1620, x1551, x1597); let mut x1623: u32 = 0; let mut x1624: fiat_p384_scalar_u1 = 0; let (x1623, x1624) = fiat_p384_scalar_addcarryx_u32(x1622, x1553, x1599); let mut x1625: u32 = 0; let mut x1626: fiat_p384_scalar_u1 = 0; let (x1625, x1626) = fiat_p384_scalar_addcarryx_u32(x1624, x1555, x1601); let mut x1627: u32 = 0; let mut x1628: fiat_p384_scalar_u1 = 0; let (x1627, x1628) = fiat_p384_scalar_addcarryx_u32(x1626, x1557, x1603); let mut x1629: u32 = 0; let mut x1630: fiat_p384_scalar_u1 = 0; let (x1629, x1630) = fiat_p384_scalar_addcarryx_u32(x1628, x1559, x1605); let mut x1631: u32 = 0; let mut x1632: fiat_p384_scalar_u1 = 0; let (x1631, x1632) = fiat_p384_scalar_addcarryx_u32(x1630, x1561, x1607); let mut x1633: u32 = 0; let mut x1634: fiat_p384_scalar_u1 = 0; let (x1633, x1634) = fiat_p384_scalar_addcarryx_u32(x1632, x1563, x1609); let mut x1635: u32 = 0; let mut x1636: fiat_p384_scalar_u1 = 0; let (x1635, x1636) = fiat_p384_scalar_addcarryx_u32(x1634, x1565, x1611); let mut x1637: u32 = 0; let mut x1638: fiat_p384_scalar_u1 = 0; let (x1637, x1638) = fiat_p384_scalar_addcarryx_u32(x1636, x1567, x1613); let mut x1639: u32 = 0; let mut x1640: fiat_p384_scalar_u1 = 0; let (x1639, x1640) = fiat_p384_scalar_addcarryx_u32(x1638, x1569, x1615); let mut x1641: u32 = 0; let mut x1642: fiat_p384_scalar_u1 = 0; let (x1641, x1642) = fiat_p384_scalar_addcarryx_u32(x1640, x1571, x1617); let mut x1643: u32 = 0; let mut x1644: u32 = 0; let (x1643, x1644) = fiat_p384_scalar_mulx_u32(x1619, 0xe88fdc45); let mut x1645: u32 = 0; let mut x1646: u32 = 0; let (x1645, x1646) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1647: u32 = 0; let mut x1648: u32 = 0; let (x1647, x1648) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1649: u32 = 0; let mut x1650: u32 = 0; let (x1649, x1650) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1651: u32 = 0; let mut x1652: u32 = 0; let (x1651, x1652) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1653: u32 = 0; let mut x1654: u32 = 0; let (x1653, x1654) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1655: u32 = 0; let mut x1656: u32 = 0; let (x1655, x1656) = fiat_p384_scalar_mulx_u32(x1643, 0xffffffff); let mut x1657: u32 = 0; let mut x1658: u32 = 0; let (x1657, x1658) = fiat_p384_scalar_mulx_u32(x1643, 0xc7634d81); let mut x1659: u32 = 0; let mut x1660: u32 = 0; let (x1659, x1660) = fiat_p384_scalar_mulx_u32(x1643, 0xf4372ddf); let mut x1661: u32 = 0; let mut x1662: u32 = 0; let (x1661, x1662) = fiat_p384_scalar_mulx_u32(x1643, 0x581a0db2); let mut x1663: u32 = 0; let mut x1664: u32 = 0; let (x1663, x1664) = fiat_p384_scalar_mulx_u32(x1643, 0x48b0a77a); let mut x1665: u32 = 0; let mut x1666: u32 = 0; let (x1665, x1666) = fiat_p384_scalar_mulx_u32(x1643, 0xecec196a); let mut x1667: u32 = 0; let mut x1668: u32 = 0; let (x1667, x1668) = fiat_p384_scalar_mulx_u32(x1643, 0xccc52973); let mut x1669: u32 = 0; let mut x1670: fiat_p384_scalar_u1 = 0; let (x1669, x1670) = fiat_p384_scalar_addcarryx_u32(0x0, x1668, x1665); let mut x1671: u32 = 0; let mut x1672: fiat_p384_scalar_u1 = 0; let (x1671, x1672) = fiat_p384_scalar_addcarryx_u32(x1670, x1666, x1663); let mut x1673: u32 = 0; let mut x1674: fiat_p384_scalar_u1 = 0; let (x1673, x1674) = fiat_p384_scalar_addcarryx_u32(x1672, x1664, x1661); let mut x1675: u32 = 0; let mut x1676: fiat_p384_scalar_u1 = 0; let (x1675, x1676) = fiat_p384_scalar_addcarryx_u32(x1674, x1662, x1659); let mut x1677: u32 = 0; let mut x1678: fiat_p384_scalar_u1 = 0; let (x1677, x1678) = fiat_p384_scalar_addcarryx_u32(x1676, x1660, x1657); let mut x1679: u32 = 0; let mut x1680: fiat_p384_scalar_u1 = 0; let (x1679, x1680) = fiat_p384_scalar_addcarryx_u32(x1678, x1658, x1655); let mut x1681: u32 = 0; let mut x1682: fiat_p384_scalar_u1 = 0; let (x1681, x1682) = fiat_p384_scalar_addcarryx_u32(x1680, x1656, x1653); let mut x1683: u32 = 0; let mut x1684: fiat_p384_scalar_u1 = 0; let (x1683, x1684) = fiat_p384_scalar_addcarryx_u32(x1682, x1654, x1651); let mut x1685: u32 = 0; let mut x1686: fiat_p384_scalar_u1 = 0; let (x1685, x1686) = fiat_p384_scalar_addcarryx_u32(x1684, x1652, x1649); let mut x1687: u32 = 0; let mut x1688: fiat_p384_scalar_u1 = 0; let (x1687, x1688) = fiat_p384_scalar_addcarryx_u32(x1686, x1650, x1647); let mut x1689: u32 = 0; let mut x1690: fiat_p384_scalar_u1 = 0; let (x1689, x1690) = fiat_p384_scalar_addcarryx_u32(x1688, x1648, x1645); let mut x1691: u32 = 0; let mut x1692: fiat_p384_scalar_u1 = 0; let (x1691, x1692) = fiat_p384_scalar_addcarryx_u32(0x0, x1619, x1667); let mut x1693: u32 = 0; let mut x1694: fiat_p384_scalar_u1 = 0; let (x1693, x1694) = fiat_p384_scalar_addcarryx_u32(x1692, x1621, x1669); let mut x1695: u32 = 0; let mut x1696: fiat_p384_scalar_u1 = 0; let (x1695, x1696) = fiat_p384_scalar_addcarryx_u32(x1694, x1623, x1671); let mut x1697: u32 = 0; let mut x1698: fiat_p384_scalar_u1 = 0; let (x1697, x1698) = fiat_p384_scalar_addcarryx_u32(x1696, x1625, x1673); let mut x1699: u32 = 0; let mut x1700: fiat_p384_scalar_u1 = 0; let (x1699, x1700) = fiat_p384_scalar_addcarryx_u32(x1698, x1627, x1675); let mut x1701: u32 = 0; let mut x1702: fiat_p384_scalar_u1 = 0; let (x1701, x1702) = fiat_p384_scalar_addcarryx_u32(x1700, x1629, x1677); let mut x1703: u32 = 0; let mut x1704: fiat_p384_scalar_u1 = 0; let (x1703, x1704) = fiat_p384_scalar_addcarryx_u32(x1702, x1631, x1679); let mut x1705: u32 = 0; let mut x1706: fiat_p384_scalar_u1 = 0; let (x1705, x1706) = fiat_p384_scalar_addcarryx_u32(x1704, x1633, x1681); let mut x1707: u32 = 0; let mut x1708: fiat_p384_scalar_u1 = 0; let (x1707, x1708) = fiat_p384_scalar_addcarryx_u32(x1706, x1635, x1683); let mut x1709: u32 = 0; let mut x1710: fiat_p384_scalar_u1 = 0; let (x1709, x1710) = fiat_p384_scalar_addcarryx_u32(x1708, x1637, x1685); let mut x1711: u32 = 0; let mut x1712: fiat_p384_scalar_u1 = 0; let (x1711, x1712) = fiat_p384_scalar_addcarryx_u32(x1710, x1639, x1687); let mut x1713: u32 = 0; let mut x1714: fiat_p384_scalar_u1 = 0; let (x1713, x1714) = fiat_p384_scalar_addcarryx_u32(x1712, x1641, x1689); let mut x1715: u32 = 0; let mut x1716: fiat_p384_scalar_u1 = 0; let (x1715, x1716) = fiat_p384_scalar_addcarryx_u32( x1714, (((x1642 as u32) + (x1572 as u32)) + ((x1618 as u32) + x1574)), ((x1690 as u32) + x1646), ); let mut x1717: u32 = 0; let mut x1718: fiat_p384_scalar_u1 = 0; let (x1717, x1718) = fiat_p384_scalar_subborrowx_u32(0x0, x1693, 0xccc52973); let mut x1719: u32 = 0; let mut x1720: fiat_p384_scalar_u1 = 0; let (x1719, x1720) = fiat_p384_scalar_subborrowx_u32(x1718, x1695, 0xecec196a); let mut x1721: u32 = 0; let mut x1722: fiat_p384_scalar_u1 = 0; let (x1721, x1722) = fiat_p384_scalar_subborrowx_u32(x1720, x1697, 0x48b0a77a); let mut x1723: u32 = 0; let mut x1724: fiat_p384_scalar_u1 = 0; let (x1723, x1724) = fiat_p384_scalar_subborrowx_u32(x1722, x1699, 0x581a0db2); let mut x1725: u32 = 0; let mut x1726: fiat_p384_scalar_u1 = 0; let (x1725, x1726) = fiat_p384_scalar_subborrowx_u32(x1724, x1701, 0xf4372ddf); let mut x1727: u32 = 0; let mut x1728: fiat_p384_scalar_u1 = 0; let (x1727, x1728) = fiat_p384_scalar_subborrowx_u32(x1726, x1703, 0xc7634d81); let mut x1729: u32 = 0; let mut x1730: fiat_p384_scalar_u1 = 0; let (x1729, x1730) = fiat_p384_scalar_subborrowx_u32(x1728, x1705, 0xffffffff); let mut x1731: u32 = 0; let mut x1732: fiat_p384_scalar_u1 = 0; let (x1731, x1732) = fiat_p384_scalar_subborrowx_u32(x1730, x1707, 0xffffffff); let mut x1733: u32 = 0; let mut x1734: fiat_p384_scalar_u1 = 0; let (x1733, x1734) = fiat_p384_scalar_subborrowx_u32(x1732, x1709, 0xffffffff); let mut x1735: u32 = 0; let mut x1736: fiat_p384_scalar_u1 = 0; let (x1735, x1736) = fiat_p384_scalar_subborrowx_u32(x1734, x1711, 0xffffffff); let mut x1737: u32 = 0; let mut x1738: fiat_p384_scalar_u1 = 0; let (x1737, x1738) = fiat_p384_scalar_subborrowx_u32(x1736, x1713, 0xffffffff); let mut x1739: u32 = 0; let mut x1740: fiat_p384_scalar_u1 = 0; let (x1739, x1740) = fiat_p384_scalar_subborrowx_u32(x1738, x1715, 0xffffffff); let mut x1741: u32 = 0; let mut x1742: fiat_p384_scalar_u1 = 0; let (x1741, x1742) = fiat_p384_scalar_subborrowx_u32(x1740, (x1716 as u32), (0x0 as u32)); let mut x1743: u32 = 0; let (x1743) = fiat_p384_scalar_cmovznz_u32(x1742, x1717, x1693); let mut x1744: u32 = 0; let (x1744) = fiat_p384_scalar_cmovznz_u32(x1742, x1719, x1695); let mut x1745: u32 = 0; let (x1745) = fiat_p384_scalar_cmovznz_u32(x1742, x1721, x1697); let mut x1746: u32 = 0; let (x1746) = fiat_p384_scalar_cmovznz_u32(x1742, x1723, x1699); let mut x1747: u32 = 0; let (x1747) = fiat_p384_scalar_cmovznz_u32(x1742, x1725, x1701); let mut x1748: u32 = 0; let (x1748) = fiat_p384_scalar_cmovznz_u32(x1742, x1727, x1703); let mut x1749: u32 = 0; let (x1749) = fiat_p384_scalar_cmovznz_u32(x1742, x1729, x1705); let mut x1750: u32 = 0; let (x1750) = fiat_p384_scalar_cmovznz_u32(x1742, x1731, x1707); let mut x1751: u32 = 0; let (x1751) = fiat_p384_scalar_cmovznz_u32(x1742, x1733, x1709); let mut x1752: u32 = 0; let (x1752) = fiat_p384_scalar_cmovznz_u32(x1742, x1735, x1711); let mut x1753: u32 = 0; let (x1753) = fiat_p384_scalar_cmovznz_u32(x1742, x1737, x1713); let mut x1754: u32 = 0; let (x1754) = fiat_p384_scalar_cmovznz_u32(x1742, x1739, x1715); out1[0] = x1743; out1[1] = x1744; out1[2] = x1745; out1[3] = x1746; out1[4] = x1747; out1[5] = x1748; out1[6] = x1749; out1[7] = x1750; out1[8] = x1751; out1[9] = x1752; out1[10] = x1753; out1[11] = x1754; out1 } #[doc = " The function fiat_p384_scalar_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[inline] pub const fn fiat_p384_scalar_nonzero(arg1: &[u32; 12]) -> u32 { let mut out1: u32 = 0; let x1: u32 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | ((arg1[3]) | ((arg1[4]) | ((arg1[5]) | ((arg1[6]) | ((arg1[7]) | ((arg1[8]) | ((arg1[9]) | ((arg1[10]) | (arg1[11])))))))))))); out1 = x1; out1 } #[doc = " The function fiat_p384_scalar_selectznz is a multi-limb conditional select."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_scalar_selectznz( arg1: fiat_p384_scalar_u1, arg2: &[u32; 12], arg3: &[u32; 12], ) -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; let mut x1: u32 = 0; let (x1) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[0]), (arg3[0])); let mut x2: u32 = 0; let (x2) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[1]), (arg3[1])); let mut x3: u32 = 0; let (x3) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[2]), (arg3[2])); let mut x4: u32 = 0; let (x4) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[3]), (arg3[3])); let mut x5: u32 = 0; let (x5) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[4]), (arg3[4])); let mut x6: u32 = 0; let (x6) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[5]), (arg3[5])); let mut x7: u32 = 0; let (x7) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[6]), (arg3[6])); let mut x8: u32 = 0; let (x8) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[7]), (arg3[7])); let mut x9: u32 = 0; let (x9) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[8]), (arg3[8])); let mut x10: u32 = 0; let (x10) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[9]), (arg3[9])); let mut x11: u32 = 0; let (x11) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[10]), (arg3[10])); let mut x12: u32 = 0; let (x12) = fiat_p384_scalar_cmovznz_u32(arg1, (arg2[11]), (arg3[11])); out1[0] = x1; out1[1] = x2; out1[2] = x3; out1[3] = x4; out1[4] = x5; out1[5] = x6; out1[6] = x7; out1[7] = x8; out1[8] = x9; out1[9] = x10; out1[10] = x11; out1[11] = x12; out1 } #[doc = " The function fiat_p384_scalar_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..47]"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " 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]]"] #[inline] pub const fn fiat_p384_scalar_to_bytes(arg1: &[u32; 12]) -> [u8; 48] { let mut out1: [u8; 48] = [0; 48]; let x1: u32 = (arg1[11]); let x2: u32 = (arg1[10]); let x3: u32 = (arg1[9]); let x4: u32 = (arg1[8]); let x5: u32 = (arg1[7]); let x6: u32 = (arg1[6]); let x7: u32 = (arg1[5]); let x8: u32 = (arg1[4]); let x9: u32 = (arg1[3]); let x10: u32 = (arg1[2]); let x11: u32 = (arg1[1]); let x12: u32 = (arg1[0]); let x13: u8 = ((x12 & (0xff as u32)) as u8); let x14: u32 = (x12 >> 8); let x15: u8 = ((x14 & (0xff as u32)) as u8); let x16: u32 = (x14 >> 8); let x17: u8 = ((x16 & (0xff as u32)) as u8); let x18: u8 = ((x16 >> 8) as u8); let x19: u8 = ((x11 & (0xff as u32)) as u8); let x20: u32 = (x11 >> 8); let x21: u8 = ((x20 & (0xff as u32)) as u8); let x22: u32 = (x20 >> 8); let x23: u8 = ((x22 & (0xff as u32)) as u8); let x24: u8 = ((x22 >> 8) as u8); let x25: u8 = ((x10 & (0xff as u32)) as u8); let x26: u32 = (x10 >> 8); let x27: u8 = ((x26 & (0xff as u32)) as u8); let x28: u32 = (x26 >> 8); let x29: u8 = ((x28 & (0xff as u32)) as u8); let x30: u8 = ((x28 >> 8) as u8); let x31: u8 = ((x9 & (0xff as u32)) as u8); let x32: u32 = (x9 >> 8); let x33: u8 = ((x32 & (0xff as u32)) as u8); let x34: u32 = (x32 >> 8); let x35: u8 = ((x34 & (0xff as u32)) as u8); let x36: u8 = ((x34 >> 8) as u8); let x37: u8 = ((x8 & (0xff as u32)) as u8); let x38: u32 = (x8 >> 8); let x39: u8 = ((x38 & (0xff as u32)) as u8); let x40: u32 = (x38 >> 8); let x41: u8 = ((x40 & (0xff as u32)) as u8); let x42: u8 = ((x40 >> 8) as u8); let x43: u8 = ((x7 & (0xff as u32)) as u8); let x44: u32 = (x7 >> 8); let x45: u8 = ((x44 & (0xff as u32)) as u8); let x46: u32 = (x44 >> 8); let x47: u8 = ((x46 & (0xff as u32)) as u8); let x48: u8 = ((x46 >> 8) as u8); let x49: u8 = ((x6 & (0xff as u32)) as u8); let x50: u32 = (x6 >> 8); let x51: u8 = ((x50 & (0xff as u32)) as u8); let x52: u32 = (x50 >> 8); let x53: u8 = ((x52 & (0xff as u32)) as u8); let x54: u8 = ((x52 >> 8) as u8); let x55: u8 = ((x5 & (0xff as u32)) as u8); let x56: u32 = (x5 >> 8); let x57: u8 = ((x56 & (0xff as u32)) as u8); let x58: u32 = (x56 >> 8); let x59: u8 = ((x58 & (0xff as u32)) as u8); let x60: u8 = ((x58 >> 8) as u8); let x61: u8 = ((x4 & (0xff as u32)) as u8); let x62: u32 = (x4 >> 8); let x63: u8 = ((x62 & (0xff as u32)) as u8); let x64: u32 = (x62 >> 8); let x65: u8 = ((x64 & (0xff as u32)) as u8); let x66: u8 = ((x64 >> 8) as u8); let x67: u8 = ((x3 & (0xff as u32)) as u8); let x68: u32 = (x3 >> 8); let x69: u8 = ((x68 & (0xff as u32)) as u8); let x70: u32 = (x68 >> 8); let x71: u8 = ((x70 & (0xff as u32)) as u8); let x72: u8 = ((x70 >> 8) as u8); let x73: u8 = ((x2 & (0xff as u32)) as u8); let x74: u32 = (x2 >> 8); let x75: u8 = ((x74 & (0xff as u32)) as u8); let x76: u32 = (x74 >> 8); let x77: u8 = ((x76 & (0xff as u32)) as u8); let x78: u8 = ((x76 >> 8) as u8); let x79: u8 = ((x1 & (0xff as u32)) as u8); let x80: u32 = (x1 >> 8); let x81: u8 = ((x80 & (0xff as u32)) as u8); let x82: u32 = (x80 >> 8); let x83: u8 = ((x82 & (0xff as u32)) as u8); let x84: u8 = ((x82 >> 8) as u8); out1[0] = x13; out1[1] = x15; out1[2] = x17; out1[3] = x18; out1[4] = x19; out1[5] = x21; out1[6] = x23; out1[7] = x24; out1[8] = x25; out1[9] = x27; out1[10] = x29; out1[11] = x30; out1[12] = x31; out1[13] = x33; out1[14] = x35; out1[15] = x36; out1[16] = x37; out1[17] = x39; out1[18] = x41; out1[19] = x42; out1[20] = x43; out1[21] = x45; out1[22] = x47; out1[23] = x48; out1[24] = x49; out1[25] = x51; out1[26] = x53; out1[27] = x54; out1[28] = x55; out1[29] = x57; out1[30] = x59; out1[31] = x60; out1[32] = x61; out1[33] = x63; out1[34] = x65; out1[35] = x66; out1[36] = x67; out1[37] = x69; out1[38] = x71; out1[39] = x72; out1[40] = x73; out1[41] = x75; out1[42] = x77; out1[43] = x78; out1[44] = x79; out1[45] = x81; out1[46] = x83; out1[47] = x84; out1 } #[doc = " The function fiat_p384_scalar_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ bytes_eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = bytes_eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " 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]]"] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_scalar_from_bytes(arg1: &[u8; 48]) -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; let x1: u32 = (((arg1[47]) as u32) << 24); let x2: u32 = (((arg1[46]) as u32) << 16); let x3: u32 = (((arg1[45]) as u32) << 8); let x4: u8 = (arg1[44]); let x5: u32 = (((arg1[43]) as u32) << 24); let x6: u32 = (((arg1[42]) as u32) << 16); let x7: u32 = (((arg1[41]) as u32) << 8); let x8: u8 = (arg1[40]); let x9: u32 = (((arg1[39]) as u32) << 24); let x10: u32 = (((arg1[38]) as u32) << 16); let x11: u32 = (((arg1[37]) as u32) << 8); let x12: u8 = (arg1[36]); let x13: u32 = (((arg1[35]) as u32) << 24); let x14: u32 = (((arg1[34]) as u32) << 16); let x15: u32 = (((arg1[33]) as u32) << 8); let x16: u8 = (arg1[32]); let x17: u32 = (((arg1[31]) as u32) << 24); let x18: u32 = (((arg1[30]) as u32) << 16); let x19: u32 = (((arg1[29]) as u32) << 8); let x20: u8 = (arg1[28]); let x21: u32 = (((arg1[27]) as u32) << 24); let x22: u32 = (((arg1[26]) as u32) << 16); let x23: u32 = (((arg1[25]) as u32) << 8); let x24: u8 = (arg1[24]); let x25: u32 = (((arg1[23]) as u32) << 24); let x26: u32 = (((arg1[22]) as u32) << 16); let x27: u32 = (((arg1[21]) as u32) << 8); let x28: u8 = (arg1[20]); let x29: u32 = (((arg1[19]) as u32) << 24); let x30: u32 = (((arg1[18]) as u32) << 16); let x31: u32 = (((arg1[17]) as u32) << 8); let x32: u8 = (arg1[16]); let x33: u32 = (((arg1[15]) as u32) << 24); let x34: u32 = (((arg1[14]) as u32) << 16); let x35: u32 = (((arg1[13]) as u32) << 8); let x36: u8 = (arg1[12]); let x37: u32 = (((arg1[11]) as u32) << 24); let x38: u32 = (((arg1[10]) as u32) << 16); let x39: u32 = (((arg1[9]) as u32) << 8); let x40: u8 = (arg1[8]); let x41: u32 = (((arg1[7]) as u32) << 24); let x42: u32 = (((arg1[6]) as u32) << 16); let x43: u32 = (((arg1[5]) as u32) << 8); let x44: u8 = (arg1[4]); let x45: u32 = (((arg1[3]) as u32) << 24); let x46: u32 = (((arg1[2]) as u32) << 16); let x47: u32 = (((arg1[1]) as u32) << 8); let x48: u8 = (arg1[0]); let x49: u32 = (x47 + (x48 as u32)); let x50: u32 = (x46 + x49); let x51: u32 = (x45 + x50); let x52: u32 = (x43 + (x44 as u32)); let x53: u32 = (x42 + x52); let x54: u32 = (x41 + x53); let x55: u32 = (x39 + (x40 as u32)); let x56: u32 = (x38 + x55); let x57: u32 = (x37 + x56); let x58: u32 = (x35 + (x36 as u32)); let x59: u32 = (x34 + x58); let x60: u32 = (x33 + x59); let x61: u32 = (x31 + (x32 as u32)); let x62: u32 = (x30 + x61); let x63: u32 = (x29 + x62); let x64: u32 = (x27 + (x28 as u32)); let x65: u32 = (x26 + x64); let x66: u32 = (x25 + x65); let x67: u32 = (x23 + (x24 as u32)); let x68: u32 = (x22 + x67); let x69: u32 = (x21 + x68); let x70: u32 = (x19 + (x20 as u32)); let x71: u32 = (x18 + x70); let x72: u32 = (x17 + x71); let x73: u32 = (x15 + (x16 as u32)); let x74: u32 = (x14 + x73); let x75: u32 = (x13 + x74); let x76: u32 = (x11 + (x12 as u32)); let x77: u32 = (x10 + x76); let x78: u32 = (x9 + x77); let x79: u32 = (x7 + (x8 as u32)); let x80: u32 = (x6 + x79); let x81: u32 = (x5 + x80); let x82: u32 = (x3 + (x4 as u32)); let x83: u32 = (x2 + x82); let x84: u32 = (x1 + x83); out1[0] = x51; out1[1] = x54; out1[2] = x57; out1[3] = x60; out1[4] = x63; out1[5] = x66; out1[6] = x69; out1[7] = x72; out1[8] = x75; out1[9] = x78; out1[10] = x81; out1[11] = x84; out1 } #[doc = " The function fiat_p384_scalar_set_one returns the field element one in the Montgomery domain."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = 1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[inline] pub const fn fiat_p384_scalar_set_one() -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 12]; out1[0] = 0x333ad68d; out1[1] = 0x1313e695; out1[2] = 0xb74f5885; out1[3] = 0xa7e5f24d; out1[4] = 0xbc8d220; out1[5] = 0x389cb27e; out1[6] = (0x0 as u32); out1[7] = (0x0 as u32); out1[8] = (0x0 as u32); out1[9] = (0x0 as u32); out1[10] = (0x0 as u32); out1[11] = (0x0 as u32); out1 } #[doc = " The function fiat_p384_scalar_msat returns the saturated representation of the prime modulus."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " twos_complement_eval out1 = m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_scalar_msat() -> [u32; 13] { let mut out1: [u32; 13] = [0; 13]; out1[0] = 0xccc52973; out1[1] = 0xecec196a; out1[2] = 0x48b0a77a; out1[3] = 0x581a0db2; out1[4] = 0xf4372ddf; out1[5] = 0xc7634d81; out1[6] = 0xffffffff; out1[7] = 0xffffffff; out1[8] = 0xffffffff; out1[9] = 0xffffffff; out1[10] = 0xffffffff; out1[11] = 0xffffffff; out1[12] = (0x0 as u32); out1 } #[doc = " The function fiat_p384_scalar_divstep computes a divstep."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg4 < m"] #[doc = " 0 ≤ eval arg5 < m"] #[doc = " Postconditions:"] #[doc = " out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1)"] #[doc = " twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2)"] #[doc = " twos_complement_eval out3 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then ⌊(twos_complement_eval arg3 - twos_complement_eval arg2) / 2⌋ else ⌊(twos_complement_eval arg3 + (twos_complement_eval arg3 mod 2) * twos_complement_eval arg2) / 2⌋)"] #[doc = " eval (from_montgomery out4) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (2 * eval (from_montgomery arg5)) mod m else (2 * eval (from_montgomery arg4)) mod m)"] #[doc = " eval (from_montgomery out5) mod m = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then (eval (from_montgomery arg4) - eval (from_montgomery arg4)) mod m else (eval (from_montgomery arg5) + (twos_complement_eval arg3 mod 2) * eval (from_montgomery arg4)) mod m)"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out2 < m"] #[doc = " 0 ≤ eval out3 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffff]"] #[doc = " arg2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg4: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " arg5: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffff]"] #[doc = " out2: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out3: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out4: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[doc = " out5: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_scalar_divstep( arg1: u32, arg2: &[u32; 13], arg3: &[u32; 13], arg4: &[u32; 12], arg5: &[u32; 12], ) -> (u32, [u32; 13], [u32; 13], [u32; 12], [u32; 12]) { let mut out1: u32 = 0; let mut out2: [u32; 13] = [0; 13]; let mut out3: [u32; 13] = [0; 13]; let mut out4: [u32; 12] = [0; 12]; let mut out5: [u32; 12] = [0; 12]; let mut x1: u32 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_addcarryx_u32(0x0, (!arg1), (0x1 as u32)); let x3: fiat_p384_scalar_u1 = (((x1 >> 31) as fiat_p384_scalar_u1) & (((arg3[0]) & (0x1 as u32)) as fiat_p384_scalar_u1)); let mut x4: u32 = 0; let mut x5: fiat_p384_scalar_u1 = 0; let (x4, x5) = fiat_p384_scalar_addcarryx_u32(0x0, (!arg1), (0x1 as u32)); let mut x6: u32 = 0; let (x6) = fiat_p384_scalar_cmovznz_u32(x3, arg1, x4); let mut x7: u32 = 0; let (x7) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[0]), (arg3[0])); let mut x8: u32 = 0; let (x8) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[1]), (arg3[1])); let mut x9: u32 = 0; let (x9) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[2]), (arg3[2])); let mut x10: u32 = 0; let (x10) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[3]), (arg3[3])); let mut x11: u32 = 0; let (x11) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[4]), (arg3[4])); let mut x12: u32 = 0; let (x12) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[5]), (arg3[5])); let mut x13: u32 = 0; let (x13) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[6]), (arg3[6])); let mut x14: u32 = 0; let (x14) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[7]), (arg3[7])); let mut x15: u32 = 0; let (x15) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[8]), (arg3[8])); let mut x16: u32 = 0; let (x16) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[9]), (arg3[9])); let mut x17: u32 = 0; let (x17) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[10]), (arg3[10])); let mut x18: u32 = 0; let (x18) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[11]), (arg3[11])); let mut x19: u32 = 0; let (x19) = fiat_p384_scalar_cmovznz_u32(x3, (arg2[12]), (arg3[12])); let mut x20: u32 = 0; let mut x21: fiat_p384_scalar_u1 = 0; let (x20, x21) = fiat_p384_scalar_addcarryx_u32(0x0, (0x1 as u32), (!(arg2[0]))); let mut x22: u32 = 0; let mut x23: fiat_p384_scalar_u1 = 0; let (x22, x23) = fiat_p384_scalar_addcarryx_u32(x21, (0x0 as u32), (!(arg2[1]))); let mut x24: u32 = 0; let mut x25: fiat_p384_scalar_u1 = 0; let (x24, x25) = fiat_p384_scalar_addcarryx_u32(x23, (0x0 as u32), (!(arg2[2]))); let mut x26: u32 = 0; let mut x27: fiat_p384_scalar_u1 = 0; let (x26, x27) = fiat_p384_scalar_addcarryx_u32(x25, (0x0 as u32), (!(arg2[3]))); let mut x28: u32 = 0; let mut x29: fiat_p384_scalar_u1 = 0; let (x28, x29) = fiat_p384_scalar_addcarryx_u32(x27, (0x0 as u32), (!(arg2[4]))); let mut x30: u32 = 0; let mut x31: fiat_p384_scalar_u1 = 0; let (x30, x31) = fiat_p384_scalar_addcarryx_u32(x29, (0x0 as u32), (!(arg2[5]))); let mut x32: u32 = 0; let mut x33: fiat_p384_scalar_u1 = 0; let (x32, x33) = fiat_p384_scalar_addcarryx_u32(x31, (0x0 as u32), (!(arg2[6]))); let mut x34: u32 = 0; let mut x35: fiat_p384_scalar_u1 = 0; let (x34, x35) = fiat_p384_scalar_addcarryx_u32(x33, (0x0 as u32), (!(arg2[7]))); let mut x36: u32 = 0; let mut x37: fiat_p384_scalar_u1 = 0; let (x36, x37) = fiat_p384_scalar_addcarryx_u32(x35, (0x0 as u32), (!(arg2[8]))); let mut x38: u32 = 0; let mut x39: fiat_p384_scalar_u1 = 0; let (x38, x39) = fiat_p384_scalar_addcarryx_u32(x37, (0x0 as u32), (!(arg2[9]))); let mut x40: u32 = 0; let mut x41: fiat_p384_scalar_u1 = 0; let (x40, x41) = fiat_p384_scalar_addcarryx_u32(x39, (0x0 as u32), (!(arg2[10]))); let mut x42: u32 = 0; let mut x43: fiat_p384_scalar_u1 = 0; let (x42, x43) = fiat_p384_scalar_addcarryx_u32(x41, (0x0 as u32), (!(arg2[11]))); let mut x44: u32 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u32(x43, (0x0 as u32), (!(arg2[12]))); let mut x46: u32 = 0; let (x46) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[0]), x20); let mut x47: u32 = 0; let (x47) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[1]), x22); let mut x48: u32 = 0; let (x48) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[2]), x24); let mut x49: u32 = 0; let (x49) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[3]), x26); let mut x50: u32 = 0; let (x50) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[4]), x28); let mut x51: u32 = 0; let (x51) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[5]), x30); let mut x52: u32 = 0; let (x52) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[6]), x32); let mut x53: u32 = 0; let (x53) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[7]), x34); let mut x54: u32 = 0; let (x54) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[8]), x36); let mut x55: u32 = 0; let (x55) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[9]), x38); let mut x56: u32 = 0; let (x56) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[10]), x40); let mut x57: u32 = 0; let (x57) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[11]), x42); let mut x58: u32 = 0; let (x58) = fiat_p384_scalar_cmovznz_u32(x3, (arg3[12]), x44); let mut x59: u32 = 0; let (x59) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[0]), (arg5[0])); let mut x60: u32 = 0; let (x60) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[1]), (arg5[1])); let mut x61: u32 = 0; let (x61) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[2]), (arg5[2])); let mut x62: u32 = 0; let (x62) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[3]), (arg5[3])); let mut x63: u32 = 0; let (x63) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[4]), (arg5[4])); let mut x64: u32 = 0; let (x64) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[5]), (arg5[5])); let mut x65: u32 = 0; let (x65) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[6]), (arg5[6])); let mut x66: u32 = 0; let (x66) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[7]), (arg5[7])); let mut x67: u32 = 0; let (x67) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[8]), (arg5[8])); let mut x68: u32 = 0; let (x68) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[9]), (arg5[9])); let mut x69: u32 = 0; let (x69) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[10]), (arg5[10])); let mut x70: u32 = 0; let (x70) = fiat_p384_scalar_cmovznz_u32(x3, (arg4[11]), (arg5[11])); let mut x71: u32 = 0; let mut x72: fiat_p384_scalar_u1 = 0; let (x71, x72) = fiat_p384_scalar_addcarryx_u32(0x0, x59, x59); let mut x73: u32 = 0; let mut x74: fiat_p384_scalar_u1 = 0; let (x73, x74) = fiat_p384_scalar_addcarryx_u32(x72, x60, x60); let mut x75: u32 = 0; let mut x76: fiat_p384_scalar_u1 = 0; let (x75, x76) = fiat_p384_scalar_addcarryx_u32(x74, x61, x61); let mut x77: u32 = 0; let mut x78: fiat_p384_scalar_u1 = 0; let (x77, x78) = fiat_p384_scalar_addcarryx_u32(x76, x62, x62); let mut x79: u32 = 0; let mut x80: fiat_p384_scalar_u1 = 0; let (x79, x80) = fiat_p384_scalar_addcarryx_u32(x78, x63, x63); let mut x81: u32 = 0; let mut x82: fiat_p384_scalar_u1 = 0; let (x81, x82) = fiat_p384_scalar_addcarryx_u32(x80, x64, x64); let mut x83: u32 = 0; let mut x84: fiat_p384_scalar_u1 = 0; let (x83, x84) = fiat_p384_scalar_addcarryx_u32(x82, x65, x65); let mut x85: u32 = 0; let mut x86: fiat_p384_scalar_u1 = 0; let (x85, x86) = fiat_p384_scalar_addcarryx_u32(x84, x66, x66); let mut x87: u32 = 0; let mut x88: fiat_p384_scalar_u1 = 0; let (x87, x88) = fiat_p384_scalar_addcarryx_u32(x86, x67, x67); let mut x89: u32 = 0; let mut x90: fiat_p384_scalar_u1 = 0; let (x89, x90) = fiat_p384_scalar_addcarryx_u32(x88, x68, x68); let mut x91: u32 = 0; let mut x92: fiat_p384_scalar_u1 = 0; let (x91, x92) = fiat_p384_scalar_addcarryx_u32(x90, x69, x69); let mut x93: u32 = 0; let mut x94: fiat_p384_scalar_u1 = 0; let (x93, x94) = fiat_p384_scalar_addcarryx_u32(x92, x70, x70); let mut x95: u32 = 0; let mut x96: fiat_p384_scalar_u1 = 0; let (x95, x96) = fiat_p384_scalar_subborrowx_u32(0x0, x71, 0xccc52973); let mut x97: u32 = 0; let mut x98: fiat_p384_scalar_u1 = 0; let (x97, x98) = fiat_p384_scalar_subborrowx_u32(x96, x73, 0xecec196a); let mut x99: u32 = 0; let mut x100: fiat_p384_scalar_u1 = 0; let (x99, x100) = fiat_p384_scalar_subborrowx_u32(x98, x75, 0x48b0a77a); let mut x101: u32 = 0; let mut x102: fiat_p384_scalar_u1 = 0; let (x101, x102) = fiat_p384_scalar_subborrowx_u32(x100, x77, 0x581a0db2); let mut x103: u32 = 0; let mut x104: fiat_p384_scalar_u1 = 0; let (x103, x104) = fiat_p384_scalar_subborrowx_u32(x102, x79, 0xf4372ddf); let mut x105: u32 = 0; let mut x106: fiat_p384_scalar_u1 = 0; let (x105, x106) = fiat_p384_scalar_subborrowx_u32(x104, x81, 0xc7634d81); let mut x107: u32 = 0; let mut x108: fiat_p384_scalar_u1 = 0; let (x107, x108) = fiat_p384_scalar_subborrowx_u32(x106, x83, 0xffffffff); let mut x109: u32 = 0; let mut x110: fiat_p384_scalar_u1 = 0; let (x109, x110) = fiat_p384_scalar_subborrowx_u32(x108, x85, 0xffffffff); let mut x111: u32 = 0; let mut x112: fiat_p384_scalar_u1 = 0; let (x111, x112) = fiat_p384_scalar_subborrowx_u32(x110, x87, 0xffffffff); let mut x113: u32 = 0; let mut x114: fiat_p384_scalar_u1 = 0; let (x113, x114) = fiat_p384_scalar_subborrowx_u32(x112, x89, 0xffffffff); let mut x115: u32 = 0; let mut x116: fiat_p384_scalar_u1 = 0; let (x115, x116) = fiat_p384_scalar_subborrowx_u32(x114, x91, 0xffffffff); let mut x117: u32 = 0; let mut x118: fiat_p384_scalar_u1 = 0; let (x117, x118) = fiat_p384_scalar_subborrowx_u32(x116, x93, 0xffffffff); let mut x119: u32 = 0; let mut x120: fiat_p384_scalar_u1 = 0; let (x119, x120) = fiat_p384_scalar_subborrowx_u32(x118, (x94 as u32), (0x0 as u32)); let x121: u32 = (arg4[11]); let x122: u32 = (arg4[10]); let x123: u32 = (arg4[9]); let x124: u32 = (arg4[8]); let x125: u32 = (arg4[7]); let x126: u32 = (arg4[6]); let x127: u32 = (arg4[5]); let x128: u32 = (arg4[4]); let x129: u32 = (arg4[3]); let x130: u32 = (arg4[2]); let x131: u32 = (arg4[1]); let x132: u32 = (arg4[0]); let mut x133: u32 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_subborrowx_u32(0x0, (0x0 as u32), x132); let mut x135: u32 = 0; let mut x136: fiat_p384_scalar_u1 = 0; let (x135, x136) = fiat_p384_scalar_subborrowx_u32(x134, (0x0 as u32), x131); let mut x137: u32 = 0; let mut x138: fiat_p384_scalar_u1 = 0; let (x137, x138) = fiat_p384_scalar_subborrowx_u32(x136, (0x0 as u32), x130); let mut x139: u32 = 0; let mut x140: fiat_p384_scalar_u1 = 0; let (x139, x140) = fiat_p384_scalar_subborrowx_u32(x138, (0x0 as u32), x129); let mut x141: u32 = 0; let mut x142: fiat_p384_scalar_u1 = 0; let (x141, x142) = fiat_p384_scalar_subborrowx_u32(x140, (0x0 as u32), x128); let mut x143: u32 = 0; let mut x144: fiat_p384_scalar_u1 = 0; let (x143, x144) = fiat_p384_scalar_subborrowx_u32(x142, (0x0 as u32), x127); let mut x145: u32 = 0; let mut x146: fiat_p384_scalar_u1 = 0; let (x145, x146) = fiat_p384_scalar_subborrowx_u32(x144, (0x0 as u32), x126); let mut x147: u32 = 0; let mut x148: fiat_p384_scalar_u1 = 0; let (x147, x148) = fiat_p384_scalar_subborrowx_u32(x146, (0x0 as u32), x125); let mut x149: u32 = 0; let mut x150: fiat_p384_scalar_u1 = 0; let (x149, x150) = fiat_p384_scalar_subborrowx_u32(x148, (0x0 as u32), x124); let mut x151: u32 = 0; let mut x152: fiat_p384_scalar_u1 = 0; let (x151, x152) = fiat_p384_scalar_subborrowx_u32(x150, (0x0 as u32), x123); let mut x153: u32 = 0; let mut x154: fiat_p384_scalar_u1 = 0; let (x153, x154) = fiat_p384_scalar_subborrowx_u32(x152, (0x0 as u32), x122); let mut x155: u32 = 0; let mut x156: fiat_p384_scalar_u1 = 0; let (x155, x156) = fiat_p384_scalar_subborrowx_u32(x154, (0x0 as u32), x121); let mut x157: u32 = 0; let (x157) = fiat_p384_scalar_cmovznz_u32(x156, (0x0 as u32), 0xffffffff); let mut x158: u32 = 0; let mut x159: fiat_p384_scalar_u1 = 0; let (x158, x159) = fiat_p384_scalar_addcarryx_u32(0x0, x133, (x157 & 0xccc52973)); let mut x160: u32 = 0; let mut x161: fiat_p384_scalar_u1 = 0; let (x160, x161) = fiat_p384_scalar_addcarryx_u32(x159, x135, (x157 & 0xecec196a)); let mut x162: u32 = 0; let mut x163: fiat_p384_scalar_u1 = 0; let (x162, x163) = fiat_p384_scalar_addcarryx_u32(x161, x137, (x157 & 0x48b0a77a)); let mut x164: u32 = 0; let mut x165: fiat_p384_scalar_u1 = 0; let (x164, x165) = fiat_p384_scalar_addcarryx_u32(x163, x139, (x157 & 0x581a0db2)); let mut x166: u32 = 0; let mut x167: fiat_p384_scalar_u1 = 0; let (x166, x167) = fiat_p384_scalar_addcarryx_u32(x165, x141, (x157 & 0xf4372ddf)); let mut x168: u32 = 0; let mut x169: fiat_p384_scalar_u1 = 0; let (x168, x169) = fiat_p384_scalar_addcarryx_u32(x167, x143, (x157 & 0xc7634d81)); let mut x170: u32 = 0; let mut x171: fiat_p384_scalar_u1 = 0; let (x170, x171) = fiat_p384_scalar_addcarryx_u32(x169, x145, x157); let mut x172: u32 = 0; let mut x173: fiat_p384_scalar_u1 = 0; let (x172, x173) = fiat_p384_scalar_addcarryx_u32(x171, x147, x157); let mut x174: u32 = 0; let mut x175: fiat_p384_scalar_u1 = 0; let (x174, x175) = fiat_p384_scalar_addcarryx_u32(x173, x149, x157); let mut x176: u32 = 0; let mut x177: fiat_p384_scalar_u1 = 0; let (x176, x177) = fiat_p384_scalar_addcarryx_u32(x175, x151, x157); let mut x178: u32 = 0; let mut x179: fiat_p384_scalar_u1 = 0; let (x178, x179) = fiat_p384_scalar_addcarryx_u32(x177, x153, x157); let mut x180: u32 = 0; let mut x181: fiat_p384_scalar_u1 = 0; let (x180, x181) = fiat_p384_scalar_addcarryx_u32(x179, x155, x157); let mut x182: u32 = 0; let (x182) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[0]), x158); let mut x183: u32 = 0; let (x183) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[1]), x160); let mut x184: u32 = 0; let (x184) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[2]), x162); let mut x185: u32 = 0; let (x185) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[3]), x164); let mut x186: u32 = 0; let (x186) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[4]), x166); let mut x187: u32 = 0; let (x187) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[5]), x168); let mut x188: u32 = 0; let (x188) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[6]), x170); let mut x189: u32 = 0; let (x189) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[7]), x172); let mut x190: u32 = 0; let (x190) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[8]), x174); let mut x191: u32 = 0; let (x191) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[9]), x176); let mut x192: u32 = 0; let (x192) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[10]), x178); let mut x193: u32 = 0; let (x193) = fiat_p384_scalar_cmovznz_u32(x3, (arg5[11]), x180); let x194: fiat_p384_scalar_u1 = ((x46 & (0x1 as u32)) as fiat_p384_scalar_u1); let mut x195: u32 = 0; let (x195) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x7); let mut x196: u32 = 0; let (x196) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x8); let mut x197: u32 = 0; let (x197) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x9); let mut x198: u32 = 0; let (x198) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x10); let mut x199: u32 = 0; let (x199) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x11); let mut x200: u32 = 0; let (x200) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x12); let mut x201: u32 = 0; let (x201) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x13); let mut x202: u32 = 0; let (x202) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x14); let mut x203: u32 = 0; let (x203) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x15); let mut x204: u32 = 0; let (x204) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x16); let mut x205: u32 = 0; let (x205) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x17); let mut x206: u32 = 0; let (x206) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x18); let mut x207: u32 = 0; let (x207) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x19); let mut x208: u32 = 0; let mut x209: fiat_p384_scalar_u1 = 0; let (x208, x209) = fiat_p384_scalar_addcarryx_u32(0x0, x46, x195); let mut x210: u32 = 0; let mut x211: fiat_p384_scalar_u1 = 0; let (x210, x211) = fiat_p384_scalar_addcarryx_u32(x209, x47, x196); let mut x212: u32 = 0; let mut x213: fiat_p384_scalar_u1 = 0; let (x212, x213) = fiat_p384_scalar_addcarryx_u32(x211, x48, x197); let mut x214: u32 = 0; let mut x215: fiat_p384_scalar_u1 = 0; let (x214, x215) = fiat_p384_scalar_addcarryx_u32(x213, x49, x198); let mut x216: u32 = 0; let mut x217: fiat_p384_scalar_u1 = 0; let (x216, x217) = fiat_p384_scalar_addcarryx_u32(x215, x50, x199); let mut x218: u32 = 0; let mut x219: fiat_p384_scalar_u1 = 0; let (x218, x219) = fiat_p384_scalar_addcarryx_u32(x217, x51, x200); let mut x220: u32 = 0; let mut x221: fiat_p384_scalar_u1 = 0; let (x220, x221) = fiat_p384_scalar_addcarryx_u32(x219, x52, x201); let mut x222: u32 = 0; let mut x223: fiat_p384_scalar_u1 = 0; let (x222, x223) = fiat_p384_scalar_addcarryx_u32(x221, x53, x202); let mut x224: u32 = 0; let mut x225: fiat_p384_scalar_u1 = 0; let (x224, x225) = fiat_p384_scalar_addcarryx_u32(x223, x54, x203); let mut x226: u32 = 0; let mut x227: fiat_p384_scalar_u1 = 0; let (x226, x227) = fiat_p384_scalar_addcarryx_u32(x225, x55, x204); let mut x228: u32 = 0; let mut x229: fiat_p384_scalar_u1 = 0; let (x228, x229) = fiat_p384_scalar_addcarryx_u32(x227, x56, x205); let mut x230: u32 = 0; let mut x231: fiat_p384_scalar_u1 = 0; let (x230, x231) = fiat_p384_scalar_addcarryx_u32(x229, x57, x206); let mut x232: u32 = 0; let mut x233: fiat_p384_scalar_u1 = 0; let (x232, x233) = fiat_p384_scalar_addcarryx_u32(x231, x58, x207); let mut x234: u32 = 0; let (x234) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x59); let mut x235: u32 = 0; let (x235) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x60); let mut x236: u32 = 0; let (x236) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x61); let mut x237: u32 = 0; let (x237) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x62); let mut x238: u32 = 0; let (x238) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x63); let mut x239: u32 = 0; let (x239) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x64); let mut x240: u32 = 0; let (x240) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x65); let mut x241: u32 = 0; let (x241) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x66); let mut x242: u32 = 0; let (x242) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x67); let mut x243: u32 = 0; let (x243) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x68); let mut x244: u32 = 0; let (x244) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x69); let mut x245: u32 = 0; let (x245) = fiat_p384_scalar_cmovznz_u32(x194, (0x0 as u32), x70); let mut x246: u32 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u32(0x0, x182, x234); let mut x248: u32 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u32(x247, x183, x235); let mut x250: u32 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u32(x249, x184, x236); let mut x252: u32 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u32(x251, x185, x237); let mut x254: u32 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u32(x253, x186, x238); let mut x256: u32 = 0; let mut x257: fiat_p384_scalar_u1 = 0; let (x256, x257) = fiat_p384_scalar_addcarryx_u32(x255, x187, x239); let mut x258: u32 = 0; let mut x259: fiat_p384_scalar_u1 = 0; let (x258, x259) = fiat_p384_scalar_addcarryx_u32(x257, x188, x240); let mut x260: u32 = 0; let mut x261: fiat_p384_scalar_u1 = 0; let (x260, x261) = fiat_p384_scalar_addcarryx_u32(x259, x189, x241); let mut x262: u32 = 0; let mut x263: fiat_p384_scalar_u1 = 0; let (x262, x263) = fiat_p384_scalar_addcarryx_u32(x261, x190, x242); let mut x264: u32 = 0; let mut x265: fiat_p384_scalar_u1 = 0; let (x264, x265) = fiat_p384_scalar_addcarryx_u32(x263, x191, x243); let mut x266: u32 = 0; let mut x267: fiat_p384_scalar_u1 = 0; let (x266, x267) = fiat_p384_scalar_addcarryx_u32(x265, x192, x244); let mut x268: u32 = 0; let mut x269: fiat_p384_scalar_u1 = 0; let (x268, x269) = fiat_p384_scalar_addcarryx_u32(x267, x193, x245); let mut x270: u32 = 0; let mut x271: fiat_p384_scalar_u1 = 0; let (x270, x271) = fiat_p384_scalar_subborrowx_u32(0x0, x246, 0xccc52973); let mut x272: u32 = 0; let mut x273: fiat_p384_scalar_u1 = 0; let (x272, x273) = fiat_p384_scalar_subborrowx_u32(x271, x248, 0xecec196a); let mut x274: u32 = 0; let mut x275: fiat_p384_scalar_u1 = 0; let (x274, x275) = fiat_p384_scalar_subborrowx_u32(x273, x250, 0x48b0a77a); let mut x276: u32 = 0; let mut x277: fiat_p384_scalar_u1 = 0; let (x276, x277) = fiat_p384_scalar_subborrowx_u32(x275, x252, 0x581a0db2); let mut x278: u32 = 0; let mut x279: fiat_p384_scalar_u1 = 0; let (x278, x279) = fiat_p384_scalar_subborrowx_u32(x277, x254, 0xf4372ddf); let mut x280: u32 = 0; let mut x281: fiat_p384_scalar_u1 = 0; let (x280, x281) = fiat_p384_scalar_subborrowx_u32(x279, x256, 0xc7634d81); let mut x282: u32 = 0; let mut x283: fiat_p384_scalar_u1 = 0; let (x282, x283) = fiat_p384_scalar_subborrowx_u32(x281, x258, 0xffffffff); let mut x284: u32 = 0; let mut x285: fiat_p384_scalar_u1 = 0; let (x284, x285) = fiat_p384_scalar_subborrowx_u32(x283, x260, 0xffffffff); let mut x286: u32 = 0; let mut x287: fiat_p384_scalar_u1 = 0; let (x286, x287) = fiat_p384_scalar_subborrowx_u32(x285, x262, 0xffffffff); let mut x288: u32 = 0; let mut x289: fiat_p384_scalar_u1 = 0; let (x288, x289) = fiat_p384_scalar_subborrowx_u32(x287, x264, 0xffffffff); let mut x290: u32 = 0; let mut x291: fiat_p384_scalar_u1 = 0; let (x290, x291) = fiat_p384_scalar_subborrowx_u32(x289, x266, 0xffffffff); let mut x292: u32 = 0; let mut x293: fiat_p384_scalar_u1 = 0; let (x292, x293) = fiat_p384_scalar_subborrowx_u32(x291, x268, 0xffffffff); let mut x294: u32 = 0; let mut x295: fiat_p384_scalar_u1 = 0; let (x294, x295) = fiat_p384_scalar_subborrowx_u32(x293, (x269 as u32), (0x0 as u32)); let mut x296: u32 = 0; let mut x297: fiat_p384_scalar_u1 = 0; let (x296, x297) = fiat_p384_scalar_addcarryx_u32(0x0, x6, (0x1 as u32)); let x298: u32 = ((x208 >> 1) | ((x210 << 31) & 0xffffffff)); let x299: u32 = ((x210 >> 1) | ((x212 << 31) & 0xffffffff)); let x300: u32 = ((x212 >> 1) | ((x214 << 31) & 0xffffffff)); let x301: u32 = ((x214 >> 1) | ((x216 << 31) & 0xffffffff)); let x302: u32 = ((x216 >> 1) | ((x218 << 31) & 0xffffffff)); let x303: u32 = ((x218 >> 1) | ((x220 << 31) & 0xffffffff)); let x304: u32 = ((x220 >> 1) | ((x222 << 31) & 0xffffffff)); let x305: u32 = ((x222 >> 1) | ((x224 << 31) & 0xffffffff)); let x306: u32 = ((x224 >> 1) | ((x226 << 31) & 0xffffffff)); let x307: u32 = ((x226 >> 1) | ((x228 << 31) & 0xffffffff)); let x308: u32 = ((x228 >> 1) | ((x230 << 31) & 0xffffffff)); let x309: u32 = ((x230 >> 1) | ((x232 << 31) & 0xffffffff)); let x310: u32 = ((x232 & 0x80000000) | (x232 >> 1)); let mut x311: u32 = 0; let (x311) = fiat_p384_scalar_cmovznz_u32(x120, x95, x71); let mut x312: u32 = 0; let (x312) = fiat_p384_scalar_cmovznz_u32(x120, x97, x73); let mut x313: u32 = 0; let (x313) = fiat_p384_scalar_cmovznz_u32(x120, x99, x75); let mut x314: u32 = 0; let (x314) = fiat_p384_scalar_cmovznz_u32(x120, x101, x77); let mut x315: u32 = 0; let (x315) = fiat_p384_scalar_cmovznz_u32(x120, x103, x79); let mut x316: u32 = 0; let (x316) = fiat_p384_scalar_cmovznz_u32(x120, x105, x81); let mut x317: u32 = 0; let (x317) = fiat_p384_scalar_cmovznz_u32(x120, x107, x83); let mut x318: u32 = 0; let (x318) = fiat_p384_scalar_cmovznz_u32(x120, x109, x85); let mut x319: u32 = 0; let (x319) = fiat_p384_scalar_cmovznz_u32(x120, x111, x87); let mut x320: u32 = 0; let (x320) = fiat_p384_scalar_cmovznz_u32(x120, x113, x89); let mut x321: u32 = 0; let (x321) = fiat_p384_scalar_cmovznz_u32(x120, x115, x91); let mut x322: u32 = 0; let (x322) = fiat_p384_scalar_cmovznz_u32(x120, x117, x93); let mut x323: u32 = 0; let (x323) = fiat_p384_scalar_cmovznz_u32(x295, x270, x246); let mut x324: u32 = 0; let (x324) = fiat_p384_scalar_cmovznz_u32(x295, x272, x248); let mut x325: u32 = 0; let (x325) = fiat_p384_scalar_cmovznz_u32(x295, x274, x250); let mut x326: u32 = 0; let (x326) = fiat_p384_scalar_cmovznz_u32(x295, x276, x252); let mut x327: u32 = 0; let (x327) = fiat_p384_scalar_cmovznz_u32(x295, x278, x254); let mut x328: u32 = 0; let (x328) = fiat_p384_scalar_cmovznz_u32(x295, x280, x256); let mut x329: u32 = 0; let (x329) = fiat_p384_scalar_cmovznz_u32(x295, x282, x258); let mut x330: u32 = 0; let (x330) = fiat_p384_scalar_cmovznz_u32(x295, x284, x260); let mut x331: u32 = 0; let (x331) = fiat_p384_scalar_cmovznz_u32(x295, x286, x262); let mut x332: u32 = 0; let (x332) = fiat_p384_scalar_cmovznz_u32(x295, x288, x264); let mut x333: u32 = 0; let (x333) = fiat_p384_scalar_cmovznz_u32(x295, x290, x266); let mut x334: u32 = 0; let (x334) = fiat_p384_scalar_cmovznz_u32(x295, x292, x268); out1 = x296; out2[0] = x7; out2[1] = x8; out2[2] = x9; out2[3] = x10; out2[4] = x11; out2[5] = x12; out2[6] = x13; out2[7] = x14; out2[8] = x15; out2[9] = x16; out2[10] = x17; out2[11] = x18; out2[12] = x19; out3[0] = x298; out3[1] = x299; out3[2] = x300; out3[3] = x301; out3[4] = x302; out3[5] = x303; out3[6] = x304; out3[7] = x305; out3[8] = x306; out3[9] = x307; out3[10] = x308; out3[11] = x309; out3[12] = x310; out4[0] = x311; out4[1] = x312; out4[2] = x313; out4[3] = x314; out4[4] = x315; out4[5] = x316; out4[6] = x317; out4[7] = x318; out4[8] = x319; out4[9] = x320; out4[10] = x321; out4[11] = x322; out5[0] = x323; out5[1] = x324; out5[2] = x325; out5[3] = x326; out5[4] = x327; out5[5] = x328; out5[6] = x329; out5[7] = x330; out5[8] = x331; out5[9] = x332; out5[10] = x333; out5[11] = x334; (out1, out2, out3, out4, out5) } #[doc = " The function fiat_p384_scalar_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form)."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) = ⌊(m - 1) / 2⌋^(if ⌊log2 m⌋ + 1 < 46 then ⌊(49 * (⌊log2 m⌋ + 1) + 80) / 17⌋ else ⌊(49 * (⌊log2 m⌋ + 1) + 57) / 17⌋)"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff], [0x0 ~> 0xffffffff]]"] #[inline] pub const fn fiat_p384_scalar_divstep_precomp() -> [u32; 12] { let mut out1: [u32; 12] = [0; 12]; out1[0] = 0xe6045b6a; out1[1] = 0x49589ae0; out1[2] = 0x870040ed; out1[3] = 0x3c9a5352; out1[4] = 0x977dc242; out1[5] = 0xdacb097e; out1[6] = 0xd1ecbe36; out1[7] = 0xb5ab30a6; out1[8] = 0x1f959973; out1[9] = 0x97d7a108; out1[10] = 0xd27192bc; out1[11] = 0x2ba012f8; out1 } p384-0.13.0/src/arithmetic/scalar/p384_scalar_64.rs000064400000000000000000005103671046102023000175060ustar 00000000000000#![doc = " fiat-crypto output postprocessed by fiat-constify: https://github.com/rustcrypto/utils"] #![doc = " Autogenerated: './word_by_word_montgomery' --lang Rust --inline p384_scalar"] #![doc = " 64 39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643"] #![doc = " curve description: p384_scalar"] #![doc = " machine_wordsize = 64 (from \"64\")"] #![doc = " requested operations: (all)"] #![doc = " m = 0xffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973 (from \"39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643\")"] #![doc = ""] #![doc = " NOTE: In addition to the bounds specified above each function, all"] #![doc = " functions synthesized for this Montgomery arithmetic require the"] #![doc = " input to be strictly less than the prime modulus (m), and also"] #![doc = " require the input to be in the unique saturated representation."] #![doc = " All functions also ensure that these two properties are true of"] #![doc = " return values."] #![doc = ""] #![doc = " Computed values:"] #![doc = " eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) + (z[4] <<"] #![doc = " 256) + (z[5] << 0x140) bytes_eval z = z[0] + (z[1] << 8) + (z[2] << 16) +"] #![doc = " (z[3] << 24) + (z[4] << 32) + (z[5] << 40) + (z[6] << 48) + (z[7] << 56) +"] #![doc = " (z[8] << 64) + (z[9] << 72) + (z[10] << 80) + (z[11] << 88) + (z[12] << 96)"] #![doc = " + (z[13] << 104) + (z[14] << 112) + (z[15] << 120) + (z[16] << 128) + (z[17]"] #![doc = " << 136) + (z[18] << 144) + (z[19] << 152) + (z[20] << 160) + (z[21] << 168)"] #![doc = " + (z[22] << 176) + (z[23] << 184) + (z[24] << 192) + (z[25] << 200) + (z[26]"] #![doc = " << 208) + (z[27] << 216) + (z[28] << 224) + (z[29] << 232) + (z[30] << 240)"] #![doc = " + (z[31] << 248) + (z[32] << 256) + (z[33] << 0x108) + (z[34] << 0x110) +"] #![doc = " (z[35] << 0x118) + (z[36] << 0x120) + (z[37] << 0x128) + (z[38] << 0x130) +"] #![doc = " (z[39] << 0x138) + (z[40] << 0x140) + (z[41] << 0x148) + (z[42] << 0x150) +"] #![doc = " (z[43] << 0x158) + (z[44] << 0x160) + (z[45] << 0x168) + (z[46] << 0x170) +"] #![doc = " (z[47] << 0x178) twos_complement_eval z = let x1 := z[0] + (z[1] << 64) +"] #![doc = " (z[2] << 128) + (z[3] << 192) + (z[4] << 256) + (z[5] << 0x140) in"] #![doc = " if x1 & (2^384-1) < 2^383 then x1 & (2^384-1)"] #![doc = " else (x1 & (2^384-1)) - 2^384"] #![allow(unused_parens)] #![allow(non_camel_case_types)] #![allow( dead_code, rustdoc::bare_urls, rustdoc::broken_intra_doc_links, unused_assignments, unused_mut, unused_variables )] pub type fiat_p384_scalar_u1 = u8; pub type fiat_p384_scalar_i1 = i8; pub type fiat_p384_scalar_i2 = i8; pub type fiat_p384_scalar_montgomery_domain_field_element = [u64; 6]; pub type fiat_p384_scalar_non_montgomery_domain_field_element = [u64; 6]; #[doc = " The function fiat_p384_scalar_addcarryx_u64 is an addition with carry."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 + arg2 + arg3) mod 2^64"] #[doc = " out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_scalar_addcarryx_u64( arg1: fiat_p384_scalar_u1, arg2: u64, arg3: u64, ) -> (u64, fiat_p384_scalar_u1) { let mut out1: u64 = 0; let mut out2: fiat_p384_scalar_u1 = 0; let x1: u128 = (((arg1 as u128) + (arg2 as u128)) + (arg3 as u128)); let x2: u64 = ((x1 & 0xffffffffffffffff_u128) as u64); let x3: fiat_p384_scalar_u1 = ((x1 >> 64) as fiat_p384_scalar_u1); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_scalar_subborrowx_u64 is a subtraction with borrow."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (-arg1 + arg2 + -arg3) mod 2^64"] #[doc = " out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0x1]"] #[inline] pub const fn fiat_p384_scalar_subborrowx_u64( arg1: fiat_p384_scalar_u1, arg2: u64, arg3: u64, ) -> (u64, fiat_p384_scalar_u1) { let mut out1: u64 = 0; let mut out2: fiat_p384_scalar_u1 = 0; let x1: i128 = (((arg2 as i128) - (arg1 as i128)) - (arg3 as i128)); let x2: fiat_p384_scalar_i1 = ((x1 >> 64) as fiat_p384_scalar_i1); let x3: u64 = ((x1 & 0xffffffffffffffff_i128) as u64); out1 = x3; out2 = (((0x0 as fiat_p384_scalar_i2) - (x2 as fiat_p384_scalar_i2)) as fiat_p384_scalar_u1); (out1, out2) } #[doc = " The function fiat_p384_scalar_mulx_u64 is a multiplication, returning the"] #[doc = " full double-width result."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (arg1 * arg2) mod 2^64"] #[doc = " out2 = ⌊arg1 * arg2 / 2^64⌋"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [0x0 ~> 0xffffffffffffffff]"] #[inline] pub const fn fiat_p384_scalar_mulx_u64(arg1: u64, arg2: u64) -> (u64, u64) { let mut out1: u64 = 0; let mut out2: u64 = 0; let x1: u128 = ((arg1 as u128) * (arg2 as u128)); let x2: u64 = ((x1 & 0xffffffffffffffff_u128) as u64); let x3: u64 = ((x1 >> 64) as u64); out1 = x2; out2 = x3; (out1, out2) } #[doc = " The function fiat_p384_scalar_cmovznz_u64 is a single-word conditional move."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg3: [0x0 ~> 0xffffffffffffffff]"] #[doc = " Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[inline] pub const fn fiat_p384_scalar_cmovznz_u64(arg1: fiat_p384_scalar_u1, arg2: u64, arg3: u64) -> u64 { let mut out1: u64 = 0; let x1: fiat_p384_scalar_u1 = (!(!arg1)); let x2: u64 = ((((((0x0 as fiat_p384_scalar_i2) - (x1 as fiat_p384_scalar_i2)) as fiat_p384_scalar_i1) as i128) & 0xffffffffffffffff_i128) as u64); let x3: u64 = ((x2 & arg3) | ((!x2) & arg2)); out1 = x3; out1 } #[doc = " The function fiat_p384_scalar_mul multiplies two field elements in the"] #[doc = " Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval"] #[doc = " (from_montgomery arg2)) mod m 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_mul( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_scalar_mulx_u64(x6, (arg2[5])); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_scalar_mulx_u64(x6, (arg2[4])); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_scalar_mulx_u64(x6, (arg2[3])); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u64(x6, (arg2[2])); let mut x15: u64 = 0; let mut x16: u64 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u64(x6, (arg2[1])); let mut x17: u64 = 0; let mut x18: u64 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u64(x6, (arg2[0])); let mut x19: u64 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_addcarryx_u64(0x0, x18, x15); let mut x21: u64 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_addcarryx_u64(x20, x16, x13); let mut x23: u64 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_addcarryx_u64(x22, x14, x11); let mut x25: u64 = 0; let mut x26: fiat_p384_scalar_u1 = 0; let (x25, x26) = fiat_p384_scalar_addcarryx_u64(x24, x12, x9); let mut x27: u64 = 0; let mut x28: fiat_p384_scalar_u1 = 0; let (x27, x28) = fiat_p384_scalar_addcarryx_u64(x26, x10, x7); let x29: u64 = ((x28 as u64) + x8); let mut x30: u64 = 0; let mut x31: u64 = 0; let (x30, x31) = fiat_p384_scalar_mulx_u64(x17, 0x6ed46089e88fdc45); let mut x32: u64 = 0; let mut x33: u64 = 0; let (x32, x33) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x34: u64 = 0; let mut x35: u64 = 0; let (x34, x35) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x36: u64 = 0; let mut x37: u64 = 0; let (x36, x37) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x38: u64 = 0; let mut x39: u64 = 0; let (x38, x39) = fiat_p384_scalar_mulx_u64(x30, 0xc7634d81f4372ddf); let mut x40: u64 = 0; let mut x41: u64 = 0; let (x40, x41) = fiat_p384_scalar_mulx_u64(x30, 0x581a0db248b0a77a); let mut x42: u64 = 0; let mut x43: u64 = 0; let (x42, x43) = fiat_p384_scalar_mulx_u64(x30, 0xecec196accc52973); let mut x44: u64 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u64(0x0, x43, x40); let mut x46: u64 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u64(x45, x41, x38); let mut x48: u64 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u64(x47, x39, x36); let mut x50: u64 = 0; let mut x51: fiat_p384_scalar_u1 = 0; let (x50, x51) = fiat_p384_scalar_addcarryx_u64(x49, x37, x34); let mut x52: u64 = 0; let mut x53: fiat_p384_scalar_u1 = 0; let (x52, x53) = fiat_p384_scalar_addcarryx_u64(x51, x35, x32); let x54: u64 = ((x53 as u64) + x33); let mut x55: u64 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u64(0x0, x17, x42); let mut x57: u64 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u64(x56, x19, x44); let mut x59: u64 = 0; let mut x60: fiat_p384_scalar_u1 = 0; let (x59, x60) = fiat_p384_scalar_addcarryx_u64(x58, x21, x46); let mut x61: u64 = 0; let mut x62: fiat_p384_scalar_u1 = 0; let (x61, x62) = fiat_p384_scalar_addcarryx_u64(x60, x23, x48); let mut x63: u64 = 0; let mut x64: fiat_p384_scalar_u1 = 0; let (x63, x64) = fiat_p384_scalar_addcarryx_u64(x62, x25, x50); let mut x65: u64 = 0; let mut x66: fiat_p384_scalar_u1 = 0; let (x65, x66) = fiat_p384_scalar_addcarryx_u64(x64, x27, x52); let mut x67: u64 = 0; let mut x68: fiat_p384_scalar_u1 = 0; let (x67, x68) = fiat_p384_scalar_addcarryx_u64(x66, x29, x54); let mut x69: u64 = 0; let mut x70: u64 = 0; let (x69, x70) = fiat_p384_scalar_mulx_u64(x1, (arg2[5])); let mut x71: u64 = 0; let mut x72: u64 = 0; let (x71, x72) = fiat_p384_scalar_mulx_u64(x1, (arg2[4])); let mut x73: u64 = 0; let mut x74: u64 = 0; let (x73, x74) = fiat_p384_scalar_mulx_u64(x1, (arg2[3])); let mut x75: u64 = 0; let mut x76: u64 = 0; let (x75, x76) = fiat_p384_scalar_mulx_u64(x1, (arg2[2])); let mut x77: u64 = 0; let mut x78: u64 = 0; let (x77, x78) = fiat_p384_scalar_mulx_u64(x1, (arg2[1])); let mut x79: u64 = 0; let mut x80: u64 = 0; let (x79, x80) = fiat_p384_scalar_mulx_u64(x1, (arg2[0])); let mut x81: u64 = 0; let mut x82: fiat_p384_scalar_u1 = 0; let (x81, x82) = fiat_p384_scalar_addcarryx_u64(0x0, x80, x77); let mut x83: u64 = 0; let mut x84: fiat_p384_scalar_u1 = 0; let (x83, x84) = fiat_p384_scalar_addcarryx_u64(x82, x78, x75); let mut x85: u64 = 0; let mut x86: fiat_p384_scalar_u1 = 0; let (x85, x86) = fiat_p384_scalar_addcarryx_u64(x84, x76, x73); let mut x87: u64 = 0; let mut x88: fiat_p384_scalar_u1 = 0; let (x87, x88) = fiat_p384_scalar_addcarryx_u64(x86, x74, x71); let mut x89: u64 = 0; let mut x90: fiat_p384_scalar_u1 = 0; let (x89, x90) = fiat_p384_scalar_addcarryx_u64(x88, x72, x69); let x91: u64 = ((x90 as u64) + x70); let mut x92: u64 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u64(0x0, x57, x79); let mut x94: u64 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u64(x93, x59, x81); let mut x96: u64 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u64(x95, x61, x83); let mut x98: u64 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u64(x97, x63, x85); let mut x100: u64 = 0; let mut x101: fiat_p384_scalar_u1 = 0; let (x100, x101) = fiat_p384_scalar_addcarryx_u64(x99, x65, x87); let mut x102: u64 = 0; let mut x103: fiat_p384_scalar_u1 = 0; let (x102, x103) = fiat_p384_scalar_addcarryx_u64(x101, x67, x89); let mut x104: u64 = 0; let mut x105: fiat_p384_scalar_u1 = 0; let (x104, x105) = fiat_p384_scalar_addcarryx_u64(x103, (x68 as u64), x91); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_scalar_mulx_u64(x92, 0x6ed46089e88fdc45); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_scalar_mulx_u64(x106, 0xc7634d81f4372ddf); let mut x116: u64 = 0; let mut x117: u64 = 0; let (x116, x117) = fiat_p384_scalar_mulx_u64(x106, 0x581a0db248b0a77a); let mut x118: u64 = 0; let mut x119: u64 = 0; let (x118, x119) = fiat_p384_scalar_mulx_u64(x106, 0xecec196accc52973); let mut x120: u64 = 0; let mut x121: fiat_p384_scalar_u1 = 0; let (x120, x121) = fiat_p384_scalar_addcarryx_u64(0x0, x119, x116); let mut x122: u64 = 0; let mut x123: fiat_p384_scalar_u1 = 0; let (x122, x123) = fiat_p384_scalar_addcarryx_u64(x121, x117, x114); let mut x124: u64 = 0; let mut x125: fiat_p384_scalar_u1 = 0; let (x124, x125) = fiat_p384_scalar_addcarryx_u64(x123, x115, x112); let mut x126: u64 = 0; let mut x127: fiat_p384_scalar_u1 = 0; let (x126, x127) = fiat_p384_scalar_addcarryx_u64(x125, x113, x110); let mut x128: u64 = 0; let mut x129: fiat_p384_scalar_u1 = 0; let (x128, x129) = fiat_p384_scalar_addcarryx_u64(x127, x111, x108); let x130: u64 = ((x129 as u64) + x109); let mut x131: u64 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u64(0x0, x92, x118); let mut x133: u64 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_addcarryx_u64(x132, x94, x120); let mut x135: u64 = 0; let mut x136: fiat_p384_scalar_u1 = 0; let (x135, x136) = fiat_p384_scalar_addcarryx_u64(x134, x96, x122); let mut x137: u64 = 0; let mut x138: fiat_p384_scalar_u1 = 0; let (x137, x138) = fiat_p384_scalar_addcarryx_u64(x136, x98, x124); let mut x139: u64 = 0; let mut x140: fiat_p384_scalar_u1 = 0; let (x139, x140) = fiat_p384_scalar_addcarryx_u64(x138, x100, x126); let mut x141: u64 = 0; let mut x142: fiat_p384_scalar_u1 = 0; let (x141, x142) = fiat_p384_scalar_addcarryx_u64(x140, x102, x128); let mut x143: u64 = 0; let mut x144: fiat_p384_scalar_u1 = 0; let (x143, x144) = fiat_p384_scalar_addcarryx_u64(x142, x104, x130); let x145: u64 = ((x144 as u64) + (x105 as u64)); let mut x146: u64 = 0; let mut x147: u64 = 0; let (x146, x147) = fiat_p384_scalar_mulx_u64(x2, (arg2[5])); let mut x148: u64 = 0; let mut x149: u64 = 0; let (x148, x149) = fiat_p384_scalar_mulx_u64(x2, (arg2[4])); let mut x150: u64 = 0; let mut x151: u64 = 0; let (x150, x151) = fiat_p384_scalar_mulx_u64(x2, (arg2[3])); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_scalar_mulx_u64(x2, (arg2[2])); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_scalar_mulx_u64(x2, (arg2[1])); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_scalar_mulx_u64(x2, (arg2[0])); let mut x158: u64 = 0; let mut x159: fiat_p384_scalar_u1 = 0; let (x158, x159) = fiat_p384_scalar_addcarryx_u64(0x0, x157, x154); let mut x160: u64 = 0; let mut x161: fiat_p384_scalar_u1 = 0; let (x160, x161) = fiat_p384_scalar_addcarryx_u64(x159, x155, x152); let mut x162: u64 = 0; let mut x163: fiat_p384_scalar_u1 = 0; let (x162, x163) = fiat_p384_scalar_addcarryx_u64(x161, x153, x150); let mut x164: u64 = 0; let mut x165: fiat_p384_scalar_u1 = 0; let (x164, x165) = fiat_p384_scalar_addcarryx_u64(x163, x151, x148); let mut x166: u64 = 0; let mut x167: fiat_p384_scalar_u1 = 0; let (x166, x167) = fiat_p384_scalar_addcarryx_u64(x165, x149, x146); let x168: u64 = ((x167 as u64) + x147); let mut x169: u64 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u64(0x0, x133, x156); let mut x171: u64 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u64(x170, x135, x158); let mut x173: u64 = 0; let mut x174: fiat_p384_scalar_u1 = 0; let (x173, x174) = fiat_p384_scalar_addcarryx_u64(x172, x137, x160); let mut x175: u64 = 0; let mut x176: fiat_p384_scalar_u1 = 0; let (x175, x176) = fiat_p384_scalar_addcarryx_u64(x174, x139, x162); let mut x177: u64 = 0; let mut x178: fiat_p384_scalar_u1 = 0; let (x177, x178) = fiat_p384_scalar_addcarryx_u64(x176, x141, x164); let mut x179: u64 = 0; let mut x180: fiat_p384_scalar_u1 = 0; let (x179, x180) = fiat_p384_scalar_addcarryx_u64(x178, x143, x166); let mut x181: u64 = 0; let mut x182: fiat_p384_scalar_u1 = 0; let (x181, x182) = fiat_p384_scalar_addcarryx_u64(x180, x145, x168); let mut x183: u64 = 0; let mut x184: u64 = 0; let (x183, x184) = fiat_p384_scalar_mulx_u64(x169, 0x6ed46089e88fdc45); let mut x185: u64 = 0; let mut x186: u64 = 0; let (x185, x186) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x187: u64 = 0; let mut x188: u64 = 0; let (x187, x188) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x189: u64 = 0; let mut x190: u64 = 0; let (x189, x190) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x191: u64 = 0; let mut x192: u64 = 0; let (x191, x192) = fiat_p384_scalar_mulx_u64(x183, 0xc7634d81f4372ddf); let mut x193: u64 = 0; let mut x194: u64 = 0; let (x193, x194) = fiat_p384_scalar_mulx_u64(x183, 0x581a0db248b0a77a); let mut x195: u64 = 0; let mut x196: u64 = 0; let (x195, x196) = fiat_p384_scalar_mulx_u64(x183, 0xecec196accc52973); let mut x197: u64 = 0; let mut x198: fiat_p384_scalar_u1 = 0; let (x197, x198) = fiat_p384_scalar_addcarryx_u64(0x0, x196, x193); let mut x199: u64 = 0; let mut x200: fiat_p384_scalar_u1 = 0; let (x199, x200) = fiat_p384_scalar_addcarryx_u64(x198, x194, x191); let mut x201: u64 = 0; let mut x202: fiat_p384_scalar_u1 = 0; let (x201, x202) = fiat_p384_scalar_addcarryx_u64(x200, x192, x189); let mut x203: u64 = 0; let mut x204: fiat_p384_scalar_u1 = 0; let (x203, x204) = fiat_p384_scalar_addcarryx_u64(x202, x190, x187); let mut x205: u64 = 0; let mut x206: fiat_p384_scalar_u1 = 0; let (x205, x206) = fiat_p384_scalar_addcarryx_u64(x204, x188, x185); let x207: u64 = ((x206 as u64) + x186); let mut x208: u64 = 0; let mut x209: fiat_p384_scalar_u1 = 0; let (x208, x209) = fiat_p384_scalar_addcarryx_u64(0x0, x169, x195); let mut x210: u64 = 0; let mut x211: fiat_p384_scalar_u1 = 0; let (x210, x211) = fiat_p384_scalar_addcarryx_u64(x209, x171, x197); let mut x212: u64 = 0; let mut x213: fiat_p384_scalar_u1 = 0; let (x212, x213) = fiat_p384_scalar_addcarryx_u64(x211, x173, x199); let mut x214: u64 = 0; let mut x215: fiat_p384_scalar_u1 = 0; let (x214, x215) = fiat_p384_scalar_addcarryx_u64(x213, x175, x201); let mut x216: u64 = 0; let mut x217: fiat_p384_scalar_u1 = 0; let (x216, x217) = fiat_p384_scalar_addcarryx_u64(x215, x177, x203); let mut x218: u64 = 0; let mut x219: fiat_p384_scalar_u1 = 0; let (x218, x219) = fiat_p384_scalar_addcarryx_u64(x217, x179, x205); let mut x220: u64 = 0; let mut x221: fiat_p384_scalar_u1 = 0; let (x220, x221) = fiat_p384_scalar_addcarryx_u64(x219, x181, x207); let x222: u64 = ((x221 as u64) + (x182 as u64)); let mut x223: u64 = 0; let mut x224: u64 = 0; let (x223, x224) = fiat_p384_scalar_mulx_u64(x3, (arg2[5])); let mut x225: u64 = 0; let mut x226: u64 = 0; let (x225, x226) = fiat_p384_scalar_mulx_u64(x3, (arg2[4])); let mut x227: u64 = 0; let mut x228: u64 = 0; let (x227, x228) = fiat_p384_scalar_mulx_u64(x3, (arg2[3])); let mut x229: u64 = 0; let mut x230: u64 = 0; let (x229, x230) = fiat_p384_scalar_mulx_u64(x3, (arg2[2])); let mut x231: u64 = 0; let mut x232: u64 = 0; let (x231, x232) = fiat_p384_scalar_mulx_u64(x3, (arg2[1])); let mut x233: u64 = 0; let mut x234: u64 = 0; let (x233, x234) = fiat_p384_scalar_mulx_u64(x3, (arg2[0])); let mut x235: u64 = 0; let mut x236: fiat_p384_scalar_u1 = 0; let (x235, x236) = fiat_p384_scalar_addcarryx_u64(0x0, x234, x231); let mut x237: u64 = 0; let mut x238: fiat_p384_scalar_u1 = 0; let (x237, x238) = fiat_p384_scalar_addcarryx_u64(x236, x232, x229); let mut x239: u64 = 0; let mut x240: fiat_p384_scalar_u1 = 0; let (x239, x240) = fiat_p384_scalar_addcarryx_u64(x238, x230, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_scalar_u1 = 0; let (x241, x242) = fiat_p384_scalar_addcarryx_u64(x240, x228, x225); let mut x243: u64 = 0; let mut x244: fiat_p384_scalar_u1 = 0; let (x243, x244) = fiat_p384_scalar_addcarryx_u64(x242, x226, x223); let x245: u64 = ((x244 as u64) + x224); let mut x246: u64 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u64(0x0, x210, x233); let mut x248: u64 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u64(x247, x212, x235); let mut x250: u64 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u64(x249, x214, x237); let mut x252: u64 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u64(x251, x216, x239); let mut x254: u64 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u64(x253, x218, x241); let mut x256: u64 = 0; let mut x257: fiat_p384_scalar_u1 = 0; let (x256, x257) = fiat_p384_scalar_addcarryx_u64(x255, x220, x243); let mut x258: u64 = 0; let mut x259: fiat_p384_scalar_u1 = 0; let (x258, x259) = fiat_p384_scalar_addcarryx_u64(x257, x222, x245); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_scalar_mulx_u64(x246, 0x6ed46089e88fdc45); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x266: u64 = 0; let mut x267: u64 = 0; let (x266, x267) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x268: u64 = 0; let mut x269: u64 = 0; let (x268, x269) = fiat_p384_scalar_mulx_u64(x260, 0xc7634d81f4372ddf); let mut x270: u64 = 0; let mut x271: u64 = 0; let (x270, x271) = fiat_p384_scalar_mulx_u64(x260, 0x581a0db248b0a77a); let mut x272: u64 = 0; let mut x273: u64 = 0; let (x272, x273) = fiat_p384_scalar_mulx_u64(x260, 0xecec196accc52973); let mut x274: u64 = 0; let mut x275: fiat_p384_scalar_u1 = 0; let (x274, x275) = fiat_p384_scalar_addcarryx_u64(0x0, x273, x270); let mut x276: u64 = 0; let mut x277: fiat_p384_scalar_u1 = 0; let (x276, x277) = fiat_p384_scalar_addcarryx_u64(x275, x271, x268); let mut x278: u64 = 0; let mut x279: fiat_p384_scalar_u1 = 0; let (x278, x279) = fiat_p384_scalar_addcarryx_u64(x277, x269, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_scalar_u1 = 0; let (x280, x281) = fiat_p384_scalar_addcarryx_u64(x279, x267, x264); let mut x282: u64 = 0; let mut x283: fiat_p384_scalar_u1 = 0; let (x282, x283) = fiat_p384_scalar_addcarryx_u64(x281, x265, x262); let x284: u64 = ((x283 as u64) + x263); let mut x285: u64 = 0; let mut x286: fiat_p384_scalar_u1 = 0; let (x285, x286) = fiat_p384_scalar_addcarryx_u64(0x0, x246, x272); let mut x287: u64 = 0; let mut x288: fiat_p384_scalar_u1 = 0; let (x287, x288) = fiat_p384_scalar_addcarryx_u64(x286, x248, x274); let mut x289: u64 = 0; let mut x290: fiat_p384_scalar_u1 = 0; let (x289, x290) = fiat_p384_scalar_addcarryx_u64(x288, x250, x276); let mut x291: u64 = 0; let mut x292: fiat_p384_scalar_u1 = 0; let (x291, x292) = fiat_p384_scalar_addcarryx_u64(x290, x252, x278); let mut x293: u64 = 0; let mut x294: fiat_p384_scalar_u1 = 0; let (x293, x294) = fiat_p384_scalar_addcarryx_u64(x292, x254, x280); let mut x295: u64 = 0; let mut x296: fiat_p384_scalar_u1 = 0; let (x295, x296) = fiat_p384_scalar_addcarryx_u64(x294, x256, x282); let mut x297: u64 = 0; let mut x298: fiat_p384_scalar_u1 = 0; let (x297, x298) = fiat_p384_scalar_addcarryx_u64(x296, x258, x284); let x299: u64 = ((x298 as u64) + (x259 as u64)); let mut x300: u64 = 0; let mut x301: u64 = 0; let (x300, x301) = fiat_p384_scalar_mulx_u64(x4, (arg2[5])); let mut x302: u64 = 0; let mut x303: u64 = 0; let (x302, x303) = fiat_p384_scalar_mulx_u64(x4, (arg2[4])); let mut x304: u64 = 0; let mut x305: u64 = 0; let (x304, x305) = fiat_p384_scalar_mulx_u64(x4, (arg2[3])); let mut x306: u64 = 0; let mut x307: u64 = 0; let (x306, x307) = fiat_p384_scalar_mulx_u64(x4, (arg2[2])); let mut x308: u64 = 0; let mut x309: u64 = 0; let (x308, x309) = fiat_p384_scalar_mulx_u64(x4, (arg2[1])); let mut x310: u64 = 0; let mut x311: u64 = 0; let (x310, x311) = fiat_p384_scalar_mulx_u64(x4, (arg2[0])); let mut x312: u64 = 0; let mut x313: fiat_p384_scalar_u1 = 0; let (x312, x313) = fiat_p384_scalar_addcarryx_u64(0x0, x311, x308); let mut x314: u64 = 0; let mut x315: fiat_p384_scalar_u1 = 0; let (x314, x315) = fiat_p384_scalar_addcarryx_u64(x313, x309, x306); let mut x316: u64 = 0; let mut x317: fiat_p384_scalar_u1 = 0; let (x316, x317) = fiat_p384_scalar_addcarryx_u64(x315, x307, x304); let mut x318: u64 = 0; let mut x319: fiat_p384_scalar_u1 = 0; let (x318, x319) = fiat_p384_scalar_addcarryx_u64(x317, x305, x302); let mut x320: u64 = 0; let mut x321: fiat_p384_scalar_u1 = 0; let (x320, x321) = fiat_p384_scalar_addcarryx_u64(x319, x303, x300); let x322: u64 = ((x321 as u64) + x301); let mut x323: u64 = 0; let mut x324: fiat_p384_scalar_u1 = 0; let (x323, x324) = fiat_p384_scalar_addcarryx_u64(0x0, x287, x310); let mut x325: u64 = 0; let mut x326: fiat_p384_scalar_u1 = 0; let (x325, x326) = fiat_p384_scalar_addcarryx_u64(x324, x289, x312); let mut x327: u64 = 0; let mut x328: fiat_p384_scalar_u1 = 0; let (x327, x328) = fiat_p384_scalar_addcarryx_u64(x326, x291, x314); let mut x329: u64 = 0; let mut x330: fiat_p384_scalar_u1 = 0; let (x329, x330) = fiat_p384_scalar_addcarryx_u64(x328, x293, x316); let mut x331: u64 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u64(x330, x295, x318); let mut x333: u64 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u64(x332, x297, x320); let mut x335: u64 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u64(x334, x299, x322); let mut x337: u64 = 0; let mut x338: u64 = 0; let (x337, x338) = fiat_p384_scalar_mulx_u64(x323, 0x6ed46089e88fdc45); let mut x339: u64 = 0; let mut x340: u64 = 0; let (x339, x340) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x341: u64 = 0; let mut x342: u64 = 0; let (x341, x342) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x343: u64 = 0; let mut x344: u64 = 0; let (x343, x344) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x345: u64 = 0; let mut x346: u64 = 0; let (x345, x346) = fiat_p384_scalar_mulx_u64(x337, 0xc7634d81f4372ddf); let mut x347: u64 = 0; let mut x348: u64 = 0; let (x347, x348) = fiat_p384_scalar_mulx_u64(x337, 0x581a0db248b0a77a); let mut x349: u64 = 0; let mut x350: u64 = 0; let (x349, x350) = fiat_p384_scalar_mulx_u64(x337, 0xecec196accc52973); let mut x351: u64 = 0; let mut x352: fiat_p384_scalar_u1 = 0; let (x351, x352) = fiat_p384_scalar_addcarryx_u64(0x0, x350, x347); let mut x353: u64 = 0; let mut x354: fiat_p384_scalar_u1 = 0; let (x353, x354) = fiat_p384_scalar_addcarryx_u64(x352, x348, x345); let mut x355: u64 = 0; let mut x356: fiat_p384_scalar_u1 = 0; let (x355, x356) = fiat_p384_scalar_addcarryx_u64(x354, x346, x343); let mut x357: u64 = 0; let mut x358: fiat_p384_scalar_u1 = 0; let (x357, x358) = fiat_p384_scalar_addcarryx_u64(x356, x344, x341); let mut x359: u64 = 0; let mut x360: fiat_p384_scalar_u1 = 0; let (x359, x360) = fiat_p384_scalar_addcarryx_u64(x358, x342, x339); let x361: u64 = ((x360 as u64) + x340); let mut x362: u64 = 0; let mut x363: fiat_p384_scalar_u1 = 0; let (x362, x363) = fiat_p384_scalar_addcarryx_u64(0x0, x323, x349); let mut x364: u64 = 0; let mut x365: fiat_p384_scalar_u1 = 0; let (x364, x365) = fiat_p384_scalar_addcarryx_u64(x363, x325, x351); let mut x366: u64 = 0; let mut x367: fiat_p384_scalar_u1 = 0; let (x366, x367) = fiat_p384_scalar_addcarryx_u64(x365, x327, x353); let mut x368: u64 = 0; let mut x369: fiat_p384_scalar_u1 = 0; let (x368, x369) = fiat_p384_scalar_addcarryx_u64(x367, x329, x355); let mut x370: u64 = 0; let mut x371: fiat_p384_scalar_u1 = 0; let (x370, x371) = fiat_p384_scalar_addcarryx_u64(x369, x331, x357); let mut x372: u64 = 0; let mut x373: fiat_p384_scalar_u1 = 0; let (x372, x373) = fiat_p384_scalar_addcarryx_u64(x371, x333, x359); let mut x374: u64 = 0; let mut x375: fiat_p384_scalar_u1 = 0; let (x374, x375) = fiat_p384_scalar_addcarryx_u64(x373, x335, x361); let x376: u64 = ((x375 as u64) + (x336 as u64)); let mut x377: u64 = 0; let mut x378: u64 = 0; let (x377, x378) = fiat_p384_scalar_mulx_u64(x5, (arg2[5])); let mut x379: u64 = 0; let mut x380: u64 = 0; let (x379, x380) = fiat_p384_scalar_mulx_u64(x5, (arg2[4])); let mut x381: u64 = 0; let mut x382: u64 = 0; let (x381, x382) = fiat_p384_scalar_mulx_u64(x5, (arg2[3])); let mut x383: u64 = 0; let mut x384: u64 = 0; let (x383, x384) = fiat_p384_scalar_mulx_u64(x5, (arg2[2])); let mut x385: u64 = 0; let mut x386: u64 = 0; let (x385, x386) = fiat_p384_scalar_mulx_u64(x5, (arg2[1])); let mut x387: u64 = 0; let mut x388: u64 = 0; let (x387, x388) = fiat_p384_scalar_mulx_u64(x5, (arg2[0])); let mut x389: u64 = 0; let mut x390: fiat_p384_scalar_u1 = 0; let (x389, x390) = fiat_p384_scalar_addcarryx_u64(0x0, x388, x385); let mut x391: u64 = 0; let mut x392: fiat_p384_scalar_u1 = 0; let (x391, x392) = fiat_p384_scalar_addcarryx_u64(x390, x386, x383); let mut x393: u64 = 0; let mut x394: fiat_p384_scalar_u1 = 0; let (x393, x394) = fiat_p384_scalar_addcarryx_u64(x392, x384, x381); let mut x395: u64 = 0; let mut x396: fiat_p384_scalar_u1 = 0; let (x395, x396) = fiat_p384_scalar_addcarryx_u64(x394, x382, x379); let mut x397: u64 = 0; let mut x398: fiat_p384_scalar_u1 = 0; let (x397, x398) = fiat_p384_scalar_addcarryx_u64(x396, x380, x377); let x399: u64 = ((x398 as u64) + x378); let mut x400: u64 = 0; let mut x401: fiat_p384_scalar_u1 = 0; let (x400, x401) = fiat_p384_scalar_addcarryx_u64(0x0, x364, x387); let mut x402: u64 = 0; let mut x403: fiat_p384_scalar_u1 = 0; let (x402, x403) = fiat_p384_scalar_addcarryx_u64(x401, x366, x389); let mut x404: u64 = 0; let mut x405: fiat_p384_scalar_u1 = 0; let (x404, x405) = fiat_p384_scalar_addcarryx_u64(x403, x368, x391); let mut x406: u64 = 0; let mut x407: fiat_p384_scalar_u1 = 0; let (x406, x407) = fiat_p384_scalar_addcarryx_u64(x405, x370, x393); let mut x408: u64 = 0; let mut x409: fiat_p384_scalar_u1 = 0; let (x408, x409) = fiat_p384_scalar_addcarryx_u64(x407, x372, x395); let mut x410: u64 = 0; let mut x411: fiat_p384_scalar_u1 = 0; let (x410, x411) = fiat_p384_scalar_addcarryx_u64(x409, x374, x397); let mut x412: u64 = 0; let mut x413: fiat_p384_scalar_u1 = 0; let (x412, x413) = fiat_p384_scalar_addcarryx_u64(x411, x376, x399); let mut x414: u64 = 0; let mut x415: u64 = 0; let (x414, x415) = fiat_p384_scalar_mulx_u64(x400, 0x6ed46089e88fdc45); let mut x416: u64 = 0; let mut x417: u64 = 0; let (x416, x417) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x418: u64 = 0; let mut x419: u64 = 0; let (x418, x419) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x420: u64 = 0; let mut x421: u64 = 0; let (x420, x421) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x422: u64 = 0; let mut x423: u64 = 0; let (x422, x423) = fiat_p384_scalar_mulx_u64(x414, 0xc7634d81f4372ddf); let mut x424: u64 = 0; let mut x425: u64 = 0; let (x424, x425) = fiat_p384_scalar_mulx_u64(x414, 0x581a0db248b0a77a); let mut x426: u64 = 0; let mut x427: u64 = 0; let (x426, x427) = fiat_p384_scalar_mulx_u64(x414, 0xecec196accc52973); let mut x428: u64 = 0; let mut x429: fiat_p384_scalar_u1 = 0; let (x428, x429) = fiat_p384_scalar_addcarryx_u64(0x0, x427, x424); let mut x430: u64 = 0; let mut x431: fiat_p384_scalar_u1 = 0; let (x430, x431) = fiat_p384_scalar_addcarryx_u64(x429, x425, x422); let mut x432: u64 = 0; let mut x433: fiat_p384_scalar_u1 = 0; let (x432, x433) = fiat_p384_scalar_addcarryx_u64(x431, x423, x420); let mut x434: u64 = 0; let mut x435: fiat_p384_scalar_u1 = 0; let (x434, x435) = fiat_p384_scalar_addcarryx_u64(x433, x421, x418); let mut x436: u64 = 0; let mut x437: fiat_p384_scalar_u1 = 0; let (x436, x437) = fiat_p384_scalar_addcarryx_u64(x435, x419, x416); let x438: u64 = ((x437 as u64) + x417); let mut x439: u64 = 0; let mut x440: fiat_p384_scalar_u1 = 0; let (x439, x440) = fiat_p384_scalar_addcarryx_u64(0x0, x400, x426); let mut x441: u64 = 0; let mut x442: fiat_p384_scalar_u1 = 0; let (x441, x442) = fiat_p384_scalar_addcarryx_u64(x440, x402, x428); let mut x443: u64 = 0; let mut x444: fiat_p384_scalar_u1 = 0; let (x443, x444) = fiat_p384_scalar_addcarryx_u64(x442, x404, x430); let mut x445: u64 = 0; let mut x446: fiat_p384_scalar_u1 = 0; let (x445, x446) = fiat_p384_scalar_addcarryx_u64(x444, x406, x432); let mut x447: u64 = 0; let mut x448: fiat_p384_scalar_u1 = 0; let (x447, x448) = fiat_p384_scalar_addcarryx_u64(x446, x408, x434); let mut x449: u64 = 0; let mut x450: fiat_p384_scalar_u1 = 0; let (x449, x450) = fiat_p384_scalar_addcarryx_u64(x448, x410, x436); let mut x451: u64 = 0; let mut x452: fiat_p384_scalar_u1 = 0; let (x451, x452) = fiat_p384_scalar_addcarryx_u64(x450, x412, x438); let x453: u64 = ((x452 as u64) + (x413 as u64)); let mut x454: u64 = 0; let mut x455: fiat_p384_scalar_u1 = 0; let (x454, x455) = fiat_p384_scalar_subborrowx_u64(0x0, x441, 0xecec196accc52973); let mut x456: u64 = 0; let mut x457: fiat_p384_scalar_u1 = 0; let (x456, x457) = fiat_p384_scalar_subborrowx_u64(x455, x443, 0x581a0db248b0a77a); let mut x458: u64 = 0; let mut x459: fiat_p384_scalar_u1 = 0; let (x458, x459) = fiat_p384_scalar_subborrowx_u64(x457, x445, 0xc7634d81f4372ddf); let mut x460: u64 = 0; let mut x461: fiat_p384_scalar_u1 = 0; let (x460, x461) = fiat_p384_scalar_subborrowx_u64(x459, x447, 0xffffffffffffffff); let mut x462: u64 = 0; let mut x463: fiat_p384_scalar_u1 = 0; let (x462, x463) = fiat_p384_scalar_subborrowx_u64(x461, x449, 0xffffffffffffffff); let mut x464: u64 = 0; let mut x465: fiat_p384_scalar_u1 = 0; let (x464, x465) = fiat_p384_scalar_subborrowx_u64(x463, x451, 0xffffffffffffffff); let mut x466: u64 = 0; let mut x467: fiat_p384_scalar_u1 = 0; let (x466, x467) = fiat_p384_scalar_subborrowx_u64(x465, x453, 0x0_u64); let mut x468: u64 = 0; let (x468) = fiat_p384_scalar_cmovznz_u64(x467, x454, x441); let mut x469: u64 = 0; let (x469) = fiat_p384_scalar_cmovznz_u64(x467, x456, x443); let mut x470: u64 = 0; let (x470) = fiat_p384_scalar_cmovznz_u64(x467, x458, x445); let mut x471: u64 = 0; let (x471) = fiat_p384_scalar_cmovznz_u64(x467, x460, x447); let mut x472: u64 = 0; let (x472) = fiat_p384_scalar_cmovznz_u64(x467, x462, x449); let mut x473: u64 = 0; let (x473) = fiat_p384_scalar_cmovznz_u64(x467, x464, x451); out1[0] = x468; out1[1] = x469; out1[2] = x470; out1[3] = x471; out1[4] = x472; out1[5] = x473; out1 } #[doc = " The function fiat_p384_scalar_square squares a field element in the"] #[doc = " Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval"] #[doc = " (from_montgomery arg1)) mod m 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_square( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_scalar_mulx_u64(x6, (arg1[5])); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_scalar_mulx_u64(x6, (arg1[4])); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_scalar_mulx_u64(x6, (arg1[3])); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u64(x6, (arg1[2])); let mut x15: u64 = 0; let mut x16: u64 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u64(x6, (arg1[1])); let mut x17: u64 = 0; let mut x18: u64 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u64(x6, (arg1[0])); let mut x19: u64 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_addcarryx_u64(0x0, x18, x15); let mut x21: u64 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_addcarryx_u64(x20, x16, x13); let mut x23: u64 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_addcarryx_u64(x22, x14, x11); let mut x25: u64 = 0; let mut x26: fiat_p384_scalar_u1 = 0; let (x25, x26) = fiat_p384_scalar_addcarryx_u64(x24, x12, x9); let mut x27: u64 = 0; let mut x28: fiat_p384_scalar_u1 = 0; let (x27, x28) = fiat_p384_scalar_addcarryx_u64(x26, x10, x7); let x29: u64 = ((x28 as u64) + x8); let mut x30: u64 = 0; let mut x31: u64 = 0; let (x30, x31) = fiat_p384_scalar_mulx_u64(x17, 0x6ed46089e88fdc45); let mut x32: u64 = 0; let mut x33: u64 = 0; let (x32, x33) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x34: u64 = 0; let mut x35: u64 = 0; let (x34, x35) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x36: u64 = 0; let mut x37: u64 = 0; let (x36, x37) = fiat_p384_scalar_mulx_u64(x30, 0xffffffffffffffff); let mut x38: u64 = 0; let mut x39: u64 = 0; let (x38, x39) = fiat_p384_scalar_mulx_u64(x30, 0xc7634d81f4372ddf); let mut x40: u64 = 0; let mut x41: u64 = 0; let (x40, x41) = fiat_p384_scalar_mulx_u64(x30, 0x581a0db248b0a77a); let mut x42: u64 = 0; let mut x43: u64 = 0; let (x42, x43) = fiat_p384_scalar_mulx_u64(x30, 0xecec196accc52973); let mut x44: u64 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u64(0x0, x43, x40); let mut x46: u64 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u64(x45, x41, x38); let mut x48: u64 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u64(x47, x39, x36); let mut x50: u64 = 0; let mut x51: fiat_p384_scalar_u1 = 0; let (x50, x51) = fiat_p384_scalar_addcarryx_u64(x49, x37, x34); let mut x52: u64 = 0; let mut x53: fiat_p384_scalar_u1 = 0; let (x52, x53) = fiat_p384_scalar_addcarryx_u64(x51, x35, x32); let x54: u64 = ((x53 as u64) + x33); let mut x55: u64 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u64(0x0, x17, x42); let mut x57: u64 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u64(x56, x19, x44); let mut x59: u64 = 0; let mut x60: fiat_p384_scalar_u1 = 0; let (x59, x60) = fiat_p384_scalar_addcarryx_u64(x58, x21, x46); let mut x61: u64 = 0; let mut x62: fiat_p384_scalar_u1 = 0; let (x61, x62) = fiat_p384_scalar_addcarryx_u64(x60, x23, x48); let mut x63: u64 = 0; let mut x64: fiat_p384_scalar_u1 = 0; let (x63, x64) = fiat_p384_scalar_addcarryx_u64(x62, x25, x50); let mut x65: u64 = 0; let mut x66: fiat_p384_scalar_u1 = 0; let (x65, x66) = fiat_p384_scalar_addcarryx_u64(x64, x27, x52); let mut x67: u64 = 0; let mut x68: fiat_p384_scalar_u1 = 0; let (x67, x68) = fiat_p384_scalar_addcarryx_u64(x66, x29, x54); let mut x69: u64 = 0; let mut x70: u64 = 0; let (x69, x70) = fiat_p384_scalar_mulx_u64(x1, (arg1[5])); let mut x71: u64 = 0; let mut x72: u64 = 0; let (x71, x72) = fiat_p384_scalar_mulx_u64(x1, (arg1[4])); let mut x73: u64 = 0; let mut x74: u64 = 0; let (x73, x74) = fiat_p384_scalar_mulx_u64(x1, (arg1[3])); let mut x75: u64 = 0; let mut x76: u64 = 0; let (x75, x76) = fiat_p384_scalar_mulx_u64(x1, (arg1[2])); let mut x77: u64 = 0; let mut x78: u64 = 0; let (x77, x78) = fiat_p384_scalar_mulx_u64(x1, (arg1[1])); let mut x79: u64 = 0; let mut x80: u64 = 0; let (x79, x80) = fiat_p384_scalar_mulx_u64(x1, (arg1[0])); let mut x81: u64 = 0; let mut x82: fiat_p384_scalar_u1 = 0; let (x81, x82) = fiat_p384_scalar_addcarryx_u64(0x0, x80, x77); let mut x83: u64 = 0; let mut x84: fiat_p384_scalar_u1 = 0; let (x83, x84) = fiat_p384_scalar_addcarryx_u64(x82, x78, x75); let mut x85: u64 = 0; let mut x86: fiat_p384_scalar_u1 = 0; let (x85, x86) = fiat_p384_scalar_addcarryx_u64(x84, x76, x73); let mut x87: u64 = 0; let mut x88: fiat_p384_scalar_u1 = 0; let (x87, x88) = fiat_p384_scalar_addcarryx_u64(x86, x74, x71); let mut x89: u64 = 0; let mut x90: fiat_p384_scalar_u1 = 0; let (x89, x90) = fiat_p384_scalar_addcarryx_u64(x88, x72, x69); let x91: u64 = ((x90 as u64) + x70); let mut x92: u64 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u64(0x0, x57, x79); let mut x94: u64 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u64(x93, x59, x81); let mut x96: u64 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u64(x95, x61, x83); let mut x98: u64 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u64(x97, x63, x85); let mut x100: u64 = 0; let mut x101: fiat_p384_scalar_u1 = 0; let (x100, x101) = fiat_p384_scalar_addcarryx_u64(x99, x65, x87); let mut x102: u64 = 0; let mut x103: fiat_p384_scalar_u1 = 0; let (x102, x103) = fiat_p384_scalar_addcarryx_u64(x101, x67, x89); let mut x104: u64 = 0; let mut x105: fiat_p384_scalar_u1 = 0; let (x104, x105) = fiat_p384_scalar_addcarryx_u64(x103, (x68 as u64), x91); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_scalar_mulx_u64(x92, 0x6ed46089e88fdc45); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_scalar_mulx_u64(x106, 0xffffffffffffffff); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_scalar_mulx_u64(x106, 0xc7634d81f4372ddf); let mut x116: u64 = 0; let mut x117: u64 = 0; let (x116, x117) = fiat_p384_scalar_mulx_u64(x106, 0x581a0db248b0a77a); let mut x118: u64 = 0; let mut x119: u64 = 0; let (x118, x119) = fiat_p384_scalar_mulx_u64(x106, 0xecec196accc52973); let mut x120: u64 = 0; let mut x121: fiat_p384_scalar_u1 = 0; let (x120, x121) = fiat_p384_scalar_addcarryx_u64(0x0, x119, x116); let mut x122: u64 = 0; let mut x123: fiat_p384_scalar_u1 = 0; let (x122, x123) = fiat_p384_scalar_addcarryx_u64(x121, x117, x114); let mut x124: u64 = 0; let mut x125: fiat_p384_scalar_u1 = 0; let (x124, x125) = fiat_p384_scalar_addcarryx_u64(x123, x115, x112); let mut x126: u64 = 0; let mut x127: fiat_p384_scalar_u1 = 0; let (x126, x127) = fiat_p384_scalar_addcarryx_u64(x125, x113, x110); let mut x128: u64 = 0; let mut x129: fiat_p384_scalar_u1 = 0; let (x128, x129) = fiat_p384_scalar_addcarryx_u64(x127, x111, x108); let x130: u64 = ((x129 as u64) + x109); let mut x131: u64 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u64(0x0, x92, x118); let mut x133: u64 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_addcarryx_u64(x132, x94, x120); let mut x135: u64 = 0; let mut x136: fiat_p384_scalar_u1 = 0; let (x135, x136) = fiat_p384_scalar_addcarryx_u64(x134, x96, x122); let mut x137: u64 = 0; let mut x138: fiat_p384_scalar_u1 = 0; let (x137, x138) = fiat_p384_scalar_addcarryx_u64(x136, x98, x124); let mut x139: u64 = 0; let mut x140: fiat_p384_scalar_u1 = 0; let (x139, x140) = fiat_p384_scalar_addcarryx_u64(x138, x100, x126); let mut x141: u64 = 0; let mut x142: fiat_p384_scalar_u1 = 0; let (x141, x142) = fiat_p384_scalar_addcarryx_u64(x140, x102, x128); let mut x143: u64 = 0; let mut x144: fiat_p384_scalar_u1 = 0; let (x143, x144) = fiat_p384_scalar_addcarryx_u64(x142, x104, x130); let x145: u64 = ((x144 as u64) + (x105 as u64)); let mut x146: u64 = 0; let mut x147: u64 = 0; let (x146, x147) = fiat_p384_scalar_mulx_u64(x2, (arg1[5])); let mut x148: u64 = 0; let mut x149: u64 = 0; let (x148, x149) = fiat_p384_scalar_mulx_u64(x2, (arg1[4])); let mut x150: u64 = 0; let mut x151: u64 = 0; let (x150, x151) = fiat_p384_scalar_mulx_u64(x2, (arg1[3])); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_scalar_mulx_u64(x2, (arg1[2])); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_scalar_mulx_u64(x2, (arg1[1])); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_scalar_mulx_u64(x2, (arg1[0])); let mut x158: u64 = 0; let mut x159: fiat_p384_scalar_u1 = 0; let (x158, x159) = fiat_p384_scalar_addcarryx_u64(0x0, x157, x154); let mut x160: u64 = 0; let mut x161: fiat_p384_scalar_u1 = 0; let (x160, x161) = fiat_p384_scalar_addcarryx_u64(x159, x155, x152); let mut x162: u64 = 0; let mut x163: fiat_p384_scalar_u1 = 0; let (x162, x163) = fiat_p384_scalar_addcarryx_u64(x161, x153, x150); let mut x164: u64 = 0; let mut x165: fiat_p384_scalar_u1 = 0; let (x164, x165) = fiat_p384_scalar_addcarryx_u64(x163, x151, x148); let mut x166: u64 = 0; let mut x167: fiat_p384_scalar_u1 = 0; let (x166, x167) = fiat_p384_scalar_addcarryx_u64(x165, x149, x146); let x168: u64 = ((x167 as u64) + x147); let mut x169: u64 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u64(0x0, x133, x156); let mut x171: u64 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u64(x170, x135, x158); let mut x173: u64 = 0; let mut x174: fiat_p384_scalar_u1 = 0; let (x173, x174) = fiat_p384_scalar_addcarryx_u64(x172, x137, x160); let mut x175: u64 = 0; let mut x176: fiat_p384_scalar_u1 = 0; let (x175, x176) = fiat_p384_scalar_addcarryx_u64(x174, x139, x162); let mut x177: u64 = 0; let mut x178: fiat_p384_scalar_u1 = 0; let (x177, x178) = fiat_p384_scalar_addcarryx_u64(x176, x141, x164); let mut x179: u64 = 0; let mut x180: fiat_p384_scalar_u1 = 0; let (x179, x180) = fiat_p384_scalar_addcarryx_u64(x178, x143, x166); let mut x181: u64 = 0; let mut x182: fiat_p384_scalar_u1 = 0; let (x181, x182) = fiat_p384_scalar_addcarryx_u64(x180, x145, x168); let mut x183: u64 = 0; let mut x184: u64 = 0; let (x183, x184) = fiat_p384_scalar_mulx_u64(x169, 0x6ed46089e88fdc45); let mut x185: u64 = 0; let mut x186: u64 = 0; let (x185, x186) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x187: u64 = 0; let mut x188: u64 = 0; let (x187, x188) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x189: u64 = 0; let mut x190: u64 = 0; let (x189, x190) = fiat_p384_scalar_mulx_u64(x183, 0xffffffffffffffff); let mut x191: u64 = 0; let mut x192: u64 = 0; let (x191, x192) = fiat_p384_scalar_mulx_u64(x183, 0xc7634d81f4372ddf); let mut x193: u64 = 0; let mut x194: u64 = 0; let (x193, x194) = fiat_p384_scalar_mulx_u64(x183, 0x581a0db248b0a77a); let mut x195: u64 = 0; let mut x196: u64 = 0; let (x195, x196) = fiat_p384_scalar_mulx_u64(x183, 0xecec196accc52973); let mut x197: u64 = 0; let mut x198: fiat_p384_scalar_u1 = 0; let (x197, x198) = fiat_p384_scalar_addcarryx_u64(0x0, x196, x193); let mut x199: u64 = 0; let mut x200: fiat_p384_scalar_u1 = 0; let (x199, x200) = fiat_p384_scalar_addcarryx_u64(x198, x194, x191); let mut x201: u64 = 0; let mut x202: fiat_p384_scalar_u1 = 0; let (x201, x202) = fiat_p384_scalar_addcarryx_u64(x200, x192, x189); let mut x203: u64 = 0; let mut x204: fiat_p384_scalar_u1 = 0; let (x203, x204) = fiat_p384_scalar_addcarryx_u64(x202, x190, x187); let mut x205: u64 = 0; let mut x206: fiat_p384_scalar_u1 = 0; let (x205, x206) = fiat_p384_scalar_addcarryx_u64(x204, x188, x185); let x207: u64 = ((x206 as u64) + x186); let mut x208: u64 = 0; let mut x209: fiat_p384_scalar_u1 = 0; let (x208, x209) = fiat_p384_scalar_addcarryx_u64(0x0, x169, x195); let mut x210: u64 = 0; let mut x211: fiat_p384_scalar_u1 = 0; let (x210, x211) = fiat_p384_scalar_addcarryx_u64(x209, x171, x197); let mut x212: u64 = 0; let mut x213: fiat_p384_scalar_u1 = 0; let (x212, x213) = fiat_p384_scalar_addcarryx_u64(x211, x173, x199); let mut x214: u64 = 0; let mut x215: fiat_p384_scalar_u1 = 0; let (x214, x215) = fiat_p384_scalar_addcarryx_u64(x213, x175, x201); let mut x216: u64 = 0; let mut x217: fiat_p384_scalar_u1 = 0; let (x216, x217) = fiat_p384_scalar_addcarryx_u64(x215, x177, x203); let mut x218: u64 = 0; let mut x219: fiat_p384_scalar_u1 = 0; let (x218, x219) = fiat_p384_scalar_addcarryx_u64(x217, x179, x205); let mut x220: u64 = 0; let mut x221: fiat_p384_scalar_u1 = 0; let (x220, x221) = fiat_p384_scalar_addcarryx_u64(x219, x181, x207); let x222: u64 = ((x221 as u64) + (x182 as u64)); let mut x223: u64 = 0; let mut x224: u64 = 0; let (x223, x224) = fiat_p384_scalar_mulx_u64(x3, (arg1[5])); let mut x225: u64 = 0; let mut x226: u64 = 0; let (x225, x226) = fiat_p384_scalar_mulx_u64(x3, (arg1[4])); let mut x227: u64 = 0; let mut x228: u64 = 0; let (x227, x228) = fiat_p384_scalar_mulx_u64(x3, (arg1[3])); let mut x229: u64 = 0; let mut x230: u64 = 0; let (x229, x230) = fiat_p384_scalar_mulx_u64(x3, (arg1[2])); let mut x231: u64 = 0; let mut x232: u64 = 0; let (x231, x232) = fiat_p384_scalar_mulx_u64(x3, (arg1[1])); let mut x233: u64 = 0; let mut x234: u64 = 0; let (x233, x234) = fiat_p384_scalar_mulx_u64(x3, (arg1[0])); let mut x235: u64 = 0; let mut x236: fiat_p384_scalar_u1 = 0; let (x235, x236) = fiat_p384_scalar_addcarryx_u64(0x0, x234, x231); let mut x237: u64 = 0; let mut x238: fiat_p384_scalar_u1 = 0; let (x237, x238) = fiat_p384_scalar_addcarryx_u64(x236, x232, x229); let mut x239: u64 = 0; let mut x240: fiat_p384_scalar_u1 = 0; let (x239, x240) = fiat_p384_scalar_addcarryx_u64(x238, x230, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_scalar_u1 = 0; let (x241, x242) = fiat_p384_scalar_addcarryx_u64(x240, x228, x225); let mut x243: u64 = 0; let mut x244: fiat_p384_scalar_u1 = 0; let (x243, x244) = fiat_p384_scalar_addcarryx_u64(x242, x226, x223); let x245: u64 = ((x244 as u64) + x224); let mut x246: u64 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u64(0x0, x210, x233); let mut x248: u64 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u64(x247, x212, x235); let mut x250: u64 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u64(x249, x214, x237); let mut x252: u64 = 0; let mut x253: fiat_p384_scalar_u1 = 0; let (x252, x253) = fiat_p384_scalar_addcarryx_u64(x251, x216, x239); let mut x254: u64 = 0; let mut x255: fiat_p384_scalar_u1 = 0; let (x254, x255) = fiat_p384_scalar_addcarryx_u64(x253, x218, x241); let mut x256: u64 = 0; let mut x257: fiat_p384_scalar_u1 = 0; let (x256, x257) = fiat_p384_scalar_addcarryx_u64(x255, x220, x243); let mut x258: u64 = 0; let mut x259: fiat_p384_scalar_u1 = 0; let (x258, x259) = fiat_p384_scalar_addcarryx_u64(x257, x222, x245); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_scalar_mulx_u64(x246, 0x6ed46089e88fdc45); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x266: u64 = 0; let mut x267: u64 = 0; let (x266, x267) = fiat_p384_scalar_mulx_u64(x260, 0xffffffffffffffff); let mut x268: u64 = 0; let mut x269: u64 = 0; let (x268, x269) = fiat_p384_scalar_mulx_u64(x260, 0xc7634d81f4372ddf); let mut x270: u64 = 0; let mut x271: u64 = 0; let (x270, x271) = fiat_p384_scalar_mulx_u64(x260, 0x581a0db248b0a77a); let mut x272: u64 = 0; let mut x273: u64 = 0; let (x272, x273) = fiat_p384_scalar_mulx_u64(x260, 0xecec196accc52973); let mut x274: u64 = 0; let mut x275: fiat_p384_scalar_u1 = 0; let (x274, x275) = fiat_p384_scalar_addcarryx_u64(0x0, x273, x270); let mut x276: u64 = 0; let mut x277: fiat_p384_scalar_u1 = 0; let (x276, x277) = fiat_p384_scalar_addcarryx_u64(x275, x271, x268); let mut x278: u64 = 0; let mut x279: fiat_p384_scalar_u1 = 0; let (x278, x279) = fiat_p384_scalar_addcarryx_u64(x277, x269, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_scalar_u1 = 0; let (x280, x281) = fiat_p384_scalar_addcarryx_u64(x279, x267, x264); let mut x282: u64 = 0; let mut x283: fiat_p384_scalar_u1 = 0; let (x282, x283) = fiat_p384_scalar_addcarryx_u64(x281, x265, x262); let x284: u64 = ((x283 as u64) + x263); let mut x285: u64 = 0; let mut x286: fiat_p384_scalar_u1 = 0; let (x285, x286) = fiat_p384_scalar_addcarryx_u64(0x0, x246, x272); let mut x287: u64 = 0; let mut x288: fiat_p384_scalar_u1 = 0; let (x287, x288) = fiat_p384_scalar_addcarryx_u64(x286, x248, x274); let mut x289: u64 = 0; let mut x290: fiat_p384_scalar_u1 = 0; let (x289, x290) = fiat_p384_scalar_addcarryx_u64(x288, x250, x276); let mut x291: u64 = 0; let mut x292: fiat_p384_scalar_u1 = 0; let (x291, x292) = fiat_p384_scalar_addcarryx_u64(x290, x252, x278); let mut x293: u64 = 0; let mut x294: fiat_p384_scalar_u1 = 0; let (x293, x294) = fiat_p384_scalar_addcarryx_u64(x292, x254, x280); let mut x295: u64 = 0; let mut x296: fiat_p384_scalar_u1 = 0; let (x295, x296) = fiat_p384_scalar_addcarryx_u64(x294, x256, x282); let mut x297: u64 = 0; let mut x298: fiat_p384_scalar_u1 = 0; let (x297, x298) = fiat_p384_scalar_addcarryx_u64(x296, x258, x284); let x299: u64 = ((x298 as u64) + (x259 as u64)); let mut x300: u64 = 0; let mut x301: u64 = 0; let (x300, x301) = fiat_p384_scalar_mulx_u64(x4, (arg1[5])); let mut x302: u64 = 0; let mut x303: u64 = 0; let (x302, x303) = fiat_p384_scalar_mulx_u64(x4, (arg1[4])); let mut x304: u64 = 0; let mut x305: u64 = 0; let (x304, x305) = fiat_p384_scalar_mulx_u64(x4, (arg1[3])); let mut x306: u64 = 0; let mut x307: u64 = 0; let (x306, x307) = fiat_p384_scalar_mulx_u64(x4, (arg1[2])); let mut x308: u64 = 0; let mut x309: u64 = 0; let (x308, x309) = fiat_p384_scalar_mulx_u64(x4, (arg1[1])); let mut x310: u64 = 0; let mut x311: u64 = 0; let (x310, x311) = fiat_p384_scalar_mulx_u64(x4, (arg1[0])); let mut x312: u64 = 0; let mut x313: fiat_p384_scalar_u1 = 0; let (x312, x313) = fiat_p384_scalar_addcarryx_u64(0x0, x311, x308); let mut x314: u64 = 0; let mut x315: fiat_p384_scalar_u1 = 0; let (x314, x315) = fiat_p384_scalar_addcarryx_u64(x313, x309, x306); let mut x316: u64 = 0; let mut x317: fiat_p384_scalar_u1 = 0; let (x316, x317) = fiat_p384_scalar_addcarryx_u64(x315, x307, x304); let mut x318: u64 = 0; let mut x319: fiat_p384_scalar_u1 = 0; let (x318, x319) = fiat_p384_scalar_addcarryx_u64(x317, x305, x302); let mut x320: u64 = 0; let mut x321: fiat_p384_scalar_u1 = 0; let (x320, x321) = fiat_p384_scalar_addcarryx_u64(x319, x303, x300); let x322: u64 = ((x321 as u64) + x301); let mut x323: u64 = 0; let mut x324: fiat_p384_scalar_u1 = 0; let (x323, x324) = fiat_p384_scalar_addcarryx_u64(0x0, x287, x310); let mut x325: u64 = 0; let mut x326: fiat_p384_scalar_u1 = 0; let (x325, x326) = fiat_p384_scalar_addcarryx_u64(x324, x289, x312); let mut x327: u64 = 0; let mut x328: fiat_p384_scalar_u1 = 0; let (x327, x328) = fiat_p384_scalar_addcarryx_u64(x326, x291, x314); let mut x329: u64 = 0; let mut x330: fiat_p384_scalar_u1 = 0; let (x329, x330) = fiat_p384_scalar_addcarryx_u64(x328, x293, x316); let mut x331: u64 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u64(x330, x295, x318); let mut x333: u64 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u64(x332, x297, x320); let mut x335: u64 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u64(x334, x299, x322); let mut x337: u64 = 0; let mut x338: u64 = 0; let (x337, x338) = fiat_p384_scalar_mulx_u64(x323, 0x6ed46089e88fdc45); let mut x339: u64 = 0; let mut x340: u64 = 0; let (x339, x340) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x341: u64 = 0; let mut x342: u64 = 0; let (x341, x342) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x343: u64 = 0; let mut x344: u64 = 0; let (x343, x344) = fiat_p384_scalar_mulx_u64(x337, 0xffffffffffffffff); let mut x345: u64 = 0; let mut x346: u64 = 0; let (x345, x346) = fiat_p384_scalar_mulx_u64(x337, 0xc7634d81f4372ddf); let mut x347: u64 = 0; let mut x348: u64 = 0; let (x347, x348) = fiat_p384_scalar_mulx_u64(x337, 0x581a0db248b0a77a); let mut x349: u64 = 0; let mut x350: u64 = 0; let (x349, x350) = fiat_p384_scalar_mulx_u64(x337, 0xecec196accc52973); let mut x351: u64 = 0; let mut x352: fiat_p384_scalar_u1 = 0; let (x351, x352) = fiat_p384_scalar_addcarryx_u64(0x0, x350, x347); let mut x353: u64 = 0; let mut x354: fiat_p384_scalar_u1 = 0; let (x353, x354) = fiat_p384_scalar_addcarryx_u64(x352, x348, x345); let mut x355: u64 = 0; let mut x356: fiat_p384_scalar_u1 = 0; let (x355, x356) = fiat_p384_scalar_addcarryx_u64(x354, x346, x343); let mut x357: u64 = 0; let mut x358: fiat_p384_scalar_u1 = 0; let (x357, x358) = fiat_p384_scalar_addcarryx_u64(x356, x344, x341); let mut x359: u64 = 0; let mut x360: fiat_p384_scalar_u1 = 0; let (x359, x360) = fiat_p384_scalar_addcarryx_u64(x358, x342, x339); let x361: u64 = ((x360 as u64) + x340); let mut x362: u64 = 0; let mut x363: fiat_p384_scalar_u1 = 0; let (x362, x363) = fiat_p384_scalar_addcarryx_u64(0x0, x323, x349); let mut x364: u64 = 0; let mut x365: fiat_p384_scalar_u1 = 0; let (x364, x365) = fiat_p384_scalar_addcarryx_u64(x363, x325, x351); let mut x366: u64 = 0; let mut x367: fiat_p384_scalar_u1 = 0; let (x366, x367) = fiat_p384_scalar_addcarryx_u64(x365, x327, x353); let mut x368: u64 = 0; let mut x369: fiat_p384_scalar_u1 = 0; let (x368, x369) = fiat_p384_scalar_addcarryx_u64(x367, x329, x355); let mut x370: u64 = 0; let mut x371: fiat_p384_scalar_u1 = 0; let (x370, x371) = fiat_p384_scalar_addcarryx_u64(x369, x331, x357); let mut x372: u64 = 0; let mut x373: fiat_p384_scalar_u1 = 0; let (x372, x373) = fiat_p384_scalar_addcarryx_u64(x371, x333, x359); let mut x374: u64 = 0; let mut x375: fiat_p384_scalar_u1 = 0; let (x374, x375) = fiat_p384_scalar_addcarryx_u64(x373, x335, x361); let x376: u64 = ((x375 as u64) + (x336 as u64)); let mut x377: u64 = 0; let mut x378: u64 = 0; let (x377, x378) = fiat_p384_scalar_mulx_u64(x5, (arg1[5])); let mut x379: u64 = 0; let mut x380: u64 = 0; let (x379, x380) = fiat_p384_scalar_mulx_u64(x5, (arg1[4])); let mut x381: u64 = 0; let mut x382: u64 = 0; let (x381, x382) = fiat_p384_scalar_mulx_u64(x5, (arg1[3])); let mut x383: u64 = 0; let mut x384: u64 = 0; let (x383, x384) = fiat_p384_scalar_mulx_u64(x5, (arg1[2])); let mut x385: u64 = 0; let mut x386: u64 = 0; let (x385, x386) = fiat_p384_scalar_mulx_u64(x5, (arg1[1])); let mut x387: u64 = 0; let mut x388: u64 = 0; let (x387, x388) = fiat_p384_scalar_mulx_u64(x5, (arg1[0])); let mut x389: u64 = 0; let mut x390: fiat_p384_scalar_u1 = 0; let (x389, x390) = fiat_p384_scalar_addcarryx_u64(0x0, x388, x385); let mut x391: u64 = 0; let mut x392: fiat_p384_scalar_u1 = 0; let (x391, x392) = fiat_p384_scalar_addcarryx_u64(x390, x386, x383); let mut x393: u64 = 0; let mut x394: fiat_p384_scalar_u1 = 0; let (x393, x394) = fiat_p384_scalar_addcarryx_u64(x392, x384, x381); let mut x395: u64 = 0; let mut x396: fiat_p384_scalar_u1 = 0; let (x395, x396) = fiat_p384_scalar_addcarryx_u64(x394, x382, x379); let mut x397: u64 = 0; let mut x398: fiat_p384_scalar_u1 = 0; let (x397, x398) = fiat_p384_scalar_addcarryx_u64(x396, x380, x377); let x399: u64 = ((x398 as u64) + x378); let mut x400: u64 = 0; let mut x401: fiat_p384_scalar_u1 = 0; let (x400, x401) = fiat_p384_scalar_addcarryx_u64(0x0, x364, x387); let mut x402: u64 = 0; let mut x403: fiat_p384_scalar_u1 = 0; let (x402, x403) = fiat_p384_scalar_addcarryx_u64(x401, x366, x389); let mut x404: u64 = 0; let mut x405: fiat_p384_scalar_u1 = 0; let (x404, x405) = fiat_p384_scalar_addcarryx_u64(x403, x368, x391); let mut x406: u64 = 0; let mut x407: fiat_p384_scalar_u1 = 0; let (x406, x407) = fiat_p384_scalar_addcarryx_u64(x405, x370, x393); let mut x408: u64 = 0; let mut x409: fiat_p384_scalar_u1 = 0; let (x408, x409) = fiat_p384_scalar_addcarryx_u64(x407, x372, x395); let mut x410: u64 = 0; let mut x411: fiat_p384_scalar_u1 = 0; let (x410, x411) = fiat_p384_scalar_addcarryx_u64(x409, x374, x397); let mut x412: u64 = 0; let mut x413: fiat_p384_scalar_u1 = 0; let (x412, x413) = fiat_p384_scalar_addcarryx_u64(x411, x376, x399); let mut x414: u64 = 0; let mut x415: u64 = 0; let (x414, x415) = fiat_p384_scalar_mulx_u64(x400, 0x6ed46089e88fdc45); let mut x416: u64 = 0; let mut x417: u64 = 0; let (x416, x417) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x418: u64 = 0; let mut x419: u64 = 0; let (x418, x419) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x420: u64 = 0; let mut x421: u64 = 0; let (x420, x421) = fiat_p384_scalar_mulx_u64(x414, 0xffffffffffffffff); let mut x422: u64 = 0; let mut x423: u64 = 0; let (x422, x423) = fiat_p384_scalar_mulx_u64(x414, 0xc7634d81f4372ddf); let mut x424: u64 = 0; let mut x425: u64 = 0; let (x424, x425) = fiat_p384_scalar_mulx_u64(x414, 0x581a0db248b0a77a); let mut x426: u64 = 0; let mut x427: u64 = 0; let (x426, x427) = fiat_p384_scalar_mulx_u64(x414, 0xecec196accc52973); let mut x428: u64 = 0; let mut x429: fiat_p384_scalar_u1 = 0; let (x428, x429) = fiat_p384_scalar_addcarryx_u64(0x0, x427, x424); let mut x430: u64 = 0; let mut x431: fiat_p384_scalar_u1 = 0; let (x430, x431) = fiat_p384_scalar_addcarryx_u64(x429, x425, x422); let mut x432: u64 = 0; let mut x433: fiat_p384_scalar_u1 = 0; let (x432, x433) = fiat_p384_scalar_addcarryx_u64(x431, x423, x420); let mut x434: u64 = 0; let mut x435: fiat_p384_scalar_u1 = 0; let (x434, x435) = fiat_p384_scalar_addcarryx_u64(x433, x421, x418); let mut x436: u64 = 0; let mut x437: fiat_p384_scalar_u1 = 0; let (x436, x437) = fiat_p384_scalar_addcarryx_u64(x435, x419, x416); let x438: u64 = ((x437 as u64) + x417); let mut x439: u64 = 0; let mut x440: fiat_p384_scalar_u1 = 0; let (x439, x440) = fiat_p384_scalar_addcarryx_u64(0x0, x400, x426); let mut x441: u64 = 0; let mut x442: fiat_p384_scalar_u1 = 0; let (x441, x442) = fiat_p384_scalar_addcarryx_u64(x440, x402, x428); let mut x443: u64 = 0; let mut x444: fiat_p384_scalar_u1 = 0; let (x443, x444) = fiat_p384_scalar_addcarryx_u64(x442, x404, x430); let mut x445: u64 = 0; let mut x446: fiat_p384_scalar_u1 = 0; let (x445, x446) = fiat_p384_scalar_addcarryx_u64(x444, x406, x432); let mut x447: u64 = 0; let mut x448: fiat_p384_scalar_u1 = 0; let (x447, x448) = fiat_p384_scalar_addcarryx_u64(x446, x408, x434); let mut x449: u64 = 0; let mut x450: fiat_p384_scalar_u1 = 0; let (x449, x450) = fiat_p384_scalar_addcarryx_u64(x448, x410, x436); let mut x451: u64 = 0; let mut x452: fiat_p384_scalar_u1 = 0; let (x451, x452) = fiat_p384_scalar_addcarryx_u64(x450, x412, x438); let x453: u64 = ((x452 as u64) + (x413 as u64)); let mut x454: u64 = 0; let mut x455: fiat_p384_scalar_u1 = 0; let (x454, x455) = fiat_p384_scalar_subborrowx_u64(0x0, x441, 0xecec196accc52973); let mut x456: u64 = 0; let mut x457: fiat_p384_scalar_u1 = 0; let (x456, x457) = fiat_p384_scalar_subborrowx_u64(x455, x443, 0x581a0db248b0a77a); let mut x458: u64 = 0; let mut x459: fiat_p384_scalar_u1 = 0; let (x458, x459) = fiat_p384_scalar_subborrowx_u64(x457, x445, 0xc7634d81f4372ddf); let mut x460: u64 = 0; let mut x461: fiat_p384_scalar_u1 = 0; let (x460, x461) = fiat_p384_scalar_subborrowx_u64(x459, x447, 0xffffffffffffffff); let mut x462: u64 = 0; let mut x463: fiat_p384_scalar_u1 = 0; let (x462, x463) = fiat_p384_scalar_subborrowx_u64(x461, x449, 0xffffffffffffffff); let mut x464: u64 = 0; let mut x465: fiat_p384_scalar_u1 = 0; let (x464, x465) = fiat_p384_scalar_subborrowx_u64(x463, x451, 0xffffffffffffffff); let mut x466: u64 = 0; let mut x467: fiat_p384_scalar_u1 = 0; let (x466, x467) = fiat_p384_scalar_subborrowx_u64(x465, x453, 0x0_u64); let mut x468: u64 = 0; let (x468) = fiat_p384_scalar_cmovznz_u64(x467, x454, x441); let mut x469: u64 = 0; let (x469) = fiat_p384_scalar_cmovznz_u64(x467, x456, x443); let mut x470: u64 = 0; let (x470) = fiat_p384_scalar_cmovznz_u64(x467, x458, x445); let mut x471: u64 = 0; let (x471) = fiat_p384_scalar_cmovznz_u64(x467, x460, x447); let mut x472: u64 = 0; let (x472) = fiat_p384_scalar_cmovznz_u64(x467, x462, x449); let mut x473: u64 = 0; let (x473) = fiat_p384_scalar_cmovznz_u64(x467, x464, x451); out1[0] = x468; out1[1] = x469; out1[2] = x470; out1[3] = x471; out1[4] = x472; out1[5] = x473; out1 } #[doc = " The function fiat_p384_scalar_add adds two field elements in the Montgomery"] #[doc = " domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval"] #[doc = " (from_montgomery arg2)) mod m 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_add( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_addcarryx_u64(0x0, (arg1[0]), (arg2[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_addcarryx_u64(x2, (arg1[1]), (arg2[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_addcarryx_u64(x4, (arg1[2]), (arg2[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_addcarryx_u64(x6, (arg1[3]), (arg2[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_addcarryx_u64(x8, (arg1[4]), (arg2[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_addcarryx_u64(x10, (arg1[5]), (arg2[5])); let mut x13: u64 = 0; let mut x14: fiat_p384_scalar_u1 = 0; let (x13, x14) = fiat_p384_scalar_subborrowx_u64(0x0, x1, 0xecec196accc52973); let mut x15: u64 = 0; let mut x16: fiat_p384_scalar_u1 = 0; let (x15, x16) = fiat_p384_scalar_subborrowx_u64(x14, x3, 0x581a0db248b0a77a); let mut x17: u64 = 0; let mut x18: fiat_p384_scalar_u1 = 0; let (x17, x18) = fiat_p384_scalar_subborrowx_u64(x16, x5, 0xc7634d81f4372ddf); let mut x19: u64 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_subborrowx_u64(x18, x7, 0xffffffffffffffff); let mut x21: u64 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_subborrowx_u64(x20, x9, 0xffffffffffffffff); let mut x23: u64 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_subborrowx_u64(x22, x11, 0xffffffffffffffff); let mut x25: u64 = 0; let mut x26: fiat_p384_scalar_u1 = 0; let (x25, x26) = fiat_p384_scalar_subborrowx_u64(x24, (x12 as u64), 0x0_u64); let mut x27: u64 = 0; let (x27) = fiat_p384_scalar_cmovznz_u64(x26, x13, x1); let mut x28: u64 = 0; let (x28) = fiat_p384_scalar_cmovznz_u64(x26, x15, x3); let mut x29: u64 = 0; let (x29) = fiat_p384_scalar_cmovznz_u64(x26, x17, x5); let mut x30: u64 = 0; let (x30) = fiat_p384_scalar_cmovznz_u64(x26, x19, x7); let mut x31: u64 = 0; let (x31) = fiat_p384_scalar_cmovznz_u64(x26, x21, x9); let mut x32: u64 = 0; let (x32) = fiat_p384_scalar_cmovznz_u64(x26, x23, x11); out1[0] = x27; out1[1] = x28; out1[2] = x29; out1[3] = x30; out1[4] = x31; out1[5] = x32; out1 } #[doc = " The function fiat_p384_scalar_sub subtracts two field elements in the"] #[doc = " Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " 0 ≤ eval arg2 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval"] #[doc = " (from_montgomery arg2)) mod m 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_sub( arg1: &fiat_p384_scalar_montgomery_domain_field_element, arg2: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_subborrowx_u64(0x0, (arg1[0]), (arg2[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_subborrowx_u64(x2, (arg1[1]), (arg2[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_subborrowx_u64(x4, (arg1[2]), (arg2[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_subborrowx_u64(x6, (arg1[3]), (arg2[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_subborrowx_u64(x8, (arg1[4]), (arg2[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_subborrowx_u64(x10, (arg1[5]), (arg2[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_scalar_cmovznz_u64(x12, 0x0_u64, 0xffffffffffffffff); let mut x14: u64 = 0; let mut x15: fiat_p384_scalar_u1 = 0; let (x14, x15) = fiat_p384_scalar_addcarryx_u64(0x0, x1, (x13 & 0xecec196accc52973)); let mut x16: u64 = 0; let mut x17: fiat_p384_scalar_u1 = 0; let (x16, x17) = fiat_p384_scalar_addcarryx_u64(x15, x3, (x13 & 0x581a0db248b0a77a)); let mut x18: u64 = 0; let mut x19: fiat_p384_scalar_u1 = 0; let (x18, x19) = fiat_p384_scalar_addcarryx_u64(x17, x5, (x13 & 0xc7634d81f4372ddf)); let mut x20: u64 = 0; let mut x21: fiat_p384_scalar_u1 = 0; let (x20, x21) = fiat_p384_scalar_addcarryx_u64(x19, x7, x13); let mut x22: u64 = 0; let mut x23: fiat_p384_scalar_u1 = 0; let (x22, x23) = fiat_p384_scalar_addcarryx_u64(x21, x9, x13); let mut x24: u64 = 0; let mut x25: fiat_p384_scalar_u1 = 0; let (x24, x25) = fiat_p384_scalar_addcarryx_u64(x23, x11, x13); out1[0] = x14; out1[1] = x16; out1[2] = x18; out1[3] = x20; out1[4] = x22; out1[5] = x24; out1 } #[doc = " The function fiat_p384_scalar_opp negates a field element in the Montgomery"] #[doc = " domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_opp( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_subborrowx_u64(0x0, 0x0_u64, (arg1[0])); let mut x3: u64 = 0; let mut x4: fiat_p384_scalar_u1 = 0; let (x3, x4) = fiat_p384_scalar_subborrowx_u64(x2, 0x0_u64, (arg1[1])); let mut x5: u64 = 0; let mut x6: fiat_p384_scalar_u1 = 0; let (x5, x6) = fiat_p384_scalar_subborrowx_u64(x4, 0x0_u64, (arg1[2])); let mut x7: u64 = 0; let mut x8: fiat_p384_scalar_u1 = 0; let (x7, x8) = fiat_p384_scalar_subborrowx_u64(x6, 0x0_u64, (arg1[3])); let mut x9: u64 = 0; let mut x10: fiat_p384_scalar_u1 = 0; let (x9, x10) = fiat_p384_scalar_subborrowx_u64(x8, 0x0_u64, (arg1[4])); let mut x11: u64 = 0; let mut x12: fiat_p384_scalar_u1 = 0; let (x11, x12) = fiat_p384_scalar_subborrowx_u64(x10, 0x0_u64, (arg1[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_scalar_cmovznz_u64(x12, 0x0_u64, 0xffffffffffffffff); let mut x14: u64 = 0; let mut x15: fiat_p384_scalar_u1 = 0; let (x14, x15) = fiat_p384_scalar_addcarryx_u64(0x0, x1, (x13 & 0xecec196accc52973)); let mut x16: u64 = 0; let mut x17: fiat_p384_scalar_u1 = 0; let (x16, x17) = fiat_p384_scalar_addcarryx_u64(x15, x3, (x13 & 0x581a0db248b0a77a)); let mut x18: u64 = 0; let mut x19: fiat_p384_scalar_u1 = 0; let (x18, x19) = fiat_p384_scalar_addcarryx_u64(x17, x5, (x13 & 0xc7634d81f4372ddf)); let mut x20: u64 = 0; let mut x21: fiat_p384_scalar_u1 = 0; let (x20, x21) = fiat_p384_scalar_addcarryx_u64(x19, x7, x13); let mut x22: u64 = 0; let mut x23: fiat_p384_scalar_u1 = 0; let (x22, x23) = fiat_p384_scalar_addcarryx_u64(x21, x9, x13); let mut x24: u64 = 0; let mut x25: fiat_p384_scalar_u1 = 0; let (x24, x25) = fiat_p384_scalar_addcarryx_u64(x23, x11, x13); out1[0] = x14; out1[1] = x16; out1[2] = x18; out1[3] = x20; out1[4] = x22; out1[5] = x24; out1 } #[doc = " The function fiat_p384_scalar_from_montgomery translates a field element out"] #[doc = " of the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^6) mod m"] #[doc = " 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_from_montgomery( arg1: &fiat_p384_scalar_montgomery_domain_field_element, ) -> fiat_p384_scalar_non_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_non_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[0]); let mut x2: u64 = 0; let mut x3: u64 = 0; let (x2, x3) = fiat_p384_scalar_mulx_u64(x1, 0x6ed46089e88fdc45); let mut x4: u64 = 0; let mut x5: u64 = 0; let (x4, x5) = fiat_p384_scalar_mulx_u64(x2, 0xffffffffffffffff); let mut x6: u64 = 0; let mut x7: u64 = 0; let (x6, x7) = fiat_p384_scalar_mulx_u64(x2, 0xffffffffffffffff); let mut x8: u64 = 0; let mut x9: u64 = 0; let (x8, x9) = fiat_p384_scalar_mulx_u64(x2, 0xffffffffffffffff); let mut x10: u64 = 0; let mut x11: u64 = 0; let (x10, x11) = fiat_p384_scalar_mulx_u64(x2, 0xc7634d81f4372ddf); let mut x12: u64 = 0; let mut x13: u64 = 0; let (x12, x13) = fiat_p384_scalar_mulx_u64(x2, 0x581a0db248b0a77a); let mut x14: u64 = 0; let mut x15: u64 = 0; let (x14, x15) = fiat_p384_scalar_mulx_u64(x2, 0xecec196accc52973); let mut x16: u64 = 0; let mut x17: fiat_p384_scalar_u1 = 0; let (x16, x17) = fiat_p384_scalar_addcarryx_u64(0x0, x15, x12); let mut x18: u64 = 0; let mut x19: fiat_p384_scalar_u1 = 0; let (x18, x19) = fiat_p384_scalar_addcarryx_u64(x17, x13, x10); let mut x20: u64 = 0; let mut x21: fiat_p384_scalar_u1 = 0; let (x20, x21) = fiat_p384_scalar_addcarryx_u64(x19, x11, x8); let mut x22: u64 = 0; let mut x23: fiat_p384_scalar_u1 = 0; let (x22, x23) = fiat_p384_scalar_addcarryx_u64(x21, x9, x6); let mut x24: u64 = 0; let mut x25: fiat_p384_scalar_u1 = 0; let (x24, x25) = fiat_p384_scalar_addcarryx_u64(x23, x7, x4); let mut x26: u64 = 0; let mut x27: fiat_p384_scalar_u1 = 0; let (x26, x27) = fiat_p384_scalar_addcarryx_u64(0x0, x1, x14); let mut x28: u64 = 0; let mut x29: fiat_p384_scalar_u1 = 0; let (x28, x29) = fiat_p384_scalar_addcarryx_u64(x27, 0x0_u64, x16); let mut x30: u64 = 0; let mut x31: fiat_p384_scalar_u1 = 0; let (x30, x31) = fiat_p384_scalar_addcarryx_u64(x29, 0x0_u64, x18); let mut x32: u64 = 0; let mut x33: fiat_p384_scalar_u1 = 0; let (x32, x33) = fiat_p384_scalar_addcarryx_u64(x31, 0x0_u64, x20); let mut x34: u64 = 0; let mut x35: fiat_p384_scalar_u1 = 0; let (x34, x35) = fiat_p384_scalar_addcarryx_u64(x33, 0x0_u64, x22); let mut x36: u64 = 0; let mut x37: fiat_p384_scalar_u1 = 0; let (x36, x37) = fiat_p384_scalar_addcarryx_u64(x35, 0x0_u64, x24); let mut x38: u64 = 0; let mut x39: fiat_p384_scalar_u1 = 0; let (x38, x39) = fiat_p384_scalar_addcarryx_u64(x37, 0x0_u64, ((x25 as u64) + x5)); let mut x40: u64 = 0; let mut x41: fiat_p384_scalar_u1 = 0; let (x40, x41) = fiat_p384_scalar_addcarryx_u64(0x0, x28, (arg1[1])); let mut x42: u64 = 0; let mut x43: fiat_p384_scalar_u1 = 0; let (x42, x43) = fiat_p384_scalar_addcarryx_u64(x41, x30, 0x0_u64); let mut x44: u64 = 0; let mut x45: fiat_p384_scalar_u1 = 0; let (x44, x45) = fiat_p384_scalar_addcarryx_u64(x43, x32, 0x0_u64); let mut x46: u64 = 0; let mut x47: fiat_p384_scalar_u1 = 0; let (x46, x47) = fiat_p384_scalar_addcarryx_u64(x45, x34, 0x0_u64); let mut x48: u64 = 0; let mut x49: fiat_p384_scalar_u1 = 0; let (x48, x49) = fiat_p384_scalar_addcarryx_u64(x47, x36, 0x0_u64); let mut x50: u64 = 0; let mut x51: fiat_p384_scalar_u1 = 0; let (x50, x51) = fiat_p384_scalar_addcarryx_u64(x49, x38, 0x0_u64); let mut x52: u64 = 0; let mut x53: u64 = 0; let (x52, x53) = fiat_p384_scalar_mulx_u64(x40, 0x6ed46089e88fdc45); let mut x54: u64 = 0; let mut x55: u64 = 0; let (x54, x55) = fiat_p384_scalar_mulx_u64(x52, 0xffffffffffffffff); let mut x56: u64 = 0; let mut x57: u64 = 0; let (x56, x57) = fiat_p384_scalar_mulx_u64(x52, 0xffffffffffffffff); let mut x58: u64 = 0; let mut x59: u64 = 0; let (x58, x59) = fiat_p384_scalar_mulx_u64(x52, 0xffffffffffffffff); let mut x60: u64 = 0; let mut x61: u64 = 0; let (x60, x61) = fiat_p384_scalar_mulx_u64(x52, 0xc7634d81f4372ddf); let mut x62: u64 = 0; let mut x63: u64 = 0; let (x62, x63) = fiat_p384_scalar_mulx_u64(x52, 0x581a0db248b0a77a); let mut x64: u64 = 0; let mut x65: u64 = 0; let (x64, x65) = fiat_p384_scalar_mulx_u64(x52, 0xecec196accc52973); let mut x66: u64 = 0; let mut x67: fiat_p384_scalar_u1 = 0; let (x66, x67) = fiat_p384_scalar_addcarryx_u64(0x0, x65, x62); let mut x68: u64 = 0; let mut x69: fiat_p384_scalar_u1 = 0; let (x68, x69) = fiat_p384_scalar_addcarryx_u64(x67, x63, x60); let mut x70: u64 = 0; let mut x71: fiat_p384_scalar_u1 = 0; let (x70, x71) = fiat_p384_scalar_addcarryx_u64(x69, x61, x58); let mut x72: u64 = 0; let mut x73: fiat_p384_scalar_u1 = 0; let (x72, x73) = fiat_p384_scalar_addcarryx_u64(x71, x59, x56); let mut x74: u64 = 0; let mut x75: fiat_p384_scalar_u1 = 0; let (x74, x75) = fiat_p384_scalar_addcarryx_u64(x73, x57, x54); let mut x76: u64 = 0; let mut x77: fiat_p384_scalar_u1 = 0; let (x76, x77) = fiat_p384_scalar_addcarryx_u64(0x0, x40, x64); let mut x78: u64 = 0; let mut x79: fiat_p384_scalar_u1 = 0; let (x78, x79) = fiat_p384_scalar_addcarryx_u64(x77, x42, x66); let mut x80: u64 = 0; let mut x81: fiat_p384_scalar_u1 = 0; let (x80, x81) = fiat_p384_scalar_addcarryx_u64(x79, x44, x68); let mut x82: u64 = 0; let mut x83: fiat_p384_scalar_u1 = 0; let (x82, x83) = fiat_p384_scalar_addcarryx_u64(x81, x46, x70); let mut x84: u64 = 0; let mut x85: fiat_p384_scalar_u1 = 0; let (x84, x85) = fiat_p384_scalar_addcarryx_u64(x83, x48, x72); let mut x86: u64 = 0; let mut x87: fiat_p384_scalar_u1 = 0; let (x86, x87) = fiat_p384_scalar_addcarryx_u64(x85, x50, x74); let mut x88: u64 = 0; let mut x89: fiat_p384_scalar_u1 = 0; let (x88, x89) = fiat_p384_scalar_addcarryx_u64(x87, ((x51 as u64) + (x39 as u64)), ((x75 as u64) + x55)); let mut x90: u64 = 0; let mut x91: fiat_p384_scalar_u1 = 0; let (x90, x91) = fiat_p384_scalar_addcarryx_u64(0x0, x78, (arg1[2])); let mut x92: u64 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u64(x91, x80, 0x0_u64); let mut x94: u64 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u64(x93, x82, 0x0_u64); let mut x96: u64 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u64(x95, x84, 0x0_u64); let mut x98: u64 = 0; let mut x99: fiat_p384_scalar_u1 = 0; let (x98, x99) = fiat_p384_scalar_addcarryx_u64(x97, x86, 0x0_u64); let mut x100: u64 = 0; let mut x101: fiat_p384_scalar_u1 = 0; let (x100, x101) = fiat_p384_scalar_addcarryx_u64(x99, x88, 0x0_u64); let mut x102: u64 = 0; let mut x103: u64 = 0; let (x102, x103) = fiat_p384_scalar_mulx_u64(x90, 0x6ed46089e88fdc45); let mut x104: u64 = 0; let mut x105: u64 = 0; let (x104, x105) = fiat_p384_scalar_mulx_u64(x102, 0xffffffffffffffff); let mut x106: u64 = 0; let mut x107: u64 = 0; let (x106, x107) = fiat_p384_scalar_mulx_u64(x102, 0xffffffffffffffff); let mut x108: u64 = 0; let mut x109: u64 = 0; let (x108, x109) = fiat_p384_scalar_mulx_u64(x102, 0xffffffffffffffff); let mut x110: u64 = 0; let mut x111: u64 = 0; let (x110, x111) = fiat_p384_scalar_mulx_u64(x102, 0xc7634d81f4372ddf); let mut x112: u64 = 0; let mut x113: u64 = 0; let (x112, x113) = fiat_p384_scalar_mulx_u64(x102, 0x581a0db248b0a77a); let mut x114: u64 = 0; let mut x115: u64 = 0; let (x114, x115) = fiat_p384_scalar_mulx_u64(x102, 0xecec196accc52973); let mut x116: u64 = 0; let mut x117: fiat_p384_scalar_u1 = 0; let (x116, x117) = fiat_p384_scalar_addcarryx_u64(0x0, x115, x112); let mut x118: u64 = 0; let mut x119: fiat_p384_scalar_u1 = 0; let (x118, x119) = fiat_p384_scalar_addcarryx_u64(x117, x113, x110); let mut x120: u64 = 0; let mut x121: fiat_p384_scalar_u1 = 0; let (x120, x121) = fiat_p384_scalar_addcarryx_u64(x119, x111, x108); let mut x122: u64 = 0; let mut x123: fiat_p384_scalar_u1 = 0; let (x122, x123) = fiat_p384_scalar_addcarryx_u64(x121, x109, x106); let mut x124: u64 = 0; let mut x125: fiat_p384_scalar_u1 = 0; let (x124, x125) = fiat_p384_scalar_addcarryx_u64(x123, x107, x104); let mut x126: u64 = 0; let mut x127: fiat_p384_scalar_u1 = 0; let (x126, x127) = fiat_p384_scalar_addcarryx_u64(0x0, x90, x114); let mut x128: u64 = 0; let mut x129: fiat_p384_scalar_u1 = 0; let (x128, x129) = fiat_p384_scalar_addcarryx_u64(x127, x92, x116); let mut x130: u64 = 0; let mut x131: fiat_p384_scalar_u1 = 0; let (x130, x131) = fiat_p384_scalar_addcarryx_u64(x129, x94, x118); let mut x132: u64 = 0; let mut x133: fiat_p384_scalar_u1 = 0; let (x132, x133) = fiat_p384_scalar_addcarryx_u64(x131, x96, x120); let mut x134: u64 = 0; let mut x135: fiat_p384_scalar_u1 = 0; let (x134, x135) = fiat_p384_scalar_addcarryx_u64(x133, x98, x122); let mut x136: u64 = 0; let mut x137: fiat_p384_scalar_u1 = 0; let (x136, x137) = fiat_p384_scalar_addcarryx_u64(x135, x100, x124); let mut x138: u64 = 0; let mut x139: fiat_p384_scalar_u1 = 0; let (x138, x139) = fiat_p384_scalar_addcarryx_u64( x137, ((x101 as u64) + (x89 as u64)), ((x125 as u64) + x105), ); let mut x140: u64 = 0; let mut x141: fiat_p384_scalar_u1 = 0; let (x140, x141) = fiat_p384_scalar_addcarryx_u64(0x0, x128, (arg1[3])); let mut x142: u64 = 0; let mut x143: fiat_p384_scalar_u1 = 0; let (x142, x143) = fiat_p384_scalar_addcarryx_u64(x141, x130, 0x0_u64); let mut x144: u64 = 0; let mut x145: fiat_p384_scalar_u1 = 0; let (x144, x145) = fiat_p384_scalar_addcarryx_u64(x143, x132, 0x0_u64); let mut x146: u64 = 0; let mut x147: fiat_p384_scalar_u1 = 0; let (x146, x147) = fiat_p384_scalar_addcarryx_u64(x145, x134, 0x0_u64); let mut x148: u64 = 0; let mut x149: fiat_p384_scalar_u1 = 0; let (x148, x149) = fiat_p384_scalar_addcarryx_u64(x147, x136, 0x0_u64); let mut x150: u64 = 0; let mut x151: fiat_p384_scalar_u1 = 0; let (x150, x151) = fiat_p384_scalar_addcarryx_u64(x149, x138, 0x0_u64); let mut x152: u64 = 0; let mut x153: u64 = 0; let (x152, x153) = fiat_p384_scalar_mulx_u64(x140, 0x6ed46089e88fdc45); let mut x154: u64 = 0; let mut x155: u64 = 0; let (x154, x155) = fiat_p384_scalar_mulx_u64(x152, 0xffffffffffffffff); let mut x156: u64 = 0; let mut x157: u64 = 0; let (x156, x157) = fiat_p384_scalar_mulx_u64(x152, 0xffffffffffffffff); let mut x158: u64 = 0; let mut x159: u64 = 0; let (x158, x159) = fiat_p384_scalar_mulx_u64(x152, 0xffffffffffffffff); let mut x160: u64 = 0; let mut x161: u64 = 0; let (x160, x161) = fiat_p384_scalar_mulx_u64(x152, 0xc7634d81f4372ddf); let mut x162: u64 = 0; let mut x163: u64 = 0; let (x162, x163) = fiat_p384_scalar_mulx_u64(x152, 0x581a0db248b0a77a); let mut x164: u64 = 0; let mut x165: u64 = 0; let (x164, x165) = fiat_p384_scalar_mulx_u64(x152, 0xecec196accc52973); let mut x166: u64 = 0; let mut x167: fiat_p384_scalar_u1 = 0; let (x166, x167) = fiat_p384_scalar_addcarryx_u64(0x0, x165, x162); let mut x168: u64 = 0; let mut x169: fiat_p384_scalar_u1 = 0; let (x168, x169) = fiat_p384_scalar_addcarryx_u64(x167, x163, x160); let mut x170: u64 = 0; let mut x171: fiat_p384_scalar_u1 = 0; let (x170, x171) = fiat_p384_scalar_addcarryx_u64(x169, x161, x158); let mut x172: u64 = 0; let mut x173: fiat_p384_scalar_u1 = 0; let (x172, x173) = fiat_p384_scalar_addcarryx_u64(x171, x159, x156); let mut x174: u64 = 0; let mut x175: fiat_p384_scalar_u1 = 0; let (x174, x175) = fiat_p384_scalar_addcarryx_u64(x173, x157, x154); let mut x176: u64 = 0; let mut x177: fiat_p384_scalar_u1 = 0; let (x176, x177) = fiat_p384_scalar_addcarryx_u64(0x0, x140, x164); let mut x178: u64 = 0; let mut x179: fiat_p384_scalar_u1 = 0; let (x178, x179) = fiat_p384_scalar_addcarryx_u64(x177, x142, x166); let mut x180: u64 = 0; let mut x181: fiat_p384_scalar_u1 = 0; let (x180, x181) = fiat_p384_scalar_addcarryx_u64(x179, x144, x168); let mut x182: u64 = 0; let mut x183: fiat_p384_scalar_u1 = 0; let (x182, x183) = fiat_p384_scalar_addcarryx_u64(x181, x146, x170); let mut x184: u64 = 0; let mut x185: fiat_p384_scalar_u1 = 0; let (x184, x185) = fiat_p384_scalar_addcarryx_u64(x183, x148, x172); let mut x186: u64 = 0; let mut x187: fiat_p384_scalar_u1 = 0; let (x186, x187) = fiat_p384_scalar_addcarryx_u64(x185, x150, x174); let mut x188: u64 = 0; let mut x189: fiat_p384_scalar_u1 = 0; let (x188, x189) = fiat_p384_scalar_addcarryx_u64( x187, ((x151 as u64) + (x139 as u64)), ((x175 as u64) + x155), ); let mut x190: u64 = 0; let mut x191: fiat_p384_scalar_u1 = 0; let (x190, x191) = fiat_p384_scalar_addcarryx_u64(0x0, x178, (arg1[4])); let mut x192: u64 = 0; let mut x193: fiat_p384_scalar_u1 = 0; let (x192, x193) = fiat_p384_scalar_addcarryx_u64(x191, x180, 0x0_u64); let mut x194: u64 = 0; let mut x195: fiat_p384_scalar_u1 = 0; let (x194, x195) = fiat_p384_scalar_addcarryx_u64(x193, x182, 0x0_u64); let mut x196: u64 = 0; let mut x197: fiat_p384_scalar_u1 = 0; let (x196, x197) = fiat_p384_scalar_addcarryx_u64(x195, x184, 0x0_u64); let mut x198: u64 = 0; let mut x199: fiat_p384_scalar_u1 = 0; let (x198, x199) = fiat_p384_scalar_addcarryx_u64(x197, x186, 0x0_u64); let mut x200: u64 = 0; let mut x201: fiat_p384_scalar_u1 = 0; let (x200, x201) = fiat_p384_scalar_addcarryx_u64(x199, x188, 0x0_u64); let mut x202: u64 = 0; let mut x203: u64 = 0; let (x202, x203) = fiat_p384_scalar_mulx_u64(x190, 0x6ed46089e88fdc45); let mut x204: u64 = 0; let mut x205: u64 = 0; let (x204, x205) = fiat_p384_scalar_mulx_u64(x202, 0xffffffffffffffff); let mut x206: u64 = 0; let mut x207: u64 = 0; let (x206, x207) = fiat_p384_scalar_mulx_u64(x202, 0xffffffffffffffff); let mut x208: u64 = 0; let mut x209: u64 = 0; let (x208, x209) = fiat_p384_scalar_mulx_u64(x202, 0xffffffffffffffff); let mut x210: u64 = 0; let mut x211: u64 = 0; let (x210, x211) = fiat_p384_scalar_mulx_u64(x202, 0xc7634d81f4372ddf); let mut x212: u64 = 0; let mut x213: u64 = 0; let (x212, x213) = fiat_p384_scalar_mulx_u64(x202, 0x581a0db248b0a77a); let mut x214: u64 = 0; let mut x215: u64 = 0; let (x214, x215) = fiat_p384_scalar_mulx_u64(x202, 0xecec196accc52973); let mut x216: u64 = 0; let mut x217: fiat_p384_scalar_u1 = 0; let (x216, x217) = fiat_p384_scalar_addcarryx_u64(0x0, x215, x212); let mut x218: u64 = 0; let mut x219: fiat_p384_scalar_u1 = 0; let (x218, x219) = fiat_p384_scalar_addcarryx_u64(x217, x213, x210); let mut x220: u64 = 0; let mut x221: fiat_p384_scalar_u1 = 0; let (x220, x221) = fiat_p384_scalar_addcarryx_u64(x219, x211, x208); let mut x222: u64 = 0; let mut x223: fiat_p384_scalar_u1 = 0; let (x222, x223) = fiat_p384_scalar_addcarryx_u64(x221, x209, x206); let mut x224: u64 = 0; let mut x225: fiat_p384_scalar_u1 = 0; let (x224, x225) = fiat_p384_scalar_addcarryx_u64(x223, x207, x204); let mut x226: u64 = 0; let mut x227: fiat_p384_scalar_u1 = 0; let (x226, x227) = fiat_p384_scalar_addcarryx_u64(0x0, x190, x214); let mut x228: u64 = 0; let mut x229: fiat_p384_scalar_u1 = 0; let (x228, x229) = fiat_p384_scalar_addcarryx_u64(x227, x192, x216); let mut x230: u64 = 0; let mut x231: fiat_p384_scalar_u1 = 0; let (x230, x231) = fiat_p384_scalar_addcarryx_u64(x229, x194, x218); let mut x232: u64 = 0; let mut x233: fiat_p384_scalar_u1 = 0; let (x232, x233) = fiat_p384_scalar_addcarryx_u64(x231, x196, x220); let mut x234: u64 = 0; let mut x235: fiat_p384_scalar_u1 = 0; let (x234, x235) = fiat_p384_scalar_addcarryx_u64(x233, x198, x222); let mut x236: u64 = 0; let mut x237: fiat_p384_scalar_u1 = 0; let (x236, x237) = fiat_p384_scalar_addcarryx_u64(x235, x200, x224); let mut x238: u64 = 0; let mut x239: fiat_p384_scalar_u1 = 0; let (x238, x239) = fiat_p384_scalar_addcarryx_u64( x237, ((x201 as u64) + (x189 as u64)), ((x225 as u64) + x205), ); let mut x240: u64 = 0; let mut x241: fiat_p384_scalar_u1 = 0; let (x240, x241) = fiat_p384_scalar_addcarryx_u64(0x0, x228, (arg1[5])); let mut x242: u64 = 0; let mut x243: fiat_p384_scalar_u1 = 0; let (x242, x243) = fiat_p384_scalar_addcarryx_u64(x241, x230, 0x0_u64); let mut x244: u64 = 0; let mut x245: fiat_p384_scalar_u1 = 0; let (x244, x245) = fiat_p384_scalar_addcarryx_u64(x243, x232, 0x0_u64); let mut x246: u64 = 0; let mut x247: fiat_p384_scalar_u1 = 0; let (x246, x247) = fiat_p384_scalar_addcarryx_u64(x245, x234, 0x0_u64); let mut x248: u64 = 0; let mut x249: fiat_p384_scalar_u1 = 0; let (x248, x249) = fiat_p384_scalar_addcarryx_u64(x247, x236, 0x0_u64); let mut x250: u64 = 0; let mut x251: fiat_p384_scalar_u1 = 0; let (x250, x251) = fiat_p384_scalar_addcarryx_u64(x249, x238, 0x0_u64); let mut x252: u64 = 0; let mut x253: u64 = 0; let (x252, x253) = fiat_p384_scalar_mulx_u64(x240, 0x6ed46089e88fdc45); let mut x254: u64 = 0; let mut x255: u64 = 0; let (x254, x255) = fiat_p384_scalar_mulx_u64(x252, 0xffffffffffffffff); let mut x256: u64 = 0; let mut x257: u64 = 0; let (x256, x257) = fiat_p384_scalar_mulx_u64(x252, 0xffffffffffffffff); let mut x258: u64 = 0; let mut x259: u64 = 0; let (x258, x259) = fiat_p384_scalar_mulx_u64(x252, 0xffffffffffffffff); let mut x260: u64 = 0; let mut x261: u64 = 0; let (x260, x261) = fiat_p384_scalar_mulx_u64(x252, 0xc7634d81f4372ddf); let mut x262: u64 = 0; let mut x263: u64 = 0; let (x262, x263) = fiat_p384_scalar_mulx_u64(x252, 0x581a0db248b0a77a); let mut x264: u64 = 0; let mut x265: u64 = 0; let (x264, x265) = fiat_p384_scalar_mulx_u64(x252, 0xecec196accc52973); let mut x266: u64 = 0; let mut x267: fiat_p384_scalar_u1 = 0; let (x266, x267) = fiat_p384_scalar_addcarryx_u64(0x0, x265, x262); let mut x268: u64 = 0; let mut x269: fiat_p384_scalar_u1 = 0; let (x268, x269) = fiat_p384_scalar_addcarryx_u64(x267, x263, x260); let mut x270: u64 = 0; let mut x271: fiat_p384_scalar_u1 = 0; let (x270, x271) = fiat_p384_scalar_addcarryx_u64(x269, x261, x258); let mut x272: u64 = 0; let mut x273: fiat_p384_scalar_u1 = 0; let (x272, x273) = fiat_p384_scalar_addcarryx_u64(x271, x259, x256); let mut x274: u64 = 0; let mut x275: fiat_p384_scalar_u1 = 0; let (x274, x275) = fiat_p384_scalar_addcarryx_u64(x273, x257, x254); let mut x276: u64 = 0; let mut x277: fiat_p384_scalar_u1 = 0; let (x276, x277) = fiat_p384_scalar_addcarryx_u64(0x0, x240, x264); let mut x278: u64 = 0; let mut x279: fiat_p384_scalar_u1 = 0; let (x278, x279) = fiat_p384_scalar_addcarryx_u64(x277, x242, x266); let mut x280: u64 = 0; let mut x281: fiat_p384_scalar_u1 = 0; let (x280, x281) = fiat_p384_scalar_addcarryx_u64(x279, x244, x268); let mut x282: u64 = 0; let mut x283: fiat_p384_scalar_u1 = 0; let (x282, x283) = fiat_p384_scalar_addcarryx_u64(x281, x246, x270); let mut x284: u64 = 0; let mut x285: fiat_p384_scalar_u1 = 0; let (x284, x285) = fiat_p384_scalar_addcarryx_u64(x283, x248, x272); let mut x286: u64 = 0; let mut x287: fiat_p384_scalar_u1 = 0; let (x286, x287) = fiat_p384_scalar_addcarryx_u64(x285, x250, x274); let mut x288: u64 = 0; let mut x289: fiat_p384_scalar_u1 = 0; let (x288, x289) = fiat_p384_scalar_addcarryx_u64( x287, ((x251 as u64) + (x239 as u64)), ((x275 as u64) + x255), ); let mut x290: u64 = 0; let mut x291: fiat_p384_scalar_u1 = 0; let (x290, x291) = fiat_p384_scalar_subborrowx_u64(0x0, x278, 0xecec196accc52973); let mut x292: u64 = 0; let mut x293: fiat_p384_scalar_u1 = 0; let (x292, x293) = fiat_p384_scalar_subborrowx_u64(x291, x280, 0x581a0db248b0a77a); let mut x294: u64 = 0; let mut x295: fiat_p384_scalar_u1 = 0; let (x294, x295) = fiat_p384_scalar_subborrowx_u64(x293, x282, 0xc7634d81f4372ddf); let mut x296: u64 = 0; let mut x297: fiat_p384_scalar_u1 = 0; let (x296, x297) = fiat_p384_scalar_subborrowx_u64(x295, x284, 0xffffffffffffffff); let mut x298: u64 = 0; let mut x299: fiat_p384_scalar_u1 = 0; let (x298, x299) = fiat_p384_scalar_subborrowx_u64(x297, x286, 0xffffffffffffffff); let mut x300: u64 = 0; let mut x301: fiat_p384_scalar_u1 = 0; let (x300, x301) = fiat_p384_scalar_subborrowx_u64(x299, x288, 0xffffffffffffffff); let mut x302: u64 = 0; let mut x303: fiat_p384_scalar_u1 = 0; let (x302, x303) = fiat_p384_scalar_subborrowx_u64(x301, (x289 as u64), 0x0_u64); let mut x304: u64 = 0; let (x304) = fiat_p384_scalar_cmovznz_u64(x303, x290, x278); let mut x305: u64 = 0; let (x305) = fiat_p384_scalar_cmovznz_u64(x303, x292, x280); let mut x306: u64 = 0; let (x306) = fiat_p384_scalar_cmovznz_u64(x303, x294, x282); let mut x307: u64 = 0; let (x307) = fiat_p384_scalar_cmovznz_u64(x303, x296, x284); let mut x308: u64 = 0; let (x308) = fiat_p384_scalar_cmovznz_u64(x303, x298, x286); let mut x309: u64 = 0; let (x309) = fiat_p384_scalar_cmovznz_u64(x303, x300, x288); out1[0] = x304; out1[1] = x305; out1[2] = x306; out1[3] = x307; out1[4] = x308; out1[5] = x309; out1 } #[doc = " The function fiat_p384_scalar_to_montgomery translates a field element into"] #[doc = " the Montgomery domain."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_to_montgomery( arg1: &fiat_p384_scalar_non_montgomery_domain_field_element, ) -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; let x1: u64 = (arg1[1]); let x2: u64 = (arg1[2]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[4]); let x5: u64 = (arg1[5]); let x6: u64 = (arg1[0]); let mut x7: u64 = 0; let mut x8: u64 = 0; let (x7, x8) = fiat_p384_scalar_mulx_u64(x6, 0xc84ee012b39bf21); let mut x9: u64 = 0; let mut x10: u64 = 0; let (x9, x10) = fiat_p384_scalar_mulx_u64(x6, 0x3fb05b7a28266895); let mut x11: u64 = 0; let mut x12: u64 = 0; let (x11, x12) = fiat_p384_scalar_mulx_u64(x6, 0xd40d49174aab1cc5); let mut x13: u64 = 0; let mut x14: u64 = 0; let (x13, x14) = fiat_p384_scalar_mulx_u64(x6, 0xbc3e483afcb82947); let mut x15: u64 = 0; let mut x16: u64 = 0; let (x15, x16) = fiat_p384_scalar_mulx_u64(x6, 0xff3d81e5df1aa419); let mut x17: u64 = 0; let mut x18: u64 = 0; let (x17, x18) = fiat_p384_scalar_mulx_u64(x6, 0x2d319b2419b409a9); let mut x19: u64 = 0; let mut x20: fiat_p384_scalar_u1 = 0; let (x19, x20) = fiat_p384_scalar_addcarryx_u64(0x0, x18, x15); let mut x21: u64 = 0; let mut x22: fiat_p384_scalar_u1 = 0; let (x21, x22) = fiat_p384_scalar_addcarryx_u64(x20, x16, x13); let mut x23: u64 = 0; let mut x24: fiat_p384_scalar_u1 = 0; let (x23, x24) = fiat_p384_scalar_addcarryx_u64(x22, x14, x11); let mut x25: u64 = 0; let mut x26: fiat_p384_scalar_u1 = 0; let (x25, x26) = fiat_p384_scalar_addcarryx_u64(x24, x12, x9); let mut x27: u64 = 0; let mut x28: fiat_p384_scalar_u1 = 0; let (x27, x28) = fiat_p384_scalar_addcarryx_u64(x26, x10, x7); let mut x29: u64 = 0; let mut x30: u64 = 0; let (x29, x30) = fiat_p384_scalar_mulx_u64(x17, 0x6ed46089e88fdc45); let mut x31: u64 = 0; let mut x32: u64 = 0; let (x31, x32) = fiat_p384_scalar_mulx_u64(x29, 0xffffffffffffffff); let mut x33: u64 = 0; let mut x34: u64 = 0; let (x33, x34) = fiat_p384_scalar_mulx_u64(x29, 0xffffffffffffffff); let mut x35: u64 = 0; let mut x36: u64 = 0; let (x35, x36) = fiat_p384_scalar_mulx_u64(x29, 0xffffffffffffffff); let mut x37: u64 = 0; let mut x38: u64 = 0; let (x37, x38) = fiat_p384_scalar_mulx_u64(x29, 0xc7634d81f4372ddf); let mut x39: u64 = 0; let mut x40: u64 = 0; let (x39, x40) = fiat_p384_scalar_mulx_u64(x29, 0x581a0db248b0a77a); let mut x41: u64 = 0; let mut x42: u64 = 0; let (x41, x42) = fiat_p384_scalar_mulx_u64(x29, 0xecec196accc52973); let mut x43: u64 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_addcarryx_u64(0x0, x42, x39); let mut x45: u64 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_addcarryx_u64(x44, x40, x37); let mut x47: u64 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_addcarryx_u64(x46, x38, x35); let mut x49: u64 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_addcarryx_u64(x48, x36, x33); let mut x51: u64 = 0; let mut x52: fiat_p384_scalar_u1 = 0; let (x51, x52) = fiat_p384_scalar_addcarryx_u64(x50, x34, x31); let mut x53: u64 = 0; let mut x54: fiat_p384_scalar_u1 = 0; let (x53, x54) = fiat_p384_scalar_addcarryx_u64(0x0, x17, x41); let mut x55: u64 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_addcarryx_u64(x54, x19, x43); let mut x57: u64 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_addcarryx_u64(x56, x21, x45); let mut x59: u64 = 0; let mut x60: fiat_p384_scalar_u1 = 0; let (x59, x60) = fiat_p384_scalar_addcarryx_u64(x58, x23, x47); let mut x61: u64 = 0; let mut x62: fiat_p384_scalar_u1 = 0; let (x61, x62) = fiat_p384_scalar_addcarryx_u64(x60, x25, x49); let mut x63: u64 = 0; let mut x64: fiat_p384_scalar_u1 = 0; let (x63, x64) = fiat_p384_scalar_addcarryx_u64(x62, x27, x51); let mut x65: u64 = 0; let mut x66: fiat_p384_scalar_u1 = 0; let (x65, x66) = fiat_p384_scalar_addcarryx_u64(x64, ((x28 as u64) + x8), ((x52 as u64) + x32)); let mut x67: u64 = 0; let mut x68: u64 = 0; let (x67, x68) = fiat_p384_scalar_mulx_u64(x1, 0xc84ee012b39bf21); let mut x69: u64 = 0; let mut x70: u64 = 0; let (x69, x70) = fiat_p384_scalar_mulx_u64(x1, 0x3fb05b7a28266895); let mut x71: u64 = 0; let mut x72: u64 = 0; let (x71, x72) = fiat_p384_scalar_mulx_u64(x1, 0xd40d49174aab1cc5); let mut x73: u64 = 0; let mut x74: u64 = 0; let (x73, x74) = fiat_p384_scalar_mulx_u64(x1, 0xbc3e483afcb82947); let mut x75: u64 = 0; let mut x76: u64 = 0; let (x75, x76) = fiat_p384_scalar_mulx_u64(x1, 0xff3d81e5df1aa419); let mut x77: u64 = 0; let mut x78: u64 = 0; let (x77, x78) = fiat_p384_scalar_mulx_u64(x1, 0x2d319b2419b409a9); let mut x79: u64 = 0; let mut x80: fiat_p384_scalar_u1 = 0; let (x79, x80) = fiat_p384_scalar_addcarryx_u64(0x0, x78, x75); let mut x81: u64 = 0; let mut x82: fiat_p384_scalar_u1 = 0; let (x81, x82) = fiat_p384_scalar_addcarryx_u64(x80, x76, x73); let mut x83: u64 = 0; let mut x84: fiat_p384_scalar_u1 = 0; let (x83, x84) = fiat_p384_scalar_addcarryx_u64(x82, x74, x71); let mut x85: u64 = 0; let mut x86: fiat_p384_scalar_u1 = 0; let (x85, x86) = fiat_p384_scalar_addcarryx_u64(x84, x72, x69); let mut x87: u64 = 0; let mut x88: fiat_p384_scalar_u1 = 0; let (x87, x88) = fiat_p384_scalar_addcarryx_u64(x86, x70, x67); let mut x89: u64 = 0; let mut x90: fiat_p384_scalar_u1 = 0; let (x89, x90) = fiat_p384_scalar_addcarryx_u64(0x0, x55, x77); let mut x91: u64 = 0; let mut x92: fiat_p384_scalar_u1 = 0; let (x91, x92) = fiat_p384_scalar_addcarryx_u64(x90, x57, x79); let mut x93: u64 = 0; let mut x94: fiat_p384_scalar_u1 = 0; let (x93, x94) = fiat_p384_scalar_addcarryx_u64(x92, x59, x81); let mut x95: u64 = 0; let mut x96: fiat_p384_scalar_u1 = 0; let (x95, x96) = fiat_p384_scalar_addcarryx_u64(x94, x61, x83); let mut x97: u64 = 0; let mut x98: fiat_p384_scalar_u1 = 0; let (x97, x98) = fiat_p384_scalar_addcarryx_u64(x96, x63, x85); let mut x99: u64 = 0; let mut x100: fiat_p384_scalar_u1 = 0; let (x99, x100) = fiat_p384_scalar_addcarryx_u64(x98, x65, x87); let mut x101: u64 = 0; let mut x102: u64 = 0; let (x101, x102) = fiat_p384_scalar_mulx_u64(x89, 0x6ed46089e88fdc45); let mut x103: u64 = 0; let mut x104: u64 = 0; let (x103, x104) = fiat_p384_scalar_mulx_u64(x101, 0xffffffffffffffff); let mut x105: u64 = 0; let mut x106: u64 = 0; let (x105, x106) = fiat_p384_scalar_mulx_u64(x101, 0xffffffffffffffff); let mut x107: u64 = 0; let mut x108: u64 = 0; let (x107, x108) = fiat_p384_scalar_mulx_u64(x101, 0xffffffffffffffff); let mut x109: u64 = 0; let mut x110: u64 = 0; let (x109, x110) = fiat_p384_scalar_mulx_u64(x101, 0xc7634d81f4372ddf); let mut x111: u64 = 0; let mut x112: u64 = 0; let (x111, x112) = fiat_p384_scalar_mulx_u64(x101, 0x581a0db248b0a77a); let mut x113: u64 = 0; let mut x114: u64 = 0; let (x113, x114) = fiat_p384_scalar_mulx_u64(x101, 0xecec196accc52973); let mut x115: u64 = 0; let mut x116: fiat_p384_scalar_u1 = 0; let (x115, x116) = fiat_p384_scalar_addcarryx_u64(0x0, x114, x111); let mut x117: u64 = 0; let mut x118: fiat_p384_scalar_u1 = 0; let (x117, x118) = fiat_p384_scalar_addcarryx_u64(x116, x112, x109); let mut x119: u64 = 0; let mut x120: fiat_p384_scalar_u1 = 0; let (x119, x120) = fiat_p384_scalar_addcarryx_u64(x118, x110, x107); let mut x121: u64 = 0; let mut x122: fiat_p384_scalar_u1 = 0; let (x121, x122) = fiat_p384_scalar_addcarryx_u64(x120, x108, x105); let mut x123: u64 = 0; let mut x124: fiat_p384_scalar_u1 = 0; let (x123, x124) = fiat_p384_scalar_addcarryx_u64(x122, x106, x103); let mut x125: u64 = 0; let mut x126: fiat_p384_scalar_u1 = 0; let (x125, x126) = fiat_p384_scalar_addcarryx_u64(0x0, x89, x113); let mut x127: u64 = 0; let mut x128: fiat_p384_scalar_u1 = 0; let (x127, x128) = fiat_p384_scalar_addcarryx_u64(x126, x91, x115); let mut x129: u64 = 0; let mut x130: fiat_p384_scalar_u1 = 0; let (x129, x130) = fiat_p384_scalar_addcarryx_u64(x128, x93, x117); let mut x131: u64 = 0; let mut x132: fiat_p384_scalar_u1 = 0; let (x131, x132) = fiat_p384_scalar_addcarryx_u64(x130, x95, x119); let mut x133: u64 = 0; let mut x134: fiat_p384_scalar_u1 = 0; let (x133, x134) = fiat_p384_scalar_addcarryx_u64(x132, x97, x121); let mut x135: u64 = 0; let mut x136: fiat_p384_scalar_u1 = 0; let (x135, x136) = fiat_p384_scalar_addcarryx_u64(x134, x99, x123); let mut x137: u64 = 0; let mut x138: fiat_p384_scalar_u1 = 0; let (x137, x138) = fiat_p384_scalar_addcarryx_u64( x136, (((x100 as u64) + (x66 as u64)) + ((x88 as u64) + x68)), ((x124 as u64) + x104), ); let mut x139: u64 = 0; let mut x140: u64 = 0; let (x139, x140) = fiat_p384_scalar_mulx_u64(x2, 0xc84ee012b39bf21); let mut x141: u64 = 0; let mut x142: u64 = 0; let (x141, x142) = fiat_p384_scalar_mulx_u64(x2, 0x3fb05b7a28266895); let mut x143: u64 = 0; let mut x144: u64 = 0; let (x143, x144) = fiat_p384_scalar_mulx_u64(x2, 0xd40d49174aab1cc5); let mut x145: u64 = 0; let mut x146: u64 = 0; let (x145, x146) = fiat_p384_scalar_mulx_u64(x2, 0xbc3e483afcb82947); let mut x147: u64 = 0; let mut x148: u64 = 0; let (x147, x148) = fiat_p384_scalar_mulx_u64(x2, 0xff3d81e5df1aa419); let mut x149: u64 = 0; let mut x150: u64 = 0; let (x149, x150) = fiat_p384_scalar_mulx_u64(x2, 0x2d319b2419b409a9); let mut x151: u64 = 0; let mut x152: fiat_p384_scalar_u1 = 0; let (x151, x152) = fiat_p384_scalar_addcarryx_u64(0x0, x150, x147); let mut x153: u64 = 0; let mut x154: fiat_p384_scalar_u1 = 0; let (x153, x154) = fiat_p384_scalar_addcarryx_u64(x152, x148, x145); let mut x155: u64 = 0; let mut x156: fiat_p384_scalar_u1 = 0; let (x155, x156) = fiat_p384_scalar_addcarryx_u64(x154, x146, x143); let mut x157: u64 = 0; let mut x158: fiat_p384_scalar_u1 = 0; let (x157, x158) = fiat_p384_scalar_addcarryx_u64(x156, x144, x141); let mut x159: u64 = 0; let mut x160: fiat_p384_scalar_u1 = 0; let (x159, x160) = fiat_p384_scalar_addcarryx_u64(x158, x142, x139); let mut x161: u64 = 0; let mut x162: fiat_p384_scalar_u1 = 0; let (x161, x162) = fiat_p384_scalar_addcarryx_u64(0x0, x127, x149); let mut x163: u64 = 0; let mut x164: fiat_p384_scalar_u1 = 0; let (x163, x164) = fiat_p384_scalar_addcarryx_u64(x162, x129, x151); let mut x165: u64 = 0; let mut x166: fiat_p384_scalar_u1 = 0; let (x165, x166) = fiat_p384_scalar_addcarryx_u64(x164, x131, x153); let mut x167: u64 = 0; let mut x168: fiat_p384_scalar_u1 = 0; let (x167, x168) = fiat_p384_scalar_addcarryx_u64(x166, x133, x155); let mut x169: u64 = 0; let mut x170: fiat_p384_scalar_u1 = 0; let (x169, x170) = fiat_p384_scalar_addcarryx_u64(x168, x135, x157); let mut x171: u64 = 0; let mut x172: fiat_p384_scalar_u1 = 0; let (x171, x172) = fiat_p384_scalar_addcarryx_u64(x170, x137, x159); let mut x173: u64 = 0; let mut x174: u64 = 0; let (x173, x174) = fiat_p384_scalar_mulx_u64(x161, 0x6ed46089e88fdc45); let mut x175: u64 = 0; let mut x176: u64 = 0; let (x175, x176) = fiat_p384_scalar_mulx_u64(x173, 0xffffffffffffffff); let mut x177: u64 = 0; let mut x178: u64 = 0; let (x177, x178) = fiat_p384_scalar_mulx_u64(x173, 0xffffffffffffffff); let mut x179: u64 = 0; let mut x180: u64 = 0; let (x179, x180) = fiat_p384_scalar_mulx_u64(x173, 0xffffffffffffffff); let mut x181: u64 = 0; let mut x182: u64 = 0; let (x181, x182) = fiat_p384_scalar_mulx_u64(x173, 0xc7634d81f4372ddf); let mut x183: u64 = 0; let mut x184: u64 = 0; let (x183, x184) = fiat_p384_scalar_mulx_u64(x173, 0x581a0db248b0a77a); let mut x185: u64 = 0; let mut x186: u64 = 0; let (x185, x186) = fiat_p384_scalar_mulx_u64(x173, 0xecec196accc52973); let mut x187: u64 = 0; let mut x188: fiat_p384_scalar_u1 = 0; let (x187, x188) = fiat_p384_scalar_addcarryx_u64(0x0, x186, x183); let mut x189: u64 = 0; let mut x190: fiat_p384_scalar_u1 = 0; let (x189, x190) = fiat_p384_scalar_addcarryx_u64(x188, x184, x181); let mut x191: u64 = 0; let mut x192: fiat_p384_scalar_u1 = 0; let (x191, x192) = fiat_p384_scalar_addcarryx_u64(x190, x182, x179); let mut x193: u64 = 0; let mut x194: fiat_p384_scalar_u1 = 0; let (x193, x194) = fiat_p384_scalar_addcarryx_u64(x192, x180, x177); let mut x195: u64 = 0; let mut x196: fiat_p384_scalar_u1 = 0; let (x195, x196) = fiat_p384_scalar_addcarryx_u64(x194, x178, x175); let mut x197: u64 = 0; let mut x198: fiat_p384_scalar_u1 = 0; let (x197, x198) = fiat_p384_scalar_addcarryx_u64(0x0, x161, x185); let mut x199: u64 = 0; let mut x200: fiat_p384_scalar_u1 = 0; let (x199, x200) = fiat_p384_scalar_addcarryx_u64(x198, x163, x187); let mut x201: u64 = 0; let mut x202: fiat_p384_scalar_u1 = 0; let (x201, x202) = fiat_p384_scalar_addcarryx_u64(x200, x165, x189); let mut x203: u64 = 0; let mut x204: fiat_p384_scalar_u1 = 0; let (x203, x204) = fiat_p384_scalar_addcarryx_u64(x202, x167, x191); let mut x205: u64 = 0; let mut x206: fiat_p384_scalar_u1 = 0; let (x205, x206) = fiat_p384_scalar_addcarryx_u64(x204, x169, x193); let mut x207: u64 = 0; let mut x208: fiat_p384_scalar_u1 = 0; let (x207, x208) = fiat_p384_scalar_addcarryx_u64(x206, x171, x195); let mut x209: u64 = 0; let mut x210: fiat_p384_scalar_u1 = 0; let (x209, x210) = fiat_p384_scalar_addcarryx_u64( x208, (((x172 as u64) + (x138 as u64)) + ((x160 as u64) + x140)), ((x196 as u64) + x176), ); let mut x211: u64 = 0; let mut x212: u64 = 0; let (x211, x212) = fiat_p384_scalar_mulx_u64(x3, 0xc84ee012b39bf21); let mut x213: u64 = 0; let mut x214: u64 = 0; let (x213, x214) = fiat_p384_scalar_mulx_u64(x3, 0x3fb05b7a28266895); let mut x215: u64 = 0; let mut x216: u64 = 0; let (x215, x216) = fiat_p384_scalar_mulx_u64(x3, 0xd40d49174aab1cc5); let mut x217: u64 = 0; let mut x218: u64 = 0; let (x217, x218) = fiat_p384_scalar_mulx_u64(x3, 0xbc3e483afcb82947); let mut x219: u64 = 0; let mut x220: u64 = 0; let (x219, x220) = fiat_p384_scalar_mulx_u64(x3, 0xff3d81e5df1aa419); let mut x221: u64 = 0; let mut x222: u64 = 0; let (x221, x222) = fiat_p384_scalar_mulx_u64(x3, 0x2d319b2419b409a9); let mut x223: u64 = 0; let mut x224: fiat_p384_scalar_u1 = 0; let (x223, x224) = fiat_p384_scalar_addcarryx_u64(0x0, x222, x219); let mut x225: u64 = 0; let mut x226: fiat_p384_scalar_u1 = 0; let (x225, x226) = fiat_p384_scalar_addcarryx_u64(x224, x220, x217); let mut x227: u64 = 0; let mut x228: fiat_p384_scalar_u1 = 0; let (x227, x228) = fiat_p384_scalar_addcarryx_u64(x226, x218, x215); let mut x229: u64 = 0; let mut x230: fiat_p384_scalar_u1 = 0; let (x229, x230) = fiat_p384_scalar_addcarryx_u64(x228, x216, x213); let mut x231: u64 = 0; let mut x232: fiat_p384_scalar_u1 = 0; let (x231, x232) = fiat_p384_scalar_addcarryx_u64(x230, x214, x211); let mut x233: u64 = 0; let mut x234: fiat_p384_scalar_u1 = 0; let (x233, x234) = fiat_p384_scalar_addcarryx_u64(0x0, x199, x221); let mut x235: u64 = 0; let mut x236: fiat_p384_scalar_u1 = 0; let (x235, x236) = fiat_p384_scalar_addcarryx_u64(x234, x201, x223); let mut x237: u64 = 0; let mut x238: fiat_p384_scalar_u1 = 0; let (x237, x238) = fiat_p384_scalar_addcarryx_u64(x236, x203, x225); let mut x239: u64 = 0; let mut x240: fiat_p384_scalar_u1 = 0; let (x239, x240) = fiat_p384_scalar_addcarryx_u64(x238, x205, x227); let mut x241: u64 = 0; let mut x242: fiat_p384_scalar_u1 = 0; let (x241, x242) = fiat_p384_scalar_addcarryx_u64(x240, x207, x229); let mut x243: u64 = 0; let mut x244: fiat_p384_scalar_u1 = 0; let (x243, x244) = fiat_p384_scalar_addcarryx_u64(x242, x209, x231); let mut x245: u64 = 0; let mut x246: u64 = 0; let (x245, x246) = fiat_p384_scalar_mulx_u64(x233, 0x6ed46089e88fdc45); let mut x247: u64 = 0; let mut x248: u64 = 0; let (x247, x248) = fiat_p384_scalar_mulx_u64(x245, 0xffffffffffffffff); let mut x249: u64 = 0; let mut x250: u64 = 0; let (x249, x250) = fiat_p384_scalar_mulx_u64(x245, 0xffffffffffffffff); let mut x251: u64 = 0; let mut x252: u64 = 0; let (x251, x252) = fiat_p384_scalar_mulx_u64(x245, 0xffffffffffffffff); let mut x253: u64 = 0; let mut x254: u64 = 0; let (x253, x254) = fiat_p384_scalar_mulx_u64(x245, 0xc7634d81f4372ddf); let mut x255: u64 = 0; let mut x256: u64 = 0; let (x255, x256) = fiat_p384_scalar_mulx_u64(x245, 0x581a0db248b0a77a); let mut x257: u64 = 0; let mut x258: u64 = 0; let (x257, x258) = fiat_p384_scalar_mulx_u64(x245, 0xecec196accc52973); let mut x259: u64 = 0; let mut x260: fiat_p384_scalar_u1 = 0; let (x259, x260) = fiat_p384_scalar_addcarryx_u64(0x0, x258, x255); let mut x261: u64 = 0; let mut x262: fiat_p384_scalar_u1 = 0; let (x261, x262) = fiat_p384_scalar_addcarryx_u64(x260, x256, x253); let mut x263: u64 = 0; let mut x264: fiat_p384_scalar_u1 = 0; let (x263, x264) = fiat_p384_scalar_addcarryx_u64(x262, x254, x251); let mut x265: u64 = 0; let mut x266: fiat_p384_scalar_u1 = 0; let (x265, x266) = fiat_p384_scalar_addcarryx_u64(x264, x252, x249); let mut x267: u64 = 0; let mut x268: fiat_p384_scalar_u1 = 0; let (x267, x268) = fiat_p384_scalar_addcarryx_u64(x266, x250, x247); let mut x269: u64 = 0; let mut x270: fiat_p384_scalar_u1 = 0; let (x269, x270) = fiat_p384_scalar_addcarryx_u64(0x0, x233, x257); let mut x271: u64 = 0; let mut x272: fiat_p384_scalar_u1 = 0; let (x271, x272) = fiat_p384_scalar_addcarryx_u64(x270, x235, x259); let mut x273: u64 = 0; let mut x274: fiat_p384_scalar_u1 = 0; let (x273, x274) = fiat_p384_scalar_addcarryx_u64(x272, x237, x261); let mut x275: u64 = 0; let mut x276: fiat_p384_scalar_u1 = 0; let (x275, x276) = fiat_p384_scalar_addcarryx_u64(x274, x239, x263); let mut x277: u64 = 0; let mut x278: fiat_p384_scalar_u1 = 0; let (x277, x278) = fiat_p384_scalar_addcarryx_u64(x276, x241, x265); let mut x279: u64 = 0; let mut x280: fiat_p384_scalar_u1 = 0; let (x279, x280) = fiat_p384_scalar_addcarryx_u64(x278, x243, x267); let mut x281: u64 = 0; let mut x282: fiat_p384_scalar_u1 = 0; let (x281, x282) = fiat_p384_scalar_addcarryx_u64( x280, (((x244 as u64) + (x210 as u64)) + ((x232 as u64) + x212)), ((x268 as u64) + x248), ); let mut x283: u64 = 0; let mut x284: u64 = 0; let (x283, x284) = fiat_p384_scalar_mulx_u64(x4, 0xc84ee012b39bf21); let mut x285: u64 = 0; let mut x286: u64 = 0; let (x285, x286) = fiat_p384_scalar_mulx_u64(x4, 0x3fb05b7a28266895); let mut x287: u64 = 0; let mut x288: u64 = 0; let (x287, x288) = fiat_p384_scalar_mulx_u64(x4, 0xd40d49174aab1cc5); let mut x289: u64 = 0; let mut x290: u64 = 0; let (x289, x290) = fiat_p384_scalar_mulx_u64(x4, 0xbc3e483afcb82947); let mut x291: u64 = 0; let mut x292: u64 = 0; let (x291, x292) = fiat_p384_scalar_mulx_u64(x4, 0xff3d81e5df1aa419); let mut x293: u64 = 0; let mut x294: u64 = 0; let (x293, x294) = fiat_p384_scalar_mulx_u64(x4, 0x2d319b2419b409a9); let mut x295: u64 = 0; let mut x296: fiat_p384_scalar_u1 = 0; let (x295, x296) = fiat_p384_scalar_addcarryx_u64(0x0, x294, x291); let mut x297: u64 = 0; let mut x298: fiat_p384_scalar_u1 = 0; let (x297, x298) = fiat_p384_scalar_addcarryx_u64(x296, x292, x289); let mut x299: u64 = 0; let mut x300: fiat_p384_scalar_u1 = 0; let (x299, x300) = fiat_p384_scalar_addcarryx_u64(x298, x290, x287); let mut x301: u64 = 0; let mut x302: fiat_p384_scalar_u1 = 0; let (x301, x302) = fiat_p384_scalar_addcarryx_u64(x300, x288, x285); let mut x303: u64 = 0; let mut x304: fiat_p384_scalar_u1 = 0; let (x303, x304) = fiat_p384_scalar_addcarryx_u64(x302, x286, x283); let mut x305: u64 = 0; let mut x306: fiat_p384_scalar_u1 = 0; let (x305, x306) = fiat_p384_scalar_addcarryx_u64(0x0, x271, x293); let mut x307: u64 = 0; let mut x308: fiat_p384_scalar_u1 = 0; let (x307, x308) = fiat_p384_scalar_addcarryx_u64(x306, x273, x295); let mut x309: u64 = 0; let mut x310: fiat_p384_scalar_u1 = 0; let (x309, x310) = fiat_p384_scalar_addcarryx_u64(x308, x275, x297); let mut x311: u64 = 0; let mut x312: fiat_p384_scalar_u1 = 0; let (x311, x312) = fiat_p384_scalar_addcarryx_u64(x310, x277, x299); let mut x313: u64 = 0; let mut x314: fiat_p384_scalar_u1 = 0; let (x313, x314) = fiat_p384_scalar_addcarryx_u64(x312, x279, x301); let mut x315: u64 = 0; let mut x316: fiat_p384_scalar_u1 = 0; let (x315, x316) = fiat_p384_scalar_addcarryx_u64(x314, x281, x303); let mut x317: u64 = 0; let mut x318: u64 = 0; let (x317, x318) = fiat_p384_scalar_mulx_u64(x305, 0x6ed46089e88fdc45); let mut x319: u64 = 0; let mut x320: u64 = 0; let (x319, x320) = fiat_p384_scalar_mulx_u64(x317, 0xffffffffffffffff); let mut x321: u64 = 0; let mut x322: u64 = 0; let (x321, x322) = fiat_p384_scalar_mulx_u64(x317, 0xffffffffffffffff); let mut x323: u64 = 0; let mut x324: u64 = 0; let (x323, x324) = fiat_p384_scalar_mulx_u64(x317, 0xffffffffffffffff); let mut x325: u64 = 0; let mut x326: u64 = 0; let (x325, x326) = fiat_p384_scalar_mulx_u64(x317, 0xc7634d81f4372ddf); let mut x327: u64 = 0; let mut x328: u64 = 0; let (x327, x328) = fiat_p384_scalar_mulx_u64(x317, 0x581a0db248b0a77a); let mut x329: u64 = 0; let mut x330: u64 = 0; let (x329, x330) = fiat_p384_scalar_mulx_u64(x317, 0xecec196accc52973); let mut x331: u64 = 0; let mut x332: fiat_p384_scalar_u1 = 0; let (x331, x332) = fiat_p384_scalar_addcarryx_u64(0x0, x330, x327); let mut x333: u64 = 0; let mut x334: fiat_p384_scalar_u1 = 0; let (x333, x334) = fiat_p384_scalar_addcarryx_u64(x332, x328, x325); let mut x335: u64 = 0; let mut x336: fiat_p384_scalar_u1 = 0; let (x335, x336) = fiat_p384_scalar_addcarryx_u64(x334, x326, x323); let mut x337: u64 = 0; let mut x338: fiat_p384_scalar_u1 = 0; let (x337, x338) = fiat_p384_scalar_addcarryx_u64(x336, x324, x321); let mut x339: u64 = 0; let mut x340: fiat_p384_scalar_u1 = 0; let (x339, x340) = fiat_p384_scalar_addcarryx_u64(x338, x322, x319); let mut x341: u64 = 0; let mut x342: fiat_p384_scalar_u1 = 0; let (x341, x342) = fiat_p384_scalar_addcarryx_u64(0x0, x305, x329); let mut x343: u64 = 0; let mut x344: fiat_p384_scalar_u1 = 0; let (x343, x344) = fiat_p384_scalar_addcarryx_u64(x342, x307, x331); let mut x345: u64 = 0; let mut x346: fiat_p384_scalar_u1 = 0; let (x345, x346) = fiat_p384_scalar_addcarryx_u64(x344, x309, x333); let mut x347: u64 = 0; let mut x348: fiat_p384_scalar_u1 = 0; let (x347, x348) = fiat_p384_scalar_addcarryx_u64(x346, x311, x335); let mut x349: u64 = 0; let mut x350: fiat_p384_scalar_u1 = 0; let (x349, x350) = fiat_p384_scalar_addcarryx_u64(x348, x313, x337); let mut x351: u64 = 0; let mut x352: fiat_p384_scalar_u1 = 0; let (x351, x352) = fiat_p384_scalar_addcarryx_u64(x350, x315, x339); let mut x353: u64 = 0; let mut x354: fiat_p384_scalar_u1 = 0; let (x353, x354) = fiat_p384_scalar_addcarryx_u64( x352, (((x316 as u64) + (x282 as u64)) + ((x304 as u64) + x284)), ((x340 as u64) + x320), ); let mut x355: u64 = 0; let mut x356: u64 = 0; let (x355, x356) = fiat_p384_scalar_mulx_u64(x5, 0xc84ee012b39bf21); let mut x357: u64 = 0; let mut x358: u64 = 0; let (x357, x358) = fiat_p384_scalar_mulx_u64(x5, 0x3fb05b7a28266895); let mut x359: u64 = 0; let mut x360: u64 = 0; let (x359, x360) = fiat_p384_scalar_mulx_u64(x5, 0xd40d49174aab1cc5); let mut x361: u64 = 0; let mut x362: u64 = 0; let (x361, x362) = fiat_p384_scalar_mulx_u64(x5, 0xbc3e483afcb82947); let mut x363: u64 = 0; let mut x364: u64 = 0; let (x363, x364) = fiat_p384_scalar_mulx_u64(x5, 0xff3d81e5df1aa419); let mut x365: u64 = 0; let mut x366: u64 = 0; let (x365, x366) = fiat_p384_scalar_mulx_u64(x5, 0x2d319b2419b409a9); let mut x367: u64 = 0; let mut x368: fiat_p384_scalar_u1 = 0; let (x367, x368) = fiat_p384_scalar_addcarryx_u64(0x0, x366, x363); let mut x369: u64 = 0; let mut x370: fiat_p384_scalar_u1 = 0; let (x369, x370) = fiat_p384_scalar_addcarryx_u64(x368, x364, x361); let mut x371: u64 = 0; let mut x372: fiat_p384_scalar_u1 = 0; let (x371, x372) = fiat_p384_scalar_addcarryx_u64(x370, x362, x359); let mut x373: u64 = 0; let mut x374: fiat_p384_scalar_u1 = 0; let (x373, x374) = fiat_p384_scalar_addcarryx_u64(x372, x360, x357); let mut x375: u64 = 0; let mut x376: fiat_p384_scalar_u1 = 0; let (x375, x376) = fiat_p384_scalar_addcarryx_u64(x374, x358, x355); let mut x377: u64 = 0; let mut x378: fiat_p384_scalar_u1 = 0; let (x377, x378) = fiat_p384_scalar_addcarryx_u64(0x0, x343, x365); let mut x379: u64 = 0; let mut x380: fiat_p384_scalar_u1 = 0; let (x379, x380) = fiat_p384_scalar_addcarryx_u64(x378, x345, x367); let mut x381: u64 = 0; let mut x382: fiat_p384_scalar_u1 = 0; let (x381, x382) = fiat_p384_scalar_addcarryx_u64(x380, x347, x369); let mut x383: u64 = 0; let mut x384: fiat_p384_scalar_u1 = 0; let (x383, x384) = fiat_p384_scalar_addcarryx_u64(x382, x349, x371); let mut x385: u64 = 0; let mut x386: fiat_p384_scalar_u1 = 0; let (x385, x386) = fiat_p384_scalar_addcarryx_u64(x384, x351, x373); let mut x387: u64 = 0; let mut x388: fiat_p384_scalar_u1 = 0; let (x387, x388) = fiat_p384_scalar_addcarryx_u64(x386, x353, x375); let mut x389: u64 = 0; let mut x390: u64 = 0; let (x389, x390) = fiat_p384_scalar_mulx_u64(x377, 0x6ed46089e88fdc45); let mut x391: u64 = 0; let mut x392: u64 = 0; let (x391, x392) = fiat_p384_scalar_mulx_u64(x389, 0xffffffffffffffff); let mut x393: u64 = 0; let mut x394: u64 = 0; let (x393, x394) = fiat_p384_scalar_mulx_u64(x389, 0xffffffffffffffff); let mut x395: u64 = 0; let mut x396: u64 = 0; let (x395, x396) = fiat_p384_scalar_mulx_u64(x389, 0xffffffffffffffff); let mut x397: u64 = 0; let mut x398: u64 = 0; let (x397, x398) = fiat_p384_scalar_mulx_u64(x389, 0xc7634d81f4372ddf); let mut x399: u64 = 0; let mut x400: u64 = 0; let (x399, x400) = fiat_p384_scalar_mulx_u64(x389, 0x581a0db248b0a77a); let mut x401: u64 = 0; let mut x402: u64 = 0; let (x401, x402) = fiat_p384_scalar_mulx_u64(x389, 0xecec196accc52973); let mut x403: u64 = 0; let mut x404: fiat_p384_scalar_u1 = 0; let (x403, x404) = fiat_p384_scalar_addcarryx_u64(0x0, x402, x399); let mut x405: u64 = 0; let mut x406: fiat_p384_scalar_u1 = 0; let (x405, x406) = fiat_p384_scalar_addcarryx_u64(x404, x400, x397); let mut x407: u64 = 0; let mut x408: fiat_p384_scalar_u1 = 0; let (x407, x408) = fiat_p384_scalar_addcarryx_u64(x406, x398, x395); let mut x409: u64 = 0; let mut x410: fiat_p384_scalar_u1 = 0; let (x409, x410) = fiat_p384_scalar_addcarryx_u64(x408, x396, x393); let mut x411: u64 = 0; let mut x412: fiat_p384_scalar_u1 = 0; let (x411, x412) = fiat_p384_scalar_addcarryx_u64(x410, x394, x391); let mut x413: u64 = 0; let mut x414: fiat_p384_scalar_u1 = 0; let (x413, x414) = fiat_p384_scalar_addcarryx_u64(0x0, x377, x401); let mut x415: u64 = 0; let mut x416: fiat_p384_scalar_u1 = 0; let (x415, x416) = fiat_p384_scalar_addcarryx_u64(x414, x379, x403); let mut x417: u64 = 0; let mut x418: fiat_p384_scalar_u1 = 0; let (x417, x418) = fiat_p384_scalar_addcarryx_u64(x416, x381, x405); let mut x419: u64 = 0; let mut x420: fiat_p384_scalar_u1 = 0; let (x419, x420) = fiat_p384_scalar_addcarryx_u64(x418, x383, x407); let mut x421: u64 = 0; let mut x422: fiat_p384_scalar_u1 = 0; let (x421, x422) = fiat_p384_scalar_addcarryx_u64(x420, x385, x409); let mut x423: u64 = 0; let mut x424: fiat_p384_scalar_u1 = 0; let (x423, x424) = fiat_p384_scalar_addcarryx_u64(x422, x387, x411); let mut x425: u64 = 0; let mut x426: fiat_p384_scalar_u1 = 0; let (x425, x426) = fiat_p384_scalar_addcarryx_u64( x424, (((x388 as u64) + (x354 as u64)) + ((x376 as u64) + x356)), ((x412 as u64) + x392), ); let mut x427: u64 = 0; let mut x428: fiat_p384_scalar_u1 = 0; let (x427, x428) = fiat_p384_scalar_subborrowx_u64(0x0, x415, 0xecec196accc52973); let mut x429: u64 = 0; let mut x430: fiat_p384_scalar_u1 = 0; let (x429, x430) = fiat_p384_scalar_subborrowx_u64(x428, x417, 0x581a0db248b0a77a); let mut x431: u64 = 0; let mut x432: fiat_p384_scalar_u1 = 0; let (x431, x432) = fiat_p384_scalar_subborrowx_u64(x430, x419, 0xc7634d81f4372ddf); let mut x433: u64 = 0; let mut x434: fiat_p384_scalar_u1 = 0; let (x433, x434) = fiat_p384_scalar_subborrowx_u64(x432, x421, 0xffffffffffffffff); let mut x435: u64 = 0; let mut x436: fiat_p384_scalar_u1 = 0; let (x435, x436) = fiat_p384_scalar_subborrowx_u64(x434, x423, 0xffffffffffffffff); let mut x437: u64 = 0; let mut x438: fiat_p384_scalar_u1 = 0; let (x437, x438) = fiat_p384_scalar_subborrowx_u64(x436, x425, 0xffffffffffffffff); let mut x439: u64 = 0; let mut x440: fiat_p384_scalar_u1 = 0; let (x439, x440) = fiat_p384_scalar_subborrowx_u64(x438, (x426 as u64), 0x0_u64); let mut x441: u64 = 0; let (x441) = fiat_p384_scalar_cmovznz_u64(x440, x427, x415); let mut x442: u64 = 0; let (x442) = fiat_p384_scalar_cmovznz_u64(x440, x429, x417); let mut x443: u64 = 0; let (x443) = fiat_p384_scalar_cmovznz_u64(x440, x431, x419); let mut x444: u64 = 0; let (x444) = fiat_p384_scalar_cmovznz_u64(x440, x433, x421); let mut x445: u64 = 0; let (x445) = fiat_p384_scalar_cmovznz_u64(x440, x435, x423); let mut x446: u64 = 0; let (x446) = fiat_p384_scalar_cmovznz_u64(x440, x437, x425); out1[0] = x441; out1[1] = x442; out1[2] = x443; out1[3] = x444; out1[4] = x445; out1[5] = x446; out1 } #[doc = " The function fiat_p384_scalar_selectznz is a multi-limb conditional select."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " out1 = (if arg1 = 0 then arg2 else arg3)"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0x1]"] #[doc = " arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] arg3: [[0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_scalar_selectznz( arg1: fiat_p384_scalar_u1, arg2: &[u64; 6], arg3: &[u64; 6], ) -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; let mut x1: u64 = 0; let (x1) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[0]), (arg3[0])); let mut x2: u64 = 0; let (x2) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[1]), (arg3[1])); let mut x3: u64 = 0; let (x3) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[2]), (arg3[2])); let mut x4: u64 = 0; let (x4) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[3]), (arg3[3])); let mut x5: u64 = 0; let (x5) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[4]), (arg3[4])); let mut x6: u64 = 0; let (x6) = fiat_p384_scalar_cmovznz_u64(arg1, (arg2[5]), (arg3[5])); out1[0] = x1; out1[1] = x2; out1[2] = x3; out1[3] = x4; out1[4] = x5; out1[5] = x6; out1 } #[doc = " The function fiat_p384_scalar_to_bytes serializes a field element NOT in the"] #[doc = " Montgomery domain to bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋)"] #[doc = " [0..47]"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]]"] #[inline] pub const fn fiat_p384_scalar_to_bytes(arg1: &[u64; 6]) -> [u8; 48] { let mut out1: [u8; 48] = [0; 48]; let x1: u64 = (arg1[5]); let x2: u64 = (arg1[4]); let x3: u64 = (arg1[3]); let x4: u64 = (arg1[2]); let x5: u64 = (arg1[1]); let x6: u64 = (arg1[0]); let x7: u8 = ((x6 & 0xff_u64) as u8); let x8: u64 = (x6 >> 8); let x9: u8 = ((x8 & 0xff_u64) as u8); let x10: u64 = (x8 >> 8); let x11: u8 = ((x10 & 0xff_u64) as u8); let x12: u64 = (x10 >> 8); let x13: u8 = ((x12 & 0xff_u64) as u8); let x14: u64 = (x12 >> 8); let x15: u8 = ((x14 & 0xff_u64) as u8); let x16: u64 = (x14 >> 8); let x17: u8 = ((x16 & 0xff_u64) as u8); let x18: u64 = (x16 >> 8); let x19: u8 = ((x18 & 0xff_u64) as u8); let x20: u8 = ((x18 >> 8) as u8); let x21: u8 = ((x5 & 0xff_u64) as u8); let x22: u64 = (x5 >> 8); let x23: u8 = ((x22 & 0xff_u64) as u8); let x24: u64 = (x22 >> 8); let x25: u8 = ((x24 & 0xff_u64) as u8); let x26: u64 = (x24 >> 8); let x27: u8 = ((x26 & 0xff_u64) as u8); let x28: u64 = (x26 >> 8); let x29: u8 = ((x28 & 0xff_u64) as u8); let x30: u64 = (x28 >> 8); let x31: u8 = ((x30 & 0xff_u64) as u8); let x32: u64 = (x30 >> 8); let x33: u8 = ((x32 & 0xff_u64) as u8); let x34: u8 = ((x32 >> 8) as u8); let x35: u8 = ((x4 & 0xff_u64) as u8); let x36: u64 = (x4 >> 8); let x37: u8 = ((x36 & 0xff_u64) as u8); let x38: u64 = (x36 >> 8); let x39: u8 = ((x38 & 0xff_u64) as u8); let x40: u64 = (x38 >> 8); let x41: u8 = ((x40 & 0xff_u64) as u8); let x42: u64 = (x40 >> 8); let x43: u8 = ((x42 & 0xff_u64) as u8); let x44: u64 = (x42 >> 8); let x45: u8 = ((x44 & 0xff_u64) as u8); let x46: u64 = (x44 >> 8); let x47: u8 = ((x46 & 0xff_u64) as u8); let x48: u8 = ((x46 >> 8) as u8); let x49: u8 = ((x3 & 0xff_u64) as u8); let x50: u64 = (x3 >> 8); let x51: u8 = ((x50 & 0xff_u64) as u8); let x52: u64 = (x50 >> 8); let x53: u8 = ((x52 & 0xff_u64) as u8); let x54: u64 = (x52 >> 8); let x55: u8 = ((x54 & 0xff_u64) as u8); let x56: u64 = (x54 >> 8); let x57: u8 = ((x56 & 0xff_u64) as u8); let x58: u64 = (x56 >> 8); let x59: u8 = ((x58 & 0xff_u64) as u8); let x60: u64 = (x58 >> 8); let x61: u8 = ((x60 & 0xff_u64) as u8); let x62: u8 = ((x60 >> 8) as u8); let x63: u8 = ((x2 & 0xff_u64) as u8); let x64: u64 = (x2 >> 8); let x65: u8 = ((x64 & 0xff_u64) as u8); let x66: u64 = (x64 >> 8); let x67: u8 = ((x66 & 0xff_u64) as u8); let x68: u64 = (x66 >> 8); let x69: u8 = ((x68 & 0xff_u64) as u8); let x70: u64 = (x68 >> 8); let x71: u8 = ((x70 & 0xff_u64) as u8); let x72: u64 = (x70 >> 8); let x73: u8 = ((x72 & 0xff_u64) as u8); let x74: u64 = (x72 >> 8); let x75: u8 = ((x74 & 0xff_u64) as u8); let x76: u8 = ((x74 >> 8) as u8); let x77: u8 = ((x1 & 0xff_u64) as u8); let x78: u64 = (x1 >> 8); let x79: u8 = ((x78 & 0xff_u64) as u8); let x80: u64 = (x78 >> 8); let x81: u8 = ((x80 & 0xff_u64) as u8); let x82: u64 = (x80 >> 8); let x83: u8 = ((x82 & 0xff_u64) as u8); let x84: u64 = (x82 >> 8); let x85: u8 = ((x84 & 0xff_u64) as u8); let x86: u64 = (x84 >> 8); let x87: u8 = ((x86 & 0xff_u64) as u8); let x88: u64 = (x86 >> 8); let x89: u8 = ((x88 & 0xff_u64) as u8); let x90: u8 = ((x88 >> 8) as u8); out1[0] = x7; out1[1] = x9; out1[2] = x11; out1[3] = x13; out1[4] = x15; out1[5] = x17; out1[6] = x19; out1[7] = x20; out1[8] = x21; out1[9] = x23; out1[10] = x25; out1[11] = x27; out1[12] = x29; out1[13] = x31; out1[14] = x33; out1[15] = x34; out1[16] = x35; out1[17] = x37; out1[18] = x39; out1[19] = x41; out1[20] = x43; out1[21] = x45; out1[22] = x47; out1[23] = x48; out1[24] = x49; out1[25] = x51; out1[26] = x53; out1[27] = x55; out1[28] = x57; out1[29] = x59; out1[30] = x61; out1[31] = x62; out1[32] = x63; out1[33] = x65; out1[34] = x67; out1[35] = x69; out1[36] = x71; out1[37] = x73; out1[38] = x75; out1[39] = x76; out1[40] = x77; out1[41] = x79; out1[42] = x81; out1[43] = x83; out1[44] = x85; out1[45] = x87; out1[46] = x89; out1[47] = x90; out1 } #[doc = " The function fiat_p384_scalar_from_bytes deserializes a field element NOT in"] #[doc = " the Montgomery domain from bytes in little-endian order."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ bytes_eval arg1 < m"] #[doc = " Postconditions:"] #[doc = " eval out1 mod m = bytes_eval arg1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [[0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~>"] #[doc = " 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff], [0x0 ~> 0xff]] Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_scalar_from_bytes(arg1: &[u8; 48]) -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; let x1: u64 = (((arg1[47]) as u64) << 56); let x2: u64 = (((arg1[46]) as u64) << 48); let x3: u64 = (((arg1[45]) as u64) << 40); let x4: u64 = (((arg1[44]) as u64) << 32); let x5: u64 = (((arg1[43]) as u64) << 24); let x6: u64 = (((arg1[42]) as u64) << 16); let x7: u64 = (((arg1[41]) as u64) << 8); let x8: u8 = (arg1[40]); let x9: u64 = (((arg1[39]) as u64) << 56); let x10: u64 = (((arg1[38]) as u64) << 48); let x11: u64 = (((arg1[37]) as u64) << 40); let x12: u64 = (((arg1[36]) as u64) << 32); let x13: u64 = (((arg1[35]) as u64) << 24); let x14: u64 = (((arg1[34]) as u64) << 16); let x15: u64 = (((arg1[33]) as u64) << 8); let x16: u8 = (arg1[32]); let x17: u64 = (((arg1[31]) as u64) << 56); let x18: u64 = (((arg1[30]) as u64) << 48); let x19: u64 = (((arg1[29]) as u64) << 40); let x20: u64 = (((arg1[28]) as u64) << 32); let x21: u64 = (((arg1[27]) as u64) << 24); let x22: u64 = (((arg1[26]) as u64) << 16); let x23: u64 = (((arg1[25]) as u64) << 8); let x24: u8 = (arg1[24]); let x25: u64 = (((arg1[23]) as u64) << 56); let x26: u64 = (((arg1[22]) as u64) << 48); let x27: u64 = (((arg1[21]) as u64) << 40); let x28: u64 = (((arg1[20]) as u64) << 32); let x29: u64 = (((arg1[19]) as u64) << 24); let x30: u64 = (((arg1[18]) as u64) << 16); let x31: u64 = (((arg1[17]) as u64) << 8); let x32: u8 = (arg1[16]); let x33: u64 = (((arg1[15]) as u64) << 56); let x34: u64 = (((arg1[14]) as u64) << 48); let x35: u64 = (((arg1[13]) as u64) << 40); let x36: u64 = (((arg1[12]) as u64) << 32); let x37: u64 = (((arg1[11]) as u64) << 24); let x38: u64 = (((arg1[10]) as u64) << 16); let x39: u64 = (((arg1[9]) as u64) << 8); let x40: u8 = (arg1[8]); let x41: u64 = (((arg1[7]) as u64) << 56); let x42: u64 = (((arg1[6]) as u64) << 48); let x43: u64 = (((arg1[5]) as u64) << 40); let x44: u64 = (((arg1[4]) as u64) << 32); let x45: u64 = (((arg1[3]) as u64) << 24); let x46: u64 = (((arg1[2]) as u64) << 16); let x47: u64 = (((arg1[1]) as u64) << 8); let x48: u8 = (arg1[0]); let x49: u64 = (x47 + (x48 as u64)); let x50: u64 = (x46 + x49); let x51: u64 = (x45 + x50); let x52: u64 = (x44 + x51); let x53: u64 = (x43 + x52); let x54: u64 = (x42 + x53); let x55: u64 = (x41 + x54); let x56: u64 = (x39 + (x40 as u64)); let x57: u64 = (x38 + x56); let x58: u64 = (x37 + x57); let x59: u64 = (x36 + x58); let x60: u64 = (x35 + x59); let x61: u64 = (x34 + x60); let x62: u64 = (x33 + x61); let x63: u64 = (x31 + (x32 as u64)); let x64: u64 = (x30 + x63); let x65: u64 = (x29 + x64); let x66: u64 = (x28 + x65); let x67: u64 = (x27 + x66); let x68: u64 = (x26 + x67); let x69: u64 = (x25 + x68); let x70: u64 = (x23 + (x24 as u64)); let x71: u64 = (x22 + x70); let x72: u64 = (x21 + x71); let x73: u64 = (x20 + x72); let x74: u64 = (x19 + x73); let x75: u64 = (x18 + x74); let x76: u64 = (x17 + x75); let x77: u64 = (x15 + (x16 as u64)); let x78: u64 = (x14 + x77); let x79: u64 = (x13 + x78); let x80: u64 = (x12 + x79); let x81: u64 = (x11 + x80); let x82: u64 = (x10 + x81); let x83: u64 = (x9 + x82); let x84: u64 = (x7 + (x8 as u64)); let x85: u64 = (x6 + x84); let x86: u64 = (x5 + x85); let x87: u64 = (x4 + x86); let x88: u64 = (x3 + x87); let x89: u64 = (x2 + x88); let x90: u64 = (x1 + x89); out1[0] = x55; out1[1] = x62; out1[2] = x69; out1[3] = x76; out1[4] = x83; out1[5] = x90; out1 } #[doc = " The function fiat_p384_scalar_set_one returns the field element one in the"] #[doc = " Montgomery domain."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) mod m = 1 mod m"] #[doc = " 0 ≤ eval out1 < m"] #[inline] pub const fn fiat_p384_scalar_set_one() -> fiat_p384_scalar_montgomery_domain_field_element { let mut out1: fiat_p384_scalar_montgomery_domain_field_element = [0; 6]; out1[0] = 0x1313e695333ad68d; out1[1] = 0xa7e5f24db74f5885; out1[2] = 0x389cb27e0bc8d220; out1[3] = 0x0_u64; out1[4] = 0x0_u64; out1[5] = 0x0_u64; out1 } #[doc = " The function fiat_p384_scalar_msat returns the saturated representation of"] #[doc = " the prime modulus."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " twos_complement_eval out1 = m"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_scalar_msat() -> [u64; 7] { let mut out1: [u64; 7] = [0; 7]; out1[0] = 0xecec196accc52973; out1[1] = 0x581a0db248b0a77a; out1[2] = 0xc7634d81f4372ddf; out1[3] = 0xffffffffffffffff; out1[4] = 0xffffffffffffffff; out1[5] = 0xffffffffffffffff; out1[6] = 0x0_u64; out1 } #[doc = " The function fiat_p384_scalar_divstep_precomp returns the precomputed value"] #[doc = " for Bernstein-Yang-inversion (in montgomery form)."] #[doc = ""] #[doc = " Postconditions:"] #[doc = " eval (from_montgomery out1) = ⌊(m - 1) / 2⌋^(if ⌊log2 m⌋ + 1 < 46 then"] #[doc = " ⌊(49 * (⌊log2 m⌋ + 1) + 80) / 17⌋ else ⌊(49 * (⌊log2 m⌋ + 1) + 57) / 17⌋)"] #[doc = " 0 ≤ eval out1 < m"] #[doc = ""] #[doc = " Output Bounds:"] #[doc = " out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_scalar_divstep_precomp() -> [u64; 6] { let mut out1: [u64; 6] = [0; 6]; out1[0] = 0x49589ae0e6045b6a; out1[1] = 0x3c9a5352870040ed; out1[2] = 0xdacb097e977dc242; out1[3] = 0xb5ab30a6d1ecbe36; out1[4] = 0x97d7a1081f959973; out1[5] = 0x2ba012f8d27192bc; out1 } #[doc = " The function fiat_p384_scalar_divstep computes a divstep."] #[doc = ""] #[doc = " Preconditions:"] #[doc = " 0 ≤ eval arg4 < m"] #[doc = " 0 ≤ eval arg5 < m"] #[doc = " Postconditions:"] #[doc = " out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1"] #[doc = " else 1 + arg1) twos_complement_eval out2 = (if 0 < arg1 ∧"] #[doc = " (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else"] #[doc = " twos_complement_eval arg2) twos_complement_eval out3 = (if 0 < arg1 ∧"] #[doc = " (twos_complement_eval arg3) is odd then ⌊(twos_complement_eval arg3 -"] #[doc = " twos_complement_eval arg2) / 2⌋ else ⌊(twos_complement_eval arg3 +"] #[doc = " (twos_complement_eval arg3 mod 2) * twos_complement_eval arg2) / 2⌋)"] #[doc = " eval (from_montgomery out4) mod m = (if 0 < arg1 ∧ (twos_complement_eval"] #[doc = " arg3) is odd then (2 * eval (from_montgomery arg5)) mod m else (2 * eval"] #[doc = " (from_montgomery arg4)) mod m) eval (from_montgomery out5) mod m = (if 0 <"] #[doc = " arg1 ∧ (twos_complement_eval arg3) is odd then (eval (from_montgomery arg4)"] #[doc = " - eval (from_montgomery arg4)) mod m else (eval (from_montgomery arg5) +"] #[doc = " (twos_complement_eval arg3 mod 2) * eval (from_montgomery arg4)) mod m)"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out5 < m"] #[doc = " 0 ≤ eval out2 < m"] #[doc = " 0 ≤ eval out3 < m"] #[doc = ""] #[doc = " Input Bounds:"] #[doc = " arg1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff]] arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] arg4: [[0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] arg5: [[0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] Output Bounds:"] #[doc = " out1: [0x0 ~> 0xffffffffffffffff]"] #[doc = " out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff]] out3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] out4: [[0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] out5: [[0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~>"] #[doc = " 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]"] #[inline] pub const fn fiat_p384_scalar_divstep( arg1: u64, arg2: &[u64; 7], arg3: &[u64; 7], arg4: &[u64; 6], arg5: &[u64; 6], ) -> (u64, [u64; 7], [u64; 7], [u64; 6], [u64; 6]) { let mut out1: u64 = 0; let mut out2: [u64; 7] = [0; 7]; let mut out3: [u64; 7] = [0; 7]; let mut out4: [u64; 6] = [0; 6]; let mut out5: [u64; 6] = [0; 6]; let mut x1: u64 = 0; let mut x2: fiat_p384_scalar_u1 = 0; let (x1, x2) = fiat_p384_scalar_addcarryx_u64(0x0, (!arg1), 0x1_u64); let x3: fiat_p384_scalar_u1 = (((x1 >> 63) as fiat_p384_scalar_u1) & (((arg3[0]) & 0x1_u64) as fiat_p384_scalar_u1)); let mut x4: u64 = 0; let mut x5: fiat_p384_scalar_u1 = 0; let (x4, x5) = fiat_p384_scalar_addcarryx_u64(0x0, (!arg1), 0x1_u64); let mut x6: u64 = 0; let (x6) = fiat_p384_scalar_cmovznz_u64(x3, arg1, x4); let mut x7: u64 = 0; let (x7) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[0]), (arg3[0])); let mut x8: u64 = 0; let (x8) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[1]), (arg3[1])); let mut x9: u64 = 0; let (x9) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[2]), (arg3[2])); let mut x10: u64 = 0; let (x10) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[3]), (arg3[3])); let mut x11: u64 = 0; let (x11) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[4]), (arg3[4])); let mut x12: u64 = 0; let (x12) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[5]), (arg3[5])); let mut x13: u64 = 0; let (x13) = fiat_p384_scalar_cmovznz_u64(x3, (arg2[6]), (arg3[6])); let mut x14: u64 = 0; let mut x15: fiat_p384_scalar_u1 = 0; let (x14, x15) = fiat_p384_scalar_addcarryx_u64(0x0, 0x1_u64, (!(arg2[0]))); let mut x16: u64 = 0; let mut x17: fiat_p384_scalar_u1 = 0; let (x16, x17) = fiat_p384_scalar_addcarryx_u64(x15, 0x0_u64, (!(arg2[1]))); let mut x18: u64 = 0; let mut x19: fiat_p384_scalar_u1 = 0; let (x18, x19) = fiat_p384_scalar_addcarryx_u64(x17, 0x0_u64, (!(arg2[2]))); let mut x20: u64 = 0; let mut x21: fiat_p384_scalar_u1 = 0; let (x20, x21) = fiat_p384_scalar_addcarryx_u64(x19, 0x0_u64, (!(arg2[3]))); let mut x22: u64 = 0; let mut x23: fiat_p384_scalar_u1 = 0; let (x22, x23) = fiat_p384_scalar_addcarryx_u64(x21, 0x0_u64, (!(arg2[4]))); let mut x24: u64 = 0; let mut x25: fiat_p384_scalar_u1 = 0; let (x24, x25) = fiat_p384_scalar_addcarryx_u64(x23, 0x0_u64, (!(arg2[5]))); let mut x26: u64 = 0; let mut x27: fiat_p384_scalar_u1 = 0; let (x26, x27) = fiat_p384_scalar_addcarryx_u64(x25, 0x0_u64, (!(arg2[6]))); let mut x28: u64 = 0; let (x28) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[0]), x14); let mut x29: u64 = 0; let (x29) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[1]), x16); let mut x30: u64 = 0; let (x30) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[2]), x18); let mut x31: u64 = 0; let (x31) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[3]), x20); let mut x32: u64 = 0; let (x32) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[4]), x22); let mut x33: u64 = 0; let (x33) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[5]), x24); let mut x34: u64 = 0; let (x34) = fiat_p384_scalar_cmovznz_u64(x3, (arg3[6]), x26); let mut x35: u64 = 0; let (x35) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[0]), (arg5[0])); let mut x36: u64 = 0; let (x36) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[1]), (arg5[1])); let mut x37: u64 = 0; let (x37) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[2]), (arg5[2])); let mut x38: u64 = 0; let (x38) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[3]), (arg5[3])); let mut x39: u64 = 0; let (x39) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[4]), (arg5[4])); let mut x40: u64 = 0; let (x40) = fiat_p384_scalar_cmovznz_u64(x3, (arg4[5]), (arg5[5])); let mut x41: u64 = 0; let mut x42: fiat_p384_scalar_u1 = 0; let (x41, x42) = fiat_p384_scalar_addcarryx_u64(0x0, x35, x35); let mut x43: u64 = 0; let mut x44: fiat_p384_scalar_u1 = 0; let (x43, x44) = fiat_p384_scalar_addcarryx_u64(x42, x36, x36); let mut x45: u64 = 0; let mut x46: fiat_p384_scalar_u1 = 0; let (x45, x46) = fiat_p384_scalar_addcarryx_u64(x44, x37, x37); let mut x47: u64 = 0; let mut x48: fiat_p384_scalar_u1 = 0; let (x47, x48) = fiat_p384_scalar_addcarryx_u64(x46, x38, x38); let mut x49: u64 = 0; let mut x50: fiat_p384_scalar_u1 = 0; let (x49, x50) = fiat_p384_scalar_addcarryx_u64(x48, x39, x39); let mut x51: u64 = 0; let mut x52: fiat_p384_scalar_u1 = 0; let (x51, x52) = fiat_p384_scalar_addcarryx_u64(x50, x40, x40); let mut x53: u64 = 0; let mut x54: fiat_p384_scalar_u1 = 0; let (x53, x54) = fiat_p384_scalar_subborrowx_u64(0x0, x41, 0xecec196accc52973); let mut x55: u64 = 0; let mut x56: fiat_p384_scalar_u1 = 0; let (x55, x56) = fiat_p384_scalar_subborrowx_u64(x54, x43, 0x581a0db248b0a77a); let mut x57: u64 = 0; let mut x58: fiat_p384_scalar_u1 = 0; let (x57, x58) = fiat_p384_scalar_subborrowx_u64(x56, x45, 0xc7634d81f4372ddf); let mut x59: u64 = 0; let mut x60: fiat_p384_scalar_u1 = 0; let (x59, x60) = fiat_p384_scalar_subborrowx_u64(x58, x47, 0xffffffffffffffff); let mut x61: u64 = 0; let mut x62: fiat_p384_scalar_u1 = 0; let (x61, x62) = fiat_p384_scalar_subborrowx_u64(x60, x49, 0xffffffffffffffff); let mut x63: u64 = 0; let mut x64: fiat_p384_scalar_u1 = 0; let (x63, x64) = fiat_p384_scalar_subborrowx_u64(x62, x51, 0xffffffffffffffff); let mut x65: u64 = 0; let mut x66: fiat_p384_scalar_u1 = 0; let (x65, x66) = fiat_p384_scalar_subborrowx_u64(x64, (x52 as u64), 0x0_u64); let x67: u64 = (arg4[5]); let x68: u64 = (arg4[4]); let x69: u64 = (arg4[3]); let x70: u64 = (arg4[2]); let x71: u64 = (arg4[1]); let x72: u64 = (arg4[0]); let mut x73: u64 = 0; let mut x74: fiat_p384_scalar_u1 = 0; let (x73, x74) = fiat_p384_scalar_subborrowx_u64(0x0, 0x0_u64, x72); let mut x75: u64 = 0; let mut x76: fiat_p384_scalar_u1 = 0; let (x75, x76) = fiat_p384_scalar_subborrowx_u64(x74, 0x0_u64, x71); let mut x77: u64 = 0; let mut x78: fiat_p384_scalar_u1 = 0; let (x77, x78) = fiat_p384_scalar_subborrowx_u64(x76, 0x0_u64, x70); let mut x79: u64 = 0; let mut x80: fiat_p384_scalar_u1 = 0; let (x79, x80) = fiat_p384_scalar_subborrowx_u64(x78, 0x0_u64, x69); let mut x81: u64 = 0; let mut x82: fiat_p384_scalar_u1 = 0; let (x81, x82) = fiat_p384_scalar_subborrowx_u64(x80, 0x0_u64, x68); let mut x83: u64 = 0; let mut x84: fiat_p384_scalar_u1 = 0; let (x83, x84) = fiat_p384_scalar_subborrowx_u64(x82, 0x0_u64, x67); let mut x85: u64 = 0; let (x85) = fiat_p384_scalar_cmovznz_u64(x84, 0x0_u64, 0xffffffffffffffff); let mut x86: u64 = 0; let mut x87: fiat_p384_scalar_u1 = 0; let (x86, x87) = fiat_p384_scalar_addcarryx_u64(0x0, x73, (x85 & 0xecec196accc52973)); let mut x88: u64 = 0; let mut x89: fiat_p384_scalar_u1 = 0; let (x88, x89) = fiat_p384_scalar_addcarryx_u64(x87, x75, (x85 & 0x581a0db248b0a77a)); let mut x90: u64 = 0; let mut x91: fiat_p384_scalar_u1 = 0; let (x90, x91) = fiat_p384_scalar_addcarryx_u64(x89, x77, (x85 & 0xc7634d81f4372ddf)); let mut x92: u64 = 0; let mut x93: fiat_p384_scalar_u1 = 0; let (x92, x93) = fiat_p384_scalar_addcarryx_u64(x91, x79, x85); let mut x94: u64 = 0; let mut x95: fiat_p384_scalar_u1 = 0; let (x94, x95) = fiat_p384_scalar_addcarryx_u64(x93, x81, x85); let mut x96: u64 = 0; let mut x97: fiat_p384_scalar_u1 = 0; let (x96, x97) = fiat_p384_scalar_addcarryx_u64(x95, x83, x85); let mut x98: u64 = 0; let (x98) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[0]), x86); let mut x99: u64 = 0; let (x99) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[1]), x88); let mut x100: u64 = 0; let (x100) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[2]), x90); let mut x101: u64 = 0; let (x101) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[3]), x92); let mut x102: u64 = 0; let (x102) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[4]), x94); let mut x103: u64 = 0; let (x103) = fiat_p384_scalar_cmovznz_u64(x3, (arg5[5]), x96); let x104: fiat_p384_scalar_u1 = ((x28 & 0x1_u64) as fiat_p384_scalar_u1); let mut x105: u64 = 0; let (x105) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x7); let mut x106: u64 = 0; let (x106) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x8); let mut x107: u64 = 0; let (x107) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x9); let mut x108: u64 = 0; let (x108) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x10); let mut x109: u64 = 0; let (x109) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x11); let mut x110: u64 = 0; let (x110) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x12); let mut x111: u64 = 0; let (x111) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x13); let mut x112: u64 = 0; let mut x113: fiat_p384_scalar_u1 = 0; let (x112, x113) = fiat_p384_scalar_addcarryx_u64(0x0, x28, x105); let mut x114: u64 = 0; let mut x115: fiat_p384_scalar_u1 = 0; let (x114, x115) = fiat_p384_scalar_addcarryx_u64(x113, x29, x106); let mut x116: u64 = 0; let mut x117: fiat_p384_scalar_u1 = 0; let (x116, x117) = fiat_p384_scalar_addcarryx_u64(x115, x30, x107); let mut x118: u64 = 0; let mut x119: fiat_p384_scalar_u1 = 0; let (x118, x119) = fiat_p384_scalar_addcarryx_u64(x117, x31, x108); let mut x120: u64 = 0; let mut x121: fiat_p384_scalar_u1 = 0; let (x120, x121) = fiat_p384_scalar_addcarryx_u64(x119, x32, x109); let mut x122: u64 = 0; let mut x123: fiat_p384_scalar_u1 = 0; let (x122, x123) = fiat_p384_scalar_addcarryx_u64(x121, x33, x110); let mut x124: u64 = 0; let mut x125: fiat_p384_scalar_u1 = 0; let (x124, x125) = fiat_p384_scalar_addcarryx_u64(x123, x34, x111); let mut x126: u64 = 0; let (x126) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x35); let mut x127: u64 = 0; let (x127) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x36); let mut x128: u64 = 0; let (x128) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x37); let mut x129: u64 = 0; let (x129) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x38); let mut x130: u64 = 0; let (x130) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x39); let mut x131: u64 = 0; let (x131) = fiat_p384_scalar_cmovznz_u64(x104, 0x0_u64, x40); let mut x132: u64 = 0; let mut x133: fiat_p384_scalar_u1 = 0; let (x132, x133) = fiat_p384_scalar_addcarryx_u64(0x0, x98, x126); let mut x134: u64 = 0; let mut x135: fiat_p384_scalar_u1 = 0; let (x134, x135) = fiat_p384_scalar_addcarryx_u64(x133, x99, x127); let mut x136: u64 = 0; let mut x137: fiat_p384_scalar_u1 = 0; let (x136, x137) = fiat_p384_scalar_addcarryx_u64(x135, x100, x128); let mut x138: u64 = 0; let mut x139: fiat_p384_scalar_u1 = 0; let (x138, x139) = fiat_p384_scalar_addcarryx_u64(x137, x101, x129); let mut x140: u64 = 0; let mut x141: fiat_p384_scalar_u1 = 0; let (x140, x141) = fiat_p384_scalar_addcarryx_u64(x139, x102, x130); let mut x142: u64 = 0; let mut x143: fiat_p384_scalar_u1 = 0; let (x142, x143) = fiat_p384_scalar_addcarryx_u64(x141, x103, x131); let mut x144: u64 = 0; let mut x145: fiat_p384_scalar_u1 = 0; let (x144, x145) = fiat_p384_scalar_subborrowx_u64(0x0, x132, 0xecec196accc52973); let mut x146: u64 = 0; let mut x147: fiat_p384_scalar_u1 = 0; let (x146, x147) = fiat_p384_scalar_subborrowx_u64(x145, x134, 0x581a0db248b0a77a); let mut x148: u64 = 0; let mut x149: fiat_p384_scalar_u1 = 0; let (x148, x149) = fiat_p384_scalar_subborrowx_u64(x147, x136, 0xc7634d81f4372ddf); let mut x150: u64 = 0; let mut x151: fiat_p384_scalar_u1 = 0; let (x150, x151) = fiat_p384_scalar_subborrowx_u64(x149, x138, 0xffffffffffffffff); let mut x152: u64 = 0; let mut x153: fiat_p384_scalar_u1 = 0; let (x152, x153) = fiat_p384_scalar_subborrowx_u64(x151, x140, 0xffffffffffffffff); let mut x154: u64 = 0; let mut x155: fiat_p384_scalar_u1 = 0; let (x154, x155) = fiat_p384_scalar_subborrowx_u64(x153, x142, 0xffffffffffffffff); let mut x156: u64 = 0; let mut x157: fiat_p384_scalar_u1 = 0; let (x156, x157) = fiat_p384_scalar_subborrowx_u64(x155, (x143 as u64), 0x0_u64); let mut x158: u64 = 0; let mut x159: fiat_p384_scalar_u1 = 0; let (x158, x159) = fiat_p384_scalar_addcarryx_u64(0x0, x6, 0x1_u64); let x160: u64 = ((x112 >> 1) | ((x114 << 63) & 0xffffffffffffffff)); let x161: u64 = ((x114 >> 1) | ((x116 << 63) & 0xffffffffffffffff)); let x162: u64 = ((x116 >> 1) | ((x118 << 63) & 0xffffffffffffffff)); let x163: u64 = ((x118 >> 1) | ((x120 << 63) & 0xffffffffffffffff)); let x164: u64 = ((x120 >> 1) | ((x122 << 63) & 0xffffffffffffffff)); let x165: u64 = ((x122 >> 1) | ((x124 << 63) & 0xffffffffffffffff)); let x166: u64 = ((x124 & 0x8000000000000000) | (x124 >> 1)); let mut x167: u64 = 0; let (x167) = fiat_p384_scalar_cmovznz_u64(x66, x53, x41); let mut x168: u64 = 0; let (x168) = fiat_p384_scalar_cmovznz_u64(x66, x55, x43); let mut x169: u64 = 0; let (x169) = fiat_p384_scalar_cmovznz_u64(x66, x57, x45); let mut x170: u64 = 0; let (x170) = fiat_p384_scalar_cmovznz_u64(x66, x59, x47); let mut x171: u64 = 0; let (x171) = fiat_p384_scalar_cmovznz_u64(x66, x61, x49); let mut x172: u64 = 0; let (x172) = fiat_p384_scalar_cmovznz_u64(x66, x63, x51); let mut x173: u64 = 0; let (x173) = fiat_p384_scalar_cmovznz_u64(x157, x144, x132); let mut x174: u64 = 0; let (x174) = fiat_p384_scalar_cmovznz_u64(x157, x146, x134); let mut x175: u64 = 0; let (x175) = fiat_p384_scalar_cmovznz_u64(x157, x148, x136); let mut x176: u64 = 0; let (x176) = fiat_p384_scalar_cmovznz_u64(x157, x150, x138); let mut x177: u64 = 0; let (x177) = fiat_p384_scalar_cmovznz_u64(x157, x152, x140); let mut x178: u64 = 0; let (x178) = fiat_p384_scalar_cmovznz_u64(x157, x154, x142); out1 = x158; out2[0] = x7; out2[1] = x8; out2[2] = x9; out2[3] = x10; out2[4] = x11; out2[5] = x12; out2[6] = x13; out3[0] = x160; out3[1] = x161; out3[2] = x162; out3[3] = x163; out3[4] = x164; out3[5] = x165; out3[6] = x166; out4[0] = x167; out4[1] = x168; out4[2] = x169; out4[3] = x170; out4[4] = x171; out4[5] = x172; out5[0] = x173; out5[1] = x174; out5[2] = x175; out5[3] = x176; out5[4] = x177; out5[5] = x178; (out1, out2, out3, out4, out5) } p384-0.13.0/src/arithmetic/scalar.rs000064400000000000000000000304321046102023000151400ustar 00000000000000//! secp384r1 scalar field elements. #![allow(clippy::unusual_byte_groupings)] #[cfg_attr(target_pointer_width = "32", path = "scalar/p384_scalar_32.rs")] #[cfg_attr(target_pointer_width = "64", path = "scalar/p384_scalar_64.rs")] #[allow( clippy::identity_op, clippy::too_many_arguments, clippy::unnecessary_cast )] mod scalar_impl; use self::scalar_impl::*; use crate::{FieldBytes, NistP384, SecretKey, ORDER_HEX, U384}; use core::{ iter::{Product, Sum}, ops::{AddAssign, MulAssign, Neg, Shr, ShrAssign, SubAssign}, }; use elliptic_curve::{ bigint::{self, ArrayEncoding, Limb}, ff::PrimeField, ops::{Invert, Reduce}, scalar::{FromUintUnchecked, IsHigh}, subtle::{Choice, ConditionallySelectable, ConstantTimeEq, ConstantTimeGreater, CtOption}, Curve as _, Error, Result, ScalarPrimitive, }; #[cfg(feature = "bits")] use {crate::ScalarBits, elliptic_curve::group::ff::PrimeFieldBits}; #[cfg(feature = "serde")] use serdect::serde::{de, ser, Deserialize, Serialize}; #[cfg(doc)] use core::ops::{Add, Mul, Sub}; /// Scalars are elements in the finite field modulo `n`. /// /// # Trait impls /// /// Much of the important functionality of scalars is provided by traits from /// the [`ff`](https://docs.rs/ff/) crate, which is re-exported as /// `p384::elliptic_curve::ff`: /// /// - [`Field`](https://docs.rs/ff/latest/ff/trait.Field.html) - /// represents elements of finite fields and provides: /// - [`Field::random`](https://docs.rs/ff/latest/ff/trait.Field.html#tymethod.random) - /// generate a random scalar /// - `double`, `square`, and `invert` operations /// - Bounds for [`Add`], [`Sub`], [`Mul`], and [`Neg`] (as well as `*Assign` equivalents) /// - Bounds for [`ConditionallySelectable`] from the `subtle` crate /// - [`PrimeField`](https://docs.rs/ff/latest/ff/trait.PrimeField.html) - /// represents elements of prime fields and provides: /// - `from_repr`/`to_repr` for converting field elements from/to big integers. /// - `multiplicative_generator` and `root_of_unity` constants. /// - [`PrimeFieldBits`](https://docs.rs/ff/latest/ff/trait.PrimeFieldBits.html) - /// operations over field elements represented as bits (requires `bits` feature) /// /// Please see the documentation for the relevant traits for more information. /// /// # `serde` support /// /// When the `serde` feature of this crate is enabled, the `Serialize` and /// `Deserialize` traits are impl'd for this type. /// /// The serialization is a fixed-width big endian encoding. When used with /// textual formats, the binary data is encoded as hexadecimal. #[derive(Clone, Copy, Debug, PartialOrd, Ord)] pub struct Scalar(U384); primeorder::impl_mont_field_element!( NistP384, Scalar, FieldBytes, U384, NistP384::ORDER, fiat_p384_scalar_montgomery_domain_field_element, fiat_p384_scalar_from_montgomery, fiat_p384_scalar_to_montgomery, fiat_p384_scalar_add, fiat_p384_scalar_sub, fiat_p384_scalar_mul, fiat_p384_scalar_opp, fiat_p384_scalar_square ); impl Scalar { /// Compute [`Scalar`] inversion: `1 / self`. pub fn invert(&self) -> CtOption { CtOption::new(self.invert_unchecked(), !self.is_zero()) } /// Returns the multiplicative inverse of self. /// /// Does not check that self is non-zero. const fn invert_unchecked(&self) -> Self { let words = impl_field_invert!( self.to_canonical().as_words(), Self::ONE.0.to_words(), Limb::BITS, bigint::nlimbs!(U384::BITS), fiat_p384_scalar_mul, fiat_p384_scalar_opp, fiat_p384_scalar_divstep_precomp, fiat_p384_scalar_divstep, fiat_p384_scalar_msat, fiat_p384_scalar_selectznz, ); Self(U384::from_words(words)) } /// Compute modular square root. pub fn sqrt(&self) -> CtOption { // p mod 4 = 3 -> compute sqrt(x) using x^((p+1)/4) = // x^9850501549098619803069760025035903451269934817616361666986726319906914849778315892349739077038073728388608413485661 let t1 = *self; let t10 = t1.square(); let t11 = *self * t10; let t101 = t10 * t11; let t111 = t10 * t101; let t1001 = t10 * t111; let t1011 = t10 * t1001; let t1101 = t10 * t1011; let t1111 = t10 * t1101; let t11110 = t1111.square(); let t11111 = t1 * t11110; let t1111100 = t11111.sqn(2); let t11111000 = t1111100.square(); let i14 = t11111000.square(); let i20 = i14.sqn(5) * i14; let i31 = i20.sqn(10) * i20; let i58 = (i31.sqn(4) * t11111000).sqn(21) * i31; let i110 = (i58.sqn(3) * t1111100).sqn(47) * i58; let x194 = i110.sqn(95) * i110 * t1111; let i225 = ((x194.sqn(6) * t111).sqn(3) * t11).sqn(7); let i235 = ((t1101 * i225).sqn(6) * t1101).square() * t1; let i258 = ((i235.sqn(11) * t11111).sqn(2) * t1).sqn(8); let i269 = ((t1101 * i258).sqn(2) * t11).sqn(6) * t1011; let i286 = ((i269.sqn(4) * t111).sqn(6) * t11111).sqn(5); let i308 = ((t1011 * i286).sqn(10) * t1101).sqn(9) * t1101; let i323 = ((i308.sqn(4) * t1011).sqn(6) * t1001).sqn(3); let i340 = ((t1 * i323).sqn(7) * t1011).sqn(7) * t101; let i357 = ((i340.sqn(5) * t111).sqn(5) * t1111).sqn(5); let i369 = ((t1011 * i357).sqn(4) * t1011).sqn(5) * t111; let i387 = ((i369.sqn(3) * t11).sqn(7) * t11).sqn(6); let i397 = ((t1011 * i387).sqn(4) * t101).sqn(3) * t11; let i413 = ((i397.sqn(4) * t11).sqn(4) * t11).sqn(6); let i427 = ((t101 * i413).sqn(5) * t101).sqn(6) * t1011; let x = i427.sqn(3) * t101; CtOption::new(x, x.square().ct_eq(&t1)) } fn sqn(&self, n: usize) -> Self { let mut x = *self; for _ in 0..n { x = x.square(); } x } /// Right shifts the scalar. /// /// Note: not constant-time with respect to the `shift` parameter. pub const fn shr_vartime(&self, shift: usize) -> Scalar { Self(self.0.shr_vartime(shift)) } } impl AsRef for Scalar { fn as_ref(&self) -> &Scalar { self } } impl FromUintUnchecked for Scalar { type Uint = U384; fn from_uint_unchecked(uint: Self::Uint) -> Self { Self::from_uint_unchecked(uint) } } impl Invert for Scalar { type Output = CtOption; fn invert(&self) -> CtOption { self.invert() } } impl IsHigh for Scalar { fn is_high(&self) -> Choice { const MODULUS_SHR1: U384 = NistP384::ORDER.shr_vartime(1); self.to_canonical().ct_gt(&MODULUS_SHR1) } } impl Shr for Scalar { type Output = Self; fn shr(self, rhs: usize) -> Self::Output { self.shr_vartime(rhs) } } impl Shr for &Scalar { type Output = Scalar; fn shr(self, rhs: usize) -> Self::Output { self.shr_vartime(rhs) } } impl ShrAssign for Scalar { fn shr_assign(&mut self, rhs: usize) { *self = *self >> rhs; } } impl PrimeField for Scalar { type Repr = FieldBytes; const MODULUS: &'static str = ORDER_HEX; const CAPACITY: u32 = 383; const NUM_BITS: u32 = 384; const TWO_INV: Self = Self::from_u64(2).invert_unchecked(); const MULTIPLICATIVE_GENERATOR: Self = Self::from_u64(2); const S: u32 = 1; const ROOT_OF_UNITY: Self = Self::from_hex("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972"); const ROOT_OF_UNITY_INV: Self = Self::ROOT_OF_UNITY.invert_unchecked(); const DELTA: Self = Self::from_u64(4); #[inline] fn from_repr(bytes: FieldBytes) -> CtOption { Self::from_bytes(&bytes) } #[inline] fn to_repr(&self) -> FieldBytes { self.to_bytes() } #[inline] fn is_odd(&self) -> Choice { self.is_odd() } } #[cfg(feature = "bits")] impl PrimeFieldBits for Scalar { type ReprBits = fiat_p384_scalar_montgomery_domain_field_element; fn to_le_bits(&self) -> ScalarBits { self.to_canonical().to_words().into() } fn char_le_bits() -> ScalarBits { NistP384::ORDER.to_words().into() } } impl Reduce for Scalar { type Bytes = FieldBytes; fn reduce(w: U384) -> Self { let (r, underflow) = w.sbb(&NistP384::ORDER, Limb::ZERO); let underflow = Choice::from((underflow.0 >> (Limb::BITS - 1)) as u8); Self::from_uint_unchecked(U384::conditional_select(&w, &r, !underflow)) } #[inline] fn reduce_bytes(bytes: &FieldBytes) -> Self { Self::reduce(U384::from_be_byte_array(*bytes)) } } impl From> for Scalar { fn from(w: ScalarPrimitive) -> Self { Scalar::from(&w) } } impl From<&ScalarPrimitive> for Scalar { fn from(w: &ScalarPrimitive) -> Scalar { Scalar::from_uint_unchecked(*w.as_uint()) } } impl From for ScalarPrimitive { fn from(scalar: Scalar) -> ScalarPrimitive { ScalarPrimitive::from(&scalar) } } impl From<&Scalar> for ScalarPrimitive { fn from(scalar: &Scalar) -> ScalarPrimitive { ScalarPrimitive::new(scalar.into()).unwrap() } } impl From for FieldBytes { fn from(scalar: Scalar) -> Self { scalar.to_repr() } } impl From<&Scalar> for FieldBytes { fn from(scalar: &Scalar) -> Self { scalar.to_repr() } } impl From for U384 { fn from(scalar: Scalar) -> U384 { U384::from(&scalar) } } impl From<&Scalar> for U384 { fn from(scalar: &Scalar) -> U384 { scalar.to_canonical() } } impl From<&SecretKey> for Scalar { fn from(secret_key: &SecretKey) -> Scalar { *secret_key.to_nonzero_scalar() } } impl TryFrom for Scalar { type Error = Error; fn try_from(w: U384) -> Result { Option::from(Self::from_uint(w)).ok_or(Error) } } #[cfg(feature = "serde")] impl Serialize for Scalar { fn serialize(&self, serializer: S) -> core::result::Result where S: ser::Serializer, { ScalarPrimitive::from(self).serialize(serializer) } } #[cfg(feature = "serde")] impl<'de> Deserialize<'de> for Scalar { fn deserialize(deserializer: D) -> core::result::Result where D: de::Deserializer<'de>, { Ok(ScalarPrimitive::deserialize(deserializer)?.into()) } } #[cfg(test)] mod tests { use super::Scalar; use crate::FieldBytes; use elliptic_curve::ff::PrimeField; use primeorder::impl_primefield_tests; /// t = (modulus - 1) >> S const T: [u64; 6] = [ 0x76760cb5666294b9, 0xac0d06d9245853bd, 0xe3b1a6c0fa1b96ef, 0xffffffffffffffff, 0xffffffffffffffff, 0x7fffffffffffffff, ]; impl_primefield_tests!(Scalar, T); #[test] fn from_to_bytes_roundtrip() { let k: u64 = 42; let mut bytes = FieldBytes::default(); bytes[40..].copy_from_slice(k.to_be_bytes().as_ref()); let scalar = Scalar::from_repr(bytes).unwrap(); assert_eq!(bytes, scalar.to_bytes()); } /// Basic tests that multiplication works. #[test] fn multiply() { let one = Scalar::ONE; let two = one + one; let three = two + one; let six = three + three; assert_eq!(six, two * three); let minus_two = -two; let minus_three = -three; assert_eq!(two, -minus_two); assert_eq!(minus_three * minus_two, minus_two * minus_three); assert_eq!(six, minus_two * minus_three); } /// Basic tests that scalar inversion works. #[test] fn invert() { let one = Scalar::ONE; let three = one + one + one; let inv_three = three.invert().unwrap(); assert_eq!(three * inv_three, one); let minus_three = -three; let inv_minus_three = minus_three.invert().unwrap(); assert_eq!(inv_minus_three, -inv_three); assert_eq!(three * inv_minus_three, -one); } /// Basic tests that sqrt works. #[test] fn sqrt() { for &n in &[1u64, 4, 9, 16, 25, 36, 49, 64] { let scalar = Scalar::from(n); let sqrt = scalar.sqrt().unwrap(); assert_eq!(sqrt.square(), scalar); } } } p384-0.13.0/src/arithmetic.rs000064400000000000000000000046721046102023000137020ustar 00000000000000//! Pure Rust implementation of group operations on secp384r1. //! //! Curve parameters can be found in [NIST SP 800-186] § G.1.3: Curve P-384. //! //! [NIST SP 800-186]: https://csrc.nist.gov/publications/detail/sp/800-186/final #[macro_use] mod macros; pub(crate) mod field; #[cfg(feature = "hash2curve")] mod hash2curve; pub(crate) mod scalar; use self::{field::FieldElement, scalar::Scalar}; use crate::NistP384; use elliptic_curve::{CurveArithmetic, PrimeCurveArithmetic}; use primeorder::{point_arithmetic, PrimeCurveParams}; /// Elliptic curve point in affine coordinates. pub type AffinePoint = primeorder::AffinePoint; /// Elliptic curve point in projective coordinates. pub type ProjectivePoint = primeorder::ProjectivePoint; impl CurveArithmetic for NistP384 { type AffinePoint = AffinePoint; type ProjectivePoint = ProjectivePoint; type Scalar = Scalar; } impl PrimeCurveArithmetic for NistP384 { type CurveGroup = ProjectivePoint; } /// Adapted from [NIST SP 800-186] § G.1.3: Curve P-384. /// /// [NIST SP 800-186]: https://csrc.nist.gov/publications/detail/sp/800-186/final impl PrimeCurveParams for NistP384 { type FieldElement = FieldElement; type PointArithmetic = point_arithmetic::EquationAIsMinusThree; /// a = -3 (0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff0000000000000000fffffffc) const EQUATION_A: FieldElement = FieldElement::from_u64(3).neg(); /// b = b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 /// 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef const EQUATION_B: FieldElement = FieldElement::from_hex("b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef"); /// Base point of P-384. /// /// Defined in NIST SP 800-186 § G.1.3: Curve P-384. /// /// ```text /// Gₓ = aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 /// 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7 /// Gᵧ = 3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c /// e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f /// ``` const GENERATOR: (FieldElement, FieldElement) = ( FieldElement::from_hex("aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7"), FieldElement::from_hex("3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f"), ); } p384-0.13.0/src/ecdh.rs000064400000000000000000000035311046102023000124450ustar 00000000000000//! Elliptic Curve Diffie-Hellman (Ephemeral) Support. //! //! This module contains a high-level interface for performing ephemeral //! Diffie-Hellman key exchanges using the secp384 elliptic curve. //! //! # Usage //! //! This usage example is from the perspective of two participants in the //! exchange, nicknamed "Alice" and "Bob". //! //! ``` //! use p384::{EncodedPoint, PublicKey, ecdh::EphemeralSecret}; //! use rand_core::OsRng; // requires 'getrandom' feature //! //! // Alice //! let alice_secret = EphemeralSecret::random(&mut OsRng); //! let alice_pk_bytes = EncodedPoint::from(alice_secret.public_key()); //! //! // Bob //! let bob_secret = EphemeralSecret::random(&mut OsRng); //! let bob_pk_bytes = EncodedPoint::from(bob_secret.public_key()); //! //! // Alice decodes Bob's serialized public key and computes a shared secret from it //! let bob_public = PublicKey::from_sec1_bytes(bob_pk_bytes.as_ref()) //! .expect("bob's public key is invalid!"); // In real usage, don't panic, handle this! //! //! let alice_shared = alice_secret.diffie_hellman(&bob_public); //! //! // Bob decodes Alice's serialized public key and computes the same shared secret //! let alice_public = PublicKey::from_sec1_bytes(alice_pk_bytes.as_ref()) //! .expect("alice's public key is invalid!"); // In real usage, don't panic, handle this! //! //! let bob_shared = bob_secret.diffie_hellman(&alice_public); //! //! // Both participants arrive on the same shared secret //! assert_eq!(alice_shared.raw_secret_bytes(), bob_shared.raw_secret_bytes()); //! ``` pub use elliptic_curve::ecdh::diffie_hellman; use crate::NistP384; /// NIST P-384 Ephemeral Diffie-Hellman Secret. pub type EphemeralSecret = elliptic_curve::ecdh::EphemeralSecret; /// Shared secret value computed via ECDH key agreement. pub type SharedSecret = elliptic_curve::ecdh::SharedSecret; p384-0.13.0/src/ecdsa.rs000064400000000000000000000167601046102023000126310ustar 00000000000000//! Elliptic Curve Digital Signature Algorithm (ECDSA) //! //! This module contains support for computing and verifying ECDSA signatures. //! To use it, you will need to enable one of the two following Cargo features: //! //! - `ecdsa-core`: provides only the [`Signature`] type (which represents an //! ECDSA/P-384 signature). Does not require the `arithmetic` feature. This is //! useful for 3rd-party crates which wish to use the `Signature` type for //! interoperability purposes (particularly in conjunction with the //! [`signature::Signer`] trait. Example use cases for this include other //! software implementations of ECDSA/P-384 and wrappers for cloud KMS //! services or hardware devices (HSM or crypto hardware wallet). //! - `ecdsa`: provides `ecdsa-core` features plus the [`SigningKey`] and //! [`VerifyingKey`] types which natively implement ECDSA/P-384 signing and //! verification. //! //! ## Signing/Verification Example //! //! This example requires the `ecdsa` Cargo feature is enabled: //! //! ``` //! # #[cfg(feature = "ecdsa")] //! # { //! use p384::ecdsa::{signature::Signer, Signature, SigningKey}; //! use rand_core::OsRng; // requires 'getrandom' feature //! //! // Signing //! let signing_key = SigningKey::random(&mut OsRng); // Serialize with `::to_bytes()` //! let message = b"ECDSA proves knowledge of a secret number in the context of a single message"; //! let signature: Signature = signing_key.sign(message); //! //! // Verification //! use p384::ecdsa::{signature::Verifier, VerifyingKey}; //! //! let verifying_key = VerifyingKey::from(&signing_key); // Serialize with `::to_encoded_point()` //! assert!(verifying_key.verify(message, &signature).is_ok()); //! # } //! ``` pub use ecdsa_core::signature::{self, Error}; #[cfg(feature = "ecdsa")] use { crate::{AffinePoint, Scalar}, ecdsa_core::hazmat::{SignPrimitive, VerifyPrimitive}, }; use super::NistP384; /// ECDSA/P-384 signature (fixed-size) pub type Signature = ecdsa_core::Signature; /// ECDSA/P-384 signature (ASN.1 DER encoded) pub type DerSignature = ecdsa_core::der::Signature; /// ECDSA/P-384 signing key #[cfg(feature = "ecdsa")] pub type SigningKey = ecdsa_core::SigningKey; /// ECDSA/P-384 verification key (i.e. public key) #[cfg(feature = "ecdsa")] pub type VerifyingKey = ecdsa_core::VerifyingKey; #[cfg(feature = "sha384")] impl ecdsa_core::hazmat::DigestPrimitive for NistP384 { type Digest = sha2::Sha384; } #[cfg(feature = "ecdsa")] impl SignPrimitive for Scalar {} #[cfg(feature = "ecdsa")] impl VerifyPrimitive for AffinePoint {} #[cfg(all(test, feature = "ecdsa"))] mod tests { use crate::{ ecdsa::{ signature::hazmat::{PrehashSigner, PrehashVerifier}, signature::Signer, Signature, SigningKey, VerifyingKey, }, AffinePoint, EncodedPoint, SecretKey, }; use elliptic_curve::{generic_array::GenericArray, sec1::FromEncodedPoint}; use hex_literal::hex; use sha2::Digest; // Test vector from RFC 6979 Appendix 2.6 (NIST P-384 + SHA-384) // #[test] fn rfc6979() { let x = hex!("6b9d3dad2e1b8c1c05b19875b6659f4de23c3b667bf297ba9aa47740787137d896d5724e4c70a825f872c9ea60d2edf5"); let signer = SigningKey::from_bytes(&x.into()).unwrap(); let signature: Signature = signer.sign(b"sample"); assert_eq!( signature.to_bytes().as_slice(), &hex!( "94edbb92a5ecb8aad4736e56c691916b3f88140666ce9fa73d64c4ea95ad133c81a648152e44acf96e36dd1e80fabe46 99ef4aeb15f178cea1fe40db2603138f130e740a19624526203b6351d0a3a94fa329c145786e679e7b82c71a38628ac8" ) ); let signature: Signature = signer.sign(b"test"); assert_eq!( signature.to_bytes().as_slice(), &hex!( "8203b63d3c853e8d77227fb377bcf7b7b772e97892a80f36ab775d509d7a5feb0542a7f0812998da8f1dd3ca3cf023db ddd0760448d42d8a43af45af836fce4de8be06b485e9b61b827c2f13173923e06a739f040649a667bf3b828246baa5a5" ) ); } // Test signing with PrehashSigner using SHA-256 which output is smaller than P-384 field size. #[test] fn prehash_signer_signing_with_sha256() { let x = hex!("6b9d3dad2e1b8c1c05b19875b6659f4de23c3b667bf297ba9aa47740787137d896d5724e4c70a825f872c9ea60d2edf5"); let signer = SigningKey::from_bytes(&x.into()).unwrap(); let digest = sha2::Sha256::digest(b"test"); let signature: Signature = signer.sign_prehash(&digest).unwrap(); assert_eq!( signature.to_bytes().as_slice(), &hex!( "010c3ab1a300f8c9d63eafa9a41813f0c5416c08814bdfc0236458d6c2603d71c4941f4696e60aff5717476170bb6ab4 03c4ad6274c61691346b2178def879424726909af308596ffb6355a042f48a114e2eb28eaa6918592b4727961057c0c1" ) ); } // Test verifying with PrehashVerifier using SHA-256 which output is smaller than P-384 field size. #[test] fn prehash_signer_verification_with_sha256() { // The following test vector adapted from the FIPS 186-4 ECDSA test vectors // (P-384, SHA-256, from `SigGen.txt` in `186-4ecdsatestvectors.zip`) // let verifier = VerifyingKey::from_affine( AffinePoint::from_encoded_point( &EncodedPoint::from_affine_coordinates( GenericArray::from_slice(&hex!("0400193b21f07cd059826e9453d3e96dd145041c97d49ff6b7047f86bb0b0439e909274cb9c282bfab88674c0765bc75")), GenericArray::from_slice(&hex!("f70d89c52acbc70468d2c5ae75c76d7f69b76af62dcf95e99eba5dd11adf8f42ec9a425b0c5ec98e2f234a926b82a147")), false, ), ).unwrap() ).unwrap(); let signature = Signature::from_scalars( GenericArray::clone_from_slice(&hex!("b11db00cdaf53286d4483f38cd02785948477ed7ebc2ad609054551da0ab0359978c61851788aa2ec3267946d440e878")), GenericArray::clone_from_slice(&hex!("16007873c5b0604ce68112a8fee973e8e2b6e3319c683a762ff5065a076512d7c98b27e74b7887671048ac027df8cbf2")), ).unwrap(); let result = verifier.verify_prehash( &hex!("bbbd0a5f645d3fda10e288d172b299455f9dff00e0fbc2833e18cd017d7f3ed1"), &signature, ); assert!(result.is_ok()); } #[test] fn signing_secret_key_equivalent() { let raw_sk: [u8; 48] = [ 32, 52, 118, 9, 96, 116, 119, 172, 168, 251, 251, 197, 230, 33, 132, 85, 243, 25, 150, 105, 121, 46, 248, 180, 102, 250, 168, 123, 220, 103, 121, 129, 68, 200, 72, 221, 3, 102, 30, 237, 90, 198, 36, 97, 52, 12, 234, 150, ]; let seck = SecretKey::from_bytes(&raw_sk.into()).unwrap(); let sigk = SigningKey::from_bytes(&raw_sk.into()).unwrap(); assert_eq!(seck.to_bytes().as_slice(), &raw_sk); assert_eq!(sigk.to_bytes().as_slice(), &raw_sk); } mod sign { use crate::{test_vectors::ecdsa::ECDSA_TEST_VECTORS, NistP384}; ecdsa_core::new_signing_test!(NistP384, ECDSA_TEST_VECTORS); } mod verify { use crate::{test_vectors::ecdsa::ECDSA_TEST_VECTORS, NistP384}; ecdsa_core::new_verification_test!(NistP384, ECDSA_TEST_VECTORS); } mod wycheproof { use crate::NistP384; ecdsa_core::new_wycheproof_test!(wycheproof, "wycheproof", NistP384); } } p384-0.13.0/src/lib.rs000064400000000000000000000101711046102023000123060ustar 00000000000000#![no_std] #![cfg_attr(docsrs, feature(doc_auto_cfg))] #![doc( html_logo_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg", html_favicon_url = "https://raw.githubusercontent.com/RustCrypto/meta/master/logo.svg" )] #![forbid(unsafe_code)] #![warn(missing_docs, rust_2018_idioms, unused_qualifications)] #![doc = include_str!("../README.md")] //! ## `serde` support //! //! When the `serde` feature of this crate is enabled, `Serialize` and //! `Deserialize` are impl'd for the following types: //! //! - [`AffinePoint`] //! - [`Scalar`] //! - [`ecdsa::VerifyingKey`] //! //! Please see type-specific documentation for more information. #[cfg(feature = "arithmetic")] mod arithmetic; #[cfg(feature = "ecdh")] pub mod ecdh; #[cfg(feature = "ecdsa-core")] pub mod ecdsa; #[cfg(any(feature = "test-vectors", test))] pub mod test_vectors; pub use elliptic_curve::{self, bigint::U384, consts::U48}; #[cfg(feature = "arithmetic")] pub use arithmetic::{scalar::Scalar, AffinePoint, ProjectivePoint}; #[cfg(feature = "expose-field")] pub use arithmetic::field::FieldElement; #[cfg(feature = "pkcs8")] pub use elliptic_curve::pkcs8; use elliptic_curve::{ bigint::ArrayEncoding, consts::U49, generic_array::GenericArray, FieldBytesEncoding, }; /// Order of NIST P-384's elliptic curve group (i.e. scalar modulus) in hexadecimal. const ORDER_HEX: &str = "ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52973"; /// NIST P-384 elliptic curve. #[derive(Copy, Clone, Debug, Default, Eq, PartialEq, PartialOrd, Ord)] pub struct NistP384; impl elliptic_curve::Curve for NistP384 { /// 48-byte serialized field elements. type FieldBytesSize = U48; /// 384-bit integer type used for internally representing field elements. type Uint = U384; /// Order of NIST P-384's elliptic curve group (i.e. scalar modulus). const ORDER: U384 = U384::from_be_hex(ORDER_HEX); } impl elliptic_curve::PrimeCurve for NistP384 {} impl elliptic_curve::point::PointCompression for NistP384 { /// NIST P-384 points are typically uncompressed. const COMPRESS_POINTS: bool = false; } impl elliptic_curve::point::PointCompaction for NistP384 { /// NIST P-384 points are typically uncompressed. const COMPACT_POINTS: bool = false; } #[cfg(feature = "jwk")] impl elliptic_curve::JwkParameters for NistP384 { const CRV: &'static str = "P-384"; } #[cfg(feature = "pkcs8")] impl pkcs8::AssociatedOid for NistP384 { const OID: pkcs8::ObjectIdentifier = pkcs8::ObjectIdentifier::new_unwrap("1.3.132.0.34"); } /// Compressed SEC1-encoded NIST P-384 curve point. pub type CompressedPoint = GenericArray; /// NIST P-384 SEC1 encoded point. pub type EncodedPoint = elliptic_curve::sec1::EncodedPoint; /// NIST P-384 field element serialized as bytes. /// /// Byte array containing a serialized field element value (base field or /// scalar). pub type FieldBytes = elliptic_curve::FieldBytes; impl FieldBytesEncoding for U384 { fn decode_field_bytes(field_bytes: &FieldBytes) -> Self { U384::from_be_byte_array(*field_bytes) } fn encode_field_bytes(&self) -> FieldBytes { self.to_be_byte_array() } } /// Non-zero NIST P-384 scalar field element. #[cfg(feature = "arithmetic")] pub type NonZeroScalar = elliptic_curve::NonZeroScalar; /// NIST P-384 public key. #[cfg(feature = "arithmetic")] pub type PublicKey = elliptic_curve::PublicKey; /// NIST P-384 secret key. pub type SecretKey = elliptic_curve::SecretKey; #[cfg(not(feature = "arithmetic"))] impl elliptic_curve::sec1::ValidatePublicKey for NistP384 {} /// Bit representation of a NIST P-384 scalar field element. #[cfg(feature = "bits")] pub type ScalarBits = elliptic_curve::scalar::ScalarBits; #[cfg(feature = "voprf")] impl elliptic_curve::VoprfParameters for NistP384 { /// See . const ID: &'static str = "P384-SHA384"; /// See . type Hash = sha2::Sha384; } p384-0.13.0/src/test_vectors/data/wycheproof.blb000064400000000000000000001324371046102023000175070ustar 00000000000000 0KmMi^ĝpq^4;6}v.xWt M'DO0-}'jT? lqrٿ佲Gt8rٌu!8123400Message1_ yM1Fִ"zqxMaKXyw60)m_A3:f}Df=fPGa.ZT4Z^^d1"7 tn;bYAT*8U]U)l:T^8rv 1RZdF+A;b}^OG@J?dtq0:ڟģ,+uAiEc4|% ~5֤epGSi, ?Zӳz̝`lJpuB~ׅ3lj Vgִ0EU\=⳽^%Oof1l.R=}a]yK1t,Ll3b:Tj[(zq =c3%g)K1c9p|nΥum?t`(vs|\@J1ɷ6.׾ u:T˴iA$Y h_mI0>/W1ѕY{VsEX X8_0hxP}mPch|1т/!,Z@S!V(@VUp mܞʊ"1],퍊V8EA=++mٿ/$ۉ~ĝ18*c8L"-I/#nJ'rJUQ\H48 Z$|7RB_0K/'뵑_YUQӣgݝl0%Cc B|MdH]0: ^B/ya*z=iKy;jy“`yP6d06J&,o])(|1 `~zC|_g0e1'{{f 4 U|y=}8#(q-0$I$I$I$I$I$I$I$I{Guqo=j(3*~g0e1vpڪ7?ߺT p>s{֕ V`0dkFe-Ni̕3>|4|{qICI4f0d0N'C._1}SDyzj7>0$I$I$I$I$I$I$I$I{Guqo=j(3*~1兠gzX1YsE7HO1<%k1!BB:,OC^RYֽTSxZl ɩXwx 1rlsv*6]:wfgⶏXha11XI/ 0턁x=}TZӵn;xh1!iӐag@mm# Be%JG>N0~bo1=sN#LZ?t|עb>X|˸LD L0d0 GoU|%f&K(0JE2 3H0@ڟ A;%t:L90$ Q8b ǪT͂ N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0f0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0d0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo X0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo `0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo X00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo  0 R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo X0jIw0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i%0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0g0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Boޭ X0j"5Iw0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i"4%0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m"20 GoU|%f&K(0JE2 3Hޭ1%`>-o z*sڋr_1]-ܧRZ%O{Bo X0j0 GoU|%f&K(0JE2 3H"6Iw1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H"5%1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m0 GoU|%f&K(0JE2 3H"31%`>-o z*sڋr_1]-ܧRZ%O{Boޭ ^0m0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo Z0k0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m"80 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo Z0k"60 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m0 GoU|%f&K(0JE2 3H"91%`>-o z*sڋr_1]-ܧRZ%O{Bo Z0k0 GoU|%f&K(0JE2 3H"71%`>-o z*sڋr_1]-ܧRZ%O{Bo 0 V00e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i"0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H"1%`>-o z*sڋr_1]-ܧRZ%O{Bo V01e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i"0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H"1%`>-o z*sڋr_1]-ܧRZ%O{Bo  N.e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N/e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N1e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N2e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo Ne0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo 0 V0i00d0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo P00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo Z00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo" Z00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g00 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo0 T0h0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo h020 GoU|%f&K(0JE2 3H 600 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e1 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e/ GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H2%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H0%`>-o z*sڋr_1]-ܧRZ%O{Bo X0j0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo X0j0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo `0n0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo `0n0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo X0j GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo X0j0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo ^0m0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H%`>-o z*sڋr_1]-ܧRZ%O{Bo j031%`>-o z*sڋr_1]-ܧRZ%O{Bo l041%`>-o z*sڋr_1]-ܧRZ%O{Bo j030 GoU|%f&K(0JE2 3H R0g2 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H3%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g2 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H3%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g2 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo R0g0 GoU|%f&K(0JE2 3H3%`>-o z*sڋr_1]-ܧRZ%O{Bo n051%`>-o z*sڋr_1]-ܧRZ%O{Bo l040 GoU|%f&K(0JE2 3H n051%`>-o z*sڋr_1]-ܧRZ%O{Bo l040 GoU|%f&K(0JE2 3H N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo n051%`>-o z*sڋr_1]-ܧRZ%O{Bo l040 GoU|%f&K(0JE2 3H V0i"4/ GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo V0i0 GoU|%f&K(0JE2 3H"50%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3HW1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d/ GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d/ GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d0 GoU|%f&K(0JE2 3H0%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f0 GoU|%f&K(0JE2 3H2%`>-o z*sڋr_1]-ܧRZ%O{Bo p06 1%`>-o z*sڋr_1]-ܧRZ%O{Bo n050 GoU|%f&K(0JE2 3H  p061%`>-o z*sڋr_1]-ܧRZ%O{Bo n050 GoU|%f&K(0JE2 3H P0f1 GoU|%f&KVH^cXGLrJ1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1 GoU|%f&K|bt=2*%d1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0LA JIQڙK% 5|Eq3_Bk:)1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1LA JIQڙKpY%[|kH.1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1LA JIQڙK]U(Wh SVAu1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo P0f1LA JIQڙK% 5|Eq3_Bk:)1%`>-o z*sڋr_1]-ܧRZ%O{Bo N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_je tZևK< L0d0 GoU|%f&K(0JE2 3H0%`>-o z*sڋr_j5@Ju8Uc2}F N0e0 GoU|%f&K(0JE2 3H1@ڟ A;%t:L9f#XTWl /;~ N0e0 GoU|%f&K(0JE2 3H1@ڟ A;%t:L: %yUF$)x'"3g  N0e0 GoU|%f&K(0JE2 3H1%`>-o z*sڋr_1]-ܧRZ%O{Bo L0d0 GoU|%f&K(0JE2 3H0@ڟ A;%t:L9f#XTWl /;~ 0 0 0 p061cM7-X Hzj)s p061cM7-X Hzj)r p061cM7-X Hzj)t p061 p061 0  0 B 0 0 0 p061cM7-X Hzj)s p061cM7-X Hzj)r p061cM7-X Hzj)t p061 p061 0  0 B 0 0 0 p061cM7-X Hzj)s p061cM7-X Hzj)r p061cM7-X Hzj)t p061 p061 0  0 B p061cM7-X Hzj)s p061cM7-X Hzj)s p061cM7-X Hzj)s P0f1cM7-X Hzj)s1cM7-X Hzj)s P0f1cM7-X Hzj)s1cM7-X Hzj)r P0f1cM7-X Hzj)s1cM7-X Hzj)t P0f1cM7-X Hzj)s1 P0f1cM7-X Hzj)s1 t081cM7-X Hzj)s  p061cM7-X Hzj)s B p061cM7-X Hzj)r p061cM7-X Hzj)r p061cM7-X Hzj)r P0f1cM7-X Hzj)r1cM7-X Hzj)s P0f1cM7-X Hzj)r1cM7-X Hzj)r P0f1cM7-X Hzj)r1cM7-X Hzj)t P0f1cM7-X Hzj)r1 P0f1cM7-X Hzj)r1 t081cM7-X Hzj)r  p061cM7-X Hzj)r B p061cM7-X Hzj)t p061cM7-X Hzj)t p061cM7-X Hzj)t P0f1cM7-X Hzj)t1cM7-X Hzj)s P0f1cM7-X Hzj)t1cM7-X Hzj)r P0f1cM7-X Hzj)t1cM7-X Hzj)t P0f1cM7-X Hzj)t1 P0f1cM7-X Hzj)t1 t081cM7-X Hzj)t  p061cM7-X Hzj)t B p061 p061 p061 P0f11cM7-X Hzj)s P0f11cM7-X Hzj)r P0f11cM7-X Hzj)t P0f11 P0f11 t081  p061 B p061 p061 p061 P0f11cM7-X Hzj)s P0f11cM7-X Hzj)r P0f11cM7-X Hzj)t P0f11 P0f11 t081  p061 B 0 0 0  0 %s s%s 00 0 0 13227P0f1.9Fpp{׸3eW[Wg껸S"OCs5 VV1w >侭|nGx45"F62/or0پ/1750551815P0f1)1k4?d,N{]מ#{QvΫAҺx01Q*; oz#ӑhIzF1cy8tliIPPfMCMpХ2362421321P0f1ȵcj 5*Z60e'dEˇ뺎DJH?Ĩ16ƜKP7}OT3jV=UI0 WNMf^4588014656L0d0J}j2՛kO,=o::7 b9N>[^(]r#8X056['F=Y\ Дpikԥ/Z:#]WL2146605642P0f1c|W*7̑'9d| H\G }G@3QuQ1 qvH'v)q{W!n&D=7azlX335300820N0e1¬#9U_NCz4i*'իB&c0@Q θQYd;^!n+ܘ[.~|KJt6396603631P0f18cb=HdFLäxD7&06 ??ѕ)(^ :1O8F'P'\ݽ+:\K )ƂG7ھ8H3391660795N0e15?Ffף"ZV~y{0W?A;l0s|1c ¬.`kV[974460978N0e0bus2򎠩wdL=H)1++Qv vMÊ2٥Nq~2Lk thǝ933227086839P0f1Qhu<;8ip=կ*5UfWo6DQx>;;1_͂'P:H%_!n7}~Rތ<232976410L0d0 {B7XWSNi Ҿ[-(\sIs^0x1{"G4qLJEwuЉa6tAjLy>94047381N0e0D)'}O ;LtOfpuHϠ{o9>I1Օ$>e+U-3J}f|$|L[#;O3220569123N0e05GWvI+{'0Dyv6ơ<_QIG41R=꺶6Q(N&MXvi̛([1Hd?414053994N0e1W: B5S;vw\QvĈg8P180*/< vodNc2KX%Cp` ]߁1951568649N0e1+iL@A˂o}o3s$3 :+龠@-[];e0xAӼ4G\% <^4-[F8p]K$e}5959071635P0f1n9<%e/5~$(s~lf #29 _ >1!Riׁ>S~e/`aUL&,!Nv}D *0duUp(~9ԺZXyoOȮoAMgh1239275704L0d0.q'F!R+js/ʵtC$8&70mإ%,\St= $cW yA$6682081188768N0e1yW^0M q+|I <-L0qX/I[!Oz TMv5 OA H{~4C 454608963L0d0P%,A ‹,. X]uaǙmF^4R2-+٭l085$ڿ.ݬg7) W2bnRyZ wvz1387687111P0f1r_S}nd '*cqNf50G/C{ޛ1PvH-Dgr,,KifHB=Z2031381875L0d0%VS۪ 7XC)1xoԨ}\َ-$ҝW0h7-fHy Ԗ21Fh(%:S-R5lz255358333N0e0Tz܅Hp簗k^1QXe,1&Je"{L-3$x{ 1(F/13@eEq*;v]ld?H4п"Iv4618841472P0f1ӻ) Qf2r*cT{FU6T'iLd1,!zŏdɖВ$I.$W& J5W1009245854P0f12^1G$2E%2Q(Kyp &*8*z! 1/RT`5=q sKzxDT7 U2756466528P0f1K-!38 q,32p>S[,+ʛ Նv5r.\3ڣ1DԦ&3o"l&AԹ+)@aN/7PȊ119697102N0e1ȀsQa3u /KG cC$KỤ+z ra@/0R㥘Ⱦ!'aҰO!mʰUnu6z"vr233142172L0d0aRo`TnAXOQj p`UY|cBTN%s0s6@ؒp(skdxrƄuVYpk`0hn1673481898P0f1/(?K!'$nC]7B2憹sޫCT¾1,lA#ú&Y(`v?vW1_*0  l4L1460159827P0f1?mcOTCj\mob&XE{Z'֙dCqD12AwGw E#}w]GhfP[|l8990859929L0d0 CՈb +\$)i,qE'n,cmd0x ol4;5j!6>GuMTg3Oa%Ohg- |4326440981P0f1n},q<Rr'w@B*Hɥg2v1L:,4$6hyLAˍд%4MOF22376437557P0f1<tun5x0WE$EP t@ ˈ2 '1j8E5H5A8BbK WFȽ}v860397720P0f1w _|tYJƚʛn tuQcKk$PXrz1VЦwO>q/W0|R{j̚Wa T5807773987N0e0 h}./UURSp,l԰4ՠQ sەTHfY 1aM C~0-=(d|Pg R(˼bo`<571866857N0e0]ȦJ xƩ.}RFSpK@[+V7/1BXR,F\ !ʛVRV\zy㭃8677309362P0f1U۸E \ɕDOn0!)`u掳^R1g̭m{ K9?BYye\d_o4LY09$p7C]2475515060L0d070И]}5TKG$S ]QHYLo#)rF▇K; 0e!z.YϿP뗚_c깽8 81 30Jy?973176874N0e0U! L%sf@aU _1$U'mypr1ӣG1@ZdKZɎk"ȭ5kYv`4e{f3698095148N0e1ɉqDIdQ^h|x<)̡](|:t0ek$"lKѰ~|lY=j(UT n!aC10750268576N0e1C9,-Pq6j]"v+2t9W!!.ʾГ;?0>Las=f/Z $B0_ֹŒ-RS869149558P0f1~ez"֡U8;L r%>$6ٽ1RX.S m\~u WJn-NRN1[j!Sx2174655435L0d0&:5g;^〰ӻ^i<zS 3oWFrza0b|At:T"[?,lV/W%e3#pj@644550792N0e1ReZ Lł܍5O 0; SԳpLYMTX0s( sZ4WӸN }#BYM/-߁VO7ff532818338P0f1b84^H @Ͽ}_GvX UBc1gܞo@ $7vK}d8f;#Y1192076382P0f1yH==M؜;^Ia* UQ`MaSԼ1'H(7՛)Ps3Z#a1Ft,o#ݪKiM1532842220P0f1"5n ]j iԣ9 _Z.G*?1{ F)!Jz4{Cx#|3VF"E#156717739L0d0'*Hso+Ĭ֕FgZ0Gּb*]mq{ˢ|6K6mYfvϤ=f&q{4303091120P0f1UR7&=%[g7)!g%gtȔFb `t/1qwMޅIF`6q%c\IitczD`z7735915581N0e1_M^fy-kfi Y9#&Df|=j@0p9fy5&\\,_b~Lgq_ǯix]|7%d89e243966740P0f1ٕy9mbW7"'9X9Z CϞ [~K/~WR/^1s3hH*y *.e,Bڂ@^@%h/fqxJUv4327602823L0d0CQGo?Ijo$J"D wa A+=m1el$yox'sxǿ DgL&HaNgq(1227605128P0f1&Yp&x5r[$THPHu iI]WC/2452127019N0e08 NH*q pT yyaۛL9avAZ1441547617L0d0jy {V.ܼ mC%\wc^az".8pm0eUX)#EJOU.` ’aHjj5&3__G{g#423944998P0f1_ Uǥf&N.'u12t!y< _GL]>1%l+!VIyp{, e;d"4807620712P0f1f" [+f̹rrv`'s-cMfVMA᷹J1$[j`ymSMtgf B{FP(GΜӲXx2164666289L0d0+bb3~ οjG&N|́W"ϛFG L0F!!3ZD;b􎷫{g%ѷگOn1942853865N0e03patػJV<.M=(z #H?hP1ۗG.;6b?l4L݅Oyz1q\凰 Ю6zt0gK|r#lamw|מ.JSKj:11xfؐ.9657018175N0e1VŽRjIB[w9Jc~c;@V,c0r[ IdWo<'RgoH~fԹ/;Njj]); 0M8~ LOX3:֋1cM7-X Hzj)p); P0f11cM7-X Hzj)p`6#)k&&Vo[rw̴94c.N J\b8Q`vVvL{x)~1,%X=К;yEv P0f1cM7-X Hzj)r1cM7-X Hzj)qbˊE{i=Ql٤kH>#(o0m6bHobV.tK;bP+7e݀r "ɵDpE9kg N0e01Ѯ_*qkp .S\y[=L *<t"kb8 P&;{ͶZeR'|J'nնLbP|ss%bJkQ\QA#Q0ӭ~Cd N0e01HOO&؎m8.C&2pE8O`UO/зVRsҝlgmm3pڌ=!d 10zD2%`q1+a ӸMb@ؿ]t{8ĖȊ 0`D35wpt^Y"q!4@ XB>L"Yb'ę3QWִoܹ0*;ƀH+j3b 097 097 p061cM7-X Hzj)u`|D C ]YLE Ib-j\剼eb{] ﯇ˑ8u84œnE"%oQgO4q&Dܻ:d_ p061cM7-X Hzj` ?<s4h/_-t~\>q=j.O]bxb;">hoyVW a#z͈L%Qnܯ_dn{f p060H"D$H"D$H"D$H"4|7q,}l*sMS`XF ^I;-P/U_^gd!ps&- ́zPevf`I|?6,xXgt˳,T1EϹlT8\+> |0<-M4yR1uVoWSB?Ϝ?DlsUKY!T;F2sQbih0H_XEܢ'==DȟtJ(d Ǯbcr2*HkXfS@{j܀-_ 0A 3~7+DUN0************!\Q `T/ÉhBch@yR`Y"0=d~~;$vuAN (3ϊR[QbǪKyԝ tڏ`D'7eJa-_hjsؖ&!q p060wrz,S* _IhWI5ƬWz[`49J}#V.6[nQxjN=Ѻ-b֘–iH]1bK2On^Պ1(uSWe 0A %"|9>|$0wrz,S* _IhWI5ƬWz[`RGݩr˃!IZϘH)Y<NF,SvpJd{] bp'eW-B(rɠ&yH5ˆ6$` N0e1cM7-X Hzj(0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&?+ n050UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&?+ n050UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&b5<èT>îbʗ2$8@#Ap۪[QWҽbĽ&]|cooLr*(;p I I2( L0d0㱦 $XSvv fb0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&`7 .11[3QӉ "6ᏡOw <3C`ךn-`h'|JY5w;W 2R;Xc L0d0㱦 $XSvv fb0㱦 $XSvv fbbl5nW-YK]KyX}u!,z& Rx{GbA=񙍤J9C3 0#.ڼ|* L0d0㱦 $XSvv fb0㱦 $XSvv fb`>Պ<僆nqn Aøg:vFJqvٷg q-oUJbـؾWG kEBm Kj6f;`w{DQ d9cb N0e0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&1'{{f 4 U|y=}8#(q-`APE.-۱|_YdHڂv-5,MybILn#~S+ t)+ّ) p Y? zmhY0 L0d0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&0N'C._1}SDyzj7>b Fν L0d0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&b$4ZW'YZR Ŗ]A%G !Q ` Ui< Q^+L J;j;bo]󔙀q&~~ wY~Z(ia1bЎ窹TbYfBzPlC8䉀p?e9 C8' 3fSI;n9ٰ' RWTRb\k:@( Q&Nu#rF^&b L0d00(P֦ J"%_[QZ|ɓίfO<k4!b!TOy)9ML發C {I^HM 6bS0uDk"Z/j!e$r( N0e01yN'C._=%,W1t ?uP.׷`99O$!L, S`/rueOY6q;]K9/ԋ`#{Yx\i`>OКDz#.>A ~%U N0e01JJd~2HE^9,(߂0b#{}sNnDe`xr|K38Z+LY 4_q*_p`Jl`v/*݃<{eE~(v~2qQ4$A[ L0d00^ܕ (eА⽜s>Y~[*m9xVSmr_W`3E)wi^}>q au:uZcSqIW`اvDc/.R(H$Ouʼn#'S{ L0d00yN'C._1ڸM3 9 8+՗SZ0`q9 [:[nbei.A 9op(Cm=b_~bT"q8L0˭^VC5'KS N0e01Q; SݴN}xgטգD 4:wfW bnQ >dx1.u߉Bfkȋ2$@Jī(+y#b&o(e: KR5w yDʯSEu?L -Խ N0e01gcS 1Iz˲ &0Z*CcI왞Pb`/ Zѩyr jW Ցw[dцz$bTdI:77;H;|ys?Sh0/zQSmE:;0Xة N0e01uNCSe)m^%,ҸOx!2#@bvfdˆ=m9|(Ej$eSҪHd_eV}1bM{CLӖ0J"g5r^{noQZ| N0e01'lBB/qe}A[ӐCKj~4 bR{o799?ƃCYaV kY"/bp)M9 |ܳ UBY۝'P)lYֶ-v S N0e01(HXkSAwr%@{bԂ# kYeE=?pk=bwn*s")=!r(6ifY$]hژrb\|ܚir ZQ2tz4NĂ7x L0d00!d;m7ӤN# `$lueM6 k2F' /KWtEiFdiHA8IJ`(G!gpsj jx{ivfc&mCP.MIU'݋ L0d00y\;r÷yß)ULБ/NbϺz]r`P8Ɏ@%}6( HCXX6G w)$V1bIǖ+,lb-?xUP k̼pr"yyR!Y7(/ N0e01 MB8=rV+r?ܹ#Yޫӓ<`M?A<<>M61L6~ekhD̡$(4f w&`h ~{=8!1F`xnV s.wY_ݚ L0d00L}!XغcLA"ەԻ`c\BC75ҽ}h"C<)+3H:b2%e:ZZU#o;(bӰHz.W;=tu`4 N0e01ۚLщ{PLtun^D} b,4EqW޺à} R|EOAC}T"N?dRAN?"9b*KeevW0DAWUUO `\#ߛ.s?>NlfThQU=Y\ n050UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&`ni(MSMml"`1ܖv,3H$Ǘ;cI2ֵ!cԘŒ N0e0ٙ{i&E[YY4QџnOnd[Ra1wMRv76Z@vL`g[y$80]p9LuIzyLr+?agDV`>ѿo;wIF=vvb̕\A9ywNiS~3Ʌ5Gb{kay # L0d0ٙ{i&E[YY4QџnOnd[Ra0Z_/&0TS8Nڣ5 N*v zj`4N29hh8[`MqmB}3<= b+;wR춓闽eFF~b?,VcH-# N0e1"7 tn;bYAT*8U]U)l:T^8rv 0UUUUUUUUUUUUUUUUUUUUUUUUBvo+Qg^(xc&`Cvɉ>w)lvj6M12U>Pqk*ek`) xX"V$)ܶIM|zQ N0e1"7 tn;bYAT*8U]U)l:T^8rv 0$I$I$I$I$I$I$I$I{Guqo=j(3*~`Āg2<>8LJKg>DK?4;t`06C3/e#ܭ/NivcKv*Y[ N0e1"7 tn;bYAT*8U]U)l:T^8rv 0ffffffffffffffffffffffffOR3IEzyܗ *Na`k%>;JȋXZ+2xvjZSKD 8n ػ?(Ɵb;_ ZYMRuzuE,NYbw4}vp) P0f1"7 tn;bYAT*8U]U)l:T^8rv 1wMRv76Z@vL`'/Xd 1n:U>/Vw/=K<'o598j@D`5,3iFBOqTh0SDOfݧoWɯg P0f1"7 tn;bYAT*8U]U)l:T^8rv 1mmmmmmmmgrز6bSthdλYjz`7&Y-[iaO'U/y}|`bmb䰉 Uyݲ/j[^6UM4 N0e1"7 tn;bYAT*8U]U)l:T^8rv 0Z_/&0TS8Nڣ5 N*v zj- /- 3= /= 3L0d02@IqNZ^\^aBa A])#ӱJ0C&uorc`dyxǩT31;cD6)SMsgP0f1:fUf5IL)+`tnq Ċ̳yc41e5S9`mdA'a.rrO N0e0#EW!m]NXmtR (p[I1{vk= v jJYg']nsKAoӺ(N0e0\V_%m,t3&V[N ėd!+Ңnx,1. g>TYkunng^fODwǎh@' N0e0df`R Ҙ,2tK҇r/lCs L[Hq16p˞tUԕ(Onj[ %) Ġm[WV3*_' N0e1IlraD0A{E0]0MCBa}Ãw'p2wrFDA09pd["Ĕ|]A[0:(T TS̸:Dzy' N0e0Dwxe =uK&\dRMan1⟪Q7Z~t|ǣ ieLL|jc\kO#% L0d02DvE|F;t !mpbKơ FF^]c&< e)0P مퟕi{ʒd&fNhdu }l.$"ܓ#% L0d0^$|JJE&A5o:F͆qmsZ=vVPffk0~|KG:+7k@ MiFqdtTYZmyU#% N0e0fj&[?6vg>054눲`)4Lr?笜Z3 15ܐ 7T/N6l(~Gc ㅭ N0e1Ԩӥv: dK5 5^@f{fi;2Y:zPBH0Wz5Lon,+c¢yOv\lda N0e1†ђyӾ*7^AwAըh'۳͂9HJ"0 0[`^]ggL %UnFkB1+*J@ N0e1xUg Qb ?3kNlkb$9H_AKG |0)Z@bgE'D`@b XF\V-A+ 3z! N0e0 l6Af"UjYldMиhj ~Srځ1A1W-G~JbJq[ WovA! N0e1>Yq]lkloi=ipJ.VBA__QB g0dqrDЪisf3f0#fkpI02ʖ]mp||D3Mf§eg@BQ̇I-W3;0 F`5  N0e1FF'k3OFtqof Q¦Ͻ2}%q+0J#x3i;N,ċ(_d̝CY7~n  L0d05f- hl /// /// The `m` field contains a SHA-384 prehash of the `Msg` field in the /// original `SigTen.txt`. pub const ECDSA_TEST_VECTORS: &[TestVector; 15] = &[ TestVector { d: &hex!("201b432d8df14324182d6261db3e4b3f46a8284482d52e370da41e6cbdf45ec2952f5db7ccbce3bc29449f4fb080ac97"), q_x: &hex!("c2b47944fb5de342d03285880177ca5f7d0f2fcad7678cce4229d6e1932fcac11bfc3c3e97d942a3c56bf34123013dbf"), q_y: &hex!("37257906a8223866eda0743c519616a76a758ae58aee81c5fd35fbf3a855b7754a36d4a0672df95d6c44a81cf7620c2d"), k: &hex!("dcedabf85978e090f733c6e16646fa34df9ded6e5ce28c6676a00f58a25283db8885e16ce5bf97f917c81e1f25c9c771"), m: &hex!("31a452d6164d904bb5724c878280231eae705c29ce9d4bc7d58e020e1085f17eebcc1a38f0ed0bf2b344d81fbd896825"), r: &hex!("50835a9251bad008106177ef004b091a1e4235cd0da84fff54542b0ed755c1d6f251609d14ecf18f9e1ddfe69b946e32"), s: &hex!("0475f3d30c6463b646e8d3bf2455830314611cbde404be518b14464fdb195fdcc92eb222e61f426a4a592c00a6a89721"), }, TestVector { d: &hex!("23d9f4ea6d87b7d6163d64256e3449255db14786401a51daa7847161bf56d494325ad2ac8ba928394e01061d882c3528"), q_x: &hex!("5d42d6301c54a438f65970bae2a098cbc567e98840006e356221966c86d82e8eca515bca850eaa3cd41f175f03a0cbfd"), q_y: &hex!("4aef5a0ceece95d382bd70ab5ce1cb77408bae42b51a08816d5e5e1d3da8c18fcc95564a752730b0aabea983ccea4e2e"), k: &hex!("67ba379366049008593eac124f59ab017358892ee0c063d38f3758bb849fd25d867c3561563cac1532a323b228dc0890"), m: &hex!("a92784916a40feaebfeab16ea28c0c65e45c5e81eb634052944865708072e20110bd669a9838d7e722e94ac75245cdd3"), r: &hex!("fb318f4cb1276282bb43f733a7fb7c567ce94f4d02924fc758635ab2d1107108bf159b85db080cdc3b30fbb5400016f3"), s: &hex!("588e3d7af5da03eae255ecb1813100d95edc243476b724b22db8e85377660d7645ddc1c2c2ee4eaea8b683dbe22f86ca"), }, TestVector { d: &hex!("b5f670e98d8befc46f6f51fb2997069550c2a52ebfb4e5e25dd905352d9ef89eed5c2ecd16521853aadb1b52b8c42ae6"), q_x: &hex!("44ffb2a3a95e12d87c72b5ea0a8a7cb89f56b3bd46342b2303608d7216301c21b5d2921d80b6628dc512ccb84e2fc278"), q_y: &hex!("e4c1002f1828abaec768cadcb7cf42fbf93b1709ccae6df5b134c41fae2b9a188bfbe1eccff0bd348517d7227f2071a6"), k: &hex!("229e67638f712f57bea4c2b02279d5ccad1e7c9e201c77f6f01aeb81ea90e62b44b2d2107fd66d35e56608fff65e28e4"), m: &hex!("b2acf6b4ae1ba9985c1e657313d59157939c21868302f6f5c5dbf037867035ae7c2009bad9fce472579923f7b4b87795"), r: &hex!("b11db592e4ebc75b6472b879b1d8ce57452c615aef20f67a280f8bca9b11a30ad4ac9d69541258c7dd5d0b4ab8dd7d49"), s: &hex!("4eb51db8004e46d438359abf060a9444616cb46b4f99c9a05b53ba6df02e914c9c0b6cc3a9791d804d2e4c0984dab1cc"), }, TestVector { d: &hex!("de5975d8932533f092e76295ed6b23f10fc5fba48bfb82c6cc714826baf0126813247f8bd51d5738503654ab22459976"), q_x: &hex!("f1fabafc01fec7e96d982528d9ef3a2a18b7fe8ae0fa0673977341c7ae4ae8d8d3d67420343d013a984f5f61da29ae38"), q_y: &hex!("1a31cf902c46343d01b2ebb614bc789c313b5f91f9302ad9418e9c797563e2fa3d44500f47b4e26ad8fdec1a816d1dcf"), k: &hex!("fc5940e661542436f9265c34bce407eff6364bd471aa79b90c906d923e15c9ed96eea4e86f3238ea86161d13b7d9359d"), m: &hex!("ec21c9d03a7270ea9ce7e9ff83211bac2fb104d078217c370248a3aba81f6c586852f19ced56dc71f83f5251d7381c8a"), r: &hex!("c2fbdd6a56789024082173725d797ef9fd6accb6ae664b7260f9e83cb8ab2490428c8b9c52e153612295432fec4d59cd"), s: &hex!("8056c5bb57f41f73082888b234fcda320a33250b5da012ba1fdb4924355ae679012d81d2c08fc0f8634c708a4833232f"), }, TestVector { d: &hex!("11e0d470dc31fab0f5722f87b74a6c8d7414115e58ceb38bfcdced367beac3adbf1fe9ba5a04f72e978b1eb54597eabc"), q_x: &hex!("1950166989164cbfd97968c7e8adb6fbca1873ebef811ea259eb48b7d584627f0e6d6c64defe23cbc95236505a252aa1"), q_y: &hex!("41ef424b5cb076d4e32accd9250ea75fcf4ffd81814040c050d58c0a29b06be11edf67c911b403e418b7277417e52906"), k: &hex!("e56904028226eb04f8d071e3f9cefec91075a81ca0fa87b44cae148fe1ce9827b5d1910db2336d0eb9813ddba3e4d7b5"), m: &hex!("f0272d0a51ee61f86d0875ca7800e12744ef6ffbac72bdda7c54ba24e5a5a6bd69ebe6f429cc20ac12b926d392efc4ce"), r: &hex!("c38ef30f55624e8935680c29f8c24824877cf48ffc0ef015e62de1068893353030d1193bf9d34237d7ce6ba92c98b0fe"), s: &hex!("651b8c3d5c9d5b936d300802a06d82ad54f7b1ba4327b2f031c0c5b0cb215ad4354edc7f932d934e877dfa1cf51b13fe"), }, TestVector { d: &hex!("5c6bbf9fbcbb7b97c9535f57b431ed1ccae1945b7e8a4f1b032016b07810bd24a9e20055c0e9306650df59ef7e2cd8c2"), q_x: &hex!("2e01c5b59e619e00b79060a1e8ef695472e23bf9a511fc3d5ed77a334a242557098e40972713732c5291c97adf9cf2cf"), q_y: &hex!("563e3fe4ad807e803b9e961b08da4dde4cea8925649da0d93221ce4cdceabc6a1db7612180a8c6bef3579c65539b97e9"), k: &hex!("03d23f1277b949cb6380211ad9d338e6f76c3eedac95989b91d0243cfb734a54b19bca45a5d13d6a4b9f815d919eea77"), m: &hex!("e114c6204bee5bf0bbdf9ffc139bb99f09e7ea2186da3ee1e011dd059185d57c4953a130d34ff0df3fc6782dda199ee8"), r: &hex!("abab65308f0b79c4f3a9ff28dd490acb0c320434094cef93e75adfe17e5820dc1f77544cfaaacdc8cf9ac8b38e174bef"), s: &hex!("11b783d879a6de054b316af7d56e526c3dce96c85289122e3ad927cfa77bfc50b4a96c97f85b1b8221be2df083ff58fb"), }, TestVector { d: &hex!("ffc7dedeff8343721f72046bc3c126626c177b0e48e247f44fd61f8469d4d5f0a74147fabaa334495cc1f986ebc5f0b1"), q_x: &hex!("51c78c979452edd53b563f63eb3e854a5b23e87f1b2103942b65f77d024471f75c8ce1cc0dfef83292b368112aa5126e"), q_y: &hex!("313e6aaf09caa3ba30f13072b2134878f14a4a01ee86326cccbff3d079b4df097dc57985e8c8c834a10cb9d766169366"), k: &hex!("c3de91dbe4f777698773da70dd610ef1a7efe4dc00d734399c7dd100728006a502822a5a7ff9129ffd8adf6c1fc1211a"), m: &hex!("f11e38f4037ae3ffd0fde97c08e2e5acbc26e3ac5828a86c182232be90ef6fc0f5d21a9b1a7b93472d78c103b4136019"), r: &hex!("f4f477855819ad8b1763f53691b76afbc4a31a638b1e08c293f9bcd55decf797f9913ca128d4b45b2e2ea3e82c6cf565"), s: &hex!("7c26be29569ef95480a6d0c1af49dc10a51a0a8931345e48c0c39498bfb94d62962980b56143a7b41a2fddc8794c1b7f"), }, TestVector { d: &hex!("adca364ef144a21df64b163615e8349cf74ee9dbf728104215c532073a7f74e2f67385779f7f74ab344cc3c7da061cf6"), q_x: &hex!("ef948daae68242330a7358ef73f23b56c07e37126266db3fa6eea233a04a9b3e4915233dd6754427cd4b71b75854077d"), q_y: &hex!("009453ef1828eaff9e17c856d4fc1895ab60051312c3e1db1e3766566438b2990cbf9945c2545619e3e0145bc6a79004"), k: &hex!("a2da3fae2e6da3cf11b49861afb34fba357fea89f54b35ce5ed7434ae09103fe53e2be75b93fc579fedf919f6d5e407e"), m: &hex!("f8d0170479b2d1a8f50c80556e67ff345592c8b7dcda4e4f6099f993c1a71bff6d3b60190715ae1215a8a759a8eb13df"), r: &hex!("dda994b9c428b57e9f8bbaebba0d682e3aac6ed828e3a1e99a7fc4c804bff8df151137f539c7389d80e23d9f3ee497bf"), s: &hex!("a0d6b10ceffd0e1b29cf784476f9173ba6ecd2cfc7929725f2d6e24e0db5a4721683640eaa2bbe151fb57560f9ce594b"), }, TestVector { d: &hex!("39bea008ec8a217866dcbdb1b93da34d1d3e851d011df9ef44b7828b3453a54aa70f1df9932170804eacd207e4f7e91d"), q_x: &hex!("5709ec4305a9c3271c304face6c148142490b827a73a4c17affcfd01fffd7eaa65d2fdedfa2419fc64ed910823513faf"), q_y: &hex!("b083cda1cf3be6371b6c06e729ea6299213428db57119347247ec1fcd44204386cc0bca3f452d9d864b39efbfc89d6b2"), k: &hex!("3c90cc7b6984056f570542a51cbe497ce4c11aeae8fc35e8fd6a0d9adeb650e8644f9d1d5e4341b5adc81e27f284c08f"), m: &hex!("86bc7536faf2de20028159ce93e293d0a7f5721fb6680b5b070c3f70aba845de2eaed9245144babc38c49cce59f3eac7"), r: &hex!("d13646895afb1bfd1953551bb922809c95ad65d6abe94eb3719c899aa1f6dba6b01222c7f283900fe98628b7597b6ea6"), s: &hex!("4a9a38afda04c0a6b0058943b679bd02205b14d0f3d49b8f31aac289129780cdb1c555def8c3f9106b478729e0c7efaa"), }, TestVector { d: &hex!("e849cf948b241362e3e20c458b52df044f2a72deb0f41c1bb0673e7c04cdd70811215059032b5ca3cc69c345dcce4cf7"), q_x: &hex!("06c037a0cbf43fdf335dff33de06d34348405353f9fdf2ce1361efba30fb204aea9dbd2e30da0a10fd2d876188371be6"), q_y: &hex!("360d38f3940e34679204b98fbf70b8a4d97f25443e46d0807ab634ed5891ad864dd7703557aa933cd380e26eea662a43"), k: &hex!("32386b2593c85e877b70e5e5495936f65dc49553caef1aa6cc14d9cd370c442a0ccfab4c0da9ec311b67913b1b575a9d"), m: &hex!("1128c8b09573a993adaa0a68f3ca965db30870db46de70d29e3b9a7d110ba0cd57633f1713173c62331b36fb925fa874"), r: &hex!("5886078d3495767e330c7507b7ca0fa07a50e59912a416d89f0ab1aa4e88153d6eaf00882d1b4aa64153153352d853b5"), s: &hex!("2cc10023bf1bf8ccfd14b06b82cc2114449a352389c8ff9f6f78cdc4e32bde69f3869da0e17f691b329682ae7a36e1aa"), }, TestVector { d: &hex!("d89607475d509ef23dc9f476eae4280c986de741b63560670fa2bd605f5049f1972792c0413a5b3b4b34e7a38b70b7ca"), q_x: &hex!("49a1c631f31cf5c45b2676b1f130cbf9be683d0a50dffae0d147c1e9913ab1090c6529a84f47ddc7cf025921b771355a"), q_y: &hex!("1e207eece62f2bcc6bdabc1113158145170be97469a2904eaaa93aad85b86a19719207f3e423051f5b9cbbe2754eefcb"), k: &hex!("78613c570c8d33b7dd1bd1561d87e36282e8cf4843e7c344a2b2bb6a0da94756d670eeaffe434f7ae7c780f7cf05ca08"), m: &hex!("ab9a6d22c8d7675bc8e99e3cafed8318f33051ba5398ce0e9d8e8d3d537a6a908d4c2ace3e6d8204d0236d863eee3c28"), r: &hex!("66f92b39aa3f4aeb9e2dc03ac3855406fa3ebbab0a6c88a78d7a03482f0c9868d7b78bc081ede0947c7f37bf193074ba"), s: &hex!("e5c64ed98d7f3701193f25dd237d59c91c0da6e26215e0889d82e6d3e416693f8d58843cf30ab10ab8d0edd9170b53ad"), }, TestVector { d: &hex!("083e7152734adf342520ae377087a223688de2899b10cfcb34a0b36bca500a4dfa530e2343e6a39da7ae1eb0862b4a0d"), q_x: &hex!("70a0f16b6c61172659b027ed19b18fd8f57bd28dc0501f207bd6b0bb065b5671cf3dd1ed13d388dcf6ccc766597aa604"), q_y: &hex!("4f845bf01c3c3f6126a7368c3454f51425801ee0b72e63fb6799b4420bfdebe3e37c7246db627cc82c09654979c700bb"), k: &hex!("28096ababe29a075fbdf894709a20d0fdedb01ed3eeacb642a33a0da6aed726e13caf6cf206792ec359f0c9f9b567552"), m: &hex!("68f858243fe465eb91dc2481333cbb1958883ef25099d45cf02721d17d2846d2cec4689884ae7c0412332e035a1fa3fc"), r: &hex!("ee2923f9b9999ea05b5e57f505bed5c6ba0420def42c6fa90eef7a6ef770786525546de27cdeb2f8586f8f29fb4ee67c"), s: &hex!("50ef923fb217c4cf65a48b94412fda430fac685f0da7bd574557c6c50f5b22e0c8354d99f2c2f2c2691f252f93c7d84a"), }, TestVector { d: &hex!("63578d416215aff2cc78f9b926d4c7740a77c142944e104aa7422b19a616898262d46a8a942d5e8d5db135ee8b09a368"), q_x: &hex!("cadbacef4406099316db2ce3206adc636c2bb0a835847ed7941efb02862472f3150338f13f4860d47f39b7e098f0a390"), q_y: &hex!("752ad0f22c9c264336cde11bbc95d1816ed4d1b1500db6b8dce259a42832e613c31178c2c7995206a62e201ba108f570"), k: &hex!("7b69c5d5b4d05c9950dc94c27d58403b4c52c004b80a80418ad3a89aabc5d34f21926729e76afd280cc8ee88c9805a2a"), m: &hex!("dca5ebfebeac1696eff4a89162469c6937b80f8f8cf17299856de2e13d8f8a199bff3085cee59366886164bcc03f7e90"), r: &hex!("db054addb6161ee49c6ce2e4d646d7670754747b6737ca8516e9d1e87859937c3ef9b1d2663e10d7e4bd00ec85b7a97a"), s: &hex!("fcc504e0f00ef29587e4bc22faada4db30e2cb1ac552680a65785ae87beb666c792513f2be7a3180fc544296841a0e27"), }, TestVector { d: &hex!("ed4df19971658b74868800b3b81bc877807743b25c65740f1d6377542afe2c6427612c840ada31a8eb794718f37c7283"), q_x: &hex!("33093a0568757e8b58df5b72ea5fe5bf26e6f7aeb541b4c6a8c189c93721749bcaceccf2982a2f0702586a9f812fc66f"), q_y: &hex!("ebe320d09e1f0662189d50b85a20403b821ac0d000afdbf66a0a33f304726c69e354d81c50b94ba3a5250efc31319cd1"), k: &hex!("d9b4cd1bdfa83e608289634dbfcee643f07315baf743fc91922880b55a2feda3b38ddf6040d3ba10985cd1285fc690d5"), m: &hex!("f9b152150f7dc99d5262c9da04dde148009730fb2af9ac753b9c64488d27c817f68c17ae1ff61e50ebb6749230c59a71"), r: &hex!("009c74063e206a4259b53decff5445683a03f44fa67252b76bd3581081c714f882f882df915e97dbeab061fa8b3cc4e7"), s: &hex!("d40e09d3468b46699948007e8f59845766dbf694b9c62066890dd055c0cb9a0caf0aa611fb9f466ad0bbb00dbe29d7eb"), }, TestVector { d: &hex!("e9c7e9a79618d6ff3274da1abd0ff3ed0ec1ae3b54c3a4fd8d68d98fb04326b7633fc637e0b195228d0edba6bb1468fb"), q_x: &hex!("a39ac353ca787982c577aff1e8601ce192aa90fd0de4c0ed627f66a8b6f02ae51315543f72ffc1c48a7269b25e7c289a"), q_y: &hex!("9064a507b66b340b6e0e0d5ffaa67dd20e6dafc0ea6a6faee1635177af256f9108a22e9edf736ab4ae8e96dc207b1fa9"), k: &hex!("b094cb3a5c1440cfab9dc56d0ec2eff00f2110dea203654c70757254aa5912a7e73972e607459b1f4861e0b08a5cc763"), m: &hex!("14f785ebb5a3b1bdff516a6b580e245b3c81aff37e1035e354b084a6691e973e0de30bb2a0490fca2d757f8191d7560a"), r: &hex!("ee82c0f90501136eb0dc0e459ad17bf3be1b1c8b8d05c60068a9306a346326ff7344776a95f1f7e2e2cf9477130e735c"), s: &hex!("af10b90f203af23b7500e070536e64629ba19245d6ef39aab57fcdb1b73c4c6bf7070c6263544633d3d358c12a178138"), }, ]; p384-0.13.0/src/test_vectors/group.rs000064400000000000000000000404261046102023000154260ustar 00000000000000//! Test vectors for the secp384r1 group. use hex_literal::hex; /// Repeated addition of the generator. /// /// These are the first 20 test vectors from pub const ADD_TEST_VECTORS: &[([u8; 48], [u8; 48])] = &[ ( hex!("AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7"), hex!("3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F") ), ( hex!("08D999057BA3D2D969260045C55B97F089025959A6F434D651D207D19FB96E9E4FE0E86EBE0E64F85B96A9C75295DF61"), hex!("8E80F1FA5B1B3CEDB7BFE8DFFD6DBA74B275D875BC6CC43E904E505F256AB4255FFD43E94D39E22D61501E700A940E80") ), ( hex!("077A41D4606FFA1464793C7E5FDC7D98CB9D3910202DCD06BEA4F240D3566DA6B408BBAE5026580D02D7E5C70500C831"), hex!("C995F7CA0B0C42837D0BBE9602A9FC998520B41C85115AA5F7684C0EDC111EACC24ABD6BE4B5D298B65F28600A2F1DF1") ), ( hex!("138251CD52AC9298C1C8AAD977321DEB97E709BD0B4CA0ACA55DC8AD51DCFC9D1589A1597E3A5120E1EFD631C63E1835"), hex!("CACAE29869A62E1631E8A28181AB56616DC45D918ABC09F3AB0E63CF792AA4DCED7387BE37BBA569549F1C02B270ED67") ), ( hex!("11DE24A2C251C777573CAC5EA025E467F208E51DBFF98FC54F6661CBE56583B037882F4A1CA297E60ABCDBC3836D84BC"), hex!("8FA696C77440F92D0F5837E90A00E7C5284B447754D5DEE88C986533B6901AEB3177686D0AE8FB33184414ABE6C1713A") ), ( hex!("627BE1ACD064D2B2226FE0D26F2D15D3C33EBCBB7F0F5DA51CBD41F26257383021317D7202FF30E50937F0854E35C5DF"), hex!("09766A4CB3F8B1C21BE6DDA6C14F1575B2C95352644F774C99864F613715441604C45B8D84E165311733A408D3F0F934") ), ( hex!("283C1D7365CE4788F29F8EBF234EDFFEAD6FE997FBEA5FFA2D58CC9DFA7B1C508B05526F55B9EBB2040F05B48FB6D0E1"), hex!("9475C99061E41B88BA52EFDB8C1690471A61D867ED799729D9C92CD01DBD225630D84EDE32A78F9E64664CDAC512EF8C") ), ( hex!("1692778EA596E0BE75114297A6FA383445BF227FBE58190A900C3C73256F11FB5A3258D6F403D5ECE6E9B269D822C87D"), hex!("DCD2365700D4106A835388BA3DB8FD0E22554ADC6D521CD4BD1C30C2EC0EEC196BADE1E9CDD1708D6F6ABFA4022B0AD2") ), ( hex!("8F0A39A4049BCB3EF1BF29B8B025B78F2216F7291E6FD3BAC6CB1EE285FB6E21C388528BFEE2B9535C55E4461079118B"), hex!("62C77E1438B601D6452C4A5322C3A9799A9B3D7CA3C400C6B7678854AED9B3029E743EFEDFD51B68262DA4F9AC664AF8") ), ( hex!("A669C5563BD67EEC678D29D6EF4FDE864F372D90B79B9E88931D5C29291238CCED8E85AB507BF91AA9CB2D13186658FB"), hex!("A988B72AE7C1279F22D9083DB5F0ECDDF70119550C183C31C502DF78C3B705A8296D8195248288D997784F6AB73A21DD") ), ( hex!("099056E27DA7B998DA1EEEC2904816C57FE935ED5837C37456C9FD14892D3F8C4749B66E3AFB81D626356F3B55B4DDD8"), hex!("2E4C0C234E30AB96688505544AC5E0396FC4EED8DFC363FD43FF93F41B52A3255466D51263AAFF357D5DBA8138C5E0BB") ), ( hex!("952A7A349BD49289AB3AC421DCF683D08C2ED5E41F6D0E21648AF2691A481406DA4A5E22DA817CB466DA2EA77D2A7022"), hex!("A0320FAF84B5BC0563052DEAE6F66F2E09FB8036CE18A0EBB9028B096196B50D031AA64589743E229EF6BACCE21BD16E") ), ( hex!("A567BA97B67AEA5BAFDAF5002FFCC6AB9632BFF9F01F873F6267BCD1F0F11C139EE5F441ABD99F1BAAF1CA1E3B5CBCE7"), hex!("DE1B38B3989F3318644E4147AF164ECC5185595046932EC086329BE057857D66776BCB8272218A7D6423A12736F429CC") ), ( hex!("E8C8F94D44FBC2396BBEAC481B89D2B0877B1DFFD23E7DC95DE541EB651CCA2C41ABA24DBC02DE6637209ACCF0F59EA0"), hex!("891AE44356FC8AE0932BCBF6DE52C8A933B86191E7728D79C8319413A09D0F48FC468BA05509DE22D7EE5C9E1B67B888") ), ( hex!("B3D13FC8B32B01058CC15C11D813525522A94156FFF01C205B21F9F7DA7C4E9CA849557A10B6383B4B88701A9606860B"), hex!("152919E7DF9162A61B049B2536164B1BEEBAC4A11D749AF484D1114373DFBFD9838D24F8B284AF50985D588D33F7BD62") ), ( hex!("D5D89C3B5282369C5FBD88E2B231511A6B80DFF0E5152CF6A464FA9428A8583BAC8EBC773D157811A462B892401DAFCF"), hex!("D815229DE12906D241816D5E9A9448F1D41D4FC40E2A3BDB9CABA57E440A7ABAD1210CB8F49BF2236822B755EBAB3673") ), ( hex!("4099952208B4889600A5EBBCB13E1A32692BEFB0733B41E6DCC614E42E5805F817012A991AF1F486CAF3A9ADD9FFCC03"), hex!("5ECF94777833059839474594AF603598163AD3F8008AD0CD9B797D277F2388B304DA4D2FAA9680ECFA650EF5E23B09A0") ), ( hex!("DFB1FE3A40F7AC9B64C41D39360A7423828B97CB088A4903315E402A7089FA0F8B6C2355169CC9C99DFB44692A9B93DD"), hex!("453ACA1243B5EC6B423A68A25587E1613A634C1C42D2EE7E6C57F449A1C91DC89168B7036EC0A7F37A366185233EC522") ), ( hex!("8D481DAB912BC8AB16858A211D750B77E07DBECCA86CD9B012390B430467AABF59C8651060801C0E9599E68713F5D41B"), hex!("A1592FF0121460857BE99F2A60669050B2291B68A1039AA0594B32FD7ADC0E8C11FFBA5608004E646995B07E75E52245") ), ( hex!("605508EC02C534BCEEE9484C86086D2139849E2B11C1A9CA1E2808DEC2EAF161AC8A105D70D4F85C50599BE5800A623F"), hex!("5158EE87962AC6B81F00A103B8543A07381B7639A3A65F1353AEF11B733106DDE92E99B78DE367B48E238C38DAD8EEDD") ) ]; /// Scalar multiplication with the generator. /// /// These are the test vectors from that are not /// part of [`ADD_TEST_VECTORS`]. pub const MUL_TEST_VECTORS: &[([u8; 48], [u8; 48], [u8; 48])] = &[ ( hex!("00000000000000000000000000000000000000000000000000000000000000000000000000000000018ebbb95eed0e13"), hex!("A499EFE48839BC3ABCD1C5CEDBDD51904F9514DB44F4686DB918983B0C9DC3AEE05A88B72433E9515F91A329F5F4FA60"), hex!("3B7CA28EF31F809C2F1BA24AAED847D0F8B406A4B8968542DE139DB5828CA410E615D1182E25B91B1131E230B727D36A"), ), ( hex!("000000000000000000000000000000000000000000000000000000000000000000159d893d4cdd747246cdca43590e13"), hex!("90A0B1CAC601676B083F21E07BC7090A3390FE1B9C7F61D842D27FA315FB38D83667A11A71438773E483F2A114836B24"), hex!("3197D3C6123F0D6CD65D5F0DE106FEF36656CB16DC7CD1A6817EB1D51510135A8F492F72665CFD1053F75ED03A7D04C9"), ), ( hex!("41ffc1fffffe01fffc0003fffe0007c001fff00003fff07ffe0007c000000003ffffff807fff8007fffff800fffe0000"), hex!("F2A066BD332DC59BBC3D01DA1B124C687D8BB44611186422DE94C1DA4ECF150E664D353CCDB5CB2652685F8EB4D2CD49"), hex!("D6ED0BF75FDD8E53D87765FA746835B673881D6D1907163A2C43990D75B454294F942EC571AD5AAE1806CAF2BB8E9A4A"), ), ( hex!("400000003803ffffffcfffffe0800000001ffffe03ffff1ffff801fffffffff8000001fffff800ffffff8001fffc7fff"), hex!("5C7F9845D1C4AA44747F9137B6F9C39B36B26B8A62E8AF97290434D5F3B214F5A0131550ADB19058DC4C8780C4165C4A"), hex!("712F7FCCC86F647E70DB8798228CB16344AF3D00B139B6F8502939C2A965AF0EB4E39E2E16AB8F597B8D5630A50C9D85"), ), ( hex!("4000008000fffffc000003f00000ffffffff800003800f8000e0000e000000ffffffe00000ffffffc0007e0000000fe0"), hex!("DD5838F7EC3B8ACF1BECFD746F8B668C577107E93548ED93ED0D254C112E76B10F053109EF8428BFCD50D38C4C030C57"), hex!("33244F479CDAC34F160D9E4CE2D19D2FF0E3305B5BF0EEF29E91E9DE6E28F678C61B773AA7E3C03740E1A49D1AA2493C"), ), ( hex!("000000001ffc000000fff030001f0000fffff0000038000000000002003f007ffffff0000000000000ffe00000000000"), hex!("CB8ED893530BFBA04B4CA655923AAAD109A62BC8411D5925316C32D33602459C33057A1FBCB5F70AEB295D90F9165FBC"), hex!("426AEE3E91B08420F9B357B66D5AFCBCF3956590BF5564DBF9086042EB880493D19DA39AAA6436C6B5FC66CE5596B43F"), ), ( hex!("000fffe0800001ff0001fffffff0000ffffffffffffff80000fffffc1fffffffffffff001ffffffffffffbffffe01ffc"), hex!("67F714012B6B070182122DDD435CC1C2262A1AB88939BC6A2906CB2B4137C5E82B4582160F6403CAB887ACDF5786A268"), hex!("90E31CF398CE2F8C5897C7380BF541075D1B4D3CB70547262B7095731252F181AC0597C66AF8311C7780DB39DEC0BD32"), ), ( hex!("07fffe0001fffff800fff800001ffff0001fffffe001fffc0000003ffe03fffffff80ffff01ffff20001c0003f0001ff"), hex!("55A79DF7B53A99D31462C7E1A5ED5623970715BB1021098CB973A7520CBD6365E613E4B2467486FB37E86E01CEE09B8F"), hex!("B95AEB71693189911661B709A886A1867F056A0EFE401EE11C06030E46F7A87731DA4575863178012208707DD666727C"), ), ( hex!("0000003fff87effe07fe7ffffe07ffe07f0000000003fe007fff03e07c07ffe0007f0017fffffe000003fffff007ffff"), hex!("9539A968CF819A0E52E10EEA3BACA1B6480D7E4DF69BC07002C568569047110EE4FE72FCA423FDD5179D6E0E19C44844"), hex!("A7728F37A0AE0DF2716061900D83A4DA149144129F89A214A8260464BAB609BB322E4E67DE5E4C4C6CB8D25983EC19B0"), ), ( hex!("00ffffff0000007e07fffff80031ffeffdffffc3fffffffff01fffffffff80000000007fc000fc000000004003ffc000"), hex!("933FC13276672AB360D909161CD02D830B1628935DF0D800C6ED602C59D575A86A8A97E3A2D697E3ED06BE741C0097D6"), hex!("F35296BD7A6B4C6C025ED6D84338CCCC7522A45C5D4FBDB1442556CAEFB598128FA188793ADA510EB5F44E90A4E4BEF1"), ), ( hex!("00001fff803ff8000001fff000ffffffe3fff000000007ffdff80000003fff007fffffc01ffffff9ffffe001fc000000"), hex!("0CE31E1C4A937071E6EBACA026A93D783848BCC0C1585DAF639518125FCD1F1629D63041ABFB11FFC8F03FA8B6FCF6BF"), hex!("A69EA55BE4BEAB2D5224050FEBFFBDFCFD614624C3B4F228909EB80012F003756D1C377E52F04FA539237F24DD080E2E"), ), ( hex!("7ff0001fff000fffffffff80007ffc0003f80001fff8000000001fc000000fff000000007ffc01fffc020000003fc000"), hex!("6842CFE3589AC268818291F31D44177A9168DCBC19F321ED66D81ECF59E31B54CCA0DDFD4C4136780171748D69A91C54"), hex!("E3A5ECD5AC725F13DBC631F358C6E817EDCF3A613B83832741A9DB591A0BAE767FC714F70C2E7EA891E4312047DECCC0"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5295f"), hex!("605508EC02C534BCEEE9484C86086D2139849E2B11C1A9CA1E2808DEC2EAF161AC8A105D70D4F85C50599BE5800A623F"), hex!("AEA7117869D53947E0FF5EFC47ABC5F8C7E489C65C59A0ECAC510EE48CCEF92116D16647721C984B71DC73C825271122"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52960"), hex!("8D481DAB912BC8AB16858A211D750B77E07DBECCA86CD9B012390B430467AABF59C8651060801C0E9599E68713F5D41B"), hex!("5EA6D00FEDEB9F7A841660D59F996FAF4DD6E4975EFC655FA6B4CD028523F172EE0045A8F7FFB19B966A4F828A1ADDBA"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52961"), hex!("DFB1FE3A40F7AC9B64C41D39360A7423828B97CB088A4903315E402A7089FA0F8B6C2355169CC9C99DFB44692A9B93DD"), hex!("BAC535EDBC4A1394BDC5975DAA781E9EC59CB3E3BD2D118193A80BB65E36E2366E9748FB913F580C85C99E7BDCC13ADD"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52962"), hex!("4099952208B4889600A5EBBCB13E1A32692BEFB0733B41E6DCC614E42E5805F817012A991AF1F486CAF3A9ADD9FFCC03"), hex!("A1306B8887CCFA67C6B8BA6B509FCA67E9C52C07FF752F32648682D880DC774BFB25B2CF55697F13059AF10B1DC4F65F"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52963"), hex!("D5D89C3B5282369C5FBD88E2B231511A6B80DFF0E5152CF6A464FA9428A8583BAC8EBC773D157811A462B892401DAFCF"), hex!("27EADD621ED6F92DBE7E92A1656BB70E2BE2B03BF1D5C42463545A81BBF585442EDEF3460B640DDC97DD48AB1454C98C"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52964"), hex!("B3D13FC8B32B01058CC15C11D813525522A94156FFF01C205B21F9F7DA7C4E9CA849557A10B6383B4B88701A9606860B"), hex!("EAD6E618206E9D59E4FB64DAC9E9B4E411453B5EE28B650B7B2EEEBC8C2040257C72DB064D7B50AF67A2A773CC08429D"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52965"), hex!("E8C8F94D44FBC2396BBEAC481B89D2B0877B1DFFD23E7DC95DE541EB651CCA2C41ABA24DBC02DE6637209ACCF0F59EA0"), hex!("76E51BBCA903751F6CD4340921AD3756CC479E6E188D728637CE6BEC5F62F0B603B9745EAAF621DD2811A362E4984777"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52966"), hex!("A567BA97B67AEA5BAFDAF5002FFCC6AB9632BFF9F01F873F6267BCD1F0F11C139EE5F441ABD99F1BAAF1CA1E3B5CBCE7"), hex!("21E4C74C6760CCE79BB1BEB850E9B133AE7AA6AFB96CD13F79CD641FA87A82988894347C8DDE75829BDC5ED9C90BD633"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52967"), hex!("952A7A349BD49289AB3AC421DCF683D08C2ED5E41F6D0E21648AF2691A481406DA4A5E22DA817CB466DA2EA77D2A7022"), hex!("5FCDF0507B4A43FA9CFAD215190990D1F6047FC931E75F1446FD74F69E694AF1FCE559B9768BC1DD610945341DE42E91"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52968"), hex!("099056E27DA7B998DA1EEEC2904816C57FE935ED5837C37456C9FD14892D3F8C4749B66E3AFB81D626356F3B55B4DDD8"), hex!("D1B3F3DCB1CF5469977AFAABB53A1FC6903B1127203C9C02BC006C0BE4AD5CD9AB992AEC9C5500CA82A2457FC73A1F44"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52969"), hex!("A669C5563BD67EEC678D29D6EF4FDE864F372D90B79B9E88931D5C29291238CCED8E85AB507BF91AA9CB2D13186658FB"), hex!("567748D5183ED860DD26F7C24A0F132208FEE6AAF3E7C3CE3AFD20873C48FA56D6927E69DB7D77266887B09648C5DE22"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296a"), hex!("8F0A39A4049BCB3EF1BF29B8B025B78F2216F7291E6FD3BAC6CB1EE285FB6E21C388528BFEE2B9535C55E4461079118B"), hex!("9D3881EBC749FE29BAD3B5ACDD3C56866564C2835C3BFF39489877AB51264CFC618BC100202AE497D9D25B075399B507"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296b"), hex!("1692778EA596E0BE75114297A6FA383445BF227FBE58190A900C3C73256F11FB5A3258D6F403D5ECE6E9B269D822C87D"), hex!("232DC9A8FF2BEF957CAC7745C24702F1DDAAB52392ADE32B42E3CF3D13F113E594521E15322E8F729095405CFDD4F52D"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296c"), hex!("283C1D7365CE4788F29F8EBF234EDFFEAD6FE997FBEA5FFA2D58CC9DFA7B1C508B05526F55B9EBB2040F05B48FB6D0E1"), hex!("6B8A366F9E1BE47745AD102473E96FB8E59E2798128668D62636D32FE242DDA8CF27B120CD5870619B99B3263AED1073"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296d"), hex!("627BE1ACD064D2B2226FE0D26F2D15D3C33EBCBB7F0F5DA51CBD41F26257383021317D7202FF30E50937F0854E35C5DF"), hex!("F68995B34C074E3DE41922593EB0EA8A4D36ACAD9BB088B36679B09EC8EABBE8FB3BA4717B1E9ACEE8CC5BF82C0F06CB"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296e"), hex!("11DE24A2C251C777573CAC5EA025E467F208E51DBFF98FC54F6661CBE56583B037882F4A1CA297E60ABCDBC3836D84BC"), hex!("705969388BBF06D2F0A7C816F5FF183AD7B4BB88AB2A211773679ACC496FE513CE889791F51704CCE7BBEB55193E8EC5"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc5296f"), hex!("138251CD52AC9298C1C8AAD977321DEB97E709BD0B4CA0ACA55DC8AD51DCFC9D1589A1597E3A5120E1EFD631C63E1835"), hex!("35351D679659D1E9CE175D7E7E54A99E923BA26E7543F60C54F19C3086D55B22128C7840C8445A96AB60E3FE4D8F1298"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52970"), hex!("077A41D4606FFA1464793C7E5FDC7D98CB9D3910202DCD06BEA4F240D3566DA6B408BBAE5026580D02D7E5C70500C831"), hex!("366A0835F4F3BD7C82F44169FD5603667ADF4BE37AEEA55A0897B3F123EEE1523DB542931B4A2D6749A0D7A0F5D0E20E"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52971"), hex!("08D999057BA3D2D969260045C55B97F089025959A6F434D651D207D19FB96E9E4FE0E86EBE0E64F85B96A9C75295DF61"), hex!("717F0E05A4E4C312484017200292458B4D8A278A43933BC16FB1AFA0DA954BD9A002BC15B2C61DD29EAFE190F56BF17F"), ), ( hex!("ffffffffffffffffffffffffffffffffffffffffffffffffc7634d81f4372ddf581a0db248b0a77aecec196accc52972"), hex!("AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7"), hex!("C9E821B569D9D390A26167406D6D23D6070BE242D765EB831625CEEC4A0F473EF59F4E30E2817E6285BCE2846F15F1A0"), ), ]; p384-0.13.0/src/test_vectors.rs000064400000000000000000000001101046102023000142540ustar 00000000000000//! secp384r1 test vectors. #[cfg(test)] pub mod ecdsa; pub mod group; p384-0.13.0/tests/affine.rs000064400000000000000000000045451046102023000133530ustar 00000000000000//! Affine arithmetic tests. #![cfg(all(feature = "arithmetic", feature = "test-vectors"))] use elliptic_curve::{ group::{prime::PrimeCurveAffine, GroupEncoding}, sec1::{FromEncodedPoint, ToEncodedPoint}, }; use hex_literal::hex; use p384::{AffinePoint, EncodedPoint}; const UNCOMPRESSED_BASEPOINT: &[u8] = &hex!( "04 aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7 3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f" ); const COMPRESSED_BASEPOINT: &[u8] = &hex!( "03 aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7" ); #[test] fn uncompressed_round_trip() { let pubkey = EncodedPoint::from_bytes(UNCOMPRESSED_BASEPOINT).unwrap(); let point = AffinePoint::from_encoded_point(&pubkey).unwrap(); assert_eq!(point, AffinePoint::generator()); let res: EncodedPoint = point.into(); assert_eq!(res, pubkey); } #[test] fn compressed_round_trip() { let pubkey = EncodedPoint::from_bytes(COMPRESSED_BASEPOINT).unwrap(); let point = AffinePoint::from_encoded_point(&pubkey).unwrap(); assert_eq!(point, AffinePoint::generator()); let res: EncodedPoint = point.to_encoded_point(true); assert_eq!(res, pubkey); } #[test] fn uncompressed_to_compressed() { let encoded = EncodedPoint::from_bytes(UNCOMPRESSED_BASEPOINT).unwrap(); let res = AffinePoint::from_encoded_point(&encoded) .unwrap() .to_encoded_point(true); assert_eq!(res.as_bytes(), COMPRESSED_BASEPOINT); } #[test] fn compressed_to_uncompressed() { let encoded = EncodedPoint::from_bytes(COMPRESSED_BASEPOINT).unwrap(); let res = AffinePoint::from_encoded_point(&encoded) .unwrap() .to_encoded_point(false); assert_eq!(res.as_bytes(), UNCOMPRESSED_BASEPOINT); } #[test] fn affine_negation() { let basepoint = AffinePoint::generator(); assert_eq!(-(-basepoint), basepoint); } #[test] fn identity_encoding() { // This is technically an invalid SEC1 encoding, but is preferable to panicking. assert_eq!([0; 49], AffinePoint::IDENTITY.to_bytes().as_slice()); assert!(bool::from( AffinePoint::from_bytes(&AffinePoint::IDENTITY.to_bytes()) .unwrap() .is_identity() )) } p384-0.13.0/tests/projective.rs000064400000000000000000000073531046102023000142750ustar 00000000000000//! Projective arithmetic tests. #![cfg(all(feature = "arithmetic", feature = "test-vectors"))] use elliptic_curve::{ sec1::{self, ToEncodedPoint}, PrimeField, }; use p384::{ test_vectors::group::{ADD_TEST_VECTORS, MUL_TEST_VECTORS}, AffinePoint, ProjectivePoint, Scalar, }; use primeorder::Double; /// Assert that the provided projective point matches the given test vector. // TODO(tarcieri): use coordinate APIs. See zkcrypto/group#30 macro_rules! assert_point_eq { ($actual:expr, $expected:expr) => { let (expected_x, expected_y) = $expected; let point = $actual.to_affine().to_encoded_point(false); let (actual_x, actual_y) = match point.coordinates() { sec1::Coordinates::Uncompressed { x, y } => (x, y), _ => unreachable!(), }; assert_eq!(&expected_x, actual_x.as_slice()); assert_eq!(&expected_y, actual_y.as_slice()); }; } #[test] fn affine_to_projective() { let basepoint_affine = AffinePoint::GENERATOR; let basepoint_projective = ProjectivePoint::GENERATOR; assert_eq!( ProjectivePoint::from(basepoint_affine), basepoint_projective, ); assert_eq!(basepoint_projective.to_affine(), basepoint_affine); assert!(!bool::from(basepoint_projective.to_affine().is_identity())); assert!(bool::from( ProjectivePoint::IDENTITY.to_affine().is_identity() )); } #[test] fn projective_identity_addition() { let identity = ProjectivePoint::IDENTITY; let generator = ProjectivePoint::GENERATOR; assert_eq!(identity + &generator, generator); assert_eq!(generator + &identity, generator); } #[test] fn test_vector_repeated_add() { let generator = ProjectivePoint::GENERATOR; let mut p = generator; for i in 0..ADD_TEST_VECTORS.len() { assert_point_eq!(p, ADD_TEST_VECTORS[i]); p += &generator; } } #[test] fn test_vector_repeated_add_mixed() { let generator = AffinePoint::GENERATOR; let mut p = ProjectivePoint::GENERATOR; for i in 0..ADD_TEST_VECTORS.len() { assert_point_eq!(p, ADD_TEST_VECTORS[i]); p += &generator; } } #[test] fn test_vector_add_mixed_identity() { let generator = ProjectivePoint::GENERATOR; let p0 = generator + ProjectivePoint::IDENTITY; let p1 = generator + AffinePoint::IDENTITY; assert_eq!(p0, p1); } #[test] fn test_vector_double_generator() { let generator = ProjectivePoint::GENERATOR; let mut p = generator; for i in 0..2 { assert_point_eq!(p, ADD_TEST_VECTORS[i]); p = p.double(); } } #[test] fn projective_add_vs_double() { let generator = ProjectivePoint::GENERATOR; assert_eq!(generator + &generator, generator.double()); } #[test] fn projective_add_and_sub() { let basepoint_affine = AffinePoint::GENERATOR; let basepoint_projective = ProjectivePoint::GENERATOR; assert_eq!( (basepoint_projective + &basepoint_projective) - &basepoint_projective, basepoint_projective ); assert_eq!( (basepoint_projective + &basepoint_affine) - &basepoint_affine, basepoint_projective ); } #[test] fn projective_double_and_sub() { let generator = ProjectivePoint::GENERATOR; assert_eq!(generator.double() - &generator, generator); } #[test] fn test_vector_scalar_mult() { let generator = ProjectivePoint::GENERATOR; for (k, coords) in ADD_TEST_VECTORS .iter() .enumerate() .map(|(k, coords)| (Scalar::from(k as u64 + 1), *coords)) .chain( MUL_TEST_VECTORS .iter() .cloned() .map(|(k, x, y)| (Scalar::from_repr(k.into()).unwrap(), (x, y))), ) { let p = generator * &k; assert_point_eq!(p, coords); } }