grpc 1.55.0 → 1.56.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +48 -12
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -0,0 +1,2002 @@
1
+ /* Autogenerated: 'src/ExtractionOCaml/word_by_word_montgomery' --inline --static --use-value-barrier --no-wide-int p256 64 '2^256 - 2^224 + 2^192 + 2^96 - 1' mul square add sub opp from_montgomery to_montgomery nonzero selectznz to_bytes from_bytes one msat divstep divstep_precomp */
2
+ /* curve description: p256 */
3
+ /* machine_wordsize = 64 (from "64") */
4
+ /* requested operations: mul, square, add, sub, opp, from_montgomery, to_montgomery, nonzero, selectznz, to_bytes, from_bytes, one, msat, divstep, divstep_precomp */
5
+ /* m = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff (from "2^256 - 2^224 + 2^192 + 2^96 - 1") */
6
+ /* */
7
+ /* NOTE: In addition to the bounds specified above each function, all */
8
+ /* functions synthesized for this Montgomery arithmetic require the */
9
+ /* input to be strictly less than the prime modulus (m), and also */
10
+ /* require the input to be in the unique saturated representation. */
11
+ /* All functions also ensure that these two properties are true of */
12
+ /* return values. */
13
+ /* */
14
+ /* Computed values: */
15
+ /* eval z = z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) */
16
+ /* 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) */
17
+ /* twos_complement_eval z = let x1 := z[0] + (z[1] << 64) + (z[2] << 128) + (z[3] << 192) in */
18
+ /* if x1 & (2^256-1) < 2^255 then x1 & (2^256-1) else (x1 & (2^256-1)) - 2^256 */
19
+
20
+ #include <stdint.h>
21
+ #include <intrin.h>
22
+ #if defined(_M_X64)
23
+ #include <immintrin.h>
24
+ #endif
25
+
26
+ typedef unsigned char fiat_p256_uint1;
27
+ typedef signed char fiat_p256_int1;
28
+
29
+ #define FIAT_P256_FIAT_INLINE inline
30
+
31
+ /* The type fiat_p256_montgomery_domain_field_element is a field element in the Montgomery domain. */
32
+ /* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */
33
+ typedef uint64_t fiat_p256_montgomery_domain_field_element[4];
34
+
35
+ /* The type fiat_p256_non_montgomery_domain_field_element is a field element NOT in the Montgomery domain. */
36
+ /* Bounds: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]] */
37
+ typedef uint64_t fiat_p256_non_montgomery_domain_field_element[4];
38
+
39
+ #if (-1 & 3) != 3
40
+ #error "This code only works on a two's complement system"
41
+ #endif
42
+
43
+ #define fiat_p256_value_barrier_u64(x) (x)
44
+
45
+
46
+ /*
47
+ * The function fiat_p256_addcarryx_u64 is an addition with carry.
48
+ *
49
+ * Postconditions:
50
+ * out1 = (arg1 + arg2 + arg3) mod 2^64
51
+ * out2 = ⌊(arg1 + arg2 + arg3) / 2^64⌋
52
+ *
53
+ * Input Bounds:
54
+ * arg1: [0x0 ~> 0x1]
55
+ * arg2: [0x0 ~> 0xffffffffffffffff]
56
+ * arg3: [0x0 ~> 0xffffffffffffffff]
57
+ * Output Bounds:
58
+ * out1: [0x0 ~> 0xffffffffffffffff]
59
+ * out2: [0x0 ~> 0x1]
60
+ */
61
+ static FIAT_P256_FIAT_INLINE void fiat_p256_addcarryx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) {
62
+ #if defined(_M_X64)
63
+ *out2 = _addcarry_u64(arg1, arg2, arg3, out1);
64
+ #else
65
+ arg2 += arg1;
66
+ arg1 = arg2 < arg1;
67
+ arg3 += arg2;
68
+ arg1 += arg3 < arg2;
69
+ *out1 = arg3;
70
+ *out2 = arg1;
71
+ #endif
72
+ }
73
+
74
+ /*
75
+ * The function fiat_p256_subborrowx_u64 is a subtraction with borrow.
76
+ *
77
+ * Postconditions:
78
+ * out1 = (-arg1 + arg2 + -arg3) mod 2^64
79
+ * out2 = -⌊(-arg1 + arg2 + -arg3) / 2^64⌋
80
+ *
81
+ * Input Bounds:
82
+ * arg1: [0x0 ~> 0x1]
83
+ * arg2: [0x0 ~> 0xffffffffffffffff]
84
+ * arg3: [0x0 ~> 0xffffffffffffffff]
85
+ * Output Bounds:
86
+ * out1: [0x0 ~> 0xffffffffffffffff]
87
+ * out2: [0x0 ~> 0x1]
88
+ */
89
+ static FIAT_P256_FIAT_INLINE void fiat_p256_subborrowx_u64(uint64_t* out1, fiat_p256_uint1* out2, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) {
90
+ #if defined(_M_X64)
91
+ *out2 = _subborrow_u64(arg1, arg2, arg3, out1); // NOTE: edited after generation
92
+ #else
93
+ *out1 = arg2 - arg3 - arg1;
94
+ *out2 = (arg2 < arg3) | ((arg2 == arg3) & arg1);
95
+ #endif
96
+ }
97
+
98
+ /*
99
+ * The function fiat_p256_mulx_u64 is a multiplication, returning the full double-width result.
100
+ *
101
+ * Postconditions:
102
+ * out1 = (arg1 * arg2) mod 2^64
103
+ * out2 = ⌊arg1 * arg2 / 2^64⌋
104
+ *
105
+ * Input Bounds:
106
+ * arg1: [0x0 ~> 0xffffffffffffffff]
107
+ * arg2: [0x0 ~> 0xffffffffffffffff]
108
+ * Output Bounds:
109
+ * out1: [0x0 ~> 0xffffffffffffffff]
110
+ * out2: [0x0 ~> 0xffffffffffffffff]
111
+ */
112
+ static FIAT_P256_FIAT_INLINE void fiat_p256_mulx_u64(uint64_t* out1, uint64_t* out2, uint64_t arg1, uint64_t arg2) {
113
+ // NOTE: edited after generation
114
+ #if defined(_M_X64)
115
+ *out1 = _umul128(arg1, arg2, out2);
116
+ #elif defined(_M_ARM64)
117
+ *out1 = arg1 * arg2;
118
+ *out2 = __umulh(arg1, arg2);
119
+ #else
120
+ #error "This file is intended for MSVC on X64 or ARM64"
121
+ #endif
122
+ }
123
+
124
+ /*
125
+ * The function fiat_p256_cmovznz_u64 is a single-word conditional move.
126
+ *
127
+ * Postconditions:
128
+ * out1 = (if arg1 = 0 then arg2 else arg3)
129
+ *
130
+ * Input Bounds:
131
+ * arg1: [0x0 ~> 0x1]
132
+ * arg2: [0x0 ~> 0xffffffffffffffff]
133
+ * arg3: [0x0 ~> 0xffffffffffffffff]
134
+ * Output Bounds:
135
+ * out1: [0x0 ~> 0xffffffffffffffff]
136
+ */
137
+ static FIAT_P256_FIAT_INLINE void fiat_p256_cmovznz_u64(uint64_t* out1, fiat_p256_uint1 arg1, uint64_t arg2, uint64_t arg3) {
138
+ fiat_p256_uint1 x1;
139
+ uint64_t x2;
140
+ uint64_t x3;
141
+ x1 = (!(!arg1));
142
+ x2 = ((fiat_p256_int1)(0x0 - x1) & UINT64_C(0xffffffffffffffff));
143
+ x3 = ((fiat_p256_value_barrier_u64(x2) & arg3) | (fiat_p256_value_barrier_u64((~x2)) & arg2));
144
+ *out1 = x3;
145
+ }
146
+
147
+ /*
148
+ * The function fiat_p256_mul multiplies two field elements in the Montgomery domain.
149
+ *
150
+ * Preconditions:
151
+ * 0 ≤ eval arg1 < m
152
+ * 0 ≤ eval arg2 < m
153
+ * Postconditions:
154
+ * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg2)) mod m
155
+ * 0 ≤ eval out1 < m
156
+ *
157
+ */
158
+ static FIAT_P256_FIAT_INLINE void fiat_p256_mul(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) {
159
+ uint64_t x1;
160
+ uint64_t x2;
161
+ uint64_t x3;
162
+ uint64_t x4;
163
+ uint64_t x5;
164
+ uint64_t x6;
165
+ uint64_t x7;
166
+ uint64_t x8;
167
+ uint64_t x9;
168
+ uint64_t x10;
169
+ uint64_t x11;
170
+ uint64_t x12;
171
+ uint64_t x13;
172
+ fiat_p256_uint1 x14;
173
+ uint64_t x15;
174
+ fiat_p256_uint1 x16;
175
+ uint64_t x17;
176
+ fiat_p256_uint1 x18;
177
+ uint64_t x19;
178
+ uint64_t x20;
179
+ uint64_t x21;
180
+ uint64_t x22;
181
+ uint64_t x23;
182
+ uint64_t x24;
183
+ uint64_t x25;
184
+ uint64_t x26;
185
+ fiat_p256_uint1 x27;
186
+ uint64_t x28;
187
+ uint64_t x29;
188
+ fiat_p256_uint1 x30;
189
+ uint64_t x31;
190
+ fiat_p256_uint1 x32;
191
+ uint64_t x33;
192
+ fiat_p256_uint1 x34;
193
+ uint64_t x35;
194
+ fiat_p256_uint1 x36;
195
+ uint64_t x37;
196
+ fiat_p256_uint1 x38;
197
+ uint64_t x39;
198
+ uint64_t x40;
199
+ uint64_t x41;
200
+ uint64_t x42;
201
+ uint64_t x43;
202
+ uint64_t x44;
203
+ uint64_t x45;
204
+ uint64_t x46;
205
+ uint64_t x47;
206
+ fiat_p256_uint1 x48;
207
+ uint64_t x49;
208
+ fiat_p256_uint1 x50;
209
+ uint64_t x51;
210
+ fiat_p256_uint1 x52;
211
+ uint64_t x53;
212
+ uint64_t x54;
213
+ fiat_p256_uint1 x55;
214
+ uint64_t x56;
215
+ fiat_p256_uint1 x57;
216
+ uint64_t x58;
217
+ fiat_p256_uint1 x59;
218
+ uint64_t x60;
219
+ fiat_p256_uint1 x61;
220
+ uint64_t x62;
221
+ fiat_p256_uint1 x63;
222
+ uint64_t x64;
223
+ uint64_t x65;
224
+ uint64_t x66;
225
+ uint64_t x67;
226
+ uint64_t x68;
227
+ uint64_t x69;
228
+ uint64_t x70;
229
+ fiat_p256_uint1 x71;
230
+ uint64_t x72;
231
+ uint64_t x73;
232
+ fiat_p256_uint1 x74;
233
+ uint64_t x75;
234
+ fiat_p256_uint1 x76;
235
+ uint64_t x77;
236
+ fiat_p256_uint1 x78;
237
+ uint64_t x79;
238
+ fiat_p256_uint1 x80;
239
+ uint64_t x81;
240
+ fiat_p256_uint1 x82;
241
+ uint64_t x83;
242
+ uint64_t x84;
243
+ uint64_t x85;
244
+ uint64_t x86;
245
+ uint64_t x87;
246
+ uint64_t x88;
247
+ uint64_t x89;
248
+ uint64_t x90;
249
+ uint64_t x91;
250
+ uint64_t x92;
251
+ fiat_p256_uint1 x93;
252
+ uint64_t x94;
253
+ fiat_p256_uint1 x95;
254
+ uint64_t x96;
255
+ fiat_p256_uint1 x97;
256
+ uint64_t x98;
257
+ uint64_t x99;
258
+ fiat_p256_uint1 x100;
259
+ uint64_t x101;
260
+ fiat_p256_uint1 x102;
261
+ uint64_t x103;
262
+ fiat_p256_uint1 x104;
263
+ uint64_t x105;
264
+ fiat_p256_uint1 x106;
265
+ uint64_t x107;
266
+ fiat_p256_uint1 x108;
267
+ uint64_t x109;
268
+ uint64_t x110;
269
+ uint64_t x111;
270
+ uint64_t x112;
271
+ uint64_t x113;
272
+ uint64_t x114;
273
+ uint64_t x115;
274
+ fiat_p256_uint1 x116;
275
+ uint64_t x117;
276
+ uint64_t x118;
277
+ fiat_p256_uint1 x119;
278
+ uint64_t x120;
279
+ fiat_p256_uint1 x121;
280
+ uint64_t x122;
281
+ fiat_p256_uint1 x123;
282
+ uint64_t x124;
283
+ fiat_p256_uint1 x125;
284
+ uint64_t x126;
285
+ fiat_p256_uint1 x127;
286
+ uint64_t x128;
287
+ uint64_t x129;
288
+ uint64_t x130;
289
+ uint64_t x131;
290
+ uint64_t x132;
291
+ uint64_t x133;
292
+ uint64_t x134;
293
+ uint64_t x135;
294
+ uint64_t x136;
295
+ uint64_t x137;
296
+ fiat_p256_uint1 x138;
297
+ uint64_t x139;
298
+ fiat_p256_uint1 x140;
299
+ uint64_t x141;
300
+ fiat_p256_uint1 x142;
301
+ uint64_t x143;
302
+ uint64_t x144;
303
+ fiat_p256_uint1 x145;
304
+ uint64_t x146;
305
+ fiat_p256_uint1 x147;
306
+ uint64_t x148;
307
+ fiat_p256_uint1 x149;
308
+ uint64_t x150;
309
+ fiat_p256_uint1 x151;
310
+ uint64_t x152;
311
+ fiat_p256_uint1 x153;
312
+ uint64_t x154;
313
+ uint64_t x155;
314
+ uint64_t x156;
315
+ uint64_t x157;
316
+ uint64_t x158;
317
+ uint64_t x159;
318
+ uint64_t x160;
319
+ fiat_p256_uint1 x161;
320
+ uint64_t x162;
321
+ uint64_t x163;
322
+ fiat_p256_uint1 x164;
323
+ uint64_t x165;
324
+ fiat_p256_uint1 x166;
325
+ uint64_t x167;
326
+ fiat_p256_uint1 x168;
327
+ uint64_t x169;
328
+ fiat_p256_uint1 x170;
329
+ uint64_t x171;
330
+ fiat_p256_uint1 x172;
331
+ uint64_t x173;
332
+ uint64_t x174;
333
+ fiat_p256_uint1 x175;
334
+ uint64_t x176;
335
+ fiat_p256_uint1 x177;
336
+ uint64_t x178;
337
+ fiat_p256_uint1 x179;
338
+ uint64_t x180;
339
+ fiat_p256_uint1 x181;
340
+ uint64_t x182;
341
+ fiat_p256_uint1 x183;
342
+ uint64_t x184;
343
+ uint64_t x185;
344
+ uint64_t x186;
345
+ uint64_t x187;
346
+ x1 = (arg1[1]);
347
+ x2 = (arg1[2]);
348
+ x3 = (arg1[3]);
349
+ x4 = (arg1[0]);
350
+ fiat_p256_mulx_u64(&x5, &x6, x4, (arg2[3]));
351
+ fiat_p256_mulx_u64(&x7, &x8, x4, (arg2[2]));
352
+ fiat_p256_mulx_u64(&x9, &x10, x4, (arg2[1]));
353
+ fiat_p256_mulx_u64(&x11, &x12, x4, (arg2[0]));
354
+ fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9);
355
+ fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7);
356
+ fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5);
357
+ x19 = (x18 + x6);
358
+ fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001));
359
+ fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff));
360
+ fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff));
361
+ fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22);
362
+ x28 = (x27 + x23);
363
+ fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24);
364
+ fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26);
365
+ fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28);
366
+ fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20);
367
+ fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21);
368
+ fiat_p256_mulx_u64(&x39, &x40, x1, (arg2[3]));
369
+ fiat_p256_mulx_u64(&x41, &x42, x1, (arg2[2]));
370
+ fiat_p256_mulx_u64(&x43, &x44, x1, (arg2[1]));
371
+ fiat_p256_mulx_u64(&x45, &x46, x1, (arg2[0]));
372
+ fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43);
373
+ fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41);
374
+ fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39);
375
+ x53 = (x52 + x40);
376
+ fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45);
377
+ fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47);
378
+ fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49);
379
+ fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51);
380
+ fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53);
381
+ fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001));
382
+ fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff));
383
+ fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff));
384
+ fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66);
385
+ x72 = (x71 + x67);
386
+ fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68);
387
+ fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70);
388
+ fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72);
389
+ fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64);
390
+ fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65);
391
+ x83 = ((uint64_t)x82 + x63);
392
+ fiat_p256_mulx_u64(&x84, &x85, x2, (arg2[3]));
393
+ fiat_p256_mulx_u64(&x86, &x87, x2, (arg2[2]));
394
+ fiat_p256_mulx_u64(&x88, &x89, x2, (arg2[1]));
395
+ fiat_p256_mulx_u64(&x90, &x91, x2, (arg2[0]));
396
+ fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88);
397
+ fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86);
398
+ fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84);
399
+ x98 = (x97 + x85);
400
+ fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90);
401
+ fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92);
402
+ fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94);
403
+ fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96);
404
+ fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98);
405
+ fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001));
406
+ fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff));
407
+ fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff));
408
+ fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111);
409
+ x117 = (x116 + x112);
410
+ fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113);
411
+ fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115);
412
+ fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117);
413
+ fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109);
414
+ fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110);
415
+ x128 = ((uint64_t)x127 + x108);
416
+ fiat_p256_mulx_u64(&x129, &x130, x3, (arg2[3]));
417
+ fiat_p256_mulx_u64(&x131, &x132, x3, (arg2[2]));
418
+ fiat_p256_mulx_u64(&x133, &x134, x3, (arg2[1]));
419
+ fiat_p256_mulx_u64(&x135, &x136, x3, (arg2[0]));
420
+ fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133);
421
+ fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131);
422
+ fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129);
423
+ x143 = (x142 + x130);
424
+ fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135);
425
+ fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137);
426
+ fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139);
427
+ fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141);
428
+ fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143);
429
+ fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001));
430
+ fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff));
431
+ fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff));
432
+ fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156);
433
+ x162 = (x161 + x157);
434
+ fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158);
435
+ fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160);
436
+ fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162);
437
+ fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154);
438
+ fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155);
439
+ x173 = ((uint64_t)x172 + x153);
440
+ fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff));
441
+ fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff));
442
+ fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0);
443
+ fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001));
444
+ fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0);
445
+ fiat_p256_cmovznz_u64(&x184, x183, x174, x165);
446
+ fiat_p256_cmovznz_u64(&x185, x183, x176, x167);
447
+ fiat_p256_cmovznz_u64(&x186, x183, x178, x169);
448
+ fiat_p256_cmovznz_u64(&x187, x183, x180, x171);
449
+ out1[0] = x184;
450
+ out1[1] = x185;
451
+ out1[2] = x186;
452
+ out1[3] = x187;
453
+ }
454
+
455
+ /*
456
+ * The function fiat_p256_square squares a field element in the Montgomery domain.
457
+ *
458
+ * Preconditions:
459
+ * 0 ≤ eval arg1 < m
460
+ * Postconditions:
461
+ * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) * eval (from_montgomery arg1)) mod m
462
+ * 0 ≤ eval out1 < m
463
+ *
464
+ */
465
+ static FIAT_P256_FIAT_INLINE void fiat_p256_square(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) {
466
+ uint64_t x1;
467
+ uint64_t x2;
468
+ uint64_t x3;
469
+ uint64_t x4;
470
+ uint64_t x5;
471
+ uint64_t x6;
472
+ uint64_t x7;
473
+ uint64_t x8;
474
+ uint64_t x9;
475
+ uint64_t x10;
476
+ uint64_t x11;
477
+ uint64_t x12;
478
+ uint64_t x13;
479
+ fiat_p256_uint1 x14;
480
+ uint64_t x15;
481
+ fiat_p256_uint1 x16;
482
+ uint64_t x17;
483
+ fiat_p256_uint1 x18;
484
+ uint64_t x19;
485
+ uint64_t x20;
486
+ uint64_t x21;
487
+ uint64_t x22;
488
+ uint64_t x23;
489
+ uint64_t x24;
490
+ uint64_t x25;
491
+ uint64_t x26;
492
+ fiat_p256_uint1 x27;
493
+ uint64_t x28;
494
+ uint64_t x29;
495
+ fiat_p256_uint1 x30;
496
+ uint64_t x31;
497
+ fiat_p256_uint1 x32;
498
+ uint64_t x33;
499
+ fiat_p256_uint1 x34;
500
+ uint64_t x35;
501
+ fiat_p256_uint1 x36;
502
+ uint64_t x37;
503
+ fiat_p256_uint1 x38;
504
+ uint64_t x39;
505
+ uint64_t x40;
506
+ uint64_t x41;
507
+ uint64_t x42;
508
+ uint64_t x43;
509
+ uint64_t x44;
510
+ uint64_t x45;
511
+ uint64_t x46;
512
+ uint64_t x47;
513
+ fiat_p256_uint1 x48;
514
+ uint64_t x49;
515
+ fiat_p256_uint1 x50;
516
+ uint64_t x51;
517
+ fiat_p256_uint1 x52;
518
+ uint64_t x53;
519
+ uint64_t x54;
520
+ fiat_p256_uint1 x55;
521
+ uint64_t x56;
522
+ fiat_p256_uint1 x57;
523
+ uint64_t x58;
524
+ fiat_p256_uint1 x59;
525
+ uint64_t x60;
526
+ fiat_p256_uint1 x61;
527
+ uint64_t x62;
528
+ fiat_p256_uint1 x63;
529
+ uint64_t x64;
530
+ uint64_t x65;
531
+ uint64_t x66;
532
+ uint64_t x67;
533
+ uint64_t x68;
534
+ uint64_t x69;
535
+ uint64_t x70;
536
+ fiat_p256_uint1 x71;
537
+ uint64_t x72;
538
+ uint64_t x73;
539
+ fiat_p256_uint1 x74;
540
+ uint64_t x75;
541
+ fiat_p256_uint1 x76;
542
+ uint64_t x77;
543
+ fiat_p256_uint1 x78;
544
+ uint64_t x79;
545
+ fiat_p256_uint1 x80;
546
+ uint64_t x81;
547
+ fiat_p256_uint1 x82;
548
+ uint64_t x83;
549
+ uint64_t x84;
550
+ uint64_t x85;
551
+ uint64_t x86;
552
+ uint64_t x87;
553
+ uint64_t x88;
554
+ uint64_t x89;
555
+ uint64_t x90;
556
+ uint64_t x91;
557
+ uint64_t x92;
558
+ fiat_p256_uint1 x93;
559
+ uint64_t x94;
560
+ fiat_p256_uint1 x95;
561
+ uint64_t x96;
562
+ fiat_p256_uint1 x97;
563
+ uint64_t x98;
564
+ uint64_t x99;
565
+ fiat_p256_uint1 x100;
566
+ uint64_t x101;
567
+ fiat_p256_uint1 x102;
568
+ uint64_t x103;
569
+ fiat_p256_uint1 x104;
570
+ uint64_t x105;
571
+ fiat_p256_uint1 x106;
572
+ uint64_t x107;
573
+ fiat_p256_uint1 x108;
574
+ uint64_t x109;
575
+ uint64_t x110;
576
+ uint64_t x111;
577
+ uint64_t x112;
578
+ uint64_t x113;
579
+ uint64_t x114;
580
+ uint64_t x115;
581
+ fiat_p256_uint1 x116;
582
+ uint64_t x117;
583
+ uint64_t x118;
584
+ fiat_p256_uint1 x119;
585
+ uint64_t x120;
586
+ fiat_p256_uint1 x121;
587
+ uint64_t x122;
588
+ fiat_p256_uint1 x123;
589
+ uint64_t x124;
590
+ fiat_p256_uint1 x125;
591
+ uint64_t x126;
592
+ fiat_p256_uint1 x127;
593
+ uint64_t x128;
594
+ uint64_t x129;
595
+ uint64_t x130;
596
+ uint64_t x131;
597
+ uint64_t x132;
598
+ uint64_t x133;
599
+ uint64_t x134;
600
+ uint64_t x135;
601
+ uint64_t x136;
602
+ uint64_t x137;
603
+ fiat_p256_uint1 x138;
604
+ uint64_t x139;
605
+ fiat_p256_uint1 x140;
606
+ uint64_t x141;
607
+ fiat_p256_uint1 x142;
608
+ uint64_t x143;
609
+ uint64_t x144;
610
+ fiat_p256_uint1 x145;
611
+ uint64_t x146;
612
+ fiat_p256_uint1 x147;
613
+ uint64_t x148;
614
+ fiat_p256_uint1 x149;
615
+ uint64_t x150;
616
+ fiat_p256_uint1 x151;
617
+ uint64_t x152;
618
+ fiat_p256_uint1 x153;
619
+ uint64_t x154;
620
+ uint64_t x155;
621
+ uint64_t x156;
622
+ uint64_t x157;
623
+ uint64_t x158;
624
+ uint64_t x159;
625
+ uint64_t x160;
626
+ fiat_p256_uint1 x161;
627
+ uint64_t x162;
628
+ uint64_t x163;
629
+ fiat_p256_uint1 x164;
630
+ uint64_t x165;
631
+ fiat_p256_uint1 x166;
632
+ uint64_t x167;
633
+ fiat_p256_uint1 x168;
634
+ uint64_t x169;
635
+ fiat_p256_uint1 x170;
636
+ uint64_t x171;
637
+ fiat_p256_uint1 x172;
638
+ uint64_t x173;
639
+ uint64_t x174;
640
+ fiat_p256_uint1 x175;
641
+ uint64_t x176;
642
+ fiat_p256_uint1 x177;
643
+ uint64_t x178;
644
+ fiat_p256_uint1 x179;
645
+ uint64_t x180;
646
+ fiat_p256_uint1 x181;
647
+ uint64_t x182;
648
+ fiat_p256_uint1 x183;
649
+ uint64_t x184;
650
+ uint64_t x185;
651
+ uint64_t x186;
652
+ uint64_t x187;
653
+ x1 = (arg1[1]);
654
+ x2 = (arg1[2]);
655
+ x3 = (arg1[3]);
656
+ x4 = (arg1[0]);
657
+ fiat_p256_mulx_u64(&x5, &x6, x4, (arg1[3]));
658
+ fiat_p256_mulx_u64(&x7, &x8, x4, (arg1[2]));
659
+ fiat_p256_mulx_u64(&x9, &x10, x4, (arg1[1]));
660
+ fiat_p256_mulx_u64(&x11, &x12, x4, (arg1[0]));
661
+ fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9);
662
+ fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7);
663
+ fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5);
664
+ x19 = (x18 + x6);
665
+ fiat_p256_mulx_u64(&x20, &x21, x11, UINT64_C(0xffffffff00000001));
666
+ fiat_p256_mulx_u64(&x22, &x23, x11, UINT32_C(0xffffffff));
667
+ fiat_p256_mulx_u64(&x24, &x25, x11, UINT64_C(0xffffffffffffffff));
668
+ fiat_p256_addcarryx_u64(&x26, &x27, 0x0, x25, x22);
669
+ x28 = (x27 + x23);
670
+ fiat_p256_addcarryx_u64(&x29, &x30, 0x0, x11, x24);
671
+ fiat_p256_addcarryx_u64(&x31, &x32, x30, x13, x26);
672
+ fiat_p256_addcarryx_u64(&x33, &x34, x32, x15, x28);
673
+ fiat_p256_addcarryx_u64(&x35, &x36, x34, x17, x20);
674
+ fiat_p256_addcarryx_u64(&x37, &x38, x36, x19, x21);
675
+ fiat_p256_mulx_u64(&x39, &x40, x1, (arg1[3]));
676
+ fiat_p256_mulx_u64(&x41, &x42, x1, (arg1[2]));
677
+ fiat_p256_mulx_u64(&x43, &x44, x1, (arg1[1]));
678
+ fiat_p256_mulx_u64(&x45, &x46, x1, (arg1[0]));
679
+ fiat_p256_addcarryx_u64(&x47, &x48, 0x0, x46, x43);
680
+ fiat_p256_addcarryx_u64(&x49, &x50, x48, x44, x41);
681
+ fiat_p256_addcarryx_u64(&x51, &x52, x50, x42, x39);
682
+ x53 = (x52 + x40);
683
+ fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x31, x45);
684
+ fiat_p256_addcarryx_u64(&x56, &x57, x55, x33, x47);
685
+ fiat_p256_addcarryx_u64(&x58, &x59, x57, x35, x49);
686
+ fiat_p256_addcarryx_u64(&x60, &x61, x59, x37, x51);
687
+ fiat_p256_addcarryx_u64(&x62, &x63, x61, x38, x53);
688
+ fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffff00000001));
689
+ fiat_p256_mulx_u64(&x66, &x67, x54, UINT32_C(0xffffffff));
690
+ fiat_p256_mulx_u64(&x68, &x69, x54, UINT64_C(0xffffffffffffffff));
691
+ fiat_p256_addcarryx_u64(&x70, &x71, 0x0, x69, x66);
692
+ x72 = (x71 + x67);
693
+ fiat_p256_addcarryx_u64(&x73, &x74, 0x0, x54, x68);
694
+ fiat_p256_addcarryx_u64(&x75, &x76, x74, x56, x70);
695
+ fiat_p256_addcarryx_u64(&x77, &x78, x76, x58, x72);
696
+ fiat_p256_addcarryx_u64(&x79, &x80, x78, x60, x64);
697
+ fiat_p256_addcarryx_u64(&x81, &x82, x80, x62, x65);
698
+ x83 = ((uint64_t)x82 + x63);
699
+ fiat_p256_mulx_u64(&x84, &x85, x2, (arg1[3]));
700
+ fiat_p256_mulx_u64(&x86, &x87, x2, (arg1[2]));
701
+ fiat_p256_mulx_u64(&x88, &x89, x2, (arg1[1]));
702
+ fiat_p256_mulx_u64(&x90, &x91, x2, (arg1[0]));
703
+ fiat_p256_addcarryx_u64(&x92, &x93, 0x0, x91, x88);
704
+ fiat_p256_addcarryx_u64(&x94, &x95, x93, x89, x86);
705
+ fiat_p256_addcarryx_u64(&x96, &x97, x95, x87, x84);
706
+ x98 = (x97 + x85);
707
+ fiat_p256_addcarryx_u64(&x99, &x100, 0x0, x75, x90);
708
+ fiat_p256_addcarryx_u64(&x101, &x102, x100, x77, x92);
709
+ fiat_p256_addcarryx_u64(&x103, &x104, x102, x79, x94);
710
+ fiat_p256_addcarryx_u64(&x105, &x106, x104, x81, x96);
711
+ fiat_p256_addcarryx_u64(&x107, &x108, x106, x83, x98);
712
+ fiat_p256_mulx_u64(&x109, &x110, x99, UINT64_C(0xffffffff00000001));
713
+ fiat_p256_mulx_u64(&x111, &x112, x99, UINT32_C(0xffffffff));
714
+ fiat_p256_mulx_u64(&x113, &x114, x99, UINT64_C(0xffffffffffffffff));
715
+ fiat_p256_addcarryx_u64(&x115, &x116, 0x0, x114, x111);
716
+ x117 = (x116 + x112);
717
+ fiat_p256_addcarryx_u64(&x118, &x119, 0x0, x99, x113);
718
+ fiat_p256_addcarryx_u64(&x120, &x121, x119, x101, x115);
719
+ fiat_p256_addcarryx_u64(&x122, &x123, x121, x103, x117);
720
+ fiat_p256_addcarryx_u64(&x124, &x125, x123, x105, x109);
721
+ fiat_p256_addcarryx_u64(&x126, &x127, x125, x107, x110);
722
+ x128 = ((uint64_t)x127 + x108);
723
+ fiat_p256_mulx_u64(&x129, &x130, x3, (arg1[3]));
724
+ fiat_p256_mulx_u64(&x131, &x132, x3, (arg1[2]));
725
+ fiat_p256_mulx_u64(&x133, &x134, x3, (arg1[1]));
726
+ fiat_p256_mulx_u64(&x135, &x136, x3, (arg1[0]));
727
+ fiat_p256_addcarryx_u64(&x137, &x138, 0x0, x136, x133);
728
+ fiat_p256_addcarryx_u64(&x139, &x140, x138, x134, x131);
729
+ fiat_p256_addcarryx_u64(&x141, &x142, x140, x132, x129);
730
+ x143 = (x142 + x130);
731
+ fiat_p256_addcarryx_u64(&x144, &x145, 0x0, x120, x135);
732
+ fiat_p256_addcarryx_u64(&x146, &x147, x145, x122, x137);
733
+ fiat_p256_addcarryx_u64(&x148, &x149, x147, x124, x139);
734
+ fiat_p256_addcarryx_u64(&x150, &x151, x149, x126, x141);
735
+ fiat_p256_addcarryx_u64(&x152, &x153, x151, x128, x143);
736
+ fiat_p256_mulx_u64(&x154, &x155, x144, UINT64_C(0xffffffff00000001));
737
+ fiat_p256_mulx_u64(&x156, &x157, x144, UINT32_C(0xffffffff));
738
+ fiat_p256_mulx_u64(&x158, &x159, x144, UINT64_C(0xffffffffffffffff));
739
+ fiat_p256_addcarryx_u64(&x160, &x161, 0x0, x159, x156);
740
+ x162 = (x161 + x157);
741
+ fiat_p256_addcarryx_u64(&x163, &x164, 0x0, x144, x158);
742
+ fiat_p256_addcarryx_u64(&x165, &x166, x164, x146, x160);
743
+ fiat_p256_addcarryx_u64(&x167, &x168, x166, x148, x162);
744
+ fiat_p256_addcarryx_u64(&x169, &x170, x168, x150, x154);
745
+ fiat_p256_addcarryx_u64(&x171, &x172, x170, x152, x155);
746
+ x173 = ((uint64_t)x172 + x153);
747
+ fiat_p256_subborrowx_u64(&x174, &x175, 0x0, x165, UINT64_C(0xffffffffffffffff));
748
+ fiat_p256_subborrowx_u64(&x176, &x177, x175, x167, UINT32_C(0xffffffff));
749
+ fiat_p256_subborrowx_u64(&x178, &x179, x177, x169, 0x0);
750
+ fiat_p256_subborrowx_u64(&x180, &x181, x179, x171, UINT64_C(0xffffffff00000001));
751
+ fiat_p256_subborrowx_u64(&x182, &x183, x181, x173, 0x0);
752
+ fiat_p256_cmovznz_u64(&x184, x183, x174, x165);
753
+ fiat_p256_cmovznz_u64(&x185, x183, x176, x167);
754
+ fiat_p256_cmovznz_u64(&x186, x183, x178, x169);
755
+ fiat_p256_cmovznz_u64(&x187, x183, x180, x171);
756
+ out1[0] = x184;
757
+ out1[1] = x185;
758
+ out1[2] = x186;
759
+ out1[3] = x187;
760
+ }
761
+
762
+ /*
763
+ * The function fiat_p256_add adds two field elements in the Montgomery domain.
764
+ *
765
+ * Preconditions:
766
+ * 0 ≤ eval arg1 < m
767
+ * 0 ≤ eval arg2 < m
768
+ * Postconditions:
769
+ * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) + eval (from_montgomery arg2)) mod m
770
+ * 0 ≤ eval out1 < m
771
+ *
772
+ */
773
+ static FIAT_P256_FIAT_INLINE void fiat_p256_add(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) {
774
+ uint64_t x1;
775
+ fiat_p256_uint1 x2;
776
+ uint64_t x3;
777
+ fiat_p256_uint1 x4;
778
+ uint64_t x5;
779
+ fiat_p256_uint1 x6;
780
+ uint64_t x7;
781
+ fiat_p256_uint1 x8;
782
+ uint64_t x9;
783
+ fiat_p256_uint1 x10;
784
+ uint64_t x11;
785
+ fiat_p256_uint1 x12;
786
+ uint64_t x13;
787
+ fiat_p256_uint1 x14;
788
+ uint64_t x15;
789
+ fiat_p256_uint1 x16;
790
+ uint64_t x17;
791
+ fiat_p256_uint1 x18;
792
+ uint64_t x19;
793
+ uint64_t x20;
794
+ uint64_t x21;
795
+ uint64_t x22;
796
+ fiat_p256_addcarryx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0]));
797
+ fiat_p256_addcarryx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1]));
798
+ fiat_p256_addcarryx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2]));
799
+ fiat_p256_addcarryx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3]));
800
+ fiat_p256_subborrowx_u64(&x9, &x10, 0x0, x1, UINT64_C(0xffffffffffffffff));
801
+ fiat_p256_subborrowx_u64(&x11, &x12, x10, x3, UINT32_C(0xffffffff));
802
+ fiat_p256_subborrowx_u64(&x13, &x14, x12, x5, 0x0);
803
+ fiat_p256_subborrowx_u64(&x15, &x16, x14, x7, UINT64_C(0xffffffff00000001));
804
+ fiat_p256_subborrowx_u64(&x17, &x18, x16, x8, 0x0);
805
+ fiat_p256_cmovznz_u64(&x19, x18, x9, x1);
806
+ fiat_p256_cmovznz_u64(&x20, x18, x11, x3);
807
+ fiat_p256_cmovznz_u64(&x21, x18, x13, x5);
808
+ fiat_p256_cmovznz_u64(&x22, x18, x15, x7);
809
+ out1[0] = x19;
810
+ out1[1] = x20;
811
+ out1[2] = x21;
812
+ out1[3] = x22;
813
+ }
814
+
815
+ /*
816
+ * The function fiat_p256_sub subtracts two field elements in the Montgomery domain.
817
+ *
818
+ * Preconditions:
819
+ * 0 ≤ eval arg1 < m
820
+ * 0 ≤ eval arg2 < m
821
+ * Postconditions:
822
+ * eval (from_montgomery out1) mod m = (eval (from_montgomery arg1) - eval (from_montgomery arg2)) mod m
823
+ * 0 ≤ eval out1 < m
824
+ *
825
+ */
826
+ static FIAT_P256_FIAT_INLINE void fiat_p256_sub(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1, const fiat_p256_montgomery_domain_field_element arg2) {
827
+ uint64_t x1;
828
+ fiat_p256_uint1 x2;
829
+ uint64_t x3;
830
+ fiat_p256_uint1 x4;
831
+ uint64_t x5;
832
+ fiat_p256_uint1 x6;
833
+ uint64_t x7;
834
+ fiat_p256_uint1 x8;
835
+ uint64_t x9;
836
+ uint64_t x10;
837
+ fiat_p256_uint1 x11;
838
+ uint64_t x12;
839
+ fiat_p256_uint1 x13;
840
+ uint64_t x14;
841
+ fiat_p256_uint1 x15;
842
+ uint64_t x16;
843
+ fiat_p256_uint1 x17;
844
+ fiat_p256_subborrowx_u64(&x1, &x2, 0x0, (arg1[0]), (arg2[0]));
845
+ fiat_p256_subborrowx_u64(&x3, &x4, x2, (arg1[1]), (arg2[1]));
846
+ fiat_p256_subborrowx_u64(&x5, &x6, x4, (arg1[2]), (arg2[2]));
847
+ fiat_p256_subborrowx_u64(&x7, &x8, x6, (arg1[3]), (arg2[3]));
848
+ fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff));
849
+ fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9);
850
+ fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff)));
851
+ fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0);
852
+ fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001)));
853
+ out1[0] = x10;
854
+ out1[1] = x12;
855
+ out1[2] = x14;
856
+ out1[3] = x16;
857
+ }
858
+
859
+ /*
860
+ * The function fiat_p256_opp negates a field element in the Montgomery domain.
861
+ *
862
+ * Preconditions:
863
+ * 0 ≤ eval arg1 < m
864
+ * Postconditions:
865
+ * eval (from_montgomery out1) mod m = -eval (from_montgomery arg1) mod m
866
+ * 0 ≤ eval out1 < m
867
+ *
868
+ */
869
+ static FIAT_P256_FIAT_INLINE void fiat_p256_opp(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) {
870
+ uint64_t x1;
871
+ fiat_p256_uint1 x2;
872
+ uint64_t x3;
873
+ fiat_p256_uint1 x4;
874
+ uint64_t x5;
875
+ fiat_p256_uint1 x6;
876
+ uint64_t x7;
877
+ fiat_p256_uint1 x8;
878
+ uint64_t x9;
879
+ uint64_t x10;
880
+ fiat_p256_uint1 x11;
881
+ uint64_t x12;
882
+ fiat_p256_uint1 x13;
883
+ uint64_t x14;
884
+ fiat_p256_uint1 x15;
885
+ uint64_t x16;
886
+ fiat_p256_uint1 x17;
887
+ fiat_p256_subborrowx_u64(&x1, &x2, 0x0, 0x0, (arg1[0]));
888
+ fiat_p256_subborrowx_u64(&x3, &x4, x2, 0x0, (arg1[1]));
889
+ fiat_p256_subborrowx_u64(&x5, &x6, x4, 0x0, (arg1[2]));
890
+ fiat_p256_subborrowx_u64(&x7, &x8, x6, 0x0, (arg1[3]));
891
+ fiat_p256_cmovznz_u64(&x9, x8, 0x0, UINT64_C(0xffffffffffffffff));
892
+ fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x9);
893
+ fiat_p256_addcarryx_u64(&x12, &x13, x11, x3, (x9 & UINT32_C(0xffffffff)));
894
+ fiat_p256_addcarryx_u64(&x14, &x15, x13, x5, 0x0);
895
+ fiat_p256_addcarryx_u64(&x16, &x17, x15, x7, (x9 & UINT64_C(0xffffffff00000001)));
896
+ out1[0] = x10;
897
+ out1[1] = x12;
898
+ out1[2] = x14;
899
+ out1[3] = x16;
900
+ }
901
+
902
+ /*
903
+ * The function fiat_p256_from_montgomery translates a field element out of the Montgomery domain.
904
+ *
905
+ * Preconditions:
906
+ * 0 ≤ eval arg1 < m
907
+ * Postconditions:
908
+ * eval out1 mod m = (eval arg1 * ((2^64)⁻¹ mod m)^4) mod m
909
+ * 0 ≤ eval out1 < m
910
+ *
911
+ */
912
+ static FIAT_P256_FIAT_INLINE void fiat_p256_from_montgomery(fiat_p256_non_montgomery_domain_field_element out1, const fiat_p256_montgomery_domain_field_element arg1) {
913
+ uint64_t x1;
914
+ uint64_t x2;
915
+ uint64_t x3;
916
+ uint64_t x4;
917
+ uint64_t x5;
918
+ uint64_t x6;
919
+ uint64_t x7;
920
+ uint64_t x8;
921
+ fiat_p256_uint1 x9;
922
+ uint64_t x10;
923
+ fiat_p256_uint1 x11;
924
+ uint64_t x12;
925
+ fiat_p256_uint1 x13;
926
+ uint64_t x14;
927
+ fiat_p256_uint1 x15;
928
+ uint64_t x16;
929
+ uint64_t x17;
930
+ uint64_t x18;
931
+ uint64_t x19;
932
+ uint64_t x20;
933
+ uint64_t x21;
934
+ uint64_t x22;
935
+ fiat_p256_uint1 x23;
936
+ uint64_t x24;
937
+ fiat_p256_uint1 x25;
938
+ uint64_t x26;
939
+ fiat_p256_uint1 x27;
940
+ uint64_t x28;
941
+ fiat_p256_uint1 x29;
942
+ uint64_t x30;
943
+ fiat_p256_uint1 x31;
944
+ uint64_t x32;
945
+ fiat_p256_uint1 x33;
946
+ uint64_t x34;
947
+ fiat_p256_uint1 x35;
948
+ uint64_t x36;
949
+ fiat_p256_uint1 x37;
950
+ uint64_t x38;
951
+ uint64_t x39;
952
+ uint64_t x40;
953
+ uint64_t x41;
954
+ uint64_t x42;
955
+ uint64_t x43;
956
+ uint64_t x44;
957
+ fiat_p256_uint1 x45;
958
+ uint64_t x46;
959
+ fiat_p256_uint1 x47;
960
+ uint64_t x48;
961
+ fiat_p256_uint1 x49;
962
+ uint64_t x50;
963
+ fiat_p256_uint1 x51;
964
+ uint64_t x52;
965
+ fiat_p256_uint1 x53;
966
+ uint64_t x54;
967
+ fiat_p256_uint1 x55;
968
+ uint64_t x56;
969
+ fiat_p256_uint1 x57;
970
+ uint64_t x58;
971
+ fiat_p256_uint1 x59;
972
+ uint64_t x60;
973
+ uint64_t x61;
974
+ uint64_t x62;
975
+ uint64_t x63;
976
+ uint64_t x64;
977
+ uint64_t x65;
978
+ uint64_t x66;
979
+ fiat_p256_uint1 x67;
980
+ uint64_t x68;
981
+ fiat_p256_uint1 x69;
982
+ uint64_t x70;
983
+ fiat_p256_uint1 x71;
984
+ uint64_t x72;
985
+ fiat_p256_uint1 x73;
986
+ uint64_t x74;
987
+ fiat_p256_uint1 x75;
988
+ uint64_t x76;
989
+ uint64_t x77;
990
+ fiat_p256_uint1 x78;
991
+ uint64_t x79;
992
+ fiat_p256_uint1 x80;
993
+ uint64_t x81;
994
+ fiat_p256_uint1 x82;
995
+ uint64_t x83;
996
+ fiat_p256_uint1 x84;
997
+ uint64_t x85;
998
+ fiat_p256_uint1 x86;
999
+ uint64_t x87;
1000
+ uint64_t x88;
1001
+ uint64_t x89;
1002
+ uint64_t x90;
1003
+ x1 = (arg1[0]);
1004
+ fiat_p256_mulx_u64(&x2, &x3, x1, UINT64_C(0xffffffff00000001));
1005
+ fiat_p256_mulx_u64(&x4, &x5, x1, UINT32_C(0xffffffff));
1006
+ fiat_p256_mulx_u64(&x6, &x7, x1, UINT64_C(0xffffffffffffffff));
1007
+ fiat_p256_addcarryx_u64(&x8, &x9, 0x0, x7, x4);
1008
+ fiat_p256_addcarryx_u64(&x10, &x11, 0x0, x1, x6);
1009
+ fiat_p256_addcarryx_u64(&x12, &x13, x11, 0x0, x8);
1010
+ fiat_p256_addcarryx_u64(&x14, &x15, 0x0, x12, (arg1[1]));
1011
+ fiat_p256_mulx_u64(&x16, &x17, x14, UINT64_C(0xffffffff00000001));
1012
+ fiat_p256_mulx_u64(&x18, &x19, x14, UINT32_C(0xffffffff));
1013
+ fiat_p256_mulx_u64(&x20, &x21, x14, UINT64_C(0xffffffffffffffff));
1014
+ fiat_p256_addcarryx_u64(&x22, &x23, 0x0, x21, x18);
1015
+ fiat_p256_addcarryx_u64(&x24, &x25, 0x0, x14, x20);
1016
+ fiat_p256_addcarryx_u64(&x26, &x27, x25, (x15 + (x13 + (x9 + x5))), x22);
1017
+ fiat_p256_addcarryx_u64(&x28, &x29, x27, x2, (x23 + x19));
1018
+ fiat_p256_addcarryx_u64(&x30, &x31, x29, x3, x16);
1019
+ fiat_p256_addcarryx_u64(&x32, &x33, 0x0, x26, (arg1[2]));
1020
+ fiat_p256_addcarryx_u64(&x34, &x35, x33, x28, 0x0);
1021
+ fiat_p256_addcarryx_u64(&x36, &x37, x35, x30, 0x0);
1022
+ fiat_p256_mulx_u64(&x38, &x39, x32, UINT64_C(0xffffffff00000001));
1023
+ fiat_p256_mulx_u64(&x40, &x41, x32, UINT32_C(0xffffffff));
1024
+ fiat_p256_mulx_u64(&x42, &x43, x32, UINT64_C(0xffffffffffffffff));
1025
+ fiat_p256_addcarryx_u64(&x44, &x45, 0x0, x43, x40);
1026
+ fiat_p256_addcarryx_u64(&x46, &x47, 0x0, x32, x42);
1027
+ fiat_p256_addcarryx_u64(&x48, &x49, x47, x34, x44);
1028
+ fiat_p256_addcarryx_u64(&x50, &x51, x49, x36, (x45 + x41));
1029
+ fiat_p256_addcarryx_u64(&x52, &x53, x51, (x37 + (x31 + x17)), x38);
1030
+ fiat_p256_addcarryx_u64(&x54, &x55, 0x0, x48, (arg1[3]));
1031
+ fiat_p256_addcarryx_u64(&x56, &x57, x55, x50, 0x0);
1032
+ fiat_p256_addcarryx_u64(&x58, &x59, x57, x52, 0x0);
1033
+ fiat_p256_mulx_u64(&x60, &x61, x54, UINT64_C(0xffffffff00000001));
1034
+ fiat_p256_mulx_u64(&x62, &x63, x54, UINT32_C(0xffffffff));
1035
+ fiat_p256_mulx_u64(&x64, &x65, x54, UINT64_C(0xffffffffffffffff));
1036
+ fiat_p256_addcarryx_u64(&x66, &x67, 0x0, x65, x62);
1037
+ fiat_p256_addcarryx_u64(&x68, &x69, 0x0, x54, x64);
1038
+ fiat_p256_addcarryx_u64(&x70, &x71, x69, x56, x66);
1039
+ fiat_p256_addcarryx_u64(&x72, &x73, x71, x58, (x67 + x63));
1040
+ fiat_p256_addcarryx_u64(&x74, &x75, x73, (x59 + (x53 + x39)), x60);
1041
+ x76 = (x75 + x61);
1042
+ fiat_p256_subborrowx_u64(&x77, &x78, 0x0, x70, UINT64_C(0xffffffffffffffff));
1043
+ fiat_p256_subborrowx_u64(&x79, &x80, x78, x72, UINT32_C(0xffffffff));
1044
+ fiat_p256_subborrowx_u64(&x81, &x82, x80, x74, 0x0);
1045
+ fiat_p256_subborrowx_u64(&x83, &x84, x82, x76, UINT64_C(0xffffffff00000001));
1046
+ fiat_p256_subborrowx_u64(&x85, &x86, x84, 0x0, 0x0);
1047
+ fiat_p256_cmovznz_u64(&x87, x86, x77, x70);
1048
+ fiat_p256_cmovznz_u64(&x88, x86, x79, x72);
1049
+ fiat_p256_cmovznz_u64(&x89, x86, x81, x74);
1050
+ fiat_p256_cmovznz_u64(&x90, x86, x83, x76);
1051
+ out1[0] = x87;
1052
+ out1[1] = x88;
1053
+ out1[2] = x89;
1054
+ out1[3] = x90;
1055
+ }
1056
+
1057
+ /*
1058
+ * The function fiat_p256_to_montgomery translates a field element into the Montgomery domain.
1059
+ *
1060
+ * Preconditions:
1061
+ * 0 ≤ eval arg1 < m
1062
+ * Postconditions:
1063
+ * eval (from_montgomery out1) mod m = eval arg1 mod m
1064
+ * 0 ≤ eval out1 < m
1065
+ *
1066
+ */
1067
+ static FIAT_P256_FIAT_INLINE void fiat_p256_to_montgomery(fiat_p256_montgomery_domain_field_element out1, const fiat_p256_non_montgomery_domain_field_element arg1) {
1068
+ uint64_t x1;
1069
+ uint64_t x2;
1070
+ uint64_t x3;
1071
+ uint64_t x4;
1072
+ uint64_t x5;
1073
+ uint64_t x6;
1074
+ uint64_t x7;
1075
+ uint64_t x8;
1076
+ uint64_t x9;
1077
+ uint64_t x10;
1078
+ uint64_t x11;
1079
+ uint64_t x12;
1080
+ uint64_t x13;
1081
+ fiat_p256_uint1 x14;
1082
+ uint64_t x15;
1083
+ fiat_p256_uint1 x16;
1084
+ uint64_t x17;
1085
+ fiat_p256_uint1 x18;
1086
+ uint64_t x19;
1087
+ uint64_t x20;
1088
+ uint64_t x21;
1089
+ uint64_t x22;
1090
+ uint64_t x23;
1091
+ uint64_t x24;
1092
+ uint64_t x25;
1093
+ fiat_p256_uint1 x26;
1094
+ uint64_t x27;
1095
+ fiat_p256_uint1 x28;
1096
+ uint64_t x29;
1097
+ fiat_p256_uint1 x30;
1098
+ uint64_t x31;
1099
+ fiat_p256_uint1 x32;
1100
+ uint64_t x33;
1101
+ fiat_p256_uint1 x34;
1102
+ uint64_t x35;
1103
+ fiat_p256_uint1 x36;
1104
+ uint64_t x37;
1105
+ uint64_t x38;
1106
+ uint64_t x39;
1107
+ uint64_t x40;
1108
+ uint64_t x41;
1109
+ uint64_t x42;
1110
+ uint64_t x43;
1111
+ uint64_t x44;
1112
+ uint64_t x45;
1113
+ fiat_p256_uint1 x46;
1114
+ uint64_t x47;
1115
+ fiat_p256_uint1 x48;
1116
+ uint64_t x49;
1117
+ fiat_p256_uint1 x50;
1118
+ uint64_t x51;
1119
+ fiat_p256_uint1 x52;
1120
+ uint64_t x53;
1121
+ fiat_p256_uint1 x54;
1122
+ uint64_t x55;
1123
+ fiat_p256_uint1 x56;
1124
+ uint64_t x57;
1125
+ fiat_p256_uint1 x58;
1126
+ uint64_t x59;
1127
+ uint64_t x60;
1128
+ uint64_t x61;
1129
+ uint64_t x62;
1130
+ uint64_t x63;
1131
+ uint64_t x64;
1132
+ uint64_t x65;
1133
+ fiat_p256_uint1 x66;
1134
+ uint64_t x67;
1135
+ fiat_p256_uint1 x68;
1136
+ uint64_t x69;
1137
+ fiat_p256_uint1 x70;
1138
+ uint64_t x71;
1139
+ fiat_p256_uint1 x72;
1140
+ uint64_t x73;
1141
+ fiat_p256_uint1 x74;
1142
+ uint64_t x75;
1143
+ fiat_p256_uint1 x76;
1144
+ uint64_t x77;
1145
+ uint64_t x78;
1146
+ uint64_t x79;
1147
+ uint64_t x80;
1148
+ uint64_t x81;
1149
+ uint64_t x82;
1150
+ uint64_t x83;
1151
+ uint64_t x84;
1152
+ uint64_t x85;
1153
+ fiat_p256_uint1 x86;
1154
+ uint64_t x87;
1155
+ fiat_p256_uint1 x88;
1156
+ uint64_t x89;
1157
+ fiat_p256_uint1 x90;
1158
+ uint64_t x91;
1159
+ fiat_p256_uint1 x92;
1160
+ uint64_t x93;
1161
+ fiat_p256_uint1 x94;
1162
+ uint64_t x95;
1163
+ fiat_p256_uint1 x96;
1164
+ uint64_t x97;
1165
+ fiat_p256_uint1 x98;
1166
+ uint64_t x99;
1167
+ uint64_t x100;
1168
+ uint64_t x101;
1169
+ uint64_t x102;
1170
+ uint64_t x103;
1171
+ uint64_t x104;
1172
+ uint64_t x105;
1173
+ fiat_p256_uint1 x106;
1174
+ uint64_t x107;
1175
+ fiat_p256_uint1 x108;
1176
+ uint64_t x109;
1177
+ fiat_p256_uint1 x110;
1178
+ uint64_t x111;
1179
+ fiat_p256_uint1 x112;
1180
+ uint64_t x113;
1181
+ fiat_p256_uint1 x114;
1182
+ uint64_t x115;
1183
+ fiat_p256_uint1 x116;
1184
+ uint64_t x117;
1185
+ uint64_t x118;
1186
+ uint64_t x119;
1187
+ uint64_t x120;
1188
+ uint64_t x121;
1189
+ uint64_t x122;
1190
+ uint64_t x123;
1191
+ uint64_t x124;
1192
+ uint64_t x125;
1193
+ fiat_p256_uint1 x126;
1194
+ uint64_t x127;
1195
+ fiat_p256_uint1 x128;
1196
+ uint64_t x129;
1197
+ fiat_p256_uint1 x130;
1198
+ uint64_t x131;
1199
+ fiat_p256_uint1 x132;
1200
+ uint64_t x133;
1201
+ fiat_p256_uint1 x134;
1202
+ uint64_t x135;
1203
+ fiat_p256_uint1 x136;
1204
+ uint64_t x137;
1205
+ fiat_p256_uint1 x138;
1206
+ uint64_t x139;
1207
+ uint64_t x140;
1208
+ uint64_t x141;
1209
+ uint64_t x142;
1210
+ uint64_t x143;
1211
+ uint64_t x144;
1212
+ uint64_t x145;
1213
+ fiat_p256_uint1 x146;
1214
+ uint64_t x147;
1215
+ fiat_p256_uint1 x148;
1216
+ uint64_t x149;
1217
+ fiat_p256_uint1 x150;
1218
+ uint64_t x151;
1219
+ fiat_p256_uint1 x152;
1220
+ uint64_t x153;
1221
+ fiat_p256_uint1 x154;
1222
+ uint64_t x155;
1223
+ fiat_p256_uint1 x156;
1224
+ uint64_t x157;
1225
+ fiat_p256_uint1 x158;
1226
+ uint64_t x159;
1227
+ fiat_p256_uint1 x160;
1228
+ uint64_t x161;
1229
+ fiat_p256_uint1 x162;
1230
+ uint64_t x163;
1231
+ fiat_p256_uint1 x164;
1232
+ uint64_t x165;
1233
+ fiat_p256_uint1 x166;
1234
+ uint64_t x167;
1235
+ uint64_t x168;
1236
+ uint64_t x169;
1237
+ uint64_t x170;
1238
+ x1 = (arg1[1]);
1239
+ x2 = (arg1[2]);
1240
+ x3 = (arg1[3]);
1241
+ x4 = (arg1[0]);
1242
+ fiat_p256_mulx_u64(&x5, &x6, x4, UINT64_C(0x4fffffffd));
1243
+ fiat_p256_mulx_u64(&x7, &x8, x4, UINT64_C(0xfffffffffffffffe));
1244
+ fiat_p256_mulx_u64(&x9, &x10, x4, UINT64_C(0xfffffffbffffffff));
1245
+ fiat_p256_mulx_u64(&x11, &x12, x4, 0x3);
1246
+ fiat_p256_addcarryx_u64(&x13, &x14, 0x0, x12, x9);
1247
+ fiat_p256_addcarryx_u64(&x15, &x16, x14, x10, x7);
1248
+ fiat_p256_addcarryx_u64(&x17, &x18, x16, x8, x5);
1249
+ fiat_p256_mulx_u64(&x19, &x20, x11, UINT64_C(0xffffffff00000001));
1250
+ fiat_p256_mulx_u64(&x21, &x22, x11, UINT32_C(0xffffffff));
1251
+ fiat_p256_mulx_u64(&x23, &x24, x11, UINT64_C(0xffffffffffffffff));
1252
+ fiat_p256_addcarryx_u64(&x25, &x26, 0x0, x24, x21);
1253
+ fiat_p256_addcarryx_u64(&x27, &x28, 0x0, x11, x23);
1254
+ fiat_p256_addcarryx_u64(&x29, &x30, x28, x13, x25);
1255
+ fiat_p256_addcarryx_u64(&x31, &x32, x30, x15, (x26 + x22));
1256
+ fiat_p256_addcarryx_u64(&x33, &x34, x32, x17, x19);
1257
+ fiat_p256_addcarryx_u64(&x35, &x36, x34, (x18 + x6), x20);
1258
+ fiat_p256_mulx_u64(&x37, &x38, x1, UINT64_C(0x4fffffffd));
1259
+ fiat_p256_mulx_u64(&x39, &x40, x1, UINT64_C(0xfffffffffffffffe));
1260
+ fiat_p256_mulx_u64(&x41, &x42, x1, UINT64_C(0xfffffffbffffffff));
1261
+ fiat_p256_mulx_u64(&x43, &x44, x1, 0x3);
1262
+ fiat_p256_addcarryx_u64(&x45, &x46, 0x0, x44, x41);
1263
+ fiat_p256_addcarryx_u64(&x47, &x48, x46, x42, x39);
1264
+ fiat_p256_addcarryx_u64(&x49, &x50, x48, x40, x37);
1265
+ fiat_p256_addcarryx_u64(&x51, &x52, 0x0, x29, x43);
1266
+ fiat_p256_addcarryx_u64(&x53, &x54, x52, x31, x45);
1267
+ fiat_p256_addcarryx_u64(&x55, &x56, x54, x33, x47);
1268
+ fiat_p256_addcarryx_u64(&x57, &x58, x56, x35, x49);
1269
+ fiat_p256_mulx_u64(&x59, &x60, x51, UINT64_C(0xffffffff00000001));
1270
+ fiat_p256_mulx_u64(&x61, &x62, x51, UINT32_C(0xffffffff));
1271
+ fiat_p256_mulx_u64(&x63, &x64, x51, UINT64_C(0xffffffffffffffff));
1272
+ fiat_p256_addcarryx_u64(&x65, &x66, 0x0, x64, x61);
1273
+ fiat_p256_addcarryx_u64(&x67, &x68, 0x0, x51, x63);
1274
+ fiat_p256_addcarryx_u64(&x69, &x70, x68, x53, x65);
1275
+ fiat_p256_addcarryx_u64(&x71, &x72, x70, x55, (x66 + x62));
1276
+ fiat_p256_addcarryx_u64(&x73, &x74, x72, x57, x59);
1277
+ fiat_p256_addcarryx_u64(&x75, &x76, x74, (((uint64_t)x58 + x36) + (x50 + x38)), x60);
1278
+ fiat_p256_mulx_u64(&x77, &x78, x2, UINT64_C(0x4fffffffd));
1279
+ fiat_p256_mulx_u64(&x79, &x80, x2, UINT64_C(0xfffffffffffffffe));
1280
+ fiat_p256_mulx_u64(&x81, &x82, x2, UINT64_C(0xfffffffbffffffff));
1281
+ fiat_p256_mulx_u64(&x83, &x84, x2, 0x3);
1282
+ fiat_p256_addcarryx_u64(&x85, &x86, 0x0, x84, x81);
1283
+ fiat_p256_addcarryx_u64(&x87, &x88, x86, x82, x79);
1284
+ fiat_p256_addcarryx_u64(&x89, &x90, x88, x80, x77);
1285
+ fiat_p256_addcarryx_u64(&x91, &x92, 0x0, x69, x83);
1286
+ fiat_p256_addcarryx_u64(&x93, &x94, x92, x71, x85);
1287
+ fiat_p256_addcarryx_u64(&x95, &x96, x94, x73, x87);
1288
+ fiat_p256_addcarryx_u64(&x97, &x98, x96, x75, x89);
1289
+ fiat_p256_mulx_u64(&x99, &x100, x91, UINT64_C(0xffffffff00000001));
1290
+ fiat_p256_mulx_u64(&x101, &x102, x91, UINT32_C(0xffffffff));
1291
+ fiat_p256_mulx_u64(&x103, &x104, x91, UINT64_C(0xffffffffffffffff));
1292
+ fiat_p256_addcarryx_u64(&x105, &x106, 0x0, x104, x101);
1293
+ fiat_p256_addcarryx_u64(&x107, &x108, 0x0, x91, x103);
1294
+ fiat_p256_addcarryx_u64(&x109, &x110, x108, x93, x105);
1295
+ fiat_p256_addcarryx_u64(&x111, &x112, x110, x95, (x106 + x102));
1296
+ fiat_p256_addcarryx_u64(&x113, &x114, x112, x97, x99);
1297
+ fiat_p256_addcarryx_u64(&x115, &x116, x114, (((uint64_t)x98 + x76) + (x90 + x78)), x100);
1298
+ fiat_p256_mulx_u64(&x117, &x118, x3, UINT64_C(0x4fffffffd));
1299
+ fiat_p256_mulx_u64(&x119, &x120, x3, UINT64_C(0xfffffffffffffffe));
1300
+ fiat_p256_mulx_u64(&x121, &x122, x3, UINT64_C(0xfffffffbffffffff));
1301
+ fiat_p256_mulx_u64(&x123, &x124, x3, 0x3);
1302
+ fiat_p256_addcarryx_u64(&x125, &x126, 0x0, x124, x121);
1303
+ fiat_p256_addcarryx_u64(&x127, &x128, x126, x122, x119);
1304
+ fiat_p256_addcarryx_u64(&x129, &x130, x128, x120, x117);
1305
+ fiat_p256_addcarryx_u64(&x131, &x132, 0x0, x109, x123);
1306
+ fiat_p256_addcarryx_u64(&x133, &x134, x132, x111, x125);
1307
+ fiat_p256_addcarryx_u64(&x135, &x136, x134, x113, x127);
1308
+ fiat_p256_addcarryx_u64(&x137, &x138, x136, x115, x129);
1309
+ fiat_p256_mulx_u64(&x139, &x140, x131, UINT64_C(0xffffffff00000001));
1310
+ fiat_p256_mulx_u64(&x141, &x142, x131, UINT32_C(0xffffffff));
1311
+ fiat_p256_mulx_u64(&x143, &x144, x131, UINT64_C(0xffffffffffffffff));
1312
+ fiat_p256_addcarryx_u64(&x145, &x146, 0x0, x144, x141);
1313
+ fiat_p256_addcarryx_u64(&x147, &x148, 0x0, x131, x143);
1314
+ fiat_p256_addcarryx_u64(&x149, &x150, x148, x133, x145);
1315
+ fiat_p256_addcarryx_u64(&x151, &x152, x150, x135, (x146 + x142));
1316
+ fiat_p256_addcarryx_u64(&x153, &x154, x152, x137, x139);
1317
+ fiat_p256_addcarryx_u64(&x155, &x156, x154, (((uint64_t)x138 + x116) + (x130 + x118)), x140);
1318
+ fiat_p256_subborrowx_u64(&x157, &x158, 0x0, x149, UINT64_C(0xffffffffffffffff));
1319
+ fiat_p256_subborrowx_u64(&x159, &x160, x158, x151, UINT32_C(0xffffffff));
1320
+ fiat_p256_subborrowx_u64(&x161, &x162, x160, x153, 0x0);
1321
+ fiat_p256_subborrowx_u64(&x163, &x164, x162, x155, UINT64_C(0xffffffff00000001));
1322
+ fiat_p256_subborrowx_u64(&x165, &x166, x164, x156, 0x0);
1323
+ fiat_p256_cmovznz_u64(&x167, x166, x157, x149);
1324
+ fiat_p256_cmovznz_u64(&x168, x166, x159, x151);
1325
+ fiat_p256_cmovznz_u64(&x169, x166, x161, x153);
1326
+ fiat_p256_cmovznz_u64(&x170, x166, x163, x155);
1327
+ out1[0] = x167;
1328
+ out1[1] = x168;
1329
+ out1[2] = x169;
1330
+ out1[3] = x170;
1331
+ }
1332
+
1333
+ /*
1334
+ * The function fiat_p256_nonzero outputs a single non-zero word if the input is non-zero and zero otherwise.
1335
+ *
1336
+ * Preconditions:
1337
+ * 0 ≤ eval arg1 < m
1338
+ * Postconditions:
1339
+ * out1 = 0 ↔ eval (from_montgomery arg1) mod m = 0
1340
+ *
1341
+ * Input Bounds:
1342
+ * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1343
+ * Output Bounds:
1344
+ * out1: [0x0 ~> 0xffffffffffffffff]
1345
+ */
1346
+ static FIAT_P256_FIAT_INLINE void fiat_p256_nonzero(uint64_t* out1, const uint64_t arg1[4]) {
1347
+ uint64_t x1;
1348
+ x1 = ((arg1[0]) | ((arg1[1]) | ((arg1[2]) | (arg1[3]))));
1349
+ *out1 = x1;
1350
+ }
1351
+
1352
+ /*
1353
+ * The function fiat_p256_selectznz is a multi-limb conditional select.
1354
+ *
1355
+ * Postconditions:
1356
+ * out1 = (if arg1 = 0 then arg2 else arg3)
1357
+ *
1358
+ * Input Bounds:
1359
+ * arg1: [0x0 ~> 0x1]
1360
+ * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1361
+ * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1362
+ * Output Bounds:
1363
+ * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1364
+ */
1365
+ static FIAT_P256_FIAT_INLINE void fiat_p256_selectznz(uint64_t out1[4], fiat_p256_uint1 arg1, const uint64_t arg2[4], const uint64_t arg3[4]) {
1366
+ uint64_t x1;
1367
+ uint64_t x2;
1368
+ uint64_t x3;
1369
+ uint64_t x4;
1370
+ fiat_p256_cmovznz_u64(&x1, arg1, (arg2[0]), (arg3[0]));
1371
+ fiat_p256_cmovznz_u64(&x2, arg1, (arg2[1]), (arg3[1]));
1372
+ fiat_p256_cmovznz_u64(&x3, arg1, (arg2[2]), (arg3[2]));
1373
+ fiat_p256_cmovznz_u64(&x4, arg1, (arg2[3]), (arg3[3]));
1374
+ out1[0] = x1;
1375
+ out1[1] = x2;
1376
+ out1[2] = x3;
1377
+ out1[3] = x4;
1378
+ }
1379
+
1380
+ /*
1381
+ * The function fiat_p256_to_bytes serializes a field element NOT in the Montgomery domain to bytes in little-endian order.
1382
+ *
1383
+ * Preconditions:
1384
+ * 0 ≤ eval arg1 < m
1385
+ * Postconditions:
1386
+ * out1 = map (λ x, ⌊((eval arg1 mod m) mod 2^(8 * (x + 1))) / 2^(8 * x)⌋) [0..31]
1387
+ *
1388
+ * Input Bounds:
1389
+ * arg1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1390
+ * Output Bounds:
1391
+ * 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]]
1392
+ */
1393
+ static FIAT_P256_FIAT_INLINE void fiat_p256_to_bytes(uint8_t out1[32], const uint64_t arg1[4]) {
1394
+ uint64_t x1;
1395
+ uint64_t x2;
1396
+ uint64_t x3;
1397
+ uint64_t x4;
1398
+ uint8_t x5;
1399
+ uint64_t x6;
1400
+ uint8_t x7;
1401
+ uint64_t x8;
1402
+ uint8_t x9;
1403
+ uint64_t x10;
1404
+ uint8_t x11;
1405
+ uint64_t x12;
1406
+ uint8_t x13;
1407
+ uint64_t x14;
1408
+ uint8_t x15;
1409
+ uint64_t x16;
1410
+ uint8_t x17;
1411
+ uint8_t x18;
1412
+ uint8_t x19;
1413
+ uint64_t x20;
1414
+ uint8_t x21;
1415
+ uint64_t x22;
1416
+ uint8_t x23;
1417
+ uint64_t x24;
1418
+ uint8_t x25;
1419
+ uint64_t x26;
1420
+ uint8_t x27;
1421
+ uint64_t x28;
1422
+ uint8_t x29;
1423
+ uint64_t x30;
1424
+ uint8_t x31;
1425
+ uint8_t x32;
1426
+ uint8_t x33;
1427
+ uint64_t x34;
1428
+ uint8_t x35;
1429
+ uint64_t x36;
1430
+ uint8_t x37;
1431
+ uint64_t x38;
1432
+ uint8_t x39;
1433
+ uint64_t x40;
1434
+ uint8_t x41;
1435
+ uint64_t x42;
1436
+ uint8_t x43;
1437
+ uint64_t x44;
1438
+ uint8_t x45;
1439
+ uint8_t x46;
1440
+ uint8_t x47;
1441
+ uint64_t x48;
1442
+ uint8_t x49;
1443
+ uint64_t x50;
1444
+ uint8_t x51;
1445
+ uint64_t x52;
1446
+ uint8_t x53;
1447
+ uint64_t x54;
1448
+ uint8_t x55;
1449
+ uint64_t x56;
1450
+ uint8_t x57;
1451
+ uint64_t x58;
1452
+ uint8_t x59;
1453
+ uint8_t x60;
1454
+ x1 = (arg1[3]);
1455
+ x2 = (arg1[2]);
1456
+ x3 = (arg1[1]);
1457
+ x4 = (arg1[0]);
1458
+ x5 = (uint8_t)(x4 & UINT8_C(0xff));
1459
+ x6 = (x4 >> 8);
1460
+ x7 = (uint8_t)(x6 & UINT8_C(0xff));
1461
+ x8 = (x6 >> 8);
1462
+ x9 = (uint8_t)(x8 & UINT8_C(0xff));
1463
+ x10 = (x8 >> 8);
1464
+ x11 = (uint8_t)(x10 & UINT8_C(0xff));
1465
+ x12 = (x10 >> 8);
1466
+ x13 = (uint8_t)(x12 & UINT8_C(0xff));
1467
+ x14 = (x12 >> 8);
1468
+ x15 = (uint8_t)(x14 & UINT8_C(0xff));
1469
+ x16 = (x14 >> 8);
1470
+ x17 = (uint8_t)(x16 & UINT8_C(0xff));
1471
+ x18 = (uint8_t)(x16 >> 8);
1472
+ x19 = (uint8_t)(x3 & UINT8_C(0xff));
1473
+ x20 = (x3 >> 8);
1474
+ x21 = (uint8_t)(x20 & UINT8_C(0xff));
1475
+ x22 = (x20 >> 8);
1476
+ x23 = (uint8_t)(x22 & UINT8_C(0xff));
1477
+ x24 = (x22 >> 8);
1478
+ x25 = (uint8_t)(x24 & UINT8_C(0xff));
1479
+ x26 = (x24 >> 8);
1480
+ x27 = (uint8_t)(x26 & UINT8_C(0xff));
1481
+ x28 = (x26 >> 8);
1482
+ x29 = (uint8_t)(x28 & UINT8_C(0xff));
1483
+ x30 = (x28 >> 8);
1484
+ x31 = (uint8_t)(x30 & UINT8_C(0xff));
1485
+ x32 = (uint8_t)(x30 >> 8);
1486
+ x33 = (uint8_t)(x2 & UINT8_C(0xff));
1487
+ x34 = (x2 >> 8);
1488
+ x35 = (uint8_t)(x34 & UINT8_C(0xff));
1489
+ x36 = (x34 >> 8);
1490
+ x37 = (uint8_t)(x36 & UINT8_C(0xff));
1491
+ x38 = (x36 >> 8);
1492
+ x39 = (uint8_t)(x38 & UINT8_C(0xff));
1493
+ x40 = (x38 >> 8);
1494
+ x41 = (uint8_t)(x40 & UINT8_C(0xff));
1495
+ x42 = (x40 >> 8);
1496
+ x43 = (uint8_t)(x42 & UINT8_C(0xff));
1497
+ x44 = (x42 >> 8);
1498
+ x45 = (uint8_t)(x44 & UINT8_C(0xff));
1499
+ x46 = (uint8_t)(x44 >> 8);
1500
+ x47 = (uint8_t)(x1 & UINT8_C(0xff));
1501
+ x48 = (x1 >> 8);
1502
+ x49 = (uint8_t)(x48 & UINT8_C(0xff));
1503
+ x50 = (x48 >> 8);
1504
+ x51 = (uint8_t)(x50 & UINT8_C(0xff));
1505
+ x52 = (x50 >> 8);
1506
+ x53 = (uint8_t)(x52 & UINT8_C(0xff));
1507
+ x54 = (x52 >> 8);
1508
+ x55 = (uint8_t)(x54 & UINT8_C(0xff));
1509
+ x56 = (x54 >> 8);
1510
+ x57 = (uint8_t)(x56 & UINT8_C(0xff));
1511
+ x58 = (x56 >> 8);
1512
+ x59 = (uint8_t)(x58 & UINT8_C(0xff));
1513
+ x60 = (uint8_t)(x58 >> 8);
1514
+ out1[0] = x5;
1515
+ out1[1] = x7;
1516
+ out1[2] = x9;
1517
+ out1[3] = x11;
1518
+ out1[4] = x13;
1519
+ out1[5] = x15;
1520
+ out1[6] = x17;
1521
+ out1[7] = x18;
1522
+ out1[8] = x19;
1523
+ out1[9] = x21;
1524
+ out1[10] = x23;
1525
+ out1[11] = x25;
1526
+ out1[12] = x27;
1527
+ out1[13] = x29;
1528
+ out1[14] = x31;
1529
+ out1[15] = x32;
1530
+ out1[16] = x33;
1531
+ out1[17] = x35;
1532
+ out1[18] = x37;
1533
+ out1[19] = x39;
1534
+ out1[20] = x41;
1535
+ out1[21] = x43;
1536
+ out1[22] = x45;
1537
+ out1[23] = x46;
1538
+ out1[24] = x47;
1539
+ out1[25] = x49;
1540
+ out1[26] = x51;
1541
+ out1[27] = x53;
1542
+ out1[28] = x55;
1543
+ out1[29] = x57;
1544
+ out1[30] = x59;
1545
+ out1[31] = x60;
1546
+ }
1547
+
1548
+ /*
1549
+ * The function fiat_p256_from_bytes deserializes a field element NOT in the Montgomery domain from bytes in little-endian order.
1550
+ *
1551
+ * Preconditions:
1552
+ * 0 ≤ bytes_eval arg1 < m
1553
+ * Postconditions:
1554
+ * eval out1 mod m = bytes_eval arg1 mod m
1555
+ * 0 ≤ eval out1 < m
1556
+ *
1557
+ * Input Bounds:
1558
+ * 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]]
1559
+ * Output Bounds:
1560
+ * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1561
+ */
1562
+ static FIAT_P256_FIAT_INLINE void fiat_p256_from_bytes(uint64_t out1[4], const uint8_t arg1[32]) {
1563
+ uint64_t x1;
1564
+ uint64_t x2;
1565
+ uint64_t x3;
1566
+ uint64_t x4;
1567
+ uint64_t x5;
1568
+ uint64_t x6;
1569
+ uint64_t x7;
1570
+ uint8_t x8;
1571
+ uint64_t x9;
1572
+ uint64_t x10;
1573
+ uint64_t x11;
1574
+ uint64_t x12;
1575
+ uint64_t x13;
1576
+ uint64_t x14;
1577
+ uint64_t x15;
1578
+ uint8_t x16;
1579
+ uint64_t x17;
1580
+ uint64_t x18;
1581
+ uint64_t x19;
1582
+ uint64_t x20;
1583
+ uint64_t x21;
1584
+ uint64_t x22;
1585
+ uint64_t x23;
1586
+ uint8_t x24;
1587
+ uint64_t x25;
1588
+ uint64_t x26;
1589
+ uint64_t x27;
1590
+ uint64_t x28;
1591
+ uint64_t x29;
1592
+ uint64_t x30;
1593
+ uint64_t x31;
1594
+ uint8_t x32;
1595
+ uint64_t x33;
1596
+ uint64_t x34;
1597
+ uint64_t x35;
1598
+ uint64_t x36;
1599
+ uint64_t x37;
1600
+ uint64_t x38;
1601
+ uint64_t x39;
1602
+ uint64_t x40;
1603
+ uint64_t x41;
1604
+ uint64_t x42;
1605
+ uint64_t x43;
1606
+ uint64_t x44;
1607
+ uint64_t x45;
1608
+ uint64_t x46;
1609
+ uint64_t x47;
1610
+ uint64_t x48;
1611
+ uint64_t x49;
1612
+ uint64_t x50;
1613
+ uint64_t x51;
1614
+ uint64_t x52;
1615
+ uint64_t x53;
1616
+ uint64_t x54;
1617
+ uint64_t x55;
1618
+ uint64_t x56;
1619
+ uint64_t x57;
1620
+ uint64_t x58;
1621
+ uint64_t x59;
1622
+ uint64_t x60;
1623
+ x1 = ((uint64_t)(arg1[31]) << 56);
1624
+ x2 = ((uint64_t)(arg1[30]) << 48);
1625
+ x3 = ((uint64_t)(arg1[29]) << 40);
1626
+ x4 = ((uint64_t)(arg1[28]) << 32);
1627
+ x5 = ((uint64_t)(arg1[27]) << 24);
1628
+ x6 = ((uint64_t)(arg1[26]) << 16);
1629
+ x7 = ((uint64_t)(arg1[25]) << 8);
1630
+ x8 = (arg1[24]);
1631
+ x9 = ((uint64_t)(arg1[23]) << 56);
1632
+ x10 = ((uint64_t)(arg1[22]) << 48);
1633
+ x11 = ((uint64_t)(arg1[21]) << 40);
1634
+ x12 = ((uint64_t)(arg1[20]) << 32);
1635
+ x13 = ((uint64_t)(arg1[19]) << 24);
1636
+ x14 = ((uint64_t)(arg1[18]) << 16);
1637
+ x15 = ((uint64_t)(arg1[17]) << 8);
1638
+ x16 = (arg1[16]);
1639
+ x17 = ((uint64_t)(arg1[15]) << 56);
1640
+ x18 = ((uint64_t)(arg1[14]) << 48);
1641
+ x19 = ((uint64_t)(arg1[13]) << 40);
1642
+ x20 = ((uint64_t)(arg1[12]) << 32);
1643
+ x21 = ((uint64_t)(arg1[11]) << 24);
1644
+ x22 = ((uint64_t)(arg1[10]) << 16);
1645
+ x23 = ((uint64_t)(arg1[9]) << 8);
1646
+ x24 = (arg1[8]);
1647
+ x25 = ((uint64_t)(arg1[7]) << 56);
1648
+ x26 = ((uint64_t)(arg1[6]) << 48);
1649
+ x27 = ((uint64_t)(arg1[5]) << 40);
1650
+ x28 = ((uint64_t)(arg1[4]) << 32);
1651
+ x29 = ((uint64_t)(arg1[3]) << 24);
1652
+ x30 = ((uint64_t)(arg1[2]) << 16);
1653
+ x31 = ((uint64_t)(arg1[1]) << 8);
1654
+ x32 = (arg1[0]);
1655
+ x33 = (x31 + (uint64_t)x32);
1656
+ x34 = (x30 + x33);
1657
+ x35 = (x29 + x34);
1658
+ x36 = (x28 + x35);
1659
+ x37 = (x27 + x36);
1660
+ x38 = (x26 + x37);
1661
+ x39 = (x25 + x38);
1662
+ x40 = (x23 + (uint64_t)x24);
1663
+ x41 = (x22 + x40);
1664
+ x42 = (x21 + x41);
1665
+ x43 = (x20 + x42);
1666
+ x44 = (x19 + x43);
1667
+ x45 = (x18 + x44);
1668
+ x46 = (x17 + x45);
1669
+ x47 = (x15 + (uint64_t)x16);
1670
+ x48 = (x14 + x47);
1671
+ x49 = (x13 + x48);
1672
+ x50 = (x12 + x49);
1673
+ x51 = (x11 + x50);
1674
+ x52 = (x10 + x51);
1675
+ x53 = (x9 + x52);
1676
+ x54 = (x7 + (uint64_t)x8);
1677
+ x55 = (x6 + x54);
1678
+ x56 = (x5 + x55);
1679
+ x57 = (x4 + x56);
1680
+ x58 = (x3 + x57);
1681
+ x59 = (x2 + x58);
1682
+ x60 = (x1 + x59);
1683
+ out1[0] = x39;
1684
+ out1[1] = x46;
1685
+ out1[2] = x53;
1686
+ out1[3] = x60;
1687
+ }
1688
+
1689
+ /*
1690
+ * The function fiat_p256_set_one returns the field element one in the Montgomery domain.
1691
+ *
1692
+ * Postconditions:
1693
+ * eval (from_montgomery out1) mod m = 1 mod m
1694
+ * 0 ≤ eval out1 < m
1695
+ *
1696
+ */
1697
+ static FIAT_P256_FIAT_INLINE void fiat_p256_set_one(fiat_p256_montgomery_domain_field_element out1) {
1698
+ out1[0] = 0x1;
1699
+ out1[1] = UINT64_C(0xffffffff00000000);
1700
+ out1[2] = UINT64_C(0xffffffffffffffff);
1701
+ out1[3] = UINT32_C(0xfffffffe);
1702
+ }
1703
+
1704
+ /*
1705
+ * The function fiat_p256_msat returns the saturated representation of the prime modulus.
1706
+ *
1707
+ * Postconditions:
1708
+ * twos_complement_eval out1 = m
1709
+ * 0 ≤ eval out1 < m
1710
+ *
1711
+ * Output Bounds:
1712
+ * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1713
+ */
1714
+ static FIAT_P256_FIAT_INLINE void fiat_p256_msat(uint64_t out1[5]) {
1715
+ out1[0] = UINT64_C(0xffffffffffffffff);
1716
+ out1[1] = UINT32_C(0xffffffff);
1717
+ out1[2] = 0x0;
1718
+ out1[3] = UINT64_C(0xffffffff00000001);
1719
+ out1[4] = 0x0;
1720
+ }
1721
+
1722
+ /*
1723
+ * The function fiat_p256_divstep computes a divstep.
1724
+ *
1725
+ * Preconditions:
1726
+ * 0 ≤ eval arg4 < m
1727
+ * 0 ≤ eval arg5 < m
1728
+ * Postconditions:
1729
+ * out1 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then 1 - arg1 else 1 + arg1)
1730
+ * twos_complement_eval out2 = (if 0 < arg1 ∧ (twos_complement_eval arg3) is odd then twos_complement_eval arg3 else twos_complement_eval arg2)
1731
+ * 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⌋)
1732
+ * 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)
1733
+ * 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)
1734
+ * 0 ≤ eval out5 < m
1735
+ * 0 ≤ eval out5 < m
1736
+ * 0 ≤ eval out2 < m
1737
+ * 0 ≤ eval out3 < m
1738
+ *
1739
+ * Input Bounds:
1740
+ * arg1: [0x0 ~> 0xffffffffffffffff]
1741
+ * arg2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1742
+ * arg3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1743
+ * arg4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1744
+ * arg5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1745
+ * Output Bounds:
1746
+ * out1: [0x0 ~> 0xffffffffffffffff]
1747
+ * out2: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1748
+ * out3: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1749
+ * out4: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1750
+ * out5: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1751
+ */
1752
+ static FIAT_P256_FIAT_INLINE void fiat_p256_divstep(uint64_t* out1, uint64_t out2[5], uint64_t out3[5], uint64_t out4[4], uint64_t out5[4], uint64_t arg1, const uint64_t arg2[5], const uint64_t arg3[5], const uint64_t arg4[4], const uint64_t arg5[4]) {
1753
+ uint64_t x1;
1754
+ fiat_p256_uint1 x2;
1755
+ fiat_p256_uint1 x3;
1756
+ uint64_t x4;
1757
+ fiat_p256_uint1 x5;
1758
+ uint64_t x6;
1759
+ uint64_t x7;
1760
+ uint64_t x8;
1761
+ uint64_t x9;
1762
+ uint64_t x10;
1763
+ uint64_t x11;
1764
+ uint64_t x12;
1765
+ fiat_p256_uint1 x13;
1766
+ uint64_t x14;
1767
+ fiat_p256_uint1 x15;
1768
+ uint64_t x16;
1769
+ fiat_p256_uint1 x17;
1770
+ uint64_t x18;
1771
+ fiat_p256_uint1 x19;
1772
+ uint64_t x20;
1773
+ fiat_p256_uint1 x21;
1774
+ uint64_t x22;
1775
+ uint64_t x23;
1776
+ uint64_t x24;
1777
+ uint64_t x25;
1778
+ uint64_t x26;
1779
+ uint64_t x27;
1780
+ uint64_t x28;
1781
+ uint64_t x29;
1782
+ uint64_t x30;
1783
+ uint64_t x31;
1784
+ fiat_p256_uint1 x32;
1785
+ uint64_t x33;
1786
+ fiat_p256_uint1 x34;
1787
+ uint64_t x35;
1788
+ fiat_p256_uint1 x36;
1789
+ uint64_t x37;
1790
+ fiat_p256_uint1 x38;
1791
+ uint64_t x39;
1792
+ fiat_p256_uint1 x40;
1793
+ uint64_t x41;
1794
+ fiat_p256_uint1 x42;
1795
+ uint64_t x43;
1796
+ fiat_p256_uint1 x44;
1797
+ uint64_t x45;
1798
+ fiat_p256_uint1 x46;
1799
+ uint64_t x47;
1800
+ fiat_p256_uint1 x48;
1801
+ uint64_t x49;
1802
+ uint64_t x50;
1803
+ uint64_t x51;
1804
+ uint64_t x52;
1805
+ uint64_t x53;
1806
+ fiat_p256_uint1 x54;
1807
+ uint64_t x55;
1808
+ fiat_p256_uint1 x56;
1809
+ uint64_t x57;
1810
+ fiat_p256_uint1 x58;
1811
+ uint64_t x59;
1812
+ fiat_p256_uint1 x60;
1813
+ uint64_t x61;
1814
+ uint64_t x62;
1815
+ fiat_p256_uint1 x63;
1816
+ uint64_t x64;
1817
+ fiat_p256_uint1 x65;
1818
+ uint64_t x66;
1819
+ fiat_p256_uint1 x67;
1820
+ uint64_t x68;
1821
+ fiat_p256_uint1 x69;
1822
+ uint64_t x70;
1823
+ uint64_t x71;
1824
+ uint64_t x72;
1825
+ uint64_t x73;
1826
+ fiat_p256_uint1 x74;
1827
+ uint64_t x75;
1828
+ uint64_t x76;
1829
+ uint64_t x77;
1830
+ uint64_t x78;
1831
+ uint64_t x79;
1832
+ uint64_t x80;
1833
+ fiat_p256_uint1 x81;
1834
+ uint64_t x82;
1835
+ fiat_p256_uint1 x83;
1836
+ uint64_t x84;
1837
+ fiat_p256_uint1 x85;
1838
+ uint64_t x86;
1839
+ fiat_p256_uint1 x87;
1840
+ uint64_t x88;
1841
+ fiat_p256_uint1 x89;
1842
+ uint64_t x90;
1843
+ uint64_t x91;
1844
+ uint64_t x92;
1845
+ uint64_t x93;
1846
+ uint64_t x94;
1847
+ fiat_p256_uint1 x95;
1848
+ uint64_t x96;
1849
+ fiat_p256_uint1 x97;
1850
+ uint64_t x98;
1851
+ fiat_p256_uint1 x99;
1852
+ uint64_t x100;
1853
+ fiat_p256_uint1 x101;
1854
+ uint64_t x102;
1855
+ fiat_p256_uint1 x103;
1856
+ uint64_t x104;
1857
+ fiat_p256_uint1 x105;
1858
+ uint64_t x106;
1859
+ fiat_p256_uint1 x107;
1860
+ uint64_t x108;
1861
+ fiat_p256_uint1 x109;
1862
+ uint64_t x110;
1863
+ fiat_p256_uint1 x111;
1864
+ uint64_t x112;
1865
+ fiat_p256_uint1 x113;
1866
+ uint64_t x114;
1867
+ uint64_t x115;
1868
+ uint64_t x116;
1869
+ uint64_t x117;
1870
+ uint64_t x118;
1871
+ uint64_t x119;
1872
+ uint64_t x120;
1873
+ uint64_t x121;
1874
+ uint64_t x122;
1875
+ uint64_t x123;
1876
+ uint64_t x124;
1877
+ uint64_t x125;
1878
+ uint64_t x126;
1879
+ fiat_p256_addcarryx_u64(&x1, &x2, 0x0, (~arg1), 0x1);
1880
+ x3 = (fiat_p256_uint1)((fiat_p256_uint1)(x1 >> 63) & (fiat_p256_uint1)((arg3[0]) & 0x1));
1881
+ fiat_p256_addcarryx_u64(&x4, &x5, 0x0, (~arg1), 0x1);
1882
+ fiat_p256_cmovznz_u64(&x6, x3, arg1, x4);
1883
+ fiat_p256_cmovznz_u64(&x7, x3, (arg2[0]), (arg3[0]));
1884
+ fiat_p256_cmovznz_u64(&x8, x3, (arg2[1]), (arg3[1]));
1885
+ fiat_p256_cmovznz_u64(&x9, x3, (arg2[2]), (arg3[2]));
1886
+ fiat_p256_cmovznz_u64(&x10, x3, (arg2[3]), (arg3[3]));
1887
+ fiat_p256_cmovznz_u64(&x11, x3, (arg2[4]), (arg3[4]));
1888
+ fiat_p256_addcarryx_u64(&x12, &x13, 0x0, 0x1, (~(arg2[0])));
1889
+ fiat_p256_addcarryx_u64(&x14, &x15, x13, 0x0, (~(arg2[1])));
1890
+ fiat_p256_addcarryx_u64(&x16, &x17, x15, 0x0, (~(arg2[2])));
1891
+ fiat_p256_addcarryx_u64(&x18, &x19, x17, 0x0, (~(arg2[3])));
1892
+ fiat_p256_addcarryx_u64(&x20, &x21, x19, 0x0, (~(arg2[4])));
1893
+ fiat_p256_cmovznz_u64(&x22, x3, (arg3[0]), x12);
1894
+ fiat_p256_cmovznz_u64(&x23, x3, (arg3[1]), x14);
1895
+ fiat_p256_cmovznz_u64(&x24, x3, (arg3[2]), x16);
1896
+ fiat_p256_cmovznz_u64(&x25, x3, (arg3[3]), x18);
1897
+ fiat_p256_cmovznz_u64(&x26, x3, (arg3[4]), x20);
1898
+ fiat_p256_cmovznz_u64(&x27, x3, (arg4[0]), (arg5[0]));
1899
+ fiat_p256_cmovznz_u64(&x28, x3, (arg4[1]), (arg5[1]));
1900
+ fiat_p256_cmovznz_u64(&x29, x3, (arg4[2]), (arg5[2]));
1901
+ fiat_p256_cmovznz_u64(&x30, x3, (arg4[3]), (arg5[3]));
1902
+ fiat_p256_addcarryx_u64(&x31, &x32, 0x0, x27, x27);
1903
+ fiat_p256_addcarryx_u64(&x33, &x34, x32, x28, x28);
1904
+ fiat_p256_addcarryx_u64(&x35, &x36, x34, x29, x29);
1905
+ fiat_p256_addcarryx_u64(&x37, &x38, x36, x30, x30);
1906
+ fiat_p256_subborrowx_u64(&x39, &x40, 0x0, x31, UINT64_C(0xffffffffffffffff));
1907
+ fiat_p256_subborrowx_u64(&x41, &x42, x40, x33, UINT32_C(0xffffffff));
1908
+ fiat_p256_subborrowx_u64(&x43, &x44, x42, x35, 0x0);
1909
+ fiat_p256_subborrowx_u64(&x45, &x46, x44, x37, UINT64_C(0xffffffff00000001));
1910
+ fiat_p256_subborrowx_u64(&x47, &x48, x46, x38, 0x0);
1911
+ x49 = (arg4[3]);
1912
+ x50 = (arg4[2]);
1913
+ x51 = (arg4[1]);
1914
+ x52 = (arg4[0]);
1915
+ fiat_p256_subborrowx_u64(&x53, &x54, 0x0, 0x0, x52);
1916
+ fiat_p256_subborrowx_u64(&x55, &x56, x54, 0x0, x51);
1917
+ fiat_p256_subborrowx_u64(&x57, &x58, x56, 0x0, x50);
1918
+ fiat_p256_subborrowx_u64(&x59, &x60, x58, 0x0, x49);
1919
+ fiat_p256_cmovznz_u64(&x61, x60, 0x0, UINT64_C(0xffffffffffffffff));
1920
+ fiat_p256_addcarryx_u64(&x62, &x63, 0x0, x53, x61);
1921
+ fiat_p256_addcarryx_u64(&x64, &x65, x63, x55, (x61 & UINT32_C(0xffffffff)));
1922
+ fiat_p256_addcarryx_u64(&x66, &x67, x65, x57, 0x0);
1923
+ fiat_p256_addcarryx_u64(&x68, &x69, x67, x59, (x61 & UINT64_C(0xffffffff00000001)));
1924
+ fiat_p256_cmovznz_u64(&x70, x3, (arg5[0]), x62);
1925
+ fiat_p256_cmovznz_u64(&x71, x3, (arg5[1]), x64);
1926
+ fiat_p256_cmovznz_u64(&x72, x3, (arg5[2]), x66);
1927
+ fiat_p256_cmovznz_u64(&x73, x3, (arg5[3]), x68);
1928
+ x74 = (fiat_p256_uint1)(x22 & 0x1);
1929
+ fiat_p256_cmovznz_u64(&x75, x74, 0x0, x7);
1930
+ fiat_p256_cmovznz_u64(&x76, x74, 0x0, x8);
1931
+ fiat_p256_cmovznz_u64(&x77, x74, 0x0, x9);
1932
+ fiat_p256_cmovznz_u64(&x78, x74, 0x0, x10);
1933
+ fiat_p256_cmovznz_u64(&x79, x74, 0x0, x11);
1934
+ fiat_p256_addcarryx_u64(&x80, &x81, 0x0, x22, x75);
1935
+ fiat_p256_addcarryx_u64(&x82, &x83, x81, x23, x76);
1936
+ fiat_p256_addcarryx_u64(&x84, &x85, x83, x24, x77);
1937
+ fiat_p256_addcarryx_u64(&x86, &x87, x85, x25, x78);
1938
+ fiat_p256_addcarryx_u64(&x88, &x89, x87, x26, x79);
1939
+ fiat_p256_cmovznz_u64(&x90, x74, 0x0, x27);
1940
+ fiat_p256_cmovznz_u64(&x91, x74, 0x0, x28);
1941
+ fiat_p256_cmovznz_u64(&x92, x74, 0x0, x29);
1942
+ fiat_p256_cmovznz_u64(&x93, x74, 0x0, x30);
1943
+ fiat_p256_addcarryx_u64(&x94, &x95, 0x0, x70, x90);
1944
+ fiat_p256_addcarryx_u64(&x96, &x97, x95, x71, x91);
1945
+ fiat_p256_addcarryx_u64(&x98, &x99, x97, x72, x92);
1946
+ fiat_p256_addcarryx_u64(&x100, &x101, x99, x73, x93);
1947
+ fiat_p256_subborrowx_u64(&x102, &x103, 0x0, x94, UINT64_C(0xffffffffffffffff));
1948
+ fiat_p256_subborrowx_u64(&x104, &x105, x103, x96, UINT32_C(0xffffffff));
1949
+ fiat_p256_subborrowx_u64(&x106, &x107, x105, x98, 0x0);
1950
+ fiat_p256_subborrowx_u64(&x108, &x109, x107, x100, UINT64_C(0xffffffff00000001));
1951
+ fiat_p256_subborrowx_u64(&x110, &x111, x109, x101, 0x0);
1952
+ fiat_p256_addcarryx_u64(&x112, &x113, 0x0, x6, 0x1);
1953
+ x114 = ((x80 >> 1) | ((x82 << 63) & UINT64_C(0xffffffffffffffff)));
1954
+ x115 = ((x82 >> 1) | ((x84 << 63) & UINT64_C(0xffffffffffffffff)));
1955
+ x116 = ((x84 >> 1) | ((x86 << 63) & UINT64_C(0xffffffffffffffff)));
1956
+ x117 = ((x86 >> 1) | ((x88 << 63) & UINT64_C(0xffffffffffffffff)));
1957
+ x118 = ((x88 & UINT64_C(0x8000000000000000)) | (x88 >> 1));
1958
+ fiat_p256_cmovznz_u64(&x119, x48, x39, x31);
1959
+ fiat_p256_cmovznz_u64(&x120, x48, x41, x33);
1960
+ fiat_p256_cmovznz_u64(&x121, x48, x43, x35);
1961
+ fiat_p256_cmovznz_u64(&x122, x48, x45, x37);
1962
+ fiat_p256_cmovznz_u64(&x123, x111, x102, x94);
1963
+ fiat_p256_cmovznz_u64(&x124, x111, x104, x96);
1964
+ fiat_p256_cmovznz_u64(&x125, x111, x106, x98);
1965
+ fiat_p256_cmovznz_u64(&x126, x111, x108, x100);
1966
+ *out1 = x112;
1967
+ out2[0] = x7;
1968
+ out2[1] = x8;
1969
+ out2[2] = x9;
1970
+ out2[3] = x10;
1971
+ out2[4] = x11;
1972
+ out3[0] = x114;
1973
+ out3[1] = x115;
1974
+ out3[2] = x116;
1975
+ out3[3] = x117;
1976
+ out3[4] = x118;
1977
+ out4[0] = x119;
1978
+ out4[1] = x120;
1979
+ out4[2] = x121;
1980
+ out4[3] = x122;
1981
+ out5[0] = x123;
1982
+ out5[1] = x124;
1983
+ out5[2] = x125;
1984
+ out5[3] = x126;
1985
+ }
1986
+
1987
+ /*
1988
+ * The function fiat_p256_divstep_precomp returns the precomputed value for Bernstein-Yang-inversion (in montgomery form).
1989
+ *
1990
+ * Postconditions:
1991
+ * 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⌋)
1992
+ * 0 ≤ eval out1 < m
1993
+ *
1994
+ * Output Bounds:
1995
+ * out1: [[0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff], [0x0 ~> 0xffffffffffffffff]]
1996
+ */
1997
+ static FIAT_P256_FIAT_INLINE void fiat_p256_divstep_precomp(uint64_t out1[4]) {
1998
+ out1[0] = UINT64_C(0x67ffffffb8000000);
1999
+ out1[1] = UINT64_C(0xc000000038000000);
2000
+ out1[2] = UINT64_C(0xd80000007fffffff);
2001
+ out1[3] = UINT64_C(0x2fffffffffffffff);
2002
+ }