cjson
fuzzing
inputs
test1 test10 test11 test2 test3 test3.bu test3.uf test3.uu test4 test5 test6 test7 test8 test9library_config
cJSONConfig.cmake.in cJSONConfigVersion.cmake.in libcjson.pc.in libcjson_utils.pc.in uninstall.cmaketests
inputs
test1 test1.expected test10 test10.expected test11 test11.expected test2 test2.expected test3 test3.expected test4 test4.expected test5 test5.expected test6 test7 test7.expected test8 test8.expected test9 test9.expectedjson-patch-tests
.editorconfig .gitignore .npmignore README.md cjson-utils-tests.json package.json spec_tests.json tests.jsonunity
auto
colour_prompt.rb colour_reporter.rb generate_config.yml generate_module.rb generate_test_runner.rb parse_output.rb stylize_as_junit.rb test_file_filter.rb type_sanitizer.rb unity_test_summary.py unity_test_summary.rb unity_to_junit.pydocs
ThrowTheSwitchCodingStandard.md UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf UnityAssertionsReference.md UnityConfigurationGuide.md UnityGettingStartedGuide.md UnityHelperScriptsGuide.md license.txtexamples
unity_config.hcurl
.github
scripts
cleancmd.pl cmp-config.pl cmp-pkg-config.sh codespell-ignore.words codespell.sh distfiles.sh pyspelling.words pyspelling.yaml randcurl.pl requirements-docs.txt requirements-proselint.txt requirements.txt shellcheck-ci.sh shellcheck.sh spellcheck.curl trimmarkdownheader.pl typos.sh typos.toml verify-examples.pl verify-synopsis.pl yamlcheck.sh yamlcheck.yamlworkflows
appveyor-status.yml checkdocs.yml checksrc.yml checkurls.yml codeql.yml configure-vs-cmake.yml curl-for-win.yml distcheck.yml fuzz.yml http3-linux.yml label.yml linux-old.yml linux.yml macos.yml non-native.yml windows.ymlCMake
CurlSymbolHiding.cmake CurlTests.c FindBrotli.cmake FindCares.cmake FindGSS.cmake FindGnuTLS.cmake FindLDAP.cmake FindLibbacktrace.cmake FindLibgsasl.cmake FindLibidn2.cmake FindLibpsl.cmake FindLibssh.cmake FindLibssh2.cmake FindLibuv.cmake FindMbedTLS.cmake FindNGHTTP2.cmake FindNGHTTP3.cmake FindNGTCP2.cmake FindNettle.cmake FindQuiche.cmake FindRustls.cmake FindWolfSSL.cmake FindZstd.cmake Macros.cmake OtherTests.cmake PickyWarnings.cmake Utilities.cmake cmake_uninstall.in.cmake curl-config.in.cmake unix-cache.cmake win32-cache.cmakedocs
cmdline-opts
.gitignore CMakeLists.txt MANPAGE.md Makefile.am Makefile.inc _AUTHORS.md _BUGS.md _DESCRIPTION.md _ENVIRONMENT.md _EXITCODES.md _FILES.md _GLOBBING.md _NAME.md _OPTIONS.md _OUTPUT.md _PROGRESS.md _PROTOCOLS.md _PROXYPREFIX.md _SEEALSO.md _SYNOPSIS.md _URL.md _VARIABLES.md _VERSION.md _WWW.md abstract-unix-socket.md alt-svc.md anyauth.md append.md aws-sigv4.md basic.md ca-native.md cacert.md capath.md cert-status.md cert-type.md cert.md ciphers.md compressed-ssh.md compressed.md config.md connect-timeout.md connect-to.md continue-at.md cookie-jar.md cookie.md create-dirs.md create-file-mode.md crlf.md crlfile.md curves.md data-ascii.md data-binary.md data-raw.md data-urlencode.md data.md delegation.md digest.md disable-eprt.md disable-epsv.md disable.md disallow-username-in-url.md dns-interface.md dns-ipv4-addr.md dns-ipv6-addr.md dns-servers.md doh-cert-status.md doh-insecure.md doh-url.md dump-ca-embed.md dump-header.md ech.md egd-file.md engine.md etag-compare.md etag-save.md expect100-timeout.md fail-early.md fail-with-body.md fail.md false-start.md follow.md form-escape.md form-string.md form.md ftp-account.md ftp-alternative-to-user.md ftp-create-dirs.md ftp-method.md ftp-pasv.md ftp-port.md ftp-pret.md ftp-skip-pasv-ip.md ftp-ssl-ccc-mode.md ftp-ssl-ccc.md ftp-ssl-control.md get.md globoff.md happy-eyeballs-timeout-ms.md haproxy-clientip.md haproxy-protocol.md head.md header.md help.md hostpubmd5.md hostpubsha256.md hsts.md http0.9.md http1.0.md http1.1.md http2-prior-knowledge.md http2.md http3-only.md http3.md ignore-content-length.md insecure.md interface.md ip-tos.md ipfs-gateway.md ipv4.md ipv6.md json.md junk-session-cookies.md keepalive-cnt.md keepalive-time.md key-type.md key.md knownhosts.md krb.md libcurl.md limit-rate.md list-only.md local-port.md location-trusted.md location.md login-options.md mail-auth.md mail-from.md mail-rcpt-allowfails.md mail-rcpt.md mainpage.idx manual.md max-filesize.md max-redirs.md max-time.md metalink.md mptcp.md negotiate.md netrc-file.md netrc-optional.md netrc.md next.md no-alpn.md no-buffer.md no-clobber.md no-keepalive.md no-npn.md no-progress-meter.md no-sessionid.md noproxy.md ntlm-wb.md ntlm.md oauth2-bearer.md out-null.md output-dir.md output.md parallel-immediate.md parallel-max-host.md parallel-max.md parallel.md pass.md path-as-is.md pinnedpubkey.md post301.md post302.md post303.md preproxy.md progress-bar.md proto-default.md proto-redir.md proto.md proxy-anyauth.md proxy-basic.md proxy-ca-native.md proxy-cacert.md proxy-capath.md proxy-cert-type.md proxy-cert.md proxy-ciphers.md proxy-crlfile.md proxy-digest.md proxy-header.md proxy-http2.md proxy-insecure.md proxy-key-type.md proxy-key.md proxy-negotiate.md proxy-ntlm.md proxy-pass.md proxy-pinnedpubkey.md proxy-service-name.md proxy-ssl-allow-beast.md proxy-ssl-auto-client-cert.md proxy-tls13-ciphers.md proxy-tlsauthtype.md proxy-tlspassword.md proxy-tlsuser.md proxy-tlsv1.md proxy-user.md proxy.md proxy1.0.md proxytunnel.md pubkey.md quote.md random-file.md range.md rate.md raw.md referer.md remote-header-name.md remote-name-all.md remote-name.md remote-time.md remove-on-error.md request-target.md request.md resolve.md retry-all-errors.md retry-connrefused.md retry-delay.md retry-max-time.md retry.md sasl-authzid.md sasl-ir.md service-name.md show-error.md show-headers.md sigalgs.md silent.md skip-existing.md socks4.md socks4a.md socks5-basic.md socks5-gssapi-nec.md socks5-gssapi-service.md socks5-gssapi.md socks5-hostname.md socks5.md speed-limit.md speed-time.md ssl-allow-beast.md ssl-auto-client-cert.md ssl-no-revoke.md ssl-reqd.md ssl-revoke-best-effort.md ssl-sessions.md ssl.md sslv2.md sslv3.md stderr.md styled-output.md suppress-connect-headers.md tcp-fastopen.md tcp-nodelay.md telnet-option.md tftp-blksize.md tftp-no-options.md time-cond.md tls-earlydata.md tls-max.md tls13-ciphers.md tlsauthtype.md tlspassword.md tlsuser.md tlsv1.0.md tlsv1.1.md tlsv1.2.md tlsv1.3.md tlsv1.md tr-encoding.md trace-ascii.md trace-config.md trace-ids.md trace-time.md trace.md unix-socket.md upload-file.md upload-flags.md url-query.md url.md use-ascii.md user-agent.md user.md variable.md verbose.md version.md vlan-priority.md write-out.md xattr.mdexamples
.checksrc .gitignore 10-at-a-time.c CMakeLists.txt Makefile.am Makefile.example Makefile.inc README.md adddocsref.pl address-scope.c altsvc.c anyauthput.c block_ip.c cacertinmem.c certinfo.c chkspeed.c connect-to.c cookie_interface.c crawler.c debug.c default-scheme.c ephiperfifo.c evhiperfifo.c externalsocket.c fileupload.c ftp-delete.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c getredirect.c getreferrer.c ghiper.c headerapi.c hiperfifo.c hsts-preload.c htmltidy.c htmltitle.cpp http-options.c http-post.c http2-download.c http2-pushinmemory.c http2-serverpush.c http2-upload.c http3-present.c http3.c httpcustomheader.c httpput-postfields.c httpput.c https.c imap-append.c imap-authzid.c imap-copy.c imap-create.c imap-delete.c imap-examine.c imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c ipv6.c keepalive.c localport.c log_failed_transfers.c maxconnects.c multi-app.c multi-debugcallback.c multi-double.c multi-event.c multi-formadd.c multi-legacy.c multi-post.c multi-single.c multi-uv.c netrc.c parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c postinmemory.c postit2-formadd.c postit2.c progressfunc.c protofeats.c range.c resolve.c rtsp-options.c sendrecv.c sepheaders.c sessioninfo.c sftpget.c sftpuploadresume.c shared-connection-cache.c simple.c simplepost.c simplessl.c smooth-gtk-thread.c smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c synctime.c threaded.c unixsocket.c url2file.c urlapi.c usercertinmem.c version-check.pl websocket-cb.c websocket-updown.c websocket.c xmlstream.cinternals
BUFQ.md BUFREF.md CHECKSRC.md CLIENT-READERS.md CLIENT-WRITERS.md CODE_STYLE.md CONNECTION-FILTERS.md CREDENTIALS.md CURLX.md DYNBUF.md HASH.md LLIST.md MID.md MQTT.md MULTI-EV.md NEW-PROTOCOL.md PEERS.md PORTING.md RATELIMITS.md README.md SCORECARD.md SPLAY.md STRPARSE.md THRDPOOL-AND-QUEUE.md TIME-KEEPING.md TLS-SESSIONS.md UINT_SETS.md WEBSOCKET.mdlibcurl
opts
CMakeLists.txt CURLINFO_ACTIVESOCKET.md CURLINFO_APPCONNECT_TIME.md CURLINFO_APPCONNECT_TIME_T.md CURLINFO_CAINFO.md CURLINFO_CAPATH.md CURLINFO_CERTINFO.md CURLINFO_CONDITION_UNMET.md CURLINFO_CONNECT_TIME.md CURLINFO_CONNECT_TIME_T.md CURLINFO_CONN_ID.md CURLINFO_CONTENT_LENGTH_DOWNLOAD.md CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md CURLINFO_CONTENT_LENGTH_UPLOAD.md CURLINFO_CONTENT_LENGTH_UPLOAD_T.md CURLINFO_CONTENT_TYPE.md CURLINFO_COOKIELIST.md CURLINFO_EARLYDATA_SENT_T.md CURLINFO_EFFECTIVE_METHOD.md CURLINFO_EFFECTIVE_URL.md CURLINFO_FILETIME.md CURLINFO_FILETIME_T.md CURLINFO_FTP_ENTRY_PATH.md CURLINFO_HEADER_SIZE.md CURLINFO_HTTPAUTH_AVAIL.md CURLINFO_HTTPAUTH_USED.md CURLINFO_HTTP_CONNECTCODE.md CURLINFO_HTTP_VERSION.md CURLINFO_LASTSOCKET.md CURLINFO_LOCAL_IP.md CURLINFO_LOCAL_PORT.md CURLINFO_NAMELOOKUP_TIME.md CURLINFO_NAMELOOKUP_TIME_T.md CURLINFO_NUM_CONNECTS.md CURLINFO_OS_ERRNO.md CURLINFO_POSTTRANSFER_TIME_T.md CURLINFO_PRETRANSFER_TIME.md CURLINFO_PRETRANSFER_TIME_T.md CURLINFO_PRIMARY_IP.md CURLINFO_PRIMARY_PORT.md CURLINFO_PRIVATE.md CURLINFO_PROTOCOL.md CURLINFO_PROXYAUTH_AVAIL.md CURLINFO_PROXYAUTH_USED.md CURLINFO_PROXY_ERROR.md CURLINFO_PROXY_SSL_VERIFYRESULT.md CURLINFO_QUEUE_TIME_T.md CURLINFO_REDIRECT_COUNT.md CURLINFO_REDIRECT_TIME.md CURLINFO_REDIRECT_TIME_T.md CURLINFO_REDIRECT_URL.md CURLINFO_REFERER.md CURLINFO_REQUEST_SIZE.md CURLINFO_RESPONSE_CODE.md CURLINFO_RETRY_AFTER.md CURLINFO_RTSP_CLIENT_CSEQ.md CURLINFO_RTSP_CSEQ_RECV.md CURLINFO_RTSP_SERVER_CSEQ.md CURLINFO_RTSP_SESSION_ID.md CURLINFO_SCHEME.md CURLINFO_SIZE_DELIVERED.md CURLINFO_SIZE_DOWNLOAD.md CURLINFO_SIZE_DOWNLOAD_T.md CURLINFO_SIZE_UPLOAD.md CURLINFO_SIZE_UPLOAD_T.md CURLINFO_SPEED_DOWNLOAD.md CURLINFO_SPEED_DOWNLOAD_T.md CURLINFO_SPEED_UPLOAD.md CURLINFO_SPEED_UPLOAD_T.md CURLINFO_SSL_ENGINES.md CURLINFO_SSL_VERIFYRESULT.md CURLINFO_STARTTRANSFER_TIME.md CURLINFO_STARTTRANSFER_TIME_T.md CURLINFO_TLS_SESSION.md CURLINFO_TLS_SSL_PTR.md CURLINFO_TOTAL_TIME.md CURLINFO_TOTAL_TIME_T.md CURLINFO_USED_PROXY.md CURLINFO_XFER_ID.md CURLMINFO_XFERS_ADDED.md CURLMINFO_XFERS_CURRENT.md CURLMINFO_XFERS_DONE.md CURLMINFO_XFERS_PENDING.md CURLMINFO_XFERS_RUNNING.md CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.md CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.md CURLMOPT_MAXCONNECTS.md CURLMOPT_MAX_CONCURRENT_STREAMS.md CURLMOPT_MAX_HOST_CONNECTIONS.md CURLMOPT_MAX_PIPELINE_LENGTH.md CURLMOPT_MAX_TOTAL_CONNECTIONS.md CURLMOPT_NETWORK_CHANGED.md CURLMOPT_NOTIFYDATA.md CURLMOPT_NOTIFYFUNCTION.md CURLMOPT_PIPELINING.md CURLMOPT_PIPELINING_SERVER_BL.md CURLMOPT_PIPELINING_SITE_BL.md CURLMOPT_PUSHDATA.md CURLMOPT_PUSHFUNCTION.md CURLMOPT_QUICK_EXIT.md CURLMOPT_RESOLVE_THREADS_MAX.md CURLMOPT_SOCKETDATA.md CURLMOPT_SOCKETFUNCTION.md CURLMOPT_TIMERDATA.md CURLMOPT_TIMERFUNCTION.md CURLOPT_ABSTRACT_UNIX_SOCKET.md CURLOPT_ACCEPTTIMEOUT_MS.md CURLOPT_ACCEPT_ENCODING.md CURLOPT_ADDRESS_SCOPE.md CURLOPT_ALTSVC.md CURLOPT_ALTSVC_CTRL.md CURLOPT_APPEND.md CURLOPT_AUTOREFERER.md CURLOPT_AWS_SIGV4.md CURLOPT_BUFFERSIZE.md CURLOPT_CAINFO.md CURLOPT_CAINFO_BLOB.md CURLOPT_CAPATH.md CURLOPT_CA_CACHE_TIMEOUT.md CURLOPT_CERTINFO.md CURLOPT_CHUNK_BGN_FUNCTION.md CURLOPT_CHUNK_DATA.md CURLOPT_CHUNK_END_FUNCTION.md CURLOPT_CLOSESOCKETDATA.md CURLOPT_CLOSESOCKETFUNCTION.md CURLOPT_CONNECTTIMEOUT.md CURLOPT_CONNECTTIMEOUT_MS.md CURLOPT_CONNECT_ONLY.md CURLOPT_CONNECT_TO.md CURLOPT_CONV_FROM_NETWORK_FUNCTION.md CURLOPT_CONV_FROM_UTF8_FUNCTION.md CURLOPT_CONV_TO_NETWORK_FUNCTION.md CURLOPT_COOKIE.md CURLOPT_COOKIEFILE.md CURLOPT_COOKIEJAR.md CURLOPT_COOKIELIST.md CURLOPT_COOKIESESSION.md CURLOPT_COPYPOSTFIELDS.md CURLOPT_CRLF.md CURLOPT_CRLFILE.md CURLOPT_CURLU.md CURLOPT_CUSTOMREQUEST.md CURLOPT_DEBUGDATA.md CURLOPT_DEBUGFUNCTION.md CURLOPT_DEFAULT_PROTOCOL.md CURLOPT_DIRLISTONLY.md CURLOPT_DISALLOW_USERNAME_IN_URL.md CURLOPT_DNS_CACHE_TIMEOUT.md CURLOPT_DNS_INTERFACE.md CURLOPT_DNS_LOCAL_IP4.md CURLOPT_DNS_LOCAL_IP6.md CURLOPT_DNS_SERVERS.md CURLOPT_DNS_SHUFFLE_ADDRESSES.md CURLOPT_DNS_USE_GLOBAL_CACHE.md CURLOPT_DOH_SSL_VERIFYHOST.md CURLOPT_DOH_SSL_VERIFYPEER.md CURLOPT_DOH_SSL_VERIFYSTATUS.md CURLOPT_DOH_URL.md CURLOPT_ECH.md CURLOPT_EGDSOCKET.md CURLOPT_ERRORBUFFER.md CURLOPT_EXPECT_100_TIMEOUT_MS.md CURLOPT_FAILONERROR.md CURLOPT_FILETIME.md CURLOPT_FNMATCH_DATA.md CURLOPT_FNMATCH_FUNCTION.md CURLOPT_FOLLOWLOCATION.md CURLOPT_FORBID_REUSE.md CURLOPT_FRESH_CONNECT.md CURLOPT_FTPPORT.md CURLOPT_FTPSSLAUTH.md CURLOPT_FTP_ACCOUNT.md CURLOPT_FTP_ALTERNATIVE_TO_USER.md CURLOPT_FTP_CREATE_MISSING_DIRS.md CURLOPT_FTP_FILEMETHOD.md CURLOPT_FTP_SKIP_PASV_IP.md CURLOPT_FTP_SSL_CCC.md CURLOPT_FTP_USE_EPRT.md CURLOPT_FTP_USE_EPSV.md CURLOPT_FTP_USE_PRET.md CURLOPT_GSSAPI_DELEGATION.md CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.md CURLOPT_HAPROXYPROTOCOL.md CURLOPT_HAPROXY_CLIENT_IP.md CURLOPT_HEADER.md CURLOPT_HEADERDATA.md CURLOPT_HEADERFUNCTION.md CURLOPT_HEADEROPT.md CURLOPT_HSTS.md CURLOPT_HSTSREADDATA.md CURLOPT_HSTSREADFUNCTION.md CURLOPT_HSTSWRITEDATA.md CURLOPT_HSTSWRITEFUNCTION.md CURLOPT_HSTS_CTRL.md CURLOPT_HTTP09_ALLOWED.md CURLOPT_HTTP200ALIASES.md CURLOPT_HTTPAUTH.md CURLOPT_HTTPGET.md CURLOPT_HTTPHEADER.md CURLOPT_HTTPPOST.md CURLOPT_HTTPPROXYTUNNEL.md CURLOPT_HTTP_CONTENT_DECODING.md CURLOPT_HTTP_TRANSFER_DECODING.md CURLOPT_HTTP_VERSION.md CURLOPT_IGNORE_CONTENT_LENGTH.md CURLOPT_INFILESIZE.md CURLOPT_INFILESIZE_LARGE.md CURLOPT_INTERFACE.md CURLOPT_INTERLEAVEDATA.md CURLOPT_INTERLEAVEFUNCTION.md CURLOPT_IOCTLDATA.md CURLOPT_IOCTLFUNCTION.md CURLOPT_IPRESOLVE.md CURLOPT_ISSUERCERT.md CURLOPT_ISSUERCERT_BLOB.md CURLOPT_KEEP_SENDING_ON_ERROR.md CURLOPT_KEYPASSWD.md CURLOPT_KRBLEVEL.md CURLOPT_LOCALPORT.md CURLOPT_LOCALPORTRANGE.md CURLOPT_LOGIN_OPTIONS.md CURLOPT_LOW_SPEED_LIMIT.md CURLOPT_LOW_SPEED_TIME.md CURLOPT_MAIL_AUTH.md CURLOPT_MAIL_FROM.md CURLOPT_MAIL_RCPT.md CURLOPT_MAIL_RCPT_ALLOWFAILS.md CURLOPT_MAXAGE_CONN.md CURLOPT_MAXCONNECTS.md CURLOPT_MAXFILESIZE.md CURLOPT_MAXFILESIZE_LARGE.md CURLOPT_MAXLIFETIME_CONN.md CURLOPT_MAXREDIRS.md CURLOPT_MAX_RECV_SPEED_LARGE.md CURLOPT_MAX_SEND_SPEED_LARGE.md CURLOPT_MIMEPOST.md CURLOPT_MIME_OPTIONS.md CURLOPT_NETRC.md CURLOPT_NETRC_FILE.md CURLOPT_NEW_DIRECTORY_PERMS.md CURLOPT_NEW_FILE_PERMS.md CURLOPT_NOBODY.md CURLOPT_NOPROGRESS.md CURLOPT_NOPROXY.md CURLOPT_NOSIGNAL.md CURLOPT_OPENSOCKETDATA.md CURLOPT_OPENSOCKETFUNCTION.md CURLOPT_PASSWORD.md CURLOPT_PATH_AS_IS.md CURLOPT_PINNEDPUBLICKEY.md CURLOPT_PIPEWAIT.md CURLOPT_PORT.md CURLOPT_POST.md CURLOPT_POSTFIELDS.md CURLOPT_POSTFIELDSIZE.md CURLOPT_POSTFIELDSIZE_LARGE.md CURLOPT_POSTQUOTE.md CURLOPT_POSTREDIR.md CURLOPT_PREQUOTE.md CURLOPT_PREREQDATA.md CURLOPT_PREREQFUNCTION.md CURLOPT_PRE_PROXY.md CURLOPT_PRIVATE.md CURLOPT_PROGRESSDATA.md CURLOPT_PROGRESSFUNCTION.md CURLOPT_PROTOCOLS.md CURLOPT_PROTOCOLS_STR.md CURLOPT_PROXY.md CURLOPT_PROXYAUTH.md CURLOPT_PROXYHEADER.md CURLOPT_PROXYPASSWORD.md CURLOPT_PROXYPORT.md CURLOPT_PROXYTYPE.md CURLOPT_PROXYUSERNAME.md CURLOPT_PROXYUSERPWD.md CURLOPT_PROXY_CAINFO.md CURLOPT_PROXY_CAINFO_BLOB.md CURLOPT_PROXY_CAPATH.md CURLOPT_PROXY_CRLFILE.md CURLOPT_PROXY_ISSUERCERT.md CURLOPT_PROXY_ISSUERCERT_BLOB.md CURLOPT_PROXY_KEYPASSWD.md CURLOPT_PROXY_PINNEDPUBLICKEY.md CURLOPT_PROXY_SERVICE_NAME.md CURLOPT_PROXY_SSLCERT.md CURLOPT_PROXY_SSLCERTTYPE.md CURLOPT_PROXY_SSLCERT_BLOB.md CURLOPT_PROXY_SSLKEY.md CURLOPT_PROXY_SSLKEYTYPE.md CURLOPT_PROXY_SSLKEY_BLOB.md CURLOPT_PROXY_SSLVERSION.md CURLOPT_PROXY_SSL_CIPHER_LIST.md CURLOPT_PROXY_SSL_OPTIONS.md CURLOPT_PROXY_SSL_VERIFYHOST.md CURLOPT_PROXY_SSL_VERIFYPEER.md CURLOPT_PROXY_TLS13_CIPHERS.md CURLOPT_PROXY_TLSAUTH_PASSWORD.md CURLOPT_PROXY_TLSAUTH_TYPE.md CURLOPT_PROXY_TLSAUTH_USERNAME.md CURLOPT_PROXY_TRANSFER_MODE.md CURLOPT_PUT.md CURLOPT_QUICK_EXIT.md CURLOPT_QUOTE.md CURLOPT_RANDOM_FILE.md CURLOPT_RANGE.md CURLOPT_READDATA.md CURLOPT_READFUNCTION.md CURLOPT_REDIR_PROTOCOLS.md CURLOPT_REDIR_PROTOCOLS_STR.md CURLOPT_REFERER.md CURLOPT_REQUEST_TARGET.md CURLOPT_RESOLVE.md CURLOPT_RESOLVER_START_DATA.md CURLOPT_RESOLVER_START_FUNCTION.md CURLOPT_RESUME_FROM.md CURLOPT_RESUME_FROM_LARGE.md CURLOPT_RTSP_CLIENT_CSEQ.md CURLOPT_RTSP_REQUEST.md CURLOPT_RTSP_SERVER_CSEQ.md CURLOPT_RTSP_SESSION_ID.md CURLOPT_RTSP_STREAM_URI.md CURLOPT_RTSP_TRANSPORT.md CURLOPT_SASL_AUTHZID.md CURLOPT_SASL_IR.md CURLOPT_SEEKDATA.md CURLOPT_SEEKFUNCTION.md CURLOPT_SERVER_RESPONSE_TIMEOUT.md CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.md CURLOPT_SERVICE_NAME.md CURLOPT_SHARE.md CURLOPT_SOCKOPTDATA.md CURLOPT_SOCKOPTFUNCTION.md CURLOPT_SOCKS5_AUTH.md CURLOPT_SOCKS5_GSSAPI_NEC.md CURLOPT_SOCKS5_GSSAPI_SERVICE.md CURLOPT_SSH_AUTH_TYPES.md CURLOPT_SSH_COMPRESSION.md CURLOPT_SSH_HOSTKEYDATA.md CURLOPT_SSH_HOSTKEYFUNCTION.md CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.md CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.md CURLOPT_SSH_KEYDATA.md CURLOPT_SSH_KEYFUNCTION.md CURLOPT_SSH_KNOWNHOSTS.md CURLOPT_SSH_PRIVATE_KEYFILE.md CURLOPT_SSH_PUBLIC_KEYFILE.md CURLOPT_SSLCERT.md CURLOPT_SSLCERTTYPE.md CURLOPT_SSLCERT_BLOB.md CURLOPT_SSLENGINE.md CURLOPT_SSLENGINE_DEFAULT.md CURLOPT_SSLKEY.md CURLOPT_SSLKEYTYPE.md CURLOPT_SSLKEY_BLOB.md CURLOPT_SSLVERSION.md CURLOPT_SSL_CIPHER_LIST.md CURLOPT_SSL_CTX_DATA.md CURLOPT_SSL_CTX_FUNCTION.md CURLOPT_SSL_EC_CURVES.md CURLOPT_SSL_ENABLE_ALPN.md CURLOPT_SSL_ENABLE_NPN.md CURLOPT_SSL_FALSESTART.md CURLOPT_SSL_OPTIONS.md CURLOPT_SSL_SESSIONID_CACHE.md CURLOPT_SSL_SIGNATURE_ALGORITHMS.md CURLOPT_SSL_VERIFYHOST.md CURLOPT_SSL_VERIFYPEER.md CURLOPT_SSL_VERIFYSTATUS.md CURLOPT_STDERR.md CURLOPT_STREAM_DEPENDS.md CURLOPT_STREAM_DEPENDS_E.md CURLOPT_STREAM_WEIGHT.md CURLOPT_SUPPRESS_CONNECT_HEADERS.md CURLOPT_TCP_FASTOPEN.md CURLOPT_TCP_KEEPALIVE.md CURLOPT_TCP_KEEPCNT.md CURLOPT_TCP_KEEPIDLE.md CURLOPT_TCP_KEEPINTVL.md CURLOPT_TCP_NODELAY.md CURLOPT_TELNETOPTIONS.md CURLOPT_TFTP_BLKSIZE.md CURLOPT_TFTP_NO_OPTIONS.md CURLOPT_TIMECONDITION.md CURLOPT_TIMEOUT.md CURLOPT_TIMEOUT_MS.md CURLOPT_TIMEVALUE.md CURLOPT_TIMEVALUE_LARGE.md CURLOPT_TLS13_CIPHERS.md CURLOPT_TLSAUTH_PASSWORD.md CURLOPT_TLSAUTH_TYPE.md CURLOPT_TLSAUTH_USERNAME.md CURLOPT_TRAILERDATA.md CURLOPT_TRAILERFUNCTION.md CURLOPT_TRANSFERTEXT.md CURLOPT_TRANSFER_ENCODING.md CURLOPT_UNIX_SOCKET_PATH.md CURLOPT_UNRESTRICTED_AUTH.md CURLOPT_UPKEEP_INTERVAL_MS.md CURLOPT_UPLOAD.md CURLOPT_UPLOAD_BUFFERSIZE.md CURLOPT_UPLOAD_FLAGS.md CURLOPT_URL.md CURLOPT_USERAGENT.md CURLOPT_USERNAME.md CURLOPT_USERPWD.md CURLOPT_USE_SSL.md CURLOPT_VERBOSE.md CURLOPT_WILDCARDMATCH.md CURLOPT_WRITEDATA.md CURLOPT_WRITEFUNCTION.md CURLOPT_WS_OPTIONS.md CURLOPT_XFERINFODATA.md CURLOPT_XFERINFOFUNCTION.md CURLOPT_XOAUTH2_BEARER.md CURLSHOPT_LOCKFUNC.md CURLSHOPT_SHARE.md CURLSHOPT_UNLOCKFUNC.md CURLSHOPT_UNSHARE.md CURLSHOPT_USERDATA.md Makefile.am Makefile.incinclude
curl
Makefile.am curl.h curlver.h easy.h header.h mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h websockets.hlib
curlx
base64.c base64.h basename.c basename.h dynbuf.c dynbuf.h fopen.c fopen.h inet_ntop.c inet_ntop.h inet_pton.c inet_pton.h multibyte.c multibyte.h nonblock.c nonblock.h snprintf.c snprintf.h strcopy.c strcopy.h strdup.c strdup.h strerr.c strerr.h strparse.c strparse.h timediff.c timediff.h timeval.c timeval.h version_win32.c version_win32.h wait.c wait.h warnless.c warnless.h winapi.c winapi.hvauth
cleartext.c cram.c digest.c digest.h digest_sspi.c gsasl.c krb5_gssapi.c krb5_sspi.c ntlm.c ntlm_sspi.c oauth2.c spnego_gssapi.c spnego_sspi.c vauth.c vauth.hvquic
curl_ngtcp2.c curl_ngtcp2.h curl_quiche.c curl_quiche.h vquic-tls.c vquic-tls.h vquic.c vquic.h vquic_int.hvtls
apple.c apple.h cipher_suite.c cipher_suite.h gtls.c gtls.h hostcheck.c hostcheck.h keylog.c keylog.h mbedtls.c mbedtls.h openssl.c openssl.h rustls.c rustls.h schannel.c schannel.h schannel_int.h schannel_verify.c vtls.c vtls.h vtls_int.h vtls_scache.c vtls_scache.h vtls_spack.c vtls_spack.h wolfssl.c wolfssl.h x509asn1.c x509asn1.hm4
.gitignore curl-amissl.m4 curl-apple-sectrust.m4 curl-compilers.m4 curl-confopts.m4 curl-functions.m4 curl-gnutls.m4 curl-mbedtls.m4 curl-openssl.m4 curl-override.m4 curl-reentrant.m4 curl-rustls.m4 curl-schannel.m4 curl-sysconfig.m4 curl-wolfssl.m4 xc-am-iface.m4 xc-cc-check.m4 xc-lt-iface.m4 xc-val-flgs.m4 zz40-xc-ovr.m4 zz50-xc-ovr.m4projects
OS400
.checksrc README.OS400 ccsidcurl.c ccsidcurl.h config400.default curl.cmd curl.inc.in curlcl.c curlmain.c initscript.sh make-docs.sh make-include.sh make-lib.sh make-src.sh make-tests.sh makefile.sh os400sys.c os400sys.hWindows
tmpl
.gitattributes README.txt curl-all.sln curl.sln curl.vcxproj curl.vcxproj.filters libcurl.sln libcurl.vcxproj libcurl.vcxproj.filtersvms
Makefile.am backup_gnv_curl_src.com build_curl-config_script.com build_gnv_curl.com build_gnv_curl_pcsi_desc.com build_gnv_curl_pcsi_text.com build_gnv_curl_release_notes.com build_libcurl_pc.com build_vms.com clean_gnv_curl.com compare_curl_source.com config_h.com curl_crtl_init.c curl_gnv_build_steps.txt curl_release_note_start.txt curl_startup.com curlmsg.h curlmsg.msg curlmsg.sdl curlmsg_vms.h generate_config_vms_h_curl.com generate_vax_transfer.com gnv_conftest.c_first gnv_curl_configure.sh gnv_libcurl_symbols.opt gnv_link_curl.com macro32_exactcase.patch make_gnv_curl_install.sh make_pcsi_curl_kit_name.com pcsi_gnv_curl_file_list.txt pcsi_product_gnv_curl.com readme report_openssl_version.c setup_gnv_curl_build.com stage_curl_install.com vms_eco_level.hscripts
.checksrc CMakeLists.txt Makefile.am badwords badwords-all badwords.txt cd2cd cd2nroff cdall checksrc-all.pl checksrc.pl cmakelint.sh completion.pl contributors.sh contrithanks.sh coverage.sh delta dmaketgz extract-unit-protos firefox-db2pem.sh installcheck.sh maketgz managen mdlinkcheck mk-ca-bundle.pl mk-unity.pl nroff2cd perlcheck.sh pythonlint.sh randdisable release-notes.pl release-tools.sh schemetable.c singleuse.pl spacecheck.pl top-complexity top-length verify-release wcurlsrc
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc config2setopts.c config2setopts.h curl.rc curlinfo.c mk-file-embed.pl mkhelp.pl slist_wc.c slist_wc.h terminal.c terminal.h tool_cb_dbg.c tool_cb_dbg.h tool_cb_hdr.c tool_cb_hdr.h tool_cb_prg.c tool_cb_prg.h tool_cb_rea.c tool_cb_rea.h tool_cb_see.c tool_cb_see.h tool_cb_soc.c tool_cb_soc.h tool_cb_wrt.c tool_cb_wrt.h tool_cfgable.c tool_cfgable.h tool_dirhie.c tool_dirhie.h tool_doswin.c tool_doswin.h tool_easysrc.c tool_easysrc.h tool_filetime.c tool_filetime.h tool_findfile.c tool_findfile.h tool_formparse.c tool_formparse.h tool_getparam.c tool_getparam.h tool_getpass.c tool_getpass.h tool_help.c tool_help.h tool_helpers.c tool_helpers.h tool_hugehelp.h tool_ipfs.c tool_ipfs.h tool_libinfo.c tool_libinfo.h tool_listhelp.c tool_main.c tool_main.h tool_msgs.c tool_msgs.h tool_operate.c tool_operate.h tool_operhlp.c tool_operhlp.h tool_paramhlp.c tool_paramhlp.h tool_parsecfg.c tool_parsecfg.h tool_progress.c tool_progress.h tool_sdecls.h tool_setopt.c tool_setopt.h tool_setup.h tool_ssls.c tool_ssls.h tool_stderr.c tool_stderr.h tool_urlglob.c tool_urlglob.h tool_util.c tool_util.h tool_version.h tool_vms.c tool_vms.h tool_writeout.c tool_writeout.h tool_writeout_json.c tool_writeout_json.h tool_xattr.c tool_xattr.h var.c var.htests
certs
.gitignore CMakeLists.txt Makefile.am Makefile.inc genserv.pl srp-verifier-conf srp-verifier-db test-ca.cnf test-ca.prm test-client-cert.prm test-client-eku-only.prm test-localhost-san-first.prm test-localhost-san-last.prm test-localhost.nn.prm test-localhost.prm test-localhost0h.prmdata
.gitignore DISABLED Makefile.am data-xml1 data1400.c data1401.c data1402.c data1403.c data1404.c data1405.c data1406.c data1407.c data1420.c data1461.txt data1463.txt data1465.c data1481.c data1705-1.md data1705-2.md data1705-3.md data1705-4.md data1705-stdout.1 data1706-1.md data1706-2.md data1706-3.md data1706-4.md data1706-stdout.txt data320.html test1 test10 test100 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 test1008 test1009 test101 test1010 test1011 test1012 test1013 test1014 test1015 test1016 test1017 test1018 test1019 test102 test1020 test1021 test1022 test1023 test1024 test1025 test1026 test1027 test1028 test1029 test103 test1030 test1031 test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 test104 test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 test1048 test1049 test105 test1050 test1051 test1052 test1053 test1054 test1055 test1056 test1057 test1058 test1059 test106 test1060 test1061 test1062 test1063 test1064 test1065 test1066 test1067 test1068 test1069 test107 test1070 test1071 test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 test108 test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 test1088 test1089 test109 test1090 test1091 test1092 test1093 test1094 test1095 test1096 test1097 test1098 test1099 test11 test110 test1100 test1101 test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 test111 test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 test112 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 test1128 test1129 test113 test1130 test1131 test1132 test1133 test1134 test1135 test1136 test1137 test1138 test1139 test114 test1140 test1141 test1142 test1143 test1144 test1145 test1146 test1147 test1148 test1149 test115 test1150 test1151 test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 test116 test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 test1168 test1169 test117 test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 test1178 test1179 test118 test1180 test1181 test1182 test1183 test1184 test1185 test1186 test1187 test1188 test1189 test119 test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 test1198 test1199 test12 test120 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 test1208 test1209 test121 test1210 test1211 test1212 test1213 test1214 test1215 test1216 test1217 test1218 test1219 test122 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 test1228 test1229 test123 test1230 test1231 test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 test124 test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 test1248 test1249 test125 test1250 test1251 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 test126 test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 test1268 test1269 test127 test1270 test1271 test1272 test1273 test1274 test1275 test1276 test1277 test1278 test1279 test128 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 test1288 test1289 test129 test1290 test1291 test1292 test1293 test1294 test1295 test1296 test1297 test1298 test1299 test13 test130 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 test1308 test1309 test131 test1310 test1311 test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 test132 test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 test1328 test1329 test133 test1330 test1331 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 test134 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 test1348 test1349 test135 test1350 test1351 test1352 test1353 test1354 test1355 test1356 test1357 test1358 test1359 test136 test1360 test1361 test1362 test1363 test1364 test1365 test1366 test1367 test1368 test1369 test137 test1370 test1371 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 test138 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 test1388 test1389 test139 test1390 test1391 test1392 test1393 test1394 test1395 test1396 test1397 test1398 test1399 test14 test140 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 test1408 test1409 test141 test1410 test1411 test1412 test1413 test1414 test1415 test1416 test1417 test1418 test1419 test142 test1420 test1421 test1422 test1423 test1424 test1425 test1426 test1427 test1428 test1429 test143 test1430 test1431 test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 test144 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 test1448 test1449 test145 test1450 test1451 test1452 test1453 test1454 test1455 test1456 test1457 test1458 test1459 test146 test1460 test1461 test1462 test1463 test1464 test1465 test1466 test1467 test1468 test1469 test147 test1470 test1471 test1472 test1473 test1474 test1475 test1476 test1477 test1478 test1479 test148 test1480 test1481 test1482 test1483 test1484 test1485 test1486 test1487 test1488 test1489 test149 test1490 test1491 test1492 test1493 test1494 test1495 test1496 test1497 test1498 test1499 test15 test150 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 test1508 test1509 test151 test1510 test1511 test1512 test1513 test1514 test1515 test1516 test1517 test1518 test1519 test152 test1520 test1521 test1522 test1523 test1524 test1525 test1526 test1527 test1528 test1529 test153 test1530 test1531 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 test154 test1540 test1541 test1542 test1543 test1544 test1545 test1546 test1547 test1548 test1549 test155 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 test1558 test1559 test156 test1560 test1561 test1562 test1563 test1564 test1565 test1566 test1567 test1568 test1569 test157 test1570 test1571 test1572 test1573 test1574 test1575 test1576 test1577 test1578 test1579 test158 test1580 test1581 test1582 test1583 test1584 test1585 test1586 test1587 test1588 test1589 test159 test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 test1598 test1599 test16 test160 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 test1608 test1609 test161 test1610 test1611 test1612 test1613 test1614 test1615 test1616 test1617 test1618 test1619 test162 test1620 test1621 test1622 test1623 test1624 test1625 test1626 test1627 test1628 test1629 test163 test1630 test1631 test1632 test1633 test1634 test1635 test1636 test1637 test1638 test1639 test164 test1640 test1641 test1642 test1643 test1644 test1645 test165 test1650 test1651 test1652 test1653 test1654 test1655 test1656 test1657 test1658 test1659 test166 test1660 test1661 test1662 test1663 test1664 test1665 test1666 test1667 test1668 test1669 test167 test1670 test1671 test1672 test1673 test1674 test1675 test1676 test168 test1680 test1681 test1682 test1683 test1684 test1685 test169 test17 test170 test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 test1708 test1709 test171 test1710 test1711 test1712 test1713 test1714 test1715 test172 test1720 test1721 test173 test174 test175 test176 test177 test178 test179 test18 test180 test1800 test1801 test1802 test181 test182 test183 test184 test1847 test1848 test1849 test185 test1850 test1851 test186 test187 test188 test189 test19 test190 test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 test1908 test1909 test191 test1910 test1911 test1912 test1913 test1914 test1915 test1916 test1917 test1918 test1919 test192 test1920 test1921 test193 test1933 test1934 test1935 test1936 test1937 test1938 test1939 test194 test1940 test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 test195 test1955 test1956 test1957 test1958 test1959 test196 test1960 test1964 test1965 test1966 test197 test1970 test1971 test1972 test1973 test1974 test1975 test1976 test1977 test1978 test1979 test198 test1980 test1981 test1982 test1983 test1984 test199 test2 test20 test200 test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 test2008 test2009 test201 test2010 test2011 test2012 test2013 test2014 test202 test2023 test2024 test2025 test2026 test2027 test2028 test2029 test203 test2030 test2031 test2032 test2033 test2034 test2035 test2037 test2038 test2039 test204 test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 test2048 test2049 test205 test2050 test2051 test2052 test2053 test2054 test2055 test2056 test2057 test2058 test2059 test206 test2060 test2061 test2062 test2063 test2064 test2065 test2066 test2067 test2068 test2069 test207 test2070 test2071 test2072 test2073 test2074 test2075 test2076 test2077 test2078 test2079 test208 test2080 test2081 test2082 test2083 test2084 test2085 test2086 test2087 test2088 test2089 test209 test2090 test2091 test2092 test21 test210 test2100 test2101 test2102 test2103 test2104 test211 test212 test213 test214 test215 test216 test217 test218 test219 test22 test220 test2200 test2201 test2202 test2203 test2204 test2205 test2206 test2207 test221 test222 test223 test224 test225 test226 test227 test228 test229 test23 test230 test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 test2309 test231 test232 test233 test234 test235 test236 test237 test238 test239 test24 test240 test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 test2408 test2409 test241 test2410 test2411 test242 test243 test244 test245 test246 test247 test248 test249 test25 test250 test2500 test2501 test2502 test2503 test2504 test2505 test2506 test251 test252 test253 test254 test255 test256 test257 test258 test259 test26 test260 test2600 test2601 test2602 test2603 test2604 test2605 test261 test262 test263 test264 test265 test266 test267 test268 test269 test27 test270 test2700 test2701 test2702 test2703 test2704 test2705 test2706 test2707 test2708 test2709 test271 test2710 test2711 test2712 test2713 test2714 test2715 test2716 test2717 test2718 test2719 test272 test2720 test2721 test2722 test2723 test273 test274 test275 test276 test277 test278 test279 test28 test280 test281 test282 test283 test284 test285 test286 test287 test288 test289 test29 test290 test291 test292 test293 test294 test295 test296 test297 test298 test299 test3 test30 test300 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 test3008 test3009 test301 test3010 test3011 test3012 test3013 test3014 test3015 test3016 test3017 test3018 test3019 test302 test3020 test3021 test3022 test3023 test3024 test3025 test3026 test3027 test3028 test3029 test303 test3030 test3031 test3032 test3033 test3034 test3035 test3036 test304 test305 test306 test307 test308 test309 test31 test310 test3100 test3101 test3102 test3103 test3104 test3105 test3106 test311 test312 test313 test314 test315 test316 test317 test318 test319 test32 test320 test3200 test3201 test3202 test3203 test3204 test3205 test3206 test3207 test3208 test3209 test321 test3210 test3211 test3212 test3213 test3214 test3215 test3216 test3217 test3218 test3219 test322 test3220 test323 test324 test325 test326 test327 test328 test329 test33 test330 test3300 test3301 test3302 test331 test332 test333 test334 test335 test336 test337 test338 test339 test34 test340 test341 test342 test343 test344 test345 test346 test347 test348 test349 test35 test350 test351 test352 test353 test354 test355 test356 test357 test358 test359 test36 test360 test361 test362 test363 test364 test365 test366 test367 test368 test369 test37 test370 test371 test372 test373 test374 test375 test376 test378 test379 test38 test380 test381 test383 test384 test385 test386 test387 test388 test389 test39 test390 test391 test392 test393 test394 test395 test396 test397 test398 test399 test4 test40 test400 test4000 test4001 test401 test402 test403 test404 test405 test406 test407 test408 test409 test41 test410 test411 test412 test413 test414 test415 test416 test417 test418 test419 test42 test420 test421 test422 test423 test424 test425 test426 test427 test428 test429 test43 test430 test431 test432 test433 test434 test435 test436 test437 test438 test439 test44 test440 test441 test442 test443 test444 test445 test446 test447 test448 test449 test45 test450 test451 test452 test453 test454 test455 test456 test457 test458 test459 test46 test460 test461 test462 test463 test467 test468 test469 test47 test470 test471 test472 test473 test474 test475 test476 test477 test478 test479 test48 test480 test481 test482 test483 test484 test485 test486 test487 test488 test489 test49 test490 test491 test492 test493 test494 test495 test496 test497 test498 test499 test5 test50 test500 test501 test502 test503 test504 test505 test506 test507 test508 test509 test51 test510 test511 test512 test513 test514 test515 test516 test517 test518 test519 test52 test520 test521 test522 test523 test524 test525 test526 test527 test528 test529 test53 test530 test531 test532 test533 test534 test535 test536 test537 test538 test539 test54 test540 test541 test542 test543 test544 test545 test546 test547 test548 test549 test55 test550 test551 test552 test553 test554 test555 test556 test557 test558 test559 test56 test560 test561 test562 test563 test564 test565 test566 test567 test568 test569 test57 test570 test571 test572 test573 test574 test575 test576 test577 test578 test579 test58 test580 test581 test582 test583 test584 test585 test586 test587 test588 test589 test59 test590 test591 test592 test593 test594 test595 test596 test597 test598 test599 test6 test60 test600 test601 test602 test603 test604 test605 test606 test607 test608 test609 test61 test610 test611 test612 test613 test614 test615 test616 test617 test618 test619 test62 test620 test621 test622 test623 test624 test625 test626 test627 test628 test629 test63 test630 test631 test632 test633 test634 test635 test636 test637 test638 test639 test64 test640 test641 test642 test643 test644 test645 test646 test647 test648 test649 test65 test650 test651 test652 test653 test654 test655 test656 test658 test659 test66 test660 test661 test662 test663 test664 test665 test666 test667 test668 test669 test67 test670 test671 test672 test673 test674 test675 test676 test677 test678 test679 test68 test680 test681 test682 test683 test684 test685 test686 test687 test688 test689 test69 test690 test691 test692 test693 test694 test695 test696 test697 test698 test699 test7 test70 test700 test701 test702 test703 test704 test705 test706 test707 test708 test709 test71 test710 test711 test712 test713 test714 test715 test716 test717 test718 test719 test72 test720 test721 test722 test723 test724 test725 test726 test727 test728 test729 test73 test730 test731 test732 test733 test734 test735 test736 test737 test738 test739 test74 test740 test741 test742 test743 test744 test745 test746 test747 test748 test749 test75 test750 test751 test752 test753 test754 test755 test756 test757 test758 test759 test76 test760 test761 test762 test763 test764 test765 test766 test767 test768 test769 test77 test770 test771 test772 test773 test774 test775 test776 test777 test778 test779 test78 test780 test781 test782 test783 test784 test785 test786 test787 test788 test789 test79 test790 test791 test792 test793 test794 test795 test796 test797 test798 test799 test8 test80 test800 test801 test802 test803 test804 test805 test806 test807 test808 test809 test81 test810 test811 test812 test813 test814 test815 test816 test817 test818 test819 test82 test820 test821 test822 test823 test824 test825 test826 test827 test828 test829 test83 test830 test831 test832 test833 test834 test835 test836 test837 test838 test839 test84 test840 test841 test842 test843 test844 test845 test846 test847 test848 test849 test85 test850 test851 test852 test853 test854 test855 test856 test857 test858 test859 test86 test860 test861 test862 test863 test864 test865 test866 test867 test868 test869 test87 test870 test871 test872 test873 test874 test875 test876 test877 test878 test879 test88 test880 test881 test882 test883 test884 test885 test886 test887 test888 test889 test89 test890 test891 test892 test893 test894 test895 test896 test897 test898 test899 test9 test90 test900 test901 test902 test903 test904 test905 test906 test907 test908 test909 test91 test910 test911 test912 test913 test914 test915 test916 test917 test918 test919 test92 test920 test921 test922 test923 test924 test925 test926 test927 test928 test929 test93 test930 test931 test932 test933 test934 test935 test936 test937 test938 test939 test94 test940 test941 test942 test943 test944 test945 test946 test947 test948 test949 test95 test950 test951 test952 test953 test954 test955 test956 test957 test958 test959 test96 test960 test961 test962 test963 test964 test965 test966 test967 test968 test969 test97 test970 test971 test972 test973 test974 test975 test976 test977 test978 test979 test98 test980 test981 test982 test983 test984 test985 test986 test987 test988 test989 test99 test990 test991 test992 test993 test994 test995 test996 test997 test998 test999http
testenv
__init__.py caddy.py certs.py client.py curl.py dante.py dnsd.py env.py httpd.py nghttpx.py ports.py sshd.py vsftpd.py ws_echo_server.pylibtest
.gitignore CMakeLists.txt Makefile.am Makefile.inc cli_ftp_upload.c cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pingpong.c first.c first.h lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1587.c lib1588.c lib1589.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1920.c lib1921.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1965.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2504.c lib2505.c lib2506.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib757.c lib758.c lib766.c memptr.c mk-lib1521.pl test1013.pl test1022.pl test307.pl test610.pl test613.pl testtrace.c testtrace.h testutil.c testutil.h unitcheck.hserver
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc dnsd.c first.c first.h getpart.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c util.ctunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.cunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1625.c unit1626.c unit1627.c unit1636.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1666.c unit1667.c unit1668.c unit1669.c unit1674.c unit1675.c unit1676.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit2605.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c unit3216.c unit3219.c unit3300.c unit3301.c unit3302.cexamples
.env config.ini crypto_test.lua env_test.lua fs_example.lua http_server.lua https_test.lua ini_example.lua json.lua log.lua path_fs_example.lua process_example.lua request_download.lua request_test.lua run_all.lua sqlite_example.lua sqlite_http_template.lua stash_test.lua template_test.lua timer.lua websocket.luainiparser
example
iniexample.c iniwrite.c parse.c twisted-errors.ini twisted-genhuge.py twisted-ofkey.ini twisted-ofval.ini twisted.initest
CMakeLists.txt test_dictionary.c test_iniparser.c unity-config.yml unity_config.hjinjac
libjinjac
src
CMakeLists.txt ast.c ast.h block_statement.c block_statement.h buffer.c buffer.h buildin.c buildin.h common.h convert.c convert.h flex_decl.h jfunction.c jfunction.h jinja_expression.l jinja_expression.y jinjac_parse.c jinjac_parse.h jinjac_stream.c jinjac_stream.h jlist.c jlist.h jobject.c jobject.h parameter.c parameter.h str_obj.c str_obj.h trace.c trace.htest
.gitignore CMakeLists.txt autotest.rb test_01.expected test_01.jinja test_01b.expected test_01b.jinja test_01c.expected test_01c.jinja test_01d.expected test_01d.jinja test_02.expected test_02.jinja test_03.expected test_03.jinja test_04.expected test_04.jinja test_05.expected test_05.jinja test_06.expected test_06.jinja test_07.expected test_07.jinja test_08.expected test_08.jinja test_08b.expected test_08b.jinja test_09.expected test_09.jinja test_10.expected test_10.jinja test_11.expected test_11.jinja test_12.expected test_12.jinja test_13.expected test_13.jinja test_14.expected test_14.jinja test_15.expected test_15.jinja test_16.expected test_16.jinja test_17.expected test_17.jinja test_18.expected test_18.jinja test_18b.expected test_18b.jinja test_18c.expected test_18c.jinja test_19.expected test_19.jinja test_19b.expected test_19b.jinja test_19c.expected test_19c.jinja test_19d.expected test_19d.jinja test_19e.expected test_19e.jinja test_19f.expected test_19f.jinja test_20.expected test_20.jinja test_21.expected test_21.jinja test_22.expected test_22.jinja test_22a.expected test_22a.jinja test_22b.expected test_22b.jinja test_23.expected test_23.jinja test_24.expected test_24.jinjalibev
Changes LICENSE Makefile Makefile.am Makefile.in README Symbols.ev Symbols.event aclocal.m4 autogen.sh compile config.guess config.h config.h.in config.status config.sub configure configure.ac depcomp ev++.h ev.3 ev.c ev.h ev.pod ev_epoll.c ev_kqueue.c ev_poll.c ev_port.c ev_select.c ev_vars.h ev_win32.c ev_wrap.h event.c event.h install-sh libev.m4 libtool ltmain.sh missing mkinstalldirs stamp-h1luajit
doc
bluequad-print.css bluequad.css contact.html ext_buffer.html ext_c_api.html ext_ffi.html ext_ffi_api.html ext_ffi_semantics.html ext_ffi_tutorial.html ext_jit.html ext_profiler.html extensions.html install.html luajit.html running.htmldynasm
dasm_arm.h dasm_arm.lua dasm_arm64.h dasm_arm64.lua dasm_mips.h dasm_mips.lua dasm_mips64.lua dasm_ppc.h dasm_ppc.lua dasm_proto.h dasm_x64.lua dasm_x86.h dasm_x86.lua dynasm.luasrc
host
.gitignore README buildvm.c buildvm.h buildvm_asm.c buildvm_fold.c buildvm_lib.c buildvm_libbc.h buildvm_peobj.c genlibbc.lua genminilua.lua genversion.lua minilua.cjit
.gitignore bc.lua bcsave.lua dis_arm.lua dis_arm64.lua dis_arm64be.lua dis_mips.lua dis_mips64.lua dis_mips64el.lua dis_mips64r6.lua dis_mips64r6el.lua dis_mipsel.lua dis_ppc.lua dis_x64.lua dis_x86.lua dump.lua p.lua v.lua zone.luawolfssl
.github
workflows
ada.yml arduino.yml async-examples.yml async.yml atecc608-sim.yml bind.yml cmake-autoconf.yml cmake.yml codespell.yml coverity-scan-fixes.yml cryptocb-only.yml curl.yml cyrus-sasl.yml disable-pk-algs.yml docker-Espressif.yml docker-OpenWrt.yml emnet-nonblock.yml fil-c.yml freertos-mem-track.yml gencertbuf.yml grpc.yml haproxy.yml hostap-vm.yml intelasm-c-fallback.yml ipmitool.yml jwt-cpp.yml krb5.yml libspdm.yml libssh2.yml libvncserver.yml linuxkm.yml macos-apple-native-cert-validation.yml mbedtls.sh mbedtls.yml membrowse-comment.yml membrowse-onboard.yml membrowse-report.yml memcached.sh memcached.yml mono.yml mosquitto.yml msmtp.yml msys2.yml multi-arch.yml multi-compiler.yml net-snmp.yml nginx.yml no-malloc.yml no-tls.yml nss.sh nss.yml ntp.yml ocsp.yml openldap.yml openssh.yml openssl-ech.yml opensslcoexist.yml openvpn.yml os-check.yml packaging.yml pam-ipmi.yml pq-all.yml pr-commit-check.yml psk.yml puf.yml python.yml rng-tools.yml rust-wrapper.yml se050-sim.yml smallStackSize.yml socat.yml softhsm.yml sssd.yml stm32-sim.yml stsafe-a120-sim.yml stunnel.yml symbol-prefixes.yml threadx.yml tls-anvil.yml trackmemory.yml watcomc.yml win-csharp-test.yml wolfCrypt-Wconversion.yml wolfboot-integration.yml wolfsm.yml xcode.yml zephyr-4.x.yml zephyr.ymlIDE
ARDUINO
Arduino_README_prepend.md README.md include.am keywords.txt library.properties.template wolfssl-arduino.cpp wolfssl-arduino.sh wolfssl.hECLIPSE
Espressif
ESP-IDF
examples
template
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266wolfssl_benchmark
VisualGDB
wolfssl_benchmark_IDF_v4.4_ESP32.sln wolfssl_benchmark_IDF_v4.4_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32.sln wolfssl_benchmark_IDF_v5_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32C3.sln wolfssl_benchmark_IDF_v5_ESP32C3.vgdbproj wolfssl_benchmark_IDF_v5_ESP32S3.sln wolfssl_benchmark_IDF_v5_ESP32S3.vgdbprojwolfssl_client
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_client_ESP8266.vgdbprojwolfssl_server
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_server_ESP8266.vgdbprojwolfssl_test
VisualGDB
wolfssl_test-IDF_v5_ESP32.sln wolfssl_test-IDF_v5_ESP32.vgdbproj wolfssl_test-IDF_v5_ESP32C3.sln wolfssl_test-IDF_v5_ESP32C3.vgdbproj wolfssl_test-IDF_v5_ESP32C6.sln wolfssl_test-IDF_v5_ESP32C6.vgdbproj wolfssl_test_IDF_v5_ESP32S3.sln wolfssl_test_IDF_v5_ESP32S3.vgdbprojGCC-ARM
Makefile Makefile.bench Makefile.client Makefile.common Makefile.server Makefile.static Makefile.test README.md include.am linker.ld linker_fips.ldIAR-EWARM
embOS
SAMV71_XULT
embOS_SAMV71_XULT_user_settings
user_settings.h user_settings_simple_example.h user_settings_verbose_example.hembOS_wolfcrypt_benchmark_SAMV71_XULT
README_wolfcrypt_benchmark wolfcrypt_benchmark.ewd wolfcrypt_benchmark.ewpINTIME-RTOS
Makefile README.md include.am libwolfssl.c libwolfssl.vcxproj user_settings.h wolfExamples.c wolfExamples.h wolfExamples.sln wolfExamples.vcxproj wolfssl-lib.sln wolfssl-lib.vcxprojMQX
Makefile README-jp.md README.md client-tls.c include.am server-tls.c user_config.h user_settings.hMSVS-2019-AZSPHERE
wolfssl_new_azsphere
.gitignore CMakeLists.txt CMakeSettings.json app_manifest.json applibs_versions.h launch.vs.json main.cNETOS
Makefile.wolfcrypt.inc README.md include.am user_settings.h user_settings.h-cert2425 user_settings.h-cert3389 wolfssl_netos_custom.cPlatformIO
examples
wolfssl_benchmark
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_benchmark.code-workspaceROWLEY-CROSSWORKS-ARM
Kinetis_FlashPlacement.xml README.md arm_startup.c benchmark_main.c hw.h include.am kinetis_hw.c retarget.c test_main.c user_settings.h wolfssl.hzp wolfssl_ltc.hzpRenesas
e2studio
RA6M3
README.md README_APRA6M_en.md README_APRA6M_jp.md include.amRX72N
EnvisionKit
Simple
README_EN.md README_JP.mdwolfssl_demo
key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h wolfssl_tsip_unit_test.cSTM32Cube
README.md STM32_Benchmarks.md default_conf.ftl include.am main.c wolfssl_example.c wolfssl_example.hWIN
README.txt include.am test.vcxproj user_settings.h user_settings_dtls.h wolfssl-fips.sln wolfssl-fips.vcxprojWIN-SRTP-KDF-140-3
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojWIN10
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojXCODE
Benchmark
include.amXilinxSDK
README.md bench.sh combine.sh eclipse_formatter_profile.xml graph.sh include.am user_settings.h wolfssl_example.capple-universal
wolfssl-multiplatform
iotsafe
Makefile README.md ca-cert.c devices.c devices.h include.am main.c memory-tls.c startup.c target.ld user_settings.hmynewt
README.md apps.wolfcrypttest.pkg.yml crypto.wolfssl.pkg.yml crypto.wolfssl.syscfg.yml include.am setup.shcerts
1024
ca-cert.der ca-cert.pem ca-key.der ca-key.pem client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der dh1024.der dh1024.pem dsa-pub-1024.pem dsa1024.der dsa1024.pem include.am rsa1024.der server-cert.der server-cert.pem server-key.der server-key.pemcrl
extra-crls
ca-int-cert-revoked.pem claim-root.pem crl_critical_entry.pem crlnum_57oct.pem crlnum_64oct.pem general-server-crl.pem large_crlnum.pem large_crlnum2.pemdilithium
bench_dilithium_level2_key.der bench_dilithium_level3_key.der bench_dilithium_level5_key.der include.amecc
bp256r1-key.der bp256r1-key.pem ca-secp256k1-cert.pem ca-secp256k1-key.pem client-bp256r1-cert.der client-bp256r1-cert.pem client-secp256k1-cert.der client-secp256k1-cert.pem genecc.sh include.am secp256k1-key.der secp256k1-key.pem secp256k1-param.pem secp256k1-privkey.der secp256k1-privkey.pem server-bp256r1-cert.der server-bp256r1-cert.pem server-secp256k1-cert.der server-secp256k1-cert.pem server2-secp256k1-cert.der server2-secp256k1-cert.pem wolfssl.cnf wolfssl_384.cnfed25519
ca-ed25519-key.der ca-ed25519-key.pem ca-ed25519-priv.der ca-ed25519-priv.pem ca-ed25519.der ca-ed25519.pem client-ed25519-key.der client-ed25519-key.pem client-ed25519-priv.der client-ed25519-priv.pem client-ed25519.der client-ed25519.pem eddsa-ed25519.der eddsa-ed25519.pem gen-ed25519-certs.sh gen-ed25519-keys.sh gen-ed25519.sh include.am root-ed25519-key.der root-ed25519-key.pem root-ed25519-priv.der root-ed25519-priv.pem root-ed25519.der root-ed25519.pem server-ed25519-cert.pem server-ed25519-key.der server-ed25519-key.pem server-ed25519-priv.der server-ed25519-priv.pem server-ed25519.der server-ed25519.pemed448
ca-ed448-key.der ca-ed448-key.pem ca-ed448-priv.der ca-ed448-priv.pem ca-ed448.der ca-ed448.pem client-ed448-key.der client-ed448-key.pem client-ed448-priv.der client-ed448-priv.pem client-ed448.der client-ed448.pem gen-ed448-certs.sh gen-ed448-keys.sh include.am root-ed448-key.der root-ed448-key.pem root-ed448-priv.der root-ed448-priv.pem root-ed448.der root-ed448.pem server-ed448-cert.pem server-ed448-key.der server-ed448-key.pem server-ed448-priv.der server-ed448-priv.pem server-ed448.der server-ed448.pemexternal
DigiCertGlobalRootCA.pem README.txt ca-digicert-ev.pem ca-globalsign-root.pem ca-google-root.pem ca_collection.pem include.amintermediate
ca_false_intermediate
gentestcert.sh int_ca.key server.key test_ca.key test_ca.pem test_int_not_cacert.pem test_sign_bynoca_srv.pem wolfssl_base.conf wolfssl_srv.conflms
bc_hss_L2_H5_W8_root.der bc_hss_L3_H5_W4_root.der bc_lms_chain_ca.der bc_lms_chain_leaf.der bc_lms_native_bc_root.der bc_lms_sha256_h10_w8_root.der bc_lms_sha256_h5_w4_root.der include.ammldsa
README.txt include.am mldsa44-cert.der mldsa44-cert.pem mldsa44-key.pem mldsa44_bare-priv.der mldsa44_bare-seed.der mldsa44_oqskeypair.der mldsa44_priv-only.der mldsa44_pub-spki.der mldsa44_seed-only.der mldsa44_seed-priv.der mldsa65-cert.der mldsa65-cert.pem mldsa65-key.pem mldsa65_bare-priv.der mldsa65_bare-seed.der mldsa65_oqskeypair.der mldsa65_priv-only.der mldsa65_pub-spki.der mldsa65_seed-only.der mldsa65_seed-priv.der mldsa87-cert.der mldsa87-cert.pem mldsa87-key.pem mldsa87_bare-priv.der mldsa87_bare-seed.der mldsa87_oqskeypair.der mldsa87_priv-only.der mldsa87_pub-spki.der mldsa87_seed-only.der mldsa87_seed-priv.derocsp
imposter-root-ca-cert.der imposter-root-ca-cert.pem imposter-root-ca-key.der imposter-root-ca-key.pem include.am index-ca-and-intermediate-cas.txt index-ca-and-intermediate-cas.txt.attr index-intermediate1-ca-issued-certs.txt index-intermediate1-ca-issued-certs.txt.attr index-intermediate2-ca-issued-certs.txt index-intermediate2-ca-issued-certs.txt.attr index-intermediate3-ca-issued-certs.txt index-intermediate3-ca-issued-certs.txt.attr intermediate1-ca-cert.der intermediate1-ca-cert.pem intermediate1-ca-key.der intermediate1-ca-key.pem intermediate2-ca-cert.der intermediate2-ca-cert.pem intermediate2-ca-key.der intermediate2-ca-key.pem intermediate3-ca-cert.der intermediate3-ca-cert.pem intermediate3-ca-key.der intermediate3-ca-key.pem ocsp-responder-cert.der ocsp-responder-cert.pem ocsp-responder-key.der ocsp-responder-key.pem openssl.cnf renewcerts-for-test.sh renewcerts.sh root-ca-cert.der root-ca-cert.pem root-ca-crl.pem root-ca-key.der root-ca-key.pem server1-cert.der server1-cert.pem server1-chain-noroot.pem server1-key.der server1-key.pem server2-cert.der server2-cert.pem server2-key.der server2-key.pem server3-cert.der server3-cert.pem server3-key.der server3-key.pem server4-cert.der server4-cert.pem server4-key.der server4-key.pem server5-cert.der server5-cert.pem server5-key.der server5-key.pem test-leaf-response.der test-multi-response.der test-response-nointern.der test-response-rsapss.der test-response.derp521
ca-p521-key.der ca-p521-key.pem ca-p521-priv.der ca-p521-priv.pem ca-p521.der ca-p521.pem client-p521-key.der client-p521-key.pem client-p521-priv.der client-p521-priv.pem client-p521.der client-p521.pem gen-p521-certs.sh gen-p521-keys.sh include.am root-p521-key.der root-p521-key.pem root-p521-priv.der root-p521-priv.pem root-p521.der root-p521.pem server-p521-cert.pem server-p521-key.der server-p521-key.pem server-p521-priv.der server-p521-priv.pem server-p521.der server-p521.pemrpk
client-cert-rpk.der client-ecc-cert-rpk.der include.am server-cert-rpk.der server-ecc-cert-rpk.derrsapss
ca-3072-rsapss-key.der ca-3072-rsapss-key.pem ca-3072-rsapss-priv.der ca-3072-rsapss-priv.pem ca-3072-rsapss.der ca-3072-rsapss.pem ca-rsapss-key.der ca-rsapss-key.pem ca-rsapss-priv.der ca-rsapss-priv.pem ca-rsapss.der ca-rsapss.pem client-3072-rsapss-key.der client-3072-rsapss-key.pem client-3072-rsapss-priv.der client-3072-rsapss-priv.pem client-3072-rsapss.der client-3072-rsapss.pem client-rsapss-key.der client-rsapss-key.pem client-rsapss-priv.der client-rsapss-priv.pem client-rsapss.der client-rsapss.pem gen-rsapss-keys.sh include.am renew-rsapss-certs.sh root-3072-rsapss-key.der root-3072-rsapss-key.pem root-3072-rsapss-priv.der root-3072-rsapss-priv.pem root-3072-rsapss.der root-3072-rsapss.pem root-rsapss-key.der root-rsapss-key.pem root-rsapss-priv.der root-rsapss-priv.pem root-rsapss.der root-rsapss.pem server-3072-rsapss-cert.pem server-3072-rsapss-key.der server-3072-rsapss-key.pem server-3072-rsapss-priv.der server-3072-rsapss-priv.pem server-3072-rsapss.der server-3072-rsapss.pem server-mix-rsapss-cert.pem server-rsapss-cert.pem server-rsapss-key.der server-rsapss-key.pem server-rsapss-priv.der server-rsapss-priv.pem server-rsapss.der server-rsapss.pemslhdsa
bench_slhdsa_sha2_128f_key.der bench_slhdsa_sha2_128s_key.der bench_slhdsa_sha2_192f_key.der bench_slhdsa_sha2_192s_key.der bench_slhdsa_sha2_256f_key.der bench_slhdsa_sha2_256s_key.der bench_slhdsa_shake128f_key.der bench_slhdsa_shake128s_key.der bench_slhdsa_shake192f_key.der bench_slhdsa_shake192s_key.der bench_slhdsa_shake256f_key.der bench_slhdsa_shake256s_key.der client-mldsa44-priv.pem client-mldsa44-sha2.der client-mldsa44-sha2.pem client-mldsa44-shake.der client-mldsa44-shake.pem gen-slhdsa-mldsa-certs.sh include.am root-slhdsa-sha2-128s-priv.der root-slhdsa-sha2-128s-priv.pem root-slhdsa-sha2-128s.der root-slhdsa-sha2-128s.pem root-slhdsa-shake-128s-priv.der root-slhdsa-shake-128s-priv.pem root-slhdsa-shake-128s.der root-slhdsa-shake-128s.pem server-mldsa44-priv.pem server-mldsa44-sha2.der server-mldsa44-sha2.pem server-mldsa44-shake.der server-mldsa44-shake.pemsm2
ca-sm2-key.der ca-sm2-key.pem ca-sm2-priv.der ca-sm2-priv.pem ca-sm2.der ca-sm2.pem client-sm2-key.der client-sm2-key.pem client-sm2-priv.der client-sm2-priv.pem client-sm2.der client-sm2.pem fix_sm2_spki.py gen-sm2-certs.sh gen-sm2-keys.sh include.am root-sm2-key.der root-sm2-key.pem root-sm2-priv.der root-sm2-priv.pem root-sm2.der root-sm2.pem self-sm2-cert.pem self-sm2-key.pem self-sm2-priv.pem server-sm2-cert.der server-sm2-cert.pem server-sm2-key.der server-sm2-key.pem server-sm2-priv.der server-sm2-priv.pem server-sm2.der server-sm2.pemstatickeys
dh-ffdhe2048-params.pem dh-ffdhe2048-pub.der dh-ffdhe2048-pub.pem dh-ffdhe2048.der dh-ffdhe2048.pem ecc-secp256r1.der ecc-secp256r1.pem gen-static.sh include.am x25519-pub.der x25519-pub.pem x25519.der x25519.pemtest
catalog.txt cert-bad-neg-int.der cert-bad-oid.der cert-bad-utf8.der cert-ext-ia.cfg cert-ext-ia.der cert-ext-ia.pem cert-ext-joi.cfg cert-ext-joi.der cert-ext-joi.pem cert-ext-mnc.der cert-ext-multiple.cfg cert-ext-multiple.der cert-ext-multiple.pem cert-ext-nc-combined.der cert-ext-nc-combined.pem cert-ext-nc.cfg cert-ext-nc.der cert-ext-nc.pem cert-ext-ncdns.der cert-ext-ncdns.pem cert-ext-ncip.der cert-ext-ncip.pem cert-ext-ncmixed.der cert-ext-ncmulti.der cert-ext-ncmulti.pem cert-ext-ncrid.der cert-ext-ncrid.pem cert-ext-nct.cfg cert-ext-nct.der cert-ext-nct.pem cert-ext-ndir-exc.cfg cert-ext-ndir-exc.der cert-ext-ndir-exc.pem cert-ext-ndir.cfg cert-ext-ndir.der cert-ext-ndir.pem cert-ext-ns.der cert-over-max-altnames.cfg cert-over-max-altnames.der cert-over-max-altnames.pem cert-over-max-nc.cfg cert-over-max-nc.der cert-over-max-nc.pem client-ecc-cert-ski.hex cn-ip-literal.der cn-ip-wildcard.der crit-cert.pem crit-key.pem dh1024.der dh1024.pem dh512.der dh512.pem digsigku.pem encrypteddata.msg gen-badsig.sh gen-ext-certs.sh gen-testcerts.sh include.am kari-keyid-cms.msg ktri-keyid-cms.msg ossl-trusted-cert.pem server-badaltname.der server-badaltname.pem server-badaltnull.der server-badaltnull.pem server-badcn.der server-badcn.pem server-badcnnull.der server-badcnnull.pem server-cert-ecc-badsig.der server-cert-ecc-badsig.pem server-cert-rsa-badsig.der server-cert-rsa-badsig.pem server-duplicate-policy.pem server-garbage.der server-garbage.pem server-goodalt.der server-goodalt.pem server-goodaltwild.der server-goodaltwild.pem server-goodcn.der server-goodcn.pem server-goodcnwild.der server-goodcnwild.pem server-localhost.der server-localhost.pem smime-test-canon.p7s smime-test-multipart-badsig.p7s smime-test-multipart.p7s smime-test.p7stest-pathlen
assemble-chains.sh chainA-ICA1-key.pem chainA-ICA1-pathlen0.pem chainA-assembled.pem chainA-entity-key.pem chainA-entity.pem chainB-ICA1-key.pem chainB-ICA1-pathlen0.pem chainB-ICA2-key.pem chainB-ICA2-pathlen1.pem chainB-assembled.pem chainB-entity-key.pem chainB-entity.pem chainC-ICA1-key.pem chainC-ICA1-pathlen1.pem chainC-assembled.pem chainC-entity-key.pem chainC-entity.pem chainD-ICA1-key.pem chainD-ICA1-pathlen127.pem chainD-assembled.pem chainD-entity-key.pem chainD-entity.pem chainE-ICA1-key.pem chainE-ICA1-pathlen128.pem chainE-assembled.pem chainE-entity-key.pem chainE-entity.pem chainF-ICA1-key.pem chainF-ICA1-pathlen1.pem chainF-ICA2-key.pem chainF-ICA2-pathlen0.pem chainF-assembled.pem chainF-entity-key.pem chainF-entity.pem chainG-ICA1-key.pem chainG-ICA1-pathlen0.pem chainG-ICA2-key.pem chainG-ICA2-pathlen1.pem chainG-ICA3-key.pem chainG-ICA3-pathlen99.pem chainG-ICA4-key.pem chainG-ICA4-pathlen5.pem chainG-ICA5-key.pem chainG-ICA5-pathlen20.pem chainG-ICA6-key.pem chainG-ICA6-pathlen10.pem chainG-ICA7-key.pem chainG-ICA7-pathlen100.pem chainG-assembled.pem chainG-entity-key.pem chainG-entity.pem chainH-ICA1-key.pem chainH-ICA1-pathlen0.pem chainH-ICA2-key.pem chainH-ICA2-pathlen2.pem chainH-ICA3-key.pem chainH-ICA3-pathlen2.pem chainH-ICA4-key.pem chainH-ICA4-pathlen2.pem chainH-assembled.pem chainH-entity-key.pem chainH-entity.pem chainI-ICA1-key.pem chainI-ICA1-no_pathlen.pem chainI-ICA2-key.pem chainI-ICA2-no_pathlen.pem chainI-ICA3-key.pem chainI-ICA3-pathlen2.pem chainI-assembled.pem chainI-entity-key.pem chainI-entity.pem chainJ-ICA1-key.pem chainJ-ICA1-no_pathlen.pem chainJ-ICA2-key.pem chainJ-ICA2-no_pathlen.pem chainJ-ICA3-key.pem chainJ-ICA3-no_pathlen.pem chainJ-ICA4-key.pem chainJ-ICA4-pathlen2.pem chainJ-assembled.pem chainJ-entity-key.pem chainJ-entity.pem include.am refreshkeys.shtest-serial0
ee_normal.pem ee_serial0.pem generate_certs.sh include.am intermediate_serial0.pem root_serial0.pem root_serial0_key.pem selfsigned_nonca_serial0.pemxmss
bc_xmss_chain_ca.der bc_xmss_chain_leaf.der bc_xmss_sha2_10_256_root.der bc_xmss_sha2_16_256_root.der bc_xmssmt_sha2_20_2_256_root.der bc_xmssmt_sha2_20_4_256_root.der bc_xmssmt_sha2_40_8_256_root.der include.amcmake
Config.cmake.in README.md config.in functions.cmake include.am options.h.in wolfssl-config-version.cmake.in wolfssl-targets.cmake.indebian
changelog.in control.in copyright include.am libwolfssl-dev.install libwolfssl.install rules.indoc
dox_comments
header_files
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h puf.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wc_she.h wc_slhdsa.h wolfio.hheader_files-ja
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wolfio.hexamples
async
Makefile README.md async_client.c async_server.c async_tls.c async_tls.h include.am user_settings.hconfigs
README.md include.am user_settings_EBSnet.h user_settings_all.h user_settings_arduino.h user_settings_baremetal.h user_settings_ca.h user_settings_curve25519nonblock.h user_settings_dtls13.h user_settings_eccnonblock.h user_settings_espressif.h user_settings_fipsv2.h user_settings_fipsv5.h user_settings_min_ecc.h user_settings_openssl_compat.h user_settings_pkcs7.h user_settings_platformio.h user_settings_pq.h user_settings_rsa_only.h user_settings_stm32.h user_settings_template.h user_settings_tls12.h user_settings_tls13.h user_settings_wolfboot_keytools.h user_settings_wolfssh.h user_settings_wolftpm.hechoclient
echoclient.c echoclient.h echoclient.sln echoclient.vcproj echoclient.vcxproj include.am quitlinuxkm
Kbuild Makefile README.md get_thread_size.c include.am linuxkm-fips-hash-wrapper.sh linuxkm-fips-hash.c linuxkm_memory.c linuxkm_memory.h linuxkm_wc_port.h lkcapi_aes_glue.c lkcapi_dh_glue.c lkcapi_ecdh_glue.c lkcapi_ecdsa_glue.c lkcapi_glue.c lkcapi_rsa_glue.c lkcapi_sha_glue.c module_exports.c.template module_hooks.c pie_redirect_table.c wolfcrypt.lds x86_vector_register_glue.cm4
ax_add_am_macro.m4 ax_am_jobserver.m4 ax_am_macros.m4 ax_append_compile_flags.m4 ax_append_flag.m4 ax_append_link_flags.m4 ax_append_to_file.m4 ax_atomic.m4 ax_bsdkm.m4 ax_check_compile_flag.m4 ax_check_link_flag.m4 ax_compiler_version.m4 ax_count_cpus.m4 ax_create_generic_config.m4 ax_debug.m4 ax_file_escapes.m4 ax_harden_compiler_flags.m4 ax_linuxkm.m4 ax_print_to_file.m4 ax_pthread.m4 ax_require_defined.m4 ax_tls.m4 ax_vcs_checkout.m4 hexversion.m4 lib_socket_nsl.m4 visibility.m4mqx
wolfcrypt_benchmark
ReferencedRSESystems.xml wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfcrypt_test
ReferencedRSESystems.xml wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfssl_client
ReferencedRSESystems.xml wolfssl_client_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchscripts
aria-cmake-build-test.sh asn1_oid_sum.pl benchmark.test benchmark_compare.sh cleanup_testfiles.sh crl-gen-openssl.test crl-revoked.test dertoc.pl dtls.test dtlscid.test external.test google.test include.am makedistsmall.sh memtest.sh ocsp-responder-openssl-interop.test ocsp-stapling-with-ca-as-responder.test ocsp-stapling-with-wolfssl-responder.test ocsp-stapling.test ocsp-stapling2.test ocsp-stapling_tls13multi.test ocsp.test openssl.test openssl_srtp.test pem.test ping.test pkcallbacks.test psk.test resume.test rsapss.test sniffer-gen.sh sniffer-ipv6.pcap sniffer-static-rsa.pcap sniffer-testsuite.test sniffer-tls12-keylog.out sniffer-tls12-keylog.pcap sniffer-tls12-keylog.sslkeylog sniffer-tls13-dh-resume.pcap sniffer-tls13-dh.pcap sniffer-tls13-ecc-resume.pcap sniffer-tls13-ecc.pcap sniffer-tls13-hrr.pcap sniffer-tls13-keylog.out sniffer-tls13-keylog.pcap sniffer-tls13-keylog.sslkeylog sniffer-tls13-x25519-resume.pcap sniffer-tls13-x25519.pcap stm32l4-v4_0_1_build.sh tls13.test trusted_peer.test unit.test.in user_settings_asm.shsrc
bio.c conf.c crl.c dtls.c dtls13.c include.am internal.c keys.c ocsp.c pk.c pk_ec.c pk_rsa.c quic.c sniffer.c ssl.c ssl_api_cert.c ssl_api_crl_ocsp.c ssl_api_pk.c ssl_asn1.c ssl_bn.c ssl_certman.c ssl_crypto.c ssl_ech.c ssl_load.c ssl_misc.c ssl_p7p12.c ssl_sess.c ssl_sk.c tls.c tls13.c wolfio.c x509.c x509_str.ctests
api
api.h api_decl.h create_ocsp_test_blobs.py include.am test_aes.c test_aes.h test_arc4.c test_arc4.h test_ascon.c test_ascon.h test_ascon_kats.h test_asn.c test_asn.h test_blake2.c test_blake2.h test_camellia.c test_camellia.h test_certman.c test_certman.h test_chacha.c test_chacha.h test_chacha20_poly1305.c test_chacha20_poly1305.h test_cmac.c test_cmac.h test_curve25519.c test_curve25519.h test_curve448.c test_curve448.h test_des3.c test_des3.h test_dh.c test_dh.h test_digest.h test_dsa.c test_dsa.h test_dtls.c test_dtls.h test_ecc.c test_ecc.h test_ed25519.c test_ed25519.h test_ed448.c test_ed448.h test_evp.c test_evp.h test_evp_cipher.c test_evp_cipher.h test_evp_digest.c test_evp_digest.h test_evp_pkey.c test_evp_pkey.h test_hash.c test_hash.h test_hmac.c test_hmac.h test_md2.c test_md2.h test_md4.c test_md4.h test_md5.c test_md5.h test_mldsa.c test_mldsa.h test_mlkem.c test_mlkem.h test_ocsp.c test_ocsp.h test_ocsp_test_blobs.h test_ossl_asn1.c test_ossl_asn1.h test_ossl_bio.c test_ossl_bio.h test_ossl_bn.c test_ossl_bn.h test_ossl_cipher.c test_ossl_cipher.h test_ossl_dgst.c test_ossl_dgst.h test_ossl_dh.c test_ossl_dh.h test_ossl_dsa.c test_ossl_dsa.h test_ossl_ec.c test_ossl_ec.h test_ossl_ecx.c test_ossl_ecx.h test_ossl_mac.c test_ossl_mac.h test_ossl_obj.c test_ossl_obj.h test_ossl_p7p12.c test_ossl_p7p12.h test_ossl_pem.c test_ossl_pem.h test_ossl_rand.c test_ossl_rand.h test_ossl_rsa.c test_ossl_rsa.h test_ossl_sk.c test_ossl_sk.h test_ossl_x509.c test_ossl_x509.h test_ossl_x509_acert.c test_ossl_x509_acert.h test_ossl_x509_crypto.c test_ossl_x509_crypto.h test_ossl_x509_ext.c test_ossl_x509_ext.h test_ossl_x509_info.c test_ossl_x509_info.h test_ossl_x509_io.c test_ossl_x509_io.h test_ossl_x509_lu.c test_ossl_x509_lu.h test_ossl_x509_name.c test_ossl_x509_name.h test_ossl_x509_pk.c test_ossl_x509_pk.h test_ossl_x509_str.c test_ossl_x509_str.h test_ossl_x509_vp.c test_ossl_x509_vp.h test_pkcs12.c test_pkcs12.h test_pkcs7.c test_pkcs7.h test_poly1305.c test_poly1305.h test_random.c test_random.h test_rc2.c test_rc2.h test_ripemd.c test_ripemd.h test_rsa.c test_rsa.h test_sha.c test_sha.h test_sha256.c test_sha256.h test_sha3.c test_sha3.h test_sha512.c test_sha512.h test_she.c test_she.h test_signature.c test_signature.h test_slhdsa.c test_slhdsa.h test_sm2.c test_sm2.h test_sm3.c test_sm3.h test_sm4.c test_sm4.h test_tls.c test_tls.h test_tls13.c test_tls13.h test_tls_ext.c test_tls_ext.h test_wc_encrypt.c test_wc_encrypt.h test_wolfmath.c test_wolfmath.h test_x509.c test_x509.hwolfcrypt
benchmark
README.md benchmark-VS2022.sln benchmark-VS2022.vcxproj benchmark-VS2022.vcxproj.user benchmark.c benchmark.h benchmark.sln benchmark.vcproj benchmark.vcxproj include.amsrc
port
Espressif
esp_crt_bundle
README.md cacrt_all.pem cacrt_deprecated.pem cacrt_local.pem esp_crt_bundle.c gen_crt_bundle.py pio_install_cryptography.pyRenesas
README.md renesas_common.c renesas_fspsm_aes.c renesas_fspsm_rsa.c renesas_fspsm_sha.c renesas_fspsm_util.c renesas_rx64_hw_sha.c renesas_rx64_hw_util.c renesas_tsip_aes.c renesas_tsip_rsa.c renesas_tsip_sha.c renesas_tsip_util.carm
armv8-32-aes-asm.S armv8-32-aes-asm_c.c armv8-32-chacha-asm.S armv8-32-chacha-asm_c.c armv8-32-curve25519.S armv8-32-curve25519_c.c armv8-32-mlkem-asm.S armv8-32-mlkem-asm_c.c armv8-32-poly1305-asm.S armv8-32-poly1305-asm_c.c armv8-32-sha256-asm.S armv8-32-sha256-asm_c.c armv8-32-sha3-asm.S armv8-32-sha3-asm_c.c armv8-32-sha512-asm.S armv8-32-sha512-asm_c.c armv8-aes-asm.S armv8-aes-asm_c.c armv8-aes.c armv8-chacha-asm.S armv8-chacha-asm_c.c armv8-curve25519.S armv8-curve25519_c.c armv8-mlkem-asm.S armv8-mlkem-asm_c.c armv8-poly1305-asm.S armv8-poly1305-asm_c.c armv8-sha256-asm.S armv8-sha256-asm_c.c armv8-sha256.c armv8-sha3-asm.S armv8-sha3-asm_c.c armv8-sha512-asm.S armv8-sha512-asm_c.c armv8-sha512.c cryptoCell.c cryptoCellHash.c thumb2-aes-asm.S thumb2-aes-asm_c.c thumb2-chacha-asm.S thumb2-chacha-asm_c.c thumb2-curve25519.S thumb2-curve25519_c.c thumb2-mlkem-asm.S thumb2-mlkem-asm_c.c thumb2-poly1305-asm.S thumb2-poly1305-asm_c.c thumb2-sha256-asm.S thumb2-sha256-asm_c.c thumb2-sha3-asm.S thumb2-sha3-asm_c.c thumb2-sha512-asm.S thumb2-sha512-asm_c.ccaam
README.md caam_aes.c caam_doc.pdf caam_driver.c caam_error.c caam_integrity.c caam_qnx.c caam_sha.c wolfcaam_aes.c wolfcaam_cmac.c wolfcaam_ecdsa.c wolfcaam_fsl_nxp.c wolfcaam_hash.c wolfcaam_hmac.c wolfcaam_init.c wolfcaam_qnx.c wolfcaam_rsa.c wolfcaam_seco.c wolfcaam_x25519.cdevcrypto
README.md devcrypto_aes.c devcrypto_ecdsa.c devcrypto_hash.c devcrypto_hmac.c devcrypto_rsa.c devcrypto_x25519.c wc_devcrypto.criscv
riscv-64-aes.c riscv-64-chacha.c riscv-64-poly1305.c riscv-64-sha256.c riscv-64-sha3.c riscv-64-sha512.cwolfssl
openssl
aes.h asn1.h asn1t.h bio.h bn.h buffer.h camellia.h cmac.h cms.h compat_types.h conf.h crypto.h des.h dh.h dsa.h ec.h ec25519.h ec448.h ecdh.h ecdsa.h ed25519.h ed448.h engine.h err.h evp.h fips_rand.h hmac.h include.am kdf.h lhash.h md4.h md5.h modes.h obj_mac.h objects.h ocsp.h opensslconf.h opensslv.h ossl_typ.h pem.h pkcs12.h pkcs7.h rand.h rc4.h ripemd.h rsa.h safestack.h sha.h sha3.h srp.h ssl.h ssl23.h stack.h tls1.h txt_db.h ui.h x509.h x509_vfy.h x509v3.hwolfcrypt
port
Renesas
renesas-fspsm-crypt.h renesas-fspsm-types.h renesas-rx64-hw-crypt.h renesas-tsip-crypt.h renesas_cmn.h renesas_fspsm_internal.h renesas_sync.h renesas_tsip_internal.h renesas_tsip_types.hcaam
caam_driver.h caam_error.h caam_qnx.h wolfcaam.h wolfcaam_aes.h wolfcaam_cmac.h wolfcaam_ecdsa.h wolfcaam_fsl_nxp.h wolfcaam_hash.h wolfcaam_qnx.h wolfcaam_rsa.h wolfcaam_seco.h wolfcaam_sha.h wolfcaam_x25519.hwrapper
Ada
examples
src
aes_verify_main.adb rsa_verify_main.adb sha256_main.adb spark_sockets.adb spark_sockets.ads spark_terminal.adb spark_terminal.ads tls_client.adb tls_client.ads tls_client_main.adb tls_server.adb tls_server.ads tls_server_main.adbtests
src
aes_bindings_tests.adb aes_bindings_tests.ads rsa_verify_bindings_tests.adb rsa_verify_bindings_tests.ads sha256_bindings_tests.adb sha256_bindings_tests.ads tests.adbCSharp
wolfSSL-Example-IOCallbacks
App.config wolfSSL-Example-IOCallbacks.cs wolfSSL-Example-IOCallbacks.csprojwolfSSL-TLS-ServerThreaded
App.config wolfSSL-TLS-ServerThreaded.cs wolfSSL-TLS-ServerThreaded.csprojrust
wolfssl-wolfcrypt
src
aes.rs blake2.rs chacha20_poly1305.rs cmac.rs cmac_mac.rs curve25519.rs dh.rs dilithium.rs ecc.rs ecdsa.rs ed25519.rs ed448.rs fips.rs hkdf.rs hmac.rs hmac_mac.rs kdf.rs lib.rs lms.rs mlkem.rs mlkem_kem.rs pbkdf2_password_hash.rs prf.rs random.rs rsa.rs rsa_pkcs1v15.rs sha.rs sha_digest.rs sys.rstests
test_aes.rs test_blake2.rs test_chacha20_poly1305.rs test_cmac.rs test_cmac_mac.rs test_curve25519.rs test_dh.rs test_dilithium.rs test_ecc.rs test_ecdsa.rs test_ed25519.rs test_ed448.rs test_hkdf.rs test_hmac.rs test_hmac_mac.rs test_kdf.rs test_lms.rs test_mlkem.rs test_mlkem_kem.rs test_pbkdf2_password_hash.rs test_prf.rs test_random.rs test_rsa.rs test_rsa_pkcs1v15.rs test_sha.rs test_sha_digest.rs test_wolfcrypt.rszephyr
samples
wolfssl_benchmark
CMakeLists.txt README install_test.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.confwolfssl_test
CMakeLists.txt README install_test.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl/wolfcrypt/src/port/arm/armv8-32-mlkem-asm.S
raw
1/* armv8-32-mlkem-asm
2 *
3 * Copyright (C) 2006-2026 wolfSSL Inc.
4 *
5 * This file is part of wolfSSL.
6 *
7 * wolfSSL is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * wolfSSL is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
20 */
21
22/* Generated using (from wolfssl):
23 * cd ../scripts
24 * ruby ./kyber/kyber.rb arm32 \
25 * ../wolfssl/wolfcrypt/src/port/arm/armv8-32-mlkem-asm.S
26 */
27
28#include <wolfssl/wolfcrypt/libwolfssl_sources_asm.h>
29
30#ifdef WOLFSSL_ARMASM
31#if !defined(__aarch64__) && !defined(WOLFSSL_ARMASM_THUMB2)
32#ifndef WOLFSSL_ARMASM_INLINE
33#ifdef WOLFSSL_HAVE_MLKEM
34#ifndef __APPLE__
35 .text
36 .type L_mlkem_arm32_ntt_zetas, %object
37 .size L_mlkem_arm32_ntt_zetas, 256
38#else
39 .section __DATA,__data
40#endif /* __APPLE__ */
41 # 4-byte aligned, 32-bit aligned
42#ifndef __APPLE__
43 .align 2
44#else
45 .p2align 2
46#endif /* __APPLE__ */
47L_mlkem_arm32_ntt_zetas:
48 .short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
49 .short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
50 .short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
51 .short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
52 .short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
53 .short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
54 .short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
55 .short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
56 .short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
57 .short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
58 .short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
59 .short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
60 .short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
61 .short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
62 .short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
63 .short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
64 .text
65 .align 4
66 .globl mlkem_arm32_ntt
67 .type mlkem_arm32_ntt, %function
68mlkem_arm32_ntt:
69 push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
70 sub sp, sp, #8
71 adr r1, L_mlkem_arm32_ntt_zetas
72#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
73#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
74 mov r10, #0x1
75 orr r10, r10, #0xd00
76#else
77 mov r10, #0xd01
78#endif
79#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
80 orr r10, r10, #0xc000000
81 orr r10, r10, #0xff0000
82#else
83 movt r10, #0xcff
84#endif
85#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
86 mov r2, #16
87L_mlkem_arm32_ntt_loop_123:
88 str r2, [sp]
89 ldrh r11, [r1, #2]
90 ldr r2, [r0]
91 ldr r3, [r0, #64]
92 ldr r4, [r0, #128]
93 ldr r5, [r0, #192]
94 ldr r6, [r0, #256]
95 ldr r7, [r0, #320]
96 ldr r8, [r0, #384]
97 ldr r9, [r0, #448]
98#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
99 smulbb r12, r11, r6
100 smulbt r6, r11, r6
101 smultb lr, r10, r12
102 smlabb r12, r10, lr, r12
103 smultb lr, r10, r6
104 smlabb lr, r10, lr, r6
105 pkhtb r12, lr, r12, ASR #16
106 ssub16 r6, r2, r12
107 sadd16 r2, r2, r12
108#else
109#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
110 lsl r12, r6, #16
111 asr r12, r12, #16
112#else
113 sbfx r12, r6, #0, #16
114#endif
115#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
116 lsl lr, r11, #16
117 asr lr, lr, #16
118#else
119 sbfx lr, r11, #0, #16
120#endif
121 asr r6, r6, #16
122 mul r12, lr, r12
123 mul r6, lr, r6
124#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
125 mov r10, #0xff
126 orr r10, r10, #0xc00
127#else
128 mov r10, #0xcff
129#endif
130 mul lr, r10, r12
131#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
132 mov r10, #0x1
133 orr r10, r10, #0xd00
134#else
135 mov r10, #0xd01
136#endif
137#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
138 lsl lr, lr, #16
139 asr lr, lr, #16
140#else
141 sbfx lr, lr, #0, #16
142#endif
143 mla r12, r10, lr, r12
144#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
145 mov r10, #0xff
146 orr r10, r10, #0xc00
147#else
148 mov r10, #0xcff
149#endif
150#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
151 lsl lr, r6, #16
152 asr lr, lr, #16
153#else
154 sbfx lr, r6, #0, #16
155#endif
156 mul lr, r10, lr
157#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
158 mov r10, #0x1
159 orr r10, r10, #0xd00
160#else
161 mov r10, #0xd01
162#endif
163#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
164 lsl lr, lr, #16
165 asr lr, lr, #16
166#else
167 sbfx lr, lr, #0, #16
168#endif
169 mla lr, r10, lr, r6
170 sub r6, r2, lr
171 add r2, r2, lr
172 sub lr, r2, r12, lsr #16
173 add r12, r2, r12, lsr #16
174#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
175 lsr r6, r6, #16
176 orr r6, r6, lr, lsl #16
177 ror r6, r6, #16
178#else
179 bfi r6, lr, #0, #16
180#endif
181#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
182 lsr r2, r2, #16
183 orr r2, r2, r12, lsl #16
184 ror r2, r2, #16
185#else
186 bfi r2, r12, #0, #16
187#endif
188#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
189#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
190 smulbb r12, r11, r7
191 smulbt r7, r11, r7
192 smultb lr, r10, r12
193 smlabb r12, r10, lr, r12
194 smultb lr, r10, r7
195 smlabb lr, r10, lr, r7
196 pkhtb r12, lr, r12, ASR #16
197 ssub16 r7, r3, r12
198 sadd16 r3, r3, r12
199#else
200#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
201 lsl r12, r7, #16
202 asr r12, r12, #16
203#else
204 sbfx r12, r7, #0, #16
205#endif
206#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
207 lsl lr, r11, #16
208 asr lr, lr, #16
209#else
210 sbfx lr, r11, #0, #16
211#endif
212 asr r7, r7, #16
213 mul r12, lr, r12
214 mul r7, lr, r7
215#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
216 mov r10, #0xff
217 orr r10, r10, #0xc00
218#else
219 mov r10, #0xcff
220#endif
221 mul lr, r10, r12
222#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
223 mov r10, #0x1
224 orr r10, r10, #0xd00
225#else
226 mov r10, #0xd01
227#endif
228#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
229 lsl lr, lr, #16
230 asr lr, lr, #16
231#else
232 sbfx lr, lr, #0, #16
233#endif
234 mla r12, r10, lr, r12
235#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
236 mov r10, #0xff
237 orr r10, r10, #0xc00
238#else
239 mov r10, #0xcff
240#endif
241#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
242 lsl lr, r7, #16
243 asr lr, lr, #16
244#else
245 sbfx lr, r7, #0, #16
246#endif
247 mul lr, r10, lr
248#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
249 mov r10, #0x1
250 orr r10, r10, #0xd00
251#else
252 mov r10, #0xd01
253#endif
254#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
255 lsl lr, lr, #16
256 asr lr, lr, #16
257#else
258 sbfx lr, lr, #0, #16
259#endif
260 mla lr, r10, lr, r7
261 sub r7, r3, lr
262 add r3, r3, lr
263 sub lr, r3, r12, lsr #16
264 add r12, r3, r12, lsr #16
265#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
266 lsr r7, r7, #16
267 orr r7, r7, lr, lsl #16
268 ror r7, r7, #16
269#else
270 bfi r7, lr, #0, #16
271#endif
272#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
273 lsr r3, r3, #16
274 orr r3, r3, r12, lsl #16
275 ror r3, r3, #16
276#else
277 bfi r3, r12, #0, #16
278#endif
279#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
280#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
281 smulbb r12, r11, r8
282 smulbt r8, r11, r8
283 smultb lr, r10, r12
284 smlabb r12, r10, lr, r12
285 smultb lr, r10, r8
286 smlabb lr, r10, lr, r8
287 pkhtb r12, lr, r12, ASR #16
288 ssub16 r8, r4, r12
289 sadd16 r4, r4, r12
290#else
291#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
292 lsl r12, r8, #16
293 asr r12, r12, #16
294#else
295 sbfx r12, r8, #0, #16
296#endif
297#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
298 lsl lr, r11, #16
299 asr lr, lr, #16
300#else
301 sbfx lr, r11, #0, #16
302#endif
303 asr r8, r8, #16
304 mul r12, lr, r12
305 mul r8, lr, r8
306#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
307 mov r10, #0xff
308 orr r10, r10, #0xc00
309#else
310 mov r10, #0xcff
311#endif
312 mul lr, r10, r12
313#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
314 mov r10, #0x1
315 orr r10, r10, #0xd00
316#else
317 mov r10, #0xd01
318#endif
319#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
320 lsl lr, lr, #16
321 asr lr, lr, #16
322#else
323 sbfx lr, lr, #0, #16
324#endif
325 mla r12, r10, lr, r12
326#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
327 mov r10, #0xff
328 orr r10, r10, #0xc00
329#else
330 mov r10, #0xcff
331#endif
332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
333 lsl lr, r8, #16
334 asr lr, lr, #16
335#else
336 sbfx lr, r8, #0, #16
337#endif
338 mul lr, r10, lr
339#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
340 mov r10, #0x1
341 orr r10, r10, #0xd00
342#else
343 mov r10, #0xd01
344#endif
345#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
346 lsl lr, lr, #16
347 asr lr, lr, #16
348#else
349 sbfx lr, lr, #0, #16
350#endif
351 mla lr, r10, lr, r8
352 sub r8, r4, lr
353 add r4, r4, lr
354 sub lr, r4, r12, lsr #16
355 add r12, r4, r12, lsr #16
356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
357 lsr r8, r8, #16
358 orr r8, r8, lr, lsl #16
359 ror r8, r8, #16
360#else
361 bfi r8, lr, #0, #16
362#endif
363#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
364 lsr r4, r4, #16
365 orr r4, r4, r12, lsl #16
366 ror r4, r4, #16
367#else
368 bfi r4, r12, #0, #16
369#endif
370#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
371#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
372 smulbb r12, r11, r9
373 smulbt r9, r11, r9
374 smultb lr, r10, r12
375 smlabb r12, r10, lr, r12
376 smultb lr, r10, r9
377 smlabb lr, r10, lr, r9
378 pkhtb r12, lr, r12, ASR #16
379 ssub16 r9, r5, r12
380 sadd16 r5, r5, r12
381#else
382#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
383 lsl r12, r9, #16
384 asr r12, r12, #16
385#else
386 sbfx r12, r9, #0, #16
387#endif
388#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
389 lsl lr, r11, #16
390 asr lr, lr, #16
391#else
392 sbfx lr, r11, #0, #16
393#endif
394 asr r9, r9, #16
395 mul r12, lr, r12
396 mul r9, lr, r9
397#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
398 mov r10, #0xff
399 orr r10, r10, #0xc00
400#else
401 mov r10, #0xcff
402#endif
403 mul lr, r10, r12
404#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
405 mov r10, #0x1
406 orr r10, r10, #0xd00
407#else
408 mov r10, #0xd01
409#endif
410#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
411 lsl lr, lr, #16
412 asr lr, lr, #16
413#else
414 sbfx lr, lr, #0, #16
415#endif
416 mla r12, r10, lr, r12
417#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
418 mov r10, #0xff
419 orr r10, r10, #0xc00
420#else
421 mov r10, #0xcff
422#endif
423#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
424 lsl lr, r9, #16
425 asr lr, lr, #16
426#else
427 sbfx lr, r9, #0, #16
428#endif
429 mul lr, r10, lr
430#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
431 mov r10, #0x1
432 orr r10, r10, #0xd00
433#else
434 mov r10, #0xd01
435#endif
436#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
437 lsl lr, lr, #16
438 asr lr, lr, #16
439#else
440 sbfx lr, lr, #0, #16
441#endif
442 mla lr, r10, lr, r9
443 sub r9, r5, lr
444 add r5, r5, lr
445 sub lr, r5, r12, lsr #16
446 add r12, r5, r12, lsr #16
447#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
448 lsr r9, r9, #16
449 orr r9, r9, lr, lsl #16
450 ror r9, r9, #16
451#else
452 bfi r9, lr, #0, #16
453#endif
454#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
455 lsr r5, r5, #16
456 orr r5, r5, r12, lsl #16
457 ror r5, r5, #16
458#else
459 bfi r5, r12, #0, #16
460#endif
461#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
462 ldr r11, [r1, #4]
463#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
464 smulbb r12, r11, r4
465 smulbt r4, r11, r4
466 smultb lr, r10, r12
467 smlabb r12, r10, lr, r12
468 smultb lr, r10, r4
469 smlabb lr, r10, lr, r4
470 pkhtb r12, lr, r12, ASR #16
471 ssub16 r4, r2, r12
472 sadd16 r2, r2, r12
473#else
474#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
475 lsl r12, r4, #16
476 asr r12, r12, #16
477#else
478 sbfx r12, r4, #0, #16
479#endif
480#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
481 lsl lr, r11, #16
482 asr lr, lr, #16
483#else
484 sbfx lr, r11, #0, #16
485#endif
486 asr r4, r4, #16
487 mul r12, lr, r12
488 mul r4, lr, r4
489#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
490 mov r10, #0xff
491 orr r10, r10, #0xc00
492#else
493 mov r10, #0xcff
494#endif
495 mul lr, r10, r12
496#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
497 mov r10, #0x1
498 orr r10, r10, #0xd00
499#else
500 mov r10, #0xd01
501#endif
502#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
503 lsl lr, lr, #16
504 asr lr, lr, #16
505#else
506 sbfx lr, lr, #0, #16
507#endif
508 mla r12, r10, lr, r12
509#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
510 mov r10, #0xff
511 orr r10, r10, #0xc00
512#else
513 mov r10, #0xcff
514#endif
515#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
516 lsl lr, r4, #16
517 asr lr, lr, #16
518#else
519 sbfx lr, r4, #0, #16
520#endif
521 mul lr, r10, lr
522#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
523 mov r10, #0x1
524 orr r10, r10, #0xd00
525#else
526 mov r10, #0xd01
527#endif
528#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
529 lsl lr, lr, #16
530 asr lr, lr, #16
531#else
532 sbfx lr, lr, #0, #16
533#endif
534 mla lr, r10, lr, r4
535 sub r4, r2, lr
536 add r2, r2, lr
537 sub lr, r2, r12, lsr #16
538 add r12, r2, r12, lsr #16
539#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
540 lsr r4, r4, #16
541 orr r4, r4, lr, lsl #16
542 ror r4, r4, #16
543#else
544 bfi r4, lr, #0, #16
545#endif
546#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
547 lsr r2, r2, #16
548 orr r2, r2, r12, lsl #16
549 ror r2, r2, #16
550#else
551 bfi r2, r12, #0, #16
552#endif
553#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
554#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
555 smulbb r12, r11, r5
556 smulbt r5, r11, r5
557 smultb lr, r10, r12
558 smlabb r12, r10, lr, r12
559 smultb lr, r10, r5
560 smlabb lr, r10, lr, r5
561 pkhtb r12, lr, r12, ASR #16
562 ssub16 r5, r3, r12
563 sadd16 r3, r3, r12
564#else
565#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
566 lsl r12, r5, #16
567 asr r12, r12, #16
568#else
569 sbfx r12, r5, #0, #16
570#endif
571#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
572 lsl lr, r11, #16
573 asr lr, lr, #16
574#else
575 sbfx lr, r11, #0, #16
576#endif
577 asr r5, r5, #16
578 mul r12, lr, r12
579 mul r5, lr, r5
580#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
581 mov r10, #0xff
582 orr r10, r10, #0xc00
583#else
584 mov r10, #0xcff
585#endif
586 mul lr, r10, r12
587#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
588 mov r10, #0x1
589 orr r10, r10, #0xd00
590#else
591 mov r10, #0xd01
592#endif
593#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
594 lsl lr, lr, #16
595 asr lr, lr, #16
596#else
597 sbfx lr, lr, #0, #16
598#endif
599 mla r12, r10, lr, r12
600#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
601 mov r10, #0xff
602 orr r10, r10, #0xc00
603#else
604 mov r10, #0xcff
605#endif
606#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
607 lsl lr, r5, #16
608 asr lr, lr, #16
609#else
610 sbfx lr, r5, #0, #16
611#endif
612 mul lr, r10, lr
613#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
614 mov r10, #0x1
615 orr r10, r10, #0xd00
616#else
617 mov r10, #0xd01
618#endif
619#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
620 lsl lr, lr, #16
621 asr lr, lr, #16
622#else
623 sbfx lr, lr, #0, #16
624#endif
625 mla lr, r10, lr, r5
626 sub r5, r3, lr
627 add r3, r3, lr
628 sub lr, r3, r12, lsr #16
629 add r12, r3, r12, lsr #16
630#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
631 lsr r5, r5, #16
632 orr r5, r5, lr, lsl #16
633 ror r5, r5, #16
634#else
635 bfi r5, lr, #0, #16
636#endif
637#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
638 lsr r3, r3, #16
639 orr r3, r3, r12, lsl #16
640 ror r3, r3, #16
641#else
642 bfi r3, r12, #0, #16
643#endif
644#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
645#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
646 smultb r12, r11, r8
647 smultt r8, r11, r8
648 smultb lr, r10, r12
649 smlabb r12, r10, lr, r12
650 smultb lr, r10, r8
651 smlabb lr, r10, lr, r8
652 pkhtb r12, lr, r12, ASR #16
653 ssub16 r8, r6, r12
654 sadd16 r6, r6, r12
655#else
656#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
657 lsl r12, r8, #16
658 asr r12, r12, #16
659#else
660 sbfx r12, r8, #0, #16
661#endif
662#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
663 asr lr, r11, #16
664#else
665 sbfx lr, r11, #16, #16
666#endif
667 asr r8, r8, #16
668 mul r12, lr, r12
669 mul r8, lr, r8
670#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
671 mov r10, #0xff
672 orr r10, r10, #0xc00
673#else
674 mov r10, #0xcff
675#endif
676 mul lr, r10, r12
677#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
678 mov r10, #0x1
679 orr r10, r10, #0xd00
680#else
681 mov r10, #0xd01
682#endif
683#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
684 lsl lr, lr, #16
685 asr lr, lr, #16
686#else
687 sbfx lr, lr, #0, #16
688#endif
689 mla r12, r10, lr, r12
690#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
691 mov r10, #0xff
692 orr r10, r10, #0xc00
693#else
694 mov r10, #0xcff
695#endif
696#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
697 lsl lr, r8, #16
698 asr lr, lr, #16
699#else
700 sbfx lr, r8, #0, #16
701#endif
702 mul lr, r10, lr
703#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
704 mov r10, #0x1
705 orr r10, r10, #0xd00
706#else
707 mov r10, #0xd01
708#endif
709#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
710 lsl lr, lr, #16
711 asr lr, lr, #16
712#else
713 sbfx lr, lr, #0, #16
714#endif
715 mla lr, r10, lr, r8
716 sub r8, r6, lr
717 add r6, r6, lr
718 sub lr, r6, r12, lsr #16
719 add r12, r6, r12, lsr #16
720#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
721 lsr r8, r8, #16
722 orr r8, r8, lr, lsl #16
723 ror r8, r8, #16
724#else
725 bfi r8, lr, #0, #16
726#endif
727#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
728 lsr r6, r6, #16
729 orr r6, r6, r12, lsl #16
730 ror r6, r6, #16
731#else
732 bfi r6, r12, #0, #16
733#endif
734#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
735#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
736 smultb r12, r11, r9
737 smultt r9, r11, r9
738 smultb lr, r10, r12
739 smlabb r12, r10, lr, r12
740 smultb lr, r10, r9
741 smlabb lr, r10, lr, r9
742 pkhtb r12, lr, r12, ASR #16
743 ssub16 r9, r7, r12
744 sadd16 r7, r7, r12
745#else
746#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
747 lsl r12, r9, #16
748 asr r12, r12, #16
749#else
750 sbfx r12, r9, #0, #16
751#endif
752#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
753 asr lr, r11, #16
754#else
755 sbfx lr, r11, #16, #16
756#endif
757 asr r9, r9, #16
758 mul r12, lr, r12
759 mul r9, lr, r9
760#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
761 mov r10, #0xff
762 orr r10, r10, #0xc00
763#else
764 mov r10, #0xcff
765#endif
766 mul lr, r10, r12
767#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
768 mov r10, #0x1
769 orr r10, r10, #0xd00
770#else
771 mov r10, #0xd01
772#endif
773#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
774 lsl lr, lr, #16
775 asr lr, lr, #16
776#else
777 sbfx lr, lr, #0, #16
778#endif
779 mla r12, r10, lr, r12
780#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
781 mov r10, #0xff
782 orr r10, r10, #0xc00
783#else
784 mov r10, #0xcff
785#endif
786#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
787 lsl lr, r9, #16
788 asr lr, lr, #16
789#else
790 sbfx lr, r9, #0, #16
791#endif
792 mul lr, r10, lr
793#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
794 mov r10, #0x1
795 orr r10, r10, #0xd00
796#else
797 mov r10, #0xd01
798#endif
799#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
800 lsl lr, lr, #16
801 asr lr, lr, #16
802#else
803 sbfx lr, lr, #0, #16
804#endif
805 mla lr, r10, lr, r9
806 sub r9, r7, lr
807 add r7, r7, lr
808 sub lr, r7, r12, lsr #16
809 add r12, r7, r12, lsr #16
810#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
811 lsr r9, r9, #16
812 orr r9, r9, lr, lsl #16
813 ror r9, r9, #16
814#else
815 bfi r9, lr, #0, #16
816#endif
817#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
818 lsr r7, r7, #16
819 orr r7, r7, r12, lsl #16
820 ror r7, r7, #16
821#else
822 bfi r7, r12, #0, #16
823#endif
824#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
825 ldr r11, [r1, #8]
826#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
827 smulbb r12, r11, r3
828 smulbt r3, r11, r3
829 smultb lr, r10, r12
830 smlabb r12, r10, lr, r12
831 smultb lr, r10, r3
832 smlabb lr, r10, lr, r3
833 pkhtb r12, lr, r12, ASR #16
834 ssub16 r3, r2, r12
835 sadd16 r2, r2, r12
836#else
837#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
838 lsl r12, r3, #16
839 asr r12, r12, #16
840#else
841 sbfx r12, r3, #0, #16
842#endif
843#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
844 lsl lr, r11, #16
845 asr lr, lr, #16
846#else
847 sbfx lr, r11, #0, #16
848#endif
849 asr r3, r3, #16
850 mul r12, lr, r12
851 mul r3, lr, r3
852#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
853 mov r10, #0xff
854 orr r10, r10, #0xc00
855#else
856 mov r10, #0xcff
857#endif
858 mul lr, r10, r12
859#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
860 mov r10, #0x1
861 orr r10, r10, #0xd00
862#else
863 mov r10, #0xd01
864#endif
865#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
866 lsl lr, lr, #16
867 asr lr, lr, #16
868#else
869 sbfx lr, lr, #0, #16
870#endif
871 mla r12, r10, lr, r12
872#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
873 mov r10, #0xff
874 orr r10, r10, #0xc00
875#else
876 mov r10, #0xcff
877#endif
878#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
879 lsl lr, r3, #16
880 asr lr, lr, #16
881#else
882 sbfx lr, r3, #0, #16
883#endif
884 mul lr, r10, lr
885#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
886 mov r10, #0x1
887 orr r10, r10, #0xd00
888#else
889 mov r10, #0xd01
890#endif
891#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
892 lsl lr, lr, #16
893 asr lr, lr, #16
894#else
895 sbfx lr, lr, #0, #16
896#endif
897 mla lr, r10, lr, r3
898 sub r3, r2, lr
899 add r2, r2, lr
900 sub lr, r2, r12, lsr #16
901 add r12, r2, r12, lsr #16
902#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
903 lsr r3, r3, #16
904 orr r3, r3, lr, lsl #16
905 ror r3, r3, #16
906#else
907 bfi r3, lr, #0, #16
908#endif
909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
910 lsr r2, r2, #16
911 orr r2, r2, r12, lsl #16
912 ror r2, r2, #16
913#else
914 bfi r2, r12, #0, #16
915#endif
916#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
917#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
918 smultb r12, r11, r5
919 smultt r5, r11, r5
920 smultb lr, r10, r12
921 smlabb r12, r10, lr, r12
922 smultb lr, r10, r5
923 smlabb lr, r10, lr, r5
924 pkhtb r12, lr, r12, ASR #16
925 ssub16 r5, r4, r12
926 sadd16 r4, r4, r12
927#else
928#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
929 lsl r12, r5, #16
930 asr r12, r12, #16
931#else
932 sbfx r12, r5, #0, #16
933#endif
934#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
935 asr lr, r11, #16
936#else
937 sbfx lr, r11, #16, #16
938#endif
939 asr r5, r5, #16
940 mul r12, lr, r12
941 mul r5, lr, r5
942#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
943 mov r10, #0xff
944 orr r10, r10, #0xc00
945#else
946 mov r10, #0xcff
947#endif
948 mul lr, r10, r12
949#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
950 mov r10, #0x1
951 orr r10, r10, #0xd00
952#else
953 mov r10, #0xd01
954#endif
955#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
956 lsl lr, lr, #16
957 asr lr, lr, #16
958#else
959 sbfx lr, lr, #0, #16
960#endif
961 mla r12, r10, lr, r12
962#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
963 mov r10, #0xff
964 orr r10, r10, #0xc00
965#else
966 mov r10, #0xcff
967#endif
968#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
969 lsl lr, r5, #16
970 asr lr, lr, #16
971#else
972 sbfx lr, r5, #0, #16
973#endif
974 mul lr, r10, lr
975#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
976 mov r10, #0x1
977 orr r10, r10, #0xd00
978#else
979 mov r10, #0xd01
980#endif
981#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
982 lsl lr, lr, #16
983 asr lr, lr, #16
984#else
985 sbfx lr, lr, #0, #16
986#endif
987 mla lr, r10, lr, r5
988 sub r5, r4, lr
989 add r4, r4, lr
990 sub lr, r4, r12, lsr #16
991 add r12, r4, r12, lsr #16
992#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
993 lsr r5, r5, #16
994 orr r5, r5, lr, lsl #16
995 ror r5, r5, #16
996#else
997 bfi r5, lr, #0, #16
998#endif
999#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1000 lsr r4, r4, #16
1001 orr r4, r4, r12, lsl #16
1002 ror r4, r4, #16
1003#else
1004 bfi r4, r12, #0, #16
1005#endif
1006#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1007 ldr r11, [r1, #12]
1008#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1009 smulbb r12, r11, r7
1010 smulbt r7, r11, r7
1011 smultb lr, r10, r12
1012 smlabb r12, r10, lr, r12
1013 smultb lr, r10, r7
1014 smlabb lr, r10, lr, r7
1015 pkhtb r12, lr, r12, ASR #16
1016 ssub16 r7, r6, r12
1017 sadd16 r6, r6, r12
1018#else
1019#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1020 lsl r12, r7, #16
1021 asr r12, r12, #16
1022#else
1023 sbfx r12, r7, #0, #16
1024#endif
1025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1026 lsl lr, r11, #16
1027 asr lr, lr, #16
1028#else
1029 sbfx lr, r11, #0, #16
1030#endif
1031 asr r7, r7, #16
1032 mul r12, lr, r12
1033 mul r7, lr, r7
1034#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1035 mov r10, #0xff
1036 orr r10, r10, #0xc00
1037#else
1038 mov r10, #0xcff
1039#endif
1040 mul lr, r10, r12
1041#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1042 mov r10, #0x1
1043 orr r10, r10, #0xd00
1044#else
1045 mov r10, #0xd01
1046#endif
1047#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1048 lsl lr, lr, #16
1049 asr lr, lr, #16
1050#else
1051 sbfx lr, lr, #0, #16
1052#endif
1053 mla r12, r10, lr, r12
1054#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1055 mov r10, #0xff
1056 orr r10, r10, #0xc00
1057#else
1058 mov r10, #0xcff
1059#endif
1060#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1061 lsl lr, r7, #16
1062 asr lr, lr, #16
1063#else
1064 sbfx lr, r7, #0, #16
1065#endif
1066 mul lr, r10, lr
1067#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1068 mov r10, #0x1
1069 orr r10, r10, #0xd00
1070#else
1071 mov r10, #0xd01
1072#endif
1073#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1074 lsl lr, lr, #16
1075 asr lr, lr, #16
1076#else
1077 sbfx lr, lr, #0, #16
1078#endif
1079 mla lr, r10, lr, r7
1080 sub r7, r6, lr
1081 add r6, r6, lr
1082 sub lr, r6, r12, lsr #16
1083 add r12, r6, r12, lsr #16
1084#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1085 lsr r7, r7, #16
1086 orr r7, r7, lr, lsl #16
1087 ror r7, r7, #16
1088#else
1089 bfi r7, lr, #0, #16
1090#endif
1091#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1092 lsr r6, r6, #16
1093 orr r6, r6, r12, lsl #16
1094 ror r6, r6, #16
1095#else
1096 bfi r6, r12, #0, #16
1097#endif
1098#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1099#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1100 smultb r12, r11, r9
1101 smultt r9, r11, r9
1102 smultb lr, r10, r12
1103 smlabb r12, r10, lr, r12
1104 smultb lr, r10, r9
1105 smlabb lr, r10, lr, r9
1106 pkhtb r12, lr, r12, ASR #16
1107 ssub16 r9, r8, r12
1108 sadd16 r8, r8, r12
1109#else
1110#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1111 lsl r12, r9, #16
1112 asr r12, r12, #16
1113#else
1114 sbfx r12, r9, #0, #16
1115#endif
1116#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1117 asr lr, r11, #16
1118#else
1119 sbfx lr, r11, #16, #16
1120#endif
1121 asr r9, r9, #16
1122 mul r12, lr, r12
1123 mul r9, lr, r9
1124#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1125 mov r10, #0xff
1126 orr r10, r10, #0xc00
1127#else
1128 mov r10, #0xcff
1129#endif
1130 mul lr, r10, r12
1131#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1132 mov r10, #0x1
1133 orr r10, r10, #0xd00
1134#else
1135 mov r10, #0xd01
1136#endif
1137#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1138 lsl lr, lr, #16
1139 asr lr, lr, #16
1140#else
1141 sbfx lr, lr, #0, #16
1142#endif
1143 mla r12, r10, lr, r12
1144#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1145 mov r10, #0xff
1146 orr r10, r10, #0xc00
1147#else
1148 mov r10, #0xcff
1149#endif
1150#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1151 lsl lr, r9, #16
1152 asr lr, lr, #16
1153#else
1154 sbfx lr, r9, #0, #16
1155#endif
1156 mul lr, r10, lr
1157#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1158 mov r10, #0x1
1159 orr r10, r10, #0xd00
1160#else
1161 mov r10, #0xd01
1162#endif
1163#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1164 lsl lr, lr, #16
1165 asr lr, lr, #16
1166#else
1167 sbfx lr, lr, #0, #16
1168#endif
1169 mla lr, r10, lr, r9
1170 sub r9, r8, lr
1171 add r8, r8, lr
1172 sub lr, r8, r12, lsr #16
1173 add r12, r8, r12, lsr #16
1174#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1175 lsr r9, r9, #16
1176 orr r9, r9, lr, lsl #16
1177 ror r9, r9, #16
1178#else
1179 bfi r9, lr, #0, #16
1180#endif
1181#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1182 lsr r8, r8, #16
1183 orr r8, r8, r12, lsl #16
1184 ror r8, r8, #16
1185#else
1186 bfi r8, r12, #0, #16
1187#endif
1188#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1189 str r2, [r0]
1190 str r3, [r0, #64]
1191 str r4, [r0, #128]
1192 str r5, [r0, #192]
1193 str r6, [r0, #256]
1194 str r7, [r0, #320]
1195 str r8, [r0, #384]
1196 str r9, [r0, #448]
1197 ldr r2, [sp]
1198 subs r2, r2, #1
1199 add r0, r0, #4
1200 bne L_mlkem_arm32_ntt_loop_123
1201 sub r0, r0, #0x40
1202 mov r3, #0
1203L_mlkem_arm32_ntt_loop_4_j:
1204 str r3, [sp, #4]
1205 add r11, r1, r3, lsr #4
1206 mov r2, #4
1207 ldr r11, [r11, #16]
1208L_mlkem_arm32_ntt_loop_4_i:
1209 str r2, [sp]
1210 ldr r2, [r0]
1211 ldr r3, [r0, #16]
1212 ldr r4, [r0, #32]
1213 ldr r5, [r0, #48]
1214 ldr r6, [r0, #64]
1215 ldr r7, [r0, #80]
1216 ldr r8, [r0, #96]
1217 ldr r9, [r0, #112]
1218#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1219 smulbb r12, r11, r4
1220 smulbt r4, r11, r4
1221 smultb lr, r10, r12
1222 smlabb r12, r10, lr, r12
1223 smultb lr, r10, r4
1224 smlabb lr, r10, lr, r4
1225 pkhtb r12, lr, r12, ASR #16
1226 ssub16 r4, r2, r12
1227 sadd16 r2, r2, r12
1228#else
1229#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1230 lsl r12, r4, #16
1231 asr r12, r12, #16
1232#else
1233 sbfx r12, r4, #0, #16
1234#endif
1235#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1236 lsl lr, r11, #16
1237 asr lr, lr, #16
1238#else
1239 sbfx lr, r11, #0, #16
1240#endif
1241 asr r4, r4, #16
1242 mul r12, lr, r12
1243 mul r4, lr, r4
1244#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1245 mov r10, #0xff
1246 orr r10, r10, #0xc00
1247#else
1248 mov r10, #0xcff
1249#endif
1250 mul lr, r10, r12
1251#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1252 mov r10, #0x1
1253 orr r10, r10, #0xd00
1254#else
1255 mov r10, #0xd01
1256#endif
1257#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1258 lsl lr, lr, #16
1259 asr lr, lr, #16
1260#else
1261 sbfx lr, lr, #0, #16
1262#endif
1263 mla r12, r10, lr, r12
1264#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1265 mov r10, #0xff
1266 orr r10, r10, #0xc00
1267#else
1268 mov r10, #0xcff
1269#endif
1270#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1271 lsl lr, r4, #16
1272 asr lr, lr, #16
1273#else
1274 sbfx lr, r4, #0, #16
1275#endif
1276 mul lr, r10, lr
1277#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1278 mov r10, #0x1
1279 orr r10, r10, #0xd00
1280#else
1281 mov r10, #0xd01
1282#endif
1283#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1284 lsl lr, lr, #16
1285 asr lr, lr, #16
1286#else
1287 sbfx lr, lr, #0, #16
1288#endif
1289 mla lr, r10, lr, r4
1290 sub r4, r2, lr
1291 add r2, r2, lr
1292 sub lr, r2, r12, lsr #16
1293 add r12, r2, r12, lsr #16
1294#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1295 lsr r4, r4, #16
1296 orr r4, r4, lr, lsl #16
1297 ror r4, r4, #16
1298#else
1299 bfi r4, lr, #0, #16
1300#endif
1301#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1302 lsr r2, r2, #16
1303 orr r2, r2, r12, lsl #16
1304 ror r2, r2, #16
1305#else
1306 bfi r2, r12, #0, #16
1307#endif
1308#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1309#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1310 smulbb r12, r11, r5
1311 smulbt r5, r11, r5
1312 smultb lr, r10, r12
1313 smlabb r12, r10, lr, r12
1314 smultb lr, r10, r5
1315 smlabb lr, r10, lr, r5
1316 pkhtb r12, lr, r12, ASR #16
1317 ssub16 r5, r3, r12
1318 sadd16 r3, r3, r12
1319#else
1320#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1321 lsl r12, r5, #16
1322 asr r12, r12, #16
1323#else
1324 sbfx r12, r5, #0, #16
1325#endif
1326#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1327 lsl lr, r11, #16
1328 asr lr, lr, #16
1329#else
1330 sbfx lr, r11, #0, #16
1331#endif
1332 asr r5, r5, #16
1333 mul r12, lr, r12
1334 mul r5, lr, r5
1335#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1336 mov r10, #0xff
1337 orr r10, r10, #0xc00
1338#else
1339 mov r10, #0xcff
1340#endif
1341 mul lr, r10, r12
1342#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1343 mov r10, #0x1
1344 orr r10, r10, #0xd00
1345#else
1346 mov r10, #0xd01
1347#endif
1348#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1349 lsl lr, lr, #16
1350 asr lr, lr, #16
1351#else
1352 sbfx lr, lr, #0, #16
1353#endif
1354 mla r12, r10, lr, r12
1355#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1356 mov r10, #0xff
1357 orr r10, r10, #0xc00
1358#else
1359 mov r10, #0xcff
1360#endif
1361#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1362 lsl lr, r5, #16
1363 asr lr, lr, #16
1364#else
1365 sbfx lr, r5, #0, #16
1366#endif
1367 mul lr, r10, lr
1368#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1369 mov r10, #0x1
1370 orr r10, r10, #0xd00
1371#else
1372 mov r10, #0xd01
1373#endif
1374#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1375 lsl lr, lr, #16
1376 asr lr, lr, #16
1377#else
1378 sbfx lr, lr, #0, #16
1379#endif
1380 mla lr, r10, lr, r5
1381 sub r5, r3, lr
1382 add r3, r3, lr
1383 sub lr, r3, r12, lsr #16
1384 add r12, r3, r12, lsr #16
1385#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1386 lsr r5, r5, #16
1387 orr r5, r5, lr, lsl #16
1388 ror r5, r5, #16
1389#else
1390 bfi r5, lr, #0, #16
1391#endif
1392#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1393 lsr r3, r3, #16
1394 orr r3, r3, r12, lsl #16
1395 ror r3, r3, #16
1396#else
1397 bfi r3, r12, #0, #16
1398#endif
1399#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1400#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1401 smultb r12, r11, r8
1402 smultt r8, r11, r8
1403 smultb lr, r10, r12
1404 smlabb r12, r10, lr, r12
1405 smultb lr, r10, r8
1406 smlabb lr, r10, lr, r8
1407 pkhtb r12, lr, r12, ASR #16
1408 ssub16 r8, r6, r12
1409 sadd16 r6, r6, r12
1410#else
1411#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1412 lsl r12, r8, #16
1413 asr r12, r12, #16
1414#else
1415 sbfx r12, r8, #0, #16
1416#endif
1417#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1418 asr lr, r11, #16
1419#else
1420 sbfx lr, r11, #16, #16
1421#endif
1422 asr r8, r8, #16
1423 mul r12, lr, r12
1424 mul r8, lr, r8
1425#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1426 mov r10, #0xff
1427 orr r10, r10, #0xc00
1428#else
1429 mov r10, #0xcff
1430#endif
1431 mul lr, r10, r12
1432#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1433 mov r10, #0x1
1434 orr r10, r10, #0xd00
1435#else
1436 mov r10, #0xd01
1437#endif
1438#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1439 lsl lr, lr, #16
1440 asr lr, lr, #16
1441#else
1442 sbfx lr, lr, #0, #16
1443#endif
1444 mla r12, r10, lr, r12
1445#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1446 mov r10, #0xff
1447 orr r10, r10, #0xc00
1448#else
1449 mov r10, #0xcff
1450#endif
1451#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1452 lsl lr, r8, #16
1453 asr lr, lr, #16
1454#else
1455 sbfx lr, r8, #0, #16
1456#endif
1457 mul lr, r10, lr
1458#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1459 mov r10, #0x1
1460 orr r10, r10, #0xd00
1461#else
1462 mov r10, #0xd01
1463#endif
1464#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1465 lsl lr, lr, #16
1466 asr lr, lr, #16
1467#else
1468 sbfx lr, lr, #0, #16
1469#endif
1470 mla lr, r10, lr, r8
1471 sub r8, r6, lr
1472 add r6, r6, lr
1473 sub lr, r6, r12, lsr #16
1474 add r12, r6, r12, lsr #16
1475#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1476 lsr r8, r8, #16
1477 orr r8, r8, lr, lsl #16
1478 ror r8, r8, #16
1479#else
1480 bfi r8, lr, #0, #16
1481#endif
1482#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1483 lsr r6, r6, #16
1484 orr r6, r6, r12, lsl #16
1485 ror r6, r6, #16
1486#else
1487 bfi r6, r12, #0, #16
1488#endif
1489#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1490#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1491 smultb r12, r11, r9
1492 smultt r9, r11, r9
1493 smultb lr, r10, r12
1494 smlabb r12, r10, lr, r12
1495 smultb lr, r10, r9
1496 smlabb lr, r10, lr, r9
1497 pkhtb r12, lr, r12, ASR #16
1498 ssub16 r9, r7, r12
1499 sadd16 r7, r7, r12
1500#else
1501#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1502 lsl r12, r9, #16
1503 asr r12, r12, #16
1504#else
1505 sbfx r12, r9, #0, #16
1506#endif
1507#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1508 asr lr, r11, #16
1509#else
1510 sbfx lr, r11, #16, #16
1511#endif
1512 asr r9, r9, #16
1513 mul r12, lr, r12
1514 mul r9, lr, r9
1515#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1516 mov r10, #0xff
1517 orr r10, r10, #0xc00
1518#else
1519 mov r10, #0xcff
1520#endif
1521 mul lr, r10, r12
1522#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1523 mov r10, #0x1
1524 orr r10, r10, #0xd00
1525#else
1526 mov r10, #0xd01
1527#endif
1528#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1529 lsl lr, lr, #16
1530 asr lr, lr, #16
1531#else
1532 sbfx lr, lr, #0, #16
1533#endif
1534 mla r12, r10, lr, r12
1535#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1536 mov r10, #0xff
1537 orr r10, r10, #0xc00
1538#else
1539 mov r10, #0xcff
1540#endif
1541#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1542 lsl lr, r9, #16
1543 asr lr, lr, #16
1544#else
1545 sbfx lr, r9, #0, #16
1546#endif
1547 mul lr, r10, lr
1548#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1549 mov r10, #0x1
1550 orr r10, r10, #0xd00
1551#else
1552 mov r10, #0xd01
1553#endif
1554#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1555 lsl lr, lr, #16
1556 asr lr, lr, #16
1557#else
1558 sbfx lr, lr, #0, #16
1559#endif
1560 mla lr, r10, lr, r9
1561 sub r9, r7, lr
1562 add r7, r7, lr
1563 sub lr, r7, r12, lsr #16
1564 add r12, r7, r12, lsr #16
1565#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1566 lsr r9, r9, #16
1567 orr r9, r9, lr, lsl #16
1568 ror r9, r9, #16
1569#else
1570 bfi r9, lr, #0, #16
1571#endif
1572#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1573 lsr r7, r7, #16
1574 orr r7, r7, r12, lsl #16
1575 ror r7, r7, #16
1576#else
1577 bfi r7, r12, #0, #16
1578#endif
1579#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1580 str r2, [r0]
1581 str r3, [r0, #16]
1582 str r4, [r0, #32]
1583 str r5, [r0, #48]
1584 str r6, [r0, #64]
1585 str r7, [r0, #80]
1586 str r8, [r0, #96]
1587 str r9, [r0, #112]
1588#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1589 ldm sp, {r2, r3}
1590#else
1591 ldrd r2, r3, [sp]
1592#endif
1593 subs r2, r2, #1
1594 add r0, r0, #4
1595 bne L_mlkem_arm32_ntt_loop_4_i
1596 add r3, r3, #0x40
1597 rsbs r12, r3, #0x100
1598 add r0, r0, #0x70
1599 bne L_mlkem_arm32_ntt_loop_4_j
1600 sub r0, r0, #0x200
1601 mov r3, #0
1602L_mlkem_arm32_ntt_loop_567:
1603 add r11, r1, r3, lsr #3
1604 str r3, [sp, #4]
1605 ldrh r11, [r11, #32]
1606 ldr r2, [r0]
1607 ldr r3, [r0, #4]
1608 ldr r4, [r0, #8]
1609 ldr r5, [r0, #12]
1610 ldr r6, [r0, #16]
1611 ldr r7, [r0, #20]
1612 ldr r8, [r0, #24]
1613 ldr r9, [r0, #28]
1614#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1615 smulbb r12, r11, r6
1616 smulbt r6, r11, r6
1617 smultb lr, r10, r12
1618 smlabb r12, r10, lr, r12
1619 smultb lr, r10, r6
1620 smlabb lr, r10, lr, r6
1621 pkhtb r12, lr, r12, ASR #16
1622 ssub16 r6, r2, r12
1623 sadd16 r2, r2, r12
1624#else
1625#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1626 lsl r12, r6, #16
1627 asr r12, r12, #16
1628#else
1629 sbfx r12, r6, #0, #16
1630#endif
1631#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1632 lsl lr, r11, #16
1633 asr lr, lr, #16
1634#else
1635 sbfx lr, r11, #0, #16
1636#endif
1637 asr r6, r6, #16
1638 mul r12, lr, r12
1639 mul r6, lr, r6
1640#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1641 mov r10, #0xff
1642 orr r10, r10, #0xc00
1643#else
1644 mov r10, #0xcff
1645#endif
1646 mul lr, r10, r12
1647#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1648 mov r10, #0x1
1649 orr r10, r10, #0xd00
1650#else
1651 mov r10, #0xd01
1652#endif
1653#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1654 lsl lr, lr, #16
1655 asr lr, lr, #16
1656#else
1657 sbfx lr, lr, #0, #16
1658#endif
1659 mla r12, r10, lr, r12
1660#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1661 mov r10, #0xff
1662 orr r10, r10, #0xc00
1663#else
1664 mov r10, #0xcff
1665#endif
1666#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1667 lsl lr, r6, #16
1668 asr lr, lr, #16
1669#else
1670 sbfx lr, r6, #0, #16
1671#endif
1672 mul lr, r10, lr
1673#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1674 mov r10, #0x1
1675 orr r10, r10, #0xd00
1676#else
1677 mov r10, #0xd01
1678#endif
1679#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1680 lsl lr, lr, #16
1681 asr lr, lr, #16
1682#else
1683 sbfx lr, lr, #0, #16
1684#endif
1685 mla lr, r10, lr, r6
1686 sub r6, r2, lr
1687 add r2, r2, lr
1688 sub lr, r2, r12, lsr #16
1689 add r12, r2, r12, lsr #16
1690#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1691 lsr r6, r6, #16
1692 orr r6, r6, lr, lsl #16
1693 ror r6, r6, #16
1694#else
1695 bfi r6, lr, #0, #16
1696#endif
1697#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1698 lsr r2, r2, #16
1699 orr r2, r2, r12, lsl #16
1700 ror r2, r2, #16
1701#else
1702 bfi r2, r12, #0, #16
1703#endif
1704#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1705#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1706 smulbb r12, r11, r7
1707 smulbt r7, r11, r7
1708 smultb lr, r10, r12
1709 smlabb r12, r10, lr, r12
1710 smultb lr, r10, r7
1711 smlabb lr, r10, lr, r7
1712 pkhtb r12, lr, r12, ASR #16
1713 ssub16 r7, r3, r12
1714 sadd16 r3, r3, r12
1715#else
1716#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1717 lsl r12, r7, #16
1718 asr r12, r12, #16
1719#else
1720 sbfx r12, r7, #0, #16
1721#endif
1722#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1723 lsl lr, r11, #16
1724 asr lr, lr, #16
1725#else
1726 sbfx lr, r11, #0, #16
1727#endif
1728 asr r7, r7, #16
1729 mul r12, lr, r12
1730 mul r7, lr, r7
1731#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1732 mov r10, #0xff
1733 orr r10, r10, #0xc00
1734#else
1735 mov r10, #0xcff
1736#endif
1737 mul lr, r10, r12
1738#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1739 mov r10, #0x1
1740 orr r10, r10, #0xd00
1741#else
1742 mov r10, #0xd01
1743#endif
1744#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1745 lsl lr, lr, #16
1746 asr lr, lr, #16
1747#else
1748 sbfx lr, lr, #0, #16
1749#endif
1750 mla r12, r10, lr, r12
1751#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1752 mov r10, #0xff
1753 orr r10, r10, #0xc00
1754#else
1755 mov r10, #0xcff
1756#endif
1757#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1758 lsl lr, r7, #16
1759 asr lr, lr, #16
1760#else
1761 sbfx lr, r7, #0, #16
1762#endif
1763 mul lr, r10, lr
1764#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1765 mov r10, #0x1
1766 orr r10, r10, #0xd00
1767#else
1768 mov r10, #0xd01
1769#endif
1770#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1771 lsl lr, lr, #16
1772 asr lr, lr, #16
1773#else
1774 sbfx lr, lr, #0, #16
1775#endif
1776 mla lr, r10, lr, r7
1777 sub r7, r3, lr
1778 add r3, r3, lr
1779 sub lr, r3, r12, lsr #16
1780 add r12, r3, r12, lsr #16
1781#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1782 lsr r7, r7, #16
1783 orr r7, r7, lr, lsl #16
1784 ror r7, r7, #16
1785#else
1786 bfi r7, lr, #0, #16
1787#endif
1788#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1789 lsr r3, r3, #16
1790 orr r3, r3, r12, lsl #16
1791 ror r3, r3, #16
1792#else
1793 bfi r3, r12, #0, #16
1794#endif
1795#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1796#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1797 smulbb r12, r11, r8
1798 smulbt r8, r11, r8
1799 smultb lr, r10, r12
1800 smlabb r12, r10, lr, r12
1801 smultb lr, r10, r8
1802 smlabb lr, r10, lr, r8
1803 pkhtb r12, lr, r12, ASR #16
1804 ssub16 r8, r4, r12
1805 sadd16 r4, r4, r12
1806#else
1807#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1808 lsl r12, r8, #16
1809 asr r12, r12, #16
1810#else
1811 sbfx r12, r8, #0, #16
1812#endif
1813#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1814 lsl lr, r11, #16
1815 asr lr, lr, #16
1816#else
1817 sbfx lr, r11, #0, #16
1818#endif
1819 asr r8, r8, #16
1820 mul r12, lr, r12
1821 mul r8, lr, r8
1822#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1823 mov r10, #0xff
1824 orr r10, r10, #0xc00
1825#else
1826 mov r10, #0xcff
1827#endif
1828 mul lr, r10, r12
1829#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1830 mov r10, #0x1
1831 orr r10, r10, #0xd00
1832#else
1833 mov r10, #0xd01
1834#endif
1835#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1836 lsl lr, lr, #16
1837 asr lr, lr, #16
1838#else
1839 sbfx lr, lr, #0, #16
1840#endif
1841 mla r12, r10, lr, r12
1842#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1843 mov r10, #0xff
1844 orr r10, r10, #0xc00
1845#else
1846 mov r10, #0xcff
1847#endif
1848#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1849 lsl lr, r8, #16
1850 asr lr, lr, #16
1851#else
1852 sbfx lr, r8, #0, #16
1853#endif
1854 mul lr, r10, lr
1855#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1856 mov r10, #0x1
1857 orr r10, r10, #0xd00
1858#else
1859 mov r10, #0xd01
1860#endif
1861#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1862 lsl lr, lr, #16
1863 asr lr, lr, #16
1864#else
1865 sbfx lr, lr, #0, #16
1866#endif
1867 mla lr, r10, lr, r8
1868 sub r8, r4, lr
1869 add r4, r4, lr
1870 sub lr, r4, r12, lsr #16
1871 add r12, r4, r12, lsr #16
1872#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1873 lsr r8, r8, #16
1874 orr r8, r8, lr, lsl #16
1875 ror r8, r8, #16
1876#else
1877 bfi r8, lr, #0, #16
1878#endif
1879#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1880 lsr r4, r4, #16
1881 orr r4, r4, r12, lsl #16
1882 ror r4, r4, #16
1883#else
1884 bfi r4, r12, #0, #16
1885#endif
1886#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1887#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1888 smulbb r12, r11, r9
1889 smulbt r9, r11, r9
1890 smultb lr, r10, r12
1891 smlabb r12, r10, lr, r12
1892 smultb lr, r10, r9
1893 smlabb lr, r10, lr, r9
1894 pkhtb r12, lr, r12, ASR #16
1895 ssub16 r9, r5, r12
1896 sadd16 r5, r5, r12
1897#else
1898#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1899 lsl r12, r9, #16
1900 asr r12, r12, #16
1901#else
1902 sbfx r12, r9, #0, #16
1903#endif
1904#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1905 lsl lr, r11, #16
1906 asr lr, lr, #16
1907#else
1908 sbfx lr, r11, #0, #16
1909#endif
1910 asr r9, r9, #16
1911 mul r12, lr, r12
1912 mul r9, lr, r9
1913#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1914 mov r10, #0xff
1915 orr r10, r10, #0xc00
1916#else
1917 mov r10, #0xcff
1918#endif
1919 mul lr, r10, r12
1920#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1921 mov r10, #0x1
1922 orr r10, r10, #0xd00
1923#else
1924 mov r10, #0xd01
1925#endif
1926#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1927 lsl lr, lr, #16
1928 asr lr, lr, #16
1929#else
1930 sbfx lr, lr, #0, #16
1931#endif
1932 mla r12, r10, lr, r12
1933#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1934 mov r10, #0xff
1935 orr r10, r10, #0xc00
1936#else
1937 mov r10, #0xcff
1938#endif
1939#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1940 lsl lr, r9, #16
1941 asr lr, lr, #16
1942#else
1943 sbfx lr, r9, #0, #16
1944#endif
1945 mul lr, r10, lr
1946#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1947 mov r10, #0x1
1948 orr r10, r10, #0xd00
1949#else
1950 mov r10, #0xd01
1951#endif
1952#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1953 lsl lr, lr, #16
1954 asr lr, lr, #16
1955#else
1956 sbfx lr, lr, #0, #16
1957#endif
1958 mla lr, r10, lr, r9
1959 sub r9, r5, lr
1960 add r5, r5, lr
1961 sub lr, r5, r12, lsr #16
1962 add r12, r5, r12, lsr #16
1963#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1964 lsr r9, r9, #16
1965 orr r9, r9, lr, lsl #16
1966 ror r9, r9, #16
1967#else
1968 bfi r9, lr, #0, #16
1969#endif
1970#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1971 lsr r5, r5, #16
1972 orr r5, r5, r12, lsl #16
1973 ror r5, r5, #16
1974#else
1975 bfi r5, r12, #0, #16
1976#endif
1977#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
1978 ldr r11, [sp, #4]
1979 add r11, r1, r11, lsr #2
1980 ldr r11, [r11, #64]
1981#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
1982 smulbb r12, r11, r4
1983 smulbt r4, r11, r4
1984 smultb lr, r10, r12
1985 smlabb r12, r10, lr, r12
1986 smultb lr, r10, r4
1987 smlabb lr, r10, lr, r4
1988 pkhtb r12, lr, r12, ASR #16
1989 ssub16 r4, r2, r12
1990 sadd16 r2, r2, r12
1991#else
1992#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1993 lsl r12, r4, #16
1994 asr r12, r12, #16
1995#else
1996 sbfx r12, r4, #0, #16
1997#endif
1998#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1999 lsl lr, r11, #16
2000 asr lr, lr, #16
2001#else
2002 sbfx lr, r11, #0, #16
2003#endif
2004 asr r4, r4, #16
2005 mul r12, lr, r12
2006 mul r4, lr, r4
2007#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2008 mov r10, #0xff
2009 orr r10, r10, #0xc00
2010#else
2011 mov r10, #0xcff
2012#endif
2013 mul lr, r10, r12
2014#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2015 mov r10, #0x1
2016 orr r10, r10, #0xd00
2017#else
2018 mov r10, #0xd01
2019#endif
2020#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2021 lsl lr, lr, #16
2022 asr lr, lr, #16
2023#else
2024 sbfx lr, lr, #0, #16
2025#endif
2026 mla r12, r10, lr, r12
2027#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2028 mov r10, #0xff
2029 orr r10, r10, #0xc00
2030#else
2031 mov r10, #0xcff
2032#endif
2033#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2034 lsl lr, r4, #16
2035 asr lr, lr, #16
2036#else
2037 sbfx lr, r4, #0, #16
2038#endif
2039 mul lr, r10, lr
2040#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2041 mov r10, #0x1
2042 orr r10, r10, #0xd00
2043#else
2044 mov r10, #0xd01
2045#endif
2046#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2047 lsl lr, lr, #16
2048 asr lr, lr, #16
2049#else
2050 sbfx lr, lr, #0, #16
2051#endif
2052 mla lr, r10, lr, r4
2053 sub r4, r2, lr
2054 add r2, r2, lr
2055 sub lr, r2, r12, lsr #16
2056 add r12, r2, r12, lsr #16
2057#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2058 lsr r4, r4, #16
2059 orr r4, r4, lr, lsl #16
2060 ror r4, r4, #16
2061#else
2062 bfi r4, lr, #0, #16
2063#endif
2064#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2065 lsr r2, r2, #16
2066 orr r2, r2, r12, lsl #16
2067 ror r2, r2, #16
2068#else
2069 bfi r2, r12, #0, #16
2070#endif
2071#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2072#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2073 smulbb r12, r11, r5
2074 smulbt r5, r11, r5
2075 smultb lr, r10, r12
2076 smlabb r12, r10, lr, r12
2077 smultb lr, r10, r5
2078 smlabb lr, r10, lr, r5
2079 pkhtb r12, lr, r12, ASR #16
2080 ssub16 r5, r3, r12
2081 sadd16 r3, r3, r12
2082#else
2083#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2084 lsl r12, r5, #16
2085 asr r12, r12, #16
2086#else
2087 sbfx r12, r5, #0, #16
2088#endif
2089#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2090 lsl lr, r11, #16
2091 asr lr, lr, #16
2092#else
2093 sbfx lr, r11, #0, #16
2094#endif
2095 asr r5, r5, #16
2096 mul r12, lr, r12
2097 mul r5, lr, r5
2098#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2099 mov r10, #0xff
2100 orr r10, r10, #0xc00
2101#else
2102 mov r10, #0xcff
2103#endif
2104 mul lr, r10, r12
2105#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2106 mov r10, #0x1
2107 orr r10, r10, #0xd00
2108#else
2109 mov r10, #0xd01
2110#endif
2111#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2112 lsl lr, lr, #16
2113 asr lr, lr, #16
2114#else
2115 sbfx lr, lr, #0, #16
2116#endif
2117 mla r12, r10, lr, r12
2118#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2119 mov r10, #0xff
2120 orr r10, r10, #0xc00
2121#else
2122 mov r10, #0xcff
2123#endif
2124#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2125 lsl lr, r5, #16
2126 asr lr, lr, #16
2127#else
2128 sbfx lr, r5, #0, #16
2129#endif
2130 mul lr, r10, lr
2131#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2132 mov r10, #0x1
2133 orr r10, r10, #0xd00
2134#else
2135 mov r10, #0xd01
2136#endif
2137#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2138 lsl lr, lr, #16
2139 asr lr, lr, #16
2140#else
2141 sbfx lr, lr, #0, #16
2142#endif
2143 mla lr, r10, lr, r5
2144 sub r5, r3, lr
2145 add r3, r3, lr
2146 sub lr, r3, r12, lsr #16
2147 add r12, r3, r12, lsr #16
2148#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2149 lsr r5, r5, #16
2150 orr r5, r5, lr, lsl #16
2151 ror r5, r5, #16
2152#else
2153 bfi r5, lr, #0, #16
2154#endif
2155#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2156 lsr r3, r3, #16
2157 orr r3, r3, r12, lsl #16
2158 ror r3, r3, #16
2159#else
2160 bfi r3, r12, #0, #16
2161#endif
2162#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2163#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2164 smultb r12, r11, r8
2165 smultt r8, r11, r8
2166 smultb lr, r10, r12
2167 smlabb r12, r10, lr, r12
2168 smultb lr, r10, r8
2169 smlabb lr, r10, lr, r8
2170 pkhtb r12, lr, r12, ASR #16
2171 ssub16 r8, r6, r12
2172 sadd16 r6, r6, r12
2173#else
2174#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2175 lsl r12, r8, #16
2176 asr r12, r12, #16
2177#else
2178 sbfx r12, r8, #0, #16
2179#endif
2180#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2181 asr lr, r11, #16
2182#else
2183 sbfx lr, r11, #16, #16
2184#endif
2185 asr r8, r8, #16
2186 mul r12, lr, r12
2187 mul r8, lr, r8
2188#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2189 mov r10, #0xff
2190 orr r10, r10, #0xc00
2191#else
2192 mov r10, #0xcff
2193#endif
2194 mul lr, r10, r12
2195#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2196 mov r10, #0x1
2197 orr r10, r10, #0xd00
2198#else
2199 mov r10, #0xd01
2200#endif
2201#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2202 lsl lr, lr, #16
2203 asr lr, lr, #16
2204#else
2205 sbfx lr, lr, #0, #16
2206#endif
2207 mla r12, r10, lr, r12
2208#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2209 mov r10, #0xff
2210 orr r10, r10, #0xc00
2211#else
2212 mov r10, #0xcff
2213#endif
2214#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2215 lsl lr, r8, #16
2216 asr lr, lr, #16
2217#else
2218 sbfx lr, r8, #0, #16
2219#endif
2220 mul lr, r10, lr
2221#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2222 mov r10, #0x1
2223 orr r10, r10, #0xd00
2224#else
2225 mov r10, #0xd01
2226#endif
2227#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2228 lsl lr, lr, #16
2229 asr lr, lr, #16
2230#else
2231 sbfx lr, lr, #0, #16
2232#endif
2233 mla lr, r10, lr, r8
2234 sub r8, r6, lr
2235 add r6, r6, lr
2236 sub lr, r6, r12, lsr #16
2237 add r12, r6, r12, lsr #16
2238#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2239 lsr r8, r8, #16
2240 orr r8, r8, lr, lsl #16
2241 ror r8, r8, #16
2242#else
2243 bfi r8, lr, #0, #16
2244#endif
2245#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2246 lsr r6, r6, #16
2247 orr r6, r6, r12, lsl #16
2248 ror r6, r6, #16
2249#else
2250 bfi r6, r12, #0, #16
2251#endif
2252#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2253#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2254 smultb r12, r11, r9
2255 smultt r9, r11, r9
2256 smultb lr, r10, r12
2257 smlabb r12, r10, lr, r12
2258 smultb lr, r10, r9
2259 smlabb lr, r10, lr, r9
2260 pkhtb r12, lr, r12, ASR #16
2261 ssub16 r9, r7, r12
2262 sadd16 r7, r7, r12
2263#else
2264#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2265 lsl r12, r9, #16
2266 asr r12, r12, #16
2267#else
2268 sbfx r12, r9, #0, #16
2269#endif
2270#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2271 asr lr, r11, #16
2272#else
2273 sbfx lr, r11, #16, #16
2274#endif
2275 asr r9, r9, #16
2276 mul r12, lr, r12
2277 mul r9, lr, r9
2278#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2279 mov r10, #0xff
2280 orr r10, r10, #0xc00
2281#else
2282 mov r10, #0xcff
2283#endif
2284 mul lr, r10, r12
2285#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2286 mov r10, #0x1
2287 orr r10, r10, #0xd00
2288#else
2289 mov r10, #0xd01
2290#endif
2291#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2292 lsl lr, lr, #16
2293 asr lr, lr, #16
2294#else
2295 sbfx lr, lr, #0, #16
2296#endif
2297 mla r12, r10, lr, r12
2298#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2299 mov r10, #0xff
2300 orr r10, r10, #0xc00
2301#else
2302 mov r10, #0xcff
2303#endif
2304#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2305 lsl lr, r9, #16
2306 asr lr, lr, #16
2307#else
2308 sbfx lr, r9, #0, #16
2309#endif
2310 mul lr, r10, lr
2311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2312 mov r10, #0x1
2313 orr r10, r10, #0xd00
2314#else
2315 mov r10, #0xd01
2316#endif
2317#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2318 lsl lr, lr, #16
2319 asr lr, lr, #16
2320#else
2321 sbfx lr, lr, #0, #16
2322#endif
2323 mla lr, r10, lr, r9
2324 sub r9, r7, lr
2325 add r7, r7, lr
2326 sub lr, r7, r12, lsr #16
2327 add r12, r7, r12, lsr #16
2328#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2329 lsr r9, r9, #16
2330 orr r9, r9, lr, lsl #16
2331 ror r9, r9, #16
2332#else
2333 bfi r9, lr, #0, #16
2334#endif
2335#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2336 lsr r7, r7, #16
2337 orr r7, r7, r12, lsl #16
2338 ror r7, r7, #16
2339#else
2340 bfi r7, r12, #0, #16
2341#endif
2342#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2343 ldr r11, [sp, #4]
2344 add r11, r1, r11, lsr #1
2345 ldr r11, [r11, #128]
2346#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2347 smulbb r12, r11, r3
2348 smulbt r3, r11, r3
2349 smultb lr, r10, r12
2350 smlabb r12, r10, lr, r12
2351 smultb lr, r10, r3
2352 smlabb lr, r10, lr, r3
2353 pkhtb r12, lr, r12, ASR #16
2354 ssub16 r3, r2, r12
2355 sadd16 r2, r2, r12
2356#else
2357#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2358 lsl r12, r3, #16
2359 asr r12, r12, #16
2360#else
2361 sbfx r12, r3, #0, #16
2362#endif
2363#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2364 lsl lr, r11, #16
2365 asr lr, lr, #16
2366#else
2367 sbfx lr, r11, #0, #16
2368#endif
2369 asr r3, r3, #16
2370 mul r12, lr, r12
2371 mul r3, lr, r3
2372#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2373 mov r10, #0xff
2374 orr r10, r10, #0xc00
2375#else
2376 mov r10, #0xcff
2377#endif
2378 mul lr, r10, r12
2379#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2380 mov r10, #0x1
2381 orr r10, r10, #0xd00
2382#else
2383 mov r10, #0xd01
2384#endif
2385#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2386 lsl lr, lr, #16
2387 asr lr, lr, #16
2388#else
2389 sbfx lr, lr, #0, #16
2390#endif
2391 mla r12, r10, lr, r12
2392#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2393 mov r10, #0xff
2394 orr r10, r10, #0xc00
2395#else
2396 mov r10, #0xcff
2397#endif
2398#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2399 lsl lr, r3, #16
2400 asr lr, lr, #16
2401#else
2402 sbfx lr, r3, #0, #16
2403#endif
2404 mul lr, r10, lr
2405#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2406 mov r10, #0x1
2407 orr r10, r10, #0xd00
2408#else
2409 mov r10, #0xd01
2410#endif
2411#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2412 lsl lr, lr, #16
2413 asr lr, lr, #16
2414#else
2415 sbfx lr, lr, #0, #16
2416#endif
2417 mla lr, r10, lr, r3
2418 sub r3, r2, lr
2419 add r2, r2, lr
2420 sub lr, r2, r12, lsr #16
2421 add r12, r2, r12, lsr #16
2422#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2423 lsr r3, r3, #16
2424 orr r3, r3, lr, lsl #16
2425 ror r3, r3, #16
2426#else
2427 bfi r3, lr, #0, #16
2428#endif
2429#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2430 lsr r2, r2, #16
2431 orr r2, r2, r12, lsl #16
2432 ror r2, r2, #16
2433#else
2434 bfi r2, r12, #0, #16
2435#endif
2436#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2437#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2438 smultb r12, r11, r5
2439 smultt r5, r11, r5
2440 smultb lr, r10, r12
2441 smlabb r12, r10, lr, r12
2442 smultb lr, r10, r5
2443 smlabb lr, r10, lr, r5
2444 pkhtb r12, lr, r12, ASR #16
2445 ssub16 r5, r4, r12
2446 sadd16 r4, r4, r12
2447#else
2448#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2449 lsl r12, r5, #16
2450 asr r12, r12, #16
2451#else
2452 sbfx r12, r5, #0, #16
2453#endif
2454#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2455 asr lr, r11, #16
2456#else
2457 sbfx lr, r11, #16, #16
2458#endif
2459 asr r5, r5, #16
2460 mul r12, lr, r12
2461 mul r5, lr, r5
2462#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2463 mov r10, #0xff
2464 orr r10, r10, #0xc00
2465#else
2466 mov r10, #0xcff
2467#endif
2468 mul lr, r10, r12
2469#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2470 mov r10, #0x1
2471 orr r10, r10, #0xd00
2472#else
2473 mov r10, #0xd01
2474#endif
2475#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2476 lsl lr, lr, #16
2477 asr lr, lr, #16
2478#else
2479 sbfx lr, lr, #0, #16
2480#endif
2481 mla r12, r10, lr, r12
2482#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2483 mov r10, #0xff
2484 orr r10, r10, #0xc00
2485#else
2486 mov r10, #0xcff
2487#endif
2488#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2489 lsl lr, r5, #16
2490 asr lr, lr, #16
2491#else
2492 sbfx lr, r5, #0, #16
2493#endif
2494 mul lr, r10, lr
2495#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2496 mov r10, #0x1
2497 orr r10, r10, #0xd00
2498#else
2499 mov r10, #0xd01
2500#endif
2501#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2502 lsl lr, lr, #16
2503 asr lr, lr, #16
2504#else
2505 sbfx lr, lr, #0, #16
2506#endif
2507 mla lr, r10, lr, r5
2508 sub r5, r4, lr
2509 add r4, r4, lr
2510 sub lr, r4, r12, lsr #16
2511 add r12, r4, r12, lsr #16
2512#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2513 lsr r5, r5, #16
2514 orr r5, r5, lr, lsl #16
2515 ror r5, r5, #16
2516#else
2517 bfi r5, lr, #0, #16
2518#endif
2519#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2520 lsr r4, r4, #16
2521 orr r4, r4, r12, lsl #16
2522 ror r4, r4, #16
2523#else
2524 bfi r4, r12, #0, #16
2525#endif
2526#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2527 ldr r11, [sp, #4]
2528 add r11, r1, r11, lsr #1
2529 ldr r11, [r11, #132]
2530#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2531 smulbb r12, r11, r7
2532 smulbt r7, r11, r7
2533 smultb lr, r10, r12
2534 smlabb r12, r10, lr, r12
2535 smultb lr, r10, r7
2536 smlabb lr, r10, lr, r7
2537 pkhtb r12, lr, r12, ASR #16
2538 ssub16 r7, r6, r12
2539 sadd16 r6, r6, r12
2540#else
2541#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2542 lsl r12, r7, #16
2543 asr r12, r12, #16
2544#else
2545 sbfx r12, r7, #0, #16
2546#endif
2547#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2548 lsl lr, r11, #16
2549 asr lr, lr, #16
2550#else
2551 sbfx lr, r11, #0, #16
2552#endif
2553 asr r7, r7, #16
2554 mul r12, lr, r12
2555 mul r7, lr, r7
2556#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2557 mov r10, #0xff
2558 orr r10, r10, #0xc00
2559#else
2560 mov r10, #0xcff
2561#endif
2562 mul lr, r10, r12
2563#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2564 mov r10, #0x1
2565 orr r10, r10, #0xd00
2566#else
2567 mov r10, #0xd01
2568#endif
2569#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2570 lsl lr, lr, #16
2571 asr lr, lr, #16
2572#else
2573 sbfx lr, lr, #0, #16
2574#endif
2575 mla r12, r10, lr, r12
2576#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2577 mov r10, #0xff
2578 orr r10, r10, #0xc00
2579#else
2580 mov r10, #0xcff
2581#endif
2582#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2583 lsl lr, r7, #16
2584 asr lr, lr, #16
2585#else
2586 sbfx lr, r7, #0, #16
2587#endif
2588 mul lr, r10, lr
2589#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2590 mov r10, #0x1
2591 orr r10, r10, #0xd00
2592#else
2593 mov r10, #0xd01
2594#endif
2595#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2596 lsl lr, lr, #16
2597 asr lr, lr, #16
2598#else
2599 sbfx lr, lr, #0, #16
2600#endif
2601 mla lr, r10, lr, r7
2602 sub r7, r6, lr
2603 add r6, r6, lr
2604 sub lr, r6, r12, lsr #16
2605 add r12, r6, r12, lsr #16
2606#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2607 lsr r7, r7, #16
2608 orr r7, r7, lr, lsl #16
2609 ror r7, r7, #16
2610#else
2611 bfi r7, lr, #0, #16
2612#endif
2613#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2614 lsr r6, r6, #16
2615 orr r6, r6, r12, lsl #16
2616 ror r6, r6, #16
2617#else
2618 bfi r6, r12, #0, #16
2619#endif
2620#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2621#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2622 smultb r12, r11, r9
2623 smultt r9, r11, r9
2624 smultb lr, r10, r12
2625 smlabb r12, r10, lr, r12
2626 smultb lr, r10, r9
2627 smlabb lr, r10, lr, r9
2628 pkhtb r12, lr, r12, ASR #16
2629 ssub16 r9, r8, r12
2630 sadd16 r8, r8, r12
2631#else
2632#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2633 lsl r12, r9, #16
2634 asr r12, r12, #16
2635#else
2636 sbfx r12, r9, #0, #16
2637#endif
2638#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2639 asr lr, r11, #16
2640#else
2641 sbfx lr, r11, #16, #16
2642#endif
2643 asr r9, r9, #16
2644 mul r12, lr, r12
2645 mul r9, lr, r9
2646#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2647 mov r10, #0xff
2648 orr r10, r10, #0xc00
2649#else
2650 mov r10, #0xcff
2651#endif
2652 mul lr, r10, r12
2653#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2654 mov r10, #0x1
2655 orr r10, r10, #0xd00
2656#else
2657 mov r10, #0xd01
2658#endif
2659#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2660 lsl lr, lr, #16
2661 asr lr, lr, #16
2662#else
2663 sbfx lr, lr, #0, #16
2664#endif
2665 mla r12, r10, lr, r12
2666#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2667 mov r10, #0xff
2668 orr r10, r10, #0xc00
2669#else
2670 mov r10, #0xcff
2671#endif
2672#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2673 lsl lr, r9, #16
2674 asr lr, lr, #16
2675#else
2676 sbfx lr, r9, #0, #16
2677#endif
2678 mul lr, r10, lr
2679#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2680 mov r10, #0x1
2681 orr r10, r10, #0xd00
2682#else
2683 mov r10, #0xd01
2684#endif
2685#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2686 lsl lr, lr, #16
2687 asr lr, lr, #16
2688#else
2689 sbfx lr, lr, #0, #16
2690#endif
2691 mla lr, r10, lr, r9
2692 sub r9, r8, lr
2693 add r8, r8, lr
2694 sub lr, r8, r12, lsr #16
2695 add r12, r8, r12, lsr #16
2696#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2697 lsr r9, r9, #16
2698 orr r9, r9, lr, lsl #16
2699 ror r9, r9, #16
2700#else
2701 bfi r9, lr, #0, #16
2702#endif
2703#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2704 lsr r8, r8, #16
2705 orr r8, r8, r12, lsl #16
2706 ror r8, r8, #16
2707#else
2708 bfi r8, r12, #0, #16
2709#endif
2710#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2711#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2712#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2713 mov r11, #0xc0
2714 orr r11, r11, #0xaf00
2715#else
2716 mov r11, #0xafc0
2717#endif
2718#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2719 orr r11, r11, #0x130000
2720#else
2721 movt r11, #0x13
2722#endif
2723#else
2724#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2725 mov r11, #0xbf
2726 orr r11, r11, #0x4e00
2727#else
2728 mov r11, #0x4ebf
2729#endif
2730#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2731 mov r10, #0x1
2732 orr r10, r10, #0xd00
2733#else
2734 mov r10, #0xd01
2735#endif
2736#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2737#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2738 smulwb r12, r11, r2
2739 smulwt lr, r11, r2
2740 smulbt r12, r10, r12
2741 smulbt lr, r10, lr
2742 pkhbt r12, r12, lr, LSL #16
2743 ssub16 r2, r2, r12
2744#else
2745#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2746 lsl r12, r2, #16
2747 asr r12, r12, #16
2748#else
2749 sbfx r12, r2, #0, #16
2750#endif
2751#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2752 asr lr, r2, #16
2753#else
2754 sbfx lr, r2, #16, #16
2755#endif
2756 mul r12, r11, r12
2757 mul lr, r11, lr
2758 asr r12, r12, #26
2759 asr lr, lr, #26
2760 mul r12, r10, r12
2761 mul lr, r10, lr
2762 sub lr, r2, lr, lsl #16
2763 sub r2, r2, r12
2764 lsr lr, lr, #16
2765#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2766 bic r2, r2, #0xff0000
2767 bic r2, r2, #0xff000000
2768 orr r2, r2, lr, lsl #16
2769#else
2770 bfi r2, lr, #16, #16
2771#endif
2772#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2773#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2774 smulwb r12, r11, r3
2775 smulwt lr, r11, r3
2776 smulbt r12, r10, r12
2777 smulbt lr, r10, lr
2778 pkhbt r12, r12, lr, LSL #16
2779 ssub16 r3, r3, r12
2780#else
2781#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2782 lsl r12, r3, #16
2783 asr r12, r12, #16
2784#else
2785 sbfx r12, r3, #0, #16
2786#endif
2787#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2788 asr lr, r3, #16
2789#else
2790 sbfx lr, r3, #16, #16
2791#endif
2792 mul r12, r11, r12
2793 mul lr, r11, lr
2794 asr r12, r12, #26
2795 asr lr, lr, #26
2796 mul r12, r10, r12
2797 mul lr, r10, lr
2798 sub lr, r3, lr, lsl #16
2799 sub r3, r3, r12
2800 lsr lr, lr, #16
2801#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2802 bic r3, r3, #0xff0000
2803 bic r3, r3, #0xff000000
2804 orr r3, r3, lr, lsl #16
2805#else
2806 bfi r3, lr, #16, #16
2807#endif
2808#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2809#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2810 smulwb r12, r11, r4
2811 smulwt lr, r11, r4
2812 smulbt r12, r10, r12
2813 smulbt lr, r10, lr
2814 pkhbt r12, r12, lr, LSL #16
2815 ssub16 r4, r4, r12
2816#else
2817#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2818 lsl r12, r4, #16
2819 asr r12, r12, #16
2820#else
2821 sbfx r12, r4, #0, #16
2822#endif
2823#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2824 asr lr, r4, #16
2825#else
2826 sbfx lr, r4, #16, #16
2827#endif
2828 mul r12, r11, r12
2829 mul lr, r11, lr
2830 asr r12, r12, #26
2831 asr lr, lr, #26
2832 mul r12, r10, r12
2833 mul lr, r10, lr
2834 sub lr, r4, lr, lsl #16
2835 sub r4, r4, r12
2836 lsr lr, lr, #16
2837#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2838 bic r4, r4, #0xff0000
2839 bic r4, r4, #0xff000000
2840 orr r4, r4, lr, lsl #16
2841#else
2842 bfi r4, lr, #16, #16
2843#endif
2844#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2845#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2846 smulwb r12, r11, r5
2847 smulwt lr, r11, r5
2848 smulbt r12, r10, r12
2849 smulbt lr, r10, lr
2850 pkhbt r12, r12, lr, LSL #16
2851 ssub16 r5, r5, r12
2852#else
2853#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2854 lsl r12, r5, #16
2855 asr r12, r12, #16
2856#else
2857 sbfx r12, r5, #0, #16
2858#endif
2859#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2860 asr lr, r5, #16
2861#else
2862 sbfx lr, r5, #16, #16
2863#endif
2864 mul r12, r11, r12
2865 mul lr, r11, lr
2866 asr r12, r12, #26
2867 asr lr, lr, #26
2868 mul r12, r10, r12
2869 mul lr, r10, lr
2870 sub lr, r5, lr, lsl #16
2871 sub r5, r5, r12
2872 lsr lr, lr, #16
2873#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2874 bic r5, r5, #0xff0000
2875 bic r5, r5, #0xff000000
2876 orr r5, r5, lr, lsl #16
2877#else
2878 bfi r5, lr, #16, #16
2879#endif
2880#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2881#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2882 smulwb r12, r11, r6
2883 smulwt lr, r11, r6
2884 smulbt r12, r10, r12
2885 smulbt lr, r10, lr
2886 pkhbt r12, r12, lr, LSL #16
2887 ssub16 r6, r6, r12
2888#else
2889#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2890 lsl r12, r6, #16
2891 asr r12, r12, #16
2892#else
2893 sbfx r12, r6, #0, #16
2894#endif
2895#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2896 asr lr, r6, #16
2897#else
2898 sbfx lr, r6, #16, #16
2899#endif
2900 mul r12, r11, r12
2901 mul lr, r11, lr
2902 asr r12, r12, #26
2903 asr lr, lr, #26
2904 mul r12, r10, r12
2905 mul lr, r10, lr
2906 sub lr, r6, lr, lsl #16
2907 sub r6, r6, r12
2908 lsr lr, lr, #16
2909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2910 bic r6, r6, #0xff0000
2911 bic r6, r6, #0xff000000
2912 orr r6, r6, lr, lsl #16
2913#else
2914 bfi r6, lr, #16, #16
2915#endif
2916#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2917#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2918 smulwb r12, r11, r7
2919 smulwt lr, r11, r7
2920 smulbt r12, r10, r12
2921 smulbt lr, r10, lr
2922 pkhbt r12, r12, lr, LSL #16
2923 ssub16 r7, r7, r12
2924#else
2925#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2926 lsl r12, r7, #16
2927 asr r12, r12, #16
2928#else
2929 sbfx r12, r7, #0, #16
2930#endif
2931#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2932 asr lr, r7, #16
2933#else
2934 sbfx lr, r7, #16, #16
2935#endif
2936 mul r12, r11, r12
2937 mul lr, r11, lr
2938 asr r12, r12, #26
2939 asr lr, lr, #26
2940 mul r12, r10, r12
2941 mul lr, r10, lr
2942 sub lr, r7, lr, lsl #16
2943 sub r7, r7, r12
2944 lsr lr, lr, #16
2945#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2946 bic r7, r7, #0xff0000
2947 bic r7, r7, #0xff000000
2948 orr r7, r7, lr, lsl #16
2949#else
2950 bfi r7, lr, #16, #16
2951#endif
2952#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2953#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2954 smulwb r12, r11, r8
2955 smulwt lr, r11, r8
2956 smulbt r12, r10, r12
2957 smulbt lr, r10, lr
2958 pkhbt r12, r12, lr, LSL #16
2959 ssub16 r8, r8, r12
2960#else
2961#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2962 lsl r12, r8, #16
2963 asr r12, r12, #16
2964#else
2965 sbfx r12, r8, #0, #16
2966#endif
2967#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2968 asr lr, r8, #16
2969#else
2970 sbfx lr, r8, #16, #16
2971#endif
2972 mul r12, r11, r12
2973 mul lr, r11, lr
2974 asr r12, r12, #26
2975 asr lr, lr, #26
2976 mul r12, r10, r12
2977 mul lr, r10, lr
2978 sub lr, r8, lr, lsl #16
2979 sub r8, r8, r12
2980 lsr lr, lr, #16
2981#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2982 bic r8, r8, #0xff0000
2983 bic r8, r8, #0xff000000
2984 orr r8, r8, lr, lsl #16
2985#else
2986 bfi r8, lr, #16, #16
2987#endif
2988#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
2989#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
2990 smulwb r12, r11, r9
2991 smulwt lr, r11, r9
2992 smulbt r12, r10, r12
2993 smulbt lr, r10, lr
2994 pkhbt r12, r12, lr, LSL #16
2995 ssub16 r9, r9, r12
2996#else
2997#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2998 lsl r12, r9, #16
2999 asr r12, r12, #16
3000#else
3001 sbfx r12, r9, #0, #16
3002#endif
3003#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3004 asr lr, r9, #16
3005#else
3006 sbfx lr, r9, #16, #16
3007#endif
3008 mul r12, r11, r12
3009 mul lr, r11, lr
3010 asr r12, r12, #26
3011 asr lr, lr, #26
3012 mul r12, r10, r12
3013 mul lr, r10, lr
3014 sub lr, r9, lr, lsl #16
3015 sub r9, r9, r12
3016 lsr lr, lr, #16
3017#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3018 bic r9, r9, #0xff0000
3019 bic r9, r9, #0xff000000
3020 orr r9, r9, lr, lsl #16
3021#else
3022 bfi r9, lr, #16, #16
3023#endif
3024#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3026#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3027 mov r10, #0x1
3028 orr r10, r10, #0xd00
3029#else
3030 mov r10, #0xd01
3031#endif
3032#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3033 orr r10, r10, #0xc000000
3034 orr r10, r10, #0xff0000
3035#else
3036 movt r10, #0xcff
3037#endif
3038#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3039 str r2, [r0]
3040 str r3, [r0, #4]
3041 str r4, [r0, #8]
3042 str r5, [r0, #12]
3043 str r6, [r0, #16]
3044 str r7, [r0, #20]
3045 str r8, [r0, #24]
3046 str r9, [r0, #28]
3047 ldr r3, [sp, #4]
3048 add r3, r3, #16
3049 rsbs r12, r3, #0x100
3050 add r0, r0, #32
3051 bne L_mlkem_arm32_ntt_loop_567
3052 add sp, sp, #8
3053 pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
3054 .size mlkem_arm32_ntt,.-mlkem_arm32_ntt
3055#ifndef __APPLE__
3056 .text
3057 .type L_mlkem_invntt_zetas_inv, %object
3058 .size L_mlkem_invntt_zetas_inv, 256
3059#else
3060 .section __DATA,__data
3061#endif /* __APPLE__ */
3062 # 4-byte aligned, 32-bit aligned
3063#ifndef __APPLE__
3064 .align 2
3065#else
3066 .p2align 2
3067#endif /* __APPLE__ */
3068L_mlkem_invntt_zetas_inv:
3069 .short 0x06a5,0x070f,0x05b4,0x0943,0x0922,0x091d,0x0134,0x006c
3070 .short 0x0b23,0x0366,0x0356,0x05e6,0x09e7,0x04fe,0x05fa,0x04a1
3071 .short 0x067b,0x04a3,0x0c25,0x036a,0x0537,0x083f,0x0088,0x04bf
3072 .short 0x0b81,0x05b9,0x0505,0x07d7,0x0a9f,0x0aa6,0x08b8,0x09d0
3073 .short 0x004b,0x009c,0x0bb8,0x0b5f,0x0ba4,0x0368,0x0a7d,0x0636
3074 .short 0x08a2,0x025a,0x0736,0x0309,0x0093,0x087a,0x09f7,0x00f6
3075 .short 0x068c,0x06db,0x01cc,0x0123,0x00eb,0x0c50,0x0ab6,0x0b5b
3076 .short 0x0c98,0x06f3,0x099a,0x04e3,0x09b6,0x0ad6,0x0b53,0x044f
3077 .short 0x04fb,0x0a5c,0x0429,0x0b41,0x02d5,0x05e4,0x0940,0x018e
3078 .short 0x03b7,0x00f7,0x058d,0x0c96,0x09c3,0x010f,0x005a,0x0355
3079 .short 0x0744,0x0c83,0x048a,0x0652,0x029a,0x0140,0x0008,0x0afd
3080 .short 0x0608,0x011a,0x072e,0x050d,0x090a,0x0228,0x0a75,0x083a
3081 .short 0x0623,0x00cd,0x0b66,0x0606,0x0aa1,0x0a25,0x0908,0x02a9
3082 .short 0x0082,0x0642,0x074f,0x033d,0x0b82,0x0bf9,0x052d,0x0ac4
3083 .short 0x0745,0x05c2,0x04b2,0x093f,0x0c4b,0x06d8,0x0a93,0x00ab
3084 .short 0x0c37,0x0be2,0x0773,0x072c,0x05ed,0x0167,0x02f6,0x05a1
3085 .text
3086 .align 4
3087 .globl mlkem_arm32_invntt
3088 .type mlkem_arm32_invntt, %function
3089mlkem_arm32_invntt:
3090 push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
3091 sub sp, sp, #8
3092 adr r1, L_mlkem_invntt_zetas_inv
3093#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3094#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3095 mov r10, #0x1
3096 orr r10, r10, #0xd00
3097#else
3098 mov r10, #0xd01
3099#endif
3100#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3101 orr r10, r10, #0xc000000
3102 orr r10, r10, #0xff0000
3103#else
3104 movt r10, #0xcff
3105#endif
3106#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3107 mov r3, #0
3108L_mlkem_invntt_loop_765:
3109 add r11, r1, r3, lsr #1
3110 str r3, [sp, #4]
3111 ldr r2, [r0]
3112 ldr r3, [r0, #4]
3113 ldr r4, [r0, #8]
3114 ldr r5, [r0, #12]
3115 ldr r6, [r0, #16]
3116 ldr r7, [r0, #20]
3117 ldr r8, [r0, #24]
3118 ldr r9, [r0, #28]
3119 ldr r11, [r11]
3120#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3121 ssub16 r12, r2, r3
3122 sadd16 r2, r2, r3
3123 smulbt r3, r11, r12
3124 smulbb r12, r11, r12
3125 smultb lr, r10, r12
3126 smlabb r12, r10, lr, r12
3127 smultb lr, r10, r3
3128 smlabb r3, r10, lr, r3
3129 pkhtb r3, r3, r12, ASR #16
3130#else
3131 sub lr, r2, r3
3132 add r10, r2, r3
3133#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3134 bic r3, r3, #0xff
3135 bic r3, r3, #0xff00
3136#else
3137 bfc r3, #0, #16
3138#endif
3139#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3140 bic r2, r2, #0xff
3141 bic r2, r2, #0xff00
3142#else
3143 bfc r2, #0, #16
3144#endif
3145 sub r12, r2, r3
3146 add r2, r2, r3
3147#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3148 lsr r12, r12, #16
3149 orr r12, r12, lr, lsl #16
3150 ror r12, r12, #16
3151#else
3152 bfi r12, lr, #0, #16
3153#endif
3154#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3155 lsr r2, r2, #16
3156 orr r2, r2, r10, lsl #16
3157 ror r2, r2, #16
3158#else
3159 bfi r2, r10, #0, #16
3160#endif
3161#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3162 lsl lr, r11, #16
3163 asr lr, lr, #16
3164#else
3165 sbfx lr, r11, #0, #16
3166#endif
3167 asr r10, r12, #16
3168 mul r3, lr, r10
3169#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3170 lsl r12, r12, #16
3171 asr r12, r12, #16
3172#else
3173 sbfx r12, r12, #0, #16
3174#endif
3175 mul r12, lr, r12
3176#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3177 mov r10, #0xff
3178 orr r10, r10, #0xc00
3179#else
3180 mov r10, #0xcff
3181#endif
3182#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3183 lsl lr, r12, #16
3184 asr lr, lr, #16
3185#else
3186 sbfx lr, r12, #0, #16
3187#endif
3188 mul lr, r10, lr
3189#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3190 mov r10, #0x1
3191 orr r10, r10, #0xd00
3192#else
3193 mov r10, #0xd01
3194#endif
3195#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3196 lsl lr, lr, #16
3197 asr lr, lr, #16
3198#else
3199 sbfx lr, lr, #0, #16
3200#endif
3201 mla r12, r10, lr, r12
3202#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3203 mov r10, #0xff
3204 orr r10, r10, #0xc00
3205#else
3206 mov r10, #0xcff
3207#endif
3208#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3209 lsl lr, r3, #16
3210 asr lr, lr, #16
3211#else
3212 sbfx lr, r3, #0, #16
3213#endif
3214 mul lr, r10, lr
3215#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3216 mov r10, #0x1
3217 orr r10, r10, #0xd00
3218#else
3219 mov r10, #0xd01
3220#endif
3221#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3222 lsl lr, lr, #16
3223 asr lr, lr, #16
3224#else
3225 sbfx lr, lr, #0, #16
3226#endif
3227 lsr r12, r12, #16
3228 mla r3, r10, lr, r3
3229#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3230 lsr r3, r3, #16
3231 orr r3, r3, r12, lsl #16
3232 ror r3, r3, #16
3233#else
3234 bfi r3, r12, #0, #16
3235#endif
3236#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3237#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3238 ssub16 r12, r4, r5
3239 sadd16 r4, r4, r5
3240 smultt r5, r11, r12
3241 smultb r12, r11, r12
3242 smultb lr, r10, r12
3243 smlabb r12, r10, lr, r12
3244 smultb lr, r10, r5
3245 smlabb r5, r10, lr, r5
3246 pkhtb r5, r5, r12, ASR #16
3247#else
3248 sub lr, r4, r5
3249 add r10, r4, r5
3250#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3251 bic r5, r5, #0xff
3252 bic r5, r5, #0xff00
3253#else
3254 bfc r5, #0, #16
3255#endif
3256#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3257 bic r4, r4, #0xff
3258 bic r4, r4, #0xff00
3259#else
3260 bfc r4, #0, #16
3261#endif
3262 sub r12, r4, r5
3263 add r4, r4, r5
3264#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3265 lsr r12, r12, #16
3266 orr r12, r12, lr, lsl #16
3267 ror r12, r12, #16
3268#else
3269 bfi r12, lr, #0, #16
3270#endif
3271#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3272 lsr r4, r4, #16
3273 orr r4, r4, r10, lsl #16
3274 ror r4, r4, #16
3275#else
3276 bfi r4, r10, #0, #16
3277#endif
3278#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3279 asr lr, r11, #16
3280#else
3281 sbfx lr, r11, #16, #16
3282#endif
3283 asr r10, r12, #16
3284 mul r5, lr, r10
3285#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3286 lsl r12, r12, #16
3287 asr r12, r12, #16
3288#else
3289 sbfx r12, r12, #0, #16
3290#endif
3291 mul r12, lr, r12
3292#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3293 mov r10, #0xff
3294 orr r10, r10, #0xc00
3295#else
3296 mov r10, #0xcff
3297#endif
3298#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3299 lsl lr, r12, #16
3300 asr lr, lr, #16
3301#else
3302 sbfx lr, r12, #0, #16
3303#endif
3304 mul lr, r10, lr
3305#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3306 mov r10, #0x1
3307 orr r10, r10, #0xd00
3308#else
3309 mov r10, #0xd01
3310#endif
3311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3312 lsl lr, lr, #16
3313 asr lr, lr, #16
3314#else
3315 sbfx lr, lr, #0, #16
3316#endif
3317 mla r12, r10, lr, r12
3318#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3319 mov r10, #0xff
3320 orr r10, r10, #0xc00
3321#else
3322 mov r10, #0xcff
3323#endif
3324#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3325 lsl lr, r5, #16
3326 asr lr, lr, #16
3327#else
3328 sbfx lr, r5, #0, #16
3329#endif
3330 mul lr, r10, lr
3331#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3332 mov r10, #0x1
3333 orr r10, r10, #0xd00
3334#else
3335 mov r10, #0xd01
3336#endif
3337#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3338 lsl lr, lr, #16
3339 asr lr, lr, #16
3340#else
3341 sbfx lr, lr, #0, #16
3342#endif
3343 lsr r12, r12, #16
3344 mla r5, r10, lr, r5
3345#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3346 lsr r5, r5, #16
3347 orr r5, r5, r12, lsl #16
3348 ror r5, r5, #16
3349#else
3350 bfi r5, r12, #0, #16
3351#endif
3352#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3353 ldr r11, [sp, #4]
3354 add r11, r1, r11, lsr #1
3355 ldr r11, [r11, #4]
3356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3357 ssub16 r12, r6, r7
3358 sadd16 r6, r6, r7
3359 smulbt r7, r11, r12
3360 smulbb r12, r11, r12
3361 smultb lr, r10, r12
3362 smlabb r12, r10, lr, r12
3363 smultb lr, r10, r7
3364 smlabb r7, r10, lr, r7
3365 pkhtb r7, r7, r12, ASR #16
3366#else
3367 sub lr, r6, r7
3368 add r10, r6, r7
3369#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3370 bic r7, r7, #0xff
3371 bic r7, r7, #0xff00
3372#else
3373 bfc r7, #0, #16
3374#endif
3375#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3376 bic r6, r6, #0xff
3377 bic r6, r6, #0xff00
3378#else
3379 bfc r6, #0, #16
3380#endif
3381 sub r12, r6, r7
3382 add r6, r6, r7
3383#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3384 lsr r12, r12, #16
3385 orr r12, r12, lr, lsl #16
3386 ror r12, r12, #16
3387#else
3388 bfi r12, lr, #0, #16
3389#endif
3390#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3391 lsr r6, r6, #16
3392 orr r6, r6, r10, lsl #16
3393 ror r6, r6, #16
3394#else
3395 bfi r6, r10, #0, #16
3396#endif
3397#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3398 lsl lr, r11, #16
3399 asr lr, lr, #16
3400#else
3401 sbfx lr, r11, #0, #16
3402#endif
3403 asr r10, r12, #16
3404 mul r7, lr, r10
3405#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3406 lsl r12, r12, #16
3407 asr r12, r12, #16
3408#else
3409 sbfx r12, r12, #0, #16
3410#endif
3411 mul r12, lr, r12
3412#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3413 mov r10, #0xff
3414 orr r10, r10, #0xc00
3415#else
3416 mov r10, #0xcff
3417#endif
3418#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3419 lsl lr, r12, #16
3420 asr lr, lr, #16
3421#else
3422 sbfx lr, r12, #0, #16
3423#endif
3424 mul lr, r10, lr
3425#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3426 mov r10, #0x1
3427 orr r10, r10, #0xd00
3428#else
3429 mov r10, #0xd01
3430#endif
3431#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3432 lsl lr, lr, #16
3433 asr lr, lr, #16
3434#else
3435 sbfx lr, lr, #0, #16
3436#endif
3437 mla r12, r10, lr, r12
3438#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3439 mov r10, #0xff
3440 orr r10, r10, #0xc00
3441#else
3442 mov r10, #0xcff
3443#endif
3444#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3445 lsl lr, r7, #16
3446 asr lr, lr, #16
3447#else
3448 sbfx lr, r7, #0, #16
3449#endif
3450 mul lr, r10, lr
3451#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3452 mov r10, #0x1
3453 orr r10, r10, #0xd00
3454#else
3455 mov r10, #0xd01
3456#endif
3457#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3458 lsl lr, lr, #16
3459 asr lr, lr, #16
3460#else
3461 sbfx lr, lr, #0, #16
3462#endif
3463 lsr r12, r12, #16
3464 mla r7, r10, lr, r7
3465#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3466 lsr r7, r7, #16
3467 orr r7, r7, r12, lsl #16
3468 ror r7, r7, #16
3469#else
3470 bfi r7, r12, #0, #16
3471#endif
3472#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3473#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3474 ssub16 r12, r8, r9
3475 sadd16 r8, r8, r9
3476 smultt r9, r11, r12
3477 smultb r12, r11, r12
3478 smultb lr, r10, r12
3479 smlabb r12, r10, lr, r12
3480 smultb lr, r10, r9
3481 smlabb r9, r10, lr, r9
3482 pkhtb r9, r9, r12, ASR #16
3483#else
3484 sub lr, r8, r9
3485 add r10, r8, r9
3486#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3487 bic r9, r9, #0xff
3488 bic r9, r9, #0xff00
3489#else
3490 bfc r9, #0, #16
3491#endif
3492#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3493 bic r8, r8, #0xff
3494 bic r8, r8, #0xff00
3495#else
3496 bfc r8, #0, #16
3497#endif
3498 sub r12, r8, r9
3499 add r8, r8, r9
3500#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3501 lsr r12, r12, #16
3502 orr r12, r12, lr, lsl #16
3503 ror r12, r12, #16
3504#else
3505 bfi r12, lr, #0, #16
3506#endif
3507#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3508 lsr r8, r8, #16
3509 orr r8, r8, r10, lsl #16
3510 ror r8, r8, #16
3511#else
3512 bfi r8, r10, #0, #16
3513#endif
3514#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3515 asr lr, r11, #16
3516#else
3517 sbfx lr, r11, #16, #16
3518#endif
3519 asr r10, r12, #16
3520 mul r9, lr, r10
3521#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3522 lsl r12, r12, #16
3523 asr r12, r12, #16
3524#else
3525 sbfx r12, r12, #0, #16
3526#endif
3527 mul r12, lr, r12
3528#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3529 mov r10, #0xff
3530 orr r10, r10, #0xc00
3531#else
3532 mov r10, #0xcff
3533#endif
3534#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3535 lsl lr, r12, #16
3536 asr lr, lr, #16
3537#else
3538 sbfx lr, r12, #0, #16
3539#endif
3540 mul lr, r10, lr
3541#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3542 mov r10, #0x1
3543 orr r10, r10, #0xd00
3544#else
3545 mov r10, #0xd01
3546#endif
3547#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3548 lsl lr, lr, #16
3549 asr lr, lr, #16
3550#else
3551 sbfx lr, lr, #0, #16
3552#endif
3553 mla r12, r10, lr, r12
3554#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3555 mov r10, #0xff
3556 orr r10, r10, #0xc00
3557#else
3558 mov r10, #0xcff
3559#endif
3560#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3561 lsl lr, r9, #16
3562 asr lr, lr, #16
3563#else
3564 sbfx lr, r9, #0, #16
3565#endif
3566 mul lr, r10, lr
3567#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3568 mov r10, #0x1
3569 orr r10, r10, #0xd00
3570#else
3571 mov r10, #0xd01
3572#endif
3573#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3574 lsl lr, lr, #16
3575 asr lr, lr, #16
3576#else
3577 sbfx lr, lr, #0, #16
3578#endif
3579 lsr r12, r12, #16
3580 mla r9, r10, lr, r9
3581#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3582 lsr r9, r9, #16
3583 orr r9, r9, r12, lsl #16
3584 ror r9, r9, #16
3585#else
3586 bfi r9, r12, #0, #16
3587#endif
3588#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3589 ldr r11, [sp, #4]
3590 add r11, r1, r11, lsr #2
3591 ldr r11, [r11, #128]
3592#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3593 ssub16 r12, r2, r4
3594 sadd16 r2, r2, r4
3595 smulbt r4, r11, r12
3596 smulbb r12, r11, r12
3597 smultb lr, r10, r12
3598 smlabb r12, r10, lr, r12
3599 smultb lr, r10, r4
3600 smlabb r4, r10, lr, r4
3601 pkhtb r4, r4, r12, ASR #16
3602#else
3603 sub lr, r2, r4
3604 add r10, r2, r4
3605#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3606 bic r4, r4, #0xff
3607 bic r4, r4, #0xff00
3608#else
3609 bfc r4, #0, #16
3610#endif
3611#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3612 bic r2, r2, #0xff
3613 bic r2, r2, #0xff00
3614#else
3615 bfc r2, #0, #16
3616#endif
3617 sub r12, r2, r4
3618 add r2, r2, r4
3619#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3620 lsr r12, r12, #16
3621 orr r12, r12, lr, lsl #16
3622 ror r12, r12, #16
3623#else
3624 bfi r12, lr, #0, #16
3625#endif
3626#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3627 lsr r2, r2, #16
3628 orr r2, r2, r10, lsl #16
3629 ror r2, r2, #16
3630#else
3631 bfi r2, r10, #0, #16
3632#endif
3633#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3634 lsl lr, r11, #16
3635 asr lr, lr, #16
3636#else
3637 sbfx lr, r11, #0, #16
3638#endif
3639 asr r10, r12, #16
3640 mul r4, lr, r10
3641#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3642 lsl r12, r12, #16
3643 asr r12, r12, #16
3644#else
3645 sbfx r12, r12, #0, #16
3646#endif
3647 mul r12, lr, r12
3648#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3649 mov r10, #0xff
3650 orr r10, r10, #0xc00
3651#else
3652 mov r10, #0xcff
3653#endif
3654#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3655 lsl lr, r12, #16
3656 asr lr, lr, #16
3657#else
3658 sbfx lr, r12, #0, #16
3659#endif
3660 mul lr, r10, lr
3661#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3662 mov r10, #0x1
3663 orr r10, r10, #0xd00
3664#else
3665 mov r10, #0xd01
3666#endif
3667#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3668 lsl lr, lr, #16
3669 asr lr, lr, #16
3670#else
3671 sbfx lr, lr, #0, #16
3672#endif
3673 mla r12, r10, lr, r12
3674#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3675 mov r10, #0xff
3676 orr r10, r10, #0xc00
3677#else
3678 mov r10, #0xcff
3679#endif
3680#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3681 lsl lr, r4, #16
3682 asr lr, lr, #16
3683#else
3684 sbfx lr, r4, #0, #16
3685#endif
3686 mul lr, r10, lr
3687#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3688 mov r10, #0x1
3689 orr r10, r10, #0xd00
3690#else
3691 mov r10, #0xd01
3692#endif
3693#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3694 lsl lr, lr, #16
3695 asr lr, lr, #16
3696#else
3697 sbfx lr, lr, #0, #16
3698#endif
3699 lsr r12, r12, #16
3700 mla r4, r10, lr, r4
3701#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3702 lsr r4, r4, #16
3703 orr r4, r4, r12, lsl #16
3704 ror r4, r4, #16
3705#else
3706 bfi r4, r12, #0, #16
3707#endif
3708#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3709#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3710 ssub16 r12, r3, r5
3711 sadd16 r3, r3, r5
3712 smulbt r5, r11, r12
3713 smulbb r12, r11, r12
3714 smultb lr, r10, r12
3715 smlabb r12, r10, lr, r12
3716 smultb lr, r10, r5
3717 smlabb r5, r10, lr, r5
3718 pkhtb r5, r5, r12, ASR #16
3719#else
3720 sub lr, r3, r5
3721 add r10, r3, r5
3722#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3723 bic r5, r5, #0xff
3724 bic r5, r5, #0xff00
3725#else
3726 bfc r5, #0, #16
3727#endif
3728#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3729 bic r3, r3, #0xff
3730 bic r3, r3, #0xff00
3731#else
3732 bfc r3, #0, #16
3733#endif
3734 sub r12, r3, r5
3735 add r3, r3, r5
3736#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3737 lsr r12, r12, #16
3738 orr r12, r12, lr, lsl #16
3739 ror r12, r12, #16
3740#else
3741 bfi r12, lr, #0, #16
3742#endif
3743#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3744 lsr r3, r3, #16
3745 orr r3, r3, r10, lsl #16
3746 ror r3, r3, #16
3747#else
3748 bfi r3, r10, #0, #16
3749#endif
3750#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3751 lsl lr, r11, #16
3752 asr lr, lr, #16
3753#else
3754 sbfx lr, r11, #0, #16
3755#endif
3756 asr r10, r12, #16
3757 mul r5, lr, r10
3758#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3759 lsl r12, r12, #16
3760 asr r12, r12, #16
3761#else
3762 sbfx r12, r12, #0, #16
3763#endif
3764 mul r12, lr, r12
3765#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3766 mov r10, #0xff
3767 orr r10, r10, #0xc00
3768#else
3769 mov r10, #0xcff
3770#endif
3771#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3772 lsl lr, r12, #16
3773 asr lr, lr, #16
3774#else
3775 sbfx lr, r12, #0, #16
3776#endif
3777 mul lr, r10, lr
3778#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3779 mov r10, #0x1
3780 orr r10, r10, #0xd00
3781#else
3782 mov r10, #0xd01
3783#endif
3784#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3785 lsl lr, lr, #16
3786 asr lr, lr, #16
3787#else
3788 sbfx lr, lr, #0, #16
3789#endif
3790 mla r12, r10, lr, r12
3791#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3792 mov r10, #0xff
3793 orr r10, r10, #0xc00
3794#else
3795 mov r10, #0xcff
3796#endif
3797#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3798 lsl lr, r5, #16
3799 asr lr, lr, #16
3800#else
3801 sbfx lr, r5, #0, #16
3802#endif
3803 mul lr, r10, lr
3804#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3805 mov r10, #0x1
3806 orr r10, r10, #0xd00
3807#else
3808 mov r10, #0xd01
3809#endif
3810#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3811 lsl lr, lr, #16
3812 asr lr, lr, #16
3813#else
3814 sbfx lr, lr, #0, #16
3815#endif
3816 lsr r12, r12, #16
3817 mla r5, r10, lr, r5
3818#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3819 lsr r5, r5, #16
3820 orr r5, r5, r12, lsl #16
3821 ror r5, r5, #16
3822#else
3823 bfi r5, r12, #0, #16
3824#endif
3825#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3826#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3827 ssub16 r12, r6, r8
3828 sadd16 r6, r6, r8
3829 smultt r8, r11, r12
3830 smultb r12, r11, r12
3831 smultb lr, r10, r12
3832 smlabb r12, r10, lr, r12
3833 smultb lr, r10, r8
3834 smlabb r8, r10, lr, r8
3835 pkhtb r8, r8, r12, ASR #16
3836#else
3837 sub lr, r6, r8
3838 add r10, r6, r8
3839#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3840 bic r8, r8, #0xff
3841 bic r8, r8, #0xff00
3842#else
3843 bfc r8, #0, #16
3844#endif
3845#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3846 bic r6, r6, #0xff
3847 bic r6, r6, #0xff00
3848#else
3849 bfc r6, #0, #16
3850#endif
3851 sub r12, r6, r8
3852 add r6, r6, r8
3853#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3854 lsr r12, r12, #16
3855 orr r12, r12, lr, lsl #16
3856 ror r12, r12, #16
3857#else
3858 bfi r12, lr, #0, #16
3859#endif
3860#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3861 lsr r6, r6, #16
3862 orr r6, r6, r10, lsl #16
3863 ror r6, r6, #16
3864#else
3865 bfi r6, r10, #0, #16
3866#endif
3867#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3868 asr lr, r11, #16
3869#else
3870 sbfx lr, r11, #16, #16
3871#endif
3872 asr r10, r12, #16
3873 mul r8, lr, r10
3874#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3875 lsl r12, r12, #16
3876 asr r12, r12, #16
3877#else
3878 sbfx r12, r12, #0, #16
3879#endif
3880 mul r12, lr, r12
3881#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3882 mov r10, #0xff
3883 orr r10, r10, #0xc00
3884#else
3885 mov r10, #0xcff
3886#endif
3887#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3888 lsl lr, r12, #16
3889 asr lr, lr, #16
3890#else
3891 sbfx lr, r12, #0, #16
3892#endif
3893 mul lr, r10, lr
3894#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3895 mov r10, #0x1
3896 orr r10, r10, #0xd00
3897#else
3898 mov r10, #0xd01
3899#endif
3900#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3901 lsl lr, lr, #16
3902 asr lr, lr, #16
3903#else
3904 sbfx lr, lr, #0, #16
3905#endif
3906 mla r12, r10, lr, r12
3907#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3908 mov r10, #0xff
3909 orr r10, r10, #0xc00
3910#else
3911 mov r10, #0xcff
3912#endif
3913#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3914 lsl lr, r8, #16
3915 asr lr, lr, #16
3916#else
3917 sbfx lr, r8, #0, #16
3918#endif
3919 mul lr, r10, lr
3920#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3921 mov r10, #0x1
3922 orr r10, r10, #0xd00
3923#else
3924 mov r10, #0xd01
3925#endif
3926#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3927 lsl lr, lr, #16
3928 asr lr, lr, #16
3929#else
3930 sbfx lr, lr, #0, #16
3931#endif
3932 lsr r12, r12, #16
3933 mla r8, r10, lr, r8
3934#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3935 lsr r8, r8, #16
3936 orr r8, r8, r12, lsl #16
3937 ror r8, r8, #16
3938#else
3939 bfi r8, r12, #0, #16
3940#endif
3941#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
3942#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
3943 ssub16 r12, r7, r9
3944 sadd16 r7, r7, r9
3945 smultt r9, r11, r12
3946 smultb r12, r11, r12
3947 smultb lr, r10, r12
3948 smlabb r12, r10, lr, r12
3949 smultb lr, r10, r9
3950 smlabb r9, r10, lr, r9
3951 pkhtb r9, r9, r12, ASR #16
3952#else
3953 sub lr, r7, r9
3954 add r10, r7, r9
3955#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3956 bic r9, r9, #0xff
3957 bic r9, r9, #0xff00
3958#else
3959 bfc r9, #0, #16
3960#endif
3961#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3962 bic r7, r7, #0xff
3963 bic r7, r7, #0xff00
3964#else
3965 bfc r7, #0, #16
3966#endif
3967 sub r12, r7, r9
3968 add r7, r7, r9
3969#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3970 lsr r12, r12, #16
3971 orr r12, r12, lr, lsl #16
3972 ror r12, r12, #16
3973#else
3974 bfi r12, lr, #0, #16
3975#endif
3976#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3977 lsr r7, r7, #16
3978 orr r7, r7, r10, lsl #16
3979 ror r7, r7, #16
3980#else
3981 bfi r7, r10, #0, #16
3982#endif
3983#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3984 asr lr, r11, #16
3985#else
3986 sbfx lr, r11, #16, #16
3987#endif
3988 asr r10, r12, #16
3989 mul r9, lr, r10
3990#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3991 lsl r12, r12, #16
3992 asr r12, r12, #16
3993#else
3994 sbfx r12, r12, #0, #16
3995#endif
3996 mul r12, lr, r12
3997#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3998 mov r10, #0xff
3999 orr r10, r10, #0xc00
4000#else
4001 mov r10, #0xcff
4002#endif
4003#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4004 lsl lr, r12, #16
4005 asr lr, lr, #16
4006#else
4007 sbfx lr, r12, #0, #16
4008#endif
4009 mul lr, r10, lr
4010#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4011 mov r10, #0x1
4012 orr r10, r10, #0xd00
4013#else
4014 mov r10, #0xd01
4015#endif
4016#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4017 lsl lr, lr, #16
4018 asr lr, lr, #16
4019#else
4020 sbfx lr, lr, #0, #16
4021#endif
4022 mla r12, r10, lr, r12
4023#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4024 mov r10, #0xff
4025 orr r10, r10, #0xc00
4026#else
4027 mov r10, #0xcff
4028#endif
4029#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4030 lsl lr, r9, #16
4031 asr lr, lr, #16
4032#else
4033 sbfx lr, r9, #0, #16
4034#endif
4035 mul lr, r10, lr
4036#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4037 mov r10, #0x1
4038 orr r10, r10, #0xd00
4039#else
4040 mov r10, #0xd01
4041#endif
4042#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4043 lsl lr, lr, #16
4044 asr lr, lr, #16
4045#else
4046 sbfx lr, lr, #0, #16
4047#endif
4048 lsr r12, r12, #16
4049 mla r9, r10, lr, r9
4050#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4051 lsr r9, r9, #16
4052 orr r9, r9, r12, lsl #16
4053 ror r9, r9, #16
4054#else
4055 bfi r9, r12, #0, #16
4056#endif
4057#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4058 ldr r11, [sp, #4]
4059 add r11, r1, r11, lsr #3
4060 ldr r11, [r11, #192]
4061#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4062 ssub16 r12, r2, r6
4063 sadd16 r2, r2, r6
4064 smulbt r6, r11, r12
4065 smulbb r12, r11, r12
4066 smultb lr, r10, r12
4067 smlabb r12, r10, lr, r12
4068 smultb lr, r10, r6
4069 smlabb r6, r10, lr, r6
4070 pkhtb r6, r6, r12, ASR #16
4071#else
4072 sub lr, r2, r6
4073 add r10, r2, r6
4074#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4075 bic r6, r6, #0xff
4076 bic r6, r6, #0xff00
4077#else
4078 bfc r6, #0, #16
4079#endif
4080#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4081 bic r2, r2, #0xff
4082 bic r2, r2, #0xff00
4083#else
4084 bfc r2, #0, #16
4085#endif
4086 sub r12, r2, r6
4087 add r2, r2, r6
4088#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4089 lsr r12, r12, #16
4090 orr r12, r12, lr, lsl #16
4091 ror r12, r12, #16
4092#else
4093 bfi r12, lr, #0, #16
4094#endif
4095#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4096 lsr r2, r2, #16
4097 orr r2, r2, r10, lsl #16
4098 ror r2, r2, #16
4099#else
4100 bfi r2, r10, #0, #16
4101#endif
4102#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4103 lsl lr, r11, #16
4104 asr lr, lr, #16
4105#else
4106 sbfx lr, r11, #0, #16
4107#endif
4108 asr r10, r12, #16
4109 mul r6, lr, r10
4110#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4111 lsl r12, r12, #16
4112 asr r12, r12, #16
4113#else
4114 sbfx r12, r12, #0, #16
4115#endif
4116 mul r12, lr, r12
4117#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4118 mov r10, #0xff
4119 orr r10, r10, #0xc00
4120#else
4121 mov r10, #0xcff
4122#endif
4123#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4124 lsl lr, r12, #16
4125 asr lr, lr, #16
4126#else
4127 sbfx lr, r12, #0, #16
4128#endif
4129 mul lr, r10, lr
4130#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4131 mov r10, #0x1
4132 orr r10, r10, #0xd00
4133#else
4134 mov r10, #0xd01
4135#endif
4136#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4137 lsl lr, lr, #16
4138 asr lr, lr, #16
4139#else
4140 sbfx lr, lr, #0, #16
4141#endif
4142 mla r12, r10, lr, r12
4143#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4144 mov r10, #0xff
4145 orr r10, r10, #0xc00
4146#else
4147 mov r10, #0xcff
4148#endif
4149#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4150 lsl lr, r6, #16
4151 asr lr, lr, #16
4152#else
4153 sbfx lr, r6, #0, #16
4154#endif
4155 mul lr, r10, lr
4156#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4157 mov r10, #0x1
4158 orr r10, r10, #0xd00
4159#else
4160 mov r10, #0xd01
4161#endif
4162#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4163 lsl lr, lr, #16
4164 asr lr, lr, #16
4165#else
4166 sbfx lr, lr, #0, #16
4167#endif
4168 lsr r12, r12, #16
4169 mla r6, r10, lr, r6
4170#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4171 lsr r6, r6, #16
4172 orr r6, r6, r12, lsl #16
4173 ror r6, r6, #16
4174#else
4175 bfi r6, r12, #0, #16
4176#endif
4177#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4178#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4179 ssub16 r12, r3, r7
4180 sadd16 r3, r3, r7
4181 smulbt r7, r11, r12
4182 smulbb r12, r11, r12
4183 smultb lr, r10, r12
4184 smlabb r12, r10, lr, r12
4185 smultb lr, r10, r7
4186 smlabb r7, r10, lr, r7
4187 pkhtb r7, r7, r12, ASR #16
4188#else
4189 sub lr, r3, r7
4190 add r10, r3, r7
4191#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4192 bic r7, r7, #0xff
4193 bic r7, r7, #0xff00
4194#else
4195 bfc r7, #0, #16
4196#endif
4197#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4198 bic r3, r3, #0xff
4199 bic r3, r3, #0xff00
4200#else
4201 bfc r3, #0, #16
4202#endif
4203 sub r12, r3, r7
4204 add r3, r3, r7
4205#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4206 lsr r12, r12, #16
4207 orr r12, r12, lr, lsl #16
4208 ror r12, r12, #16
4209#else
4210 bfi r12, lr, #0, #16
4211#endif
4212#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4213 lsr r3, r3, #16
4214 orr r3, r3, r10, lsl #16
4215 ror r3, r3, #16
4216#else
4217 bfi r3, r10, #0, #16
4218#endif
4219#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4220 lsl lr, r11, #16
4221 asr lr, lr, #16
4222#else
4223 sbfx lr, r11, #0, #16
4224#endif
4225 asr r10, r12, #16
4226 mul r7, lr, r10
4227#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4228 lsl r12, r12, #16
4229 asr r12, r12, #16
4230#else
4231 sbfx r12, r12, #0, #16
4232#endif
4233 mul r12, lr, r12
4234#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4235 mov r10, #0xff
4236 orr r10, r10, #0xc00
4237#else
4238 mov r10, #0xcff
4239#endif
4240#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4241 lsl lr, r12, #16
4242 asr lr, lr, #16
4243#else
4244 sbfx lr, r12, #0, #16
4245#endif
4246 mul lr, r10, lr
4247#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4248 mov r10, #0x1
4249 orr r10, r10, #0xd00
4250#else
4251 mov r10, #0xd01
4252#endif
4253#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4254 lsl lr, lr, #16
4255 asr lr, lr, #16
4256#else
4257 sbfx lr, lr, #0, #16
4258#endif
4259 mla r12, r10, lr, r12
4260#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4261 mov r10, #0xff
4262 orr r10, r10, #0xc00
4263#else
4264 mov r10, #0xcff
4265#endif
4266#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4267 lsl lr, r7, #16
4268 asr lr, lr, #16
4269#else
4270 sbfx lr, r7, #0, #16
4271#endif
4272 mul lr, r10, lr
4273#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4274 mov r10, #0x1
4275 orr r10, r10, #0xd00
4276#else
4277 mov r10, #0xd01
4278#endif
4279#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4280 lsl lr, lr, #16
4281 asr lr, lr, #16
4282#else
4283 sbfx lr, lr, #0, #16
4284#endif
4285 lsr r12, r12, #16
4286 mla r7, r10, lr, r7
4287#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4288 lsr r7, r7, #16
4289 orr r7, r7, r12, lsl #16
4290 ror r7, r7, #16
4291#else
4292 bfi r7, r12, #0, #16
4293#endif
4294#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4295#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4296 ssub16 r12, r4, r8
4297 sadd16 r4, r4, r8
4298 smulbt r8, r11, r12
4299 smulbb r12, r11, r12
4300 smultb lr, r10, r12
4301 smlabb r12, r10, lr, r12
4302 smultb lr, r10, r8
4303 smlabb r8, r10, lr, r8
4304 pkhtb r8, r8, r12, ASR #16
4305#else
4306 sub lr, r4, r8
4307 add r10, r4, r8
4308#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4309 bic r8, r8, #0xff
4310 bic r8, r8, #0xff00
4311#else
4312 bfc r8, #0, #16
4313#endif
4314#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4315 bic r4, r4, #0xff
4316 bic r4, r4, #0xff00
4317#else
4318 bfc r4, #0, #16
4319#endif
4320 sub r12, r4, r8
4321 add r4, r4, r8
4322#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4323 lsr r12, r12, #16
4324 orr r12, r12, lr, lsl #16
4325 ror r12, r12, #16
4326#else
4327 bfi r12, lr, #0, #16
4328#endif
4329#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4330 lsr r4, r4, #16
4331 orr r4, r4, r10, lsl #16
4332 ror r4, r4, #16
4333#else
4334 bfi r4, r10, #0, #16
4335#endif
4336#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4337 lsl lr, r11, #16
4338 asr lr, lr, #16
4339#else
4340 sbfx lr, r11, #0, #16
4341#endif
4342 asr r10, r12, #16
4343 mul r8, lr, r10
4344#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4345 lsl r12, r12, #16
4346 asr r12, r12, #16
4347#else
4348 sbfx r12, r12, #0, #16
4349#endif
4350 mul r12, lr, r12
4351#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4352 mov r10, #0xff
4353 orr r10, r10, #0xc00
4354#else
4355 mov r10, #0xcff
4356#endif
4357#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4358 lsl lr, r12, #16
4359 asr lr, lr, #16
4360#else
4361 sbfx lr, r12, #0, #16
4362#endif
4363 mul lr, r10, lr
4364#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4365 mov r10, #0x1
4366 orr r10, r10, #0xd00
4367#else
4368 mov r10, #0xd01
4369#endif
4370#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4371 lsl lr, lr, #16
4372 asr lr, lr, #16
4373#else
4374 sbfx lr, lr, #0, #16
4375#endif
4376 mla r12, r10, lr, r12
4377#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4378 mov r10, #0xff
4379 orr r10, r10, #0xc00
4380#else
4381 mov r10, #0xcff
4382#endif
4383#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4384 lsl lr, r8, #16
4385 asr lr, lr, #16
4386#else
4387 sbfx lr, r8, #0, #16
4388#endif
4389 mul lr, r10, lr
4390#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4391 mov r10, #0x1
4392 orr r10, r10, #0xd00
4393#else
4394 mov r10, #0xd01
4395#endif
4396#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4397 lsl lr, lr, #16
4398 asr lr, lr, #16
4399#else
4400 sbfx lr, lr, #0, #16
4401#endif
4402 lsr r12, r12, #16
4403 mla r8, r10, lr, r8
4404#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4405 lsr r8, r8, #16
4406 orr r8, r8, r12, lsl #16
4407 ror r8, r8, #16
4408#else
4409 bfi r8, r12, #0, #16
4410#endif
4411#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4412#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4413 ssub16 r12, r5, r9
4414 sadd16 r5, r5, r9
4415 smulbt r9, r11, r12
4416 smulbb r12, r11, r12
4417 smultb lr, r10, r12
4418 smlabb r12, r10, lr, r12
4419 smultb lr, r10, r9
4420 smlabb r9, r10, lr, r9
4421 pkhtb r9, r9, r12, ASR #16
4422#else
4423 sub lr, r5, r9
4424 add r10, r5, r9
4425#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4426 bic r9, r9, #0xff
4427 bic r9, r9, #0xff00
4428#else
4429 bfc r9, #0, #16
4430#endif
4431#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4432 bic r5, r5, #0xff
4433 bic r5, r5, #0xff00
4434#else
4435 bfc r5, #0, #16
4436#endif
4437 sub r12, r5, r9
4438 add r5, r5, r9
4439#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4440 lsr r12, r12, #16
4441 orr r12, r12, lr, lsl #16
4442 ror r12, r12, #16
4443#else
4444 bfi r12, lr, #0, #16
4445#endif
4446#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4447 lsr r5, r5, #16
4448 orr r5, r5, r10, lsl #16
4449 ror r5, r5, #16
4450#else
4451 bfi r5, r10, #0, #16
4452#endif
4453#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4454 lsl lr, r11, #16
4455 asr lr, lr, #16
4456#else
4457 sbfx lr, r11, #0, #16
4458#endif
4459 asr r10, r12, #16
4460 mul r9, lr, r10
4461#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4462 lsl r12, r12, #16
4463 asr r12, r12, #16
4464#else
4465 sbfx r12, r12, #0, #16
4466#endif
4467 mul r12, lr, r12
4468#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4469 mov r10, #0xff
4470 orr r10, r10, #0xc00
4471#else
4472 mov r10, #0xcff
4473#endif
4474#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4475 lsl lr, r12, #16
4476 asr lr, lr, #16
4477#else
4478 sbfx lr, r12, #0, #16
4479#endif
4480 mul lr, r10, lr
4481#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4482 mov r10, #0x1
4483 orr r10, r10, #0xd00
4484#else
4485 mov r10, #0xd01
4486#endif
4487#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4488 lsl lr, lr, #16
4489 asr lr, lr, #16
4490#else
4491 sbfx lr, lr, #0, #16
4492#endif
4493 mla r12, r10, lr, r12
4494#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4495 mov r10, #0xff
4496 orr r10, r10, #0xc00
4497#else
4498 mov r10, #0xcff
4499#endif
4500#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4501 lsl lr, r9, #16
4502 asr lr, lr, #16
4503#else
4504 sbfx lr, r9, #0, #16
4505#endif
4506 mul lr, r10, lr
4507#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4508 mov r10, #0x1
4509 orr r10, r10, #0xd00
4510#else
4511 mov r10, #0xd01
4512#endif
4513#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4514 lsl lr, lr, #16
4515 asr lr, lr, #16
4516#else
4517 sbfx lr, lr, #0, #16
4518#endif
4519 lsr r12, r12, #16
4520 mla r9, r10, lr, r9
4521#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4522 lsr r9, r9, #16
4523 orr r9, r9, r12, lsl #16
4524 ror r9, r9, #16
4525#else
4526 bfi r9, r12, #0, #16
4527#endif
4528#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4529#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4530#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4531 mov r11, #0xc0
4532 orr r11, r11, #0xaf00
4533#else
4534 mov r11, #0xafc0
4535#endif
4536#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4537 orr r11, r11, #0x130000
4538#else
4539 movt r11, #0x13
4540#endif
4541#else
4542#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4543 mov r11, #0xbf
4544 orr r11, r11, #0x4e00
4545#else
4546 mov r11, #0x4ebf
4547#endif
4548#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4549#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4550 smulwb r12, r11, r2
4551 smulwt lr, r11, r2
4552 smulbt r12, r10, r12
4553 smulbt lr, r10, lr
4554 pkhbt r12, r12, lr, LSL #16
4555 ssub16 r2, r2, r12
4556#else
4557#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4558 lsl r12, r2, #16
4559 asr r12, r12, #16
4560#else
4561 sbfx r12, r2, #0, #16
4562#endif
4563#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4564 asr lr, r2, #16
4565#else
4566 sbfx lr, r2, #16, #16
4567#endif
4568 mul r12, r11, r12
4569 mul lr, r11, lr
4570 asr r12, r12, #26
4571 asr lr, lr, #26
4572 mul r12, r10, r12
4573 mul lr, r10, lr
4574 sub lr, r2, lr, lsl #16
4575 sub r2, r2, r12
4576 lsr lr, lr, #16
4577#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4578 bic r2, r2, #0xff0000
4579 bic r2, r2, #0xff000000
4580 orr r2, r2, lr, lsl #16
4581#else
4582 bfi r2, lr, #16, #16
4583#endif
4584#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4585#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4586 smulwb r12, r11, r3
4587 smulwt lr, r11, r3
4588 smulbt r12, r10, r12
4589 smulbt lr, r10, lr
4590 pkhbt r12, r12, lr, LSL #16
4591 ssub16 r3, r3, r12
4592#else
4593#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4594 lsl r12, r3, #16
4595 asr r12, r12, #16
4596#else
4597 sbfx r12, r3, #0, #16
4598#endif
4599#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4600 asr lr, r3, #16
4601#else
4602 sbfx lr, r3, #16, #16
4603#endif
4604 mul r12, r11, r12
4605 mul lr, r11, lr
4606 asr r12, r12, #26
4607 asr lr, lr, #26
4608 mul r12, r10, r12
4609 mul lr, r10, lr
4610 sub lr, r3, lr, lsl #16
4611 sub r3, r3, r12
4612 lsr lr, lr, #16
4613#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4614 bic r3, r3, #0xff0000
4615 bic r3, r3, #0xff000000
4616 orr r3, r3, lr, lsl #16
4617#else
4618 bfi r3, lr, #16, #16
4619#endif
4620#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4621#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4622 smulwb r12, r11, r4
4623 smulwt lr, r11, r4
4624 smulbt r12, r10, r12
4625 smulbt lr, r10, lr
4626 pkhbt r12, r12, lr, LSL #16
4627 ssub16 r4, r4, r12
4628#else
4629#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4630 lsl r12, r4, #16
4631 asr r12, r12, #16
4632#else
4633 sbfx r12, r4, #0, #16
4634#endif
4635#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4636 asr lr, r4, #16
4637#else
4638 sbfx lr, r4, #16, #16
4639#endif
4640 mul r12, r11, r12
4641 mul lr, r11, lr
4642 asr r12, r12, #26
4643 asr lr, lr, #26
4644 mul r12, r10, r12
4645 mul lr, r10, lr
4646 sub lr, r4, lr, lsl #16
4647 sub r4, r4, r12
4648 lsr lr, lr, #16
4649#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4650 bic r4, r4, #0xff0000
4651 bic r4, r4, #0xff000000
4652 orr r4, r4, lr, lsl #16
4653#else
4654 bfi r4, lr, #16, #16
4655#endif
4656#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4657#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4658 smulwb r12, r11, r5
4659 smulwt lr, r11, r5
4660 smulbt r12, r10, r12
4661 smulbt lr, r10, lr
4662 pkhbt r12, r12, lr, LSL #16
4663 ssub16 r5, r5, r12
4664#else
4665#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4666 lsl r12, r5, #16
4667 asr r12, r12, #16
4668#else
4669 sbfx r12, r5, #0, #16
4670#endif
4671#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4672 asr lr, r5, #16
4673#else
4674 sbfx lr, r5, #16, #16
4675#endif
4676 mul r12, r11, r12
4677 mul lr, r11, lr
4678 asr r12, r12, #26
4679 asr lr, lr, #26
4680 mul r12, r10, r12
4681 mul lr, r10, lr
4682 sub lr, r5, lr, lsl #16
4683 sub r5, r5, r12
4684 lsr lr, lr, #16
4685#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4686 bic r5, r5, #0xff0000
4687 bic r5, r5, #0xff000000
4688 orr r5, r5, lr, lsl #16
4689#else
4690 bfi r5, lr, #16, #16
4691#endif
4692#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4693 str r2, [r0]
4694 str r3, [r0, #4]
4695 str r4, [r0, #8]
4696 str r5, [r0, #12]
4697 str r6, [r0, #16]
4698 str r7, [r0, #20]
4699 str r8, [r0, #24]
4700 str r9, [r0, #28]
4701 ldr r3, [sp, #4]
4702 add r3, r3, #16
4703 rsbs r12, r3, #0x100
4704 add r0, r0, #32
4705 bne L_mlkem_invntt_loop_765
4706 sub r0, r0, #0x200
4707 mov r3, #0
4708L_mlkem_invntt_loop_4_j:
4709 str r3, [sp, #4]
4710 add r11, r1, r3, lsr #4
4711 mov r2, #4
4712 ldr r11, [r11, #224]
4713L_mlkem_invntt_loop_4_i:
4714 str r2, [sp]
4715 ldr r2, [r0]
4716 ldr r3, [r0, #16]
4717 ldr r4, [r0, #32]
4718 ldr r5, [r0, #48]
4719 ldr r6, [r0, #64]
4720 ldr r7, [r0, #80]
4721 ldr r8, [r0, #96]
4722 ldr r9, [r0, #112]
4723#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4724 ssub16 r12, r2, r4
4725 sadd16 r2, r2, r4
4726 smulbt r4, r11, r12
4727 smulbb r12, r11, r12
4728 smultb lr, r10, r12
4729 smlabb r12, r10, lr, r12
4730 smultb lr, r10, r4
4731 smlabb r4, r10, lr, r4
4732 pkhtb r4, r4, r12, ASR #16
4733#else
4734 sub lr, r2, r4
4735 add r10, r2, r4
4736#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4737 bic r4, r4, #0xff
4738 bic r4, r4, #0xff00
4739#else
4740 bfc r4, #0, #16
4741#endif
4742#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4743 bic r2, r2, #0xff
4744 bic r2, r2, #0xff00
4745#else
4746 bfc r2, #0, #16
4747#endif
4748 sub r12, r2, r4
4749 add r2, r2, r4
4750#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4751 lsr r12, r12, #16
4752 orr r12, r12, lr, lsl #16
4753 ror r12, r12, #16
4754#else
4755 bfi r12, lr, #0, #16
4756#endif
4757#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4758 lsr r2, r2, #16
4759 orr r2, r2, r10, lsl #16
4760 ror r2, r2, #16
4761#else
4762 bfi r2, r10, #0, #16
4763#endif
4764#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4765 lsl lr, r11, #16
4766 asr lr, lr, #16
4767#else
4768 sbfx lr, r11, #0, #16
4769#endif
4770 asr r10, r12, #16
4771 mul r4, lr, r10
4772#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4773 lsl r12, r12, #16
4774 asr r12, r12, #16
4775#else
4776 sbfx r12, r12, #0, #16
4777#endif
4778 mul r12, lr, r12
4779#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4780 mov r10, #0xff
4781 orr r10, r10, #0xc00
4782#else
4783 mov r10, #0xcff
4784#endif
4785#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4786 lsl lr, r12, #16
4787 asr lr, lr, #16
4788#else
4789 sbfx lr, r12, #0, #16
4790#endif
4791 mul lr, r10, lr
4792#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4793 mov r10, #0x1
4794 orr r10, r10, #0xd00
4795#else
4796 mov r10, #0xd01
4797#endif
4798#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4799 lsl lr, lr, #16
4800 asr lr, lr, #16
4801#else
4802 sbfx lr, lr, #0, #16
4803#endif
4804 mla r12, r10, lr, r12
4805#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4806 mov r10, #0xff
4807 orr r10, r10, #0xc00
4808#else
4809 mov r10, #0xcff
4810#endif
4811#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4812 lsl lr, r4, #16
4813 asr lr, lr, #16
4814#else
4815 sbfx lr, r4, #0, #16
4816#endif
4817 mul lr, r10, lr
4818#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4819 mov r10, #0x1
4820 orr r10, r10, #0xd00
4821#else
4822 mov r10, #0xd01
4823#endif
4824#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4825 lsl lr, lr, #16
4826 asr lr, lr, #16
4827#else
4828 sbfx lr, lr, #0, #16
4829#endif
4830 lsr r12, r12, #16
4831 mla r4, r10, lr, r4
4832#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4833 lsr r4, r4, #16
4834 orr r4, r4, r12, lsl #16
4835 ror r4, r4, #16
4836#else
4837 bfi r4, r12, #0, #16
4838#endif
4839#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4840#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4841 ssub16 r12, r3, r5
4842 sadd16 r3, r3, r5
4843 smulbt r5, r11, r12
4844 smulbb r12, r11, r12
4845 smultb lr, r10, r12
4846 smlabb r12, r10, lr, r12
4847 smultb lr, r10, r5
4848 smlabb r5, r10, lr, r5
4849 pkhtb r5, r5, r12, ASR #16
4850#else
4851 sub lr, r3, r5
4852 add r10, r3, r5
4853#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4854 bic r5, r5, #0xff
4855 bic r5, r5, #0xff00
4856#else
4857 bfc r5, #0, #16
4858#endif
4859#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4860 bic r3, r3, #0xff
4861 bic r3, r3, #0xff00
4862#else
4863 bfc r3, #0, #16
4864#endif
4865 sub r12, r3, r5
4866 add r3, r3, r5
4867#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4868 lsr r12, r12, #16
4869 orr r12, r12, lr, lsl #16
4870 ror r12, r12, #16
4871#else
4872 bfi r12, lr, #0, #16
4873#endif
4874#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4875 lsr r3, r3, #16
4876 orr r3, r3, r10, lsl #16
4877 ror r3, r3, #16
4878#else
4879 bfi r3, r10, #0, #16
4880#endif
4881#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4882 lsl lr, r11, #16
4883 asr lr, lr, #16
4884#else
4885 sbfx lr, r11, #0, #16
4886#endif
4887 asr r10, r12, #16
4888 mul r5, lr, r10
4889#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4890 lsl r12, r12, #16
4891 asr r12, r12, #16
4892#else
4893 sbfx r12, r12, #0, #16
4894#endif
4895 mul r12, lr, r12
4896#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4897 mov r10, #0xff
4898 orr r10, r10, #0xc00
4899#else
4900 mov r10, #0xcff
4901#endif
4902#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4903 lsl lr, r12, #16
4904 asr lr, lr, #16
4905#else
4906 sbfx lr, r12, #0, #16
4907#endif
4908 mul lr, r10, lr
4909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4910 mov r10, #0x1
4911 orr r10, r10, #0xd00
4912#else
4913 mov r10, #0xd01
4914#endif
4915#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4916 lsl lr, lr, #16
4917 asr lr, lr, #16
4918#else
4919 sbfx lr, lr, #0, #16
4920#endif
4921 mla r12, r10, lr, r12
4922#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4923 mov r10, #0xff
4924 orr r10, r10, #0xc00
4925#else
4926 mov r10, #0xcff
4927#endif
4928#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4929 lsl lr, r5, #16
4930 asr lr, lr, #16
4931#else
4932 sbfx lr, r5, #0, #16
4933#endif
4934 mul lr, r10, lr
4935#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4936 mov r10, #0x1
4937 orr r10, r10, #0xd00
4938#else
4939 mov r10, #0xd01
4940#endif
4941#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4942 lsl lr, lr, #16
4943 asr lr, lr, #16
4944#else
4945 sbfx lr, lr, #0, #16
4946#endif
4947 lsr r12, r12, #16
4948 mla r5, r10, lr, r5
4949#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4950 lsr r5, r5, #16
4951 orr r5, r5, r12, lsl #16
4952 ror r5, r5, #16
4953#else
4954 bfi r5, r12, #0, #16
4955#endif
4956#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
4957#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
4958 ssub16 r12, r6, r8
4959 sadd16 r6, r6, r8
4960 smultt r8, r11, r12
4961 smultb r12, r11, r12
4962 smultb lr, r10, r12
4963 smlabb r12, r10, lr, r12
4964 smultb lr, r10, r8
4965 smlabb r8, r10, lr, r8
4966 pkhtb r8, r8, r12, ASR #16
4967#else
4968 sub lr, r6, r8
4969 add r10, r6, r8
4970#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4971 bic r8, r8, #0xff
4972 bic r8, r8, #0xff00
4973#else
4974 bfc r8, #0, #16
4975#endif
4976#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4977 bic r6, r6, #0xff
4978 bic r6, r6, #0xff00
4979#else
4980 bfc r6, #0, #16
4981#endif
4982 sub r12, r6, r8
4983 add r6, r6, r8
4984#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4985 lsr r12, r12, #16
4986 orr r12, r12, lr, lsl #16
4987 ror r12, r12, #16
4988#else
4989 bfi r12, lr, #0, #16
4990#endif
4991#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4992 lsr r6, r6, #16
4993 orr r6, r6, r10, lsl #16
4994 ror r6, r6, #16
4995#else
4996 bfi r6, r10, #0, #16
4997#endif
4998#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4999 asr lr, r11, #16
5000#else
5001 sbfx lr, r11, #16, #16
5002#endif
5003 asr r10, r12, #16
5004 mul r8, lr, r10
5005#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5006 lsl r12, r12, #16
5007 asr r12, r12, #16
5008#else
5009 sbfx r12, r12, #0, #16
5010#endif
5011 mul r12, lr, r12
5012#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5013 mov r10, #0xff
5014 orr r10, r10, #0xc00
5015#else
5016 mov r10, #0xcff
5017#endif
5018#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5019 lsl lr, r12, #16
5020 asr lr, lr, #16
5021#else
5022 sbfx lr, r12, #0, #16
5023#endif
5024 mul lr, r10, lr
5025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5026 mov r10, #0x1
5027 orr r10, r10, #0xd00
5028#else
5029 mov r10, #0xd01
5030#endif
5031#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5032 lsl lr, lr, #16
5033 asr lr, lr, #16
5034#else
5035 sbfx lr, lr, #0, #16
5036#endif
5037 mla r12, r10, lr, r12
5038#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5039 mov r10, #0xff
5040 orr r10, r10, #0xc00
5041#else
5042 mov r10, #0xcff
5043#endif
5044#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5045 lsl lr, r8, #16
5046 asr lr, lr, #16
5047#else
5048 sbfx lr, r8, #0, #16
5049#endif
5050 mul lr, r10, lr
5051#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5052 mov r10, #0x1
5053 orr r10, r10, #0xd00
5054#else
5055 mov r10, #0xd01
5056#endif
5057#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5058 lsl lr, lr, #16
5059 asr lr, lr, #16
5060#else
5061 sbfx lr, lr, #0, #16
5062#endif
5063 lsr r12, r12, #16
5064 mla r8, r10, lr, r8
5065#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5066 lsr r8, r8, #16
5067 orr r8, r8, r12, lsl #16
5068 ror r8, r8, #16
5069#else
5070 bfi r8, r12, #0, #16
5071#endif
5072#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5073#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5074 ssub16 r12, r7, r9
5075 sadd16 r7, r7, r9
5076 smultt r9, r11, r12
5077 smultb r12, r11, r12
5078 smultb lr, r10, r12
5079 smlabb r12, r10, lr, r12
5080 smultb lr, r10, r9
5081 smlabb r9, r10, lr, r9
5082 pkhtb r9, r9, r12, ASR #16
5083#else
5084 sub lr, r7, r9
5085 add r10, r7, r9
5086#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5087 bic r9, r9, #0xff
5088 bic r9, r9, #0xff00
5089#else
5090 bfc r9, #0, #16
5091#endif
5092#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5093 bic r7, r7, #0xff
5094 bic r7, r7, #0xff00
5095#else
5096 bfc r7, #0, #16
5097#endif
5098 sub r12, r7, r9
5099 add r7, r7, r9
5100#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5101 lsr r12, r12, #16
5102 orr r12, r12, lr, lsl #16
5103 ror r12, r12, #16
5104#else
5105 bfi r12, lr, #0, #16
5106#endif
5107#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5108 lsr r7, r7, #16
5109 orr r7, r7, r10, lsl #16
5110 ror r7, r7, #16
5111#else
5112 bfi r7, r10, #0, #16
5113#endif
5114#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5115 asr lr, r11, #16
5116#else
5117 sbfx lr, r11, #16, #16
5118#endif
5119 asr r10, r12, #16
5120 mul r9, lr, r10
5121#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5122 lsl r12, r12, #16
5123 asr r12, r12, #16
5124#else
5125 sbfx r12, r12, #0, #16
5126#endif
5127 mul r12, lr, r12
5128#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5129 mov r10, #0xff
5130 orr r10, r10, #0xc00
5131#else
5132 mov r10, #0xcff
5133#endif
5134#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5135 lsl lr, r12, #16
5136 asr lr, lr, #16
5137#else
5138 sbfx lr, r12, #0, #16
5139#endif
5140 mul lr, r10, lr
5141#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5142 mov r10, #0x1
5143 orr r10, r10, #0xd00
5144#else
5145 mov r10, #0xd01
5146#endif
5147#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5148 lsl lr, lr, #16
5149 asr lr, lr, #16
5150#else
5151 sbfx lr, lr, #0, #16
5152#endif
5153 mla r12, r10, lr, r12
5154#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5155 mov r10, #0xff
5156 orr r10, r10, #0xc00
5157#else
5158 mov r10, #0xcff
5159#endif
5160#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5161 lsl lr, r9, #16
5162 asr lr, lr, #16
5163#else
5164 sbfx lr, r9, #0, #16
5165#endif
5166 mul lr, r10, lr
5167#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5168 mov r10, #0x1
5169 orr r10, r10, #0xd00
5170#else
5171 mov r10, #0xd01
5172#endif
5173#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5174 lsl lr, lr, #16
5175 asr lr, lr, #16
5176#else
5177 sbfx lr, lr, #0, #16
5178#endif
5179 lsr r12, r12, #16
5180 mla r9, r10, lr, r9
5181#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5182 lsr r9, r9, #16
5183 orr r9, r9, r12, lsl #16
5184 ror r9, r9, #16
5185#else
5186 bfi r9, r12, #0, #16
5187#endif
5188#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5189 str r2, [r0]
5190 str r3, [r0, #16]
5191 str r4, [r0, #32]
5192 str r5, [r0, #48]
5193 str r6, [r0, #64]
5194 str r7, [r0, #80]
5195 str r8, [r0, #96]
5196 str r9, [r0, #112]
5197#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5198 ldm sp, {r2, r3}
5199#else
5200 ldrd r2, r3, [sp]
5201#endif
5202 subs r2, r2, #1
5203 add r0, r0, #4
5204 bne L_mlkem_invntt_loop_4_i
5205 add r3, r3, #0x40
5206 rsbs r12, r3, #0x100
5207 add r0, r0, #0x70
5208 bne L_mlkem_invntt_loop_4_j
5209 sub r0, r0, #0x200
5210 mov r2, #16
5211L_mlkem_invntt_loop_321:
5212 str r2, [sp]
5213 ldrh r11, [r1, #2]
5214 ldr r2, [r0]
5215 ldr r3, [r0, #64]
5216 ldr r4, [r0, #128]
5217 ldr r5, [r0, #192]
5218 ldr r6, [r0, #256]
5219 ldr r7, [r0, #320]
5220 ldr r8, [r0, #384]
5221 ldr r9, [r0, #448]
5222 ldr r11, [r1, #240]
5223#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5224 ssub16 r12, r2, r3
5225 sadd16 r2, r2, r3
5226 smulbt r3, r11, r12
5227 smulbb r12, r11, r12
5228 smultb lr, r10, r12
5229 smlabb r12, r10, lr, r12
5230 smultb lr, r10, r3
5231 smlabb r3, r10, lr, r3
5232 pkhtb r3, r3, r12, ASR #16
5233#else
5234 sub lr, r2, r3
5235 add r10, r2, r3
5236#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5237 bic r3, r3, #0xff
5238 bic r3, r3, #0xff00
5239#else
5240 bfc r3, #0, #16
5241#endif
5242#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5243 bic r2, r2, #0xff
5244 bic r2, r2, #0xff00
5245#else
5246 bfc r2, #0, #16
5247#endif
5248 sub r12, r2, r3
5249 add r2, r2, r3
5250#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5251 lsr r12, r12, #16
5252 orr r12, r12, lr, lsl #16
5253 ror r12, r12, #16
5254#else
5255 bfi r12, lr, #0, #16
5256#endif
5257#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5258 lsr r2, r2, #16
5259 orr r2, r2, r10, lsl #16
5260 ror r2, r2, #16
5261#else
5262 bfi r2, r10, #0, #16
5263#endif
5264#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5265 lsl lr, r11, #16
5266 asr lr, lr, #16
5267#else
5268 sbfx lr, r11, #0, #16
5269#endif
5270 asr r10, r12, #16
5271 mul r3, lr, r10
5272#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5273 lsl r12, r12, #16
5274 asr r12, r12, #16
5275#else
5276 sbfx r12, r12, #0, #16
5277#endif
5278 mul r12, lr, r12
5279#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5280 mov r10, #0xff
5281 orr r10, r10, #0xc00
5282#else
5283 mov r10, #0xcff
5284#endif
5285#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5286 lsl lr, r12, #16
5287 asr lr, lr, #16
5288#else
5289 sbfx lr, r12, #0, #16
5290#endif
5291 mul lr, r10, lr
5292#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5293 mov r10, #0x1
5294 orr r10, r10, #0xd00
5295#else
5296 mov r10, #0xd01
5297#endif
5298#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5299 lsl lr, lr, #16
5300 asr lr, lr, #16
5301#else
5302 sbfx lr, lr, #0, #16
5303#endif
5304 mla r12, r10, lr, r12
5305#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5306 mov r10, #0xff
5307 orr r10, r10, #0xc00
5308#else
5309 mov r10, #0xcff
5310#endif
5311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5312 lsl lr, r3, #16
5313 asr lr, lr, #16
5314#else
5315 sbfx lr, r3, #0, #16
5316#endif
5317 mul lr, r10, lr
5318#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5319 mov r10, #0x1
5320 orr r10, r10, #0xd00
5321#else
5322 mov r10, #0xd01
5323#endif
5324#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5325 lsl lr, lr, #16
5326 asr lr, lr, #16
5327#else
5328 sbfx lr, lr, #0, #16
5329#endif
5330 lsr r12, r12, #16
5331 mla r3, r10, lr, r3
5332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5333 lsr r3, r3, #16
5334 orr r3, r3, r12, lsl #16
5335 ror r3, r3, #16
5336#else
5337 bfi r3, r12, #0, #16
5338#endif
5339#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5340#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5341 ssub16 r12, r4, r5
5342 sadd16 r4, r4, r5
5343 smultt r5, r11, r12
5344 smultb r12, r11, r12
5345 smultb lr, r10, r12
5346 smlabb r12, r10, lr, r12
5347 smultb lr, r10, r5
5348 smlabb r5, r10, lr, r5
5349 pkhtb r5, r5, r12, ASR #16
5350#else
5351 sub lr, r4, r5
5352 add r10, r4, r5
5353#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5354 bic r5, r5, #0xff
5355 bic r5, r5, #0xff00
5356#else
5357 bfc r5, #0, #16
5358#endif
5359#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5360 bic r4, r4, #0xff
5361 bic r4, r4, #0xff00
5362#else
5363 bfc r4, #0, #16
5364#endif
5365 sub r12, r4, r5
5366 add r4, r4, r5
5367#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5368 lsr r12, r12, #16
5369 orr r12, r12, lr, lsl #16
5370 ror r12, r12, #16
5371#else
5372 bfi r12, lr, #0, #16
5373#endif
5374#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5375 lsr r4, r4, #16
5376 orr r4, r4, r10, lsl #16
5377 ror r4, r4, #16
5378#else
5379 bfi r4, r10, #0, #16
5380#endif
5381#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5382 asr lr, r11, #16
5383#else
5384 sbfx lr, r11, #16, #16
5385#endif
5386 asr r10, r12, #16
5387 mul r5, lr, r10
5388#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5389 lsl r12, r12, #16
5390 asr r12, r12, #16
5391#else
5392 sbfx r12, r12, #0, #16
5393#endif
5394 mul r12, lr, r12
5395#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5396 mov r10, #0xff
5397 orr r10, r10, #0xc00
5398#else
5399 mov r10, #0xcff
5400#endif
5401#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5402 lsl lr, r12, #16
5403 asr lr, lr, #16
5404#else
5405 sbfx lr, r12, #0, #16
5406#endif
5407 mul lr, r10, lr
5408#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5409 mov r10, #0x1
5410 orr r10, r10, #0xd00
5411#else
5412 mov r10, #0xd01
5413#endif
5414#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5415 lsl lr, lr, #16
5416 asr lr, lr, #16
5417#else
5418 sbfx lr, lr, #0, #16
5419#endif
5420 mla r12, r10, lr, r12
5421#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5422 mov r10, #0xff
5423 orr r10, r10, #0xc00
5424#else
5425 mov r10, #0xcff
5426#endif
5427#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5428 lsl lr, r5, #16
5429 asr lr, lr, #16
5430#else
5431 sbfx lr, r5, #0, #16
5432#endif
5433 mul lr, r10, lr
5434#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5435 mov r10, #0x1
5436 orr r10, r10, #0xd00
5437#else
5438 mov r10, #0xd01
5439#endif
5440#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5441 lsl lr, lr, #16
5442 asr lr, lr, #16
5443#else
5444 sbfx lr, lr, #0, #16
5445#endif
5446 lsr r12, r12, #16
5447 mla r5, r10, lr, r5
5448#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5449 lsr r5, r5, #16
5450 orr r5, r5, r12, lsl #16
5451 ror r5, r5, #16
5452#else
5453 bfi r5, r12, #0, #16
5454#endif
5455#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5456 ldr r11, [r1, #244]
5457#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5458 ssub16 r12, r6, r7
5459 sadd16 r6, r6, r7
5460 smulbt r7, r11, r12
5461 smulbb r12, r11, r12
5462 smultb lr, r10, r12
5463 smlabb r12, r10, lr, r12
5464 smultb lr, r10, r7
5465 smlabb r7, r10, lr, r7
5466 pkhtb r7, r7, r12, ASR #16
5467#else
5468 sub lr, r6, r7
5469 add r10, r6, r7
5470#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5471 bic r7, r7, #0xff
5472 bic r7, r7, #0xff00
5473#else
5474 bfc r7, #0, #16
5475#endif
5476#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5477 bic r6, r6, #0xff
5478 bic r6, r6, #0xff00
5479#else
5480 bfc r6, #0, #16
5481#endif
5482 sub r12, r6, r7
5483 add r6, r6, r7
5484#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5485 lsr r12, r12, #16
5486 orr r12, r12, lr, lsl #16
5487 ror r12, r12, #16
5488#else
5489 bfi r12, lr, #0, #16
5490#endif
5491#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5492 lsr r6, r6, #16
5493 orr r6, r6, r10, lsl #16
5494 ror r6, r6, #16
5495#else
5496 bfi r6, r10, #0, #16
5497#endif
5498#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5499 lsl lr, r11, #16
5500 asr lr, lr, #16
5501#else
5502 sbfx lr, r11, #0, #16
5503#endif
5504 asr r10, r12, #16
5505 mul r7, lr, r10
5506#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5507 lsl r12, r12, #16
5508 asr r12, r12, #16
5509#else
5510 sbfx r12, r12, #0, #16
5511#endif
5512 mul r12, lr, r12
5513#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5514 mov r10, #0xff
5515 orr r10, r10, #0xc00
5516#else
5517 mov r10, #0xcff
5518#endif
5519#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5520 lsl lr, r12, #16
5521 asr lr, lr, #16
5522#else
5523 sbfx lr, r12, #0, #16
5524#endif
5525 mul lr, r10, lr
5526#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5527 mov r10, #0x1
5528 orr r10, r10, #0xd00
5529#else
5530 mov r10, #0xd01
5531#endif
5532#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5533 lsl lr, lr, #16
5534 asr lr, lr, #16
5535#else
5536 sbfx lr, lr, #0, #16
5537#endif
5538 mla r12, r10, lr, r12
5539#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5540 mov r10, #0xff
5541 orr r10, r10, #0xc00
5542#else
5543 mov r10, #0xcff
5544#endif
5545#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5546 lsl lr, r7, #16
5547 asr lr, lr, #16
5548#else
5549 sbfx lr, r7, #0, #16
5550#endif
5551 mul lr, r10, lr
5552#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5553 mov r10, #0x1
5554 orr r10, r10, #0xd00
5555#else
5556 mov r10, #0xd01
5557#endif
5558#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5559 lsl lr, lr, #16
5560 asr lr, lr, #16
5561#else
5562 sbfx lr, lr, #0, #16
5563#endif
5564 lsr r12, r12, #16
5565 mla r7, r10, lr, r7
5566#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5567 lsr r7, r7, #16
5568 orr r7, r7, r12, lsl #16
5569 ror r7, r7, #16
5570#else
5571 bfi r7, r12, #0, #16
5572#endif
5573#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5574#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5575 ssub16 r12, r8, r9
5576 sadd16 r8, r8, r9
5577 smultt r9, r11, r12
5578 smultb r12, r11, r12
5579 smultb lr, r10, r12
5580 smlabb r12, r10, lr, r12
5581 smultb lr, r10, r9
5582 smlabb r9, r10, lr, r9
5583 pkhtb r9, r9, r12, ASR #16
5584#else
5585 sub lr, r8, r9
5586 add r10, r8, r9
5587#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5588 bic r9, r9, #0xff
5589 bic r9, r9, #0xff00
5590#else
5591 bfc r9, #0, #16
5592#endif
5593#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5594 bic r8, r8, #0xff
5595 bic r8, r8, #0xff00
5596#else
5597 bfc r8, #0, #16
5598#endif
5599 sub r12, r8, r9
5600 add r8, r8, r9
5601#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5602 lsr r12, r12, #16
5603 orr r12, r12, lr, lsl #16
5604 ror r12, r12, #16
5605#else
5606 bfi r12, lr, #0, #16
5607#endif
5608#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5609 lsr r8, r8, #16
5610 orr r8, r8, r10, lsl #16
5611 ror r8, r8, #16
5612#else
5613 bfi r8, r10, #0, #16
5614#endif
5615#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5616 asr lr, r11, #16
5617#else
5618 sbfx lr, r11, #16, #16
5619#endif
5620 asr r10, r12, #16
5621 mul r9, lr, r10
5622#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5623 lsl r12, r12, #16
5624 asr r12, r12, #16
5625#else
5626 sbfx r12, r12, #0, #16
5627#endif
5628 mul r12, lr, r12
5629#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5630 mov r10, #0xff
5631 orr r10, r10, #0xc00
5632#else
5633 mov r10, #0xcff
5634#endif
5635#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5636 lsl lr, r12, #16
5637 asr lr, lr, #16
5638#else
5639 sbfx lr, r12, #0, #16
5640#endif
5641 mul lr, r10, lr
5642#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5643 mov r10, #0x1
5644 orr r10, r10, #0xd00
5645#else
5646 mov r10, #0xd01
5647#endif
5648#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5649 lsl lr, lr, #16
5650 asr lr, lr, #16
5651#else
5652 sbfx lr, lr, #0, #16
5653#endif
5654 mla r12, r10, lr, r12
5655#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5656 mov r10, #0xff
5657 orr r10, r10, #0xc00
5658#else
5659 mov r10, #0xcff
5660#endif
5661#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5662 lsl lr, r9, #16
5663 asr lr, lr, #16
5664#else
5665 sbfx lr, r9, #0, #16
5666#endif
5667 mul lr, r10, lr
5668#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5669 mov r10, #0x1
5670 orr r10, r10, #0xd00
5671#else
5672 mov r10, #0xd01
5673#endif
5674#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5675 lsl lr, lr, #16
5676 asr lr, lr, #16
5677#else
5678 sbfx lr, lr, #0, #16
5679#endif
5680 lsr r12, r12, #16
5681 mla r9, r10, lr, r9
5682#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5683 lsr r9, r9, #16
5684 orr r9, r9, r12, lsl #16
5685 ror r9, r9, #16
5686#else
5687 bfi r9, r12, #0, #16
5688#endif
5689#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5690 ldr r11, [r1, #248]
5691#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5692 ssub16 r12, r2, r4
5693 sadd16 r2, r2, r4
5694 smulbt r4, r11, r12
5695 smulbb r12, r11, r12
5696 smultb lr, r10, r12
5697 smlabb r12, r10, lr, r12
5698 smultb lr, r10, r4
5699 smlabb r4, r10, lr, r4
5700 pkhtb r4, r4, r12, ASR #16
5701#else
5702 sub lr, r2, r4
5703 add r10, r2, r4
5704#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5705 bic r4, r4, #0xff
5706 bic r4, r4, #0xff00
5707#else
5708 bfc r4, #0, #16
5709#endif
5710#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5711 bic r2, r2, #0xff
5712 bic r2, r2, #0xff00
5713#else
5714 bfc r2, #0, #16
5715#endif
5716 sub r12, r2, r4
5717 add r2, r2, r4
5718#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5719 lsr r12, r12, #16
5720 orr r12, r12, lr, lsl #16
5721 ror r12, r12, #16
5722#else
5723 bfi r12, lr, #0, #16
5724#endif
5725#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5726 lsr r2, r2, #16
5727 orr r2, r2, r10, lsl #16
5728 ror r2, r2, #16
5729#else
5730 bfi r2, r10, #0, #16
5731#endif
5732#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5733 lsl lr, r11, #16
5734 asr lr, lr, #16
5735#else
5736 sbfx lr, r11, #0, #16
5737#endif
5738 asr r10, r12, #16
5739 mul r4, lr, r10
5740#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5741 lsl r12, r12, #16
5742 asr r12, r12, #16
5743#else
5744 sbfx r12, r12, #0, #16
5745#endif
5746 mul r12, lr, r12
5747#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5748 mov r10, #0xff
5749 orr r10, r10, #0xc00
5750#else
5751 mov r10, #0xcff
5752#endif
5753#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5754 lsl lr, r12, #16
5755 asr lr, lr, #16
5756#else
5757 sbfx lr, r12, #0, #16
5758#endif
5759 mul lr, r10, lr
5760#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5761 mov r10, #0x1
5762 orr r10, r10, #0xd00
5763#else
5764 mov r10, #0xd01
5765#endif
5766#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5767 lsl lr, lr, #16
5768 asr lr, lr, #16
5769#else
5770 sbfx lr, lr, #0, #16
5771#endif
5772 mla r12, r10, lr, r12
5773#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5774 mov r10, #0xff
5775 orr r10, r10, #0xc00
5776#else
5777 mov r10, #0xcff
5778#endif
5779#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5780 lsl lr, r4, #16
5781 asr lr, lr, #16
5782#else
5783 sbfx lr, r4, #0, #16
5784#endif
5785 mul lr, r10, lr
5786#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5787 mov r10, #0x1
5788 orr r10, r10, #0xd00
5789#else
5790 mov r10, #0xd01
5791#endif
5792#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5793 lsl lr, lr, #16
5794 asr lr, lr, #16
5795#else
5796 sbfx lr, lr, #0, #16
5797#endif
5798 lsr r12, r12, #16
5799 mla r4, r10, lr, r4
5800#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5801 lsr r4, r4, #16
5802 orr r4, r4, r12, lsl #16
5803 ror r4, r4, #16
5804#else
5805 bfi r4, r12, #0, #16
5806#endif
5807#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5808#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5809 ssub16 r12, r3, r5
5810 sadd16 r3, r3, r5
5811 smulbt r5, r11, r12
5812 smulbb r12, r11, r12
5813 smultb lr, r10, r12
5814 smlabb r12, r10, lr, r12
5815 smultb lr, r10, r5
5816 smlabb r5, r10, lr, r5
5817 pkhtb r5, r5, r12, ASR #16
5818#else
5819 sub lr, r3, r5
5820 add r10, r3, r5
5821#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5822 bic r5, r5, #0xff
5823 bic r5, r5, #0xff00
5824#else
5825 bfc r5, #0, #16
5826#endif
5827#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5828 bic r3, r3, #0xff
5829 bic r3, r3, #0xff00
5830#else
5831 bfc r3, #0, #16
5832#endif
5833 sub r12, r3, r5
5834 add r3, r3, r5
5835#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5836 lsr r12, r12, #16
5837 orr r12, r12, lr, lsl #16
5838 ror r12, r12, #16
5839#else
5840 bfi r12, lr, #0, #16
5841#endif
5842#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5843 lsr r3, r3, #16
5844 orr r3, r3, r10, lsl #16
5845 ror r3, r3, #16
5846#else
5847 bfi r3, r10, #0, #16
5848#endif
5849#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5850 lsl lr, r11, #16
5851 asr lr, lr, #16
5852#else
5853 sbfx lr, r11, #0, #16
5854#endif
5855 asr r10, r12, #16
5856 mul r5, lr, r10
5857#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5858 lsl r12, r12, #16
5859 asr r12, r12, #16
5860#else
5861 sbfx r12, r12, #0, #16
5862#endif
5863 mul r12, lr, r12
5864#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5865 mov r10, #0xff
5866 orr r10, r10, #0xc00
5867#else
5868 mov r10, #0xcff
5869#endif
5870#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5871 lsl lr, r12, #16
5872 asr lr, lr, #16
5873#else
5874 sbfx lr, r12, #0, #16
5875#endif
5876 mul lr, r10, lr
5877#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5878 mov r10, #0x1
5879 orr r10, r10, #0xd00
5880#else
5881 mov r10, #0xd01
5882#endif
5883#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5884 lsl lr, lr, #16
5885 asr lr, lr, #16
5886#else
5887 sbfx lr, lr, #0, #16
5888#endif
5889 mla r12, r10, lr, r12
5890#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5891 mov r10, #0xff
5892 orr r10, r10, #0xc00
5893#else
5894 mov r10, #0xcff
5895#endif
5896#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5897 lsl lr, r5, #16
5898 asr lr, lr, #16
5899#else
5900 sbfx lr, r5, #0, #16
5901#endif
5902 mul lr, r10, lr
5903#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5904 mov r10, #0x1
5905 orr r10, r10, #0xd00
5906#else
5907 mov r10, #0xd01
5908#endif
5909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5910 lsl lr, lr, #16
5911 asr lr, lr, #16
5912#else
5913 sbfx lr, lr, #0, #16
5914#endif
5915 lsr r12, r12, #16
5916 mla r5, r10, lr, r5
5917#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5918 lsr r5, r5, #16
5919 orr r5, r5, r12, lsl #16
5920 ror r5, r5, #16
5921#else
5922 bfi r5, r12, #0, #16
5923#endif
5924#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
5925#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
5926 ssub16 r12, r6, r8
5927 sadd16 r6, r6, r8
5928 smultt r8, r11, r12
5929 smultb r12, r11, r12
5930 smultb lr, r10, r12
5931 smlabb r12, r10, lr, r12
5932 smultb lr, r10, r8
5933 smlabb r8, r10, lr, r8
5934 pkhtb r8, r8, r12, ASR #16
5935#else
5936 sub lr, r6, r8
5937 add r10, r6, r8
5938#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5939 bic r8, r8, #0xff
5940 bic r8, r8, #0xff00
5941#else
5942 bfc r8, #0, #16
5943#endif
5944#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5945 bic r6, r6, #0xff
5946 bic r6, r6, #0xff00
5947#else
5948 bfc r6, #0, #16
5949#endif
5950 sub r12, r6, r8
5951 add r6, r6, r8
5952#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5953 lsr r12, r12, #16
5954 orr r12, r12, lr, lsl #16
5955 ror r12, r12, #16
5956#else
5957 bfi r12, lr, #0, #16
5958#endif
5959#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5960 lsr r6, r6, #16
5961 orr r6, r6, r10, lsl #16
5962 ror r6, r6, #16
5963#else
5964 bfi r6, r10, #0, #16
5965#endif
5966#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5967 asr lr, r11, #16
5968#else
5969 sbfx lr, r11, #16, #16
5970#endif
5971 asr r10, r12, #16
5972 mul r8, lr, r10
5973#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5974 lsl r12, r12, #16
5975 asr r12, r12, #16
5976#else
5977 sbfx r12, r12, #0, #16
5978#endif
5979 mul r12, lr, r12
5980#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5981 mov r10, #0xff
5982 orr r10, r10, #0xc00
5983#else
5984 mov r10, #0xcff
5985#endif
5986#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5987 lsl lr, r12, #16
5988 asr lr, lr, #16
5989#else
5990 sbfx lr, r12, #0, #16
5991#endif
5992 mul lr, r10, lr
5993#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5994 mov r10, #0x1
5995 orr r10, r10, #0xd00
5996#else
5997 mov r10, #0xd01
5998#endif
5999#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6000 lsl lr, lr, #16
6001 asr lr, lr, #16
6002#else
6003 sbfx lr, lr, #0, #16
6004#endif
6005 mla r12, r10, lr, r12
6006#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6007 mov r10, #0xff
6008 orr r10, r10, #0xc00
6009#else
6010 mov r10, #0xcff
6011#endif
6012#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6013 lsl lr, r8, #16
6014 asr lr, lr, #16
6015#else
6016 sbfx lr, r8, #0, #16
6017#endif
6018 mul lr, r10, lr
6019#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6020 mov r10, #0x1
6021 orr r10, r10, #0xd00
6022#else
6023 mov r10, #0xd01
6024#endif
6025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6026 lsl lr, lr, #16
6027 asr lr, lr, #16
6028#else
6029 sbfx lr, lr, #0, #16
6030#endif
6031 lsr r12, r12, #16
6032 mla r8, r10, lr, r8
6033#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6034 lsr r8, r8, #16
6035 orr r8, r8, r12, lsl #16
6036 ror r8, r8, #16
6037#else
6038 bfi r8, r12, #0, #16
6039#endif
6040#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6041#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6042 ssub16 r12, r7, r9
6043 sadd16 r7, r7, r9
6044 smultt r9, r11, r12
6045 smultb r12, r11, r12
6046 smultb lr, r10, r12
6047 smlabb r12, r10, lr, r12
6048 smultb lr, r10, r9
6049 smlabb r9, r10, lr, r9
6050 pkhtb r9, r9, r12, ASR #16
6051#else
6052 sub lr, r7, r9
6053 add r10, r7, r9
6054#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6055 bic r9, r9, #0xff
6056 bic r9, r9, #0xff00
6057#else
6058 bfc r9, #0, #16
6059#endif
6060#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6061 bic r7, r7, #0xff
6062 bic r7, r7, #0xff00
6063#else
6064 bfc r7, #0, #16
6065#endif
6066 sub r12, r7, r9
6067 add r7, r7, r9
6068#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6069 lsr r12, r12, #16
6070 orr r12, r12, lr, lsl #16
6071 ror r12, r12, #16
6072#else
6073 bfi r12, lr, #0, #16
6074#endif
6075#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6076 lsr r7, r7, #16
6077 orr r7, r7, r10, lsl #16
6078 ror r7, r7, #16
6079#else
6080 bfi r7, r10, #0, #16
6081#endif
6082#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6083 asr lr, r11, #16
6084#else
6085 sbfx lr, r11, #16, #16
6086#endif
6087 asr r10, r12, #16
6088 mul r9, lr, r10
6089#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6090 lsl r12, r12, #16
6091 asr r12, r12, #16
6092#else
6093 sbfx r12, r12, #0, #16
6094#endif
6095 mul r12, lr, r12
6096#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6097 mov r10, #0xff
6098 orr r10, r10, #0xc00
6099#else
6100 mov r10, #0xcff
6101#endif
6102#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6103 lsl lr, r12, #16
6104 asr lr, lr, #16
6105#else
6106 sbfx lr, r12, #0, #16
6107#endif
6108 mul lr, r10, lr
6109#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6110 mov r10, #0x1
6111 orr r10, r10, #0xd00
6112#else
6113 mov r10, #0xd01
6114#endif
6115#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6116 lsl lr, lr, #16
6117 asr lr, lr, #16
6118#else
6119 sbfx lr, lr, #0, #16
6120#endif
6121 mla r12, r10, lr, r12
6122#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6123 mov r10, #0xff
6124 orr r10, r10, #0xc00
6125#else
6126 mov r10, #0xcff
6127#endif
6128#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6129 lsl lr, r9, #16
6130 asr lr, lr, #16
6131#else
6132 sbfx lr, r9, #0, #16
6133#endif
6134 mul lr, r10, lr
6135#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6136 mov r10, #0x1
6137 orr r10, r10, #0xd00
6138#else
6139 mov r10, #0xd01
6140#endif
6141#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6142 lsl lr, lr, #16
6143 asr lr, lr, #16
6144#else
6145 sbfx lr, lr, #0, #16
6146#endif
6147 lsr r12, r12, #16
6148 mla r9, r10, lr, r9
6149#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6150 lsr r9, r9, #16
6151 orr r9, r9, r12, lsl #16
6152 ror r9, r9, #16
6153#else
6154 bfi r9, r12, #0, #16
6155#endif
6156#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6157#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6158#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6159 mov r11, #0xc0
6160 orr r11, r11, #0xaf00
6161#else
6162 mov r11, #0xafc0
6163#endif
6164#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6165 orr r11, r11, #0x130000
6166#else
6167 movt r11, #0x13
6168#endif
6169#else
6170#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6171 mov r11, #0xbf
6172 orr r11, r11, #0x4e00
6173#else
6174 mov r11, #0x4ebf
6175#endif
6176#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6177#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6178 smulwb r12, r11, r2
6179 smulwt lr, r11, r2
6180 smulbt r12, r10, r12
6181 smulbt lr, r10, lr
6182 pkhbt r12, r12, lr, LSL #16
6183 ssub16 r2, r2, r12
6184#else
6185#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6186 lsl r12, r2, #16
6187 asr r12, r12, #16
6188#else
6189 sbfx r12, r2, #0, #16
6190#endif
6191#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6192 asr lr, r2, #16
6193#else
6194 sbfx lr, r2, #16, #16
6195#endif
6196 mul r12, r11, r12
6197 mul lr, r11, lr
6198 asr r12, r12, #26
6199 asr lr, lr, #26
6200 mul r12, r10, r12
6201 mul lr, r10, lr
6202 sub lr, r2, lr, lsl #16
6203 sub r2, r2, r12
6204 lsr lr, lr, #16
6205#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6206 bic r2, r2, #0xff0000
6207 bic r2, r2, #0xff000000
6208 orr r2, r2, lr, lsl #16
6209#else
6210 bfi r2, lr, #16, #16
6211#endif
6212#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6213#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6214 smulwb r12, r11, r3
6215 smulwt lr, r11, r3
6216 smulbt r12, r10, r12
6217 smulbt lr, r10, lr
6218 pkhbt r12, r12, lr, LSL #16
6219 ssub16 r3, r3, r12
6220#else
6221#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6222 lsl r12, r3, #16
6223 asr r12, r12, #16
6224#else
6225 sbfx r12, r3, #0, #16
6226#endif
6227#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6228 asr lr, r3, #16
6229#else
6230 sbfx lr, r3, #16, #16
6231#endif
6232 mul r12, r11, r12
6233 mul lr, r11, lr
6234 asr r12, r12, #26
6235 asr lr, lr, #26
6236 mul r12, r10, r12
6237 mul lr, r10, lr
6238 sub lr, r3, lr, lsl #16
6239 sub r3, r3, r12
6240 lsr lr, lr, #16
6241#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6242 bic r3, r3, #0xff0000
6243 bic r3, r3, #0xff000000
6244 orr r3, r3, lr, lsl #16
6245#else
6246 bfi r3, lr, #16, #16
6247#endif
6248#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6249#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6250 smulwb r12, r11, r4
6251 smulwt lr, r11, r4
6252 smulbt r12, r10, r12
6253 smulbt lr, r10, lr
6254 pkhbt r12, r12, lr, LSL #16
6255 ssub16 r4, r4, r12
6256#else
6257#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6258 lsl r12, r4, #16
6259 asr r12, r12, #16
6260#else
6261 sbfx r12, r4, #0, #16
6262#endif
6263#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6264 asr lr, r4, #16
6265#else
6266 sbfx lr, r4, #16, #16
6267#endif
6268 mul r12, r11, r12
6269 mul lr, r11, lr
6270 asr r12, r12, #26
6271 asr lr, lr, #26
6272 mul r12, r10, r12
6273 mul lr, r10, lr
6274 sub lr, r4, lr, lsl #16
6275 sub r4, r4, r12
6276 lsr lr, lr, #16
6277#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6278 bic r4, r4, #0xff0000
6279 bic r4, r4, #0xff000000
6280 orr r4, r4, lr, lsl #16
6281#else
6282 bfi r4, lr, #16, #16
6283#endif
6284#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6285#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6286 smulwb r12, r11, r5
6287 smulwt lr, r11, r5
6288 smulbt r12, r10, r12
6289 smulbt lr, r10, lr
6290 pkhbt r12, r12, lr, LSL #16
6291 ssub16 r5, r5, r12
6292#else
6293#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6294 lsl r12, r5, #16
6295 asr r12, r12, #16
6296#else
6297 sbfx r12, r5, #0, #16
6298#endif
6299#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6300 asr lr, r5, #16
6301#else
6302 sbfx lr, r5, #16, #16
6303#endif
6304 mul r12, r11, r12
6305 mul lr, r11, lr
6306 asr r12, r12, #26
6307 asr lr, lr, #26
6308 mul r12, r10, r12
6309 mul lr, r10, lr
6310 sub lr, r5, lr, lsl #16
6311 sub r5, r5, r12
6312 lsr lr, lr, #16
6313#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6314 bic r5, r5, #0xff0000
6315 bic r5, r5, #0xff000000
6316 orr r5, r5, lr, lsl #16
6317#else
6318 bfi r5, lr, #16, #16
6319#endif
6320#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6321 ldr r11, [r1, #252]
6322#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6323 ssub16 r12, r2, r6
6324 sadd16 r2, r2, r6
6325 smulbt r6, r11, r12
6326 smulbb r12, r11, r12
6327 smultb lr, r10, r12
6328 smlabb r12, r10, lr, r12
6329 smultb lr, r10, r6
6330 smlabb r6, r10, lr, r6
6331 pkhtb r6, r6, r12, ASR #16
6332#else
6333 sub lr, r2, r6
6334 add r10, r2, r6
6335#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6336 bic r6, r6, #0xff
6337 bic r6, r6, #0xff00
6338#else
6339 bfc r6, #0, #16
6340#endif
6341#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6342 bic r2, r2, #0xff
6343 bic r2, r2, #0xff00
6344#else
6345 bfc r2, #0, #16
6346#endif
6347 sub r12, r2, r6
6348 add r2, r2, r6
6349#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6350 lsr r12, r12, #16
6351 orr r12, r12, lr, lsl #16
6352 ror r12, r12, #16
6353#else
6354 bfi r12, lr, #0, #16
6355#endif
6356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6357 lsr r2, r2, #16
6358 orr r2, r2, r10, lsl #16
6359 ror r2, r2, #16
6360#else
6361 bfi r2, r10, #0, #16
6362#endif
6363#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6364 lsl lr, r11, #16
6365 asr lr, lr, #16
6366#else
6367 sbfx lr, r11, #0, #16
6368#endif
6369 asr r10, r12, #16
6370 mul r6, lr, r10
6371#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6372 lsl r12, r12, #16
6373 asr r12, r12, #16
6374#else
6375 sbfx r12, r12, #0, #16
6376#endif
6377 mul r12, lr, r12
6378#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6379 mov r10, #0xff
6380 orr r10, r10, #0xc00
6381#else
6382 mov r10, #0xcff
6383#endif
6384#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6385 lsl lr, r12, #16
6386 asr lr, lr, #16
6387#else
6388 sbfx lr, r12, #0, #16
6389#endif
6390 mul lr, r10, lr
6391#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6392 mov r10, #0x1
6393 orr r10, r10, #0xd00
6394#else
6395 mov r10, #0xd01
6396#endif
6397#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6398 lsl lr, lr, #16
6399 asr lr, lr, #16
6400#else
6401 sbfx lr, lr, #0, #16
6402#endif
6403 mla r12, r10, lr, r12
6404#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6405 mov r10, #0xff
6406 orr r10, r10, #0xc00
6407#else
6408 mov r10, #0xcff
6409#endif
6410#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6411 lsl lr, r6, #16
6412 asr lr, lr, #16
6413#else
6414 sbfx lr, r6, #0, #16
6415#endif
6416 mul lr, r10, lr
6417#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6418 mov r10, #0x1
6419 orr r10, r10, #0xd00
6420#else
6421 mov r10, #0xd01
6422#endif
6423#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6424 lsl lr, lr, #16
6425 asr lr, lr, #16
6426#else
6427 sbfx lr, lr, #0, #16
6428#endif
6429 lsr r12, r12, #16
6430 mla r6, r10, lr, r6
6431#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6432 lsr r6, r6, #16
6433 orr r6, r6, r12, lsl #16
6434 ror r6, r6, #16
6435#else
6436 bfi r6, r12, #0, #16
6437#endif
6438#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6439#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6440 ssub16 r12, r3, r7
6441 sadd16 r3, r3, r7
6442 smulbt r7, r11, r12
6443 smulbb r12, r11, r12
6444 smultb lr, r10, r12
6445 smlabb r12, r10, lr, r12
6446 smultb lr, r10, r7
6447 smlabb r7, r10, lr, r7
6448 pkhtb r7, r7, r12, ASR #16
6449#else
6450 sub lr, r3, r7
6451 add r10, r3, r7
6452#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6453 bic r7, r7, #0xff
6454 bic r7, r7, #0xff00
6455#else
6456 bfc r7, #0, #16
6457#endif
6458#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6459 bic r3, r3, #0xff
6460 bic r3, r3, #0xff00
6461#else
6462 bfc r3, #0, #16
6463#endif
6464 sub r12, r3, r7
6465 add r3, r3, r7
6466#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6467 lsr r12, r12, #16
6468 orr r12, r12, lr, lsl #16
6469 ror r12, r12, #16
6470#else
6471 bfi r12, lr, #0, #16
6472#endif
6473#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6474 lsr r3, r3, #16
6475 orr r3, r3, r10, lsl #16
6476 ror r3, r3, #16
6477#else
6478 bfi r3, r10, #0, #16
6479#endif
6480#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6481 lsl lr, r11, #16
6482 asr lr, lr, #16
6483#else
6484 sbfx lr, r11, #0, #16
6485#endif
6486 asr r10, r12, #16
6487 mul r7, lr, r10
6488#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6489 lsl r12, r12, #16
6490 asr r12, r12, #16
6491#else
6492 sbfx r12, r12, #0, #16
6493#endif
6494 mul r12, lr, r12
6495#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6496 mov r10, #0xff
6497 orr r10, r10, #0xc00
6498#else
6499 mov r10, #0xcff
6500#endif
6501#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6502 lsl lr, r12, #16
6503 asr lr, lr, #16
6504#else
6505 sbfx lr, r12, #0, #16
6506#endif
6507 mul lr, r10, lr
6508#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6509 mov r10, #0x1
6510 orr r10, r10, #0xd00
6511#else
6512 mov r10, #0xd01
6513#endif
6514#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6515 lsl lr, lr, #16
6516 asr lr, lr, #16
6517#else
6518 sbfx lr, lr, #0, #16
6519#endif
6520 mla r12, r10, lr, r12
6521#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6522 mov r10, #0xff
6523 orr r10, r10, #0xc00
6524#else
6525 mov r10, #0xcff
6526#endif
6527#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6528 lsl lr, r7, #16
6529 asr lr, lr, #16
6530#else
6531 sbfx lr, r7, #0, #16
6532#endif
6533 mul lr, r10, lr
6534#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6535 mov r10, #0x1
6536 orr r10, r10, #0xd00
6537#else
6538 mov r10, #0xd01
6539#endif
6540#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6541 lsl lr, lr, #16
6542 asr lr, lr, #16
6543#else
6544 sbfx lr, lr, #0, #16
6545#endif
6546 lsr r12, r12, #16
6547 mla r7, r10, lr, r7
6548#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6549 lsr r7, r7, #16
6550 orr r7, r7, r12, lsl #16
6551 ror r7, r7, #16
6552#else
6553 bfi r7, r12, #0, #16
6554#endif
6555#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6556#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6557 ssub16 r12, r4, r8
6558 sadd16 r4, r4, r8
6559 smulbt r8, r11, r12
6560 smulbb r12, r11, r12
6561 smultb lr, r10, r12
6562 smlabb r12, r10, lr, r12
6563 smultb lr, r10, r8
6564 smlabb r8, r10, lr, r8
6565 pkhtb r8, r8, r12, ASR #16
6566#else
6567 sub lr, r4, r8
6568 add r10, r4, r8
6569#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6570 bic r8, r8, #0xff
6571 bic r8, r8, #0xff00
6572#else
6573 bfc r8, #0, #16
6574#endif
6575#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6576 bic r4, r4, #0xff
6577 bic r4, r4, #0xff00
6578#else
6579 bfc r4, #0, #16
6580#endif
6581 sub r12, r4, r8
6582 add r4, r4, r8
6583#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6584 lsr r12, r12, #16
6585 orr r12, r12, lr, lsl #16
6586 ror r12, r12, #16
6587#else
6588 bfi r12, lr, #0, #16
6589#endif
6590#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6591 lsr r4, r4, #16
6592 orr r4, r4, r10, lsl #16
6593 ror r4, r4, #16
6594#else
6595 bfi r4, r10, #0, #16
6596#endif
6597#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6598 lsl lr, r11, #16
6599 asr lr, lr, #16
6600#else
6601 sbfx lr, r11, #0, #16
6602#endif
6603 asr r10, r12, #16
6604 mul r8, lr, r10
6605#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6606 lsl r12, r12, #16
6607 asr r12, r12, #16
6608#else
6609 sbfx r12, r12, #0, #16
6610#endif
6611 mul r12, lr, r12
6612#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6613 mov r10, #0xff
6614 orr r10, r10, #0xc00
6615#else
6616 mov r10, #0xcff
6617#endif
6618#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6619 lsl lr, r12, #16
6620 asr lr, lr, #16
6621#else
6622 sbfx lr, r12, #0, #16
6623#endif
6624 mul lr, r10, lr
6625#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6626 mov r10, #0x1
6627 orr r10, r10, #0xd00
6628#else
6629 mov r10, #0xd01
6630#endif
6631#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6632 lsl lr, lr, #16
6633 asr lr, lr, #16
6634#else
6635 sbfx lr, lr, #0, #16
6636#endif
6637 mla r12, r10, lr, r12
6638#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6639 mov r10, #0xff
6640 orr r10, r10, #0xc00
6641#else
6642 mov r10, #0xcff
6643#endif
6644#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6645 lsl lr, r8, #16
6646 asr lr, lr, #16
6647#else
6648 sbfx lr, r8, #0, #16
6649#endif
6650 mul lr, r10, lr
6651#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6652 mov r10, #0x1
6653 orr r10, r10, #0xd00
6654#else
6655 mov r10, #0xd01
6656#endif
6657#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6658 lsl lr, lr, #16
6659 asr lr, lr, #16
6660#else
6661 sbfx lr, lr, #0, #16
6662#endif
6663 lsr r12, r12, #16
6664 mla r8, r10, lr, r8
6665#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6666 lsr r8, r8, #16
6667 orr r8, r8, r12, lsl #16
6668 ror r8, r8, #16
6669#else
6670 bfi r8, r12, #0, #16
6671#endif
6672#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6673#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6674 ssub16 r12, r5, r9
6675 sadd16 r5, r5, r9
6676 smulbt r9, r11, r12
6677 smulbb r12, r11, r12
6678 smultb lr, r10, r12
6679 smlabb r12, r10, lr, r12
6680 smultb lr, r10, r9
6681 smlabb r9, r10, lr, r9
6682 pkhtb r9, r9, r12, ASR #16
6683#else
6684 sub lr, r5, r9
6685 add r10, r5, r9
6686#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6687 bic r9, r9, #0xff
6688 bic r9, r9, #0xff00
6689#else
6690 bfc r9, #0, #16
6691#endif
6692#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6693 bic r5, r5, #0xff
6694 bic r5, r5, #0xff00
6695#else
6696 bfc r5, #0, #16
6697#endif
6698 sub r12, r5, r9
6699 add r5, r5, r9
6700#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6701 lsr r12, r12, #16
6702 orr r12, r12, lr, lsl #16
6703 ror r12, r12, #16
6704#else
6705 bfi r12, lr, #0, #16
6706#endif
6707#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6708 lsr r5, r5, #16
6709 orr r5, r5, r10, lsl #16
6710 ror r5, r5, #16
6711#else
6712 bfi r5, r10, #0, #16
6713#endif
6714#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6715 lsl lr, r11, #16
6716 asr lr, lr, #16
6717#else
6718 sbfx lr, r11, #0, #16
6719#endif
6720 asr r10, r12, #16
6721 mul r9, lr, r10
6722#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6723 lsl r12, r12, #16
6724 asr r12, r12, #16
6725#else
6726 sbfx r12, r12, #0, #16
6727#endif
6728 mul r12, lr, r12
6729#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6730 mov r10, #0xff
6731 orr r10, r10, #0xc00
6732#else
6733 mov r10, #0xcff
6734#endif
6735#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6736 lsl lr, r12, #16
6737 asr lr, lr, #16
6738#else
6739 sbfx lr, r12, #0, #16
6740#endif
6741 mul lr, r10, lr
6742#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6743 mov r10, #0x1
6744 orr r10, r10, #0xd00
6745#else
6746 mov r10, #0xd01
6747#endif
6748#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6749 lsl lr, lr, #16
6750 asr lr, lr, #16
6751#else
6752 sbfx lr, lr, #0, #16
6753#endif
6754 mla r12, r10, lr, r12
6755#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6756 mov r10, #0xff
6757 orr r10, r10, #0xc00
6758#else
6759 mov r10, #0xcff
6760#endif
6761#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6762 lsl lr, r9, #16
6763 asr lr, lr, #16
6764#else
6765 sbfx lr, r9, #0, #16
6766#endif
6767 mul lr, r10, lr
6768#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6769 mov r10, #0x1
6770 orr r10, r10, #0xd00
6771#else
6772 mov r10, #0xd01
6773#endif
6774#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6775 lsl lr, lr, #16
6776 asr lr, lr, #16
6777#else
6778 sbfx lr, lr, #0, #16
6779#endif
6780 lsr r12, r12, #16
6781 mla r9, r10, lr, r9
6782#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6783 lsr r9, r9, #16
6784 orr r9, r9, r12, lsl #16
6785 ror r9, r9, #16
6786#else
6787 bfi r9, r12, #0, #16
6788#endif
6789#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6790 ldr r11, [r1, #254]
6791#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6792 smulbb r12, r11, r2
6793 smulbt r2, r11, r2
6794 smultb lr, r10, r12
6795 smlabb r12, r10, lr, r12
6796 smultb lr, r10, r2
6797 smlabb r2, r10, lr, r2
6798 pkhtb r2, r2, r12, ASR #16
6799#else
6800#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6801 lsl lr, r11, #16
6802 asr lr, lr, #16
6803#else
6804 sbfx lr, r11, #0, #16
6805#endif
6806#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6807 lsl r12, r2, #16
6808 asr r12, r12, #16
6809#else
6810 sbfx r12, r2, #0, #16
6811#endif
6812 mul r12, lr, r12
6813#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6814 asr r2, r2, #16
6815#else
6816 sbfx r2, r2, #16, #16
6817#endif
6818 mul r2, lr, r2
6819#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6820 mov r10, #0xff
6821 orr r10, r10, #0xc00
6822#else
6823 mov r10, #0xcff
6824#endif
6825 mul lr, r10, r12
6826#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6827 mov r10, #0x1
6828 orr r10, r10, #0xd00
6829#else
6830 mov r10, #0xd01
6831#endif
6832#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6833 lsl lr, lr, #16
6834 asr lr, lr, #16
6835#else
6836 sbfx lr, lr, #0, #16
6837#endif
6838 mla r12, r10, lr, r12
6839#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6840 mov r10, #0xff
6841 orr r10, r10, #0xc00
6842#else
6843 mov r10, #0xcff
6844#endif
6845#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6846 lsl lr, r2, #16
6847 asr lr, lr, #16
6848#else
6849 sbfx lr, r2, #0, #16
6850#endif
6851 mul lr, r10, lr
6852#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6853 mov r10, #0x1
6854 orr r10, r10, #0xd00
6855#else
6856 mov r10, #0xd01
6857#endif
6858#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6859 lsl lr, lr, #16
6860 asr lr, lr, #16
6861#else
6862 sbfx lr, lr, #0, #16
6863#endif
6864 lsr r12, r12, #16
6865 mla r2, r10, lr, r2
6866#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6867 lsr r2, r2, #16
6868 orr r2, r2, r12, lsl #16
6869 ror r2, r2, #16
6870#else
6871 bfi r2, r12, #0, #16
6872#endif
6873#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6874#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6875 smulbb r12, r11, r3
6876 smulbt r3, r11, r3
6877 smultb lr, r10, r12
6878 smlabb r12, r10, lr, r12
6879 smultb lr, r10, r3
6880 smlabb r3, r10, lr, r3
6881 pkhtb r3, r3, r12, ASR #16
6882#else
6883#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6884 lsl lr, r11, #16
6885 asr lr, lr, #16
6886#else
6887 sbfx lr, r11, #0, #16
6888#endif
6889#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6890 lsl r12, r3, #16
6891 asr r12, r12, #16
6892#else
6893 sbfx r12, r3, #0, #16
6894#endif
6895 mul r12, lr, r12
6896#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6897 asr r3, r3, #16
6898#else
6899 sbfx r3, r3, #16, #16
6900#endif
6901 mul r3, lr, r3
6902#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6903 mov r10, #0xff
6904 orr r10, r10, #0xc00
6905#else
6906 mov r10, #0xcff
6907#endif
6908 mul lr, r10, r12
6909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6910 mov r10, #0x1
6911 orr r10, r10, #0xd00
6912#else
6913 mov r10, #0xd01
6914#endif
6915#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6916 lsl lr, lr, #16
6917 asr lr, lr, #16
6918#else
6919 sbfx lr, lr, #0, #16
6920#endif
6921 mla r12, r10, lr, r12
6922#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6923 mov r10, #0xff
6924 orr r10, r10, #0xc00
6925#else
6926 mov r10, #0xcff
6927#endif
6928#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6929 lsl lr, r3, #16
6930 asr lr, lr, #16
6931#else
6932 sbfx lr, r3, #0, #16
6933#endif
6934 mul lr, r10, lr
6935#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6936 mov r10, #0x1
6937 orr r10, r10, #0xd00
6938#else
6939 mov r10, #0xd01
6940#endif
6941#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6942 lsl lr, lr, #16
6943 asr lr, lr, #16
6944#else
6945 sbfx lr, lr, #0, #16
6946#endif
6947 lsr r12, r12, #16
6948 mla r3, r10, lr, r3
6949#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6950 lsr r3, r3, #16
6951 orr r3, r3, r12, lsl #16
6952 ror r3, r3, #16
6953#else
6954 bfi r3, r12, #0, #16
6955#endif
6956#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
6957#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
6958 smulbb r12, r11, r4
6959 smulbt r4, r11, r4
6960 smultb lr, r10, r12
6961 smlabb r12, r10, lr, r12
6962 smultb lr, r10, r4
6963 smlabb r4, r10, lr, r4
6964 pkhtb r4, r4, r12, ASR #16
6965#else
6966#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6967 lsl lr, r11, #16
6968 asr lr, lr, #16
6969#else
6970 sbfx lr, r11, #0, #16
6971#endif
6972#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6973 lsl r12, r4, #16
6974 asr r12, r12, #16
6975#else
6976 sbfx r12, r4, #0, #16
6977#endif
6978 mul r12, lr, r12
6979#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6980 asr r4, r4, #16
6981#else
6982 sbfx r4, r4, #16, #16
6983#endif
6984 mul r4, lr, r4
6985#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6986 mov r10, #0xff
6987 orr r10, r10, #0xc00
6988#else
6989 mov r10, #0xcff
6990#endif
6991 mul lr, r10, r12
6992#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6993 mov r10, #0x1
6994 orr r10, r10, #0xd00
6995#else
6996 mov r10, #0xd01
6997#endif
6998#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6999 lsl lr, lr, #16
7000 asr lr, lr, #16
7001#else
7002 sbfx lr, lr, #0, #16
7003#endif
7004 mla r12, r10, lr, r12
7005#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7006 mov r10, #0xff
7007 orr r10, r10, #0xc00
7008#else
7009 mov r10, #0xcff
7010#endif
7011#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7012 lsl lr, r4, #16
7013 asr lr, lr, #16
7014#else
7015 sbfx lr, r4, #0, #16
7016#endif
7017 mul lr, r10, lr
7018#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7019 mov r10, #0x1
7020 orr r10, r10, #0xd00
7021#else
7022 mov r10, #0xd01
7023#endif
7024#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7025 lsl lr, lr, #16
7026 asr lr, lr, #16
7027#else
7028 sbfx lr, lr, #0, #16
7029#endif
7030 lsr r12, r12, #16
7031 mla r4, r10, lr, r4
7032#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7033 lsr r4, r4, #16
7034 orr r4, r4, r12, lsl #16
7035 ror r4, r4, #16
7036#else
7037 bfi r4, r12, #0, #16
7038#endif
7039#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7040#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7041 smulbb r12, r11, r5
7042 smulbt r5, r11, r5
7043 smultb lr, r10, r12
7044 smlabb r12, r10, lr, r12
7045 smultb lr, r10, r5
7046 smlabb r5, r10, lr, r5
7047 pkhtb r5, r5, r12, ASR #16
7048#else
7049#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7050 lsl lr, r11, #16
7051 asr lr, lr, #16
7052#else
7053 sbfx lr, r11, #0, #16
7054#endif
7055#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7056 lsl r12, r5, #16
7057 asr r12, r12, #16
7058#else
7059 sbfx r12, r5, #0, #16
7060#endif
7061 mul r12, lr, r12
7062#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7063 asr r5, r5, #16
7064#else
7065 sbfx r5, r5, #16, #16
7066#endif
7067 mul r5, lr, r5
7068#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7069 mov r10, #0xff
7070 orr r10, r10, #0xc00
7071#else
7072 mov r10, #0xcff
7073#endif
7074 mul lr, r10, r12
7075#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7076 mov r10, #0x1
7077 orr r10, r10, #0xd00
7078#else
7079 mov r10, #0xd01
7080#endif
7081#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7082 lsl lr, lr, #16
7083 asr lr, lr, #16
7084#else
7085 sbfx lr, lr, #0, #16
7086#endif
7087 mla r12, r10, lr, r12
7088#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7089 mov r10, #0xff
7090 orr r10, r10, #0xc00
7091#else
7092 mov r10, #0xcff
7093#endif
7094#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7095 lsl lr, r5, #16
7096 asr lr, lr, #16
7097#else
7098 sbfx lr, r5, #0, #16
7099#endif
7100 mul lr, r10, lr
7101#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7102 mov r10, #0x1
7103 orr r10, r10, #0xd00
7104#else
7105 mov r10, #0xd01
7106#endif
7107#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7108 lsl lr, lr, #16
7109 asr lr, lr, #16
7110#else
7111 sbfx lr, lr, #0, #16
7112#endif
7113 lsr r12, r12, #16
7114 mla r5, r10, lr, r5
7115#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7116 lsr r5, r5, #16
7117 orr r5, r5, r12, lsl #16
7118 ror r5, r5, #16
7119#else
7120 bfi r5, r12, #0, #16
7121#endif
7122#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7123#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7124 smulbb r12, r11, r6
7125 smulbt r6, r11, r6
7126 smultb lr, r10, r12
7127 smlabb r12, r10, lr, r12
7128 smultb lr, r10, r6
7129 smlabb r6, r10, lr, r6
7130 pkhtb r6, r6, r12, ASR #16
7131#else
7132#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7133 lsl lr, r11, #16
7134 asr lr, lr, #16
7135#else
7136 sbfx lr, r11, #0, #16
7137#endif
7138#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7139 lsl r12, r6, #16
7140 asr r12, r12, #16
7141#else
7142 sbfx r12, r6, #0, #16
7143#endif
7144 mul r12, lr, r12
7145#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7146 asr r6, r6, #16
7147#else
7148 sbfx r6, r6, #16, #16
7149#endif
7150 mul r6, lr, r6
7151#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7152 mov r10, #0xff
7153 orr r10, r10, #0xc00
7154#else
7155 mov r10, #0xcff
7156#endif
7157 mul lr, r10, r12
7158#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7159 mov r10, #0x1
7160 orr r10, r10, #0xd00
7161#else
7162 mov r10, #0xd01
7163#endif
7164#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7165 lsl lr, lr, #16
7166 asr lr, lr, #16
7167#else
7168 sbfx lr, lr, #0, #16
7169#endif
7170 mla r12, r10, lr, r12
7171#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7172 mov r10, #0xff
7173 orr r10, r10, #0xc00
7174#else
7175 mov r10, #0xcff
7176#endif
7177#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7178 lsl lr, r6, #16
7179 asr lr, lr, #16
7180#else
7181 sbfx lr, r6, #0, #16
7182#endif
7183 mul lr, r10, lr
7184#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7185 mov r10, #0x1
7186 orr r10, r10, #0xd00
7187#else
7188 mov r10, #0xd01
7189#endif
7190#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7191 lsl lr, lr, #16
7192 asr lr, lr, #16
7193#else
7194 sbfx lr, lr, #0, #16
7195#endif
7196 lsr r12, r12, #16
7197 mla r6, r10, lr, r6
7198#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7199 lsr r6, r6, #16
7200 orr r6, r6, r12, lsl #16
7201 ror r6, r6, #16
7202#else
7203 bfi r6, r12, #0, #16
7204#endif
7205#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7206#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7207 smulbb r12, r11, r7
7208 smulbt r7, r11, r7
7209 smultb lr, r10, r12
7210 smlabb r12, r10, lr, r12
7211 smultb lr, r10, r7
7212 smlabb r7, r10, lr, r7
7213 pkhtb r7, r7, r12, ASR #16
7214#else
7215#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7216 lsl lr, r11, #16
7217 asr lr, lr, #16
7218#else
7219 sbfx lr, r11, #0, #16
7220#endif
7221#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7222 lsl r12, r7, #16
7223 asr r12, r12, #16
7224#else
7225 sbfx r12, r7, #0, #16
7226#endif
7227 mul r12, lr, r12
7228#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7229 asr r7, r7, #16
7230#else
7231 sbfx r7, r7, #16, #16
7232#endif
7233 mul r7, lr, r7
7234#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7235 mov r10, #0xff
7236 orr r10, r10, #0xc00
7237#else
7238 mov r10, #0xcff
7239#endif
7240 mul lr, r10, r12
7241#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7242 mov r10, #0x1
7243 orr r10, r10, #0xd00
7244#else
7245 mov r10, #0xd01
7246#endif
7247#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7248 lsl lr, lr, #16
7249 asr lr, lr, #16
7250#else
7251 sbfx lr, lr, #0, #16
7252#endif
7253 mla r12, r10, lr, r12
7254#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7255 mov r10, #0xff
7256 orr r10, r10, #0xc00
7257#else
7258 mov r10, #0xcff
7259#endif
7260#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7261 lsl lr, r7, #16
7262 asr lr, lr, #16
7263#else
7264 sbfx lr, r7, #0, #16
7265#endif
7266 mul lr, r10, lr
7267#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7268 mov r10, #0x1
7269 orr r10, r10, #0xd00
7270#else
7271 mov r10, #0xd01
7272#endif
7273#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7274 lsl lr, lr, #16
7275 asr lr, lr, #16
7276#else
7277 sbfx lr, lr, #0, #16
7278#endif
7279 lsr r12, r12, #16
7280 mla r7, r10, lr, r7
7281#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7282 lsr r7, r7, #16
7283 orr r7, r7, r12, lsl #16
7284 ror r7, r7, #16
7285#else
7286 bfi r7, r12, #0, #16
7287#endif
7288#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7289#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7290 smulbb r12, r11, r8
7291 smulbt r8, r11, r8
7292 smultb lr, r10, r12
7293 smlabb r12, r10, lr, r12
7294 smultb lr, r10, r8
7295 smlabb r8, r10, lr, r8
7296 pkhtb r8, r8, r12, ASR #16
7297#else
7298#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7299 lsl lr, r11, #16
7300 asr lr, lr, #16
7301#else
7302 sbfx lr, r11, #0, #16
7303#endif
7304#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7305 lsl r12, r8, #16
7306 asr r12, r12, #16
7307#else
7308 sbfx r12, r8, #0, #16
7309#endif
7310 mul r12, lr, r12
7311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7312 asr r8, r8, #16
7313#else
7314 sbfx r8, r8, #16, #16
7315#endif
7316 mul r8, lr, r8
7317#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7318 mov r10, #0xff
7319 orr r10, r10, #0xc00
7320#else
7321 mov r10, #0xcff
7322#endif
7323 mul lr, r10, r12
7324#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7325 mov r10, #0x1
7326 orr r10, r10, #0xd00
7327#else
7328 mov r10, #0xd01
7329#endif
7330#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7331 lsl lr, lr, #16
7332 asr lr, lr, #16
7333#else
7334 sbfx lr, lr, #0, #16
7335#endif
7336 mla r12, r10, lr, r12
7337#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7338 mov r10, #0xff
7339 orr r10, r10, #0xc00
7340#else
7341 mov r10, #0xcff
7342#endif
7343#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7344 lsl lr, r8, #16
7345 asr lr, lr, #16
7346#else
7347 sbfx lr, r8, #0, #16
7348#endif
7349 mul lr, r10, lr
7350#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7351 mov r10, #0x1
7352 orr r10, r10, #0xd00
7353#else
7354 mov r10, #0xd01
7355#endif
7356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7357 lsl lr, lr, #16
7358 asr lr, lr, #16
7359#else
7360 sbfx lr, lr, #0, #16
7361#endif
7362 lsr r12, r12, #16
7363 mla r8, r10, lr, r8
7364#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7365 lsr r8, r8, #16
7366 orr r8, r8, r12, lsl #16
7367 ror r8, r8, #16
7368#else
7369 bfi r8, r12, #0, #16
7370#endif
7371#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7372#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7373 smulbb r12, r11, r9
7374 smulbt r9, r11, r9
7375 smultb lr, r10, r12
7376 smlabb r12, r10, lr, r12
7377 smultb lr, r10, r9
7378 smlabb r9, r10, lr, r9
7379 pkhtb r9, r9, r12, ASR #16
7380#else
7381#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7382 lsl lr, r11, #16
7383 asr lr, lr, #16
7384#else
7385 sbfx lr, r11, #0, #16
7386#endif
7387#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7388 lsl r12, r9, #16
7389 asr r12, r12, #16
7390#else
7391 sbfx r12, r9, #0, #16
7392#endif
7393 mul r12, lr, r12
7394#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7395 asr r9, r9, #16
7396#else
7397 sbfx r9, r9, #16, #16
7398#endif
7399 mul r9, lr, r9
7400#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7401 mov r10, #0xff
7402 orr r10, r10, #0xc00
7403#else
7404 mov r10, #0xcff
7405#endif
7406 mul lr, r10, r12
7407#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7408 mov r10, #0x1
7409 orr r10, r10, #0xd00
7410#else
7411 mov r10, #0xd01
7412#endif
7413#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7414 lsl lr, lr, #16
7415 asr lr, lr, #16
7416#else
7417 sbfx lr, lr, #0, #16
7418#endif
7419 mla r12, r10, lr, r12
7420#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7421 mov r10, #0xff
7422 orr r10, r10, #0xc00
7423#else
7424 mov r10, #0xcff
7425#endif
7426#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7427 lsl lr, r9, #16
7428 asr lr, lr, #16
7429#else
7430 sbfx lr, r9, #0, #16
7431#endif
7432 mul lr, r10, lr
7433#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7434 mov r10, #0x1
7435 orr r10, r10, #0xd00
7436#else
7437 mov r10, #0xd01
7438#endif
7439#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7440 lsl lr, lr, #16
7441 asr lr, lr, #16
7442#else
7443 sbfx lr, lr, #0, #16
7444#endif
7445 lsr r12, r12, #16
7446 mla r9, r10, lr, r9
7447#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7448 lsr r9, r9, #16
7449 orr r9, r9, r12, lsl #16
7450 ror r9, r9, #16
7451#else
7452 bfi r9, r12, #0, #16
7453#endif
7454#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7455 str r2, [r0]
7456 str r3, [r0, #64]
7457 str r4, [r0, #128]
7458 str r5, [r0, #192]
7459 str r6, [r0, #256]
7460 str r7, [r0, #320]
7461 str r8, [r0, #384]
7462 str r9, [r0, #448]
7463 ldr r2, [sp]
7464 subs r2, r2, #1
7465 add r0, r0, #4
7466 bne L_mlkem_invntt_loop_321
7467 add sp, sp, #8
7468 pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
7469 .size mlkem_arm32_invntt,.-mlkem_arm32_invntt
7470#ifndef __APPLE__
7471 .text
7472 .type L_mlkem_basemul_mont_zetas, %object
7473 .size L_mlkem_basemul_mont_zetas, 256
7474#else
7475 .section __DATA,__data
7476#endif /* __APPLE__ */
7477 # 4-byte aligned, 32-bit aligned
7478#ifndef __APPLE__
7479 .align 2
7480#else
7481 .p2align 2
7482#endif /* __APPLE__ */
7483L_mlkem_basemul_mont_zetas:
7484 .short 0x08ed,0x0a0b,0x0b9a,0x0714,0x05d5,0x058e,0x011f,0x00ca
7485 .short 0x0c56,0x026e,0x0629,0x00b6,0x03c2,0x084f,0x073f,0x05bc
7486 .short 0x023d,0x07d4,0x0108,0x017f,0x09c4,0x05b2,0x06bf,0x0c7f
7487 .short 0x0a58,0x03f9,0x02dc,0x0260,0x06fb,0x019b,0x0c34,0x06de
7488 .short 0x04c7,0x028c,0x0ad9,0x03f7,0x07f4,0x05d3,0x0be7,0x06f9
7489 .short 0x0204,0x0cf9,0x0bc1,0x0a67,0x06af,0x0877,0x007e,0x05bd
7490 .short 0x09ac,0x0ca7,0x0bf2,0x033e,0x006b,0x0774,0x0c0a,0x094a
7491 .short 0x0b73,0x03c1,0x071d,0x0a2c,0x01c0,0x08d8,0x02a5,0x0806
7492 .short 0x08b2,0x01ae,0x022b,0x034b,0x081e,0x0367,0x060e,0x0069
7493 .short 0x01a6,0x024b,0x00b1,0x0c16,0x0bde,0x0b35,0x0626,0x0675
7494 .short 0x0c0b,0x030a,0x0487,0x0c6e,0x09f8,0x05cb,0x0aa7,0x045f
7495 .short 0x06cb,0x0284,0x0999,0x015d,0x01a2,0x0149,0x0c65,0x0cb6
7496 .short 0x0331,0x0449,0x025b,0x0262,0x052a,0x07fc,0x0748,0x0180
7497 .short 0x0842,0x0c79,0x04c2,0x07ca,0x0997,0x00dc,0x085e,0x0686
7498 .short 0x0860,0x0707,0x0803,0x031a,0x071b,0x09ab,0x099b,0x01de
7499 .short 0x0c95,0x0bcd,0x03e4,0x03df,0x03be,0x074d,0x05f2,0x065c
7500 .text
7501 .align 4
7502 .globl mlkem_arm32_basemul_mont
7503 .type mlkem_arm32_basemul_mont, %function
7504mlkem_arm32_basemul_mont:
7505 push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
7506 adr r3, L_mlkem_basemul_mont_zetas
7507 add r3, r3, #0x80
7508#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7509#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7510 mov r12, #0x1
7511 orr r12, r12, #0xd00
7512#else
7513 mov r12, #0xd01
7514#endif
7515#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7516 orr r12, r12, #0xc000000
7517 orr r12, r12, #0xff0000
7518#else
7519 movt r12, #0xcff
7520#endif
7521#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7522 mov r8, #0
7523L_mlkem_basemul_mont_loop:
7524 ldm r1!, {r4, r5}
7525 ldm r2!, {r6, r7}
7526 ldr lr, [r3, r8]
7527 add r8, r8, #2
7528 push {r8}
7529 cmp r8, #0x80
7530#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7531 smultt r8, r4, r6
7532 smultt r10, r5, r7
7533 smultb r9, r12, r8
7534 smultb r11, r12, r10
7535 smlabb r8, r12, r9, r8
7536 smlabb r10, r12, r11, r10
7537 rsb r11, lr, #0
7538 smulbt r8, lr, r8
7539 smulbt r10, r11, r10
7540 smlabb r8, r4, r6, r8
7541 smlabb r10, r5, r7, r10
7542 smultb r9, r12, r8
7543 smultb r11, r12, r10
7544 smlabb r8, r12, r9, r8
7545 smlabb r10, r12, r11, r10
7546 smulbt r9, r4, r6
7547 smulbt r11, r5, r7
7548 smlatb r9, r4, r6, r9
7549 smlatb r11, r5, r7, r11
7550 smultb r6, r12, r9
7551 smultb r7, r12, r11
7552 smlabb r9, r12, r6, r9
7553 smlabb r11, r12, r7, r11
7554 pkhtb r4, r9, r8, ASR #16
7555 pkhtb r5, r11, r10, ASR #16
7556#else
7557 asr r8, r4, #16
7558 asr r10, r5, #16
7559 asr r9, r6, #16
7560 asr r11, r7, #16
7561 mul r8, r9, r8
7562 mul r10, r11, r10
7563#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7564 mov r12, #0xff
7565 orr r12, r12, #0xc00
7566#else
7567 mov r12, #0xcff
7568#endif
7569#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7570 lsl r9, r8, #16
7571 asr r9, r9, #16
7572#else
7573 sbfx r9, r8, #0, #16
7574#endif
7575#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7576 lsl r11, r10, #16
7577 asr r11, r11, #16
7578#else
7579 sbfx r11, r10, #0, #16
7580#endif
7581 mul r9, r12, r8
7582 mul r11, r12, r11
7583#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7584 mov r12, #0x1
7585 orr r12, r12, #0xd00
7586#else
7587 mov r12, #0xd01
7588#endif
7589#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7590 lsl r9, r9, #16
7591 asr r9, r9, #16
7592#else
7593 sbfx r9, r9, #0, #16
7594#endif
7595#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7596 lsl r11, r11, #16
7597 asr r11, r11, #16
7598#else
7599 sbfx r11, r11, #0, #16
7600#endif
7601 mla r8, r12, r9, r8
7602 mla r10, r12, r11, r10
7603 rsb r11, lr, #0
7604#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7605 lsl r9, lr, #16
7606 asr r9, r9, #16
7607#else
7608 sbfx r9, lr, #0, #16
7609#endif
7610#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7611 lsl r11, r11, #16
7612 asr r11, r11, #16
7613#else
7614 sbfx r11, r11, #0, #16
7615#endif
7616 asr r8, r8, #16
7617 asr r10, r10, #16
7618 mul r8, r9, r8
7619 mul r10, r11, r10
7620#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7621 lsl r9, r4, #16
7622 asr r9, r9, #16
7623#else
7624 sbfx r9, r4, #0, #16
7625#endif
7626#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7627 lsl r11, r5, #16
7628 asr r11, r11, #16
7629#else
7630 sbfx r11, r5, #0, #16
7631#endif
7632#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7633 lsl r12, r6, #16
7634 asr r12, r12, #16
7635#else
7636 sbfx r12, r6, #0, #16
7637#endif
7638 mla r8, r9, r12, r8
7639#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7640 lsl r12, r7, #16
7641 asr r12, r12, #16
7642#else
7643 sbfx r12, r7, #0, #16
7644#endif
7645 mla r10, r11, r12, r10
7646#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7647 mov r12, #0xff
7648 orr r12, r12, #0xc00
7649#else
7650 mov r12, #0xcff
7651#endif
7652#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7653 lsl r9, r8, #16
7654 asr r9, r9, #16
7655#else
7656 sbfx r9, r8, #0, #16
7657#endif
7658#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7659 lsl r11, r10, #16
7660 asr r11, r11, #16
7661#else
7662 sbfx r11, r10, #0, #16
7663#endif
7664 mul r9, r12, r9
7665 mul r11, r12, r11
7666#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7667 mov r12, #0x1
7668 orr r12, r12, #0xd00
7669#else
7670 mov r12, #0xd01
7671#endif
7672#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7673 lsl r9, r9, #16
7674 asr r9, r9, #16
7675#else
7676 sbfx r9, r9, #0, #16
7677#endif
7678#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7679 lsl r11, r11, #16
7680 asr r11, r11, #16
7681#else
7682 sbfx r11, r11, #0, #16
7683#endif
7684 mla r8, r12, r9, r8
7685 mla r10, r12, r11, r10
7686#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7687 lsl r9, r4, #16
7688 asr r9, r9, #16
7689#else
7690 sbfx r9, r4, #0, #16
7691#endif
7692#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7693 lsl r11, r5, #16
7694 asr r11, r11, #16
7695#else
7696 sbfx r11, r5, #0, #16
7697#endif
7698 asr r12, r6, #16
7699 mul r9, r12, r9
7700 asr r12, r7, #16
7701 mul r11, r12, r11
7702 asr r4, r4, #16
7703 asr r5, r5, #16
7704#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7705 lsl r12, r6, #16
7706 asr r12, r12, #16
7707#else
7708 sbfx r12, r6, #0, #16
7709#endif
7710 mla r9, r4, r12, r9
7711#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7712 lsl r12, r7, #16
7713 asr r12, r12, #16
7714#else
7715 sbfx r12, r7, #0, #16
7716#endif
7717 mla r11, r5, r12, r11
7718#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7719 mov r12, #0xff
7720 orr r12, r12, #0xc00
7721#else
7722 mov r12, #0xcff
7723#endif
7724#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7725 lsl r6, r9, #16
7726 asr r6, r6, #16
7727#else
7728 sbfx r6, r9, #0, #16
7729#endif
7730#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7731 lsl r7, r11, #16
7732 asr r7, r7, #16
7733#else
7734 sbfx r7, r11, #0, #16
7735#endif
7736 mul r6, r12, r6
7737 mul r7, r12, r7
7738#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7739 mov r12, #0x1
7740 orr r12, r12, #0xd00
7741#else
7742 mov r12, #0xd01
7743#endif
7744#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7745 lsl r4, r6, #16
7746 asr r4, r4, #16
7747#else
7748 sbfx r4, r6, #0, #16
7749#endif
7750#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7751 lsl r5, r7, #16
7752 asr r5, r5, #16
7753#else
7754 sbfx r5, r7, #0, #16
7755#endif
7756 mla r9, r12, r4, r9
7757 mla r11, r12, r5, r11
7758#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7759 bic r9, r9, #0xff
7760 bic r9, r9, #0xff00
7761#else
7762 bfc r9, #0, #16
7763#endif
7764#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7765 bic r11, r11, #0xff
7766 bic r11, r11, #0xff00
7767#else
7768 bfc r11, #0, #16
7769#endif
7770 orr r4, r9, r8, lsr #16
7771 orr r5, r11, r10, lsr #16
7772#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7773 stm r0!, {r4, r5}
7774 pop {r8}
7775 bne L_mlkem_basemul_mont_loop
7776 pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
7777 .size mlkem_arm32_basemul_mont,.-mlkem_arm32_basemul_mont
7778 .text
7779 .align 4
7780 .globl mlkem_arm32_basemul_mont_add
7781 .type mlkem_arm32_basemul_mont_add, %function
7782mlkem_arm32_basemul_mont_add:
7783 push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
7784 adr r3, L_mlkem_basemul_mont_zetas
7785 add r3, r3, #0x80
7786#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7787#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7788 mov r12, #0x1
7789 orr r12, r12, #0xd00
7790#else
7791 mov r12, #0xd01
7792#endif
7793#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7794 orr r12, r12, #0xc000000
7795 orr r12, r12, #0xff0000
7796#else
7797 movt r12, #0xcff
7798#endif
7799#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
7800 mov r8, #0
7801L_mlkem_arm32_basemul_mont_add_loop:
7802 ldm r1!, {r4, r5}
7803 ldm r2!, {r6, r7}
7804 ldr lr, [r3, r8]
7805 add r8, r8, #2
7806 push {r8}
7807 cmp r8, #0x80
7808#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
7809 smultt r8, r4, r6
7810 smultt r10, r5, r7
7811 smultb r9, r12, r8
7812 smultb r11, r12, r10
7813 smlabb r8, r12, r9, r8
7814 smlabb r10, r12, r11, r10
7815 rsb r11, lr, #0
7816 smulbt r8, lr, r8
7817 smulbt r10, r11, r10
7818 smlabb r8, r4, r6, r8
7819 smlabb r10, r5, r7, r10
7820 smultb r9, r12, r8
7821 smultb r11, r12, r10
7822 smlabb r8, r12, r9, r8
7823 smlabb r10, r12, r11, r10
7824 smulbt r9, r4, r6
7825 smulbt r11, r5, r7
7826 smlatb r9, r4, r6, r9
7827 smlatb r11, r5, r7, r11
7828 smultb r6, r12, r9
7829 smultb r7, r12, r11
7830 smlabb r9, r12, r6, r9
7831 smlabb r11, r12, r7, r11
7832 ldm r0, {r4, r5}
7833 pkhtb r9, r9, r8, ASR #16
7834 pkhtb r11, r11, r10, ASR #16
7835 sadd16 r4, r4, r9
7836 sadd16 r5, r5, r11
7837#else
7838 asr r8, r4, #16
7839 asr r10, r5, #16
7840 asr r9, r6, #16
7841 asr r11, r7, #16
7842 mul r8, r9, r8
7843 mul r10, r11, r10
7844#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7845 mov r12, #0xff
7846 orr r12, r12, #0xc00
7847#else
7848 mov r12, #0xcff
7849#endif
7850#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7851 lsl r9, r8, #16
7852 asr r9, r9, #16
7853#else
7854 sbfx r9, r8, #0, #16
7855#endif
7856#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7857 lsl r11, r10, #16
7858 asr r11, r11, #16
7859#else
7860 sbfx r11, r10, #0, #16
7861#endif
7862 mul r9, r12, r8
7863 mul r11, r12, r11
7864#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7865 mov r12, #0x1
7866 orr r12, r12, #0xd00
7867#else
7868 mov r12, #0xd01
7869#endif
7870#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7871 lsl r9, r9, #16
7872 asr r9, r9, #16
7873#else
7874 sbfx r9, r9, #0, #16
7875#endif
7876#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7877 lsl r11, r11, #16
7878 asr r11, r11, #16
7879#else
7880 sbfx r11, r11, #0, #16
7881#endif
7882 mla r8, r12, r9, r8
7883 mla r10, r12, r11, r10
7884 rsb r11, lr, #0
7885#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7886 lsl r9, lr, #16
7887 asr r9, r9, #16
7888#else
7889 sbfx r9, lr, #0, #16
7890#endif
7891#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7892 lsl r11, r11, #16
7893 asr r11, r11, #16
7894#else
7895 sbfx r11, r11, #0, #16
7896#endif
7897 asr r8, r8, #16
7898 asr r10, r10, #16
7899 mul r8, r9, r8
7900 mul r10, r11, r10
7901#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7902 lsl r9, r4, #16
7903 asr r9, r9, #16
7904#else
7905 sbfx r9, r4, #0, #16
7906#endif
7907#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7908 lsl r11, r5, #16
7909 asr r11, r11, #16
7910#else
7911 sbfx r11, r5, #0, #16
7912#endif
7913#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7914 lsl r12, r6, #16
7915 asr r12, r12, #16
7916#else
7917 sbfx r12, r6, #0, #16
7918#endif
7919 mla r8, r9, r12, r8
7920#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7921 lsl r12, r7, #16
7922 asr r12, r12, #16
7923#else
7924 sbfx r12, r7, #0, #16
7925#endif
7926 mla r10, r11, r12, r10
7927#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7928 mov r12, #0xff
7929 orr r12, r12, #0xc00
7930#else
7931 mov r12, #0xcff
7932#endif
7933#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7934 lsl r9, r8, #16
7935 asr r9, r9, #16
7936#else
7937 sbfx r9, r8, #0, #16
7938#endif
7939#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7940 lsl r11, r10, #16
7941 asr r11, r11, #16
7942#else
7943 sbfx r11, r10, #0, #16
7944#endif
7945 mul r9, r12, r9
7946 mul r11, r12, r11
7947#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7948 mov r12, #0x1
7949 orr r12, r12, #0xd00
7950#else
7951 mov r12, #0xd01
7952#endif
7953#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7954 lsl r9, r9, #16
7955 asr r9, r9, #16
7956#else
7957 sbfx r9, r9, #0, #16
7958#endif
7959#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7960 lsl r11, r11, #16
7961 asr r11, r11, #16
7962#else
7963 sbfx r11, r11, #0, #16
7964#endif
7965 mla r8, r12, r9, r8
7966 mla r10, r12, r11, r10
7967#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7968 lsl r9, r4, #16
7969 asr r9, r9, #16
7970#else
7971 sbfx r9, r4, #0, #16
7972#endif
7973#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7974 lsl r11, r5, #16
7975 asr r11, r11, #16
7976#else
7977 sbfx r11, r5, #0, #16
7978#endif
7979 asr r12, r6, #16
7980 mul r9, r12, r9
7981 asr r12, r7, #16
7982 mul r11, r12, r11
7983 asr r4, r4, #16
7984 asr r5, r5, #16
7985#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7986 lsl r12, r6, #16
7987 asr r12, r12, #16
7988#else
7989 sbfx r12, r6, #0, #16
7990#endif
7991 mla r9, r4, r12, r9
7992#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7993 lsl r12, r7, #16
7994 asr r12, r12, #16
7995#else
7996 sbfx r12, r7, #0, #16
7997#endif
7998 mla r11, r5, r12, r11
7999#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8000 mov r12, #0xff
8001 orr r12, r12, #0xc00
8002#else
8003 mov r12, #0xcff
8004#endif
8005#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8006 lsl r6, r9, #16
8007 asr r6, r6, #16
8008#else
8009 sbfx r6, r9, #0, #16
8010#endif
8011#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8012 lsl r7, r11, #16
8013 asr r7, r7, #16
8014#else
8015 sbfx r7, r11, #0, #16
8016#endif
8017 mul r6, r12, r6
8018 mul r7, r12, r7
8019#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8020 mov r12, #0x1
8021 orr r12, r12, #0xd00
8022#else
8023 mov r12, #0xd01
8024#endif
8025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8026 lsl r4, r6, #16
8027 asr r4, r4, #16
8028#else
8029 sbfx r4, r6, #0, #16
8030#endif
8031#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8032 lsl r5, r7, #16
8033 asr r5, r5, #16
8034#else
8035 sbfx r5, r7, #0, #16
8036#endif
8037 mla r9, r12, r4, r9
8038 mla r11, r12, r5, r11
8039 ldm r0, {r4, r5}
8040#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8041 bic r9, r9, #0xff
8042 bic r9, r9, #0xff00
8043#else
8044 bfc r9, #0, #16
8045#endif
8046#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8047 bic r11, r11, #0xff
8048 bic r11, r11, #0xff00
8049#else
8050 bfc r11, #0, #16
8051#endif
8052 orr r9, r9, r8, lsr #16
8053 orr r11, r11, r10, lsr #16
8054 add r8, r4, r9
8055 add r10, r5, r11
8056#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8057 bic r9, r9, #0xff
8058 bic r9, r9, #0xff00
8059#else
8060 bfc r9, #0, #16
8061#endif
8062#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8063 bic r11, r11, #0xff
8064 bic r11, r11, #0xff00
8065#else
8066 bfc r11, #0, #16
8067#endif
8068 add r4, r4, r9
8069 add r5, r5, r11
8070#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8071 lsr r4, r4, #16
8072 orr r4, r4, r8, lsl #16
8073 ror r4, r4, #16
8074#else
8075 bfi r4, r8, #0, #16
8076#endif
8077#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8078 lsr r5, r5, #16
8079 orr r5, r5, r10, lsl #16
8080 ror r5, r5, #16
8081#else
8082 bfi r5, r10, #0, #16
8083#endif
8084#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
8085 stm r0!, {r4, r5}
8086 pop {r8}
8087 bne L_mlkem_arm32_basemul_mont_add_loop
8088 pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
8089 .size mlkem_arm32_basemul_mont_add,.-mlkem_arm32_basemul_mont_add
8090 .text
8091 .align 4
8092 .globl mlkem_arm32_csubq
8093 .type mlkem_arm32_csubq, %function
8094mlkem_arm32_csubq:
8095 push {r4, r5, r6, r7, r8, r9, r10, r11, lr}
8096#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8097 mov r12, #0x1
8098 orr r12, r12, #0xd00
8099#else
8100 mov r12, #0xd01
8101#endif
8102#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8103 mov lr, #0x1
8104 orr lr, lr, #0xd00
8105#else
8106 mov lr, #0xd01
8107#endif
8108#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
8109#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8110 orr lr, lr, #0xd000000
8111 orr lr, lr, #0x10000
8112#else
8113 movt lr, #0xd01
8114#endif
8115#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
8116 mov r11, #0x8000
8117#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8118 orr r11, r11, #0x80000000
8119#else
8120 movt r11, #0x8000
8121#endif
8122 mov r1, #0x100
8123L_mlkem_arm32_csubq_loop:
8124 ldm r0, {r2, r3, r4, r5}
8125#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH >= 6)
8126 ssub16 r2, r2, lr
8127 ssub16 r3, r3, lr
8128 ssub16 r4, r4, lr
8129 ssub16 r5, r5, lr
8130 and r6, r2, r11
8131 and r7, r3, r11
8132 and r8, r4, r11
8133 and r9, r5, r11
8134 lsr r6, r6, #15
8135 lsr r7, r7, #15
8136 lsr r8, r8, #15
8137 lsr r9, r9, #15
8138 mul r6, r12, r6
8139 mul r7, r12, r7
8140 mul r8, r12, r8
8141 mul r9, r12, r9
8142 sadd16 r2, r2, r6
8143 sadd16 r3, r3, r7
8144 sadd16 r4, r4, r8
8145 sadd16 r5, r5, r9
8146#else
8147 sub r6, r2, lr
8148 sub r2, r2, lr, lsl #16
8149#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8150 lsr r2, r2, #16
8151 orr r2, r2, r6, lsl #16
8152 ror r2, r2, #16
8153#else
8154 bfi r2, r6, #0, #16
8155#endif
8156 sub r7, r3, lr
8157 sub r3, r3, lr, lsl #16
8158#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8159 lsr r3, r3, #16
8160 orr r3, r3, r7, lsl #16
8161 ror r3, r3, #16
8162#else
8163 bfi r3, r7, #0, #16
8164#endif
8165 sub r8, r4, lr
8166 sub r4, r4, lr, lsl #16
8167#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8168 lsr r4, r4, #16
8169 orr r4, r4, r8, lsl #16
8170 ror r4, r4, #16
8171#else
8172 bfi r4, r8, #0, #16
8173#endif
8174 sub r9, r5, lr
8175 sub r5, r5, lr, lsl #16
8176#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8177 lsr r5, r5, #16
8178 orr r5, r5, r9, lsl #16
8179 ror r5, r5, #16
8180#else
8181 bfi r5, r9, #0, #16
8182#endif
8183 and r6, r2, r11
8184 and r7, r3, r11
8185 and r8, r4, r11
8186 and r9, r5, r11
8187 lsr r6, r6, #15
8188 lsr r7, r7, #15
8189 lsr r8, r8, #15
8190 lsr r9, r9, #15
8191 mul r6, r12, r6
8192 mul r7, r12, r7
8193 mul r8, r12, r8
8194 mul r9, r12, r9
8195 add r10, r2, r6
8196#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8197 bic r6, r6, #0xff
8198 bic r6, r6, #0xff00
8199#else
8200 bfc r6, #0, #16
8201#endif
8202 add r2, r2, r6
8203#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8204 lsr r2, r2, #16
8205 orr r2, r2, r10, lsl #16
8206 ror r2, r2, #16
8207#else
8208 bfi r2, r10, #0, #16
8209#endif
8210 add r10, r3, r7
8211#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8212 bic r7, r7, #0xff
8213 bic r7, r7, #0xff00
8214#else
8215 bfc r7, #0, #16
8216#endif
8217 add r3, r3, r7
8218#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8219 lsr r3, r3, #16
8220 orr r3, r3, r10, lsl #16
8221 ror r3, r3, #16
8222#else
8223 bfi r3, r10, #0, #16
8224#endif
8225 add r10, r4, r8
8226#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8227 bic r8, r8, #0xff
8228 bic r8, r8, #0xff00
8229#else
8230 bfc r8, #0, #16
8231#endif
8232 add r4, r4, r8
8233#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8234 lsr r4, r4, #16
8235 orr r4, r4, r10, lsl #16
8236 ror r4, r4, #16
8237#else
8238 bfi r4, r10, #0, #16
8239#endif
8240 add r10, r5, r9
8241#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8242 bic r9, r9, #0xff
8243 bic r9, r9, #0xff00
8244#else
8245 bfc r9, #0, #16
8246#endif
8247 add r5, r5, r9
8248#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8249 lsr r5, r5, #16
8250 orr r5, r5, r10, lsl #16
8251 ror r5, r5, #16
8252#else
8253 bfi r5, r10, #0, #16
8254#endif
8255#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH >= 6 */
8256 stm r0!, {r2, r3, r4, r5}
8257 subs r1, r1, #8
8258 bne L_mlkem_arm32_csubq_loop
8259 pop {r4, r5, r6, r7, r8, r9, r10, r11, pc}
8260 .size mlkem_arm32_csubq,.-mlkem_arm32_csubq
8261 .text
8262 .align 4
8263 .globl mlkem_arm32_rej_uniform
8264 .type mlkem_arm32_rej_uniform, %function
8265mlkem_arm32_rej_uniform:
8266 push {r4, r5, r6, r7, r8, lr}
8267#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8268 mov r8, #0x1
8269 orr r8, r8, #0xd00
8270#else
8271 mov r8, #0xd01
8272#endif
8273 mov r12, #0
8274L_mlkem_arm32_rej_uniform_loop_no_fail:
8275 cmp r1, #8
8276 blt L_mlkem_arm32_rej_uniform_done_no_fail
8277 ldm r2!, {r4, r5, r6}
8278#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8279 lsl r7, r4, #20
8280 lsr r7, r7, #20
8281#else
8282 ubfx r7, r4, #0, #12
8283#endif
8284 strh r7, [r0, r12]
8285 sub lr, r7, r8
8286 lsr lr, lr, #31
8287 sub r1, r1, lr
8288 add r12, r12, lr, lsl #1
8289#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8290 lsl r7, r4, #8
8291 lsr r7, r7, #20
8292#else
8293 ubfx r7, r4, #12, #12
8294#endif
8295 strh r7, [r0, r12]
8296 sub lr, r7, r8
8297 lsr lr, lr, #31
8298 sub r1, r1, lr
8299 add r12, r12, lr, lsl #1
8300#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8301 lsr r7, r4, #24
8302#else
8303 ubfx r7, r4, #24, #8
8304#endif
8305#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8306 bic r7, r7, #0xf00
8307 ror r7, r7, #12
8308 orr r7, r7, r5, lsl #28
8309 ror r7, r7, #20
8310#else
8311 bfi r7, r5, #8, #4
8312#endif
8313 strh r7, [r0, r12]
8314 sub lr, r7, r8
8315 lsr lr, lr, #31
8316 sub r1, r1, lr
8317 add r12, r12, lr, lsl #1
8318#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8319 lsl r7, r5, #16
8320 lsr r7, r7, #20
8321#else
8322 ubfx r7, r5, #4, #12
8323#endif
8324 strh r7, [r0, r12]
8325 sub lr, r7, r8
8326 lsr lr, lr, #31
8327 sub r1, r1, lr
8328 add r12, r12, lr, lsl #1
8329#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8330 lsl r7, r5, #4
8331 lsr r7, r7, #20
8332#else
8333 ubfx r7, r5, #16, #12
8334#endif
8335 strh r7, [r0, r12]
8336 sub lr, r7, r8
8337 lsr lr, lr, #31
8338 sub r1, r1, lr
8339 add r12, r12, lr, lsl #1
8340#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8341 lsr r7, r5, #28
8342#else
8343 ubfx r7, r5, #28, #4
8344#endif
8345#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8346 bic r7, r7, #0xff0
8347 ror r7, r7, #12
8348 orr r7, r7, r6, lsl #24
8349 ror r7, r7, #20
8350#else
8351 bfi r7, r6, #4, #8
8352#endif
8353 strh r7, [r0, r12]
8354 sub lr, r7, r8
8355 lsr lr, lr, #31
8356 sub r1, r1, lr
8357 add r12, r12, lr, lsl #1
8358#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8359 lsl r7, r6, #12
8360 lsr r7, r7, #20
8361#else
8362 ubfx r7, r6, #8, #12
8363#endif
8364 strh r7, [r0, r12]
8365 sub lr, r7, r8
8366 lsr lr, lr, #31
8367 sub r1, r1, lr
8368 add r12, r12, lr, lsl #1
8369#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8370 lsr r7, r6, #20
8371#else
8372 ubfx r7, r6, #20, #12
8373#endif
8374 strh r7, [r0, r12]
8375 sub lr, r7, r8
8376 lsr lr, lr, #31
8377 sub r1, r1, lr
8378 add r12, r12, lr, lsl #1
8379 subs r3, r3, #12
8380 bne L_mlkem_arm32_rej_uniform_loop_no_fail
8381 b L_mlkem_arm32_rej_uniform_done
8382L_mlkem_arm32_rej_uniform_done_no_fail:
8383 cmp r1, #0
8384 beq L_mlkem_arm32_rej_uniform_done
8385L_mlkem_arm32_rej_uniform_loop:
8386 ldm r2!, {r4, r5, r6}
8387#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8388 lsl r7, r4, #20
8389 lsr r7, r7, #20
8390#else
8391 ubfx r7, r4, #0, #12
8392#endif
8393 cmp r7, r8
8394 bge L_mlkem_arm32_rej_uniform_fail_0
8395 strh r7, [r0, r12]
8396 subs r1, r1, #1
8397 add r12, r12, #2
8398 beq L_mlkem_arm32_rej_uniform_done
8399L_mlkem_arm32_rej_uniform_fail_0:
8400#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8401 lsl r7, r4, #8
8402 lsr r7, r7, #20
8403#else
8404 ubfx r7, r4, #12, #12
8405#endif
8406 cmp r7, r8
8407 bge L_mlkem_arm32_rej_uniform_fail_1
8408 strh r7, [r0, r12]
8409 subs r1, r1, #1
8410 add r12, r12, #2
8411 beq L_mlkem_arm32_rej_uniform_done
8412L_mlkem_arm32_rej_uniform_fail_1:
8413#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8414 lsr r7, r4, #24
8415#else
8416 ubfx r7, r4, #24, #8
8417#endif
8418#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8419 bic r7, r7, #0xf00
8420 ror r7, r7, #12
8421 orr r7, r7, r5, lsl #28
8422 ror r7, r7, #20
8423#else
8424 bfi r7, r5, #8, #4
8425#endif
8426 cmp r7, r8
8427 bge L_mlkem_arm32_rej_uniform_fail_2
8428 strh r7, [r0, r12]
8429 subs r1, r1, #1
8430 add r12, r12, #2
8431 beq L_mlkem_arm32_rej_uniform_done
8432L_mlkem_arm32_rej_uniform_fail_2:
8433#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8434 lsl r7, r5, #16
8435 lsr r7, r7, #20
8436#else
8437 ubfx r7, r5, #4, #12
8438#endif
8439 cmp r7, r8
8440 bge L_mlkem_arm32_rej_uniform_fail_3
8441 strh r7, [r0, r12]
8442 subs r1, r1, #1
8443 add r12, r12, #2
8444 beq L_mlkem_arm32_rej_uniform_done
8445L_mlkem_arm32_rej_uniform_fail_3:
8446#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8447 lsl r7, r5, #4
8448 lsr r7, r7, #20
8449#else
8450 ubfx r7, r5, #16, #12
8451#endif
8452 cmp r7, r8
8453 bge L_mlkem_arm32_rej_uniform_fail_4
8454 strh r7, [r0, r12]
8455 subs r1, r1, #1
8456 add r12, r12, #2
8457 beq L_mlkem_arm32_rej_uniform_done
8458L_mlkem_arm32_rej_uniform_fail_4:
8459#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8460 lsr r7, r5, #28
8461#else
8462 ubfx r7, r5, #28, #4
8463#endif
8464#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8465 bic r7, r7, #0xff0
8466 ror r7, r7, #12
8467 orr r7, r7, r6, lsl #24
8468 ror r7, r7, #20
8469#else
8470 bfi r7, r6, #4, #8
8471#endif
8472 cmp r7, r8
8473 bge L_mlkem_arm32_rej_uniform_fail_5
8474 strh r7, [r0, r12]
8475 subs r1, r1, #1
8476 add r12, r12, #2
8477 beq L_mlkem_arm32_rej_uniform_done
8478L_mlkem_arm32_rej_uniform_fail_5:
8479#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8480 lsl r7, r6, #12
8481 lsr r7, r7, #20
8482#else
8483 ubfx r7, r6, #8, #12
8484#endif
8485 cmp r7, r8
8486 bge L_mlkem_arm32_rej_uniform_fail_6
8487 strh r7, [r0, r12]
8488 subs r1, r1, #1
8489 add r12, r12, #2
8490 beq L_mlkem_arm32_rej_uniform_done
8491L_mlkem_arm32_rej_uniform_fail_6:
8492#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
8493 lsr r7, r6, #20
8494#else
8495 ubfx r7, r6, #20, #12
8496#endif
8497 cmp r7, r8
8498 bge L_mlkem_arm32_rej_uniform_fail_7
8499 strh r7, [r0, r12]
8500 subs r1, r1, #1
8501 add r12, r12, #2
8502 beq L_mlkem_arm32_rej_uniform_done
8503L_mlkem_arm32_rej_uniform_fail_7:
8504 subs r3, r3, #12
8505 bgt L_mlkem_arm32_rej_uniform_loop
8506L_mlkem_arm32_rej_uniform_done:
8507 lsr r0, r12, #1
8508 pop {r4, r5, r6, r7, r8, pc}
8509 .size mlkem_arm32_rej_uniform,.-mlkem_arm32_rej_uniform
8510#endif /* WOLFSSL_HAVE_MLKEM */
8511#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
8512#endif /* WOLFSSL_ARMASM */
8513
8514#if defined(__linux__) && defined(__ELF__)
8515.section .note.GNU-stack,"",%progbits
8516#endif
8517#endif /* !WOLFSSL_ARMASM_INLINE */