cjson
.github
workflows CI.yml ci-fuzz.yml
CONTRIBUTING.md
fuzzing
inputs test1 test10 test11 test2 test3 test3.bu test3.uf test3.uu test4 test5 test6 test7 test8 test9
.gitignore CMakeLists.txt afl-prepare-linux.sh afl.c afl.sh cjson_read_fuzzer.c fuzz_main.c json.dict ossfuzz.sh
library_config cJSONConfig.cmake.in cJSONConfigVersion.cmake.in libcjson.pc.in libcjson_utils.pc.in uninstall.cmake
tests
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.expected
json-patch-tests .editorconfig .gitignore .npmignore README.md cjson-utils-tests.json package.json spec_tests.json tests.json
unity
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.py
docs ThrowTheSwitchCodingStandard.md UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf UnityAssertionsReference.md UnityConfigurationGuide.md UnityGettingStartedGuide.md UnityHelperScriptsGuide.md license.txt
examples
example_1
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
makefile readme.txt
example_2
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
makefile readme.txt
example_3
helper UnityHelper.c UnityHelper.h
src ProductionCode.c ProductionCode.h ProductionCode2.c ProductionCode2.h
rakefile.rb rakefile_helper.rb readme.txt target_gcc_32.yml
unity_config.h
extras
eclipse error_parsers.txt
fixture
src unity_fixture.c unity_fixture.h unity_fixture_internals.h unity_fixture_malloc_overrides.h
rakefile.rb rakefile_helper.rb readme.txt
release build.info version.info
src unity.c unity.h unity_internals.h
.gitattributes .gitignore .travis.yml README.md
CMakeLists.txt cjson_add.c common.h compare_tests.c json_patch_tests.c minify_tests.c misc_tests.c misc_utils_tests.c old_utils_tests.c parse_array.c parse_examples.c parse_hex4.c parse_number.c parse_object.c parse_string.c parse_value.c parse_with_opts.c print_array.c print_number.c print_object.c print_string.c print_value.c readme_examples.c unity_setup.c
.editorconfig .gitattributes .gitignore .travis.yml CHANGELOG.md CMakeLists.txt CONTRIBUTORS.md LICENSE Makefile README.md SECURITY.md appveyor.yml cJSON.c cJSON.h cJSON_Utils.c cJSON_Utils.h test.c valgrind.supp
curl
.circleci config.yml
.github
ISSUE_TEMPLATE bug_report.yml config.yml docs.yml
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.yaml
workflows 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.yml
CODEOWNERS CONTRIBUTING.md FUNDING.yml dependabot.yml labeler.yml lock.yml stale.yml
CMake 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.cmake
LICENSES BSD-4-Clause-UC.txt ISC.txt curl.txt
docs
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.md
examples .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.c
internals 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.md
libcurl
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.inc
.gitignore ABI.md CMakeLists.txt Makefile.am Makefile.inc curl_easy_cleanup.md curl_easy_duphandle.md curl_easy_escape.md curl_easy_getinfo.md curl_easy_header.md curl_easy_init.md curl_easy_nextheader.md curl_easy_option_by_id.md curl_easy_option_by_name.md curl_easy_option_next.md curl_easy_pause.md curl_easy_perform.md curl_easy_recv.md curl_easy_reset.md curl_easy_send.md curl_easy_setopt.md curl_easy_ssls_export.md curl_easy_ssls_import.md curl_easy_strerror.md curl_easy_unescape.md curl_easy_upkeep.md curl_escape.md curl_formadd.md curl_formfree.md curl_formget.md curl_free.md curl_getdate.md curl_getenv.md curl_global_cleanup.md curl_global_init.md curl_global_init_mem.md curl_global_sslset.md curl_global_trace.md curl_mime_addpart.md curl_mime_data.md curl_mime_data_cb.md curl_mime_encoder.md curl_mime_filedata.md curl_mime_filename.md curl_mime_free.md curl_mime_headers.md curl_mime_init.md curl_mime_name.md curl_mime_subparts.md curl_mime_type.md curl_mprintf.md curl_multi_add_handle.md curl_multi_assign.md curl_multi_cleanup.md curl_multi_fdset.md curl_multi_get_handles.md curl_multi_get_offt.md curl_multi_info_read.md curl_multi_init.md curl_multi_notify_disable.md curl_multi_notify_enable.md curl_multi_perform.md curl_multi_poll.md curl_multi_remove_handle.md curl_multi_setopt.md curl_multi_socket.md curl_multi_socket_action.md curl_multi_socket_all.md curl_multi_strerror.md curl_multi_timeout.md curl_multi_wait.md curl_multi_waitfds.md curl_multi_wakeup.md curl_pushheader_byname.md curl_pushheader_bynum.md curl_share_cleanup.md curl_share_init.md curl_share_setopt.md curl_share_strerror.md curl_slist_append.md curl_slist_free_all.md curl_strequal.md curl_strnequal.md curl_unescape.md curl_url.md curl_url_cleanup.md curl_url_dup.md curl_url_get.md curl_url_set.md curl_url_strerror.md curl_version.md curl_version_info.md curl_ws_meta.md curl_ws_recv.md curl_ws_send.md curl_ws_start_frame.md libcurl-easy.md libcurl-env-dbg.md libcurl-env.md libcurl-errors.md libcurl-multi.md libcurl-security.md libcurl-share.md libcurl-thread.md libcurl-tutorial.md libcurl-url.md libcurl-ws.md libcurl.m4 libcurl.md mksymbolsmanpage.pl symbols-in-versions symbols.pl
tests CI.md FILEFORMAT.md HTTP.md TEST-SUITE.md
.gitignore ALTSVC.md BINDINGS.md BUG-BOUNTY.md BUGS.md CIPHERS-TLS12.md CIPHERS.md CMakeLists.txt CODE_OF_CONDUCT.md CODE_REVIEW.md CONTRIBUTE.md CURL-DISABLE.md CURLDOWN.md DEPRECATE.md DISTROS.md EARLY-RELEASE.md ECH.md EXPERIMENTAL.md FAQ.md FEATURES.md GOVERNANCE.md HELP-US.md HISTORY.md HSTS.md HTTP-COOKIES.md HTTP3.md HTTPSRR.md INFRASTRUCTURE.md INSTALL-CMAKE.md INSTALL.md INTERNALS.md IPFS.md KNOWN_BUGS.md KNOWN_RISKS.md MAIL-ETIQUETTE.md MANUAL.md Makefile.am README.md RELEASE-PROCEDURE.md ROADMAP.md RUSTLS.md SECURITY-ADVISORY.md SPONSORS.md SSL-PROBLEMS.md SSLCERTS.md THANKS THANKS-filter TODO.md TheArtOfHttpScripting.md URL-SYNTAX.md VERIFY.md VERSIONS.md VULN-DISCLOSURE-POLICY.md curl-config.md mk-ca-bundle.md options-in-versions runtests.md testcurl.md wcurl.md
include
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.h
Makefile.am README.md
lib
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.h
vauth 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.h
vquic curl_ngtcp2.c curl_ngtcp2.h curl_quiche.c curl_quiche.h vquic-tls.c vquic-tls.h vquic.c vquic.h vquic_int.h
vssh libssh.c libssh2.c ssh.h vssh.c vssh.h
vtls 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.h
.gitignore CMakeLists.txt Makefile.am Makefile.inc Makefile.soname altsvc.c altsvc.h amigaos.c amigaos.h arpa_telnet.h asyn-ares.c asyn-base.c asyn-thrdd.c asyn.h bufq.c bufq.h bufref.c bufref.h cf-dns.c cf-dns.h cf-h1-proxy.c cf-h1-proxy.h cf-h2-proxy.c cf-h2-proxy.h cf-haproxy.c cf-haproxy.h cf-https-connect.c cf-https-connect.h cf-ip-happy.c cf-ip-happy.h cf-socket.c cf-socket.h cfilters.c cfilters.h config-mac.h config-os400.h config-riscos.h config-win32.h conncache.c conncache.h connect.c connect.h content_encoding.c content_encoding.h cookie.c cookie.h creds.c creds.h cshutdn.c cshutdn.h curl_addrinfo.c curl_addrinfo.h curl_config-cmake.h.in curl_ctype.h curl_endian.c curl_endian.h curl_fnmatch.c curl_fnmatch.h curl_fopen.c curl_fopen.h curl_get_line.c curl_get_line.h curl_gethostname.c curl_gethostname.h curl_gssapi.c curl_gssapi.h curl_hmac.h curl_ldap.h curl_md4.h curl_md5.h curl_memrchr.c curl_memrchr.h curl_ntlm_core.c curl_ntlm_core.h curl_printf.h curl_range.c curl_range.h curl_sasl.c curl_sasl.h curl_setup.h curl_sha256.h curl_sha512_256.c curl_sha512_256.h curl_share.c curl_share.h curl_sspi.c curl_sspi.h curl_threads.c curl_threads.h curl_trc.c curl_trc.h cw-out.c cw-out.h cw-pause.c cw-pause.h dict.c dict.h dllmain.c dnscache.c dnscache.h doh.c doh.h dynhds.c dynhds.h easy.c easy_lock.h easygetopt.c easyif.h easyoptions.c easyoptions.h escape.c escape.h fake_addrinfo.c fake_addrinfo.h file.c file.h fileinfo.c fileinfo.h formdata.c formdata.h ftp-int.h ftp.c ftp.h ftplistparser.c ftplistparser.h functypes.h getenv.c getinfo.c getinfo.h gopher.c gopher.h hash.c hash.h headers.c headers.h hmac.c hostip.c hostip.h hostip4.c hostip6.c hsts.c hsts.h http.c http.h http1.c http1.h http2.c http2.h http_aws_sigv4.c http_aws_sigv4.h http_chunks.c http_chunks.h http_digest.c http_digest.h http_negotiate.c http_negotiate.h http_ntlm.c http_ntlm.h http_proxy.c http_proxy.h httpsrr.c httpsrr.h idn.c idn.h if2ip.c if2ip.h imap.c imap.h ldap.c libcurl.def libcurl.rc libcurl.vers.in llist.c llist.h macos.c macos.h md4.c md5.c memdebug.c mime.c mime.h mprintf.c mqtt.c mqtt.h multi.c multi_ev.c multi_ev.h multi_ntfy.c multi_ntfy.h multihandle.h multiif.h netrc.c netrc.h noproxy.c noproxy.h openldap.c optiontable.pl parsedate.c parsedate.h peer.c peer.h pingpong.c pingpong.h pop3.c pop3.h progress.c progress.h protocol.c protocol.h psl.c psl.h rand.c rand.h ratelimit.c ratelimit.h request.c request.h rtsp.c rtsp.h select.c select.h sendf.c sendf.h setopt.c setopt.h setup-os400.h setup-vms.h setup-win32.h sha256.c sigpipe.h slist.c slist.h smb.c smb.h smtp.c smtp.h sockaddr.h socketpair.c socketpair.h socks.c socks.h socks_gssapi.c socks_sspi.c splay.c splay.h strcase.c strcase.h strequal.c strerror.c strerror.h system_win32.c system_win32.h telnet.c telnet.h tftp.c tftp.h thrdpool.c thrdpool.h thrdqueue.c thrdqueue.h transfer.c transfer.h uint-bset.c uint-bset.h uint-hash.c uint-hash.h uint-spbset.c uint-spbset.h uint-table.c uint-table.h url.c url.h urlapi-int.h urlapi.c urldata.h version.c ws.c ws.h
m4 .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.m4
projects
OS400
rpg-examples HEADERAPI HTTPPOST INMEMORY SIMPLE1 SIMPLE2 SMTPSRCMBR
.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.h
Windows
tmpl .gitattributes README.txt curl-all.sln curl.sln curl.vcxproj curl.vcxproj.filters libcurl.sln libcurl.vcxproj libcurl.vcxproj.filters
.gitignore README.md generate.bat
vms 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.h
Makefile.am README.md
scripts .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 wcurl
src
toolx tool_time.c tool_time.h
.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.h
tests
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.prm
cmake CMakeLists.txt test.c test.cpp test.sh
data .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 test999
http
testenv
mod_curltest .gitignore mod_curltest.c
__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.py
.gitignore CMakeLists.txt Makefile.am config.ini.in conftest.py requirements.txt scorecard.py test_01_basic.py test_02_download.py test_03_goaway.py test_04_stuttered.py test_05_errors.py test_06_eyeballs.py test_07_upload.py test_08_caddy.py test_09_push.py test_10_proxy.py test_11_unix.py test_12_reuse.py test_13_proxy_auth.py test_14_auth.py test_15_tracing.py test_16_info.py test_17_ssl_use.py test_18_methods.py test_19_shutdown.py test_20_websockets.py test_21_resolve.py test_22_httpsrr.py test_30_vsftpd.py test_31_vsftpds.py test_32_ftps_vsftpd.py test_40_socks.py test_50_scp.py test_51_sftp.py
libtest .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.h
server .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.c
tunit .gitignore CMakeLists.txt Makefile.am Makefile.inc README.md tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.c
unit .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.c
.gitignore CMakeLists.txt Makefile.am allversions.pm appveyor.pm azure.pm config.in configurehelp.pm.in devtest.pl dictserver.py directories.pm ech_combos.py ech_tests.sh ftpserver.pl getpart.pm globalconfig.pm http-server.pl http2-server.pl http3-server.pl memanalyze.pl memanalyzer.pm negtelnetserver.py nghttpx.conf pathhelp.pm processhelp.pm requirements.txt rtspserver.pl runner.pm runtests.pl secureserver.pl serverhelp.pm servers.pm smbserver.py sshhelp.pm sshserver.pl test1119.pl test1135.pl test1139.pl test1140.pl test1165.pl test1167.pl test1173.pl test1175.pl test1177.pl test1222.pl test1275.pl test1276.pl test1477.pl test1486.pl test1488.pl test1544.pl test1707.pl test745.pl test971.pl testcurl.pl testutil.pm tftpserver.pl util.py valgrind.pm valgrind.supp
.clang-tidy.yml .dir-locals.el .editorconfig .git-blame-ignore-revs .gitattributes .gitignore .mailmap CHANGES.md CMakeLists.txt COPYING Dockerfile GIT-INFO.md Makefile.am README README.md RELEASE-NOTES REUSE.toml SECURITY.md acinclude.m4 appveyor.sh appveyor.yml configure.ac curl-config.in libcurl.pc.in renovate.json
examples .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.lua
iniparser
.github
ISSUE_TEMPLATE config.yml
workflows disable-pull-requests.yml trigger-gitlab-ci.yml
cmake JoinPaths.cmake config.cmake.in pc.in
example iniexample.c iniwrite.c parse.c twisted-errors.ini twisted-genhuge.py twisted-ofkey.ini twisted-ofval.ini twisted.ini
src dictionary.c dictionary.h iniparser.c iniparser.h
test
ressources
bad_ini ends_well.ini twisted-errors.ini twisted-ofkey.ini twisted-ofval.ini
good_ini empty.ini spaced.ini spaced2.ini twisted.ini
gruezi.ini old.ini quotes.ini utf8.ini
CMakeLists.txt test_dictionary.c test_iniparser.c unity-config.yml unity_config.h
.cmake-format.py .gitignore .gitlab-ci.yml .gitmessage .travis.yml AUTHORS CMakeLists.txt FAQ-en.md FAQ-zhcn.md INSTALL LICENSE README.md compile_commands.json
jinjac
example CMakeLists.txt example.c
jinjac_test_app CMakeLists.txt jinjac_test_app.c
libjinjac
include jinjac.h
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.h
CMakeLists.txt
test .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.jinja
.gitignore CMakeLists.txt LICENSE.txt README.md build_coverage.sh build_debug.sh build_release.sh cppcheck_analysis.sh
libev 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-h1
luajit
doc
img contact.png
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.html
dynasm 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.lua
etc luajit.1 luajit.pc
src
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.c
jit .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.lua
.gitignore Makefile Makefile.dep lauxlib.h lib_aux.c lib_base.c lib_bit.c lib_buffer.c lib_debug.c lib_ffi.c lib_init.c lib_io.c lib_jit.c lib_math.c lib_os.c lib_package.c lib_string.c lib_table.c lj_alloc.c lj_alloc.h lj_api.c lj_arch.h lj_asm.c lj_asm.h lj_asm_arm.h lj_asm_arm64.h lj_asm_mips.h lj_asm_ppc.h lj_asm_x86.h lj_assert.c lj_bc.c lj_bc.h lj_bcdump.h lj_bcread.c lj_bcwrite.c lj_buf.c lj_buf.h lj_carith.c lj_carith.h lj_ccall.c lj_ccall.h lj_ccallback.c lj_ccallback.h lj_cconv.c lj_cconv.h lj_cdata.c lj_cdata.h lj_char.c lj_char.h lj_clib.c lj_clib.h lj_cparse.c lj_cparse.h lj_crecord.c lj_crecord.h lj_ctype.c lj_ctype.h lj_debug.c lj_debug.h lj_def.h lj_dispatch.c lj_dispatch.h lj_emit_arm.h lj_emit_arm64.h lj_emit_mips.h lj_emit_ppc.h lj_emit_x86.h lj_err.c lj_err.h lj_errmsg.h lj_ff.h lj_ffrecord.c lj_ffrecord.h lj_frame.h lj_func.c lj_func.h lj_gc.c lj_gc.h lj_gdbjit.c lj_gdbjit.h lj_ir.c lj_ir.h lj_ircall.h lj_iropt.h lj_jit.h lj_lex.c lj_lex.h lj_lib.c lj_lib.h lj_load.c lj_mcode.c lj_mcode.h lj_meta.c lj_meta.h lj_obj.c lj_obj.h lj_opt_dce.c lj_opt_fold.c lj_opt_loop.c lj_opt_mem.c lj_opt_narrow.c lj_opt_sink.c lj_opt_split.c lj_parse.c lj_parse.h lj_prng.c lj_prng.h lj_profile.c lj_profile.h lj_record.c lj_record.h lj_serialize.c lj_serialize.h lj_snap.c lj_snap.h lj_state.c lj_state.h lj_str.c lj_str.h lj_strfmt.c lj_strfmt.h lj_strfmt_num.c lj_strscan.c lj_strscan.h lj_tab.c lj_tab.h lj_target.h lj_target_arm.h lj_target_arm64.h lj_target_mips.h lj_target_ppc.h lj_target_x86.h lj_trace.c lj_trace.h lj_traceerr.h lj_udata.c lj_udata.h lj_vm.h lj_vmevent.c lj_vmevent.h lj_vmmath.c ljamalg.c lua.h lua.hpp luaconf.h luajit.c luajit_rolling.h lualib.h msvcbuild.bat nxbuild.bat ps4build.bat ps5build.bat psvitabuild.bat vm_arm.dasc vm_arm64.dasc vm_mips.dasc vm_mips64.dasc vm_ppc.dasc vm_x64.dasc vm_x86.dasc xb1build.bat xedkbuild.bat
.gitattributes .gitignore .relver COPYRIGHT Makefile README
sqlite shell.c sqlite3.c sqlite3.h sqlite3ext.h
wolfssl
.github
ISSUE_TEMPLATE bug_report.yaml other.yaml
actions
install-apt-deps action.yml
scripts
zephyr-4.x external_libc.conf zephyr-test.sh
openssl-ech.sh tls-anvil-test.sh
workflows
disabled haproxy.yml hitch.yml hostap.yml
hostap-files
configs
07c9f183ea744ac04585fb6dd10220c75a5e2e74 hostapd.config tests wpa_supplicant.config
b607d2723e927a3446d89aed813f1aa6068186bb hostapd.config tests wpa_supplicant.config
hostap_2_10 extra.patch hostapd.config tests wpa_supplicant.config
Makefile README dbus-wpa_supplicant.conf
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.yml
PULL_REQUEST_TEMPLATE.md SECURITY.md membrowse-targets.json
Docker
OpenWrt Dockerfile README.md runTests.sh
packaging
debian Dockerfile
fedora Dockerfile
wolfCLU Dockerfile README.md
yocto Dockerfile buildAndPush.sh
Dockerfile Dockerfile.cross-compiler README.md buildAndPush.sh include.am run.sh
IDE
ARDUINO
sketches
wolfssl_client README.md
wolfssl_server README.md
wolfssl_version README.md
README.md
Arduino_README_prepend.md README.md include.am keywords.txt library.properties.template wolfssl-arduino.cpp wolfssl-arduino.sh wolfssl.h
AURIX Cpu0_Main.c README.md include.am user_settings.h wolf_main.c
Android Android.bp README.md include.am user_settings.h
CRYPTOCELL README.md include.am main.c user_settings.h
CSBENCH include.am user_settings.h
ECLIPSE
DEOS
deos_wolfssl .options
README.md deos_malloc.c include.am tls_wolfssl.c tls_wolfssl.h user_settings.h
MICRIUM README.md client_wolfssl.c client_wolfssl.h include.am server_wolfssl.c server_wolfssl.h user_settings.h wolfsslRunTests.c
RTTHREAD README.md include.am user_settings.h wolfssl_test.c
SIFIVE README.md include.am
Espressif
ESP-IDF
examples
template
VisualGDB wolfssl_template_IDF_v5.1_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266
wolfssl_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.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266
wolfssl_client
VisualGDB README.md wolfssl_client_IDF_v5_ESP32.sln wolfssl_client_IDF_v5_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include client-tls.h main.h time_helper.h wifi_connect.h
CMakeLists.txt Kconfig.projbuild client-tls.c component.mk main.c time_helper.c wifi_connect.c
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_client_ESP8266.vgdbproj
wolfssl_server
VisualGDB README.md wolfssl_server_IDF_v5_ESP32.sln wolfssl_server_IDF_v5_ESP32.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h server-tls.h time_helper.h wifi_connect.h
CMakeLists.txt Kconfig.projbuild component.mk main.c server-tls.c time_helper.c wifi_connect.c
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_server_ESP8266.vgdbproj
wolfssl_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.vgdbproj
components
wolfssl
include user_settings.h
CMakeLists.txt Kconfig README.md component.mk
main
include main.h
CMakeLists.txt Kconfig.projbuild component.mk main.c
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32 sdkconfig.defaults.esp32c3 sdkconfig.defaults.esp32c6 sdkconfig.defaults.esp32h2 sdkconfig.defaults.esp32s2 sdkconfig.defaults.esp32s3 sdkconfig.defaults.esp8266 testAll.sh testMonitor.sh wolfssl_test_ESP8266.sln wolfssl_test_ESP8266.vgdbproj
wolfssl_test_idf
VisualGDB VisualGDB_wolfssl_test_idf.sln VisualGDB_wolfssl_test_idf.vgdbproj
main CMakeLists.txt Kconfig.projbuild component.mk main.c main_wip.c.ex time_helper.c time_helper.h
CMakeLists.txt Kconfig.projbuild README.md component.mk sdkconfig.defaults
README.md
libs CMakeLists.txt README.md component.mk tigard.cfg
test CMakeLists.txt README.md component.mk test_wolfssl.c
README.md README_32se.md UPDATE.md compileAllExamples.sh dummy_config_h dummy_test_paths.h setup.sh setup_win.bat user_settings.h
README.md include.am
GCC-ARM
Header user_settings.h
Source armtarget.c benchmark_main.c test_main.c tls_client.c tls_server.c wolf_main.c
Makefile Makefile.bench Makefile.client Makefile.common Makefile.server Makefile.static Makefile.test README.md include.am linker.ld linker_fips.ld
Gaisler-BCC README.md include.am
HEXAGON
DSP Makefile wolfssl_dsp.idl
Makefile README.md build.sh ecc-verify-benchmark.c ecc-verify.c include.am user_settings.h
HEXIWEAR
wolfSSL_HW .cwGeneratedFileSetLog user_settings.h
IAR-EWARM
Projects
benchmark benchmark-main.c current_time.c wolfCrypt-benchmark.ewd wolfCrypt-benchmark.ewp
common minimum-startup.c wolfssl.icf
lib wolfSSL-Lib.ewd wolfSSL-Lib.ewp
test test-main.c wolfCrypt-test.ewd wolfCrypt-test.ewp
user_settings.h wolfssl.eww
embOS
SAMV71_XULT
embOS_SAMV71_XULT_Linker_Script samv71q21_wolfssl.icf
embOS_SAMV71_XULT_user_settings user_settings.h user_settings_simple_example.h user_settings_verbose_example.h
embOS_wolfcrypt_benchmark_SAMV71_XULT
Application runBenchmarks.c
README_wolfcrypt_benchmark wolfcrypt_benchmark.ewd wolfcrypt_benchmark.ewp
embOS_wolfcrypt_lib_SAMV71_XULT README_wolfcrypt_lib wolfcrypt_lib.ewd wolfcrypt_lib.ewp
embOS_wolfcrypt_test_SAMV71_XULT
Application runWolfcryptTests.c
README_wolfcrypt_test wolfcrypt_test.ewd wolfcrypt_test.ewp
README_SAMV71
custom_port
custom_port_Linker_Script samv71q21_wolfssl.icf
custom_port_user_settings user_settings.h
wolfcrypt_benchmark_custom_port
Application runBenchmarks.c
wolfcrypt_test_custom_port
Application runWolfcryptTests.c
README_custom_port
extract_trial_here README_extract_trial_here
README
.gitignore README
IAR-MSP430 Makefile README.md include.am main.c user_settings.h
INTIME-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.vcxproj
Infineon README.md include.am user_settings.h
KDS
config user_settings.h
include.am
LINUX-SGX README.md build.sh clean.sh include.am sgx_t_static.mk
LPCXPRESSO
lib_wolfssl lpc_18xx_port.c user_settings.h
wolf_example
src lpc_18xx_startup.c wolfssl_example.c
readme.txt
README.md
M68K
benchmark Makefile main.cpp
testwolfcrypt Makefile main.cpp
Makefile README.md include.am user_settings.h
MCUEXPRESSO
RT1170 fsl_caam_c.patch fsl_caam_h.patch user_settings.h
benchmark
source run_benchmark.c
wolfssl liblinks.xml
README.md include.am user_settings.h wolfcrypt_test.c
MDK-ARM
LPC43xx time-LCP43xx.c
MDK-ARM
wolfSSL Retarget.c cert_data.c cert_data.h config-BARE-METAL.h config-FS.h config-RTX-TCP-FS.h config-WOLFLIB.h main.c shell.c time-CortexM3-4.c time-dummy.c wolfssl_MDK_ARM.c wolfssl_MDK_ARM.h
STM32F2xx_StdPeriph_Lib time-STM32F2xx.c
MDK5-ARM
Conf user_settings.h
Inc wolfssl_MDK_ARM.h
Projects
CryptBenchmark Abstract.txt CryptBenchmark.sct CryptBenchmark.uvoptx CryptBenchmark.uvprojx main.c
CryptTest Abstract.txt CryptTest.sct CryptTest.uvoptx CryptTest.uvprojx main.c
EchoClient Abstract.txt EchoClient.uvoptx EchoClient.uvprojx main.c wolfssl-link.sct
EchoServer Abstract.txt EchoServer.uvoptx EchoServer.uvprojx main.c wolfssl-link.sct
SimpleClient Abstract.txt SimpleClient.uvoptx SimpleClient.uvprojx main.c wolfssl-link.sct
SimpleServer Abstract.txt SimpleServer.uvoptx SimpleServer.uvprojx main.c wolfssl-link.sct
wolfSSL-Full Abstract.txt main.c shell.c time-CortexM3-4.c wolfsslFull.uvoptx wolfsslFull.uvprojx
wolfSSL-Lib Abstract.txt wolfSSL-Lib.uvoptx wolfSSL-Lib.uvprojx
Src ssl-dummy.c
README.md include.am
MPLABX16
wolfcrypt_test.X
nbproject
private configurations.xml private.xml
configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
README.md include.am main.c user_settings.h
MQX Makefile README-jp.md README.md client-tls.c include.am server-tls.c user_config.h user_settings.h
MSVS-2019-AZSPHERE
client client.c client.h
server server.c server.h
shared util.h
wolfssl_new_azsphere
HardwareDefinitions
avnet_mt3620_sk
inc
hw template_appliance.h
template_appliance.json
mt3620_rdb
inc
hw template_appliance.h
template_appliance.json
seeed_mt3620_mdb
inc
hw template_appliance.h
template_appliance.json
.gitignore CMakeLists.txt CMakeSettings.json app_manifest.json applibs_versions.h launch.vs.json main.c
README.md include.am user_settings.h
MYSQL CMakeLists_wolfCrypt.txt CMakeLists_wolfSSL.txt do.sh
NDS README.md
NETOS Makefile.wolfcrypt.inc README.md include.am user_settings.h user_settings.h-cert2425 user_settings.h-cert3389 wolfssl_netos_custom.c
OPENSTM32 README.md
PlatformIO
examples
wolfssl_benchmark
include README main.h
lib README
src CMakeLists.txt main.c
test README
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_benchmark.code-workspace
wolfssl_test
include README main.h
lib README
src CMakeLists.txt main.c
test README
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_test.code-workspace
README.md wolfssl_platformio.code-workspace
README.md include.am
QNX
CAAM-DRIVER Makefile
example-client Makefile client-tls.c
example-cmac Makefile cmac-test.c
example-server Makefile server-tls.c
testwolfcrypt Makefile
wolfssl Makefile user_settings.h
README.md include.am
RISCV
SIFIVE-HIFIVE1 Makefile README.md include.am main.c user_settings.h
SIFIVE-UNLEASHED README.md include.am
include.am
ROWLEY-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.hzp
Renesas
cs+
Projects
common strings.h unistd.h user_settings.h wolfssl_dummy.c
t4_demo README_en.txt README_jp.txt t4_demo.mtpj wolf_client.c wolf_demo.h wolf_main.c wolf_server.c
test test.mtpj test_main.c
wolfssl_lib wolfssl_lib.mtpj
README include.am
e2studio
DK-S7G2
benchmark-template
src app_entry.c
example_server-template
src app_entry.c
wolfcrypttest-template
src app_entry.c
wolfssl-template-project configuration.xml
README.md include.am user_settings.h
Projects
common strings.h unistd.h user_settings.h wolfssl_dummy.c
test
src key_data.c key_data.h test_main.c wolf_client.c wolf_server.c wolfssl_demo.h
tools generate_rsa_keypair.sh genhexbuf.pl rsa_pss_sign.sh
wolfssl
src .gitkeep
wolfcrypt
src .gitkeep
README include.am
RA6M3
benchmark-wolfcrypt
common .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
client-wolfssl
common
src .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl_thread_entry.h
common
ra6m3g README.md
src freertos_tcp_port.c
user_settings.h util.h
server-wolfssl
common
src .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl_thread_entry.h
test-wolfcrypt
common .gitkeep
script .gitkeep
src wolfssl_thread_entry.c
wolfssl
src .gitkeep
wolfcrypt .gitkeep
README.md README_APRA6M_en.md README_APRA6M_jp.md include.am
RA6M3G README.md
RA6M4
common user_settings.h wolfssl_demo.h
test
key_data key_data.h key_data_sce.c
src
SEGGER_RTT myprint.c
common .gitignore
test_main.c wolf_client.c wolfssl_sce_unit_test.c
test_RA6M4Debug.launch
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
README.md include.am
RX65N
GR-ROSE
common strings.h unistd.h user_settings.h wolfssl_dummy.c
smc smc.scfg
test
src key_data.c key_data.h test_main.c wolf_client.c wolf_server.c wolfssl_demo.h
test.rcpc test_HardwareDebug.launch
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
wolfssl wolfssl.rcpc
README_EN.md README_JP.md include.am
RSK
resource section.esi
wolfssl wolfssl.rcpc
wolfssl_demo key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h
InstructionManualForExample_RSK+RX65N-2MB_EN.pdf InstructionManualForExample_RSK+RX65N-2MB_JP.pdf README_EN.md README_JP.md include.am
RX72N
EnvisionKit
Simple
common sectioninfo.esi wolfssl_dummy.c
test
src
client simple_tcp_client.c simple_tls_tsip_client.c
server simple_tcp_server.c simple_tls_server.c
test_main.c wolfssl_simple_demo.h
test.rcpc test.scfg test_HardwareDebug.launch
wolfssl wolfssl.rcpc
README_EN.md README_JP.md
resource section.esi
tools
example_keys generate_SignedCA.sh rsa_private.pem rsa_public.pem
README.md
wolfssl wolfssl.rcpc
wolfssl_demo key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h wolfssl_tsip_unit_test.c
InstructionManualForExample_RX72N_EnvisonKit_EN.pdf InstructionManualForExample_RX72N_EnvisonKit_JP.pdf README_EN.md README_JP.md include.am
RZN2L
common user_settings.h wolfssl_demo.h
test
src
serial_io app_print.c
test wolf_client.c wolf_server.c wolfssl_rsip_unit_test.c
wolfCrypt .gitignore
wolfSSL .gitignore
local_system_init.c rzn2l_tst_thread_entry.c wolfssl_dummy.c
README.md include.am
SK-S7G2
common user_settings.h
wolfssl_lib configuration.xml
.gitignore README.md include.am
STARCORE README.txt include.am starcore_test.c user_settings.h
STM32Cube README.md STM32_Benchmarks.md default_conf.ftl include.am main.c wolfssl_example.c wolfssl_example.h
SimplicityStudio README.md include.am test_wolf.c user_settings.h
TRUESTUDIO
wolfssl user_settings.h
README include.am
VS-ARM README.md include.am user_settings.h wolfssl.sln wolfssl.vcxproj
VS-AZURE-SPHERE
client app_manifest.json client.c client.h client.vcxproj
server app_manifest.json server.c server.h server.vcxproj
shared util.h
wolfcrypt_test app_manifest.json wolfcrypt_test.vcxproj
README.md include.am user_settings.h wolfssl.sln wolfssl.vcxproj
VisualDSP include.am user_settings.h wolf_tasks.c
WICED-STUDIO README include.am user_settings.h
WIN README.txt include.am test.vcxproj user_settings.h user_settings_dtls.h wolfssl-fips.sln wolfssl-fips.vcxproj
WIN-SGX ReadMe.txt include.am wolfSSL_SGX.edl wolfSSL_SGX.sln wolfSSL_SGX.vcxproj
WIN-SRTP-KDF-140-3 README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxproj
WIN10 README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxproj
WINCE README.md include.am user_settings.h user_settings.h.140-2-deprecated
WORKBENCH README.md include.am
XCODE
Benchmark
wolfBench
Assets.xcassets
AppIcon.appiconset Contents.json
Base.lproj LaunchScreen.storyboard Main.storyboard
AppDelegate.h AppDelegate.m Info.plist ViewController.h ViewController.m main.m
wolfBench.xcodeproj project.pbxproj
include.am
wolfssl-FIPS.xcodeproj project.pbxproj
wolfssl.xcodeproj project.pbxproj
wolfssl_testsuite.xcodeproj project.pbxproj
README.md build-for-i386.sh include.am user_settings.h
XCODE-FIPSv2
macOS-C++
Intel user_settings.h
M1 user_settings.h
include.am user_settings.h
XCODE-FIPSv5 README include.am user_settings.h
XCODE-FIPSv6 README include.am user_settings.h
XilinxSDK
2018_2 lscript.ld
2019_2
wolfCrypt_example
src lscript.ld
wolfCrypt_example_system wolfCrypt_example_system.sprj
2022_1
wolfCrypt_FreeRTOS_example wolfCrypt_FreeRTOS_example.prj
wolfCrypt_FreeRTOS_example_system wolfCrypt_FreeRTOS_example_system.sprj
wolfCrypt_example wolfCrypt_example.prj
wolfCrypt_example_system wolfCrypt_example_system.sprj
.gitignore
README.md bench.sh combine.sh eclipse_formatter_profile.xml graph.sh include.am user_settings.h wolfssl_example.c
apple-universal
wolfssl-multiplatform
wolfssl-multiplatform
Assets.xcassets
AccentColor.colorset Contents.json
AppIcon.appiconset Contents.json
Contents.json
ContentView.swift simple_client_example.c simple_client_example.h wolfssl-multiplatform-Bridging-Header.h wolfssl_multiplatform.entitlements wolfssl_multiplatformApp.swift wolfssl_test_driver.c wolfssl_test_driver.h
wolfssl-multiplatform.xcodeproj project.pbxproj
.gitignore README.md build-wolfssl-framework.sh include.am
iotsafe Makefile README.md ca-cert.c devices.c devices.h include.am main.c memory-tls.c startup.c target.ld user_settings.h
iotsafe-raspberrypi Makefile README.md client-tls13.c include.am main.c
mynewt README.md apps.wolfcrypttest.pkg.yml crypto.wolfssl.pkg.yml crypto.wolfssl.syscfg.yml include.am setup.sh
zephyr README.md include.am
include.am
RTOS
nuttx
wolfssl .gitignore Kconfig Make.defs Makefile README.md setup-wolfssl.sh user_settings.h
include.am
bsdkm Makefile README.md bsdkm_wc_port.h include.am wolfkmod.c wolfkmod_aes.c x86_vecreg.c
certs
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.pem
3072 client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der include.am
4096 client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der include.am
acert
rsa_pss acert.pem acert_ietf.pem acert_ietf_pubkey.pem acert_pubkey.pem
acert.pem acert_ietf.pem acert_ietf_pubkey.pem acert_pubkey.pem include.am
aia ca-issuers-cert.pem multi-aia-cert.pem overflow-aia-cert.pem
crl
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.pem
hash_der 0fdb2da4.r0
hash_pem 0fdb2da4.r0
bad_time_fmt.pem ca-int-ecc.pem ca-int.pem ca-int2-ecc.pem ca-int2.pem caEcc384Crl.pem caEccCrl.der caEccCrl.pem cliCrl.pem client-int-ecc.pem client-int.pem crl.der crl.pem crl.revoked crl2.der crl2.pem crl_reason.pem crl_rsapss.pem eccCliCRL.pem eccSrvCRL.pem gencrls.sh include.am server-goodaltCrl.pem server-goodaltwildCrl.pem server-goodcnCrl.pem server-goodcnwildCrl.pem server-int-ecc.pem server-int.pem wolfssl.cnf
dilithium bench_dilithium_level2_key.der bench_dilithium_level3_key.der bench_dilithium_level5_key.der include.am
ecc 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.cnf
ed25519 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.pem
ed448 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.pem
external DigiCertGlobalRootCA.pem README.txt ca-digicert-ev.pem ca-globalsign-root.pem ca-google-root.pem ca_collection.pem include.am
falcon bench_falcon_level1_key.der bench_falcon_level5_key.der include.am
intermediate
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.conf
ca-ecc-bad-aki.der ca-ecc-bad-aki.pem ca-int-cert.der ca-int-cert.pem ca-int-ecc-cert.der ca-int-ecc-cert.pem ca-int-ecc-key.der ca-int-ecc-key.pem ca-int-key.der ca-int-key.pem ca-int2-cert.der ca-int2-cert.pem ca-int2-ecc-cert.der ca-int2-ecc-cert.pem ca-int2-ecc-key.der ca-int2-ecc-key.pem ca-int2-key.der ca-int2-key.pem client-chain-alt-ecc.pem client-chain-alt.pem client-chain-ecc.der client-chain-ecc.pem client-chain.der client-chain.pem client-int-cert.der client-int-cert.pem client-int-ecc-cert.der client-int-ecc-cert.pem genintcerts.sh include.am server-chain-alt-ecc.pem server-chain-alt.pem server-chain-ecc.der server-chain-ecc.pem server-chain-short.pem server-chain.der server-chain.pem server-int-cert.der server-int-cert.pem server-int-ecc-cert.der server-int-ecc-cert.pem
lms 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.am
mldsa 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.der
ocsp 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.der
p521 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.pem
renewcerts wolfssl.cnf
rpk client-cert-rpk.der client-ecc-cert-rpk.der include.am server-cert-rpk.der server-ecc-cert-rpk.der
rsapss 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.pem
sia timestamping-sia-cert.pem
slhdsa 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.pem
sm2 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.pem
statickeys 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.pem
test
expired expired-ca.der expired-ca.pem expired-cert.der expired-cert.pem
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.p7s
test-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.sh
test-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.pem
xmss 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.am
ca-cert-chain.der ca-cert.der ca-cert.pem ca-ecc-cert.der ca-ecc-cert.pem ca-ecc-key.der ca-ecc-key.pem ca-ecc384-cert.der ca-ecc384-cert.pem ca-ecc384-key.der ca-ecc384-key.pem ca-key-pkcs8-attribute.der ca-key.der ca-key.pem check_dates.sh client-absolute-urn.pem client-ca-cert.der client-ca-cert.pem client-ca.pem client-cert-ext.der client-cert-ext.pem client-cert.der client-cert.pem client-crl-dist.der client-crl-dist.pem client-ecc-ca-cert.der client-ecc-ca-cert.pem client-ecc-cert.der client-ecc-cert.pem client-ecc384-cert.der client-ecc384-cert.pem client-ecc384-key.der client-ecc384-key.pem client-key.der client-key.pem client-keyEnc.pem client-keyPub.der client-keyPub.pem client-relative-uri.pem client-uri-cert.pem csr.attr.der csr.dsa.der csr.dsa.pem csr.ext.der csr.signed.der dh-priv-2048.der dh-priv-2048.pem dh-pub-2048.der dh-pub-2048.pem dh-pubkey-2048.der dh2048.der dh2048.pem dh3072.der dh3072.pem dh4096.der dh4096.pem dsa-pubkey-2048.der dsa2048.der dsa2048.pem dsa3072.der dsaparams.der dsaparams.pem ecc-client-key.der ecc-client-key.pem ecc-client-keyPub.der ecc-client-keyPub.pem ecc-key-comp.pem ecc-keyPkcs8.der ecc-keyPkcs8.pem ecc-keyPkcs8Enc.der ecc-keyPkcs8Enc.pem ecc-keyPub.der ecc-keyPub.pem ecc-params.der ecc-params.pem ecc-privOnlyCert.pem ecc-privOnlyKey.pem ecc-privkey.der ecc-privkey.pem ecc-privkeyPkcs8.der ecc-privkeyPkcs8.pem ecc-rsa-server.p12 empty-issuer-cert.pem entity-no-ca-bool-cert.pem entity-no-ca-bool-key.pem fpki-cert.der fpki-certpol-cert.der gen_revoked.sh include.am renewcerts.sh rid-cert.der rsa-pub-2048.pem rsa2048.der rsa3072.der server-cert-chain.der server-cert.der server-cert.pem server-ecc-comp.der server-ecc-comp.pem server-ecc-rsa.der server-ecc-rsa.pem server-ecc-self.der server-ecc-self.pem server-ecc.der server-ecc.pem server-ecc384-cert.der server-ecc384-cert.pem server-ecc384-key.der server-ecc384-key.pem server-key.der server-key.pem server-keyEnc.pem server-keyPkcs8.der server-keyPkcs8.pem server-keyPkcs8Enc.der server-keyPkcs8Enc.pem server-keyPkcs8Enc12.pem server-keyPkcs8Enc2.pem server-keyPub.der server-keyPub.pem server-revoked-cert.pem server-revoked-key.pem taoCert.txt test-ber-exp02-05-2022.p7b test-degenerate.p7b test-multiple-recipients.p7b test-servercert-rc2.p12 test-servercert.p12 test-stream-dec.p7b test-stream-sign.p7b wolfssl-website-ca.pem x942dh2048.der x942dh2048.pem
cmake
consumer CMakeLists.txt README.md main.c
modules FindARIA.cmake FindOQS.cmake
Config.cmake.in README.md config.in functions.cmake include.am options.h.in wolfssl-config-version.cmake.in wolfssl-targets.cmake.in
debian
source format
changelog.in control.in copyright include.am libwolfssl-dev.install libwolfssl.install rules.in
doc
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.h
header_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.h
formats
html
html_changes
search search.css search.js
customdoxygen.css doxygen.css menu.js menudata.js tabs.css
Doxyfile footer.html header.html mainpage.dox
pdf Doxyfile header.tex
images wolfssl_logo.png
QUIC.md README.txt README_DOXYGEN check_api.sh generate_documentation.sh include.am
examples
asn1 asn1.c dumpasn1.cfg gen_oid_names.rb include.am oid_names.h
async Makefile README.md async_client.c async_server.c async_tls.c async_tls.h include.am user_settings.h
benchmark include.am tls_bench.c tls_bench.h
client client.c client.h client.sln client.vcproj client.vcxproj include.am
configs 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.h
crypto_policies
default wolfssl.txt
future wolfssl.txt
legacy wolfssl.txt
echoclient echoclient.c echoclient.h echoclient.sln echoclient.vcproj echoclient.vcxproj include.am quit
echoserver echoserver.c echoserver.h echoserver.sln echoserver.vcproj echoserver.vcxproj include.am
ocsp_responder include.am ocsp_responder.c ocsp_responder.h
pem include.am pem.c
sctp include.am sctp-client-dtls.c sctp-client.c sctp-server-dtls.c sctp-server.c
server include.am server.c server.h server.sln server.vcproj server.vcxproj
README.md include.am
linuxkm
patches
5.10.17 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v10v17.patch
5.10.236 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v10v236.patch
5.14.0-570.58.1.el9_6 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v14-570v58v1-el9_6.patch
5.15 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v15.patch
5.17 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v17.patch
5.17-ubuntu-jammy-tegra WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-5v17-ubuntu-jammy-tegra.patch
6.1.73 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v1v73.patch
6.12 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v12.patch
6.15 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-6v15.patch
7.0 WOLFSSL_LINUXKM_HAVE_GET_RANDOM_CALLBACKS-7v0.patch
regen-patches.sh
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.c
m4 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.m4
mcapi
wolfcrypt_mcapi.X
nbproject configurations.xml include.am project.xml
Makefile
wolfcrypt_test.X
nbproject configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
zlib.X
nbproject configurations.xml include.am project.xml
Makefile
PIC32MZ-serial.h README crypto.c crypto.h include.am mcapi_test.c user_settings.h
mplabx
wolfcrypt_benchmark.X
nbproject configurations.xml include.am project.xml
Makefile
wolfcrypt_test.X
nbproject configurations.xml include.am project.xml
Makefile
wolfssl.X
nbproject configurations.xml include.am project.xml
Makefile
PIC32MZ-serial.h README benchmark_main.c include.am test_main.c user_settings.h
mqx
util_lib
Sources include.am util.c util.h
wolfcrypt_benchmark
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
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.launch
wolfcrypt_test
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
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.launch
wolfssl include.am
wolfssl_client
Debugger K70FN1M0.mem init_kinetis.tcl mass_erase_kinetis.tcl
Sources include.am main.c main.h
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.launch
README
rpm include.am spec.in
scripts
bench bench_functions.sh
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.sh
src 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.c
sslSniffer
sslSnifferTest README_WIN.md include.am snifftest.c sslSniffTest.vcproj sslSniffTest.vcxproj
README.md sslSniffer.vcproj sslSniffer.vcxproj
support gen-debug-trace-error-codes.sh include.am wolfssl.pc.in
tests
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.h
emnet
IP IP.h
Makefile emnet_nonblock_test.c emnet_shim.c
freertos-mem-track-repro FreeRTOS.h repro.c run.sh semphr.h task.h user_settings.h
swdev .gitignore Makefile README.md swdev.c swdev.h swdev_loader.c swdev_loader.h user_settings.h
CONF_FILES_README.md NCONF_test.cnf README TXT_DB.txt api.c include.am quic.c srp.c suites.c test-altchains.conf test-chains.conf test-dhprime.conf test-dtls-downgrade.conf test-dtls-fails-cipher.conf test-dtls-fails.conf test-dtls-group.conf test-dtls-mtu.conf test-dtls-reneg-client.conf test-dtls-reneg-server.conf test-dtls-resume.conf test-dtls-sha2.conf test-dtls-srtp-fails.conf test-dtls-srtp.conf test-dtls.conf test-dtls13-cid.conf test-dtls13-downgrade-fails.conf test-dtls13-downgrade.conf test-dtls13-pq-hybrid-extra-frag.conf test-dtls13-pq-hybrid-extra.conf test-dtls13-pq-hybrid-frag.conf test-dtls13-pq-standalone-frag.conf test-dtls13-pq-standalone.conf test-dtls13-psk.conf test-dtls13.conf test-ecc-cust-curves.conf test-ed25519.conf test-ed448.conf test-enckeys.conf test-fails.conf test-maxfrag-dtls.conf test-maxfrag.conf test-p521.conf test-psk-no-id-sha2.conf test-psk-no-id.conf test-psk.conf test-rsapss.conf test-sctp-sha2.conf test-sctp.conf test-sha2.conf test-sig.conf test-sm2.conf test-tls-downgrade.conf test-tls13-down.conf test-tls13-ecc.conf test-tls13-pq-hybrid-extra.conf test-tls13-pq-hybrid.conf test-tls13-pq-standalone.conf test-tls13-psk-certs.conf test-tls13-psk.conf test-tls13-slhdsa-fail.conf test-tls13-slhdsa-sha2.conf test-tls13-slhdsa-shake.conf test-tls13.conf test-trustpeer.conf test.conf unit.c unit.h utils.c utils.h w64wrapper.c
testsuite include.am testsuite.c testsuite.sln testsuite.vcproj testsuite.vcxproj utils.c utils.h
tirtos
packages
ti
net
wolfssl
tests
EK_TM4C1294XL
wolfcrypt
benchmark TM4C1294NC.icf benchmark.cfg main.c package.bld.hide package.xdc
test TM4C1294NC.icf main.c package.bld.hide package.xdc test.cfg
package.bld package.xdc package.xs
.gitignore README include.am products.mak wolfssl.bld wolfssl.mak
wolfcrypt
benchmark README.md benchmark-VS2022.sln benchmark-VS2022.vcxproj benchmark-VS2022.vcxproj.user benchmark.c benchmark.h benchmark.sln benchmark.vcproj benchmark.vcxproj include.am
src
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.py
README.md esp32_aes.c esp32_mp.c esp32_sha.c esp32_util.c esp_sdk_mem_lib.c esp_sdk_time_lib.c esp_sdk_wifi_lib.c
Renesas 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.c
af_alg afalg_aes.c afalg_hash.c wc_afalg.c
aria aria-crypt.c aria-cryptocb.c
arm 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.c
atmel README.md atmel.c
autosar README.md cryif.c crypto.c csm.c include.am test.c
caam 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.c
cavium README.md README_Octeon.md cavium_nitrox.c cavium_octeon_sync.c
cuda README.md aes-cuda.cu
cypress README.md psoc6_crypto.c
devcrypto README.md devcrypto_aes.c devcrypto_ecdsa.c devcrypto_hash.c devcrypto_hmac.c devcrypto_rsa.c devcrypto_x25519.c wc_devcrypto.c
intel README.md quickassist.c quickassist_mem.c quickassist_sync.c
iotsafe iotsafe.c
kcapi README.md kcapi_aes.c kcapi_dh.c kcapi_ecc.c kcapi_hash.c kcapi_hmac.c kcapi_rsa.c
liboqs liboqs.c
maxim README.md max3266x.c maxq10xx.c
mynewt mynewt_port.c
nxp README.md README_SE050.md casper_port.c dcp_port.c hashcrypt_port.c ksdk_port.c se050_port.c
pic32 pic32mz-crypt.c
ppc32 ppc32-sha256-asm.S ppc32-sha256-asm_c.c ppc32-sha256-asm_cr.c
psa README.md psa.c psa_aes.c psa_hash.c psa_pkcbs.c
riscv riscv-64-aes.c riscv-64-chacha.c riscv-64-poly1305.c riscv-64-sha256.c riscv-64-sha3.c riscv-64-sha512.c
rpi_pico README.md pico.c
silabs README.md silabs_aes.c silabs_ecc.c silabs_hash.c silabs_random.c
st README.md STM32MP13.md STM32MP25.md stm32.c stsafe.c
ti ti-aes.c ti-ccm.c ti-des3.c ti-hash.c
tropicsquare README.md tropic01.c
xilinx xil-aesgcm.c xil-sha3.c xil-versal-glue.c xil-versal-trng.c
nrf51.c
ASN_TEMPLATE.md aes.c aes_asm.S aes_asm.asm aes_gcm_asm.S aes_gcm_asm.asm aes_gcm_x86_asm.S aes_xts_asm.S aes_xts_asm.asm arc4.c ascon.c asm.c asn.c asn_orig.c async.c blake2b.c blake2s.c camellia.c chacha.c chacha20_poly1305.c chacha_asm.S chacha_asm.asm cmac.c coding.c compress.c cpuid.c cryptocb.c curve25519.c curve448.c des3.c dh.c dilithium.c dsa.c ecc.c ecc_fp.c eccsi.c ed25519.c ed448.c error.c evp.c evp_pk.c falcon.c fe_448.c fe_low_mem.c fe_operations.c fe_x25519_128.h fe_x25519_asm.S fp_mont_small.i fp_mul_comba_12.i fp_mul_comba_17.i fp_mul_comba_20.i fp_mul_comba_24.i fp_mul_comba_28.i fp_mul_comba_3.i fp_mul_comba_32.i fp_mul_comba_4.i fp_mul_comba_48.i fp_mul_comba_6.i fp_mul_comba_64.i fp_mul_comba_7.i fp_mul_comba_8.i fp_mul_comba_9.i fp_mul_comba_small_set.i fp_sqr_comba_12.i fp_sqr_comba_17.i fp_sqr_comba_20.i fp_sqr_comba_24.i fp_sqr_comba_28.i fp_sqr_comba_3.i fp_sqr_comba_32.i fp_sqr_comba_4.i fp_sqr_comba_48.i fp_sqr_comba_6.i fp_sqr_comba_64.i fp_sqr_comba_7.i fp_sqr_comba_8.i fp_sqr_comba_9.i fp_sqr_comba_small_set.i ge_448.c ge_low_mem.c ge_operations.c hash.c hmac.c hpke.c include.am integer.c kdf.c logging.c md2.c md4.c md5.c memory.c misc.c pkcs12.c pkcs7.c poly1305.c poly1305_asm.S poly1305_asm.asm puf.c pwdbased.c random.c rc2.c ripemd.c rng_bank.c rsa.c sakke.c sha.c sha256.c sha256_asm.S sha3.c sha3_asm.S sha512.c sha512_asm.S signature.c siphash.c sm2.c sm3.c sm3_asm.S sm4.c sp_arm32.c sp_arm64.c sp_armthumb.c sp_c32.c sp_c64.c sp_cortexm.c sp_dsp32.c sp_int.c sp_sm2_arm32.c sp_sm2_arm64.c sp_sm2_armthumb.c sp_sm2_c32.c sp_sm2_c64.c sp_sm2_cortexm.c sp_sm2_x86_64.c sp_sm2_x86_64_asm.S sp_x86_64.c sp_x86_64_asm.S sp_x86_64_asm.asm srp.c tfm.c wc_dsp.c wc_encrypt.c wc_lms.c wc_lms_impl.c wc_mldsa_asm.S wc_mlkem.c wc_mlkem_asm.S wc_mlkem_poly.c wc_pkcs11.c wc_port.c wc_she.c wc_slhdsa.c wc_xmss.c wc_xmss_impl.c wolfentropy.c wolfevent.c wolfmath.c
test README.md include.am test-VS2022.sln test-VS2022.vcxproj test-VS2022.vcxproj.user test.c test.h test.sln test.vcproj test_paths.h.in
wolfssl
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.h
wolfcrypt
port
Espressif esp-sdk-lib.h esp32-crypt.h esp_crt_bundle.h
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.h
af_alg afalg_hash.h wc_afalg.h
aria aria-crypt.h aria-cryptocb.h
arm cryptoCell.h
atmel atmel.h
autosar CryIf.h Crypto.h Csm.h StandardTypes.h
caam 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.h
cavium cavium_nitrox.h cavium_octeon_sync.h
cypress psoc6_crypto.h
devcrypto wc_devcrypto.h
intel quickassist.h quickassist_mem.h quickassist_sync.h
iotsafe iotsafe.h
kcapi kcapi_dh.h kcapi_ecc.h kcapi_hash.h kcapi_hmac.h kcapi_rsa.h wc_kcapi.h
liboqs liboqs.h
maxim max3266x-cryptocb.h max3266x.h maxq10xx.h
nxp casper_port.h dcp_port.h hashcrypt_port.h ksdk_port.h se050_port.h
pic32 pic32mz-crypt.h
psa psa.h
riscv riscv-64-asm.h
rpi_pico pico.h
silabs silabs_aes.h silabs_ecc.h silabs_hash.h silabs_random.h
st stm32.h stsafe.h
ti ti-ccm.h ti-hash.h
tropicsquare tropic01.h
xilinx xil-sha3.h xil-versal-glue.h xil-versal-trng.h
nrf51.h
aes.h arc4.h ascon.h asn.h asn_public.h async.h blake2-impl.h blake2-int.h blake2.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cpuid.h cryptocb.h curve25519.h curve448.h des3.h dh.h dilithium.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h falcon.h fe_448.h fe_operations.h fips_test.h ge_448.h ge_operations.h hash.h hmac.h hpke.h include.am integer.h kdf.h libwolfssl_sources.h libwolfssl_sources_asm.h logging.h md2.h md4.h md5.h mem_track.h memory.h misc.h mpi_class.h mpi_superclass.h oid_sum.h pkcs11.h pkcs12.h pkcs7.h poly1305.h puf.h pwdbased.h random.h rc2.h ripemd.h rng_bank.h rsa.h sakke.h selftest.h settings.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h sm2.h sm3.h sm4.h sp.h sp_int.h srp.h tfm.h types.h visibility.h wc_encrypt.h wc_lms.h wc_mlkem.h wc_pkcs11.h wc_port.h wc_she.h wc_slhdsa.h wc_xmss.h wolfentropy.h wolfevent.h wolfmath.h
callbacks.h certs_test.h certs_test_sm.h crl.h error-ssl.h include.am internal.h ocsp.h options.h.in quic.h sniffer.h sniffer_error.h sniffer_error.rc ssl.h test.h version.h version.h.in wolfio.h
wrapper
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.adb
.gitignore alire.toml examples.gpr
tests
src
support test_support.adb test_support.ads tests_root_suite.adb tests_root_suite.ads
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.adb
.gitignore README.md alire.toml tests.gpr valgrind.supp
.gitignore README.md ada_binding.c alire.toml default.gpr include.am restricted.adc user_settings.h wolfssl-full_runtime.adb wolfssl-full_runtime.ads wolfssl.adb wolfssl.ads wolfssl.gpr
CSharp
wolfCrypt-Test
Properties AssemblyInfo.cs
App.config wolfCrypt-Test.cs wolfCrypt-Test.csproj
wolfSSL-DTLS-PSK-Server
Properties AssemblyInfo.cs
App.config wolfSSL-DTLS-PSK-Server.cs wolfSSL-DTLS-PSK-Server.csproj
wolfSSL-DTLS-Server
Properties AssemblyInfo.cs
App.config wolfSSL-DTLS-Server.cs wolfSSL-DTLS-Server.csproj
wolfSSL-Example-IOCallbacks
Properties AssemblyInfo.cs
App.config wolfSSL-Example-IOCallbacks.cs wolfSSL-Example-IOCallbacks.csproj
wolfSSL-TLS-Client
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-Client.cs wolfSSL-TLS-Client.csproj
wolfSSL-TLS-PSK-Client
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-PSK-Client.cs wolfSSL-TLS-PSK-Client.csproj
wolfSSL-TLS-PSK-Server
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-PSK-Server.cs wolfSSL-TLS-PSK-Server.csproj
wolfSSL-TLS-Server
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-Server.cs wolfSSL-TLS-Server.csproj
wolfSSL-TLS-ServerThreaded
Properties AssemblyInfo.cs
App.config wolfSSL-TLS-ServerThreaded.cs wolfSSL-TLS-ServerThreaded.csproj
wolfSSL_CSharp
Properties AssemblyInfo.cs Resources.Designer.cs Resources.resx
X509.cs wolfCrypt.cs wolfSSL.cs wolfSSL_CSharp.csproj
README.md include.am user_settings.h wolfSSL_CSharp.sln wolfssl.vcxproj
python README.md
rust
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.rs
tests
common mod.rs
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.rs
CHANGELOG.md Cargo.lock Cargo.toml Makefile README.md build.rs headers.h
Makefile README.md include.am
include.am
zephyr
samples
wolfssl_benchmark
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
CMakeLists.txt README install_test.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_test
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
CMakeLists.txt README install_test.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_tls_sock
boards native_sim.conf
src tls_sock.c
CMakeLists.txt README install_sample.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl_tls_thread
boards native_sim.conf nrf5340dk_nrf5340_cpuapp.conf nrf5340dk_nrf5340_cpuapp_ns.conf
src tls_threaded.c
CMakeLists.txt README install_sample.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl options.h
CMakeLists.txt Kconfig Kconfig.tls-generic README.md include.am module.yml user_settings-no-malloc.h user_settings.h zephyr_init.c
.codespellexcludelines .cyignore .editorconfig .gitignore .wolfssl_known_macro_extras AUTHORS CMakeLists.txt CMakePresets.json CMakeSettings.json COPYING ChangeLog.md INSTALL LICENSING LPCExpresso.cproject LPCExpresso.project Makefile.am README README-async.md README.md SCRIPTS-LIST SECURITY-POLICY.md SECURITY-REPORT-TEMPLATE.md Vagrantfile autogen.sh commit-tests.sh configure.ac fips-check.sh fips-hash.sh gencertbuf.pl input pull_to_vagrant.sh quit resource.h stamp-h.in valgrind-bash.supp valgrind-error.sh wnr-example.conf wolfssl-VS2022.vcxproj wolfssl.rc wolfssl.vcproj wolfssl.vcxproj wolfssl64.sln
.clangd .gitignore DOCS.md Makefile README.md assert.c core.c crypto.c env.c fs.c http.c ini.c json.c log.c luna.h main.c makext.mk path.c process.c request.c sqlite.c stash.c template.c util.c
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 */