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-sha512-asm.S raw
   1/* armv8-32-sha512-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 ./sha2/sha512.rb arm32 \
  25 *       ../wolfssl/wolfcrypt/src/port/arm/armv8-32-sha512-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#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
  34#ifdef WOLFSSL_ARMASM_NO_NEON
  35#ifndef __APPLE__
  36	.text
  37	.type	L_SHA512_transform_len_k, %object
  38	.size	L_SHA512_transform_len_k, 640
  39#else
  40	.section	__DATA,__data
  41#endif /* __APPLE__ */
  42	# 16-byte aligned, 128-bit aligned
  43#ifndef __APPLE__
  44	.align	4
  45#else
  46	.p2align	4
  47#endif /* __APPLE__ */
  48L_SHA512_transform_len_k:
  49	.quad	0x428a2f98d728ae22,0x7137449123ef65cd
  50	.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
  51	.quad	0x3956c25bf348b538,0x59f111f1b605d019
  52	.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
  53	.quad	0xd807aa98a3030242,0x12835b0145706fbe
  54	.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
  55	.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
  56	.quad	0x9bdc06a725c71235,0xc19bf174cf692694
  57	.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
  58	.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
  59	.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
  60	.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
  61	.quad	0x983e5152ee66dfab,0xa831c66d2db43210
  62	.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
  63	.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
  64	.quad	0x06ca6351e003826f,0x142929670a0e6e70
  65	.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
  66	.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
  67	.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
  68	.quad	0x81c2c92e47edaee6,0x92722c851482353b
  69	.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
  70	.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
  71	.quad	0xd192e819d6ef5218,0xd69906245565a910
  72	.quad	0xf40e35855771202a,0x106aa07032bbd1b8
  73	.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
  74	.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
  75	.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
  76	.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
  77	.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
  78	.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
  79	.quad	0x90befffa23631e28,0xa4506cebde82bde9
  80	.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
  81	.quad	0xca273eceea26619c,0xd186b8c721c0c207
  82	.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
  83	.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
  84	.quad	0x113f9804bef90dae,0x1b710b35131c471b
  85	.quad	0x28db77f523047d84,0x32caab7b40c72493
  86	.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
  87	.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
  88	.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
  89	.text
  90	.align	4
  91	.globl	Transform_Sha512_Len_base
  92	.type	Transform_Sha512_Len_base, %function
  93Transform_Sha512_Len_base:
  94	push	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
  95	sub	sp, sp, #0xc0
  96	adr	r3, L_SHA512_transform_len_k
  97	# Copy digest to add in at end
  98#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
  99	ldm	r0, {r4, r5}
 100#else
 101	ldrd	r4, r5, [r0]
 102#endif
 103#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 104	ldr	r6, [r0, #8]
 105	ldr	r7, [r0, #12]
 106#else
 107	ldrd	r6, r7, [r0, #8]
 108#endif
 109#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 110	ldr	r8, [r0, #16]
 111	ldr	r9, [r0, #20]
 112#else
 113	ldrd	r8, r9, [r0, #16]
 114#endif
 115#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 116	ldr	r10, [r0, #24]
 117	ldr	r11, [r0, #28]
 118#else
 119	ldrd	r10, r11, [r0, #24]
 120#endif
 121#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 122	str	r4, [sp, #128]
 123	str	r5, [sp, #132]
 124#else
 125	strd	r4, r5, [sp, #128]
 126#endif
 127#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 128	str	r6, [sp, #136]
 129	str	r7, [sp, #140]
 130#else
 131	strd	r6, r7, [sp, #136]
 132#endif
 133#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 134	str	r8, [sp, #144]
 135	str	r9, [sp, #148]
 136#else
 137	strd	r8, r9, [sp, #144]
 138#endif
 139#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 140	str	r10, [sp, #152]
 141	str	r11, [sp, #156]
 142#else
 143	strd	r10, r11, [sp, #152]
 144#endif
 145#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 146	ldr	r4, [r0, #32]
 147	ldr	r5, [r0, #36]
 148#else
 149	ldrd	r4, r5, [r0, #32]
 150#endif
 151#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 152	ldr	r6, [r0, #40]
 153	ldr	r7, [r0, #44]
 154#else
 155	ldrd	r6, r7, [r0, #40]
 156#endif
 157#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 158	ldr	r8, [r0, #48]
 159	ldr	r9, [r0, #52]
 160#else
 161	ldrd	r8, r9, [r0, #48]
 162#endif
 163#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 164	ldr	r10, [r0, #56]
 165	ldr	r11, [r0, #60]
 166#else
 167	ldrd	r10, r11, [r0, #56]
 168#endif
 169#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 170	str	r4, [sp, #160]
 171	str	r5, [sp, #164]
 172#else
 173	strd	r4, r5, [sp, #160]
 174#endif
 175#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 176	str	r6, [sp, #168]
 177	str	r7, [sp, #172]
 178#else
 179	strd	r6, r7, [sp, #168]
 180#endif
 181#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 182	str	r8, [sp, #176]
 183	str	r9, [sp, #180]
 184#else
 185	strd	r8, r9, [sp, #176]
 186#endif
 187#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 188	str	r10, [sp, #184]
 189	str	r11, [sp, #188]
 190#else
 191	strd	r10, r11, [sp, #184]
 192#endif
 193	# Start of loop processing a block
 194L_SHA512_transform_len_begin:
 195	# Load, Reverse and Store W - 64 bytes
 196#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 6)
 197	ldr	r4, [r1]
 198	ldr	r5, [r1, #4]
 199	ldr	r6, [r1, #8]
 200	ldr	r7, [r1, #12]
 201	eor	r8, r4, r4, ror #16
 202	eor	r9, r5, r5, ror #16
 203	eor	r10, r6, r6, ror #16
 204	eor	r11, r7, r7, ror #16
 205	bic	r8, r8, #0xff0000
 206	bic	r9, r9, #0xff0000
 207	bic	r10, r10, #0xff0000
 208	bic	r11, r11, #0xff0000
 209	ror	r4, r4, #8
 210	ror	r5, r5, #8
 211	ror	r6, r6, #8
 212	ror	r7, r7, #8
 213	eor	r4, r4, r8, lsr #8
 214	eor	r5, r5, r9, lsr #8
 215	eor	r6, r6, r10, lsr #8
 216	eor	r7, r7, r11, lsr #8
 217	str	r5, [sp]
 218	str	r4, [sp, #4]
 219	str	r7, [sp, #8]
 220	str	r6, [sp, #12]
 221	ldr	r4, [r1, #16]
 222	ldr	r5, [r1, #20]
 223	ldr	r6, [r1, #24]
 224	ldr	r7, [r1, #28]
 225	eor	r8, r4, r4, ror #16
 226	eor	r9, r5, r5, ror #16
 227	eor	r10, r6, r6, ror #16
 228	eor	r11, r7, r7, ror #16
 229	bic	r8, r8, #0xff0000
 230	bic	r9, r9, #0xff0000
 231	bic	r10, r10, #0xff0000
 232	bic	r11, r11, #0xff0000
 233	ror	r4, r4, #8
 234	ror	r5, r5, #8
 235	ror	r6, r6, #8
 236	ror	r7, r7, #8
 237	eor	r4, r4, r8, lsr #8
 238	eor	r5, r5, r9, lsr #8
 239	eor	r6, r6, r10, lsr #8
 240	eor	r7, r7, r11, lsr #8
 241	str	r5, [sp, #16]
 242	str	r4, [sp, #20]
 243	str	r7, [sp, #24]
 244	str	r6, [sp, #28]
 245	ldr	r4, [r1, #32]
 246	ldr	r5, [r1, #36]
 247	ldr	r6, [r1, #40]
 248	ldr	r7, [r1, #44]
 249	eor	r8, r4, r4, ror #16
 250	eor	r9, r5, r5, ror #16
 251	eor	r10, r6, r6, ror #16
 252	eor	r11, r7, r7, ror #16
 253	bic	r8, r8, #0xff0000
 254	bic	r9, r9, #0xff0000
 255	bic	r10, r10, #0xff0000
 256	bic	r11, r11, #0xff0000
 257	ror	r4, r4, #8
 258	ror	r5, r5, #8
 259	ror	r6, r6, #8
 260	ror	r7, r7, #8
 261	eor	r4, r4, r8, lsr #8
 262	eor	r5, r5, r9, lsr #8
 263	eor	r6, r6, r10, lsr #8
 264	eor	r7, r7, r11, lsr #8
 265	str	r5, [sp, #32]
 266	str	r4, [sp, #36]
 267	str	r7, [sp, #40]
 268	str	r6, [sp, #44]
 269	ldr	r4, [r1, #48]
 270	ldr	r5, [r1, #52]
 271	ldr	r6, [r1, #56]
 272	ldr	r7, [r1, #60]
 273	eor	r8, r4, r4, ror #16
 274	eor	r9, r5, r5, ror #16
 275	eor	r10, r6, r6, ror #16
 276	eor	r11, r7, r7, ror #16
 277	bic	r8, r8, #0xff0000
 278	bic	r9, r9, #0xff0000
 279	bic	r10, r10, #0xff0000
 280	bic	r11, r11, #0xff0000
 281	ror	r4, r4, #8
 282	ror	r5, r5, #8
 283	ror	r6, r6, #8
 284	ror	r7, r7, #8
 285	eor	r4, r4, r8, lsr #8
 286	eor	r5, r5, r9, lsr #8
 287	eor	r6, r6, r10, lsr #8
 288	eor	r7, r7, r11, lsr #8
 289	str	r5, [sp, #48]
 290	str	r4, [sp, #52]
 291	str	r7, [sp, #56]
 292	str	r6, [sp, #60]
 293	ldr	r4, [r1, #64]
 294	ldr	r5, [r1, #68]
 295	ldr	r6, [r1, #72]
 296	ldr	r7, [r1, #76]
 297	eor	r8, r4, r4, ror #16
 298	eor	r9, r5, r5, ror #16
 299	eor	r10, r6, r6, ror #16
 300	eor	r11, r7, r7, ror #16
 301	bic	r8, r8, #0xff0000
 302	bic	r9, r9, #0xff0000
 303	bic	r10, r10, #0xff0000
 304	bic	r11, r11, #0xff0000
 305	ror	r4, r4, #8
 306	ror	r5, r5, #8
 307	ror	r6, r6, #8
 308	ror	r7, r7, #8
 309	eor	r4, r4, r8, lsr #8
 310	eor	r5, r5, r9, lsr #8
 311	eor	r6, r6, r10, lsr #8
 312	eor	r7, r7, r11, lsr #8
 313	str	r5, [sp, #64]
 314	str	r4, [sp, #68]
 315	str	r7, [sp, #72]
 316	str	r6, [sp, #76]
 317	ldr	r4, [r1, #80]
 318	ldr	r5, [r1, #84]
 319	ldr	r6, [r1, #88]
 320	ldr	r7, [r1, #92]
 321	eor	r8, r4, r4, ror #16
 322	eor	r9, r5, r5, ror #16
 323	eor	r10, r6, r6, ror #16
 324	eor	r11, r7, r7, ror #16
 325	bic	r8, r8, #0xff0000
 326	bic	r9, r9, #0xff0000
 327	bic	r10, r10, #0xff0000
 328	bic	r11, r11, #0xff0000
 329	ror	r4, r4, #8
 330	ror	r5, r5, #8
 331	ror	r6, r6, #8
 332	ror	r7, r7, #8
 333	eor	r4, r4, r8, lsr #8
 334	eor	r5, r5, r9, lsr #8
 335	eor	r6, r6, r10, lsr #8
 336	eor	r7, r7, r11, lsr #8
 337	str	r5, [sp, #80]
 338	str	r4, [sp, #84]
 339	str	r7, [sp, #88]
 340	str	r6, [sp, #92]
 341	ldr	r4, [r1, #96]
 342	ldr	r5, [r1, #100]
 343	ldr	r6, [r1, #104]
 344	ldr	r7, [r1, #108]
 345	eor	r8, r4, r4, ror #16
 346	eor	r9, r5, r5, ror #16
 347	eor	r10, r6, r6, ror #16
 348	eor	r11, r7, r7, ror #16
 349	bic	r8, r8, #0xff0000
 350	bic	r9, r9, #0xff0000
 351	bic	r10, r10, #0xff0000
 352	bic	r11, r11, #0xff0000
 353	ror	r4, r4, #8
 354	ror	r5, r5, #8
 355	ror	r6, r6, #8
 356	ror	r7, r7, #8
 357	eor	r4, r4, r8, lsr #8
 358	eor	r5, r5, r9, lsr #8
 359	eor	r6, r6, r10, lsr #8
 360	eor	r7, r7, r11, lsr #8
 361	str	r5, [sp, #96]
 362	str	r4, [sp, #100]
 363	str	r7, [sp, #104]
 364	str	r6, [sp, #108]
 365	ldr	r4, [r1, #112]
 366	ldr	r5, [r1, #116]
 367	ldr	r6, [r1, #120]
 368	ldr	r7, [r1, #124]
 369	eor	r8, r4, r4, ror #16
 370	eor	r9, r5, r5, ror #16
 371	eor	r10, r6, r6, ror #16
 372	eor	r11, r7, r7, ror #16
 373	bic	r8, r8, #0xff0000
 374	bic	r9, r9, #0xff0000
 375	bic	r10, r10, #0xff0000
 376	bic	r11, r11, #0xff0000
 377	ror	r4, r4, #8
 378	ror	r5, r5, #8
 379	ror	r6, r6, #8
 380	ror	r7, r7, #8
 381	eor	r4, r4, r8, lsr #8
 382	eor	r5, r5, r9, lsr #8
 383	eor	r6, r6, r10, lsr #8
 384	eor	r7, r7, r11, lsr #8
 385	str	r5, [sp, #112]
 386	str	r4, [sp, #116]
 387	str	r7, [sp, #120]
 388	str	r6, [sp, #124]
 389#else
 390	ldr	r4, [r1]
 391	ldr	r5, [r1, #4]
 392	ldr	r6, [r1, #8]
 393	ldr	r7, [r1, #12]
 394	ldr	r8, [r1, #16]
 395	ldr	r9, [r1, #20]
 396	ldr	r10, [r1, #24]
 397	ldr	r11, [r1, #28]
 398	rev	r4, r4
 399	rev	r5, r5
 400	rev	r6, r6
 401	rev	r7, r7
 402	rev	r8, r8
 403	rev	r9, r9
 404	rev	r10, r10
 405	rev	r11, r11
 406	str	r5, [sp]
 407	str	r4, [sp, #4]
 408	str	r7, [sp, #8]
 409	str	r6, [sp, #12]
 410	str	r9, [sp, #16]
 411	str	r8, [sp, #20]
 412	str	r11, [sp, #24]
 413	str	r10, [sp, #28]
 414	ldr	r4, [r1, #32]
 415	ldr	r5, [r1, #36]
 416	ldr	r6, [r1, #40]
 417	ldr	r7, [r1, #44]
 418	ldr	r8, [r1, #48]
 419	ldr	r9, [r1, #52]
 420	ldr	r10, [r1, #56]
 421	ldr	r11, [r1, #60]
 422	rev	r4, r4
 423	rev	r5, r5
 424	rev	r6, r6
 425	rev	r7, r7
 426	rev	r8, r8
 427	rev	r9, r9
 428	rev	r10, r10
 429	rev	r11, r11
 430	str	r5, [sp, #32]
 431	str	r4, [sp, #36]
 432	str	r7, [sp, #40]
 433	str	r6, [sp, #44]
 434	str	r9, [sp, #48]
 435	str	r8, [sp, #52]
 436	str	r11, [sp, #56]
 437	str	r10, [sp, #60]
 438	ldr	r4, [r1, #64]
 439	ldr	r5, [r1, #68]
 440	ldr	r6, [r1, #72]
 441	ldr	r7, [r1, #76]
 442	ldr	r8, [r1, #80]
 443	ldr	r9, [r1, #84]
 444	ldr	r10, [r1, #88]
 445	ldr	r11, [r1, #92]
 446	rev	r4, r4
 447	rev	r5, r5
 448	rev	r6, r6
 449	rev	r7, r7
 450	rev	r8, r8
 451	rev	r9, r9
 452	rev	r10, r10
 453	rev	r11, r11
 454	str	r5, [sp, #64]
 455	str	r4, [sp, #68]
 456	str	r7, [sp, #72]
 457	str	r6, [sp, #76]
 458	str	r9, [sp, #80]
 459	str	r8, [sp, #84]
 460	str	r11, [sp, #88]
 461	str	r10, [sp, #92]
 462	ldr	r4, [r1, #96]
 463	ldr	r5, [r1, #100]
 464	ldr	r6, [r1, #104]
 465	ldr	r7, [r1, #108]
 466	ldr	r8, [r1, #112]
 467	ldr	r9, [r1, #116]
 468	ldr	r10, [r1, #120]
 469	ldr	r11, [r1, #124]
 470	rev	r4, r4
 471	rev	r5, r5
 472	rev	r6, r6
 473	rev	r7, r7
 474	rev	r8, r8
 475	rev	r9, r9
 476	rev	r10, r10
 477	rev	r11, r11
 478	str	r5, [sp, #96]
 479	str	r4, [sp, #100]
 480	str	r7, [sp, #104]
 481	str	r6, [sp, #108]
 482	str	r9, [sp, #112]
 483	str	r8, [sp, #116]
 484	str	r11, [sp, #120]
 485	str	r10, [sp, #124]
 486#endif /* WOLFSSL_ARM_ARCH && WOLFSSL_ARM_ARCH < 6 */
 487	# Pre-calc: b ^ c
 488#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 489	ldr	r10, [r0, #8]
 490	ldr	r11, [r0, #12]
 491#else
 492	ldrd	r10, r11, [r0, #8]
 493#endif
 494#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 495	ldr	r4, [r0, #16]
 496	ldr	r5, [r0, #20]
 497#else
 498	ldrd	r4, r5, [r0, #16]
 499#endif
 500	eor	r10, r10, r4
 501	eor	r11, r11, r5
 502	mov	r12, #4
 503	# Start of 16 rounds
 504L_SHA512_transform_len_start:
 505	# Round 0
 506#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 507	ldr	r4, [r0, #32]
 508	ldr	r5, [r0, #36]
 509#else
 510	ldrd	r4, r5, [r0, #32]
 511#endif
 512	lsrs	r6, r4, #14
 513	lsrs	r7, r5, #14
 514	orr	r7, r7, r4, lsl #18
 515	orr	r6, r6, r5, lsl #18
 516	lsrs	r8, r4, #18
 517	lsrs	r9, r5, #18
 518	orr	r9, r9, r4, lsl #14
 519	orr	r8, r8, r5, lsl #14
 520	eor	r6, r6, r8
 521	eor	r7, r7, r9
 522	lsls	r8, r4, #23
 523	lsls	r9, r5, #23
 524	orr	r9, r9, r4, lsr #9
 525	orr	r8, r8, r5, lsr #9
 526#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 527	ldr	r4, [r0, #56]
 528	ldr	r5, [r0, #60]
 529#else
 530	ldrd	r4, r5, [r0, #56]
 531#endif
 532	eor	r6, r6, r8
 533	eor	r7, r7, r9
 534	adds	r4, r4, r6
 535	adc	r5, r5, r7
 536#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 537	str	r4, [r0, #56]
 538	str	r5, [r0, #60]
 539#else
 540	strd	r4, r5, [r0, #56]
 541#endif
 542#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 543	ldr	r4, [r0, #32]
 544	ldr	r5, [r0, #36]
 545#else
 546	ldrd	r4, r5, [r0, #32]
 547#endif
 548#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 549	ldr	r6, [r0, #40]
 550	ldr	r7, [r0, #44]
 551#else
 552	ldrd	r6, r7, [r0, #40]
 553#endif
 554#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 555	ldr	r8, [r0, #48]
 556	ldr	r9, [r0, #52]
 557#else
 558	ldrd	r8, r9, [r0, #48]
 559#endif
 560	eor	r6, r6, r8
 561	eor	r7, r7, r9
 562	and	r6, r6, r4
 563	and	r7, r7, r5
 564	eor	r6, r6, r8
 565	eor	r7, r7, r9
 566#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 567	ldr	r4, [r0, #56]
 568	ldr	r5, [r0, #60]
 569#else
 570	ldrd	r4, r5, [r0, #56]
 571#endif
 572#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 573	ldm	sp, {r8, r9}
 574#else
 575	ldrd	r8, r9, [sp]
 576#endif
 577	adds	r4, r4, r6
 578	adc	r5, r5, r7
 579#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 580	ldm	r3, {r6, r7}
 581#else
 582	ldrd	r6, r7, [r3]
 583#endif
 584	adds	r4, r4, r8
 585	adc	r5, r5, r9
 586#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 587	ldr	r8, [r0, #24]
 588	ldr	r9, [r0, #28]
 589#else
 590	ldrd	r8, r9, [r0, #24]
 591#endif
 592	adds	r4, r4, r6
 593	adc	r5, r5, r7
 594#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 595	str	r4, [r0, #56]
 596	str	r5, [r0, #60]
 597#else
 598	strd	r4, r5, [r0, #56]
 599#endif
 600	adds	r8, r8, r4
 601	adc	r9, r9, r5
 602#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 603	ldm	r0, {r4, r5}
 604#else
 605	ldrd	r4, r5, [r0]
 606#endif
 607#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 608	str	r8, [r0, #24]
 609	str	r9, [r0, #28]
 610#else
 611	strd	r8, r9, [r0, #24]
 612#endif
 613	lsrs	r6, r4, #28
 614	lsrs	r7, r5, #28
 615	orr	r7, r7, r4, lsl #4
 616	orr	r6, r6, r5, lsl #4
 617	lsls	r8, r4, #30
 618	lsls	r9, r5, #30
 619	orr	r9, r9, r4, lsr #2
 620	orr	r8, r8, r5, lsr #2
 621	eor	r6, r6, r8
 622	eor	r7, r7, r9
 623	lsls	r8, r4, #25
 624	lsls	r9, r5, #25
 625	orr	r9, r9, r4, lsr #7
 626	orr	r8, r8, r5, lsr #7
 627#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 628	ldr	r4, [r0, #56]
 629	ldr	r5, [r0, #60]
 630#else
 631	ldrd	r4, r5, [r0, #56]
 632#endif
 633	eor	r6, r6, r8
 634	eor	r7, r7, r9
 635	adds	r4, r4, r6
 636	adc	r5, r5, r7
 637#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 638	ldm	r0, {r8, r9}
 639#else
 640	ldrd	r8, r9, [r0]
 641#endif
 642#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 643	ldr	r6, [r0, #8]
 644	ldr	r7, [r0, #12]
 645#else
 646	ldrd	r6, r7, [r0, #8]
 647#endif
 648#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 649	str	r4, [r0, #56]
 650	str	r5, [r0, #60]
 651#else
 652	strd	r4, r5, [r0, #56]
 653#endif
 654	eor	r8, r8, r6
 655	eor	r9, r9, r7
 656	and	r10, r10, r8
 657	and	r11, r11, r9
 658	eor	r10, r10, r6
 659	eor	r11, r11, r7
 660#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 661	ldr	r6, [r0, #56]
 662	ldr	r7, [r0, #60]
 663#else
 664	ldrd	r6, r7, [r0, #56]
 665#endif
 666	adds	r6, r6, r10
 667	adc	r7, r7, r11
 668#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 669	str	r6, [r0, #56]
 670	str	r7, [r0, #60]
 671#else
 672	strd	r6, r7, [r0, #56]
 673#endif
 674	mov	r10, r8
 675	mov	r11, r9
 676	# Calc new W[0]
 677#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 678	ldr	r4, [sp, #112]
 679	ldr	r5, [sp, #116]
 680#else
 681	ldrd	r4, r5, [sp, #112]
 682#endif
 683	lsrs	r6, r4, #19
 684	lsrs	r7, r5, #19
 685	orr	r7, r7, r4, lsl #13
 686	orr	r6, r6, r5, lsl #13
 687	lsls	r8, r4, #3
 688	lsls	r9, r5, #3
 689	orr	r9, r9, r4, lsr #29
 690	orr	r8, r8, r5, lsr #29
 691	eor	r7, r7, r9
 692	eor	r6, r6, r8
 693	lsrs	r8, r4, #6
 694	lsrs	r9, r5, #6
 695	orr	r8, r8, r5, lsl #26
 696	eor	r7, r7, r9
 697	eor	r6, r6, r8
 698#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 699	ldm	sp, {r4, r5}
 700#else
 701	ldrd	r4, r5, [sp]
 702#endif
 703#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 704	ldr	r8, [sp, #72]
 705	ldr	r9, [sp, #76]
 706#else
 707	ldrd	r8, r9, [sp, #72]
 708#endif
 709	adds	r4, r4, r6
 710	adc	r5, r5, r7
 711	adds	r4, r4, r8
 712	adc	r5, r5, r9
 713#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 714	stm	sp, {r4, r5}
 715#else
 716	strd	r4, r5, [sp]
 717#endif
 718#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 719	ldr	r4, [sp, #8]
 720	ldr	r5, [sp, #12]
 721#else
 722	ldrd	r4, r5, [sp, #8]
 723#endif
 724	lsrs	r6, r4, #1
 725	lsrs	r7, r5, #1
 726	orr	r7, r7, r4, lsl #31
 727	orr	r6, r6, r5, lsl #31
 728	lsrs	r8, r4, #8
 729	lsrs	r9, r5, #8
 730	orr	r9, r9, r4, lsl #24
 731	orr	r8, r8, r5, lsl #24
 732	eor	r7, r7, r9
 733	eor	r6, r6, r8
 734	lsrs	r8, r4, #7
 735	lsrs	r9, r5, #7
 736	orr	r8, r8, r5, lsl #25
 737	eor	r7, r7, r9
 738	eor	r6, r6, r8
 739#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 740	ldm	sp, {r4, r5}
 741#else
 742	ldrd	r4, r5, [sp]
 743#endif
 744	adds	r4, r4, r6
 745	adc	r5, r5, r7
 746#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 747	stm	sp, {r4, r5}
 748#else
 749	strd	r4, r5, [sp]
 750#endif
 751	# Round 1
 752#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 753	ldr	r4, [r0, #24]
 754	ldr	r5, [r0, #28]
 755#else
 756	ldrd	r4, r5, [r0, #24]
 757#endif
 758	lsrs	r6, r4, #14
 759	lsrs	r7, r5, #14
 760	orr	r7, r7, r4, lsl #18
 761	orr	r6, r6, r5, lsl #18
 762	lsrs	r8, r4, #18
 763	lsrs	r9, r5, #18
 764	orr	r9, r9, r4, lsl #14
 765	orr	r8, r8, r5, lsl #14
 766	eor	r6, r6, r8
 767	eor	r7, r7, r9
 768	lsls	r8, r4, #23
 769	lsls	r9, r5, #23
 770	orr	r9, r9, r4, lsr #9
 771	orr	r8, r8, r5, lsr #9
 772#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 773	ldr	r4, [r0, #48]
 774	ldr	r5, [r0, #52]
 775#else
 776	ldrd	r4, r5, [r0, #48]
 777#endif
 778	eor	r6, r6, r8
 779	eor	r7, r7, r9
 780	adds	r4, r4, r6
 781	adc	r5, r5, r7
 782#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 783	str	r4, [r0, #48]
 784	str	r5, [r0, #52]
 785#else
 786	strd	r4, r5, [r0, #48]
 787#endif
 788#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 789	ldr	r4, [r0, #24]
 790	ldr	r5, [r0, #28]
 791#else
 792	ldrd	r4, r5, [r0, #24]
 793#endif
 794#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 795	ldr	r6, [r0, #32]
 796	ldr	r7, [r0, #36]
 797#else
 798	ldrd	r6, r7, [r0, #32]
 799#endif
 800#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 801	ldr	r8, [r0, #40]
 802	ldr	r9, [r0, #44]
 803#else
 804	ldrd	r8, r9, [r0, #40]
 805#endif
 806	eor	r6, r6, r8
 807	eor	r7, r7, r9
 808	and	r6, r6, r4
 809	and	r7, r7, r5
 810	eor	r6, r6, r8
 811	eor	r7, r7, r9
 812#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 813	ldr	r4, [r0, #48]
 814	ldr	r5, [r0, #52]
 815#else
 816	ldrd	r4, r5, [r0, #48]
 817#endif
 818#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 819	ldr	r8, [sp, #8]
 820	ldr	r9, [sp, #12]
 821#else
 822	ldrd	r8, r9, [sp, #8]
 823#endif
 824	adds	r4, r4, r6
 825	adc	r5, r5, r7
 826#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 827	ldr	r6, [r3, #8]
 828	ldr	r7, [r3, #12]
 829#else
 830	ldrd	r6, r7, [r3, #8]
 831#endif
 832	adds	r4, r4, r8
 833	adc	r5, r5, r9
 834#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 835	ldr	r8, [r0, #16]
 836	ldr	r9, [r0, #20]
 837#else
 838	ldrd	r8, r9, [r0, #16]
 839#endif
 840	adds	r4, r4, r6
 841	adc	r5, r5, r7
 842#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 843	str	r4, [r0, #48]
 844	str	r5, [r0, #52]
 845#else
 846	strd	r4, r5, [r0, #48]
 847#endif
 848	adds	r8, r8, r4
 849	adc	r9, r9, r5
 850#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 851	ldr	r4, [r0, #56]
 852	ldr	r5, [r0, #60]
 853#else
 854	ldrd	r4, r5, [r0, #56]
 855#endif
 856#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 857	str	r8, [r0, #16]
 858	str	r9, [r0, #20]
 859#else
 860	strd	r8, r9, [r0, #16]
 861#endif
 862	lsrs	r6, r4, #28
 863	lsrs	r7, r5, #28
 864	orr	r7, r7, r4, lsl #4
 865	orr	r6, r6, r5, lsl #4
 866	lsls	r8, r4, #30
 867	lsls	r9, r5, #30
 868	orr	r9, r9, r4, lsr #2
 869	orr	r8, r8, r5, lsr #2
 870	eor	r6, r6, r8
 871	eor	r7, r7, r9
 872	lsls	r8, r4, #25
 873	lsls	r9, r5, #25
 874	orr	r9, r9, r4, lsr #7
 875	orr	r8, r8, r5, lsr #7
 876#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 877	ldr	r4, [r0, #48]
 878	ldr	r5, [r0, #52]
 879#else
 880	ldrd	r4, r5, [r0, #48]
 881#endif
 882	eor	r6, r6, r8
 883	eor	r7, r7, r9
 884	adds	r4, r4, r6
 885	adc	r5, r5, r7
 886#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 887	ldr	r8, [r0, #56]
 888	ldr	r9, [r0, #60]
 889#else
 890	ldrd	r8, r9, [r0, #56]
 891#endif
 892#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 893	ldm	r0, {r6, r7}
 894#else
 895	ldrd	r6, r7, [r0]
 896#endif
 897#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 898	str	r4, [r0, #48]
 899	str	r5, [r0, #52]
 900#else
 901	strd	r4, r5, [r0, #48]
 902#endif
 903	eor	r8, r8, r6
 904	eor	r9, r9, r7
 905	and	r10, r10, r8
 906	and	r11, r11, r9
 907	eor	r10, r10, r6
 908	eor	r11, r11, r7
 909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 910	ldr	r6, [r0, #48]
 911	ldr	r7, [r0, #52]
 912#else
 913	ldrd	r6, r7, [r0, #48]
 914#endif
 915	adds	r6, r6, r10
 916	adc	r7, r7, r11
 917#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 918	str	r6, [r0, #48]
 919	str	r7, [r0, #52]
 920#else
 921	strd	r6, r7, [r0, #48]
 922#endif
 923	mov	r10, r8
 924	mov	r11, r9
 925	# Calc new W[1]
 926#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 927	ldr	r4, [sp, #120]
 928	ldr	r5, [sp, #124]
 929#else
 930	ldrd	r4, r5, [sp, #120]
 931#endif
 932	lsrs	r6, r4, #19
 933	lsrs	r7, r5, #19
 934	orr	r7, r7, r4, lsl #13
 935	orr	r6, r6, r5, lsl #13
 936	lsls	r8, r4, #3
 937	lsls	r9, r5, #3
 938	orr	r9, r9, r4, lsr #29
 939	orr	r8, r8, r5, lsr #29
 940	eor	r7, r7, r9
 941	eor	r6, r6, r8
 942	lsrs	r8, r4, #6
 943	lsrs	r9, r5, #6
 944	orr	r8, r8, r5, lsl #26
 945	eor	r7, r7, r9
 946	eor	r6, r6, r8
 947#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 948	ldr	r4, [sp, #8]
 949	ldr	r5, [sp, #12]
 950#else
 951	ldrd	r4, r5, [sp, #8]
 952#endif
 953#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 954	ldr	r8, [sp, #80]
 955	ldr	r9, [sp, #84]
 956#else
 957	ldrd	r8, r9, [sp, #80]
 958#endif
 959	adds	r4, r4, r6
 960	adc	r5, r5, r7
 961	adds	r4, r4, r8
 962	adc	r5, r5, r9
 963#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 964	str	r4, [sp, #8]
 965	str	r5, [sp, #12]
 966#else
 967	strd	r4, r5, [sp, #8]
 968#endif
 969#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 970	ldr	r4, [sp, #16]
 971	ldr	r5, [sp, #20]
 972#else
 973	ldrd	r4, r5, [sp, #16]
 974#endif
 975	lsrs	r6, r4, #1
 976	lsrs	r7, r5, #1
 977	orr	r7, r7, r4, lsl #31
 978	orr	r6, r6, r5, lsl #31
 979	lsrs	r8, r4, #8
 980	lsrs	r9, r5, #8
 981	orr	r9, r9, r4, lsl #24
 982	orr	r8, r8, r5, lsl #24
 983	eor	r7, r7, r9
 984	eor	r6, r6, r8
 985	lsrs	r8, r4, #7
 986	lsrs	r9, r5, #7
 987	orr	r8, r8, r5, lsl #25
 988	eor	r7, r7, r9
 989	eor	r6, r6, r8
 990#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 991	ldr	r4, [sp, #8]
 992	ldr	r5, [sp, #12]
 993#else
 994	ldrd	r4, r5, [sp, #8]
 995#endif
 996	adds	r4, r4, r6
 997	adc	r5, r5, r7
 998#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
 999	str	r4, [sp, #8]
1000	str	r5, [sp, #12]
1001#else
1002	strd	r4, r5, [sp, #8]
1003#endif
1004	# Round 2
1005#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1006	ldr	r4, [r0, #16]
1007	ldr	r5, [r0, #20]
1008#else
1009	ldrd	r4, r5, [r0, #16]
1010#endif
1011	lsrs	r6, r4, #14
1012	lsrs	r7, r5, #14
1013	orr	r7, r7, r4, lsl #18
1014	orr	r6, r6, r5, lsl #18
1015	lsrs	r8, r4, #18
1016	lsrs	r9, r5, #18
1017	orr	r9, r9, r4, lsl #14
1018	orr	r8, r8, r5, lsl #14
1019	eor	r6, r6, r8
1020	eor	r7, r7, r9
1021	lsls	r8, r4, #23
1022	lsls	r9, r5, #23
1023	orr	r9, r9, r4, lsr #9
1024	orr	r8, r8, r5, lsr #9
1025#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1026	ldr	r4, [r0, #40]
1027	ldr	r5, [r0, #44]
1028#else
1029	ldrd	r4, r5, [r0, #40]
1030#endif
1031	eor	r6, r6, r8
1032	eor	r7, r7, r9
1033	adds	r4, r4, r6
1034	adc	r5, r5, r7
1035#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1036	str	r4, [r0, #40]
1037	str	r5, [r0, #44]
1038#else
1039	strd	r4, r5, [r0, #40]
1040#endif
1041#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1042	ldr	r4, [r0, #16]
1043	ldr	r5, [r0, #20]
1044#else
1045	ldrd	r4, r5, [r0, #16]
1046#endif
1047#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1048	ldr	r6, [r0, #24]
1049	ldr	r7, [r0, #28]
1050#else
1051	ldrd	r6, r7, [r0, #24]
1052#endif
1053#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1054	ldr	r8, [r0, #32]
1055	ldr	r9, [r0, #36]
1056#else
1057	ldrd	r8, r9, [r0, #32]
1058#endif
1059	eor	r6, r6, r8
1060	eor	r7, r7, r9
1061	and	r6, r6, r4
1062	and	r7, r7, r5
1063	eor	r6, r6, r8
1064	eor	r7, r7, r9
1065#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1066	ldr	r4, [r0, #40]
1067	ldr	r5, [r0, #44]
1068#else
1069	ldrd	r4, r5, [r0, #40]
1070#endif
1071#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1072	ldr	r8, [sp, #16]
1073	ldr	r9, [sp, #20]
1074#else
1075	ldrd	r8, r9, [sp, #16]
1076#endif
1077	adds	r4, r4, r6
1078	adc	r5, r5, r7
1079#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1080	ldr	r6, [r3, #16]
1081	ldr	r7, [r3, #20]
1082#else
1083	ldrd	r6, r7, [r3, #16]
1084#endif
1085	adds	r4, r4, r8
1086	adc	r5, r5, r9
1087#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1088	ldr	r8, [r0, #8]
1089	ldr	r9, [r0, #12]
1090#else
1091	ldrd	r8, r9, [r0, #8]
1092#endif
1093	adds	r4, r4, r6
1094	adc	r5, r5, r7
1095#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1096	str	r4, [r0, #40]
1097	str	r5, [r0, #44]
1098#else
1099	strd	r4, r5, [r0, #40]
1100#endif
1101	adds	r8, r8, r4
1102	adc	r9, r9, r5
1103#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1104	ldr	r4, [r0, #48]
1105	ldr	r5, [r0, #52]
1106#else
1107	ldrd	r4, r5, [r0, #48]
1108#endif
1109#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1110	str	r8, [r0, #8]
1111	str	r9, [r0, #12]
1112#else
1113	strd	r8, r9, [r0, #8]
1114#endif
1115	lsrs	r6, r4, #28
1116	lsrs	r7, r5, #28
1117	orr	r7, r7, r4, lsl #4
1118	orr	r6, r6, r5, lsl #4
1119	lsls	r8, r4, #30
1120	lsls	r9, r5, #30
1121	orr	r9, r9, r4, lsr #2
1122	orr	r8, r8, r5, lsr #2
1123	eor	r6, r6, r8
1124	eor	r7, r7, r9
1125	lsls	r8, r4, #25
1126	lsls	r9, r5, #25
1127	orr	r9, r9, r4, lsr #7
1128	orr	r8, r8, r5, lsr #7
1129#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1130	ldr	r4, [r0, #40]
1131	ldr	r5, [r0, #44]
1132#else
1133	ldrd	r4, r5, [r0, #40]
1134#endif
1135	eor	r6, r6, r8
1136	eor	r7, r7, r9
1137	adds	r4, r4, r6
1138	adc	r5, r5, r7
1139#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1140	ldr	r8, [r0, #48]
1141	ldr	r9, [r0, #52]
1142#else
1143	ldrd	r8, r9, [r0, #48]
1144#endif
1145#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1146	ldr	r6, [r0, #56]
1147	ldr	r7, [r0, #60]
1148#else
1149	ldrd	r6, r7, [r0, #56]
1150#endif
1151#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1152	str	r4, [r0, #40]
1153	str	r5, [r0, #44]
1154#else
1155	strd	r4, r5, [r0, #40]
1156#endif
1157	eor	r8, r8, r6
1158	eor	r9, r9, r7
1159	and	r10, r10, r8
1160	and	r11, r11, r9
1161	eor	r10, r10, r6
1162	eor	r11, r11, r7
1163#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1164	ldr	r6, [r0, #40]
1165	ldr	r7, [r0, #44]
1166#else
1167	ldrd	r6, r7, [r0, #40]
1168#endif
1169	adds	r6, r6, r10
1170	adc	r7, r7, r11
1171#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1172	str	r6, [r0, #40]
1173	str	r7, [r0, #44]
1174#else
1175	strd	r6, r7, [r0, #40]
1176#endif
1177	mov	r10, r8
1178	mov	r11, r9
1179	# Calc new W[2]
1180#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1181	ldm	sp, {r4, r5}
1182#else
1183	ldrd	r4, r5, [sp]
1184#endif
1185	lsrs	r6, r4, #19
1186	lsrs	r7, r5, #19
1187	orr	r7, r7, r4, lsl #13
1188	orr	r6, r6, r5, lsl #13
1189	lsls	r8, r4, #3
1190	lsls	r9, r5, #3
1191	orr	r9, r9, r4, lsr #29
1192	orr	r8, r8, r5, lsr #29
1193	eor	r7, r7, r9
1194	eor	r6, r6, r8
1195	lsrs	r8, r4, #6
1196	lsrs	r9, r5, #6
1197	orr	r8, r8, r5, lsl #26
1198	eor	r7, r7, r9
1199	eor	r6, r6, r8
1200#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1201	ldr	r4, [sp, #16]
1202	ldr	r5, [sp, #20]
1203#else
1204	ldrd	r4, r5, [sp, #16]
1205#endif
1206#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1207	ldr	r8, [sp, #88]
1208	ldr	r9, [sp, #92]
1209#else
1210	ldrd	r8, r9, [sp, #88]
1211#endif
1212	adds	r4, r4, r6
1213	adc	r5, r5, r7
1214	adds	r4, r4, r8
1215	adc	r5, r5, r9
1216#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1217	str	r4, [sp, #16]
1218	str	r5, [sp, #20]
1219#else
1220	strd	r4, r5, [sp, #16]
1221#endif
1222#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1223	ldr	r4, [sp, #24]
1224	ldr	r5, [sp, #28]
1225#else
1226	ldrd	r4, r5, [sp, #24]
1227#endif
1228	lsrs	r6, r4, #1
1229	lsrs	r7, r5, #1
1230	orr	r7, r7, r4, lsl #31
1231	orr	r6, r6, r5, lsl #31
1232	lsrs	r8, r4, #8
1233	lsrs	r9, r5, #8
1234	orr	r9, r9, r4, lsl #24
1235	orr	r8, r8, r5, lsl #24
1236	eor	r7, r7, r9
1237	eor	r6, r6, r8
1238	lsrs	r8, r4, #7
1239	lsrs	r9, r5, #7
1240	orr	r8, r8, r5, lsl #25
1241	eor	r7, r7, r9
1242	eor	r6, r6, r8
1243#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1244	ldr	r4, [sp, #16]
1245	ldr	r5, [sp, #20]
1246#else
1247	ldrd	r4, r5, [sp, #16]
1248#endif
1249	adds	r4, r4, r6
1250	adc	r5, r5, r7
1251#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1252	str	r4, [sp, #16]
1253	str	r5, [sp, #20]
1254#else
1255	strd	r4, r5, [sp, #16]
1256#endif
1257	# Round 3
1258#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1259	ldr	r4, [r0, #8]
1260	ldr	r5, [r0, #12]
1261#else
1262	ldrd	r4, r5, [r0, #8]
1263#endif
1264	lsrs	r6, r4, #14
1265	lsrs	r7, r5, #14
1266	orr	r7, r7, r4, lsl #18
1267	orr	r6, r6, r5, lsl #18
1268	lsrs	r8, r4, #18
1269	lsrs	r9, r5, #18
1270	orr	r9, r9, r4, lsl #14
1271	orr	r8, r8, r5, lsl #14
1272	eor	r6, r6, r8
1273	eor	r7, r7, r9
1274	lsls	r8, r4, #23
1275	lsls	r9, r5, #23
1276	orr	r9, r9, r4, lsr #9
1277	orr	r8, r8, r5, lsr #9
1278#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1279	ldr	r4, [r0, #32]
1280	ldr	r5, [r0, #36]
1281#else
1282	ldrd	r4, r5, [r0, #32]
1283#endif
1284	eor	r6, r6, r8
1285	eor	r7, r7, r9
1286	adds	r4, r4, r6
1287	adc	r5, r5, r7
1288#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1289	str	r4, [r0, #32]
1290	str	r5, [r0, #36]
1291#else
1292	strd	r4, r5, [r0, #32]
1293#endif
1294#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1295	ldr	r4, [r0, #8]
1296	ldr	r5, [r0, #12]
1297#else
1298	ldrd	r4, r5, [r0, #8]
1299#endif
1300#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1301	ldr	r6, [r0, #16]
1302	ldr	r7, [r0, #20]
1303#else
1304	ldrd	r6, r7, [r0, #16]
1305#endif
1306#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1307	ldr	r8, [r0, #24]
1308	ldr	r9, [r0, #28]
1309#else
1310	ldrd	r8, r9, [r0, #24]
1311#endif
1312	eor	r6, r6, r8
1313	eor	r7, r7, r9
1314	and	r6, r6, r4
1315	and	r7, r7, r5
1316	eor	r6, r6, r8
1317	eor	r7, r7, r9
1318#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1319	ldr	r4, [r0, #32]
1320	ldr	r5, [r0, #36]
1321#else
1322	ldrd	r4, r5, [r0, #32]
1323#endif
1324#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1325	ldr	r8, [sp, #24]
1326	ldr	r9, [sp, #28]
1327#else
1328	ldrd	r8, r9, [sp, #24]
1329#endif
1330	adds	r4, r4, r6
1331	adc	r5, r5, r7
1332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1333	ldr	r6, [r3, #24]
1334	ldr	r7, [r3, #28]
1335#else
1336	ldrd	r6, r7, [r3, #24]
1337#endif
1338	adds	r4, r4, r8
1339	adc	r5, r5, r9
1340#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1341	ldm	r0, {r8, r9}
1342#else
1343	ldrd	r8, r9, [r0]
1344#endif
1345	adds	r4, r4, r6
1346	adc	r5, r5, r7
1347#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1348	str	r4, [r0, #32]
1349	str	r5, [r0, #36]
1350#else
1351	strd	r4, r5, [r0, #32]
1352#endif
1353	adds	r8, r8, r4
1354	adc	r9, r9, r5
1355#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1356	ldr	r4, [r0, #40]
1357	ldr	r5, [r0, #44]
1358#else
1359	ldrd	r4, r5, [r0, #40]
1360#endif
1361#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1362	stm	r0, {r8, r9}
1363#else
1364	strd	r8, r9, [r0]
1365#endif
1366	lsrs	r6, r4, #28
1367	lsrs	r7, r5, #28
1368	orr	r7, r7, r4, lsl #4
1369	orr	r6, r6, r5, lsl #4
1370	lsls	r8, r4, #30
1371	lsls	r9, r5, #30
1372	orr	r9, r9, r4, lsr #2
1373	orr	r8, r8, r5, lsr #2
1374	eor	r6, r6, r8
1375	eor	r7, r7, r9
1376	lsls	r8, r4, #25
1377	lsls	r9, r5, #25
1378	orr	r9, r9, r4, lsr #7
1379	orr	r8, r8, r5, lsr #7
1380#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1381	ldr	r4, [r0, #32]
1382	ldr	r5, [r0, #36]
1383#else
1384	ldrd	r4, r5, [r0, #32]
1385#endif
1386	eor	r6, r6, r8
1387	eor	r7, r7, r9
1388	adds	r4, r4, r6
1389	adc	r5, r5, r7
1390#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1391	ldr	r8, [r0, #40]
1392	ldr	r9, [r0, #44]
1393#else
1394	ldrd	r8, r9, [r0, #40]
1395#endif
1396#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1397	ldr	r6, [r0, #48]
1398	ldr	r7, [r0, #52]
1399#else
1400	ldrd	r6, r7, [r0, #48]
1401#endif
1402#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1403	str	r4, [r0, #32]
1404	str	r5, [r0, #36]
1405#else
1406	strd	r4, r5, [r0, #32]
1407#endif
1408	eor	r8, r8, r6
1409	eor	r9, r9, r7
1410	and	r10, r10, r8
1411	and	r11, r11, r9
1412	eor	r10, r10, r6
1413	eor	r11, r11, r7
1414#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1415	ldr	r6, [r0, #32]
1416	ldr	r7, [r0, #36]
1417#else
1418	ldrd	r6, r7, [r0, #32]
1419#endif
1420	adds	r6, r6, r10
1421	adc	r7, r7, r11
1422#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1423	str	r6, [r0, #32]
1424	str	r7, [r0, #36]
1425#else
1426	strd	r6, r7, [r0, #32]
1427#endif
1428	mov	r10, r8
1429	mov	r11, r9
1430	# Calc new W[3]
1431#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1432	ldr	r4, [sp, #8]
1433	ldr	r5, [sp, #12]
1434#else
1435	ldrd	r4, r5, [sp, #8]
1436#endif
1437	lsrs	r6, r4, #19
1438	lsrs	r7, r5, #19
1439	orr	r7, r7, r4, lsl #13
1440	orr	r6, r6, r5, lsl #13
1441	lsls	r8, r4, #3
1442	lsls	r9, r5, #3
1443	orr	r9, r9, r4, lsr #29
1444	orr	r8, r8, r5, lsr #29
1445	eor	r7, r7, r9
1446	eor	r6, r6, r8
1447	lsrs	r8, r4, #6
1448	lsrs	r9, r5, #6
1449	orr	r8, r8, r5, lsl #26
1450	eor	r7, r7, r9
1451	eor	r6, r6, r8
1452#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1453	ldr	r4, [sp, #24]
1454	ldr	r5, [sp, #28]
1455#else
1456	ldrd	r4, r5, [sp, #24]
1457#endif
1458#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1459	ldr	r8, [sp, #96]
1460	ldr	r9, [sp, #100]
1461#else
1462	ldrd	r8, r9, [sp, #96]
1463#endif
1464	adds	r4, r4, r6
1465	adc	r5, r5, r7
1466	adds	r4, r4, r8
1467	adc	r5, r5, r9
1468#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1469	str	r4, [sp, #24]
1470	str	r5, [sp, #28]
1471#else
1472	strd	r4, r5, [sp, #24]
1473#endif
1474#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1475	ldr	r4, [sp, #32]
1476	ldr	r5, [sp, #36]
1477#else
1478	ldrd	r4, r5, [sp, #32]
1479#endif
1480	lsrs	r6, r4, #1
1481	lsrs	r7, r5, #1
1482	orr	r7, r7, r4, lsl #31
1483	orr	r6, r6, r5, lsl #31
1484	lsrs	r8, r4, #8
1485	lsrs	r9, r5, #8
1486	orr	r9, r9, r4, lsl #24
1487	orr	r8, r8, r5, lsl #24
1488	eor	r7, r7, r9
1489	eor	r6, r6, r8
1490	lsrs	r8, r4, #7
1491	lsrs	r9, r5, #7
1492	orr	r8, r8, r5, lsl #25
1493	eor	r7, r7, r9
1494	eor	r6, r6, r8
1495#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1496	ldr	r4, [sp, #24]
1497	ldr	r5, [sp, #28]
1498#else
1499	ldrd	r4, r5, [sp, #24]
1500#endif
1501	adds	r4, r4, r6
1502	adc	r5, r5, r7
1503#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1504	str	r4, [sp, #24]
1505	str	r5, [sp, #28]
1506#else
1507	strd	r4, r5, [sp, #24]
1508#endif
1509	# Round 4
1510#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1511	ldm	r0, {r4, r5}
1512#else
1513	ldrd	r4, r5, [r0]
1514#endif
1515	lsrs	r6, r4, #14
1516	lsrs	r7, r5, #14
1517	orr	r7, r7, r4, lsl #18
1518	orr	r6, r6, r5, lsl #18
1519	lsrs	r8, r4, #18
1520	lsrs	r9, r5, #18
1521	orr	r9, r9, r4, lsl #14
1522	orr	r8, r8, r5, lsl #14
1523	eor	r6, r6, r8
1524	eor	r7, r7, r9
1525	lsls	r8, r4, #23
1526	lsls	r9, r5, #23
1527	orr	r9, r9, r4, lsr #9
1528	orr	r8, r8, r5, lsr #9
1529#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1530	ldr	r4, [r0, #24]
1531	ldr	r5, [r0, #28]
1532#else
1533	ldrd	r4, r5, [r0, #24]
1534#endif
1535	eor	r6, r6, r8
1536	eor	r7, r7, r9
1537	adds	r4, r4, r6
1538	adc	r5, r5, r7
1539#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1540	str	r4, [r0, #24]
1541	str	r5, [r0, #28]
1542#else
1543	strd	r4, r5, [r0, #24]
1544#endif
1545#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1546	ldm	r0, {r4, r5}
1547#else
1548	ldrd	r4, r5, [r0]
1549#endif
1550#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1551	ldr	r6, [r0, #8]
1552	ldr	r7, [r0, #12]
1553#else
1554	ldrd	r6, r7, [r0, #8]
1555#endif
1556#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1557	ldr	r8, [r0, #16]
1558	ldr	r9, [r0, #20]
1559#else
1560	ldrd	r8, r9, [r0, #16]
1561#endif
1562	eor	r6, r6, r8
1563	eor	r7, r7, r9
1564	and	r6, r6, r4
1565	and	r7, r7, r5
1566	eor	r6, r6, r8
1567	eor	r7, r7, r9
1568#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1569	ldr	r4, [r0, #24]
1570	ldr	r5, [r0, #28]
1571#else
1572	ldrd	r4, r5, [r0, #24]
1573#endif
1574#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1575	ldr	r8, [sp, #32]
1576	ldr	r9, [sp, #36]
1577#else
1578	ldrd	r8, r9, [sp, #32]
1579#endif
1580	adds	r4, r4, r6
1581	adc	r5, r5, r7
1582#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1583	ldr	r6, [r3, #32]
1584	ldr	r7, [r3, #36]
1585#else
1586	ldrd	r6, r7, [r3, #32]
1587#endif
1588	adds	r4, r4, r8
1589	adc	r5, r5, r9
1590#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1591	ldr	r8, [r0, #56]
1592	ldr	r9, [r0, #60]
1593#else
1594	ldrd	r8, r9, [r0, #56]
1595#endif
1596	adds	r4, r4, r6
1597	adc	r5, r5, r7
1598#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1599	str	r4, [r0, #24]
1600	str	r5, [r0, #28]
1601#else
1602	strd	r4, r5, [r0, #24]
1603#endif
1604	adds	r8, r8, r4
1605	adc	r9, r9, r5
1606#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1607	ldr	r4, [r0, #32]
1608	ldr	r5, [r0, #36]
1609#else
1610	ldrd	r4, r5, [r0, #32]
1611#endif
1612#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1613	str	r8, [r0, #56]
1614	str	r9, [r0, #60]
1615#else
1616	strd	r8, r9, [r0, #56]
1617#endif
1618	lsrs	r6, r4, #28
1619	lsrs	r7, r5, #28
1620	orr	r7, r7, r4, lsl #4
1621	orr	r6, r6, r5, lsl #4
1622	lsls	r8, r4, #30
1623	lsls	r9, r5, #30
1624	orr	r9, r9, r4, lsr #2
1625	orr	r8, r8, r5, lsr #2
1626	eor	r6, r6, r8
1627	eor	r7, r7, r9
1628	lsls	r8, r4, #25
1629	lsls	r9, r5, #25
1630	orr	r9, r9, r4, lsr #7
1631	orr	r8, r8, r5, lsr #7
1632#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1633	ldr	r4, [r0, #24]
1634	ldr	r5, [r0, #28]
1635#else
1636	ldrd	r4, r5, [r0, #24]
1637#endif
1638	eor	r6, r6, r8
1639	eor	r7, r7, r9
1640	adds	r4, r4, r6
1641	adc	r5, r5, r7
1642#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1643	ldr	r8, [r0, #32]
1644	ldr	r9, [r0, #36]
1645#else
1646	ldrd	r8, r9, [r0, #32]
1647#endif
1648#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1649	ldr	r6, [r0, #40]
1650	ldr	r7, [r0, #44]
1651#else
1652	ldrd	r6, r7, [r0, #40]
1653#endif
1654#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1655	str	r4, [r0, #24]
1656	str	r5, [r0, #28]
1657#else
1658	strd	r4, r5, [r0, #24]
1659#endif
1660	eor	r8, r8, r6
1661	eor	r9, r9, r7
1662	and	r10, r10, r8
1663	and	r11, r11, r9
1664	eor	r10, r10, r6
1665	eor	r11, r11, r7
1666#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1667	ldr	r6, [r0, #24]
1668	ldr	r7, [r0, #28]
1669#else
1670	ldrd	r6, r7, [r0, #24]
1671#endif
1672	adds	r6, r6, r10
1673	adc	r7, r7, r11
1674#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1675	str	r6, [r0, #24]
1676	str	r7, [r0, #28]
1677#else
1678	strd	r6, r7, [r0, #24]
1679#endif
1680	mov	r10, r8
1681	mov	r11, r9
1682	# Calc new W[4]
1683#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1684	ldr	r4, [sp, #16]
1685	ldr	r5, [sp, #20]
1686#else
1687	ldrd	r4, r5, [sp, #16]
1688#endif
1689	lsrs	r6, r4, #19
1690	lsrs	r7, r5, #19
1691	orr	r7, r7, r4, lsl #13
1692	orr	r6, r6, r5, lsl #13
1693	lsls	r8, r4, #3
1694	lsls	r9, r5, #3
1695	orr	r9, r9, r4, lsr #29
1696	orr	r8, r8, r5, lsr #29
1697	eor	r7, r7, r9
1698	eor	r6, r6, r8
1699	lsrs	r8, r4, #6
1700	lsrs	r9, r5, #6
1701	orr	r8, r8, r5, lsl #26
1702	eor	r7, r7, r9
1703	eor	r6, r6, r8
1704#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1705	ldr	r4, [sp, #32]
1706	ldr	r5, [sp, #36]
1707#else
1708	ldrd	r4, r5, [sp, #32]
1709#endif
1710#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1711	ldr	r8, [sp, #104]
1712	ldr	r9, [sp, #108]
1713#else
1714	ldrd	r8, r9, [sp, #104]
1715#endif
1716	adds	r4, r4, r6
1717	adc	r5, r5, r7
1718	adds	r4, r4, r8
1719	adc	r5, r5, r9
1720#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1721	str	r4, [sp, #32]
1722	str	r5, [sp, #36]
1723#else
1724	strd	r4, r5, [sp, #32]
1725#endif
1726#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1727	ldr	r4, [sp, #40]
1728	ldr	r5, [sp, #44]
1729#else
1730	ldrd	r4, r5, [sp, #40]
1731#endif
1732	lsrs	r6, r4, #1
1733	lsrs	r7, r5, #1
1734	orr	r7, r7, r4, lsl #31
1735	orr	r6, r6, r5, lsl #31
1736	lsrs	r8, r4, #8
1737	lsrs	r9, r5, #8
1738	orr	r9, r9, r4, lsl #24
1739	orr	r8, r8, r5, lsl #24
1740	eor	r7, r7, r9
1741	eor	r6, r6, r8
1742	lsrs	r8, r4, #7
1743	lsrs	r9, r5, #7
1744	orr	r8, r8, r5, lsl #25
1745	eor	r7, r7, r9
1746	eor	r6, r6, r8
1747#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1748	ldr	r4, [sp, #32]
1749	ldr	r5, [sp, #36]
1750#else
1751	ldrd	r4, r5, [sp, #32]
1752#endif
1753	adds	r4, r4, r6
1754	adc	r5, r5, r7
1755#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1756	str	r4, [sp, #32]
1757	str	r5, [sp, #36]
1758#else
1759	strd	r4, r5, [sp, #32]
1760#endif
1761	# Round 5
1762#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1763	ldr	r4, [r0, #56]
1764	ldr	r5, [r0, #60]
1765#else
1766	ldrd	r4, r5, [r0, #56]
1767#endif
1768	lsrs	r6, r4, #14
1769	lsrs	r7, r5, #14
1770	orr	r7, r7, r4, lsl #18
1771	orr	r6, r6, r5, lsl #18
1772	lsrs	r8, r4, #18
1773	lsrs	r9, r5, #18
1774	orr	r9, r9, r4, lsl #14
1775	orr	r8, r8, r5, lsl #14
1776	eor	r6, r6, r8
1777	eor	r7, r7, r9
1778	lsls	r8, r4, #23
1779	lsls	r9, r5, #23
1780	orr	r9, r9, r4, lsr #9
1781	orr	r8, r8, r5, lsr #9
1782#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1783	ldr	r4, [r0, #16]
1784	ldr	r5, [r0, #20]
1785#else
1786	ldrd	r4, r5, [r0, #16]
1787#endif
1788	eor	r6, r6, r8
1789	eor	r7, r7, r9
1790	adds	r4, r4, r6
1791	adc	r5, r5, r7
1792#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1793	str	r4, [r0, #16]
1794	str	r5, [r0, #20]
1795#else
1796	strd	r4, r5, [r0, #16]
1797#endif
1798#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1799	ldr	r4, [r0, #56]
1800	ldr	r5, [r0, #60]
1801#else
1802	ldrd	r4, r5, [r0, #56]
1803#endif
1804#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1805	ldm	r0, {r6, r7}
1806#else
1807	ldrd	r6, r7, [r0]
1808#endif
1809#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1810	ldr	r8, [r0, #8]
1811	ldr	r9, [r0, #12]
1812#else
1813	ldrd	r8, r9, [r0, #8]
1814#endif
1815	eor	r6, r6, r8
1816	eor	r7, r7, r9
1817	and	r6, r6, r4
1818	and	r7, r7, r5
1819	eor	r6, r6, r8
1820	eor	r7, r7, r9
1821#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1822	ldr	r4, [r0, #16]
1823	ldr	r5, [r0, #20]
1824#else
1825	ldrd	r4, r5, [r0, #16]
1826#endif
1827#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1828	ldr	r8, [sp, #40]
1829	ldr	r9, [sp, #44]
1830#else
1831	ldrd	r8, r9, [sp, #40]
1832#endif
1833	adds	r4, r4, r6
1834	adc	r5, r5, r7
1835#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1836	ldr	r6, [r3, #40]
1837	ldr	r7, [r3, #44]
1838#else
1839	ldrd	r6, r7, [r3, #40]
1840#endif
1841	adds	r4, r4, r8
1842	adc	r5, r5, r9
1843#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1844	ldr	r8, [r0, #48]
1845	ldr	r9, [r0, #52]
1846#else
1847	ldrd	r8, r9, [r0, #48]
1848#endif
1849	adds	r4, r4, r6
1850	adc	r5, r5, r7
1851#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1852	str	r4, [r0, #16]
1853	str	r5, [r0, #20]
1854#else
1855	strd	r4, r5, [r0, #16]
1856#endif
1857	adds	r8, r8, r4
1858	adc	r9, r9, r5
1859#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1860	ldr	r4, [r0, #24]
1861	ldr	r5, [r0, #28]
1862#else
1863	ldrd	r4, r5, [r0, #24]
1864#endif
1865#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1866	str	r8, [r0, #48]
1867	str	r9, [r0, #52]
1868#else
1869	strd	r8, r9, [r0, #48]
1870#endif
1871	lsrs	r6, r4, #28
1872	lsrs	r7, r5, #28
1873	orr	r7, r7, r4, lsl #4
1874	orr	r6, r6, r5, lsl #4
1875	lsls	r8, r4, #30
1876	lsls	r9, r5, #30
1877	orr	r9, r9, r4, lsr #2
1878	orr	r8, r8, r5, lsr #2
1879	eor	r6, r6, r8
1880	eor	r7, r7, r9
1881	lsls	r8, r4, #25
1882	lsls	r9, r5, #25
1883	orr	r9, r9, r4, lsr #7
1884	orr	r8, r8, r5, lsr #7
1885#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1886	ldr	r4, [r0, #16]
1887	ldr	r5, [r0, #20]
1888#else
1889	ldrd	r4, r5, [r0, #16]
1890#endif
1891	eor	r6, r6, r8
1892	eor	r7, r7, r9
1893	adds	r4, r4, r6
1894	adc	r5, r5, r7
1895#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1896	ldr	r8, [r0, #24]
1897	ldr	r9, [r0, #28]
1898#else
1899	ldrd	r8, r9, [r0, #24]
1900#endif
1901#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1902	ldr	r6, [r0, #32]
1903	ldr	r7, [r0, #36]
1904#else
1905	ldrd	r6, r7, [r0, #32]
1906#endif
1907#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1908	str	r4, [r0, #16]
1909	str	r5, [r0, #20]
1910#else
1911	strd	r4, r5, [r0, #16]
1912#endif
1913	eor	r8, r8, r6
1914	eor	r9, r9, r7
1915	and	r10, r10, r8
1916	and	r11, r11, r9
1917	eor	r10, r10, r6
1918	eor	r11, r11, r7
1919#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1920	ldr	r6, [r0, #16]
1921	ldr	r7, [r0, #20]
1922#else
1923	ldrd	r6, r7, [r0, #16]
1924#endif
1925	adds	r6, r6, r10
1926	adc	r7, r7, r11
1927#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1928	str	r6, [r0, #16]
1929	str	r7, [r0, #20]
1930#else
1931	strd	r6, r7, [r0, #16]
1932#endif
1933	mov	r10, r8
1934	mov	r11, r9
1935	# Calc new W[5]
1936#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1937	ldr	r4, [sp, #24]
1938	ldr	r5, [sp, #28]
1939#else
1940	ldrd	r4, r5, [sp, #24]
1941#endif
1942	lsrs	r6, r4, #19
1943	lsrs	r7, r5, #19
1944	orr	r7, r7, r4, lsl #13
1945	orr	r6, r6, r5, lsl #13
1946	lsls	r8, r4, #3
1947	lsls	r9, r5, #3
1948	orr	r9, r9, r4, lsr #29
1949	orr	r8, r8, r5, lsr #29
1950	eor	r7, r7, r9
1951	eor	r6, r6, r8
1952	lsrs	r8, r4, #6
1953	lsrs	r9, r5, #6
1954	orr	r8, r8, r5, lsl #26
1955	eor	r7, r7, r9
1956	eor	r6, r6, r8
1957#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1958	ldr	r4, [sp, #40]
1959	ldr	r5, [sp, #44]
1960#else
1961	ldrd	r4, r5, [sp, #40]
1962#endif
1963#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1964	ldr	r8, [sp, #112]
1965	ldr	r9, [sp, #116]
1966#else
1967	ldrd	r8, r9, [sp, #112]
1968#endif
1969	adds	r4, r4, r6
1970	adc	r5, r5, r7
1971	adds	r4, r4, r8
1972	adc	r5, r5, r9
1973#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1974	str	r4, [sp, #40]
1975	str	r5, [sp, #44]
1976#else
1977	strd	r4, r5, [sp, #40]
1978#endif
1979#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
1980	ldr	r4, [sp, #48]
1981	ldr	r5, [sp, #52]
1982#else
1983	ldrd	r4, r5, [sp, #48]
1984#endif
1985	lsrs	r6, r4, #1
1986	lsrs	r7, r5, #1
1987	orr	r7, r7, r4, lsl #31
1988	orr	r6, r6, r5, lsl #31
1989	lsrs	r8, r4, #8
1990	lsrs	r9, r5, #8
1991	orr	r9, r9, r4, lsl #24
1992	orr	r8, r8, r5, lsl #24
1993	eor	r7, r7, r9
1994	eor	r6, r6, r8
1995	lsrs	r8, r4, #7
1996	lsrs	r9, r5, #7
1997	orr	r8, r8, r5, lsl #25
1998	eor	r7, r7, r9
1999	eor	r6, r6, r8
2000#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2001	ldr	r4, [sp, #40]
2002	ldr	r5, [sp, #44]
2003#else
2004	ldrd	r4, r5, [sp, #40]
2005#endif
2006	adds	r4, r4, r6
2007	adc	r5, r5, r7
2008#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2009	str	r4, [sp, #40]
2010	str	r5, [sp, #44]
2011#else
2012	strd	r4, r5, [sp, #40]
2013#endif
2014	# Round 6
2015#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2016	ldr	r4, [r0, #48]
2017	ldr	r5, [r0, #52]
2018#else
2019	ldrd	r4, r5, [r0, #48]
2020#endif
2021	lsrs	r6, r4, #14
2022	lsrs	r7, r5, #14
2023	orr	r7, r7, r4, lsl #18
2024	orr	r6, r6, r5, lsl #18
2025	lsrs	r8, r4, #18
2026	lsrs	r9, r5, #18
2027	orr	r9, r9, r4, lsl #14
2028	orr	r8, r8, r5, lsl #14
2029	eor	r6, r6, r8
2030	eor	r7, r7, r9
2031	lsls	r8, r4, #23
2032	lsls	r9, r5, #23
2033	orr	r9, r9, r4, lsr #9
2034	orr	r8, r8, r5, lsr #9
2035#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2036	ldr	r4, [r0, #8]
2037	ldr	r5, [r0, #12]
2038#else
2039	ldrd	r4, r5, [r0, #8]
2040#endif
2041	eor	r6, r6, r8
2042	eor	r7, r7, r9
2043	adds	r4, r4, r6
2044	adc	r5, r5, r7
2045#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2046	str	r4, [r0, #8]
2047	str	r5, [r0, #12]
2048#else
2049	strd	r4, r5, [r0, #8]
2050#endif
2051#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2052	ldr	r4, [r0, #48]
2053	ldr	r5, [r0, #52]
2054#else
2055	ldrd	r4, r5, [r0, #48]
2056#endif
2057#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2058	ldr	r6, [r0, #56]
2059	ldr	r7, [r0, #60]
2060#else
2061	ldrd	r6, r7, [r0, #56]
2062#endif
2063#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2064	ldm	r0, {r8, r9}
2065#else
2066	ldrd	r8, r9, [r0]
2067#endif
2068	eor	r6, r6, r8
2069	eor	r7, r7, r9
2070	and	r6, r6, r4
2071	and	r7, r7, r5
2072	eor	r6, r6, r8
2073	eor	r7, r7, r9
2074#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2075	ldr	r4, [r0, #8]
2076	ldr	r5, [r0, #12]
2077#else
2078	ldrd	r4, r5, [r0, #8]
2079#endif
2080#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2081	ldr	r8, [sp, #48]
2082	ldr	r9, [sp, #52]
2083#else
2084	ldrd	r8, r9, [sp, #48]
2085#endif
2086	adds	r4, r4, r6
2087	adc	r5, r5, r7
2088#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2089	ldr	r6, [r3, #48]
2090	ldr	r7, [r3, #52]
2091#else
2092	ldrd	r6, r7, [r3, #48]
2093#endif
2094	adds	r4, r4, r8
2095	adc	r5, r5, r9
2096#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2097	ldr	r8, [r0, #40]
2098	ldr	r9, [r0, #44]
2099#else
2100	ldrd	r8, r9, [r0, #40]
2101#endif
2102	adds	r4, r4, r6
2103	adc	r5, r5, r7
2104#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2105	str	r4, [r0, #8]
2106	str	r5, [r0, #12]
2107#else
2108	strd	r4, r5, [r0, #8]
2109#endif
2110	adds	r8, r8, r4
2111	adc	r9, r9, r5
2112#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2113	ldr	r4, [r0, #16]
2114	ldr	r5, [r0, #20]
2115#else
2116	ldrd	r4, r5, [r0, #16]
2117#endif
2118#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2119	str	r8, [r0, #40]
2120	str	r9, [r0, #44]
2121#else
2122	strd	r8, r9, [r0, #40]
2123#endif
2124	lsrs	r6, r4, #28
2125	lsrs	r7, r5, #28
2126	orr	r7, r7, r4, lsl #4
2127	orr	r6, r6, r5, lsl #4
2128	lsls	r8, r4, #30
2129	lsls	r9, r5, #30
2130	orr	r9, r9, r4, lsr #2
2131	orr	r8, r8, r5, lsr #2
2132	eor	r6, r6, r8
2133	eor	r7, r7, r9
2134	lsls	r8, r4, #25
2135	lsls	r9, r5, #25
2136	orr	r9, r9, r4, lsr #7
2137	orr	r8, r8, r5, lsr #7
2138#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2139	ldr	r4, [r0, #8]
2140	ldr	r5, [r0, #12]
2141#else
2142	ldrd	r4, r5, [r0, #8]
2143#endif
2144	eor	r6, r6, r8
2145	eor	r7, r7, r9
2146	adds	r4, r4, r6
2147	adc	r5, r5, r7
2148#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2149	ldr	r8, [r0, #16]
2150	ldr	r9, [r0, #20]
2151#else
2152	ldrd	r8, r9, [r0, #16]
2153#endif
2154#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2155	ldr	r6, [r0, #24]
2156	ldr	r7, [r0, #28]
2157#else
2158	ldrd	r6, r7, [r0, #24]
2159#endif
2160#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2161	str	r4, [r0, #8]
2162	str	r5, [r0, #12]
2163#else
2164	strd	r4, r5, [r0, #8]
2165#endif
2166	eor	r8, r8, r6
2167	eor	r9, r9, r7
2168	and	r10, r10, r8
2169	and	r11, r11, r9
2170	eor	r10, r10, r6
2171	eor	r11, r11, r7
2172#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2173	ldr	r6, [r0, #8]
2174	ldr	r7, [r0, #12]
2175#else
2176	ldrd	r6, r7, [r0, #8]
2177#endif
2178	adds	r6, r6, r10
2179	adc	r7, r7, r11
2180#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2181	str	r6, [r0, #8]
2182	str	r7, [r0, #12]
2183#else
2184	strd	r6, r7, [r0, #8]
2185#endif
2186	mov	r10, r8
2187	mov	r11, r9
2188	# Calc new W[6]
2189#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2190	ldr	r4, [sp, #32]
2191	ldr	r5, [sp, #36]
2192#else
2193	ldrd	r4, r5, [sp, #32]
2194#endif
2195	lsrs	r6, r4, #19
2196	lsrs	r7, r5, #19
2197	orr	r7, r7, r4, lsl #13
2198	orr	r6, r6, r5, lsl #13
2199	lsls	r8, r4, #3
2200	lsls	r9, r5, #3
2201	orr	r9, r9, r4, lsr #29
2202	orr	r8, r8, r5, lsr #29
2203	eor	r7, r7, r9
2204	eor	r6, r6, r8
2205	lsrs	r8, r4, #6
2206	lsrs	r9, r5, #6
2207	orr	r8, r8, r5, lsl #26
2208	eor	r7, r7, r9
2209	eor	r6, r6, r8
2210#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2211	ldr	r4, [sp, #48]
2212	ldr	r5, [sp, #52]
2213#else
2214	ldrd	r4, r5, [sp, #48]
2215#endif
2216#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2217	ldr	r8, [sp, #120]
2218	ldr	r9, [sp, #124]
2219#else
2220	ldrd	r8, r9, [sp, #120]
2221#endif
2222	adds	r4, r4, r6
2223	adc	r5, r5, r7
2224	adds	r4, r4, r8
2225	adc	r5, r5, r9
2226#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2227	str	r4, [sp, #48]
2228	str	r5, [sp, #52]
2229#else
2230	strd	r4, r5, [sp, #48]
2231#endif
2232#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2233	ldr	r4, [sp, #56]
2234	ldr	r5, [sp, #60]
2235#else
2236	ldrd	r4, r5, [sp, #56]
2237#endif
2238	lsrs	r6, r4, #1
2239	lsrs	r7, r5, #1
2240	orr	r7, r7, r4, lsl #31
2241	orr	r6, r6, r5, lsl #31
2242	lsrs	r8, r4, #8
2243	lsrs	r9, r5, #8
2244	orr	r9, r9, r4, lsl #24
2245	orr	r8, r8, r5, lsl #24
2246	eor	r7, r7, r9
2247	eor	r6, r6, r8
2248	lsrs	r8, r4, #7
2249	lsrs	r9, r5, #7
2250	orr	r8, r8, r5, lsl #25
2251	eor	r7, r7, r9
2252	eor	r6, r6, r8
2253#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2254	ldr	r4, [sp, #48]
2255	ldr	r5, [sp, #52]
2256#else
2257	ldrd	r4, r5, [sp, #48]
2258#endif
2259	adds	r4, r4, r6
2260	adc	r5, r5, r7
2261#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2262	str	r4, [sp, #48]
2263	str	r5, [sp, #52]
2264#else
2265	strd	r4, r5, [sp, #48]
2266#endif
2267	# Round 7
2268#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2269	ldr	r4, [r0, #40]
2270	ldr	r5, [r0, #44]
2271#else
2272	ldrd	r4, r5, [r0, #40]
2273#endif
2274	lsrs	r6, r4, #14
2275	lsrs	r7, r5, #14
2276	orr	r7, r7, r4, lsl #18
2277	orr	r6, r6, r5, lsl #18
2278	lsrs	r8, r4, #18
2279	lsrs	r9, r5, #18
2280	orr	r9, r9, r4, lsl #14
2281	orr	r8, r8, r5, lsl #14
2282	eor	r6, r6, r8
2283	eor	r7, r7, r9
2284	lsls	r8, r4, #23
2285	lsls	r9, r5, #23
2286	orr	r9, r9, r4, lsr #9
2287	orr	r8, r8, r5, lsr #9
2288#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2289	ldm	r0, {r4, r5}
2290#else
2291	ldrd	r4, r5, [r0]
2292#endif
2293	eor	r6, r6, r8
2294	eor	r7, r7, r9
2295	adds	r4, r4, r6
2296	adc	r5, r5, r7
2297#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2298	stm	r0, {r4, r5}
2299#else
2300	strd	r4, r5, [r0]
2301#endif
2302#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2303	ldr	r4, [r0, #40]
2304	ldr	r5, [r0, #44]
2305#else
2306	ldrd	r4, r5, [r0, #40]
2307#endif
2308#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2309	ldr	r6, [r0, #48]
2310	ldr	r7, [r0, #52]
2311#else
2312	ldrd	r6, r7, [r0, #48]
2313#endif
2314#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2315	ldr	r8, [r0, #56]
2316	ldr	r9, [r0, #60]
2317#else
2318	ldrd	r8, r9, [r0, #56]
2319#endif
2320	eor	r6, r6, r8
2321	eor	r7, r7, r9
2322	and	r6, r6, r4
2323	and	r7, r7, r5
2324	eor	r6, r6, r8
2325	eor	r7, r7, r9
2326#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2327	ldm	r0, {r4, r5}
2328#else
2329	ldrd	r4, r5, [r0]
2330#endif
2331#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2332	ldr	r8, [sp, #56]
2333	ldr	r9, [sp, #60]
2334#else
2335	ldrd	r8, r9, [sp, #56]
2336#endif
2337	adds	r4, r4, r6
2338	adc	r5, r5, r7
2339#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2340	ldr	r6, [r3, #56]
2341	ldr	r7, [r3, #60]
2342#else
2343	ldrd	r6, r7, [r3, #56]
2344#endif
2345	adds	r4, r4, r8
2346	adc	r5, r5, r9
2347#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2348	ldr	r8, [r0, #32]
2349	ldr	r9, [r0, #36]
2350#else
2351	ldrd	r8, r9, [r0, #32]
2352#endif
2353	adds	r4, r4, r6
2354	adc	r5, r5, r7
2355#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2356	stm	r0, {r4, r5}
2357#else
2358	strd	r4, r5, [r0]
2359#endif
2360	adds	r8, r8, r4
2361	adc	r9, r9, r5
2362#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2363	ldr	r4, [r0, #8]
2364	ldr	r5, [r0, #12]
2365#else
2366	ldrd	r4, r5, [r0, #8]
2367#endif
2368#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2369	str	r8, [r0, #32]
2370	str	r9, [r0, #36]
2371#else
2372	strd	r8, r9, [r0, #32]
2373#endif
2374	lsrs	r6, r4, #28
2375	lsrs	r7, r5, #28
2376	orr	r7, r7, r4, lsl #4
2377	orr	r6, r6, r5, lsl #4
2378	lsls	r8, r4, #30
2379	lsls	r9, r5, #30
2380	orr	r9, r9, r4, lsr #2
2381	orr	r8, r8, r5, lsr #2
2382	eor	r6, r6, r8
2383	eor	r7, r7, r9
2384	lsls	r8, r4, #25
2385	lsls	r9, r5, #25
2386	orr	r9, r9, r4, lsr #7
2387	orr	r8, r8, r5, lsr #7
2388#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2389	ldm	r0, {r4, r5}
2390#else
2391	ldrd	r4, r5, [r0]
2392#endif
2393	eor	r6, r6, r8
2394	eor	r7, r7, r9
2395	adds	r4, r4, r6
2396	adc	r5, r5, r7
2397#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2398	ldr	r8, [r0, #8]
2399	ldr	r9, [r0, #12]
2400#else
2401	ldrd	r8, r9, [r0, #8]
2402#endif
2403#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2404	ldr	r6, [r0, #16]
2405	ldr	r7, [r0, #20]
2406#else
2407	ldrd	r6, r7, [r0, #16]
2408#endif
2409#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2410	stm	r0, {r4, r5}
2411#else
2412	strd	r4, r5, [r0]
2413#endif
2414	eor	r8, r8, r6
2415	eor	r9, r9, r7
2416	and	r10, r10, r8
2417	and	r11, r11, r9
2418	eor	r10, r10, r6
2419	eor	r11, r11, r7
2420#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2421	ldm	r0, {r6, r7}
2422#else
2423	ldrd	r6, r7, [r0]
2424#endif
2425	adds	r6, r6, r10
2426	adc	r7, r7, r11
2427#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2428	stm	r0, {r6, r7}
2429#else
2430	strd	r6, r7, [r0]
2431#endif
2432	mov	r10, r8
2433	mov	r11, r9
2434	# Calc new W[7]
2435#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2436	ldr	r4, [sp, #40]
2437	ldr	r5, [sp, #44]
2438#else
2439	ldrd	r4, r5, [sp, #40]
2440#endif
2441	lsrs	r6, r4, #19
2442	lsrs	r7, r5, #19
2443	orr	r7, r7, r4, lsl #13
2444	orr	r6, r6, r5, lsl #13
2445	lsls	r8, r4, #3
2446	lsls	r9, r5, #3
2447	orr	r9, r9, r4, lsr #29
2448	orr	r8, r8, r5, lsr #29
2449	eor	r7, r7, r9
2450	eor	r6, r6, r8
2451	lsrs	r8, r4, #6
2452	lsrs	r9, r5, #6
2453	orr	r8, r8, r5, lsl #26
2454	eor	r7, r7, r9
2455	eor	r6, r6, r8
2456#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2457	ldr	r4, [sp, #56]
2458	ldr	r5, [sp, #60]
2459#else
2460	ldrd	r4, r5, [sp, #56]
2461#endif
2462#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2463	ldm	sp, {r8, r9}
2464#else
2465	ldrd	r8, r9, [sp]
2466#endif
2467	adds	r4, r4, r6
2468	adc	r5, r5, r7
2469	adds	r4, r4, r8
2470	adc	r5, r5, r9
2471#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2472	str	r4, [sp, #56]
2473	str	r5, [sp, #60]
2474#else
2475	strd	r4, r5, [sp, #56]
2476#endif
2477#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2478	ldr	r4, [sp, #64]
2479	ldr	r5, [sp, #68]
2480#else
2481	ldrd	r4, r5, [sp, #64]
2482#endif
2483	lsrs	r6, r4, #1
2484	lsrs	r7, r5, #1
2485	orr	r7, r7, r4, lsl #31
2486	orr	r6, r6, r5, lsl #31
2487	lsrs	r8, r4, #8
2488	lsrs	r9, r5, #8
2489	orr	r9, r9, r4, lsl #24
2490	orr	r8, r8, r5, lsl #24
2491	eor	r7, r7, r9
2492	eor	r6, r6, r8
2493	lsrs	r8, r4, #7
2494	lsrs	r9, r5, #7
2495	orr	r8, r8, r5, lsl #25
2496	eor	r7, r7, r9
2497	eor	r6, r6, r8
2498#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2499	ldr	r4, [sp, #56]
2500	ldr	r5, [sp, #60]
2501#else
2502	ldrd	r4, r5, [sp, #56]
2503#endif
2504	adds	r4, r4, r6
2505	adc	r5, r5, r7
2506#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2507	str	r4, [sp, #56]
2508	str	r5, [sp, #60]
2509#else
2510	strd	r4, r5, [sp, #56]
2511#endif
2512	# Round 8
2513#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2514	ldr	r4, [r0, #32]
2515	ldr	r5, [r0, #36]
2516#else
2517	ldrd	r4, r5, [r0, #32]
2518#endif
2519	lsrs	r6, r4, #14
2520	lsrs	r7, r5, #14
2521	orr	r7, r7, r4, lsl #18
2522	orr	r6, r6, r5, lsl #18
2523	lsrs	r8, r4, #18
2524	lsrs	r9, r5, #18
2525	orr	r9, r9, r4, lsl #14
2526	orr	r8, r8, r5, lsl #14
2527	eor	r6, r6, r8
2528	eor	r7, r7, r9
2529	lsls	r8, r4, #23
2530	lsls	r9, r5, #23
2531	orr	r9, r9, r4, lsr #9
2532	orr	r8, r8, r5, lsr #9
2533#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2534	ldr	r4, [r0, #56]
2535	ldr	r5, [r0, #60]
2536#else
2537	ldrd	r4, r5, [r0, #56]
2538#endif
2539	eor	r6, r6, r8
2540	eor	r7, r7, r9
2541	adds	r4, r4, r6
2542	adc	r5, r5, r7
2543#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2544	str	r4, [r0, #56]
2545	str	r5, [r0, #60]
2546#else
2547	strd	r4, r5, [r0, #56]
2548#endif
2549#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2550	ldr	r4, [r0, #32]
2551	ldr	r5, [r0, #36]
2552#else
2553	ldrd	r4, r5, [r0, #32]
2554#endif
2555#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2556	ldr	r6, [r0, #40]
2557	ldr	r7, [r0, #44]
2558#else
2559	ldrd	r6, r7, [r0, #40]
2560#endif
2561#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2562	ldr	r8, [r0, #48]
2563	ldr	r9, [r0, #52]
2564#else
2565	ldrd	r8, r9, [r0, #48]
2566#endif
2567	eor	r6, r6, r8
2568	eor	r7, r7, r9
2569	and	r6, r6, r4
2570	and	r7, r7, r5
2571	eor	r6, r6, r8
2572	eor	r7, r7, r9
2573#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2574	ldr	r4, [r0, #56]
2575	ldr	r5, [r0, #60]
2576#else
2577	ldrd	r4, r5, [r0, #56]
2578#endif
2579#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2580	ldr	r8, [sp, #64]
2581	ldr	r9, [sp, #68]
2582#else
2583	ldrd	r8, r9, [sp, #64]
2584#endif
2585	adds	r4, r4, r6
2586	adc	r5, r5, r7
2587#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2588	ldr	r6, [r3, #64]
2589	ldr	r7, [r3, #68]
2590#else
2591	ldrd	r6, r7, [r3, #64]
2592#endif
2593	adds	r4, r4, r8
2594	adc	r5, r5, r9
2595#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2596	ldr	r8, [r0, #24]
2597	ldr	r9, [r0, #28]
2598#else
2599	ldrd	r8, r9, [r0, #24]
2600#endif
2601	adds	r4, r4, r6
2602	adc	r5, r5, r7
2603#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2604	str	r4, [r0, #56]
2605	str	r5, [r0, #60]
2606#else
2607	strd	r4, r5, [r0, #56]
2608#endif
2609	adds	r8, r8, r4
2610	adc	r9, r9, r5
2611#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2612	ldm	r0, {r4, r5}
2613#else
2614	ldrd	r4, r5, [r0]
2615#endif
2616#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2617	str	r8, [r0, #24]
2618	str	r9, [r0, #28]
2619#else
2620	strd	r8, r9, [r0, #24]
2621#endif
2622	lsrs	r6, r4, #28
2623	lsrs	r7, r5, #28
2624	orr	r7, r7, r4, lsl #4
2625	orr	r6, r6, r5, lsl #4
2626	lsls	r8, r4, #30
2627	lsls	r9, r5, #30
2628	orr	r9, r9, r4, lsr #2
2629	orr	r8, r8, r5, lsr #2
2630	eor	r6, r6, r8
2631	eor	r7, r7, r9
2632	lsls	r8, r4, #25
2633	lsls	r9, r5, #25
2634	orr	r9, r9, r4, lsr #7
2635	orr	r8, r8, r5, lsr #7
2636#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2637	ldr	r4, [r0, #56]
2638	ldr	r5, [r0, #60]
2639#else
2640	ldrd	r4, r5, [r0, #56]
2641#endif
2642	eor	r6, r6, r8
2643	eor	r7, r7, r9
2644	adds	r4, r4, r6
2645	adc	r5, r5, r7
2646#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2647	ldm	r0, {r8, r9}
2648#else
2649	ldrd	r8, r9, [r0]
2650#endif
2651#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2652	ldr	r6, [r0, #8]
2653	ldr	r7, [r0, #12]
2654#else
2655	ldrd	r6, r7, [r0, #8]
2656#endif
2657#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2658	str	r4, [r0, #56]
2659	str	r5, [r0, #60]
2660#else
2661	strd	r4, r5, [r0, #56]
2662#endif
2663	eor	r8, r8, r6
2664	eor	r9, r9, r7
2665	and	r10, r10, r8
2666	and	r11, r11, r9
2667	eor	r10, r10, r6
2668	eor	r11, r11, r7
2669#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2670	ldr	r6, [r0, #56]
2671	ldr	r7, [r0, #60]
2672#else
2673	ldrd	r6, r7, [r0, #56]
2674#endif
2675	adds	r6, r6, r10
2676	adc	r7, r7, r11
2677#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2678	str	r6, [r0, #56]
2679	str	r7, [r0, #60]
2680#else
2681	strd	r6, r7, [r0, #56]
2682#endif
2683	mov	r10, r8
2684	mov	r11, r9
2685	# Calc new W[8]
2686#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2687	ldr	r4, [sp, #48]
2688	ldr	r5, [sp, #52]
2689#else
2690	ldrd	r4, r5, [sp, #48]
2691#endif
2692	lsrs	r6, r4, #19
2693	lsrs	r7, r5, #19
2694	orr	r7, r7, r4, lsl #13
2695	orr	r6, r6, r5, lsl #13
2696	lsls	r8, r4, #3
2697	lsls	r9, r5, #3
2698	orr	r9, r9, r4, lsr #29
2699	orr	r8, r8, r5, lsr #29
2700	eor	r7, r7, r9
2701	eor	r6, r6, r8
2702	lsrs	r8, r4, #6
2703	lsrs	r9, r5, #6
2704	orr	r8, r8, r5, lsl #26
2705	eor	r7, r7, r9
2706	eor	r6, r6, r8
2707#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2708	ldr	r4, [sp, #64]
2709	ldr	r5, [sp, #68]
2710#else
2711	ldrd	r4, r5, [sp, #64]
2712#endif
2713#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2714	ldr	r8, [sp, #8]
2715	ldr	r9, [sp, #12]
2716#else
2717	ldrd	r8, r9, [sp, #8]
2718#endif
2719	adds	r4, r4, r6
2720	adc	r5, r5, r7
2721	adds	r4, r4, r8
2722	adc	r5, r5, r9
2723#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2724	str	r4, [sp, #64]
2725	str	r5, [sp, #68]
2726#else
2727	strd	r4, r5, [sp, #64]
2728#endif
2729#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2730	ldr	r4, [sp, #72]
2731	ldr	r5, [sp, #76]
2732#else
2733	ldrd	r4, r5, [sp, #72]
2734#endif
2735	lsrs	r6, r4, #1
2736	lsrs	r7, r5, #1
2737	orr	r7, r7, r4, lsl #31
2738	orr	r6, r6, r5, lsl #31
2739	lsrs	r8, r4, #8
2740	lsrs	r9, r5, #8
2741	orr	r9, r9, r4, lsl #24
2742	orr	r8, r8, r5, lsl #24
2743	eor	r7, r7, r9
2744	eor	r6, r6, r8
2745	lsrs	r8, r4, #7
2746	lsrs	r9, r5, #7
2747	orr	r8, r8, r5, lsl #25
2748	eor	r7, r7, r9
2749	eor	r6, r6, r8
2750#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2751	ldr	r4, [sp, #64]
2752	ldr	r5, [sp, #68]
2753#else
2754	ldrd	r4, r5, [sp, #64]
2755#endif
2756	adds	r4, r4, r6
2757	adc	r5, r5, r7
2758#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2759	str	r4, [sp, #64]
2760	str	r5, [sp, #68]
2761#else
2762	strd	r4, r5, [sp, #64]
2763#endif
2764	# Round 9
2765#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2766	ldr	r4, [r0, #24]
2767	ldr	r5, [r0, #28]
2768#else
2769	ldrd	r4, r5, [r0, #24]
2770#endif
2771	lsrs	r6, r4, #14
2772	lsrs	r7, r5, #14
2773	orr	r7, r7, r4, lsl #18
2774	orr	r6, r6, r5, lsl #18
2775	lsrs	r8, r4, #18
2776	lsrs	r9, r5, #18
2777	orr	r9, r9, r4, lsl #14
2778	orr	r8, r8, r5, lsl #14
2779	eor	r6, r6, r8
2780	eor	r7, r7, r9
2781	lsls	r8, r4, #23
2782	lsls	r9, r5, #23
2783	orr	r9, r9, r4, lsr #9
2784	orr	r8, r8, r5, lsr #9
2785#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2786	ldr	r4, [r0, #48]
2787	ldr	r5, [r0, #52]
2788#else
2789	ldrd	r4, r5, [r0, #48]
2790#endif
2791	eor	r6, r6, r8
2792	eor	r7, r7, r9
2793	adds	r4, r4, r6
2794	adc	r5, r5, r7
2795#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2796	str	r4, [r0, #48]
2797	str	r5, [r0, #52]
2798#else
2799	strd	r4, r5, [r0, #48]
2800#endif
2801#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2802	ldr	r4, [r0, #24]
2803	ldr	r5, [r0, #28]
2804#else
2805	ldrd	r4, r5, [r0, #24]
2806#endif
2807#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2808	ldr	r6, [r0, #32]
2809	ldr	r7, [r0, #36]
2810#else
2811	ldrd	r6, r7, [r0, #32]
2812#endif
2813#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2814	ldr	r8, [r0, #40]
2815	ldr	r9, [r0, #44]
2816#else
2817	ldrd	r8, r9, [r0, #40]
2818#endif
2819	eor	r6, r6, r8
2820	eor	r7, r7, r9
2821	and	r6, r6, r4
2822	and	r7, r7, r5
2823	eor	r6, r6, r8
2824	eor	r7, r7, r9
2825#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2826	ldr	r4, [r0, #48]
2827	ldr	r5, [r0, #52]
2828#else
2829	ldrd	r4, r5, [r0, #48]
2830#endif
2831#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2832	ldr	r8, [sp, #72]
2833	ldr	r9, [sp, #76]
2834#else
2835	ldrd	r8, r9, [sp, #72]
2836#endif
2837	adds	r4, r4, r6
2838	adc	r5, r5, r7
2839#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2840	ldr	r6, [r3, #72]
2841	ldr	r7, [r3, #76]
2842#else
2843	ldrd	r6, r7, [r3, #72]
2844#endif
2845	adds	r4, r4, r8
2846	adc	r5, r5, r9
2847#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2848	ldr	r8, [r0, #16]
2849	ldr	r9, [r0, #20]
2850#else
2851	ldrd	r8, r9, [r0, #16]
2852#endif
2853	adds	r4, r4, r6
2854	adc	r5, r5, r7
2855#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2856	str	r4, [r0, #48]
2857	str	r5, [r0, #52]
2858#else
2859	strd	r4, r5, [r0, #48]
2860#endif
2861	adds	r8, r8, r4
2862	adc	r9, r9, r5
2863#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2864	ldr	r4, [r0, #56]
2865	ldr	r5, [r0, #60]
2866#else
2867	ldrd	r4, r5, [r0, #56]
2868#endif
2869#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2870	str	r8, [r0, #16]
2871	str	r9, [r0, #20]
2872#else
2873	strd	r8, r9, [r0, #16]
2874#endif
2875	lsrs	r6, r4, #28
2876	lsrs	r7, r5, #28
2877	orr	r7, r7, r4, lsl #4
2878	orr	r6, r6, r5, lsl #4
2879	lsls	r8, r4, #30
2880	lsls	r9, r5, #30
2881	orr	r9, r9, r4, lsr #2
2882	orr	r8, r8, r5, lsr #2
2883	eor	r6, r6, r8
2884	eor	r7, r7, r9
2885	lsls	r8, r4, #25
2886	lsls	r9, r5, #25
2887	orr	r9, r9, r4, lsr #7
2888	orr	r8, r8, r5, lsr #7
2889#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2890	ldr	r4, [r0, #48]
2891	ldr	r5, [r0, #52]
2892#else
2893	ldrd	r4, r5, [r0, #48]
2894#endif
2895	eor	r6, r6, r8
2896	eor	r7, r7, r9
2897	adds	r4, r4, r6
2898	adc	r5, r5, r7
2899#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2900	ldr	r8, [r0, #56]
2901	ldr	r9, [r0, #60]
2902#else
2903	ldrd	r8, r9, [r0, #56]
2904#endif
2905#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2906	ldm	r0, {r6, r7}
2907#else
2908	ldrd	r6, r7, [r0]
2909#endif
2910#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2911	str	r4, [r0, #48]
2912	str	r5, [r0, #52]
2913#else
2914	strd	r4, r5, [r0, #48]
2915#endif
2916	eor	r8, r8, r6
2917	eor	r9, r9, r7
2918	and	r10, r10, r8
2919	and	r11, r11, r9
2920	eor	r10, r10, r6
2921	eor	r11, r11, r7
2922#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2923	ldr	r6, [r0, #48]
2924	ldr	r7, [r0, #52]
2925#else
2926	ldrd	r6, r7, [r0, #48]
2927#endif
2928	adds	r6, r6, r10
2929	adc	r7, r7, r11
2930#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2931	str	r6, [r0, #48]
2932	str	r7, [r0, #52]
2933#else
2934	strd	r6, r7, [r0, #48]
2935#endif
2936	mov	r10, r8
2937	mov	r11, r9
2938	# Calc new W[9]
2939#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2940	ldr	r4, [sp, #56]
2941	ldr	r5, [sp, #60]
2942#else
2943	ldrd	r4, r5, [sp, #56]
2944#endif
2945	lsrs	r6, r4, #19
2946	lsrs	r7, r5, #19
2947	orr	r7, r7, r4, lsl #13
2948	orr	r6, r6, r5, lsl #13
2949	lsls	r8, r4, #3
2950	lsls	r9, r5, #3
2951	orr	r9, r9, r4, lsr #29
2952	orr	r8, r8, r5, lsr #29
2953	eor	r7, r7, r9
2954	eor	r6, r6, r8
2955	lsrs	r8, r4, #6
2956	lsrs	r9, r5, #6
2957	orr	r8, r8, r5, lsl #26
2958	eor	r7, r7, r9
2959	eor	r6, r6, r8
2960#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2961	ldr	r4, [sp, #72]
2962	ldr	r5, [sp, #76]
2963#else
2964	ldrd	r4, r5, [sp, #72]
2965#endif
2966#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2967	ldr	r8, [sp, #16]
2968	ldr	r9, [sp, #20]
2969#else
2970	ldrd	r8, r9, [sp, #16]
2971#endif
2972	adds	r4, r4, r6
2973	adc	r5, r5, r7
2974	adds	r4, r4, r8
2975	adc	r5, r5, r9
2976#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2977	str	r4, [sp, #72]
2978	str	r5, [sp, #76]
2979#else
2980	strd	r4, r5, [sp, #72]
2981#endif
2982#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
2983	ldr	r4, [sp, #80]
2984	ldr	r5, [sp, #84]
2985#else
2986	ldrd	r4, r5, [sp, #80]
2987#endif
2988	lsrs	r6, r4, #1
2989	lsrs	r7, r5, #1
2990	orr	r7, r7, r4, lsl #31
2991	orr	r6, r6, r5, lsl #31
2992	lsrs	r8, r4, #8
2993	lsrs	r9, r5, #8
2994	orr	r9, r9, r4, lsl #24
2995	orr	r8, r8, r5, lsl #24
2996	eor	r7, r7, r9
2997	eor	r6, r6, r8
2998	lsrs	r8, r4, #7
2999	lsrs	r9, r5, #7
3000	orr	r8, r8, r5, lsl #25
3001	eor	r7, r7, r9
3002	eor	r6, r6, r8
3003#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3004	ldr	r4, [sp, #72]
3005	ldr	r5, [sp, #76]
3006#else
3007	ldrd	r4, r5, [sp, #72]
3008#endif
3009	adds	r4, r4, r6
3010	adc	r5, r5, r7
3011#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3012	str	r4, [sp, #72]
3013	str	r5, [sp, #76]
3014#else
3015	strd	r4, r5, [sp, #72]
3016#endif
3017	# Round 10
3018#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3019	ldr	r4, [r0, #16]
3020	ldr	r5, [r0, #20]
3021#else
3022	ldrd	r4, r5, [r0, #16]
3023#endif
3024	lsrs	r6, r4, #14
3025	lsrs	r7, r5, #14
3026	orr	r7, r7, r4, lsl #18
3027	orr	r6, r6, r5, lsl #18
3028	lsrs	r8, r4, #18
3029	lsrs	r9, r5, #18
3030	orr	r9, r9, r4, lsl #14
3031	orr	r8, r8, r5, lsl #14
3032	eor	r6, r6, r8
3033	eor	r7, r7, r9
3034	lsls	r8, r4, #23
3035	lsls	r9, r5, #23
3036	orr	r9, r9, r4, lsr #9
3037	orr	r8, r8, r5, lsr #9
3038#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3039	ldr	r4, [r0, #40]
3040	ldr	r5, [r0, #44]
3041#else
3042	ldrd	r4, r5, [r0, #40]
3043#endif
3044	eor	r6, r6, r8
3045	eor	r7, r7, r9
3046	adds	r4, r4, r6
3047	adc	r5, r5, r7
3048#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3049	str	r4, [r0, #40]
3050	str	r5, [r0, #44]
3051#else
3052	strd	r4, r5, [r0, #40]
3053#endif
3054#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3055	ldr	r4, [r0, #16]
3056	ldr	r5, [r0, #20]
3057#else
3058	ldrd	r4, r5, [r0, #16]
3059#endif
3060#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3061	ldr	r6, [r0, #24]
3062	ldr	r7, [r0, #28]
3063#else
3064	ldrd	r6, r7, [r0, #24]
3065#endif
3066#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3067	ldr	r8, [r0, #32]
3068	ldr	r9, [r0, #36]
3069#else
3070	ldrd	r8, r9, [r0, #32]
3071#endif
3072	eor	r6, r6, r8
3073	eor	r7, r7, r9
3074	and	r6, r6, r4
3075	and	r7, r7, r5
3076	eor	r6, r6, r8
3077	eor	r7, r7, r9
3078#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3079	ldr	r4, [r0, #40]
3080	ldr	r5, [r0, #44]
3081#else
3082	ldrd	r4, r5, [r0, #40]
3083#endif
3084#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3085	ldr	r8, [sp, #80]
3086	ldr	r9, [sp, #84]
3087#else
3088	ldrd	r8, r9, [sp, #80]
3089#endif
3090	adds	r4, r4, r6
3091	adc	r5, r5, r7
3092#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3093	ldr	r6, [r3, #80]
3094	ldr	r7, [r3, #84]
3095#else
3096	ldrd	r6, r7, [r3, #80]
3097#endif
3098	adds	r4, r4, r8
3099	adc	r5, r5, r9
3100#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3101	ldr	r8, [r0, #8]
3102	ldr	r9, [r0, #12]
3103#else
3104	ldrd	r8, r9, [r0, #8]
3105#endif
3106	adds	r4, r4, r6
3107	adc	r5, r5, r7
3108#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3109	str	r4, [r0, #40]
3110	str	r5, [r0, #44]
3111#else
3112	strd	r4, r5, [r0, #40]
3113#endif
3114	adds	r8, r8, r4
3115	adc	r9, r9, r5
3116#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3117	ldr	r4, [r0, #48]
3118	ldr	r5, [r0, #52]
3119#else
3120	ldrd	r4, r5, [r0, #48]
3121#endif
3122#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3123	str	r8, [r0, #8]
3124	str	r9, [r0, #12]
3125#else
3126	strd	r8, r9, [r0, #8]
3127#endif
3128	lsrs	r6, r4, #28
3129	lsrs	r7, r5, #28
3130	orr	r7, r7, r4, lsl #4
3131	orr	r6, r6, r5, lsl #4
3132	lsls	r8, r4, #30
3133	lsls	r9, r5, #30
3134	orr	r9, r9, r4, lsr #2
3135	orr	r8, r8, r5, lsr #2
3136	eor	r6, r6, r8
3137	eor	r7, r7, r9
3138	lsls	r8, r4, #25
3139	lsls	r9, r5, #25
3140	orr	r9, r9, r4, lsr #7
3141	orr	r8, r8, r5, lsr #7
3142#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3143	ldr	r4, [r0, #40]
3144	ldr	r5, [r0, #44]
3145#else
3146	ldrd	r4, r5, [r0, #40]
3147#endif
3148	eor	r6, r6, r8
3149	eor	r7, r7, r9
3150	adds	r4, r4, r6
3151	adc	r5, r5, r7
3152#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3153	ldr	r8, [r0, #48]
3154	ldr	r9, [r0, #52]
3155#else
3156	ldrd	r8, r9, [r0, #48]
3157#endif
3158#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3159	ldr	r6, [r0, #56]
3160	ldr	r7, [r0, #60]
3161#else
3162	ldrd	r6, r7, [r0, #56]
3163#endif
3164#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3165	str	r4, [r0, #40]
3166	str	r5, [r0, #44]
3167#else
3168	strd	r4, r5, [r0, #40]
3169#endif
3170	eor	r8, r8, r6
3171	eor	r9, r9, r7
3172	and	r10, r10, r8
3173	and	r11, r11, r9
3174	eor	r10, r10, r6
3175	eor	r11, r11, r7
3176#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3177	ldr	r6, [r0, #40]
3178	ldr	r7, [r0, #44]
3179#else
3180	ldrd	r6, r7, [r0, #40]
3181#endif
3182	adds	r6, r6, r10
3183	adc	r7, r7, r11
3184#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3185	str	r6, [r0, #40]
3186	str	r7, [r0, #44]
3187#else
3188	strd	r6, r7, [r0, #40]
3189#endif
3190	mov	r10, r8
3191	mov	r11, r9
3192	# Calc new W[10]
3193#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3194	ldr	r4, [sp, #64]
3195	ldr	r5, [sp, #68]
3196#else
3197	ldrd	r4, r5, [sp, #64]
3198#endif
3199	lsrs	r6, r4, #19
3200	lsrs	r7, r5, #19
3201	orr	r7, r7, r4, lsl #13
3202	orr	r6, r6, r5, lsl #13
3203	lsls	r8, r4, #3
3204	lsls	r9, r5, #3
3205	orr	r9, r9, r4, lsr #29
3206	orr	r8, r8, r5, lsr #29
3207	eor	r7, r7, r9
3208	eor	r6, r6, r8
3209	lsrs	r8, r4, #6
3210	lsrs	r9, r5, #6
3211	orr	r8, r8, r5, lsl #26
3212	eor	r7, r7, r9
3213	eor	r6, r6, r8
3214#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3215	ldr	r4, [sp, #80]
3216	ldr	r5, [sp, #84]
3217#else
3218	ldrd	r4, r5, [sp, #80]
3219#endif
3220#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3221	ldr	r8, [sp, #24]
3222	ldr	r9, [sp, #28]
3223#else
3224	ldrd	r8, r9, [sp, #24]
3225#endif
3226	adds	r4, r4, r6
3227	adc	r5, r5, r7
3228	adds	r4, r4, r8
3229	adc	r5, r5, r9
3230#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3231	str	r4, [sp, #80]
3232	str	r5, [sp, #84]
3233#else
3234	strd	r4, r5, [sp, #80]
3235#endif
3236#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3237	ldr	r4, [sp, #88]
3238	ldr	r5, [sp, #92]
3239#else
3240	ldrd	r4, r5, [sp, #88]
3241#endif
3242	lsrs	r6, r4, #1
3243	lsrs	r7, r5, #1
3244	orr	r7, r7, r4, lsl #31
3245	orr	r6, r6, r5, lsl #31
3246	lsrs	r8, r4, #8
3247	lsrs	r9, r5, #8
3248	orr	r9, r9, r4, lsl #24
3249	orr	r8, r8, r5, lsl #24
3250	eor	r7, r7, r9
3251	eor	r6, r6, r8
3252	lsrs	r8, r4, #7
3253	lsrs	r9, r5, #7
3254	orr	r8, r8, r5, lsl #25
3255	eor	r7, r7, r9
3256	eor	r6, r6, r8
3257#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3258	ldr	r4, [sp, #80]
3259	ldr	r5, [sp, #84]
3260#else
3261	ldrd	r4, r5, [sp, #80]
3262#endif
3263	adds	r4, r4, r6
3264	adc	r5, r5, r7
3265#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3266	str	r4, [sp, #80]
3267	str	r5, [sp, #84]
3268#else
3269	strd	r4, r5, [sp, #80]
3270#endif
3271	# Round 11
3272#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3273	ldr	r4, [r0, #8]
3274	ldr	r5, [r0, #12]
3275#else
3276	ldrd	r4, r5, [r0, #8]
3277#endif
3278	lsrs	r6, r4, #14
3279	lsrs	r7, r5, #14
3280	orr	r7, r7, r4, lsl #18
3281	orr	r6, r6, r5, lsl #18
3282	lsrs	r8, r4, #18
3283	lsrs	r9, r5, #18
3284	orr	r9, r9, r4, lsl #14
3285	orr	r8, r8, r5, lsl #14
3286	eor	r6, r6, r8
3287	eor	r7, r7, r9
3288	lsls	r8, r4, #23
3289	lsls	r9, r5, #23
3290	orr	r9, r9, r4, lsr #9
3291	orr	r8, r8, r5, lsr #9
3292#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3293	ldr	r4, [r0, #32]
3294	ldr	r5, [r0, #36]
3295#else
3296	ldrd	r4, r5, [r0, #32]
3297#endif
3298	eor	r6, r6, r8
3299	eor	r7, r7, r9
3300	adds	r4, r4, r6
3301	adc	r5, r5, r7
3302#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3303	str	r4, [r0, #32]
3304	str	r5, [r0, #36]
3305#else
3306	strd	r4, r5, [r0, #32]
3307#endif
3308#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3309	ldr	r4, [r0, #8]
3310	ldr	r5, [r0, #12]
3311#else
3312	ldrd	r4, r5, [r0, #8]
3313#endif
3314#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3315	ldr	r6, [r0, #16]
3316	ldr	r7, [r0, #20]
3317#else
3318	ldrd	r6, r7, [r0, #16]
3319#endif
3320#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3321	ldr	r8, [r0, #24]
3322	ldr	r9, [r0, #28]
3323#else
3324	ldrd	r8, r9, [r0, #24]
3325#endif
3326	eor	r6, r6, r8
3327	eor	r7, r7, r9
3328	and	r6, r6, r4
3329	and	r7, r7, r5
3330	eor	r6, r6, r8
3331	eor	r7, r7, r9
3332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3333	ldr	r4, [r0, #32]
3334	ldr	r5, [r0, #36]
3335#else
3336	ldrd	r4, r5, [r0, #32]
3337#endif
3338#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3339	ldr	r8, [sp, #88]
3340	ldr	r9, [sp, #92]
3341#else
3342	ldrd	r8, r9, [sp, #88]
3343#endif
3344	adds	r4, r4, r6
3345	adc	r5, r5, r7
3346#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3347	ldr	r6, [r3, #88]
3348	ldr	r7, [r3, #92]
3349#else
3350	ldrd	r6, r7, [r3, #88]
3351#endif
3352	adds	r4, r4, r8
3353	adc	r5, r5, r9
3354#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3355	ldm	r0, {r8, r9}
3356#else
3357	ldrd	r8, r9, [r0]
3358#endif
3359	adds	r4, r4, r6
3360	adc	r5, r5, r7
3361#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3362	str	r4, [r0, #32]
3363	str	r5, [r0, #36]
3364#else
3365	strd	r4, r5, [r0, #32]
3366#endif
3367	adds	r8, r8, r4
3368	adc	r9, r9, r5
3369#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3370	ldr	r4, [r0, #40]
3371	ldr	r5, [r0, #44]
3372#else
3373	ldrd	r4, r5, [r0, #40]
3374#endif
3375#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3376	stm	r0, {r8, r9}
3377#else
3378	strd	r8, r9, [r0]
3379#endif
3380	lsrs	r6, r4, #28
3381	lsrs	r7, r5, #28
3382	orr	r7, r7, r4, lsl #4
3383	orr	r6, r6, r5, lsl #4
3384	lsls	r8, r4, #30
3385	lsls	r9, r5, #30
3386	orr	r9, r9, r4, lsr #2
3387	orr	r8, r8, r5, lsr #2
3388	eor	r6, r6, r8
3389	eor	r7, r7, r9
3390	lsls	r8, r4, #25
3391	lsls	r9, r5, #25
3392	orr	r9, r9, r4, lsr #7
3393	orr	r8, r8, r5, lsr #7
3394#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3395	ldr	r4, [r0, #32]
3396	ldr	r5, [r0, #36]
3397#else
3398	ldrd	r4, r5, [r0, #32]
3399#endif
3400	eor	r6, r6, r8
3401	eor	r7, r7, r9
3402	adds	r4, r4, r6
3403	adc	r5, r5, r7
3404#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3405	ldr	r8, [r0, #40]
3406	ldr	r9, [r0, #44]
3407#else
3408	ldrd	r8, r9, [r0, #40]
3409#endif
3410#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3411	ldr	r6, [r0, #48]
3412	ldr	r7, [r0, #52]
3413#else
3414	ldrd	r6, r7, [r0, #48]
3415#endif
3416#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3417	str	r4, [r0, #32]
3418	str	r5, [r0, #36]
3419#else
3420	strd	r4, r5, [r0, #32]
3421#endif
3422	eor	r8, r8, r6
3423	eor	r9, r9, r7
3424	and	r10, r10, r8
3425	and	r11, r11, r9
3426	eor	r10, r10, r6
3427	eor	r11, r11, r7
3428#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3429	ldr	r6, [r0, #32]
3430	ldr	r7, [r0, #36]
3431#else
3432	ldrd	r6, r7, [r0, #32]
3433#endif
3434	adds	r6, r6, r10
3435	adc	r7, r7, r11
3436#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3437	str	r6, [r0, #32]
3438	str	r7, [r0, #36]
3439#else
3440	strd	r6, r7, [r0, #32]
3441#endif
3442	mov	r10, r8
3443	mov	r11, r9
3444	# Calc new W[11]
3445#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3446	ldr	r4, [sp, #72]
3447	ldr	r5, [sp, #76]
3448#else
3449	ldrd	r4, r5, [sp, #72]
3450#endif
3451	lsrs	r6, r4, #19
3452	lsrs	r7, r5, #19
3453	orr	r7, r7, r4, lsl #13
3454	orr	r6, r6, r5, lsl #13
3455	lsls	r8, r4, #3
3456	lsls	r9, r5, #3
3457	orr	r9, r9, r4, lsr #29
3458	orr	r8, r8, r5, lsr #29
3459	eor	r7, r7, r9
3460	eor	r6, r6, r8
3461	lsrs	r8, r4, #6
3462	lsrs	r9, r5, #6
3463	orr	r8, r8, r5, lsl #26
3464	eor	r7, r7, r9
3465	eor	r6, r6, r8
3466#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3467	ldr	r4, [sp, #88]
3468	ldr	r5, [sp, #92]
3469#else
3470	ldrd	r4, r5, [sp, #88]
3471#endif
3472#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3473	ldr	r8, [sp, #32]
3474	ldr	r9, [sp, #36]
3475#else
3476	ldrd	r8, r9, [sp, #32]
3477#endif
3478	adds	r4, r4, r6
3479	adc	r5, r5, r7
3480	adds	r4, r4, r8
3481	adc	r5, r5, r9
3482#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3483	str	r4, [sp, #88]
3484	str	r5, [sp, #92]
3485#else
3486	strd	r4, r5, [sp, #88]
3487#endif
3488#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3489	ldr	r4, [sp, #96]
3490	ldr	r5, [sp, #100]
3491#else
3492	ldrd	r4, r5, [sp, #96]
3493#endif
3494	lsrs	r6, r4, #1
3495	lsrs	r7, r5, #1
3496	orr	r7, r7, r4, lsl #31
3497	orr	r6, r6, r5, lsl #31
3498	lsrs	r8, r4, #8
3499	lsrs	r9, r5, #8
3500	orr	r9, r9, r4, lsl #24
3501	orr	r8, r8, r5, lsl #24
3502	eor	r7, r7, r9
3503	eor	r6, r6, r8
3504	lsrs	r8, r4, #7
3505	lsrs	r9, r5, #7
3506	orr	r8, r8, r5, lsl #25
3507	eor	r7, r7, r9
3508	eor	r6, r6, r8
3509#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3510	ldr	r4, [sp, #88]
3511	ldr	r5, [sp, #92]
3512#else
3513	ldrd	r4, r5, [sp, #88]
3514#endif
3515	adds	r4, r4, r6
3516	adc	r5, r5, r7
3517#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3518	str	r4, [sp, #88]
3519	str	r5, [sp, #92]
3520#else
3521	strd	r4, r5, [sp, #88]
3522#endif
3523	# Round 12
3524#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3525	ldm	r0, {r4, r5}
3526#else
3527	ldrd	r4, r5, [r0]
3528#endif
3529	lsrs	r6, r4, #14
3530	lsrs	r7, r5, #14
3531	orr	r7, r7, r4, lsl #18
3532	orr	r6, r6, r5, lsl #18
3533	lsrs	r8, r4, #18
3534	lsrs	r9, r5, #18
3535	orr	r9, r9, r4, lsl #14
3536	orr	r8, r8, r5, lsl #14
3537	eor	r6, r6, r8
3538	eor	r7, r7, r9
3539	lsls	r8, r4, #23
3540	lsls	r9, r5, #23
3541	orr	r9, r9, r4, lsr #9
3542	orr	r8, r8, r5, lsr #9
3543#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3544	ldr	r4, [r0, #24]
3545	ldr	r5, [r0, #28]
3546#else
3547	ldrd	r4, r5, [r0, #24]
3548#endif
3549	eor	r6, r6, r8
3550	eor	r7, r7, r9
3551	adds	r4, r4, r6
3552	adc	r5, r5, r7
3553#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3554	str	r4, [r0, #24]
3555	str	r5, [r0, #28]
3556#else
3557	strd	r4, r5, [r0, #24]
3558#endif
3559#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3560	ldm	r0, {r4, r5}
3561#else
3562	ldrd	r4, r5, [r0]
3563#endif
3564#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3565	ldr	r6, [r0, #8]
3566	ldr	r7, [r0, #12]
3567#else
3568	ldrd	r6, r7, [r0, #8]
3569#endif
3570#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3571	ldr	r8, [r0, #16]
3572	ldr	r9, [r0, #20]
3573#else
3574	ldrd	r8, r9, [r0, #16]
3575#endif
3576	eor	r6, r6, r8
3577	eor	r7, r7, r9
3578	and	r6, r6, r4
3579	and	r7, r7, r5
3580	eor	r6, r6, r8
3581	eor	r7, r7, r9
3582#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3583	ldr	r4, [r0, #24]
3584	ldr	r5, [r0, #28]
3585#else
3586	ldrd	r4, r5, [r0, #24]
3587#endif
3588#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3589	ldr	r8, [sp, #96]
3590	ldr	r9, [sp, #100]
3591#else
3592	ldrd	r8, r9, [sp, #96]
3593#endif
3594	adds	r4, r4, r6
3595	adc	r5, r5, r7
3596#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3597	ldr	r6, [r3, #96]
3598	ldr	r7, [r3, #100]
3599#else
3600	ldrd	r6, r7, [r3, #96]
3601#endif
3602	adds	r4, r4, r8
3603	adc	r5, r5, r9
3604#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3605	ldr	r8, [r0, #56]
3606	ldr	r9, [r0, #60]
3607#else
3608	ldrd	r8, r9, [r0, #56]
3609#endif
3610	adds	r4, r4, r6
3611	adc	r5, r5, r7
3612#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3613	str	r4, [r0, #24]
3614	str	r5, [r0, #28]
3615#else
3616	strd	r4, r5, [r0, #24]
3617#endif
3618	adds	r8, r8, r4
3619	adc	r9, r9, r5
3620#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3621	ldr	r4, [r0, #32]
3622	ldr	r5, [r0, #36]
3623#else
3624	ldrd	r4, r5, [r0, #32]
3625#endif
3626#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3627	str	r8, [r0, #56]
3628	str	r9, [r0, #60]
3629#else
3630	strd	r8, r9, [r0, #56]
3631#endif
3632	lsrs	r6, r4, #28
3633	lsrs	r7, r5, #28
3634	orr	r7, r7, r4, lsl #4
3635	orr	r6, r6, r5, lsl #4
3636	lsls	r8, r4, #30
3637	lsls	r9, r5, #30
3638	orr	r9, r9, r4, lsr #2
3639	orr	r8, r8, r5, lsr #2
3640	eor	r6, r6, r8
3641	eor	r7, r7, r9
3642	lsls	r8, r4, #25
3643	lsls	r9, r5, #25
3644	orr	r9, r9, r4, lsr #7
3645	orr	r8, r8, r5, lsr #7
3646#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3647	ldr	r4, [r0, #24]
3648	ldr	r5, [r0, #28]
3649#else
3650	ldrd	r4, r5, [r0, #24]
3651#endif
3652	eor	r6, r6, r8
3653	eor	r7, r7, r9
3654	adds	r4, r4, r6
3655	adc	r5, r5, r7
3656#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3657	ldr	r8, [r0, #32]
3658	ldr	r9, [r0, #36]
3659#else
3660	ldrd	r8, r9, [r0, #32]
3661#endif
3662#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3663	ldr	r6, [r0, #40]
3664	ldr	r7, [r0, #44]
3665#else
3666	ldrd	r6, r7, [r0, #40]
3667#endif
3668#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3669	str	r4, [r0, #24]
3670	str	r5, [r0, #28]
3671#else
3672	strd	r4, r5, [r0, #24]
3673#endif
3674	eor	r8, r8, r6
3675	eor	r9, r9, r7
3676	and	r10, r10, r8
3677	and	r11, r11, r9
3678	eor	r10, r10, r6
3679	eor	r11, r11, r7
3680#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3681	ldr	r6, [r0, #24]
3682	ldr	r7, [r0, #28]
3683#else
3684	ldrd	r6, r7, [r0, #24]
3685#endif
3686	adds	r6, r6, r10
3687	adc	r7, r7, r11
3688#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3689	str	r6, [r0, #24]
3690	str	r7, [r0, #28]
3691#else
3692	strd	r6, r7, [r0, #24]
3693#endif
3694	mov	r10, r8
3695	mov	r11, r9
3696	# Calc new W[12]
3697#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3698	ldr	r4, [sp, #80]
3699	ldr	r5, [sp, #84]
3700#else
3701	ldrd	r4, r5, [sp, #80]
3702#endif
3703	lsrs	r6, r4, #19
3704	lsrs	r7, r5, #19
3705	orr	r7, r7, r4, lsl #13
3706	orr	r6, r6, r5, lsl #13
3707	lsls	r8, r4, #3
3708	lsls	r9, r5, #3
3709	orr	r9, r9, r4, lsr #29
3710	orr	r8, r8, r5, lsr #29
3711	eor	r7, r7, r9
3712	eor	r6, r6, r8
3713	lsrs	r8, r4, #6
3714	lsrs	r9, r5, #6
3715	orr	r8, r8, r5, lsl #26
3716	eor	r7, r7, r9
3717	eor	r6, r6, r8
3718#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3719	ldr	r4, [sp, #96]
3720	ldr	r5, [sp, #100]
3721#else
3722	ldrd	r4, r5, [sp, #96]
3723#endif
3724#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3725	ldr	r8, [sp, #40]
3726	ldr	r9, [sp, #44]
3727#else
3728	ldrd	r8, r9, [sp, #40]
3729#endif
3730	adds	r4, r4, r6
3731	adc	r5, r5, r7
3732	adds	r4, r4, r8
3733	adc	r5, r5, r9
3734#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3735	str	r4, [sp, #96]
3736	str	r5, [sp, #100]
3737#else
3738	strd	r4, r5, [sp, #96]
3739#endif
3740#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3741	ldr	r4, [sp, #104]
3742	ldr	r5, [sp, #108]
3743#else
3744	ldrd	r4, r5, [sp, #104]
3745#endif
3746	lsrs	r6, r4, #1
3747	lsrs	r7, r5, #1
3748	orr	r7, r7, r4, lsl #31
3749	orr	r6, r6, r5, lsl #31
3750	lsrs	r8, r4, #8
3751	lsrs	r9, r5, #8
3752	orr	r9, r9, r4, lsl #24
3753	orr	r8, r8, r5, lsl #24
3754	eor	r7, r7, r9
3755	eor	r6, r6, r8
3756	lsrs	r8, r4, #7
3757	lsrs	r9, r5, #7
3758	orr	r8, r8, r5, lsl #25
3759	eor	r7, r7, r9
3760	eor	r6, r6, r8
3761#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3762	ldr	r4, [sp, #96]
3763	ldr	r5, [sp, #100]
3764#else
3765	ldrd	r4, r5, [sp, #96]
3766#endif
3767	adds	r4, r4, r6
3768	adc	r5, r5, r7
3769#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3770	str	r4, [sp, #96]
3771	str	r5, [sp, #100]
3772#else
3773	strd	r4, r5, [sp, #96]
3774#endif
3775	# Round 13
3776#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3777	ldr	r4, [r0, #56]
3778	ldr	r5, [r0, #60]
3779#else
3780	ldrd	r4, r5, [r0, #56]
3781#endif
3782	lsrs	r6, r4, #14
3783	lsrs	r7, r5, #14
3784	orr	r7, r7, r4, lsl #18
3785	orr	r6, r6, r5, lsl #18
3786	lsrs	r8, r4, #18
3787	lsrs	r9, r5, #18
3788	orr	r9, r9, r4, lsl #14
3789	orr	r8, r8, r5, lsl #14
3790	eor	r6, r6, r8
3791	eor	r7, r7, r9
3792	lsls	r8, r4, #23
3793	lsls	r9, r5, #23
3794	orr	r9, r9, r4, lsr #9
3795	orr	r8, r8, r5, lsr #9
3796#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3797	ldr	r4, [r0, #16]
3798	ldr	r5, [r0, #20]
3799#else
3800	ldrd	r4, r5, [r0, #16]
3801#endif
3802	eor	r6, r6, r8
3803	eor	r7, r7, r9
3804	adds	r4, r4, r6
3805	adc	r5, r5, r7
3806#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3807	str	r4, [r0, #16]
3808	str	r5, [r0, #20]
3809#else
3810	strd	r4, r5, [r0, #16]
3811#endif
3812#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3813	ldr	r4, [r0, #56]
3814	ldr	r5, [r0, #60]
3815#else
3816	ldrd	r4, r5, [r0, #56]
3817#endif
3818#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3819	ldm	r0, {r6, r7}
3820#else
3821	ldrd	r6, r7, [r0]
3822#endif
3823#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3824	ldr	r8, [r0, #8]
3825	ldr	r9, [r0, #12]
3826#else
3827	ldrd	r8, r9, [r0, #8]
3828#endif
3829	eor	r6, r6, r8
3830	eor	r7, r7, r9
3831	and	r6, r6, r4
3832	and	r7, r7, r5
3833	eor	r6, r6, r8
3834	eor	r7, r7, r9
3835#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3836	ldr	r4, [r0, #16]
3837	ldr	r5, [r0, #20]
3838#else
3839	ldrd	r4, r5, [r0, #16]
3840#endif
3841#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3842	ldr	r8, [sp, #104]
3843	ldr	r9, [sp, #108]
3844#else
3845	ldrd	r8, r9, [sp, #104]
3846#endif
3847	adds	r4, r4, r6
3848	adc	r5, r5, r7
3849#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3850	ldr	r6, [r3, #104]
3851	ldr	r7, [r3, #108]
3852#else
3853	ldrd	r6, r7, [r3, #104]
3854#endif
3855	adds	r4, r4, r8
3856	adc	r5, r5, r9
3857#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3858	ldr	r8, [r0, #48]
3859	ldr	r9, [r0, #52]
3860#else
3861	ldrd	r8, r9, [r0, #48]
3862#endif
3863	adds	r4, r4, r6
3864	adc	r5, r5, r7
3865#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3866	str	r4, [r0, #16]
3867	str	r5, [r0, #20]
3868#else
3869	strd	r4, r5, [r0, #16]
3870#endif
3871	adds	r8, r8, r4
3872	adc	r9, r9, r5
3873#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3874	ldr	r4, [r0, #24]
3875	ldr	r5, [r0, #28]
3876#else
3877	ldrd	r4, r5, [r0, #24]
3878#endif
3879#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3880	str	r8, [r0, #48]
3881	str	r9, [r0, #52]
3882#else
3883	strd	r8, r9, [r0, #48]
3884#endif
3885	lsrs	r6, r4, #28
3886	lsrs	r7, r5, #28
3887	orr	r7, r7, r4, lsl #4
3888	orr	r6, r6, r5, lsl #4
3889	lsls	r8, r4, #30
3890	lsls	r9, r5, #30
3891	orr	r9, r9, r4, lsr #2
3892	orr	r8, r8, r5, lsr #2
3893	eor	r6, r6, r8
3894	eor	r7, r7, r9
3895	lsls	r8, r4, #25
3896	lsls	r9, r5, #25
3897	orr	r9, r9, r4, lsr #7
3898	orr	r8, r8, r5, lsr #7
3899#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3900	ldr	r4, [r0, #16]
3901	ldr	r5, [r0, #20]
3902#else
3903	ldrd	r4, r5, [r0, #16]
3904#endif
3905	eor	r6, r6, r8
3906	eor	r7, r7, r9
3907	adds	r4, r4, r6
3908	adc	r5, r5, r7
3909#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3910	ldr	r8, [r0, #24]
3911	ldr	r9, [r0, #28]
3912#else
3913	ldrd	r8, r9, [r0, #24]
3914#endif
3915#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3916	ldr	r6, [r0, #32]
3917	ldr	r7, [r0, #36]
3918#else
3919	ldrd	r6, r7, [r0, #32]
3920#endif
3921#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3922	str	r4, [r0, #16]
3923	str	r5, [r0, #20]
3924#else
3925	strd	r4, r5, [r0, #16]
3926#endif
3927	eor	r8, r8, r6
3928	eor	r9, r9, r7
3929	and	r10, r10, r8
3930	and	r11, r11, r9
3931	eor	r10, r10, r6
3932	eor	r11, r11, r7
3933#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3934	ldr	r6, [r0, #16]
3935	ldr	r7, [r0, #20]
3936#else
3937	ldrd	r6, r7, [r0, #16]
3938#endif
3939	adds	r6, r6, r10
3940	adc	r7, r7, r11
3941#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3942	str	r6, [r0, #16]
3943	str	r7, [r0, #20]
3944#else
3945	strd	r6, r7, [r0, #16]
3946#endif
3947	mov	r10, r8
3948	mov	r11, r9
3949	# Calc new W[13]
3950#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3951	ldr	r4, [sp, #88]
3952	ldr	r5, [sp, #92]
3953#else
3954	ldrd	r4, r5, [sp, #88]
3955#endif
3956	lsrs	r6, r4, #19
3957	lsrs	r7, r5, #19
3958	orr	r7, r7, r4, lsl #13
3959	orr	r6, r6, r5, lsl #13
3960	lsls	r8, r4, #3
3961	lsls	r9, r5, #3
3962	orr	r9, r9, r4, lsr #29
3963	orr	r8, r8, r5, lsr #29
3964	eor	r7, r7, r9
3965	eor	r6, r6, r8
3966	lsrs	r8, r4, #6
3967	lsrs	r9, r5, #6
3968	orr	r8, r8, r5, lsl #26
3969	eor	r7, r7, r9
3970	eor	r6, r6, r8
3971#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3972	ldr	r4, [sp, #104]
3973	ldr	r5, [sp, #108]
3974#else
3975	ldrd	r4, r5, [sp, #104]
3976#endif
3977#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3978	ldr	r8, [sp, #48]
3979	ldr	r9, [sp, #52]
3980#else
3981	ldrd	r8, r9, [sp, #48]
3982#endif
3983	adds	r4, r4, r6
3984	adc	r5, r5, r7
3985	adds	r4, r4, r8
3986	adc	r5, r5, r9
3987#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3988	str	r4, [sp, #104]
3989	str	r5, [sp, #108]
3990#else
3991	strd	r4, r5, [sp, #104]
3992#endif
3993#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
3994	ldr	r4, [sp, #112]
3995	ldr	r5, [sp, #116]
3996#else
3997	ldrd	r4, r5, [sp, #112]
3998#endif
3999	lsrs	r6, r4, #1
4000	lsrs	r7, r5, #1
4001	orr	r7, r7, r4, lsl #31
4002	orr	r6, r6, r5, lsl #31
4003	lsrs	r8, r4, #8
4004	lsrs	r9, r5, #8
4005	orr	r9, r9, r4, lsl #24
4006	orr	r8, r8, r5, lsl #24
4007	eor	r7, r7, r9
4008	eor	r6, r6, r8
4009	lsrs	r8, r4, #7
4010	lsrs	r9, r5, #7
4011	orr	r8, r8, r5, lsl #25
4012	eor	r7, r7, r9
4013	eor	r6, r6, r8
4014#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4015	ldr	r4, [sp, #104]
4016	ldr	r5, [sp, #108]
4017#else
4018	ldrd	r4, r5, [sp, #104]
4019#endif
4020	adds	r4, r4, r6
4021	adc	r5, r5, r7
4022#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4023	str	r4, [sp, #104]
4024	str	r5, [sp, #108]
4025#else
4026	strd	r4, r5, [sp, #104]
4027#endif
4028	# Round 14
4029#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4030	ldr	r4, [r0, #48]
4031	ldr	r5, [r0, #52]
4032#else
4033	ldrd	r4, r5, [r0, #48]
4034#endif
4035	lsrs	r6, r4, #14
4036	lsrs	r7, r5, #14
4037	orr	r7, r7, r4, lsl #18
4038	orr	r6, r6, r5, lsl #18
4039	lsrs	r8, r4, #18
4040	lsrs	r9, r5, #18
4041	orr	r9, r9, r4, lsl #14
4042	orr	r8, r8, r5, lsl #14
4043	eor	r6, r6, r8
4044	eor	r7, r7, r9
4045	lsls	r8, r4, #23
4046	lsls	r9, r5, #23
4047	orr	r9, r9, r4, lsr #9
4048	orr	r8, r8, r5, lsr #9
4049#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4050	ldr	r4, [r0, #8]
4051	ldr	r5, [r0, #12]
4052#else
4053	ldrd	r4, r5, [r0, #8]
4054#endif
4055	eor	r6, r6, r8
4056	eor	r7, r7, r9
4057	adds	r4, r4, r6
4058	adc	r5, r5, r7
4059#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4060	str	r4, [r0, #8]
4061	str	r5, [r0, #12]
4062#else
4063	strd	r4, r5, [r0, #8]
4064#endif
4065#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4066	ldr	r4, [r0, #48]
4067	ldr	r5, [r0, #52]
4068#else
4069	ldrd	r4, r5, [r0, #48]
4070#endif
4071#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4072	ldr	r6, [r0, #56]
4073	ldr	r7, [r0, #60]
4074#else
4075	ldrd	r6, r7, [r0, #56]
4076#endif
4077#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4078	ldm	r0, {r8, r9}
4079#else
4080	ldrd	r8, r9, [r0]
4081#endif
4082	eor	r6, r6, r8
4083	eor	r7, r7, r9
4084	and	r6, r6, r4
4085	and	r7, r7, r5
4086	eor	r6, r6, r8
4087	eor	r7, r7, r9
4088#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4089	ldr	r4, [r0, #8]
4090	ldr	r5, [r0, #12]
4091#else
4092	ldrd	r4, r5, [r0, #8]
4093#endif
4094#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4095	ldr	r8, [sp, #112]
4096	ldr	r9, [sp, #116]
4097#else
4098	ldrd	r8, r9, [sp, #112]
4099#endif
4100	adds	r4, r4, r6
4101	adc	r5, r5, r7
4102#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4103	ldr	r6, [r3, #112]
4104	ldr	r7, [r3, #116]
4105#else
4106	ldrd	r6, r7, [r3, #112]
4107#endif
4108	adds	r4, r4, r8
4109	adc	r5, r5, r9
4110#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4111	ldr	r8, [r0, #40]
4112	ldr	r9, [r0, #44]
4113#else
4114	ldrd	r8, r9, [r0, #40]
4115#endif
4116	adds	r4, r4, r6
4117	adc	r5, r5, r7
4118#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4119	str	r4, [r0, #8]
4120	str	r5, [r0, #12]
4121#else
4122	strd	r4, r5, [r0, #8]
4123#endif
4124	adds	r8, r8, r4
4125	adc	r9, r9, r5
4126#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4127	ldr	r4, [r0, #16]
4128	ldr	r5, [r0, #20]
4129#else
4130	ldrd	r4, r5, [r0, #16]
4131#endif
4132#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4133	str	r8, [r0, #40]
4134	str	r9, [r0, #44]
4135#else
4136	strd	r8, r9, [r0, #40]
4137#endif
4138	lsrs	r6, r4, #28
4139	lsrs	r7, r5, #28
4140	orr	r7, r7, r4, lsl #4
4141	orr	r6, r6, r5, lsl #4
4142	lsls	r8, r4, #30
4143	lsls	r9, r5, #30
4144	orr	r9, r9, r4, lsr #2
4145	orr	r8, r8, r5, lsr #2
4146	eor	r6, r6, r8
4147	eor	r7, r7, r9
4148	lsls	r8, r4, #25
4149	lsls	r9, r5, #25
4150	orr	r9, r9, r4, lsr #7
4151	orr	r8, r8, r5, lsr #7
4152#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4153	ldr	r4, [r0, #8]
4154	ldr	r5, [r0, #12]
4155#else
4156	ldrd	r4, r5, [r0, #8]
4157#endif
4158	eor	r6, r6, r8
4159	eor	r7, r7, r9
4160	adds	r4, r4, r6
4161	adc	r5, r5, r7
4162#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4163	ldr	r8, [r0, #16]
4164	ldr	r9, [r0, #20]
4165#else
4166	ldrd	r8, r9, [r0, #16]
4167#endif
4168#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4169	ldr	r6, [r0, #24]
4170	ldr	r7, [r0, #28]
4171#else
4172	ldrd	r6, r7, [r0, #24]
4173#endif
4174#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4175	str	r4, [r0, #8]
4176	str	r5, [r0, #12]
4177#else
4178	strd	r4, r5, [r0, #8]
4179#endif
4180	eor	r8, r8, r6
4181	eor	r9, r9, r7
4182	and	r10, r10, r8
4183	and	r11, r11, r9
4184	eor	r10, r10, r6
4185	eor	r11, r11, r7
4186#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4187	ldr	r6, [r0, #8]
4188	ldr	r7, [r0, #12]
4189#else
4190	ldrd	r6, r7, [r0, #8]
4191#endif
4192	adds	r6, r6, r10
4193	adc	r7, r7, r11
4194#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4195	str	r6, [r0, #8]
4196	str	r7, [r0, #12]
4197#else
4198	strd	r6, r7, [r0, #8]
4199#endif
4200	mov	r10, r8
4201	mov	r11, r9
4202	# Calc new W[14]
4203#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4204	ldr	r4, [sp, #96]
4205	ldr	r5, [sp, #100]
4206#else
4207	ldrd	r4, r5, [sp, #96]
4208#endif
4209	lsrs	r6, r4, #19
4210	lsrs	r7, r5, #19
4211	orr	r7, r7, r4, lsl #13
4212	orr	r6, r6, r5, lsl #13
4213	lsls	r8, r4, #3
4214	lsls	r9, r5, #3
4215	orr	r9, r9, r4, lsr #29
4216	orr	r8, r8, r5, lsr #29
4217	eor	r7, r7, r9
4218	eor	r6, r6, r8
4219	lsrs	r8, r4, #6
4220	lsrs	r9, r5, #6
4221	orr	r8, r8, r5, lsl #26
4222	eor	r7, r7, r9
4223	eor	r6, r6, r8
4224#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4225	ldr	r4, [sp, #112]
4226	ldr	r5, [sp, #116]
4227#else
4228	ldrd	r4, r5, [sp, #112]
4229#endif
4230#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4231	ldr	r8, [sp, #56]
4232	ldr	r9, [sp, #60]
4233#else
4234	ldrd	r8, r9, [sp, #56]
4235#endif
4236	adds	r4, r4, r6
4237	adc	r5, r5, r7
4238	adds	r4, r4, r8
4239	adc	r5, r5, r9
4240#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4241	str	r4, [sp, #112]
4242	str	r5, [sp, #116]
4243#else
4244	strd	r4, r5, [sp, #112]
4245#endif
4246#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4247	ldr	r4, [sp, #120]
4248	ldr	r5, [sp, #124]
4249#else
4250	ldrd	r4, r5, [sp, #120]
4251#endif
4252	lsrs	r6, r4, #1
4253	lsrs	r7, r5, #1
4254	orr	r7, r7, r4, lsl #31
4255	orr	r6, r6, r5, lsl #31
4256	lsrs	r8, r4, #8
4257	lsrs	r9, r5, #8
4258	orr	r9, r9, r4, lsl #24
4259	orr	r8, r8, r5, lsl #24
4260	eor	r7, r7, r9
4261	eor	r6, r6, r8
4262	lsrs	r8, r4, #7
4263	lsrs	r9, r5, #7
4264	orr	r8, r8, r5, lsl #25
4265	eor	r7, r7, r9
4266	eor	r6, r6, r8
4267#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4268	ldr	r4, [sp, #112]
4269	ldr	r5, [sp, #116]
4270#else
4271	ldrd	r4, r5, [sp, #112]
4272#endif
4273	adds	r4, r4, r6
4274	adc	r5, r5, r7
4275#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4276	str	r4, [sp, #112]
4277	str	r5, [sp, #116]
4278#else
4279	strd	r4, r5, [sp, #112]
4280#endif
4281	# Round 15
4282#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4283	ldr	r4, [r0, #40]
4284	ldr	r5, [r0, #44]
4285#else
4286	ldrd	r4, r5, [r0, #40]
4287#endif
4288	lsrs	r6, r4, #14
4289	lsrs	r7, r5, #14
4290	orr	r7, r7, r4, lsl #18
4291	orr	r6, r6, r5, lsl #18
4292	lsrs	r8, r4, #18
4293	lsrs	r9, r5, #18
4294	orr	r9, r9, r4, lsl #14
4295	orr	r8, r8, r5, lsl #14
4296	eor	r6, r6, r8
4297	eor	r7, r7, r9
4298	lsls	r8, r4, #23
4299	lsls	r9, r5, #23
4300	orr	r9, r9, r4, lsr #9
4301	orr	r8, r8, r5, lsr #9
4302#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4303	ldm	r0, {r4, r5}
4304#else
4305	ldrd	r4, r5, [r0]
4306#endif
4307	eor	r6, r6, r8
4308	eor	r7, r7, r9
4309	adds	r4, r4, r6
4310	adc	r5, r5, r7
4311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4312	stm	r0, {r4, r5}
4313#else
4314	strd	r4, r5, [r0]
4315#endif
4316#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4317	ldr	r4, [r0, #40]
4318	ldr	r5, [r0, #44]
4319#else
4320	ldrd	r4, r5, [r0, #40]
4321#endif
4322#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4323	ldr	r6, [r0, #48]
4324	ldr	r7, [r0, #52]
4325#else
4326	ldrd	r6, r7, [r0, #48]
4327#endif
4328#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4329	ldr	r8, [r0, #56]
4330	ldr	r9, [r0, #60]
4331#else
4332	ldrd	r8, r9, [r0, #56]
4333#endif
4334	eor	r6, r6, r8
4335	eor	r7, r7, r9
4336	and	r6, r6, r4
4337	and	r7, r7, r5
4338	eor	r6, r6, r8
4339	eor	r7, r7, r9
4340#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4341	ldm	r0, {r4, r5}
4342#else
4343	ldrd	r4, r5, [r0]
4344#endif
4345#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4346	ldr	r8, [sp, #120]
4347	ldr	r9, [sp, #124]
4348#else
4349	ldrd	r8, r9, [sp, #120]
4350#endif
4351	adds	r4, r4, r6
4352	adc	r5, r5, r7
4353#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4354	ldr	r6, [r3, #120]
4355	ldr	r7, [r3, #124]
4356#else
4357	ldrd	r6, r7, [r3, #120]
4358#endif
4359	adds	r4, r4, r8
4360	adc	r5, r5, r9
4361#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4362	ldr	r8, [r0, #32]
4363	ldr	r9, [r0, #36]
4364#else
4365	ldrd	r8, r9, [r0, #32]
4366#endif
4367	adds	r4, r4, r6
4368	adc	r5, r5, r7
4369#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4370	stm	r0, {r4, r5}
4371#else
4372	strd	r4, r5, [r0]
4373#endif
4374	adds	r8, r8, r4
4375	adc	r9, r9, r5
4376#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4377	ldr	r4, [r0, #8]
4378	ldr	r5, [r0, #12]
4379#else
4380	ldrd	r4, r5, [r0, #8]
4381#endif
4382#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4383	str	r8, [r0, #32]
4384	str	r9, [r0, #36]
4385#else
4386	strd	r8, r9, [r0, #32]
4387#endif
4388	lsrs	r6, r4, #28
4389	lsrs	r7, r5, #28
4390	orr	r7, r7, r4, lsl #4
4391	orr	r6, r6, r5, lsl #4
4392	lsls	r8, r4, #30
4393	lsls	r9, r5, #30
4394	orr	r9, r9, r4, lsr #2
4395	orr	r8, r8, r5, lsr #2
4396	eor	r6, r6, r8
4397	eor	r7, r7, r9
4398	lsls	r8, r4, #25
4399	lsls	r9, r5, #25
4400	orr	r9, r9, r4, lsr #7
4401	orr	r8, r8, r5, lsr #7
4402#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4403	ldm	r0, {r4, r5}
4404#else
4405	ldrd	r4, r5, [r0]
4406#endif
4407	eor	r6, r6, r8
4408	eor	r7, r7, r9
4409	adds	r4, r4, r6
4410	adc	r5, r5, r7
4411#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4412	ldr	r8, [r0, #8]
4413	ldr	r9, [r0, #12]
4414#else
4415	ldrd	r8, r9, [r0, #8]
4416#endif
4417#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4418	ldr	r6, [r0, #16]
4419	ldr	r7, [r0, #20]
4420#else
4421	ldrd	r6, r7, [r0, #16]
4422#endif
4423#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4424	stm	r0, {r4, r5}
4425#else
4426	strd	r4, r5, [r0]
4427#endif
4428	eor	r8, r8, r6
4429	eor	r9, r9, r7
4430	and	r10, r10, r8
4431	and	r11, r11, r9
4432	eor	r10, r10, r6
4433	eor	r11, r11, r7
4434#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4435	ldm	r0, {r6, r7}
4436#else
4437	ldrd	r6, r7, [r0]
4438#endif
4439	adds	r6, r6, r10
4440	adc	r7, r7, r11
4441#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4442	stm	r0, {r6, r7}
4443#else
4444	strd	r6, r7, [r0]
4445#endif
4446	mov	r10, r8
4447	mov	r11, r9
4448	# Calc new W[15]
4449#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4450	ldr	r4, [sp, #104]
4451	ldr	r5, [sp, #108]
4452#else
4453	ldrd	r4, r5, [sp, #104]
4454#endif
4455	lsrs	r6, r4, #19
4456	lsrs	r7, r5, #19
4457	orr	r7, r7, r4, lsl #13
4458	orr	r6, r6, r5, lsl #13
4459	lsls	r8, r4, #3
4460	lsls	r9, r5, #3
4461	orr	r9, r9, r4, lsr #29
4462	orr	r8, r8, r5, lsr #29
4463	eor	r7, r7, r9
4464	eor	r6, r6, r8
4465	lsrs	r8, r4, #6
4466	lsrs	r9, r5, #6
4467	orr	r8, r8, r5, lsl #26
4468	eor	r7, r7, r9
4469	eor	r6, r6, r8
4470#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4471	ldr	r4, [sp, #120]
4472	ldr	r5, [sp, #124]
4473#else
4474	ldrd	r4, r5, [sp, #120]
4475#endif
4476#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4477	ldr	r8, [sp, #64]
4478	ldr	r9, [sp, #68]
4479#else
4480	ldrd	r8, r9, [sp, #64]
4481#endif
4482	adds	r4, r4, r6
4483	adc	r5, r5, r7
4484	adds	r4, r4, r8
4485	adc	r5, r5, r9
4486#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4487	str	r4, [sp, #120]
4488	str	r5, [sp, #124]
4489#else
4490	strd	r4, r5, [sp, #120]
4491#endif
4492#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4493	ldm	sp, {r4, r5}
4494#else
4495	ldrd	r4, r5, [sp]
4496#endif
4497	lsrs	r6, r4, #1
4498	lsrs	r7, r5, #1
4499	orr	r7, r7, r4, lsl #31
4500	orr	r6, r6, r5, lsl #31
4501	lsrs	r8, r4, #8
4502	lsrs	r9, r5, #8
4503	orr	r9, r9, r4, lsl #24
4504	orr	r8, r8, r5, lsl #24
4505	eor	r7, r7, r9
4506	eor	r6, r6, r8
4507	lsrs	r8, r4, #7
4508	lsrs	r9, r5, #7
4509	orr	r8, r8, r5, lsl #25
4510	eor	r7, r7, r9
4511	eor	r6, r6, r8
4512#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4513	ldr	r4, [sp, #120]
4514	ldr	r5, [sp, #124]
4515#else
4516	ldrd	r4, r5, [sp, #120]
4517#endif
4518	adds	r4, r4, r6
4519	adc	r5, r5, r7
4520#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4521	str	r4, [sp, #120]
4522	str	r5, [sp, #124]
4523#else
4524	strd	r4, r5, [sp, #120]
4525#endif
4526	add	r3, r3, #0x80
4527	subs	r12, r12, #1
4528	bne	L_SHA512_transform_len_start
4529	# Round 0
4530#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4531	ldr	r4, [r0, #32]
4532	ldr	r5, [r0, #36]
4533#else
4534	ldrd	r4, r5, [r0, #32]
4535#endif
4536	lsrs	r6, r4, #14
4537	lsrs	r7, r5, #14
4538	orr	r7, r7, r4, lsl #18
4539	orr	r6, r6, r5, lsl #18
4540	lsrs	r8, r4, #18
4541	lsrs	r9, r5, #18
4542	orr	r9, r9, r4, lsl #14
4543	orr	r8, r8, r5, lsl #14
4544	eor	r6, r6, r8
4545	eor	r7, r7, r9
4546	lsls	r8, r4, #23
4547	lsls	r9, r5, #23
4548	orr	r9, r9, r4, lsr #9
4549	orr	r8, r8, r5, lsr #9
4550#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4551	ldr	r4, [r0, #56]
4552	ldr	r5, [r0, #60]
4553#else
4554	ldrd	r4, r5, [r0, #56]
4555#endif
4556	eor	r6, r6, r8
4557	eor	r7, r7, r9
4558	adds	r4, r4, r6
4559	adc	r5, r5, r7
4560#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4561	str	r4, [r0, #56]
4562	str	r5, [r0, #60]
4563#else
4564	strd	r4, r5, [r0, #56]
4565#endif
4566#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4567	ldr	r4, [r0, #32]
4568	ldr	r5, [r0, #36]
4569#else
4570	ldrd	r4, r5, [r0, #32]
4571#endif
4572#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4573	ldr	r6, [r0, #40]
4574	ldr	r7, [r0, #44]
4575#else
4576	ldrd	r6, r7, [r0, #40]
4577#endif
4578#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4579	ldr	r8, [r0, #48]
4580	ldr	r9, [r0, #52]
4581#else
4582	ldrd	r8, r9, [r0, #48]
4583#endif
4584	eor	r6, r6, r8
4585	eor	r7, r7, r9
4586	and	r6, r6, r4
4587	and	r7, r7, r5
4588	eor	r6, r6, r8
4589	eor	r7, r7, r9
4590#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4591	ldr	r4, [r0, #56]
4592	ldr	r5, [r0, #60]
4593#else
4594	ldrd	r4, r5, [r0, #56]
4595#endif
4596#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4597	ldm	sp, {r8, r9}
4598#else
4599	ldrd	r8, r9, [sp]
4600#endif
4601	adds	r4, r4, r6
4602	adc	r5, r5, r7
4603#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4604	ldm	r3, {r6, r7}
4605#else
4606	ldrd	r6, r7, [r3]
4607#endif
4608	adds	r4, r4, r8
4609	adc	r5, r5, r9
4610#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4611	ldr	r8, [r0, #24]
4612	ldr	r9, [r0, #28]
4613#else
4614	ldrd	r8, r9, [r0, #24]
4615#endif
4616	adds	r4, r4, r6
4617	adc	r5, r5, r7
4618#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4619	str	r4, [r0, #56]
4620	str	r5, [r0, #60]
4621#else
4622	strd	r4, r5, [r0, #56]
4623#endif
4624	adds	r8, r8, r4
4625	adc	r9, r9, r5
4626#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4627	ldm	r0, {r4, r5}
4628#else
4629	ldrd	r4, r5, [r0]
4630#endif
4631#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4632	str	r8, [r0, #24]
4633	str	r9, [r0, #28]
4634#else
4635	strd	r8, r9, [r0, #24]
4636#endif
4637	lsrs	r6, r4, #28
4638	lsrs	r7, r5, #28
4639	orr	r7, r7, r4, lsl #4
4640	orr	r6, r6, r5, lsl #4
4641	lsls	r8, r4, #30
4642	lsls	r9, r5, #30
4643	orr	r9, r9, r4, lsr #2
4644	orr	r8, r8, r5, lsr #2
4645	eor	r6, r6, r8
4646	eor	r7, r7, r9
4647	lsls	r8, r4, #25
4648	lsls	r9, r5, #25
4649	orr	r9, r9, r4, lsr #7
4650	orr	r8, r8, r5, lsr #7
4651#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4652	ldr	r4, [r0, #56]
4653	ldr	r5, [r0, #60]
4654#else
4655	ldrd	r4, r5, [r0, #56]
4656#endif
4657	eor	r6, r6, r8
4658	eor	r7, r7, r9
4659	adds	r4, r4, r6
4660	adc	r5, r5, r7
4661#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4662	ldm	r0, {r8, r9}
4663#else
4664	ldrd	r8, r9, [r0]
4665#endif
4666#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4667	ldr	r6, [r0, #8]
4668	ldr	r7, [r0, #12]
4669#else
4670	ldrd	r6, r7, [r0, #8]
4671#endif
4672#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4673	str	r4, [r0, #56]
4674	str	r5, [r0, #60]
4675#else
4676	strd	r4, r5, [r0, #56]
4677#endif
4678	eor	r8, r8, r6
4679	eor	r9, r9, r7
4680	and	r10, r10, r8
4681	and	r11, r11, r9
4682	eor	r10, r10, r6
4683	eor	r11, r11, r7
4684#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4685	ldr	r6, [r0, #56]
4686	ldr	r7, [r0, #60]
4687#else
4688	ldrd	r6, r7, [r0, #56]
4689#endif
4690	adds	r6, r6, r10
4691	adc	r7, r7, r11
4692#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4693	str	r6, [r0, #56]
4694	str	r7, [r0, #60]
4695#else
4696	strd	r6, r7, [r0, #56]
4697#endif
4698	mov	r10, r8
4699	mov	r11, r9
4700	# Round 1
4701#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4702	ldr	r4, [r0, #24]
4703	ldr	r5, [r0, #28]
4704#else
4705	ldrd	r4, r5, [r0, #24]
4706#endif
4707	lsrs	r6, r4, #14
4708	lsrs	r7, r5, #14
4709	orr	r7, r7, r4, lsl #18
4710	orr	r6, r6, r5, lsl #18
4711	lsrs	r8, r4, #18
4712	lsrs	r9, r5, #18
4713	orr	r9, r9, r4, lsl #14
4714	orr	r8, r8, r5, lsl #14
4715	eor	r6, r6, r8
4716	eor	r7, r7, r9
4717	lsls	r8, r4, #23
4718	lsls	r9, r5, #23
4719	orr	r9, r9, r4, lsr #9
4720	orr	r8, r8, r5, lsr #9
4721#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4722	ldr	r4, [r0, #48]
4723	ldr	r5, [r0, #52]
4724#else
4725	ldrd	r4, r5, [r0, #48]
4726#endif
4727	eor	r6, r6, r8
4728	eor	r7, r7, r9
4729	adds	r4, r4, r6
4730	adc	r5, r5, r7
4731#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4732	str	r4, [r0, #48]
4733	str	r5, [r0, #52]
4734#else
4735	strd	r4, r5, [r0, #48]
4736#endif
4737#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4738	ldr	r4, [r0, #24]
4739	ldr	r5, [r0, #28]
4740#else
4741	ldrd	r4, r5, [r0, #24]
4742#endif
4743#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4744	ldr	r6, [r0, #32]
4745	ldr	r7, [r0, #36]
4746#else
4747	ldrd	r6, r7, [r0, #32]
4748#endif
4749#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4750	ldr	r8, [r0, #40]
4751	ldr	r9, [r0, #44]
4752#else
4753	ldrd	r8, r9, [r0, #40]
4754#endif
4755	eor	r6, r6, r8
4756	eor	r7, r7, r9
4757	and	r6, r6, r4
4758	and	r7, r7, r5
4759	eor	r6, r6, r8
4760	eor	r7, r7, r9
4761#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4762	ldr	r4, [r0, #48]
4763	ldr	r5, [r0, #52]
4764#else
4765	ldrd	r4, r5, [r0, #48]
4766#endif
4767#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4768	ldr	r8, [sp, #8]
4769	ldr	r9, [sp, #12]
4770#else
4771	ldrd	r8, r9, [sp, #8]
4772#endif
4773	adds	r4, r4, r6
4774	adc	r5, r5, r7
4775#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4776	ldr	r6, [r3, #8]
4777	ldr	r7, [r3, #12]
4778#else
4779	ldrd	r6, r7, [r3, #8]
4780#endif
4781	adds	r4, r4, r8
4782	adc	r5, r5, r9
4783#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4784	ldr	r8, [r0, #16]
4785	ldr	r9, [r0, #20]
4786#else
4787	ldrd	r8, r9, [r0, #16]
4788#endif
4789	adds	r4, r4, r6
4790	adc	r5, r5, r7
4791#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4792	str	r4, [r0, #48]
4793	str	r5, [r0, #52]
4794#else
4795	strd	r4, r5, [r0, #48]
4796#endif
4797	adds	r8, r8, r4
4798	adc	r9, r9, r5
4799#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4800	ldr	r4, [r0, #56]
4801	ldr	r5, [r0, #60]
4802#else
4803	ldrd	r4, r5, [r0, #56]
4804#endif
4805#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4806	str	r8, [r0, #16]
4807	str	r9, [r0, #20]
4808#else
4809	strd	r8, r9, [r0, #16]
4810#endif
4811	lsrs	r6, r4, #28
4812	lsrs	r7, r5, #28
4813	orr	r7, r7, r4, lsl #4
4814	orr	r6, r6, r5, lsl #4
4815	lsls	r8, r4, #30
4816	lsls	r9, r5, #30
4817	orr	r9, r9, r4, lsr #2
4818	orr	r8, r8, r5, lsr #2
4819	eor	r6, r6, r8
4820	eor	r7, r7, r9
4821	lsls	r8, r4, #25
4822	lsls	r9, r5, #25
4823	orr	r9, r9, r4, lsr #7
4824	orr	r8, r8, r5, lsr #7
4825#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4826	ldr	r4, [r0, #48]
4827	ldr	r5, [r0, #52]
4828#else
4829	ldrd	r4, r5, [r0, #48]
4830#endif
4831	eor	r6, r6, r8
4832	eor	r7, r7, r9
4833	adds	r4, r4, r6
4834	adc	r5, r5, r7
4835#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4836	ldr	r8, [r0, #56]
4837	ldr	r9, [r0, #60]
4838#else
4839	ldrd	r8, r9, [r0, #56]
4840#endif
4841#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4842	ldm	r0, {r6, r7}
4843#else
4844	ldrd	r6, r7, [r0]
4845#endif
4846#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4847	str	r4, [r0, #48]
4848	str	r5, [r0, #52]
4849#else
4850	strd	r4, r5, [r0, #48]
4851#endif
4852	eor	r8, r8, r6
4853	eor	r9, r9, r7
4854	and	r10, r10, r8
4855	and	r11, r11, r9
4856	eor	r10, r10, r6
4857	eor	r11, r11, r7
4858#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4859	ldr	r6, [r0, #48]
4860	ldr	r7, [r0, #52]
4861#else
4862	ldrd	r6, r7, [r0, #48]
4863#endif
4864	adds	r6, r6, r10
4865	adc	r7, r7, r11
4866#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4867	str	r6, [r0, #48]
4868	str	r7, [r0, #52]
4869#else
4870	strd	r6, r7, [r0, #48]
4871#endif
4872	mov	r10, r8
4873	mov	r11, r9
4874	# Round 2
4875#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4876	ldr	r4, [r0, #16]
4877	ldr	r5, [r0, #20]
4878#else
4879	ldrd	r4, r5, [r0, #16]
4880#endif
4881	lsrs	r6, r4, #14
4882	lsrs	r7, r5, #14
4883	orr	r7, r7, r4, lsl #18
4884	orr	r6, r6, r5, lsl #18
4885	lsrs	r8, r4, #18
4886	lsrs	r9, r5, #18
4887	orr	r9, r9, r4, lsl #14
4888	orr	r8, r8, r5, lsl #14
4889	eor	r6, r6, r8
4890	eor	r7, r7, r9
4891	lsls	r8, r4, #23
4892	lsls	r9, r5, #23
4893	orr	r9, r9, r4, lsr #9
4894	orr	r8, r8, r5, lsr #9
4895#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4896	ldr	r4, [r0, #40]
4897	ldr	r5, [r0, #44]
4898#else
4899	ldrd	r4, r5, [r0, #40]
4900#endif
4901	eor	r6, r6, r8
4902	eor	r7, r7, r9
4903	adds	r4, r4, r6
4904	adc	r5, r5, r7
4905#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4906	str	r4, [r0, #40]
4907	str	r5, [r0, #44]
4908#else
4909	strd	r4, r5, [r0, #40]
4910#endif
4911#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4912	ldr	r4, [r0, #16]
4913	ldr	r5, [r0, #20]
4914#else
4915	ldrd	r4, r5, [r0, #16]
4916#endif
4917#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4918	ldr	r6, [r0, #24]
4919	ldr	r7, [r0, #28]
4920#else
4921	ldrd	r6, r7, [r0, #24]
4922#endif
4923#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4924	ldr	r8, [r0, #32]
4925	ldr	r9, [r0, #36]
4926#else
4927	ldrd	r8, r9, [r0, #32]
4928#endif
4929	eor	r6, r6, r8
4930	eor	r7, r7, r9
4931	and	r6, r6, r4
4932	and	r7, r7, r5
4933	eor	r6, r6, r8
4934	eor	r7, r7, r9
4935#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4936	ldr	r4, [r0, #40]
4937	ldr	r5, [r0, #44]
4938#else
4939	ldrd	r4, r5, [r0, #40]
4940#endif
4941#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4942	ldr	r8, [sp, #16]
4943	ldr	r9, [sp, #20]
4944#else
4945	ldrd	r8, r9, [sp, #16]
4946#endif
4947	adds	r4, r4, r6
4948	adc	r5, r5, r7
4949#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4950	ldr	r6, [r3, #16]
4951	ldr	r7, [r3, #20]
4952#else
4953	ldrd	r6, r7, [r3, #16]
4954#endif
4955	adds	r4, r4, r8
4956	adc	r5, r5, r9
4957#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4958	ldr	r8, [r0, #8]
4959	ldr	r9, [r0, #12]
4960#else
4961	ldrd	r8, r9, [r0, #8]
4962#endif
4963	adds	r4, r4, r6
4964	adc	r5, r5, r7
4965#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4966	str	r4, [r0, #40]
4967	str	r5, [r0, #44]
4968#else
4969	strd	r4, r5, [r0, #40]
4970#endif
4971	adds	r8, r8, r4
4972	adc	r9, r9, r5
4973#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4974	ldr	r4, [r0, #48]
4975	ldr	r5, [r0, #52]
4976#else
4977	ldrd	r4, r5, [r0, #48]
4978#endif
4979#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
4980	str	r8, [r0, #8]
4981	str	r9, [r0, #12]
4982#else
4983	strd	r8, r9, [r0, #8]
4984#endif
4985	lsrs	r6, r4, #28
4986	lsrs	r7, r5, #28
4987	orr	r7, r7, r4, lsl #4
4988	orr	r6, r6, r5, lsl #4
4989	lsls	r8, r4, #30
4990	lsls	r9, r5, #30
4991	orr	r9, r9, r4, lsr #2
4992	orr	r8, r8, r5, lsr #2
4993	eor	r6, r6, r8
4994	eor	r7, r7, r9
4995	lsls	r8, r4, #25
4996	lsls	r9, r5, #25
4997	orr	r9, r9, r4, lsr #7
4998	orr	r8, r8, r5, lsr #7
4999#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5000	ldr	r4, [r0, #40]
5001	ldr	r5, [r0, #44]
5002#else
5003	ldrd	r4, r5, [r0, #40]
5004#endif
5005	eor	r6, r6, r8
5006	eor	r7, r7, r9
5007	adds	r4, r4, r6
5008	adc	r5, r5, r7
5009#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5010	ldr	r8, [r0, #48]
5011	ldr	r9, [r0, #52]
5012#else
5013	ldrd	r8, r9, [r0, #48]
5014#endif
5015#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5016	ldr	r6, [r0, #56]
5017	ldr	r7, [r0, #60]
5018#else
5019	ldrd	r6, r7, [r0, #56]
5020#endif
5021#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5022	str	r4, [r0, #40]
5023	str	r5, [r0, #44]
5024#else
5025	strd	r4, r5, [r0, #40]
5026#endif
5027	eor	r8, r8, r6
5028	eor	r9, r9, r7
5029	and	r10, r10, r8
5030	and	r11, r11, r9
5031	eor	r10, r10, r6
5032	eor	r11, r11, r7
5033#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5034	ldr	r6, [r0, #40]
5035	ldr	r7, [r0, #44]
5036#else
5037	ldrd	r6, r7, [r0, #40]
5038#endif
5039	adds	r6, r6, r10
5040	adc	r7, r7, r11
5041#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5042	str	r6, [r0, #40]
5043	str	r7, [r0, #44]
5044#else
5045	strd	r6, r7, [r0, #40]
5046#endif
5047	mov	r10, r8
5048	mov	r11, r9
5049	# Round 3
5050#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5051	ldr	r4, [r0, #8]
5052	ldr	r5, [r0, #12]
5053#else
5054	ldrd	r4, r5, [r0, #8]
5055#endif
5056	lsrs	r6, r4, #14
5057	lsrs	r7, r5, #14
5058	orr	r7, r7, r4, lsl #18
5059	orr	r6, r6, r5, lsl #18
5060	lsrs	r8, r4, #18
5061	lsrs	r9, r5, #18
5062	orr	r9, r9, r4, lsl #14
5063	orr	r8, r8, r5, lsl #14
5064	eor	r6, r6, r8
5065	eor	r7, r7, r9
5066	lsls	r8, r4, #23
5067	lsls	r9, r5, #23
5068	orr	r9, r9, r4, lsr #9
5069	orr	r8, r8, r5, lsr #9
5070#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5071	ldr	r4, [r0, #32]
5072	ldr	r5, [r0, #36]
5073#else
5074	ldrd	r4, r5, [r0, #32]
5075#endif
5076	eor	r6, r6, r8
5077	eor	r7, r7, r9
5078	adds	r4, r4, r6
5079	adc	r5, r5, r7
5080#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5081	str	r4, [r0, #32]
5082	str	r5, [r0, #36]
5083#else
5084	strd	r4, r5, [r0, #32]
5085#endif
5086#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5087	ldr	r4, [r0, #8]
5088	ldr	r5, [r0, #12]
5089#else
5090	ldrd	r4, r5, [r0, #8]
5091#endif
5092#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5093	ldr	r6, [r0, #16]
5094	ldr	r7, [r0, #20]
5095#else
5096	ldrd	r6, r7, [r0, #16]
5097#endif
5098#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5099	ldr	r8, [r0, #24]
5100	ldr	r9, [r0, #28]
5101#else
5102	ldrd	r8, r9, [r0, #24]
5103#endif
5104	eor	r6, r6, r8
5105	eor	r7, r7, r9
5106	and	r6, r6, r4
5107	and	r7, r7, r5
5108	eor	r6, r6, r8
5109	eor	r7, r7, r9
5110#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5111	ldr	r4, [r0, #32]
5112	ldr	r5, [r0, #36]
5113#else
5114	ldrd	r4, r5, [r0, #32]
5115#endif
5116#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5117	ldr	r8, [sp, #24]
5118	ldr	r9, [sp, #28]
5119#else
5120	ldrd	r8, r9, [sp, #24]
5121#endif
5122	adds	r4, r4, r6
5123	adc	r5, r5, r7
5124#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5125	ldr	r6, [r3, #24]
5126	ldr	r7, [r3, #28]
5127#else
5128	ldrd	r6, r7, [r3, #24]
5129#endif
5130	adds	r4, r4, r8
5131	adc	r5, r5, r9
5132#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5133	ldm	r0, {r8, r9}
5134#else
5135	ldrd	r8, r9, [r0]
5136#endif
5137	adds	r4, r4, r6
5138	adc	r5, r5, r7
5139#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5140	str	r4, [r0, #32]
5141	str	r5, [r0, #36]
5142#else
5143	strd	r4, r5, [r0, #32]
5144#endif
5145	adds	r8, r8, r4
5146	adc	r9, r9, r5
5147#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5148	ldr	r4, [r0, #40]
5149	ldr	r5, [r0, #44]
5150#else
5151	ldrd	r4, r5, [r0, #40]
5152#endif
5153#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5154	stm	r0, {r8, r9}
5155#else
5156	strd	r8, r9, [r0]
5157#endif
5158	lsrs	r6, r4, #28
5159	lsrs	r7, r5, #28
5160	orr	r7, r7, r4, lsl #4
5161	orr	r6, r6, r5, lsl #4
5162	lsls	r8, r4, #30
5163	lsls	r9, r5, #30
5164	orr	r9, r9, r4, lsr #2
5165	orr	r8, r8, r5, lsr #2
5166	eor	r6, r6, r8
5167	eor	r7, r7, r9
5168	lsls	r8, r4, #25
5169	lsls	r9, r5, #25
5170	orr	r9, r9, r4, lsr #7
5171	orr	r8, r8, r5, lsr #7
5172#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5173	ldr	r4, [r0, #32]
5174	ldr	r5, [r0, #36]
5175#else
5176	ldrd	r4, r5, [r0, #32]
5177#endif
5178	eor	r6, r6, r8
5179	eor	r7, r7, r9
5180	adds	r4, r4, r6
5181	adc	r5, r5, r7
5182#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5183	ldr	r8, [r0, #40]
5184	ldr	r9, [r0, #44]
5185#else
5186	ldrd	r8, r9, [r0, #40]
5187#endif
5188#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5189	ldr	r6, [r0, #48]
5190	ldr	r7, [r0, #52]
5191#else
5192	ldrd	r6, r7, [r0, #48]
5193#endif
5194#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5195	str	r4, [r0, #32]
5196	str	r5, [r0, #36]
5197#else
5198	strd	r4, r5, [r0, #32]
5199#endif
5200	eor	r8, r8, r6
5201	eor	r9, r9, r7
5202	and	r10, r10, r8
5203	and	r11, r11, r9
5204	eor	r10, r10, r6
5205	eor	r11, r11, r7
5206#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5207	ldr	r6, [r0, #32]
5208	ldr	r7, [r0, #36]
5209#else
5210	ldrd	r6, r7, [r0, #32]
5211#endif
5212	adds	r6, r6, r10
5213	adc	r7, r7, r11
5214#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5215	str	r6, [r0, #32]
5216	str	r7, [r0, #36]
5217#else
5218	strd	r6, r7, [r0, #32]
5219#endif
5220	mov	r10, r8
5221	mov	r11, r9
5222	# Round 4
5223#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5224	ldm	r0, {r4, r5}
5225#else
5226	ldrd	r4, r5, [r0]
5227#endif
5228	lsrs	r6, r4, #14
5229	lsrs	r7, r5, #14
5230	orr	r7, r7, r4, lsl #18
5231	orr	r6, r6, r5, lsl #18
5232	lsrs	r8, r4, #18
5233	lsrs	r9, r5, #18
5234	orr	r9, r9, r4, lsl #14
5235	orr	r8, r8, r5, lsl #14
5236	eor	r6, r6, r8
5237	eor	r7, r7, r9
5238	lsls	r8, r4, #23
5239	lsls	r9, r5, #23
5240	orr	r9, r9, r4, lsr #9
5241	orr	r8, r8, r5, lsr #9
5242#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5243	ldr	r4, [r0, #24]
5244	ldr	r5, [r0, #28]
5245#else
5246	ldrd	r4, r5, [r0, #24]
5247#endif
5248	eor	r6, r6, r8
5249	eor	r7, r7, r9
5250	adds	r4, r4, r6
5251	adc	r5, r5, r7
5252#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5253	str	r4, [r0, #24]
5254	str	r5, [r0, #28]
5255#else
5256	strd	r4, r5, [r0, #24]
5257#endif
5258#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5259	ldm	r0, {r4, r5}
5260#else
5261	ldrd	r4, r5, [r0]
5262#endif
5263#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5264	ldr	r6, [r0, #8]
5265	ldr	r7, [r0, #12]
5266#else
5267	ldrd	r6, r7, [r0, #8]
5268#endif
5269#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5270	ldr	r8, [r0, #16]
5271	ldr	r9, [r0, #20]
5272#else
5273	ldrd	r8, r9, [r0, #16]
5274#endif
5275	eor	r6, r6, r8
5276	eor	r7, r7, r9
5277	and	r6, r6, r4
5278	and	r7, r7, r5
5279	eor	r6, r6, r8
5280	eor	r7, r7, r9
5281#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5282	ldr	r4, [r0, #24]
5283	ldr	r5, [r0, #28]
5284#else
5285	ldrd	r4, r5, [r0, #24]
5286#endif
5287#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5288	ldr	r8, [sp, #32]
5289	ldr	r9, [sp, #36]
5290#else
5291	ldrd	r8, r9, [sp, #32]
5292#endif
5293	adds	r4, r4, r6
5294	adc	r5, r5, r7
5295#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5296	ldr	r6, [r3, #32]
5297	ldr	r7, [r3, #36]
5298#else
5299	ldrd	r6, r7, [r3, #32]
5300#endif
5301	adds	r4, r4, r8
5302	adc	r5, r5, r9
5303#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5304	ldr	r8, [r0, #56]
5305	ldr	r9, [r0, #60]
5306#else
5307	ldrd	r8, r9, [r0, #56]
5308#endif
5309	adds	r4, r4, r6
5310	adc	r5, r5, r7
5311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5312	str	r4, [r0, #24]
5313	str	r5, [r0, #28]
5314#else
5315	strd	r4, r5, [r0, #24]
5316#endif
5317	adds	r8, r8, r4
5318	adc	r9, r9, r5
5319#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5320	ldr	r4, [r0, #32]
5321	ldr	r5, [r0, #36]
5322#else
5323	ldrd	r4, r5, [r0, #32]
5324#endif
5325#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5326	str	r8, [r0, #56]
5327	str	r9, [r0, #60]
5328#else
5329	strd	r8, r9, [r0, #56]
5330#endif
5331	lsrs	r6, r4, #28
5332	lsrs	r7, r5, #28
5333	orr	r7, r7, r4, lsl #4
5334	orr	r6, r6, r5, lsl #4
5335	lsls	r8, r4, #30
5336	lsls	r9, r5, #30
5337	orr	r9, r9, r4, lsr #2
5338	orr	r8, r8, r5, lsr #2
5339	eor	r6, r6, r8
5340	eor	r7, r7, r9
5341	lsls	r8, r4, #25
5342	lsls	r9, r5, #25
5343	orr	r9, r9, r4, lsr #7
5344	orr	r8, r8, r5, lsr #7
5345#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5346	ldr	r4, [r0, #24]
5347	ldr	r5, [r0, #28]
5348#else
5349	ldrd	r4, r5, [r0, #24]
5350#endif
5351	eor	r6, r6, r8
5352	eor	r7, r7, r9
5353	adds	r4, r4, r6
5354	adc	r5, r5, r7
5355#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5356	ldr	r8, [r0, #32]
5357	ldr	r9, [r0, #36]
5358#else
5359	ldrd	r8, r9, [r0, #32]
5360#endif
5361#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5362	ldr	r6, [r0, #40]
5363	ldr	r7, [r0, #44]
5364#else
5365	ldrd	r6, r7, [r0, #40]
5366#endif
5367#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5368	str	r4, [r0, #24]
5369	str	r5, [r0, #28]
5370#else
5371	strd	r4, r5, [r0, #24]
5372#endif
5373	eor	r8, r8, r6
5374	eor	r9, r9, r7
5375	and	r10, r10, r8
5376	and	r11, r11, r9
5377	eor	r10, r10, r6
5378	eor	r11, r11, r7
5379#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5380	ldr	r6, [r0, #24]
5381	ldr	r7, [r0, #28]
5382#else
5383	ldrd	r6, r7, [r0, #24]
5384#endif
5385	adds	r6, r6, r10
5386	adc	r7, r7, r11
5387#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5388	str	r6, [r0, #24]
5389	str	r7, [r0, #28]
5390#else
5391	strd	r6, r7, [r0, #24]
5392#endif
5393	mov	r10, r8
5394	mov	r11, r9
5395	# Round 5
5396#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5397	ldr	r4, [r0, #56]
5398	ldr	r5, [r0, #60]
5399#else
5400	ldrd	r4, r5, [r0, #56]
5401#endif
5402	lsrs	r6, r4, #14
5403	lsrs	r7, r5, #14
5404	orr	r7, r7, r4, lsl #18
5405	orr	r6, r6, r5, lsl #18
5406	lsrs	r8, r4, #18
5407	lsrs	r9, r5, #18
5408	orr	r9, r9, r4, lsl #14
5409	orr	r8, r8, r5, lsl #14
5410	eor	r6, r6, r8
5411	eor	r7, r7, r9
5412	lsls	r8, r4, #23
5413	lsls	r9, r5, #23
5414	orr	r9, r9, r4, lsr #9
5415	orr	r8, r8, r5, lsr #9
5416#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5417	ldr	r4, [r0, #16]
5418	ldr	r5, [r0, #20]
5419#else
5420	ldrd	r4, r5, [r0, #16]
5421#endif
5422	eor	r6, r6, r8
5423	eor	r7, r7, r9
5424	adds	r4, r4, r6
5425	adc	r5, r5, r7
5426#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5427	str	r4, [r0, #16]
5428	str	r5, [r0, #20]
5429#else
5430	strd	r4, r5, [r0, #16]
5431#endif
5432#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5433	ldr	r4, [r0, #56]
5434	ldr	r5, [r0, #60]
5435#else
5436	ldrd	r4, r5, [r0, #56]
5437#endif
5438#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5439	ldm	r0, {r6, r7}
5440#else
5441	ldrd	r6, r7, [r0]
5442#endif
5443#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5444	ldr	r8, [r0, #8]
5445	ldr	r9, [r0, #12]
5446#else
5447	ldrd	r8, r9, [r0, #8]
5448#endif
5449	eor	r6, r6, r8
5450	eor	r7, r7, r9
5451	and	r6, r6, r4
5452	and	r7, r7, r5
5453	eor	r6, r6, r8
5454	eor	r7, r7, r9
5455#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5456	ldr	r4, [r0, #16]
5457	ldr	r5, [r0, #20]
5458#else
5459	ldrd	r4, r5, [r0, #16]
5460#endif
5461#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5462	ldr	r8, [sp, #40]
5463	ldr	r9, [sp, #44]
5464#else
5465	ldrd	r8, r9, [sp, #40]
5466#endif
5467	adds	r4, r4, r6
5468	adc	r5, r5, r7
5469#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5470	ldr	r6, [r3, #40]
5471	ldr	r7, [r3, #44]
5472#else
5473	ldrd	r6, r7, [r3, #40]
5474#endif
5475	adds	r4, r4, r8
5476	adc	r5, r5, r9
5477#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5478	ldr	r8, [r0, #48]
5479	ldr	r9, [r0, #52]
5480#else
5481	ldrd	r8, r9, [r0, #48]
5482#endif
5483	adds	r4, r4, r6
5484	adc	r5, r5, r7
5485#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5486	str	r4, [r0, #16]
5487	str	r5, [r0, #20]
5488#else
5489	strd	r4, r5, [r0, #16]
5490#endif
5491	adds	r8, r8, r4
5492	adc	r9, r9, r5
5493#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5494	ldr	r4, [r0, #24]
5495	ldr	r5, [r0, #28]
5496#else
5497	ldrd	r4, r5, [r0, #24]
5498#endif
5499#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5500	str	r8, [r0, #48]
5501	str	r9, [r0, #52]
5502#else
5503	strd	r8, r9, [r0, #48]
5504#endif
5505	lsrs	r6, r4, #28
5506	lsrs	r7, r5, #28
5507	orr	r7, r7, r4, lsl #4
5508	orr	r6, r6, r5, lsl #4
5509	lsls	r8, r4, #30
5510	lsls	r9, r5, #30
5511	orr	r9, r9, r4, lsr #2
5512	orr	r8, r8, r5, lsr #2
5513	eor	r6, r6, r8
5514	eor	r7, r7, r9
5515	lsls	r8, r4, #25
5516	lsls	r9, r5, #25
5517	orr	r9, r9, r4, lsr #7
5518	orr	r8, r8, r5, lsr #7
5519#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5520	ldr	r4, [r0, #16]
5521	ldr	r5, [r0, #20]
5522#else
5523	ldrd	r4, r5, [r0, #16]
5524#endif
5525	eor	r6, r6, r8
5526	eor	r7, r7, r9
5527	adds	r4, r4, r6
5528	adc	r5, r5, r7
5529#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5530	ldr	r8, [r0, #24]
5531	ldr	r9, [r0, #28]
5532#else
5533	ldrd	r8, r9, [r0, #24]
5534#endif
5535#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5536	ldr	r6, [r0, #32]
5537	ldr	r7, [r0, #36]
5538#else
5539	ldrd	r6, r7, [r0, #32]
5540#endif
5541#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5542	str	r4, [r0, #16]
5543	str	r5, [r0, #20]
5544#else
5545	strd	r4, r5, [r0, #16]
5546#endif
5547	eor	r8, r8, r6
5548	eor	r9, r9, r7
5549	and	r10, r10, r8
5550	and	r11, r11, r9
5551	eor	r10, r10, r6
5552	eor	r11, r11, r7
5553#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5554	ldr	r6, [r0, #16]
5555	ldr	r7, [r0, #20]
5556#else
5557	ldrd	r6, r7, [r0, #16]
5558#endif
5559	adds	r6, r6, r10
5560	adc	r7, r7, r11
5561#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5562	str	r6, [r0, #16]
5563	str	r7, [r0, #20]
5564#else
5565	strd	r6, r7, [r0, #16]
5566#endif
5567	mov	r10, r8
5568	mov	r11, r9
5569	# Round 6
5570#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5571	ldr	r4, [r0, #48]
5572	ldr	r5, [r0, #52]
5573#else
5574	ldrd	r4, r5, [r0, #48]
5575#endif
5576	lsrs	r6, r4, #14
5577	lsrs	r7, r5, #14
5578	orr	r7, r7, r4, lsl #18
5579	orr	r6, r6, r5, lsl #18
5580	lsrs	r8, r4, #18
5581	lsrs	r9, r5, #18
5582	orr	r9, r9, r4, lsl #14
5583	orr	r8, r8, r5, lsl #14
5584	eor	r6, r6, r8
5585	eor	r7, r7, r9
5586	lsls	r8, r4, #23
5587	lsls	r9, r5, #23
5588	orr	r9, r9, r4, lsr #9
5589	orr	r8, r8, r5, lsr #9
5590#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5591	ldr	r4, [r0, #8]
5592	ldr	r5, [r0, #12]
5593#else
5594	ldrd	r4, r5, [r0, #8]
5595#endif
5596	eor	r6, r6, r8
5597	eor	r7, r7, r9
5598	adds	r4, r4, r6
5599	adc	r5, r5, r7
5600#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5601	str	r4, [r0, #8]
5602	str	r5, [r0, #12]
5603#else
5604	strd	r4, r5, [r0, #8]
5605#endif
5606#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5607	ldr	r4, [r0, #48]
5608	ldr	r5, [r0, #52]
5609#else
5610	ldrd	r4, r5, [r0, #48]
5611#endif
5612#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5613	ldr	r6, [r0, #56]
5614	ldr	r7, [r0, #60]
5615#else
5616	ldrd	r6, r7, [r0, #56]
5617#endif
5618#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5619	ldm	r0, {r8, r9}
5620#else
5621	ldrd	r8, r9, [r0]
5622#endif
5623	eor	r6, r6, r8
5624	eor	r7, r7, r9
5625	and	r6, r6, r4
5626	and	r7, r7, r5
5627	eor	r6, r6, r8
5628	eor	r7, r7, r9
5629#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5630	ldr	r4, [r0, #8]
5631	ldr	r5, [r0, #12]
5632#else
5633	ldrd	r4, r5, [r0, #8]
5634#endif
5635#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5636	ldr	r8, [sp, #48]
5637	ldr	r9, [sp, #52]
5638#else
5639	ldrd	r8, r9, [sp, #48]
5640#endif
5641	adds	r4, r4, r6
5642	adc	r5, r5, r7
5643#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5644	ldr	r6, [r3, #48]
5645	ldr	r7, [r3, #52]
5646#else
5647	ldrd	r6, r7, [r3, #48]
5648#endif
5649	adds	r4, r4, r8
5650	adc	r5, r5, r9
5651#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5652	ldr	r8, [r0, #40]
5653	ldr	r9, [r0, #44]
5654#else
5655	ldrd	r8, r9, [r0, #40]
5656#endif
5657	adds	r4, r4, r6
5658	adc	r5, r5, r7
5659#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5660	str	r4, [r0, #8]
5661	str	r5, [r0, #12]
5662#else
5663	strd	r4, r5, [r0, #8]
5664#endif
5665	adds	r8, r8, r4
5666	adc	r9, r9, r5
5667#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5668	ldr	r4, [r0, #16]
5669	ldr	r5, [r0, #20]
5670#else
5671	ldrd	r4, r5, [r0, #16]
5672#endif
5673#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5674	str	r8, [r0, #40]
5675	str	r9, [r0, #44]
5676#else
5677	strd	r8, r9, [r0, #40]
5678#endif
5679	lsrs	r6, r4, #28
5680	lsrs	r7, r5, #28
5681	orr	r7, r7, r4, lsl #4
5682	orr	r6, r6, r5, lsl #4
5683	lsls	r8, r4, #30
5684	lsls	r9, r5, #30
5685	orr	r9, r9, r4, lsr #2
5686	orr	r8, r8, r5, lsr #2
5687	eor	r6, r6, r8
5688	eor	r7, r7, r9
5689	lsls	r8, r4, #25
5690	lsls	r9, r5, #25
5691	orr	r9, r9, r4, lsr #7
5692	orr	r8, r8, r5, lsr #7
5693#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5694	ldr	r4, [r0, #8]
5695	ldr	r5, [r0, #12]
5696#else
5697	ldrd	r4, r5, [r0, #8]
5698#endif
5699	eor	r6, r6, r8
5700	eor	r7, r7, r9
5701	adds	r4, r4, r6
5702	adc	r5, r5, r7
5703#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5704	ldr	r8, [r0, #16]
5705	ldr	r9, [r0, #20]
5706#else
5707	ldrd	r8, r9, [r0, #16]
5708#endif
5709#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5710	ldr	r6, [r0, #24]
5711	ldr	r7, [r0, #28]
5712#else
5713	ldrd	r6, r7, [r0, #24]
5714#endif
5715#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5716	str	r4, [r0, #8]
5717	str	r5, [r0, #12]
5718#else
5719	strd	r4, r5, [r0, #8]
5720#endif
5721	eor	r8, r8, r6
5722	eor	r9, r9, r7
5723	and	r10, r10, r8
5724	and	r11, r11, r9
5725	eor	r10, r10, r6
5726	eor	r11, r11, r7
5727#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5728	ldr	r6, [r0, #8]
5729	ldr	r7, [r0, #12]
5730#else
5731	ldrd	r6, r7, [r0, #8]
5732#endif
5733	adds	r6, r6, r10
5734	adc	r7, r7, r11
5735#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5736	str	r6, [r0, #8]
5737	str	r7, [r0, #12]
5738#else
5739	strd	r6, r7, [r0, #8]
5740#endif
5741	mov	r10, r8
5742	mov	r11, r9
5743	# Round 7
5744#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5745	ldr	r4, [r0, #40]
5746	ldr	r5, [r0, #44]
5747#else
5748	ldrd	r4, r5, [r0, #40]
5749#endif
5750	lsrs	r6, r4, #14
5751	lsrs	r7, r5, #14
5752	orr	r7, r7, r4, lsl #18
5753	orr	r6, r6, r5, lsl #18
5754	lsrs	r8, r4, #18
5755	lsrs	r9, r5, #18
5756	orr	r9, r9, r4, lsl #14
5757	orr	r8, r8, r5, lsl #14
5758	eor	r6, r6, r8
5759	eor	r7, r7, r9
5760	lsls	r8, r4, #23
5761	lsls	r9, r5, #23
5762	orr	r9, r9, r4, lsr #9
5763	orr	r8, r8, r5, lsr #9
5764#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5765	ldm	r0, {r4, r5}
5766#else
5767	ldrd	r4, r5, [r0]
5768#endif
5769	eor	r6, r6, r8
5770	eor	r7, r7, r9
5771	adds	r4, r4, r6
5772	adc	r5, r5, r7
5773#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5774	stm	r0, {r4, r5}
5775#else
5776	strd	r4, r5, [r0]
5777#endif
5778#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5779	ldr	r4, [r0, #40]
5780	ldr	r5, [r0, #44]
5781#else
5782	ldrd	r4, r5, [r0, #40]
5783#endif
5784#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5785	ldr	r6, [r0, #48]
5786	ldr	r7, [r0, #52]
5787#else
5788	ldrd	r6, r7, [r0, #48]
5789#endif
5790#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5791	ldr	r8, [r0, #56]
5792	ldr	r9, [r0, #60]
5793#else
5794	ldrd	r8, r9, [r0, #56]
5795#endif
5796	eor	r6, r6, r8
5797	eor	r7, r7, r9
5798	and	r6, r6, r4
5799	and	r7, r7, r5
5800	eor	r6, r6, r8
5801	eor	r7, r7, r9
5802#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5803	ldm	r0, {r4, r5}
5804#else
5805	ldrd	r4, r5, [r0]
5806#endif
5807#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5808	ldr	r8, [sp, #56]
5809	ldr	r9, [sp, #60]
5810#else
5811	ldrd	r8, r9, [sp, #56]
5812#endif
5813	adds	r4, r4, r6
5814	adc	r5, r5, r7
5815#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5816	ldr	r6, [r3, #56]
5817	ldr	r7, [r3, #60]
5818#else
5819	ldrd	r6, r7, [r3, #56]
5820#endif
5821	adds	r4, r4, r8
5822	adc	r5, r5, r9
5823#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5824	ldr	r8, [r0, #32]
5825	ldr	r9, [r0, #36]
5826#else
5827	ldrd	r8, r9, [r0, #32]
5828#endif
5829	adds	r4, r4, r6
5830	adc	r5, r5, r7
5831#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5832	stm	r0, {r4, r5}
5833#else
5834	strd	r4, r5, [r0]
5835#endif
5836	adds	r8, r8, r4
5837	adc	r9, r9, r5
5838#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5839	ldr	r4, [r0, #8]
5840	ldr	r5, [r0, #12]
5841#else
5842	ldrd	r4, r5, [r0, #8]
5843#endif
5844#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5845	str	r8, [r0, #32]
5846	str	r9, [r0, #36]
5847#else
5848	strd	r8, r9, [r0, #32]
5849#endif
5850	lsrs	r6, r4, #28
5851	lsrs	r7, r5, #28
5852	orr	r7, r7, r4, lsl #4
5853	orr	r6, r6, r5, lsl #4
5854	lsls	r8, r4, #30
5855	lsls	r9, r5, #30
5856	orr	r9, r9, r4, lsr #2
5857	orr	r8, r8, r5, lsr #2
5858	eor	r6, r6, r8
5859	eor	r7, r7, r9
5860	lsls	r8, r4, #25
5861	lsls	r9, r5, #25
5862	orr	r9, r9, r4, lsr #7
5863	orr	r8, r8, r5, lsr #7
5864#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5865	ldm	r0, {r4, r5}
5866#else
5867	ldrd	r4, r5, [r0]
5868#endif
5869	eor	r6, r6, r8
5870	eor	r7, r7, r9
5871	adds	r4, r4, r6
5872	adc	r5, r5, r7
5873#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5874	ldr	r8, [r0, #8]
5875	ldr	r9, [r0, #12]
5876#else
5877	ldrd	r8, r9, [r0, #8]
5878#endif
5879#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5880	ldr	r6, [r0, #16]
5881	ldr	r7, [r0, #20]
5882#else
5883	ldrd	r6, r7, [r0, #16]
5884#endif
5885#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5886	stm	r0, {r4, r5}
5887#else
5888	strd	r4, r5, [r0]
5889#endif
5890	eor	r8, r8, r6
5891	eor	r9, r9, r7
5892	and	r10, r10, r8
5893	and	r11, r11, r9
5894	eor	r10, r10, r6
5895	eor	r11, r11, r7
5896#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5897	ldm	r0, {r6, r7}
5898#else
5899	ldrd	r6, r7, [r0]
5900#endif
5901	adds	r6, r6, r10
5902	adc	r7, r7, r11
5903#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5904	stm	r0, {r6, r7}
5905#else
5906	strd	r6, r7, [r0]
5907#endif
5908	mov	r10, r8
5909	mov	r11, r9
5910	# Round 8
5911#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5912	ldr	r4, [r0, #32]
5913	ldr	r5, [r0, #36]
5914#else
5915	ldrd	r4, r5, [r0, #32]
5916#endif
5917	lsrs	r6, r4, #14
5918	lsrs	r7, r5, #14
5919	orr	r7, r7, r4, lsl #18
5920	orr	r6, r6, r5, lsl #18
5921	lsrs	r8, r4, #18
5922	lsrs	r9, r5, #18
5923	orr	r9, r9, r4, lsl #14
5924	orr	r8, r8, r5, lsl #14
5925	eor	r6, r6, r8
5926	eor	r7, r7, r9
5927	lsls	r8, r4, #23
5928	lsls	r9, r5, #23
5929	orr	r9, r9, r4, lsr #9
5930	orr	r8, r8, r5, lsr #9
5931#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5932	ldr	r4, [r0, #56]
5933	ldr	r5, [r0, #60]
5934#else
5935	ldrd	r4, r5, [r0, #56]
5936#endif
5937	eor	r6, r6, r8
5938	eor	r7, r7, r9
5939	adds	r4, r4, r6
5940	adc	r5, r5, r7
5941#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5942	str	r4, [r0, #56]
5943	str	r5, [r0, #60]
5944#else
5945	strd	r4, r5, [r0, #56]
5946#endif
5947#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5948	ldr	r4, [r0, #32]
5949	ldr	r5, [r0, #36]
5950#else
5951	ldrd	r4, r5, [r0, #32]
5952#endif
5953#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5954	ldr	r6, [r0, #40]
5955	ldr	r7, [r0, #44]
5956#else
5957	ldrd	r6, r7, [r0, #40]
5958#endif
5959#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5960	ldr	r8, [r0, #48]
5961	ldr	r9, [r0, #52]
5962#else
5963	ldrd	r8, r9, [r0, #48]
5964#endif
5965	eor	r6, r6, r8
5966	eor	r7, r7, r9
5967	and	r6, r6, r4
5968	and	r7, r7, r5
5969	eor	r6, r6, r8
5970	eor	r7, r7, r9
5971#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5972	ldr	r4, [r0, #56]
5973	ldr	r5, [r0, #60]
5974#else
5975	ldrd	r4, r5, [r0, #56]
5976#endif
5977#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5978	ldr	r8, [sp, #64]
5979	ldr	r9, [sp, #68]
5980#else
5981	ldrd	r8, r9, [sp, #64]
5982#endif
5983	adds	r4, r4, r6
5984	adc	r5, r5, r7
5985#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5986	ldr	r6, [r3, #64]
5987	ldr	r7, [r3, #68]
5988#else
5989	ldrd	r6, r7, [r3, #64]
5990#endif
5991	adds	r4, r4, r8
5992	adc	r5, r5, r9
5993#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
5994	ldr	r8, [r0, #24]
5995	ldr	r9, [r0, #28]
5996#else
5997	ldrd	r8, r9, [r0, #24]
5998#endif
5999	adds	r4, r4, r6
6000	adc	r5, r5, r7
6001#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6002	str	r4, [r0, #56]
6003	str	r5, [r0, #60]
6004#else
6005	strd	r4, r5, [r0, #56]
6006#endif
6007	adds	r8, r8, r4
6008	adc	r9, r9, r5
6009#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6010	ldm	r0, {r4, r5}
6011#else
6012	ldrd	r4, r5, [r0]
6013#endif
6014#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6015	str	r8, [r0, #24]
6016	str	r9, [r0, #28]
6017#else
6018	strd	r8, r9, [r0, #24]
6019#endif
6020	lsrs	r6, r4, #28
6021	lsrs	r7, r5, #28
6022	orr	r7, r7, r4, lsl #4
6023	orr	r6, r6, r5, lsl #4
6024	lsls	r8, r4, #30
6025	lsls	r9, r5, #30
6026	orr	r9, r9, r4, lsr #2
6027	orr	r8, r8, r5, lsr #2
6028	eor	r6, r6, r8
6029	eor	r7, r7, r9
6030	lsls	r8, r4, #25
6031	lsls	r9, r5, #25
6032	orr	r9, r9, r4, lsr #7
6033	orr	r8, r8, r5, lsr #7
6034#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6035	ldr	r4, [r0, #56]
6036	ldr	r5, [r0, #60]
6037#else
6038	ldrd	r4, r5, [r0, #56]
6039#endif
6040	eor	r6, r6, r8
6041	eor	r7, r7, r9
6042	adds	r4, r4, r6
6043	adc	r5, r5, r7
6044#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6045	ldm	r0, {r8, r9}
6046#else
6047	ldrd	r8, r9, [r0]
6048#endif
6049#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6050	ldr	r6, [r0, #8]
6051	ldr	r7, [r0, #12]
6052#else
6053	ldrd	r6, r7, [r0, #8]
6054#endif
6055#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6056	str	r4, [r0, #56]
6057	str	r5, [r0, #60]
6058#else
6059	strd	r4, r5, [r0, #56]
6060#endif
6061	eor	r8, r8, r6
6062	eor	r9, r9, r7
6063	and	r10, r10, r8
6064	and	r11, r11, r9
6065	eor	r10, r10, r6
6066	eor	r11, r11, r7
6067#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6068	ldr	r6, [r0, #56]
6069	ldr	r7, [r0, #60]
6070#else
6071	ldrd	r6, r7, [r0, #56]
6072#endif
6073	adds	r6, r6, r10
6074	adc	r7, r7, r11
6075#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6076	str	r6, [r0, #56]
6077	str	r7, [r0, #60]
6078#else
6079	strd	r6, r7, [r0, #56]
6080#endif
6081	mov	r10, r8
6082	mov	r11, r9
6083	# Round 9
6084#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6085	ldr	r4, [r0, #24]
6086	ldr	r5, [r0, #28]
6087#else
6088	ldrd	r4, r5, [r0, #24]
6089#endif
6090	lsrs	r6, r4, #14
6091	lsrs	r7, r5, #14
6092	orr	r7, r7, r4, lsl #18
6093	orr	r6, r6, r5, lsl #18
6094	lsrs	r8, r4, #18
6095	lsrs	r9, r5, #18
6096	orr	r9, r9, r4, lsl #14
6097	orr	r8, r8, r5, lsl #14
6098	eor	r6, r6, r8
6099	eor	r7, r7, r9
6100	lsls	r8, r4, #23
6101	lsls	r9, r5, #23
6102	orr	r9, r9, r4, lsr #9
6103	orr	r8, r8, r5, lsr #9
6104#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6105	ldr	r4, [r0, #48]
6106	ldr	r5, [r0, #52]
6107#else
6108	ldrd	r4, r5, [r0, #48]
6109#endif
6110	eor	r6, r6, r8
6111	eor	r7, r7, r9
6112	adds	r4, r4, r6
6113	adc	r5, r5, r7
6114#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6115	str	r4, [r0, #48]
6116	str	r5, [r0, #52]
6117#else
6118	strd	r4, r5, [r0, #48]
6119#endif
6120#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6121	ldr	r4, [r0, #24]
6122	ldr	r5, [r0, #28]
6123#else
6124	ldrd	r4, r5, [r0, #24]
6125#endif
6126#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6127	ldr	r6, [r0, #32]
6128	ldr	r7, [r0, #36]
6129#else
6130	ldrd	r6, r7, [r0, #32]
6131#endif
6132#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6133	ldr	r8, [r0, #40]
6134	ldr	r9, [r0, #44]
6135#else
6136	ldrd	r8, r9, [r0, #40]
6137#endif
6138	eor	r6, r6, r8
6139	eor	r7, r7, r9
6140	and	r6, r6, r4
6141	and	r7, r7, r5
6142	eor	r6, r6, r8
6143	eor	r7, r7, r9
6144#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6145	ldr	r4, [r0, #48]
6146	ldr	r5, [r0, #52]
6147#else
6148	ldrd	r4, r5, [r0, #48]
6149#endif
6150#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6151	ldr	r8, [sp, #72]
6152	ldr	r9, [sp, #76]
6153#else
6154	ldrd	r8, r9, [sp, #72]
6155#endif
6156	adds	r4, r4, r6
6157	adc	r5, r5, r7
6158#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6159	ldr	r6, [r3, #72]
6160	ldr	r7, [r3, #76]
6161#else
6162	ldrd	r6, r7, [r3, #72]
6163#endif
6164	adds	r4, r4, r8
6165	adc	r5, r5, r9
6166#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6167	ldr	r8, [r0, #16]
6168	ldr	r9, [r0, #20]
6169#else
6170	ldrd	r8, r9, [r0, #16]
6171#endif
6172	adds	r4, r4, r6
6173	adc	r5, r5, r7
6174#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6175	str	r4, [r0, #48]
6176	str	r5, [r0, #52]
6177#else
6178	strd	r4, r5, [r0, #48]
6179#endif
6180	adds	r8, r8, r4
6181	adc	r9, r9, r5
6182#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6183	ldr	r4, [r0, #56]
6184	ldr	r5, [r0, #60]
6185#else
6186	ldrd	r4, r5, [r0, #56]
6187#endif
6188#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6189	str	r8, [r0, #16]
6190	str	r9, [r0, #20]
6191#else
6192	strd	r8, r9, [r0, #16]
6193#endif
6194	lsrs	r6, r4, #28
6195	lsrs	r7, r5, #28
6196	orr	r7, r7, r4, lsl #4
6197	orr	r6, r6, r5, lsl #4
6198	lsls	r8, r4, #30
6199	lsls	r9, r5, #30
6200	orr	r9, r9, r4, lsr #2
6201	orr	r8, r8, r5, lsr #2
6202	eor	r6, r6, r8
6203	eor	r7, r7, r9
6204	lsls	r8, r4, #25
6205	lsls	r9, r5, #25
6206	orr	r9, r9, r4, lsr #7
6207	orr	r8, r8, r5, lsr #7
6208#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6209	ldr	r4, [r0, #48]
6210	ldr	r5, [r0, #52]
6211#else
6212	ldrd	r4, r5, [r0, #48]
6213#endif
6214	eor	r6, r6, r8
6215	eor	r7, r7, r9
6216	adds	r4, r4, r6
6217	adc	r5, r5, r7
6218#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6219	ldr	r8, [r0, #56]
6220	ldr	r9, [r0, #60]
6221#else
6222	ldrd	r8, r9, [r0, #56]
6223#endif
6224#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6225	ldm	r0, {r6, r7}
6226#else
6227	ldrd	r6, r7, [r0]
6228#endif
6229#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6230	str	r4, [r0, #48]
6231	str	r5, [r0, #52]
6232#else
6233	strd	r4, r5, [r0, #48]
6234#endif
6235	eor	r8, r8, r6
6236	eor	r9, r9, r7
6237	and	r10, r10, r8
6238	and	r11, r11, r9
6239	eor	r10, r10, r6
6240	eor	r11, r11, r7
6241#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6242	ldr	r6, [r0, #48]
6243	ldr	r7, [r0, #52]
6244#else
6245	ldrd	r6, r7, [r0, #48]
6246#endif
6247	adds	r6, r6, r10
6248	adc	r7, r7, r11
6249#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6250	str	r6, [r0, #48]
6251	str	r7, [r0, #52]
6252#else
6253	strd	r6, r7, [r0, #48]
6254#endif
6255	mov	r10, r8
6256	mov	r11, r9
6257	# Round 10
6258#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6259	ldr	r4, [r0, #16]
6260	ldr	r5, [r0, #20]
6261#else
6262	ldrd	r4, r5, [r0, #16]
6263#endif
6264	lsrs	r6, r4, #14
6265	lsrs	r7, r5, #14
6266	orr	r7, r7, r4, lsl #18
6267	orr	r6, r6, r5, lsl #18
6268	lsrs	r8, r4, #18
6269	lsrs	r9, r5, #18
6270	orr	r9, r9, r4, lsl #14
6271	orr	r8, r8, r5, lsl #14
6272	eor	r6, r6, r8
6273	eor	r7, r7, r9
6274	lsls	r8, r4, #23
6275	lsls	r9, r5, #23
6276	orr	r9, r9, r4, lsr #9
6277	orr	r8, r8, r5, lsr #9
6278#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6279	ldr	r4, [r0, #40]
6280	ldr	r5, [r0, #44]
6281#else
6282	ldrd	r4, r5, [r0, #40]
6283#endif
6284	eor	r6, r6, r8
6285	eor	r7, r7, r9
6286	adds	r4, r4, r6
6287	adc	r5, r5, r7
6288#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6289	str	r4, [r0, #40]
6290	str	r5, [r0, #44]
6291#else
6292	strd	r4, r5, [r0, #40]
6293#endif
6294#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6295	ldr	r4, [r0, #16]
6296	ldr	r5, [r0, #20]
6297#else
6298	ldrd	r4, r5, [r0, #16]
6299#endif
6300#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6301	ldr	r6, [r0, #24]
6302	ldr	r7, [r0, #28]
6303#else
6304	ldrd	r6, r7, [r0, #24]
6305#endif
6306#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6307	ldr	r8, [r0, #32]
6308	ldr	r9, [r0, #36]
6309#else
6310	ldrd	r8, r9, [r0, #32]
6311#endif
6312	eor	r6, r6, r8
6313	eor	r7, r7, r9
6314	and	r6, r6, r4
6315	and	r7, r7, r5
6316	eor	r6, r6, r8
6317	eor	r7, r7, r9
6318#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6319	ldr	r4, [r0, #40]
6320	ldr	r5, [r0, #44]
6321#else
6322	ldrd	r4, r5, [r0, #40]
6323#endif
6324#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6325	ldr	r8, [sp, #80]
6326	ldr	r9, [sp, #84]
6327#else
6328	ldrd	r8, r9, [sp, #80]
6329#endif
6330	adds	r4, r4, r6
6331	adc	r5, r5, r7
6332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6333	ldr	r6, [r3, #80]
6334	ldr	r7, [r3, #84]
6335#else
6336	ldrd	r6, r7, [r3, #80]
6337#endif
6338	adds	r4, r4, r8
6339	adc	r5, r5, r9
6340#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6341	ldr	r8, [r0, #8]
6342	ldr	r9, [r0, #12]
6343#else
6344	ldrd	r8, r9, [r0, #8]
6345#endif
6346	adds	r4, r4, r6
6347	adc	r5, r5, r7
6348#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6349	str	r4, [r0, #40]
6350	str	r5, [r0, #44]
6351#else
6352	strd	r4, r5, [r0, #40]
6353#endif
6354	adds	r8, r8, r4
6355	adc	r9, r9, r5
6356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6357	ldr	r4, [r0, #48]
6358	ldr	r5, [r0, #52]
6359#else
6360	ldrd	r4, r5, [r0, #48]
6361#endif
6362#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6363	str	r8, [r0, #8]
6364	str	r9, [r0, #12]
6365#else
6366	strd	r8, r9, [r0, #8]
6367#endif
6368	lsrs	r6, r4, #28
6369	lsrs	r7, r5, #28
6370	orr	r7, r7, r4, lsl #4
6371	orr	r6, r6, r5, lsl #4
6372	lsls	r8, r4, #30
6373	lsls	r9, r5, #30
6374	orr	r9, r9, r4, lsr #2
6375	orr	r8, r8, r5, lsr #2
6376	eor	r6, r6, r8
6377	eor	r7, r7, r9
6378	lsls	r8, r4, #25
6379	lsls	r9, r5, #25
6380	orr	r9, r9, r4, lsr #7
6381	orr	r8, r8, r5, lsr #7
6382#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6383	ldr	r4, [r0, #40]
6384	ldr	r5, [r0, #44]
6385#else
6386	ldrd	r4, r5, [r0, #40]
6387#endif
6388	eor	r6, r6, r8
6389	eor	r7, r7, r9
6390	adds	r4, r4, r6
6391	adc	r5, r5, r7
6392#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6393	ldr	r8, [r0, #48]
6394	ldr	r9, [r0, #52]
6395#else
6396	ldrd	r8, r9, [r0, #48]
6397#endif
6398#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6399	ldr	r6, [r0, #56]
6400	ldr	r7, [r0, #60]
6401#else
6402	ldrd	r6, r7, [r0, #56]
6403#endif
6404#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6405	str	r4, [r0, #40]
6406	str	r5, [r0, #44]
6407#else
6408	strd	r4, r5, [r0, #40]
6409#endif
6410	eor	r8, r8, r6
6411	eor	r9, r9, r7
6412	and	r10, r10, r8
6413	and	r11, r11, r9
6414	eor	r10, r10, r6
6415	eor	r11, r11, r7
6416#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6417	ldr	r6, [r0, #40]
6418	ldr	r7, [r0, #44]
6419#else
6420	ldrd	r6, r7, [r0, #40]
6421#endif
6422	adds	r6, r6, r10
6423	adc	r7, r7, r11
6424#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6425	str	r6, [r0, #40]
6426	str	r7, [r0, #44]
6427#else
6428	strd	r6, r7, [r0, #40]
6429#endif
6430	mov	r10, r8
6431	mov	r11, r9
6432	# Round 11
6433#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6434	ldr	r4, [r0, #8]
6435	ldr	r5, [r0, #12]
6436#else
6437	ldrd	r4, r5, [r0, #8]
6438#endif
6439	lsrs	r6, r4, #14
6440	lsrs	r7, r5, #14
6441	orr	r7, r7, r4, lsl #18
6442	orr	r6, r6, r5, lsl #18
6443	lsrs	r8, r4, #18
6444	lsrs	r9, r5, #18
6445	orr	r9, r9, r4, lsl #14
6446	orr	r8, r8, r5, lsl #14
6447	eor	r6, r6, r8
6448	eor	r7, r7, r9
6449	lsls	r8, r4, #23
6450	lsls	r9, r5, #23
6451	orr	r9, r9, r4, lsr #9
6452	orr	r8, r8, r5, lsr #9
6453#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6454	ldr	r4, [r0, #32]
6455	ldr	r5, [r0, #36]
6456#else
6457	ldrd	r4, r5, [r0, #32]
6458#endif
6459	eor	r6, r6, r8
6460	eor	r7, r7, r9
6461	adds	r4, r4, r6
6462	adc	r5, r5, r7
6463#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6464	str	r4, [r0, #32]
6465	str	r5, [r0, #36]
6466#else
6467	strd	r4, r5, [r0, #32]
6468#endif
6469#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6470	ldr	r4, [r0, #8]
6471	ldr	r5, [r0, #12]
6472#else
6473	ldrd	r4, r5, [r0, #8]
6474#endif
6475#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6476	ldr	r6, [r0, #16]
6477	ldr	r7, [r0, #20]
6478#else
6479	ldrd	r6, r7, [r0, #16]
6480#endif
6481#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6482	ldr	r8, [r0, #24]
6483	ldr	r9, [r0, #28]
6484#else
6485	ldrd	r8, r9, [r0, #24]
6486#endif
6487	eor	r6, r6, r8
6488	eor	r7, r7, r9
6489	and	r6, r6, r4
6490	and	r7, r7, r5
6491	eor	r6, r6, r8
6492	eor	r7, r7, r9
6493#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6494	ldr	r4, [r0, #32]
6495	ldr	r5, [r0, #36]
6496#else
6497	ldrd	r4, r5, [r0, #32]
6498#endif
6499#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6500	ldr	r8, [sp, #88]
6501	ldr	r9, [sp, #92]
6502#else
6503	ldrd	r8, r9, [sp, #88]
6504#endif
6505	adds	r4, r4, r6
6506	adc	r5, r5, r7
6507#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6508	ldr	r6, [r3, #88]
6509	ldr	r7, [r3, #92]
6510#else
6511	ldrd	r6, r7, [r3, #88]
6512#endif
6513	adds	r4, r4, r8
6514	adc	r5, r5, r9
6515#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6516	ldm	r0, {r8, r9}
6517#else
6518	ldrd	r8, r9, [r0]
6519#endif
6520	adds	r4, r4, r6
6521	adc	r5, r5, r7
6522#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6523	str	r4, [r0, #32]
6524	str	r5, [r0, #36]
6525#else
6526	strd	r4, r5, [r0, #32]
6527#endif
6528	adds	r8, r8, r4
6529	adc	r9, r9, r5
6530#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6531	ldr	r4, [r0, #40]
6532	ldr	r5, [r0, #44]
6533#else
6534	ldrd	r4, r5, [r0, #40]
6535#endif
6536#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6537	stm	r0, {r8, r9}
6538#else
6539	strd	r8, r9, [r0]
6540#endif
6541	lsrs	r6, r4, #28
6542	lsrs	r7, r5, #28
6543	orr	r7, r7, r4, lsl #4
6544	orr	r6, r6, r5, lsl #4
6545	lsls	r8, r4, #30
6546	lsls	r9, r5, #30
6547	orr	r9, r9, r4, lsr #2
6548	orr	r8, r8, r5, lsr #2
6549	eor	r6, r6, r8
6550	eor	r7, r7, r9
6551	lsls	r8, r4, #25
6552	lsls	r9, r5, #25
6553	orr	r9, r9, r4, lsr #7
6554	orr	r8, r8, r5, lsr #7
6555#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6556	ldr	r4, [r0, #32]
6557	ldr	r5, [r0, #36]
6558#else
6559	ldrd	r4, r5, [r0, #32]
6560#endif
6561	eor	r6, r6, r8
6562	eor	r7, r7, r9
6563	adds	r4, r4, r6
6564	adc	r5, r5, r7
6565#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6566	ldr	r8, [r0, #40]
6567	ldr	r9, [r0, #44]
6568#else
6569	ldrd	r8, r9, [r0, #40]
6570#endif
6571#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6572	ldr	r6, [r0, #48]
6573	ldr	r7, [r0, #52]
6574#else
6575	ldrd	r6, r7, [r0, #48]
6576#endif
6577#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6578	str	r4, [r0, #32]
6579	str	r5, [r0, #36]
6580#else
6581	strd	r4, r5, [r0, #32]
6582#endif
6583	eor	r8, r8, r6
6584	eor	r9, r9, r7
6585	and	r10, r10, r8
6586	and	r11, r11, r9
6587	eor	r10, r10, r6
6588	eor	r11, r11, r7
6589#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6590	ldr	r6, [r0, #32]
6591	ldr	r7, [r0, #36]
6592#else
6593	ldrd	r6, r7, [r0, #32]
6594#endif
6595	adds	r6, r6, r10
6596	adc	r7, r7, r11
6597#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6598	str	r6, [r0, #32]
6599	str	r7, [r0, #36]
6600#else
6601	strd	r6, r7, [r0, #32]
6602#endif
6603	mov	r10, r8
6604	mov	r11, r9
6605	# Round 12
6606#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6607	ldm	r0, {r4, r5}
6608#else
6609	ldrd	r4, r5, [r0]
6610#endif
6611	lsrs	r6, r4, #14
6612	lsrs	r7, r5, #14
6613	orr	r7, r7, r4, lsl #18
6614	orr	r6, r6, r5, lsl #18
6615	lsrs	r8, r4, #18
6616	lsrs	r9, r5, #18
6617	orr	r9, r9, r4, lsl #14
6618	orr	r8, r8, r5, lsl #14
6619	eor	r6, r6, r8
6620	eor	r7, r7, r9
6621	lsls	r8, r4, #23
6622	lsls	r9, r5, #23
6623	orr	r9, r9, r4, lsr #9
6624	orr	r8, r8, r5, lsr #9
6625#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6626	ldr	r4, [r0, #24]
6627	ldr	r5, [r0, #28]
6628#else
6629	ldrd	r4, r5, [r0, #24]
6630#endif
6631	eor	r6, r6, r8
6632	eor	r7, r7, r9
6633	adds	r4, r4, r6
6634	adc	r5, r5, r7
6635#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6636	str	r4, [r0, #24]
6637	str	r5, [r0, #28]
6638#else
6639	strd	r4, r5, [r0, #24]
6640#endif
6641#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6642	ldm	r0, {r4, r5}
6643#else
6644	ldrd	r4, r5, [r0]
6645#endif
6646#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6647	ldr	r6, [r0, #8]
6648	ldr	r7, [r0, #12]
6649#else
6650	ldrd	r6, r7, [r0, #8]
6651#endif
6652#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6653	ldr	r8, [r0, #16]
6654	ldr	r9, [r0, #20]
6655#else
6656	ldrd	r8, r9, [r0, #16]
6657#endif
6658	eor	r6, r6, r8
6659	eor	r7, r7, r9
6660	and	r6, r6, r4
6661	and	r7, r7, r5
6662	eor	r6, r6, r8
6663	eor	r7, r7, r9
6664#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6665	ldr	r4, [r0, #24]
6666	ldr	r5, [r0, #28]
6667#else
6668	ldrd	r4, r5, [r0, #24]
6669#endif
6670#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6671	ldr	r8, [sp, #96]
6672	ldr	r9, [sp, #100]
6673#else
6674	ldrd	r8, r9, [sp, #96]
6675#endif
6676	adds	r4, r4, r6
6677	adc	r5, r5, r7
6678#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6679	ldr	r6, [r3, #96]
6680	ldr	r7, [r3, #100]
6681#else
6682	ldrd	r6, r7, [r3, #96]
6683#endif
6684	adds	r4, r4, r8
6685	adc	r5, r5, r9
6686#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6687	ldr	r8, [r0, #56]
6688	ldr	r9, [r0, #60]
6689#else
6690	ldrd	r8, r9, [r0, #56]
6691#endif
6692	adds	r4, r4, r6
6693	adc	r5, r5, r7
6694#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6695	str	r4, [r0, #24]
6696	str	r5, [r0, #28]
6697#else
6698	strd	r4, r5, [r0, #24]
6699#endif
6700	adds	r8, r8, r4
6701	adc	r9, r9, r5
6702#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6703	ldr	r4, [r0, #32]
6704	ldr	r5, [r0, #36]
6705#else
6706	ldrd	r4, r5, [r0, #32]
6707#endif
6708#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6709	str	r8, [r0, #56]
6710	str	r9, [r0, #60]
6711#else
6712	strd	r8, r9, [r0, #56]
6713#endif
6714	lsrs	r6, r4, #28
6715	lsrs	r7, r5, #28
6716	orr	r7, r7, r4, lsl #4
6717	orr	r6, r6, r5, lsl #4
6718	lsls	r8, r4, #30
6719	lsls	r9, r5, #30
6720	orr	r9, r9, r4, lsr #2
6721	orr	r8, r8, r5, lsr #2
6722	eor	r6, r6, r8
6723	eor	r7, r7, r9
6724	lsls	r8, r4, #25
6725	lsls	r9, r5, #25
6726	orr	r9, r9, r4, lsr #7
6727	orr	r8, r8, r5, lsr #7
6728#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6729	ldr	r4, [r0, #24]
6730	ldr	r5, [r0, #28]
6731#else
6732	ldrd	r4, r5, [r0, #24]
6733#endif
6734	eor	r6, r6, r8
6735	eor	r7, r7, r9
6736	adds	r4, r4, r6
6737	adc	r5, r5, r7
6738#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6739	ldr	r8, [r0, #32]
6740	ldr	r9, [r0, #36]
6741#else
6742	ldrd	r8, r9, [r0, #32]
6743#endif
6744#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6745	ldr	r6, [r0, #40]
6746	ldr	r7, [r0, #44]
6747#else
6748	ldrd	r6, r7, [r0, #40]
6749#endif
6750#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6751	str	r4, [r0, #24]
6752	str	r5, [r0, #28]
6753#else
6754	strd	r4, r5, [r0, #24]
6755#endif
6756	eor	r8, r8, r6
6757	eor	r9, r9, r7
6758	and	r10, r10, r8
6759	and	r11, r11, r9
6760	eor	r10, r10, r6
6761	eor	r11, r11, r7
6762#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6763	ldr	r6, [r0, #24]
6764	ldr	r7, [r0, #28]
6765#else
6766	ldrd	r6, r7, [r0, #24]
6767#endif
6768	adds	r6, r6, r10
6769	adc	r7, r7, r11
6770#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6771	str	r6, [r0, #24]
6772	str	r7, [r0, #28]
6773#else
6774	strd	r6, r7, [r0, #24]
6775#endif
6776	mov	r10, r8
6777	mov	r11, r9
6778	# Round 13
6779#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6780	ldr	r4, [r0, #56]
6781	ldr	r5, [r0, #60]
6782#else
6783	ldrd	r4, r5, [r0, #56]
6784#endif
6785	lsrs	r6, r4, #14
6786	lsrs	r7, r5, #14
6787	orr	r7, r7, r4, lsl #18
6788	orr	r6, r6, r5, lsl #18
6789	lsrs	r8, r4, #18
6790	lsrs	r9, r5, #18
6791	orr	r9, r9, r4, lsl #14
6792	orr	r8, r8, r5, lsl #14
6793	eor	r6, r6, r8
6794	eor	r7, r7, r9
6795	lsls	r8, r4, #23
6796	lsls	r9, r5, #23
6797	orr	r9, r9, r4, lsr #9
6798	orr	r8, r8, r5, lsr #9
6799#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6800	ldr	r4, [r0, #16]
6801	ldr	r5, [r0, #20]
6802#else
6803	ldrd	r4, r5, [r0, #16]
6804#endif
6805	eor	r6, r6, r8
6806	eor	r7, r7, r9
6807	adds	r4, r4, r6
6808	adc	r5, r5, r7
6809#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6810	str	r4, [r0, #16]
6811	str	r5, [r0, #20]
6812#else
6813	strd	r4, r5, [r0, #16]
6814#endif
6815#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6816	ldr	r4, [r0, #56]
6817	ldr	r5, [r0, #60]
6818#else
6819	ldrd	r4, r5, [r0, #56]
6820#endif
6821#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6822	ldm	r0, {r6, r7}
6823#else
6824	ldrd	r6, r7, [r0]
6825#endif
6826#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6827	ldr	r8, [r0, #8]
6828	ldr	r9, [r0, #12]
6829#else
6830	ldrd	r8, r9, [r0, #8]
6831#endif
6832	eor	r6, r6, r8
6833	eor	r7, r7, r9
6834	and	r6, r6, r4
6835	and	r7, r7, r5
6836	eor	r6, r6, r8
6837	eor	r7, r7, r9
6838#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6839	ldr	r4, [r0, #16]
6840	ldr	r5, [r0, #20]
6841#else
6842	ldrd	r4, r5, [r0, #16]
6843#endif
6844#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6845	ldr	r8, [sp, #104]
6846	ldr	r9, [sp, #108]
6847#else
6848	ldrd	r8, r9, [sp, #104]
6849#endif
6850	adds	r4, r4, r6
6851	adc	r5, r5, r7
6852#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6853	ldr	r6, [r3, #104]
6854	ldr	r7, [r3, #108]
6855#else
6856	ldrd	r6, r7, [r3, #104]
6857#endif
6858	adds	r4, r4, r8
6859	adc	r5, r5, r9
6860#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6861	ldr	r8, [r0, #48]
6862	ldr	r9, [r0, #52]
6863#else
6864	ldrd	r8, r9, [r0, #48]
6865#endif
6866	adds	r4, r4, r6
6867	adc	r5, r5, r7
6868#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6869	str	r4, [r0, #16]
6870	str	r5, [r0, #20]
6871#else
6872	strd	r4, r5, [r0, #16]
6873#endif
6874	adds	r8, r8, r4
6875	adc	r9, r9, r5
6876#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6877	ldr	r4, [r0, #24]
6878	ldr	r5, [r0, #28]
6879#else
6880	ldrd	r4, r5, [r0, #24]
6881#endif
6882#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6883	str	r8, [r0, #48]
6884	str	r9, [r0, #52]
6885#else
6886	strd	r8, r9, [r0, #48]
6887#endif
6888	lsrs	r6, r4, #28
6889	lsrs	r7, r5, #28
6890	orr	r7, r7, r4, lsl #4
6891	orr	r6, r6, r5, lsl #4
6892	lsls	r8, r4, #30
6893	lsls	r9, r5, #30
6894	orr	r9, r9, r4, lsr #2
6895	orr	r8, r8, r5, lsr #2
6896	eor	r6, r6, r8
6897	eor	r7, r7, r9
6898	lsls	r8, r4, #25
6899	lsls	r9, r5, #25
6900	orr	r9, r9, r4, lsr #7
6901	orr	r8, r8, r5, lsr #7
6902#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6903	ldr	r4, [r0, #16]
6904	ldr	r5, [r0, #20]
6905#else
6906	ldrd	r4, r5, [r0, #16]
6907#endif
6908	eor	r6, r6, r8
6909	eor	r7, r7, r9
6910	adds	r4, r4, r6
6911	adc	r5, r5, r7
6912#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6913	ldr	r8, [r0, #24]
6914	ldr	r9, [r0, #28]
6915#else
6916	ldrd	r8, r9, [r0, #24]
6917#endif
6918#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6919	ldr	r6, [r0, #32]
6920	ldr	r7, [r0, #36]
6921#else
6922	ldrd	r6, r7, [r0, #32]
6923#endif
6924#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6925	str	r4, [r0, #16]
6926	str	r5, [r0, #20]
6927#else
6928	strd	r4, r5, [r0, #16]
6929#endif
6930	eor	r8, r8, r6
6931	eor	r9, r9, r7
6932	and	r10, r10, r8
6933	and	r11, r11, r9
6934	eor	r10, r10, r6
6935	eor	r11, r11, r7
6936#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6937	ldr	r6, [r0, #16]
6938	ldr	r7, [r0, #20]
6939#else
6940	ldrd	r6, r7, [r0, #16]
6941#endif
6942	adds	r6, r6, r10
6943	adc	r7, r7, r11
6944#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6945	str	r6, [r0, #16]
6946	str	r7, [r0, #20]
6947#else
6948	strd	r6, r7, [r0, #16]
6949#endif
6950	mov	r10, r8
6951	mov	r11, r9
6952	# Round 14
6953#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6954	ldr	r4, [r0, #48]
6955	ldr	r5, [r0, #52]
6956#else
6957	ldrd	r4, r5, [r0, #48]
6958#endif
6959	lsrs	r6, r4, #14
6960	lsrs	r7, r5, #14
6961	orr	r7, r7, r4, lsl #18
6962	orr	r6, r6, r5, lsl #18
6963	lsrs	r8, r4, #18
6964	lsrs	r9, r5, #18
6965	orr	r9, r9, r4, lsl #14
6966	orr	r8, r8, r5, lsl #14
6967	eor	r6, r6, r8
6968	eor	r7, r7, r9
6969	lsls	r8, r4, #23
6970	lsls	r9, r5, #23
6971	orr	r9, r9, r4, lsr #9
6972	orr	r8, r8, r5, lsr #9
6973#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6974	ldr	r4, [r0, #8]
6975	ldr	r5, [r0, #12]
6976#else
6977	ldrd	r4, r5, [r0, #8]
6978#endif
6979	eor	r6, r6, r8
6980	eor	r7, r7, r9
6981	adds	r4, r4, r6
6982	adc	r5, r5, r7
6983#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6984	str	r4, [r0, #8]
6985	str	r5, [r0, #12]
6986#else
6987	strd	r4, r5, [r0, #8]
6988#endif
6989#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6990	ldr	r4, [r0, #48]
6991	ldr	r5, [r0, #52]
6992#else
6993	ldrd	r4, r5, [r0, #48]
6994#endif
6995#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
6996	ldr	r6, [r0, #56]
6997	ldr	r7, [r0, #60]
6998#else
6999	ldrd	r6, r7, [r0, #56]
7000#endif
7001#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7002	ldm	r0, {r8, r9}
7003#else
7004	ldrd	r8, r9, [r0]
7005#endif
7006	eor	r6, r6, r8
7007	eor	r7, r7, r9
7008	and	r6, r6, r4
7009	and	r7, r7, r5
7010	eor	r6, r6, r8
7011	eor	r7, r7, r9
7012#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7013	ldr	r4, [r0, #8]
7014	ldr	r5, [r0, #12]
7015#else
7016	ldrd	r4, r5, [r0, #8]
7017#endif
7018#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7019	ldr	r8, [sp, #112]
7020	ldr	r9, [sp, #116]
7021#else
7022	ldrd	r8, r9, [sp, #112]
7023#endif
7024	adds	r4, r4, r6
7025	adc	r5, r5, r7
7026#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7027	ldr	r6, [r3, #112]
7028	ldr	r7, [r3, #116]
7029#else
7030	ldrd	r6, r7, [r3, #112]
7031#endif
7032	adds	r4, r4, r8
7033	adc	r5, r5, r9
7034#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7035	ldr	r8, [r0, #40]
7036	ldr	r9, [r0, #44]
7037#else
7038	ldrd	r8, r9, [r0, #40]
7039#endif
7040	adds	r4, r4, r6
7041	adc	r5, r5, r7
7042#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7043	str	r4, [r0, #8]
7044	str	r5, [r0, #12]
7045#else
7046	strd	r4, r5, [r0, #8]
7047#endif
7048	adds	r8, r8, r4
7049	adc	r9, r9, r5
7050#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7051	ldr	r4, [r0, #16]
7052	ldr	r5, [r0, #20]
7053#else
7054	ldrd	r4, r5, [r0, #16]
7055#endif
7056#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7057	str	r8, [r0, #40]
7058	str	r9, [r0, #44]
7059#else
7060	strd	r8, r9, [r0, #40]
7061#endif
7062	lsrs	r6, r4, #28
7063	lsrs	r7, r5, #28
7064	orr	r7, r7, r4, lsl #4
7065	orr	r6, r6, r5, lsl #4
7066	lsls	r8, r4, #30
7067	lsls	r9, r5, #30
7068	orr	r9, r9, r4, lsr #2
7069	orr	r8, r8, r5, lsr #2
7070	eor	r6, r6, r8
7071	eor	r7, r7, r9
7072	lsls	r8, r4, #25
7073	lsls	r9, r5, #25
7074	orr	r9, r9, r4, lsr #7
7075	orr	r8, r8, r5, lsr #7
7076#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7077	ldr	r4, [r0, #8]
7078	ldr	r5, [r0, #12]
7079#else
7080	ldrd	r4, r5, [r0, #8]
7081#endif
7082	eor	r6, r6, r8
7083	eor	r7, r7, r9
7084	adds	r4, r4, r6
7085	adc	r5, r5, r7
7086#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7087	ldr	r8, [r0, #16]
7088	ldr	r9, [r0, #20]
7089#else
7090	ldrd	r8, r9, [r0, #16]
7091#endif
7092#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7093	ldr	r6, [r0, #24]
7094	ldr	r7, [r0, #28]
7095#else
7096	ldrd	r6, r7, [r0, #24]
7097#endif
7098#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7099	str	r4, [r0, #8]
7100	str	r5, [r0, #12]
7101#else
7102	strd	r4, r5, [r0, #8]
7103#endif
7104	eor	r8, r8, r6
7105	eor	r9, r9, r7
7106	and	r10, r10, r8
7107	and	r11, r11, r9
7108	eor	r10, r10, r6
7109	eor	r11, r11, r7
7110#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7111	ldr	r6, [r0, #8]
7112	ldr	r7, [r0, #12]
7113#else
7114	ldrd	r6, r7, [r0, #8]
7115#endif
7116	adds	r6, r6, r10
7117	adc	r7, r7, r11
7118#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7119	str	r6, [r0, #8]
7120	str	r7, [r0, #12]
7121#else
7122	strd	r6, r7, [r0, #8]
7123#endif
7124	mov	r10, r8
7125	mov	r11, r9
7126	# Round 15
7127#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7128	ldr	r4, [r0, #40]
7129	ldr	r5, [r0, #44]
7130#else
7131	ldrd	r4, r5, [r0, #40]
7132#endif
7133	lsrs	r6, r4, #14
7134	lsrs	r7, r5, #14
7135	orr	r7, r7, r4, lsl #18
7136	orr	r6, r6, r5, lsl #18
7137	lsrs	r8, r4, #18
7138	lsrs	r9, r5, #18
7139	orr	r9, r9, r4, lsl #14
7140	orr	r8, r8, r5, lsl #14
7141	eor	r6, r6, r8
7142	eor	r7, r7, r9
7143	lsls	r8, r4, #23
7144	lsls	r9, r5, #23
7145	orr	r9, r9, r4, lsr #9
7146	orr	r8, r8, r5, lsr #9
7147#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7148	ldm	r0, {r4, r5}
7149#else
7150	ldrd	r4, r5, [r0]
7151#endif
7152	eor	r6, r6, r8
7153	eor	r7, r7, r9
7154	adds	r4, r4, r6
7155	adc	r5, r5, r7
7156#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7157	stm	r0, {r4, r5}
7158#else
7159	strd	r4, r5, [r0]
7160#endif
7161#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7162	ldr	r4, [r0, #40]
7163	ldr	r5, [r0, #44]
7164#else
7165	ldrd	r4, r5, [r0, #40]
7166#endif
7167#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7168	ldr	r6, [r0, #48]
7169	ldr	r7, [r0, #52]
7170#else
7171	ldrd	r6, r7, [r0, #48]
7172#endif
7173#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7174	ldr	r8, [r0, #56]
7175	ldr	r9, [r0, #60]
7176#else
7177	ldrd	r8, r9, [r0, #56]
7178#endif
7179	eor	r6, r6, r8
7180	eor	r7, r7, r9
7181	and	r6, r6, r4
7182	and	r7, r7, r5
7183	eor	r6, r6, r8
7184	eor	r7, r7, r9
7185#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7186	ldm	r0, {r4, r5}
7187#else
7188	ldrd	r4, r5, [r0]
7189#endif
7190#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7191	ldr	r8, [sp, #120]
7192	ldr	r9, [sp, #124]
7193#else
7194	ldrd	r8, r9, [sp, #120]
7195#endif
7196	adds	r4, r4, r6
7197	adc	r5, r5, r7
7198#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7199	ldr	r6, [r3, #120]
7200	ldr	r7, [r3, #124]
7201#else
7202	ldrd	r6, r7, [r3, #120]
7203#endif
7204	adds	r4, r4, r8
7205	adc	r5, r5, r9
7206#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7207	ldr	r8, [r0, #32]
7208	ldr	r9, [r0, #36]
7209#else
7210	ldrd	r8, r9, [r0, #32]
7211#endif
7212	adds	r4, r4, r6
7213	adc	r5, r5, r7
7214#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7215	stm	r0, {r4, r5}
7216#else
7217	strd	r4, r5, [r0]
7218#endif
7219	adds	r8, r8, r4
7220	adc	r9, r9, r5
7221#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7222	ldr	r4, [r0, #8]
7223	ldr	r5, [r0, #12]
7224#else
7225	ldrd	r4, r5, [r0, #8]
7226#endif
7227#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7228	str	r8, [r0, #32]
7229	str	r9, [r0, #36]
7230#else
7231	strd	r8, r9, [r0, #32]
7232#endif
7233	lsrs	r6, r4, #28
7234	lsrs	r7, r5, #28
7235	orr	r7, r7, r4, lsl #4
7236	orr	r6, r6, r5, lsl #4
7237	lsls	r8, r4, #30
7238	lsls	r9, r5, #30
7239	orr	r9, r9, r4, lsr #2
7240	orr	r8, r8, r5, lsr #2
7241	eor	r6, r6, r8
7242	eor	r7, r7, r9
7243	lsls	r8, r4, #25
7244	lsls	r9, r5, #25
7245	orr	r9, r9, r4, lsr #7
7246	orr	r8, r8, r5, lsr #7
7247#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7248	ldm	r0, {r4, r5}
7249#else
7250	ldrd	r4, r5, [r0]
7251#endif
7252	eor	r6, r6, r8
7253	eor	r7, r7, r9
7254	adds	r4, r4, r6
7255	adc	r5, r5, r7
7256#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7257	ldr	r8, [r0, #8]
7258	ldr	r9, [r0, #12]
7259#else
7260	ldrd	r8, r9, [r0, #8]
7261#endif
7262#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7263	ldr	r6, [r0, #16]
7264	ldr	r7, [r0, #20]
7265#else
7266	ldrd	r6, r7, [r0, #16]
7267#endif
7268#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7269	stm	r0, {r4, r5}
7270#else
7271	strd	r4, r5, [r0]
7272#endif
7273	eor	r8, r8, r6
7274	eor	r9, r9, r7
7275	and	r10, r10, r8
7276	and	r11, r11, r9
7277	eor	r10, r10, r6
7278	eor	r11, r11, r7
7279#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7280	ldm	r0, {r6, r7}
7281#else
7282	ldrd	r6, r7, [r0]
7283#endif
7284	adds	r6, r6, r10
7285	adc	r7, r7, r11
7286#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7287	stm	r0, {r6, r7}
7288#else
7289	strd	r6, r7, [r0]
7290#endif
7291	mov	r10, r8
7292	mov	r11, r9
7293	# Add in digest from start
7294#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7295	ldm	r0, {r4, r5}
7296#else
7297	ldrd	r4, r5, [r0]
7298#endif
7299#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7300	ldr	r6, [r0, #8]
7301	ldr	r7, [r0, #12]
7302#else
7303	ldrd	r6, r7, [r0, #8]
7304#endif
7305#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7306	ldr	r8, [sp, #128]
7307	ldr	r9, [sp, #132]
7308#else
7309	ldrd	r8, r9, [sp, #128]
7310#endif
7311#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7312	ldr	r10, [sp, #136]
7313	ldr	r11, [sp, #140]
7314#else
7315	ldrd	r10, r11, [sp, #136]
7316#endif
7317	adds	r4, r4, r8
7318	adc	r5, r5, r9
7319	adds	r6, r6, r10
7320	adc	r7, r7, r11
7321#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7322	stm	r0, {r4, r5}
7323#else
7324	strd	r4, r5, [r0]
7325#endif
7326#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7327	str	r6, [r0, #8]
7328	str	r7, [r0, #12]
7329#else
7330	strd	r6, r7, [r0, #8]
7331#endif
7332#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7333	str	r4, [sp, #128]
7334	str	r5, [sp, #132]
7335#else
7336	strd	r4, r5, [sp, #128]
7337#endif
7338#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7339	str	r6, [sp, #136]
7340	str	r7, [sp, #140]
7341#else
7342	strd	r6, r7, [sp, #136]
7343#endif
7344#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7345	ldr	r4, [r0, #16]
7346	ldr	r5, [r0, #20]
7347#else
7348	ldrd	r4, r5, [r0, #16]
7349#endif
7350#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7351	ldr	r6, [r0, #24]
7352	ldr	r7, [r0, #28]
7353#else
7354	ldrd	r6, r7, [r0, #24]
7355#endif
7356#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7357	ldr	r8, [sp, #144]
7358	ldr	r9, [sp, #148]
7359#else
7360	ldrd	r8, r9, [sp, #144]
7361#endif
7362#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7363	ldr	r10, [sp, #152]
7364	ldr	r11, [sp, #156]
7365#else
7366	ldrd	r10, r11, [sp, #152]
7367#endif
7368	adds	r4, r4, r8
7369	adc	r5, r5, r9
7370	adds	r6, r6, r10
7371	adc	r7, r7, r11
7372#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7373	str	r4, [r0, #16]
7374	str	r5, [r0, #20]
7375#else
7376	strd	r4, r5, [r0, #16]
7377#endif
7378#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7379	str	r6, [r0, #24]
7380	str	r7, [r0, #28]
7381#else
7382	strd	r6, r7, [r0, #24]
7383#endif
7384#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7385	str	r4, [sp, #144]
7386	str	r5, [sp, #148]
7387#else
7388	strd	r4, r5, [sp, #144]
7389#endif
7390#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7391	str	r6, [sp, #152]
7392	str	r7, [sp, #156]
7393#else
7394	strd	r6, r7, [sp, #152]
7395#endif
7396#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7397	ldr	r4, [r0, #32]
7398	ldr	r5, [r0, #36]
7399#else
7400	ldrd	r4, r5, [r0, #32]
7401#endif
7402#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7403	ldr	r6, [r0, #40]
7404	ldr	r7, [r0, #44]
7405#else
7406	ldrd	r6, r7, [r0, #40]
7407#endif
7408#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7409	ldr	r8, [sp, #160]
7410	ldr	r9, [sp, #164]
7411#else
7412	ldrd	r8, r9, [sp, #160]
7413#endif
7414#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7415	ldr	r10, [sp, #168]
7416	ldr	r11, [sp, #172]
7417#else
7418	ldrd	r10, r11, [sp, #168]
7419#endif
7420	adds	r4, r4, r8
7421	adc	r5, r5, r9
7422	adds	r6, r6, r10
7423	adc	r7, r7, r11
7424#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7425	str	r4, [r0, #32]
7426	str	r5, [r0, #36]
7427#else
7428	strd	r4, r5, [r0, #32]
7429#endif
7430#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7431	str	r6, [r0, #40]
7432	str	r7, [r0, #44]
7433#else
7434	strd	r6, r7, [r0, #40]
7435#endif
7436#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7437	str	r4, [sp, #160]
7438	str	r5, [sp, #164]
7439#else
7440	strd	r4, r5, [sp, #160]
7441#endif
7442#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7443	str	r6, [sp, #168]
7444	str	r7, [sp, #172]
7445#else
7446	strd	r6, r7, [sp, #168]
7447#endif
7448#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7449	ldr	r4, [r0, #48]
7450	ldr	r5, [r0, #52]
7451#else
7452	ldrd	r4, r5, [r0, #48]
7453#endif
7454#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7455	ldr	r6, [r0, #56]
7456	ldr	r7, [r0, #60]
7457#else
7458	ldrd	r6, r7, [r0, #56]
7459#endif
7460#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7461	ldr	r8, [sp, #176]
7462	ldr	r9, [sp, #180]
7463#else
7464	ldrd	r8, r9, [sp, #176]
7465#endif
7466#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7467	ldr	r10, [sp, #184]
7468	ldr	r11, [sp, #188]
7469#else
7470	ldrd	r10, r11, [sp, #184]
7471#endif
7472	adds	r4, r4, r8
7473	adc	r5, r5, r9
7474	adds	r6, r6, r10
7475	adc	r7, r7, r11
7476#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7477	str	r4, [r0, #48]
7478	str	r5, [r0, #52]
7479#else
7480	strd	r4, r5, [r0, #48]
7481#endif
7482#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7483	str	r6, [r0, #56]
7484	str	r7, [r0, #60]
7485#else
7486	strd	r6, r7, [r0, #56]
7487#endif
7488#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7489	str	r4, [sp, #176]
7490	str	r5, [sp, #180]
7491#else
7492	strd	r4, r5, [sp, #176]
7493#endif
7494#if defined(WOLFSSL_ARM_ARCH) && (WOLFSSL_ARM_ARCH < 7)
7495	str	r6, [sp, #184]
7496	str	r7, [sp, #188]
7497#else
7498	strd	r6, r7, [sp, #184]
7499#endif
7500	subs	r2, r2, #0x80
7501	sub	r3, r3, #0x200
7502	add	r1, r1, #0x80
7503	bne	L_SHA512_transform_len_begin
7504	eor	r0, r0, r0
7505	add	sp, sp, #0xc0
7506	pop	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
7507	.size	Transform_Sha512_Len_base,.-Transform_Sha512_Len_base
7508#endif /* WOLFSSL_ARMASM_NO_NEON */
7509#ifndef WOLFSSL_ARMASM_NO_NEON
7510#ifndef __APPLE__
7511	.text
7512	.type	L_SHA512_transform_neon_len_k, %object
7513	.size	L_SHA512_transform_neon_len_k, 640
7514#else
7515	.section	__DATA,__data
7516#endif /* __APPLE__ */
7517	# 16-byte aligned, 128-bit aligned
7518#ifndef __APPLE__
7519	.align	4
7520#else
7521	.p2align	4
7522#endif /* __APPLE__ */
7523L_SHA512_transform_neon_len_k:
7524	.quad	0x428a2f98d728ae22,0x7137449123ef65cd
7525	.quad	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
7526	.quad	0x3956c25bf348b538,0x59f111f1b605d019
7527	.quad	0x923f82a4af194f9b,0xab1c5ed5da6d8118
7528	.quad	0xd807aa98a3030242,0x12835b0145706fbe
7529	.quad	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
7530	.quad	0x72be5d74f27b896f,0x80deb1fe3b1696b1
7531	.quad	0x9bdc06a725c71235,0xc19bf174cf692694
7532	.quad	0xe49b69c19ef14ad2,0xefbe4786384f25e3
7533	.quad	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
7534	.quad	0x2de92c6f592b0275,0x4a7484aa6ea6e483
7535	.quad	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
7536	.quad	0x983e5152ee66dfab,0xa831c66d2db43210
7537	.quad	0xb00327c898fb213f,0xbf597fc7beef0ee4
7538	.quad	0xc6e00bf33da88fc2,0xd5a79147930aa725
7539	.quad	0x06ca6351e003826f,0x142929670a0e6e70
7540	.quad	0x27b70a8546d22ffc,0x2e1b21385c26c926
7541	.quad	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
7542	.quad	0x650a73548baf63de,0x766a0abb3c77b2a8
7543	.quad	0x81c2c92e47edaee6,0x92722c851482353b
7544	.quad	0xa2bfe8a14cf10364,0xa81a664bbc423001
7545	.quad	0xc24b8b70d0f89791,0xc76c51a30654be30
7546	.quad	0xd192e819d6ef5218,0xd69906245565a910
7547	.quad	0xf40e35855771202a,0x106aa07032bbd1b8
7548	.quad	0x19a4c116b8d2d0c8,0x1e376c085141ab53
7549	.quad	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
7550	.quad	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
7551	.quad	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
7552	.quad	0x748f82ee5defb2fc,0x78a5636f43172f60
7553	.quad	0x84c87814a1f0ab72,0x8cc702081a6439ec
7554	.quad	0x90befffa23631e28,0xa4506cebde82bde9
7555	.quad	0xbef9a3f7b2c67915,0xc67178f2e372532b
7556	.quad	0xca273eceea26619c,0xd186b8c721c0c207
7557	.quad	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
7558	.quad	0x06f067aa72176fba,0x0a637dc5a2c898a6
7559	.quad	0x113f9804bef90dae,0x1b710b35131c471b
7560	.quad	0x28db77f523047d84,0x32caab7b40c72493
7561	.quad	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
7562	.quad	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
7563	.quad	0x5fcb6fab3ad6faec,0x6c44198c4a475817
7564	.text
7565	.align	4
7566	.fpu	neon
7567	.globl	Transform_Sha512_Len_neon
7568	.type	Transform_Sha512_Len_neon, %function
7569Transform_Sha512_Len_neon:
7570	vpush	{d8-d15}
7571	adr	r3, L_SHA512_transform_neon_len_k
7572	# Load digest into working vars
7573	vldm.64	r0, {d0-d7}
7574	# Start of loop processing a block
7575L_SHA512_transform_neon_len_begin:
7576	# Load W
7577	vld1.8	{q8-q9}, [r1]!
7578	vld1.8	{q10-q11}, [r1]!
7579	vld1.8	{q12-q13}, [r1]!
7580	vld1.8	{q14-q15}, [r1]!
7581#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
7582	vrev64.8	q8, q8
7583	vrev64.8	q9, q9
7584	vrev64.8	q10, q10
7585	vrev64.8	q11, q11
7586	vrev64.8	q12, q12
7587	vrev64.8	q13, q13
7588	vrev64.8	q14, q14
7589	vrev64.8	q15, q15
7590#else
7591	vrev64.8	d16, d16
7592	vrev64.8	d17, d17
7593	vrev64.8	d18, d18
7594	vrev64.8	d19, d19
7595	vrev64.8	d20, d20
7596	vrev64.8	d21, d21
7597	vrev64.8	d22, d22
7598	vrev64.8	d23, d23
7599	vrev64.8	d24, d24
7600	vrev64.8	d25, d25
7601	vrev64.8	d26, d26
7602	vrev64.8	d27, d27
7603	vrev64.8	d28, d28
7604	vrev64.8	d29, d29
7605	vrev64.8	d30, d30
7606	vrev64.8	d31, d31
7607#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
7608	mov	r12, #4
7609	# Start of 16 rounds
7610L_SHA512_transform_neon_len_start:
7611	# Round 0
7612	vld1.64	{d12}, [r3:64]!
7613	vshl.u64	d8, d4, #50
7614	vsri.u64	d8, d4, #14
7615	vshl.u64	d9, d0, #36
7616	vsri.u64	d9, d0, #28
7617	vshl.u64	d10, d4, #46
7618	vsri.u64	d10, d4, #18
7619	vshl.u64	d11, d0, #30
7620	vsri.u64	d11, d0, #34
7621	veor	d8, d10
7622	veor	d9, d11
7623	vshl.u64	d10, d4, #23
7624	vsri.u64	d10, d4, #41
7625	vshl.u64	d11, d0, #25
7626	vsri.u64	d11, d0, #39
7627	veor	d8, d10
7628	veor	d9, d11
7629	vadd.i64	d7, d8
7630	vadd.i64	d12, d16
7631	vmov	d8, d4
7632	veor	d10, d1, d2
7633	vadd.i64	d7, d12
7634	vbsl	d8, d5, d6
7635	vbsl	d10, d0, d2
7636	vadd.i64	d7, d8
7637	vadd.i64	d10, d9
7638	vadd.i64	d3, d7
7639	vadd.i64	d7, d10
7640	# Round 1
7641	vld1.64	{d12}, [r3:64]!
7642	vshl.u64	d8, d3, #50
7643	vsri.u64	d8, d3, #14
7644	vshl.u64	d9, d7, #36
7645	vsri.u64	d9, d7, #28
7646	vshl.u64	d10, d3, #46
7647	vsri.u64	d10, d3, #18
7648	vshl.u64	d11, d7, #30
7649	vsri.u64	d11, d7, #34
7650	veor	d8, d10
7651	veor	d9, d11
7652	vshl.u64	d10, d3, #23
7653	vsri.u64	d10, d3, #41
7654	vshl.u64	d11, d7, #25
7655	vsri.u64	d11, d7, #39
7656	veor	d8, d10
7657	veor	d9, d11
7658	vadd.i64	d6, d8
7659	vadd.i64	d12, d17
7660	vmov	d8, d3
7661	veor	d10, d0, d1
7662	vadd.i64	d6, d12
7663	vbsl	d8, d4, d5
7664	vbsl	d10, d7, d1
7665	vadd.i64	d6, d8
7666	vadd.i64	d10, d9
7667	vadd.i64	d2, d6
7668	vadd.i64	d6, d10
7669#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
7670	# Calc new W[0]-W[1]
7671	vext.8	q6, q8, q9, #8
7672	vshl.u64	q4, q15, #45
7673	vsri.u64	q4, q15, #19
7674	vshl.u64	q5, q15, #3
7675	vsri.u64	q5, q15, #61
7676	veor	q5, q4
7677	vshr.u64	q4, q15, #6
7678	veor	q5, q4
7679	vadd.i64	q8, q5
7680	vext.8	q7, q12, q13, #8
7681	vadd.i64	q8, q7
7682	vshl.u64	q4, q6, #63
7683	vsri.u64	q4, q6, #1
7684	vshl.u64	q5, q6, #56
7685	vsri.u64	q5, q6, #8
7686	veor	q5, q4
7687	vshr.u64	q6, #7
7688	veor	q5, q6
7689	vadd.i64	q8, q5
7690#else
7691	# Calc new W[0]-W[1]
7692	vmov	d12, d17
7693	vmov	d13, d18
7694	vshl.u64	d8, d30, #45
7695	vshl.u64	d9, d31, #45
7696	vsri.u64	d8, d30, #19
7697	vsri.u64	d9, d31, #19
7698	vshl.u64	d10, d30, #3
7699	vshl.u64	d11, d31, #3
7700	vsri.u64	d10, d30, #61
7701	vsri.u64	d11, d31, #61
7702	veor	d10, d8
7703	veor	d11, d9
7704	vshr.u64	d8, d30, #6
7705	vshr.u64	d9, d31, #6
7706	veor	d10, d8
7707	veor	d11, d9
7708	vadd.i64	d16, d10
7709	vadd.i64	d17, d11
7710	vmov	d14, d25
7711	vmov	d15, d26
7712	vadd.i64	d16, d14
7713	vadd.i64	d17, d15
7714	vshl.u64	d8, d12, #63
7715	vshl.u64	d9, d13, #63
7716	vsri.u64	d8, d12, #1
7717	vsri.u64	d9, d13, #1
7718	vshl.u64	d10, d12, #56
7719	vshl.u64	d11, d13, #56
7720	vsri.u64	d10, d12, #8
7721	vsri.u64	d11, d13, #8
7722	veor	d10, d8
7723	veor	d11, d9
7724	vshr.u64	d12, #7
7725	vshr.u64	d13, #7
7726	veor	d10, d12
7727	veor	d11, d13
7728	vadd.i64	d16, d10
7729	vadd.i64	d17, d11
7730#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
7731	# Round 2
7732	vld1.64	{d12}, [r3:64]!
7733	vshl.u64	d8, d2, #50
7734	vsri.u64	d8, d2, #14
7735	vshl.u64	d9, d6, #36
7736	vsri.u64	d9, d6, #28
7737	vshl.u64	d10, d2, #46
7738	vsri.u64	d10, d2, #18
7739	vshl.u64	d11, d6, #30
7740	vsri.u64	d11, d6, #34
7741	veor	d8, d10
7742	veor	d9, d11
7743	vshl.u64	d10, d2, #23
7744	vsri.u64	d10, d2, #41
7745	vshl.u64	d11, d6, #25
7746	vsri.u64	d11, d6, #39
7747	veor	d8, d10
7748	veor	d9, d11
7749	vadd.i64	d5, d8
7750	vadd.i64	d12, d18
7751	vmov	d8, d2
7752	veor	d10, d7, d0
7753	vadd.i64	d5, d12
7754	vbsl	d8, d3, d4
7755	vbsl	d10, d6, d0
7756	vadd.i64	d5, d8
7757	vadd.i64	d10, d9
7758	vadd.i64	d1, d5
7759	vadd.i64	d5, d10
7760	# Round 3
7761	vld1.64	{d12}, [r3:64]!
7762	vshl.u64	d8, d1, #50
7763	vsri.u64	d8, d1, #14
7764	vshl.u64	d9, d5, #36
7765	vsri.u64	d9, d5, #28
7766	vshl.u64	d10, d1, #46
7767	vsri.u64	d10, d1, #18
7768	vshl.u64	d11, d5, #30
7769	vsri.u64	d11, d5, #34
7770	veor	d8, d10
7771	veor	d9, d11
7772	vshl.u64	d10, d1, #23
7773	vsri.u64	d10, d1, #41
7774	vshl.u64	d11, d5, #25
7775	vsri.u64	d11, d5, #39
7776	veor	d8, d10
7777	veor	d9, d11
7778	vadd.i64	d4, d8
7779	vadd.i64	d12, d19
7780	vmov	d8, d1
7781	veor	d10, d6, d7
7782	vadd.i64	d4, d12
7783	vbsl	d8, d2, d3
7784	vbsl	d10, d5, d7
7785	vadd.i64	d4, d8
7786	vadd.i64	d10, d9
7787	vadd.i64	d0, d4
7788	vadd.i64	d4, d10
7789#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
7790	# Calc new W[2]-W[3]
7791	vext.8	q6, q9, q10, #8
7792	vshl.u64	q4, q8, #45
7793	vsri.u64	q4, q8, #19
7794	vshl.u64	q5, q8, #3
7795	vsri.u64	q5, q8, #61
7796	veor	q5, q4
7797	vshr.u64	q4, q8, #6
7798	veor	q5, q4
7799	vadd.i64	q9, q5
7800	vext.8	q7, q13, q14, #8
7801	vadd.i64	q9, q7
7802	vshl.u64	q4, q6, #63
7803	vsri.u64	q4, q6, #1
7804	vshl.u64	q5, q6, #56
7805	vsri.u64	q5, q6, #8
7806	veor	q5, q4
7807	vshr.u64	q6, #7
7808	veor	q5, q6
7809	vadd.i64	q9, q5
7810#else
7811	# Calc new W[2]-W[3]
7812	vmov	d12, d19
7813	vmov	d13, d20
7814	vshl.u64	d8, d16, #45
7815	vshl.u64	d9, d17, #45
7816	vsri.u64	d8, d16, #19
7817	vsri.u64	d9, d17, #19
7818	vshl.u64	d10, d16, #3
7819	vshl.u64	d11, d17, #3
7820	vsri.u64	d10, d16, #61
7821	vsri.u64	d11, d17, #61
7822	veor	d10, d8
7823	veor	d11, d9
7824	vshr.u64	d8, d16, #6
7825	vshr.u64	d9, d17, #6
7826	veor	d10, d8
7827	veor	d11, d9
7828	vadd.i64	d18, d10
7829	vadd.i64	d19, d11
7830	vmov	d14, d27
7831	vmov	d15, d28
7832	vadd.i64	d18, d14
7833	vadd.i64	d19, d15
7834	vshl.u64	d8, d12, #63
7835	vshl.u64	d9, d13, #63
7836	vsri.u64	d8, d12, #1
7837	vsri.u64	d9, d13, #1
7838	vshl.u64	d10, d12, #56
7839	vshl.u64	d11, d13, #56
7840	vsri.u64	d10, d12, #8
7841	vsri.u64	d11, d13, #8
7842	veor	d10, d8
7843	veor	d11, d9
7844	vshr.u64	d12, #7
7845	vshr.u64	d13, #7
7846	veor	d10, d12
7847	veor	d11, d13
7848	vadd.i64	d18, d10
7849	vadd.i64	d19, d11
7850#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
7851	# Round 4
7852	vld1.64	{d12}, [r3:64]!
7853	vshl.u64	d8, d0, #50
7854	vsri.u64	d8, d0, #14
7855	vshl.u64	d9, d4, #36
7856	vsri.u64	d9, d4, #28
7857	vshl.u64	d10, d0, #46
7858	vsri.u64	d10, d0, #18
7859	vshl.u64	d11, d4, #30
7860	vsri.u64	d11, d4, #34
7861	veor	d8, d10
7862	veor	d9, d11
7863	vshl.u64	d10, d0, #23
7864	vsri.u64	d10, d0, #41
7865	vshl.u64	d11, d4, #25
7866	vsri.u64	d11, d4, #39
7867	veor	d8, d10
7868	veor	d9, d11
7869	vadd.i64	d3, d8
7870	vadd.i64	d12, d20
7871	vmov	d8, d0
7872	veor	d10, d5, d6
7873	vadd.i64	d3, d12
7874	vbsl	d8, d1, d2
7875	vbsl	d10, d4, d6
7876	vadd.i64	d3, d8
7877	vadd.i64	d10, d9
7878	vadd.i64	d7, d3
7879	vadd.i64	d3, d10
7880	# Round 5
7881	vld1.64	{d12}, [r3:64]!
7882	vshl.u64	d8, d7, #50
7883	vsri.u64	d8, d7, #14
7884	vshl.u64	d9, d3, #36
7885	vsri.u64	d9, d3, #28
7886	vshl.u64	d10, d7, #46
7887	vsri.u64	d10, d7, #18
7888	vshl.u64	d11, d3, #30
7889	vsri.u64	d11, d3, #34
7890	veor	d8, d10
7891	veor	d9, d11
7892	vshl.u64	d10, d7, #23
7893	vsri.u64	d10, d7, #41
7894	vshl.u64	d11, d3, #25
7895	vsri.u64	d11, d3, #39
7896	veor	d8, d10
7897	veor	d9, d11
7898	vadd.i64	d2, d8
7899	vadd.i64	d12, d21
7900	vmov	d8, d7
7901	veor	d10, d4, d5
7902	vadd.i64	d2, d12
7903	vbsl	d8, d0, d1
7904	vbsl	d10, d3, d5
7905	vadd.i64	d2, d8
7906	vadd.i64	d10, d9
7907	vadd.i64	d6, d2
7908	vadd.i64	d2, d10
7909#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
7910	# Calc new W[4]-W[5]
7911	vext.8	q6, q10, q11, #8
7912	vshl.u64	q4, q9, #45
7913	vsri.u64	q4, q9, #19
7914	vshl.u64	q5, q9, #3
7915	vsri.u64	q5, q9, #61
7916	veor	q5, q4
7917	vshr.u64	q4, q9, #6
7918	veor	q5, q4
7919	vadd.i64	q10, q5
7920	vext.8	q7, q14, q15, #8
7921	vadd.i64	q10, q7
7922	vshl.u64	q4, q6, #63
7923	vsri.u64	q4, q6, #1
7924	vshl.u64	q5, q6, #56
7925	vsri.u64	q5, q6, #8
7926	veor	q5, q4
7927	vshr.u64	q6, #7
7928	veor	q5, q6
7929	vadd.i64	q10, q5
7930#else
7931	# Calc new W[4]-W[5]
7932	vmov	d12, d21
7933	vmov	d13, d22
7934	vshl.u64	d8, d18, #45
7935	vshl.u64	d9, d19, #45
7936	vsri.u64	d8, d18, #19
7937	vsri.u64	d9, d19, #19
7938	vshl.u64	d10, d18, #3
7939	vshl.u64	d11, d19, #3
7940	vsri.u64	d10, d18, #61
7941	vsri.u64	d11, d19, #61
7942	veor	d10, d8
7943	veor	d11, d9
7944	vshr.u64	d8, d18, #6
7945	vshr.u64	d9, d19, #6
7946	veor	d10, d8
7947	veor	d11, d9
7948	vadd.i64	d20, d10
7949	vadd.i64	d21, d11
7950	vmov	d14, d29
7951	vmov	d15, d30
7952	vadd.i64	d20, d14
7953	vadd.i64	d21, d15
7954	vshl.u64	d8, d12, #63
7955	vshl.u64	d9, d13, #63
7956	vsri.u64	d8, d12, #1
7957	vsri.u64	d9, d13, #1
7958	vshl.u64	d10, d12, #56
7959	vshl.u64	d11, d13, #56
7960	vsri.u64	d10, d12, #8
7961	vsri.u64	d11, d13, #8
7962	veor	d10, d8
7963	veor	d11, d9
7964	vshr.u64	d12, #7
7965	vshr.u64	d13, #7
7966	veor	d10, d12
7967	veor	d11, d13
7968	vadd.i64	d20, d10
7969	vadd.i64	d21, d11
7970#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
7971	# Round 6
7972	vld1.64	{d12}, [r3:64]!
7973	vshl.u64	d8, d6, #50
7974	vsri.u64	d8, d6, #14
7975	vshl.u64	d9, d2, #36
7976	vsri.u64	d9, d2, #28
7977	vshl.u64	d10, d6, #46
7978	vsri.u64	d10, d6, #18
7979	vshl.u64	d11, d2, #30
7980	vsri.u64	d11, d2, #34
7981	veor	d8, d10
7982	veor	d9, d11
7983	vshl.u64	d10, d6, #23
7984	vsri.u64	d10, d6, #41
7985	vshl.u64	d11, d2, #25
7986	vsri.u64	d11, d2, #39
7987	veor	d8, d10
7988	veor	d9, d11
7989	vadd.i64	d1, d8
7990	vadd.i64	d12, d22
7991	vmov	d8, d6
7992	veor	d10, d3, d4
7993	vadd.i64	d1, d12
7994	vbsl	d8, d7, d0
7995	vbsl	d10, d2, d4
7996	vadd.i64	d1, d8
7997	vadd.i64	d10, d9
7998	vadd.i64	d5, d1
7999	vadd.i64	d1, d10
8000	# Round 7
8001	vld1.64	{d12}, [r3:64]!
8002	vshl.u64	d8, d5, #50
8003	vsri.u64	d8, d5, #14
8004	vshl.u64	d9, d1, #36
8005	vsri.u64	d9, d1, #28
8006	vshl.u64	d10, d5, #46
8007	vsri.u64	d10, d5, #18
8008	vshl.u64	d11, d1, #30
8009	vsri.u64	d11, d1, #34
8010	veor	d8, d10
8011	veor	d9, d11
8012	vshl.u64	d10, d5, #23
8013	vsri.u64	d10, d5, #41
8014	vshl.u64	d11, d1, #25
8015	vsri.u64	d11, d1, #39
8016	veor	d8, d10
8017	veor	d9, d11
8018	vadd.i64	d0, d8
8019	vadd.i64	d12, d23
8020	vmov	d8, d5
8021	veor	d10, d2, d3
8022	vadd.i64	d0, d12
8023	vbsl	d8, d6, d7
8024	vbsl	d10, d1, d3
8025	vadd.i64	d0, d8
8026	vadd.i64	d10, d9
8027	vadd.i64	d4, d0
8028	vadd.i64	d0, d10
8029#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
8030	# Calc new W[6]-W[7]
8031	vext.8	q6, q11, q12, #8
8032	vshl.u64	q4, q10, #45
8033	vsri.u64	q4, q10, #19
8034	vshl.u64	q5, q10, #3
8035	vsri.u64	q5, q10, #61
8036	veor	q5, q4
8037	vshr.u64	q4, q10, #6
8038	veor	q5, q4
8039	vadd.i64	q11, q5
8040	vext.8	q7, q15, q8, #8
8041	vadd.i64	q11, q7
8042	vshl.u64	q4, q6, #63
8043	vsri.u64	q4, q6, #1
8044	vshl.u64	q5, q6, #56
8045	vsri.u64	q5, q6, #8
8046	veor	q5, q4
8047	vshr.u64	q6, #7
8048	veor	q5, q6
8049	vadd.i64	q11, q5
8050#else
8051	# Calc new W[6]-W[7]
8052	vmov	d12, d23
8053	vmov	d13, d24
8054	vshl.u64	d8, d20, #45
8055	vshl.u64	d9, d21, #45
8056	vsri.u64	d8, d20, #19
8057	vsri.u64	d9, d21, #19
8058	vshl.u64	d10, d20, #3
8059	vshl.u64	d11, d21, #3
8060	vsri.u64	d10, d20, #61
8061	vsri.u64	d11, d21, #61
8062	veor	d10, d8
8063	veor	d11, d9
8064	vshr.u64	d8, d20, #6
8065	vshr.u64	d9, d21, #6
8066	veor	d10, d8
8067	veor	d11, d9
8068	vadd.i64	d22, d10
8069	vadd.i64	d23, d11
8070	vmov	d14, d31
8071	vmov	d15, d16
8072	vadd.i64	d22, d14
8073	vadd.i64	d23, d15
8074	vshl.u64	d8, d12, #63
8075	vshl.u64	d9, d13, #63
8076	vsri.u64	d8, d12, #1
8077	vsri.u64	d9, d13, #1
8078	vshl.u64	d10, d12, #56
8079	vshl.u64	d11, d13, #56
8080	vsri.u64	d10, d12, #8
8081	vsri.u64	d11, d13, #8
8082	veor	d10, d8
8083	veor	d11, d9
8084	vshr.u64	d12, #7
8085	vshr.u64	d13, #7
8086	veor	d10, d12
8087	veor	d11, d13
8088	vadd.i64	d22, d10
8089	vadd.i64	d23, d11
8090#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
8091	# Round 8
8092	vld1.64	{d12}, [r3:64]!
8093	vshl.u64	d8, d4, #50
8094	vsri.u64	d8, d4, #14
8095	vshl.u64	d9, d0, #36
8096	vsri.u64	d9, d0, #28
8097	vshl.u64	d10, d4, #46
8098	vsri.u64	d10, d4, #18
8099	vshl.u64	d11, d0, #30
8100	vsri.u64	d11, d0, #34
8101	veor	d8, d10
8102	veor	d9, d11
8103	vshl.u64	d10, d4, #23
8104	vsri.u64	d10, d4, #41
8105	vshl.u64	d11, d0, #25
8106	vsri.u64	d11, d0, #39
8107	veor	d8, d10
8108	veor	d9, d11
8109	vadd.i64	d7, d8
8110	vadd.i64	d12, d24
8111	vmov	d8, d4
8112	veor	d10, d1, d2
8113	vadd.i64	d7, d12
8114	vbsl	d8, d5, d6
8115	vbsl	d10, d0, d2
8116	vadd.i64	d7, d8
8117	vadd.i64	d10, d9
8118	vadd.i64	d3, d7
8119	vadd.i64	d7, d10
8120	# Round 9
8121	vld1.64	{d12}, [r3:64]!
8122	vshl.u64	d8, d3, #50
8123	vsri.u64	d8, d3, #14
8124	vshl.u64	d9, d7, #36
8125	vsri.u64	d9, d7, #28
8126	vshl.u64	d10, d3, #46
8127	vsri.u64	d10, d3, #18
8128	vshl.u64	d11, d7, #30
8129	vsri.u64	d11, d7, #34
8130	veor	d8, d10
8131	veor	d9, d11
8132	vshl.u64	d10, d3, #23
8133	vsri.u64	d10, d3, #41
8134	vshl.u64	d11, d7, #25
8135	vsri.u64	d11, d7, #39
8136	veor	d8, d10
8137	veor	d9, d11
8138	vadd.i64	d6, d8
8139	vadd.i64	d12, d25
8140	vmov	d8, d3
8141	veor	d10, d0, d1
8142	vadd.i64	d6, d12
8143	vbsl	d8, d4, d5
8144	vbsl	d10, d7, d1
8145	vadd.i64	d6, d8
8146	vadd.i64	d10, d9
8147	vadd.i64	d2, d6
8148	vadd.i64	d6, d10
8149#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
8150	# Calc new W[8]-W[9]
8151	vext.8	q6, q12, q13, #8
8152	vshl.u64	q4, q11, #45
8153	vsri.u64	q4, q11, #19
8154	vshl.u64	q5, q11, #3
8155	vsri.u64	q5, q11, #61
8156	veor	q5, q4
8157	vshr.u64	q4, q11, #6
8158	veor	q5, q4
8159	vadd.i64	q12, q5
8160	vext.8	q7, q8, q9, #8
8161	vadd.i64	q12, q7
8162	vshl.u64	q4, q6, #63
8163	vsri.u64	q4, q6, #1
8164	vshl.u64	q5, q6, #56
8165	vsri.u64	q5, q6, #8
8166	veor	q5, q4
8167	vshr.u64	q6, #7
8168	veor	q5, q6
8169	vadd.i64	q12, q5
8170#else
8171	# Calc new W[8]-W[9]
8172	vmov	d12, d25
8173	vmov	d13, d26
8174	vshl.u64	d8, d22, #45
8175	vshl.u64	d9, d23, #45
8176	vsri.u64	d8, d22, #19
8177	vsri.u64	d9, d23, #19
8178	vshl.u64	d10, d22, #3
8179	vshl.u64	d11, d23, #3
8180	vsri.u64	d10, d22, #61
8181	vsri.u64	d11, d23, #61
8182	veor	d10, d8
8183	veor	d11, d9
8184	vshr.u64	d8, d22, #6
8185	vshr.u64	d9, d23, #6
8186	veor	d10, d8
8187	veor	d11, d9
8188	vadd.i64	d24, d10
8189	vadd.i64	d25, d11
8190	vmov	d14, d17
8191	vmov	d15, d18
8192	vadd.i64	d24, d14
8193	vadd.i64	d25, d15
8194	vshl.u64	d8, d12, #63
8195	vshl.u64	d9, d13, #63
8196	vsri.u64	d8, d12, #1
8197	vsri.u64	d9, d13, #1
8198	vshl.u64	d10, d12, #56
8199	vshl.u64	d11, d13, #56
8200	vsri.u64	d10, d12, #8
8201	vsri.u64	d11, d13, #8
8202	veor	d10, d8
8203	veor	d11, d9
8204	vshr.u64	d12, #7
8205	vshr.u64	d13, #7
8206	veor	d10, d12
8207	veor	d11, d13
8208	vadd.i64	d24, d10
8209	vadd.i64	d25, d11
8210#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
8211	# Round 10
8212	vld1.64	{d12}, [r3:64]!
8213	vshl.u64	d8, d2, #50
8214	vsri.u64	d8, d2, #14
8215	vshl.u64	d9, d6, #36
8216	vsri.u64	d9, d6, #28
8217	vshl.u64	d10, d2, #46
8218	vsri.u64	d10, d2, #18
8219	vshl.u64	d11, d6, #30
8220	vsri.u64	d11, d6, #34
8221	veor	d8, d10
8222	veor	d9, d11
8223	vshl.u64	d10, d2, #23
8224	vsri.u64	d10, d2, #41
8225	vshl.u64	d11, d6, #25
8226	vsri.u64	d11, d6, #39
8227	veor	d8, d10
8228	veor	d9, d11
8229	vadd.i64	d5, d8
8230	vadd.i64	d12, d26
8231	vmov	d8, d2
8232	veor	d10, d7, d0
8233	vadd.i64	d5, d12
8234	vbsl	d8, d3, d4
8235	vbsl	d10, d6, d0
8236	vadd.i64	d5, d8
8237	vadd.i64	d10, d9
8238	vadd.i64	d1, d5
8239	vadd.i64	d5, d10
8240	# Round 11
8241	vld1.64	{d12}, [r3:64]!
8242	vshl.u64	d8, d1, #50
8243	vsri.u64	d8, d1, #14
8244	vshl.u64	d9, d5, #36
8245	vsri.u64	d9, d5, #28
8246	vshl.u64	d10, d1, #46
8247	vsri.u64	d10, d1, #18
8248	vshl.u64	d11, d5, #30
8249	vsri.u64	d11, d5, #34
8250	veor	d8, d10
8251	veor	d9, d11
8252	vshl.u64	d10, d1, #23
8253	vsri.u64	d10, d1, #41
8254	vshl.u64	d11, d5, #25
8255	vsri.u64	d11, d5, #39
8256	veor	d8, d10
8257	veor	d9, d11
8258	vadd.i64	d4, d8
8259	vadd.i64	d12, d27
8260	vmov	d8, d1
8261	veor	d10, d6, d7
8262	vadd.i64	d4, d12
8263	vbsl	d8, d2, d3
8264	vbsl	d10, d5, d7
8265	vadd.i64	d4, d8
8266	vadd.i64	d10, d9
8267	vadd.i64	d0, d4
8268	vadd.i64	d4, d10
8269#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
8270	# Calc new W[10]-W[11]
8271	vext.8	q6, q13, q14, #8
8272	vshl.u64	q4, q12, #45
8273	vsri.u64	q4, q12, #19
8274	vshl.u64	q5, q12, #3
8275	vsri.u64	q5, q12, #61
8276	veor	q5, q4
8277	vshr.u64	q4, q12, #6
8278	veor	q5, q4
8279	vadd.i64	q13, q5
8280	vext.8	q7, q9, q10, #8
8281	vadd.i64	q13, q7
8282	vshl.u64	q4, q6, #63
8283	vsri.u64	q4, q6, #1
8284	vshl.u64	q5, q6, #56
8285	vsri.u64	q5, q6, #8
8286	veor	q5, q4
8287	vshr.u64	q6, #7
8288	veor	q5, q6
8289	vadd.i64	q13, q5
8290#else
8291	# Calc new W[10]-W[11]
8292	vmov	d12, d27
8293	vmov	d13, d28
8294	vshl.u64	d8, d24, #45
8295	vshl.u64	d9, d25, #45
8296	vsri.u64	d8, d24, #19
8297	vsri.u64	d9, d25, #19
8298	vshl.u64	d10, d24, #3
8299	vshl.u64	d11, d25, #3
8300	vsri.u64	d10, d24, #61
8301	vsri.u64	d11, d25, #61
8302	veor	d10, d8
8303	veor	d11, d9
8304	vshr.u64	d8, d24, #6
8305	vshr.u64	d9, d25, #6
8306	veor	d10, d8
8307	veor	d11, d9
8308	vadd.i64	d26, d10
8309	vadd.i64	d27, d11
8310	vmov	d14, d19
8311	vmov	d15, d20
8312	vadd.i64	d26, d14
8313	vadd.i64	d27, d15
8314	vshl.u64	d8, d12, #63
8315	vshl.u64	d9, d13, #63
8316	vsri.u64	d8, d12, #1
8317	vsri.u64	d9, d13, #1
8318	vshl.u64	d10, d12, #56
8319	vshl.u64	d11, d13, #56
8320	vsri.u64	d10, d12, #8
8321	vsri.u64	d11, d13, #8
8322	veor	d10, d8
8323	veor	d11, d9
8324	vshr.u64	d12, #7
8325	vshr.u64	d13, #7
8326	veor	d10, d12
8327	veor	d11, d13
8328	vadd.i64	d26, d10
8329	vadd.i64	d27, d11
8330#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
8331	# Round 12
8332	vld1.64	{d12}, [r3:64]!
8333	vshl.u64	d8, d0, #50
8334	vsri.u64	d8, d0, #14
8335	vshl.u64	d9, d4, #36
8336	vsri.u64	d9, d4, #28
8337	vshl.u64	d10, d0, #46
8338	vsri.u64	d10, d0, #18
8339	vshl.u64	d11, d4, #30
8340	vsri.u64	d11, d4, #34
8341	veor	d8, d10
8342	veor	d9, d11
8343	vshl.u64	d10, d0, #23
8344	vsri.u64	d10, d0, #41
8345	vshl.u64	d11, d4, #25
8346	vsri.u64	d11, d4, #39
8347	veor	d8, d10
8348	veor	d9, d11
8349	vadd.i64	d3, d8
8350	vadd.i64	d12, d28
8351	vmov	d8, d0
8352	veor	d10, d5, d6
8353	vadd.i64	d3, d12
8354	vbsl	d8, d1, d2
8355	vbsl	d10, d4, d6
8356	vadd.i64	d3, d8
8357	vadd.i64	d10, d9
8358	vadd.i64	d7, d3
8359	vadd.i64	d3, d10
8360	# Round 13
8361	vld1.64	{d12}, [r3:64]!
8362	vshl.u64	d8, d7, #50
8363	vsri.u64	d8, d7, #14
8364	vshl.u64	d9, d3, #36
8365	vsri.u64	d9, d3, #28
8366	vshl.u64	d10, d7, #46
8367	vsri.u64	d10, d7, #18
8368	vshl.u64	d11, d3, #30
8369	vsri.u64	d11, d3, #34
8370	veor	d8, d10
8371	veor	d9, d11
8372	vshl.u64	d10, d7, #23
8373	vsri.u64	d10, d7, #41
8374	vshl.u64	d11, d3, #25
8375	vsri.u64	d11, d3, #39
8376	veor	d8, d10
8377	veor	d9, d11
8378	vadd.i64	d2, d8
8379	vadd.i64	d12, d29
8380	vmov	d8, d7
8381	veor	d10, d4, d5
8382	vadd.i64	d2, d12
8383	vbsl	d8, d0, d1
8384	vbsl	d10, d3, d5
8385	vadd.i64	d2, d8
8386	vadd.i64	d10, d9
8387	vadd.i64	d6, d2
8388	vadd.i64	d2, d10
8389#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
8390	# Calc new W[12]-W[13]
8391	vext.8	q6, q14, q15, #8
8392	vshl.u64	q4, q13, #45
8393	vsri.u64	q4, q13, #19
8394	vshl.u64	q5, q13, #3
8395	vsri.u64	q5, q13, #61
8396	veor	q5, q4
8397	vshr.u64	q4, q13, #6
8398	veor	q5, q4
8399	vadd.i64	q14, q5
8400	vext.8	q7, q10, q11, #8
8401	vadd.i64	q14, q7
8402	vshl.u64	q4, q6, #63
8403	vsri.u64	q4, q6, #1
8404	vshl.u64	q5, q6, #56
8405	vsri.u64	q5, q6, #8
8406	veor	q5, q4
8407	vshr.u64	q6, #7
8408	veor	q5, q6
8409	vadd.i64	q14, q5
8410#else
8411	# Calc new W[12]-W[13]
8412	vmov	d12, d29
8413	vmov	d13, d30
8414	vshl.u64	d8, d26, #45
8415	vshl.u64	d9, d27, #45
8416	vsri.u64	d8, d26, #19
8417	vsri.u64	d9, d27, #19
8418	vshl.u64	d10, d26, #3
8419	vshl.u64	d11, d27, #3
8420	vsri.u64	d10, d26, #61
8421	vsri.u64	d11, d27, #61
8422	veor	d10, d8
8423	veor	d11, d9
8424	vshr.u64	d8, d26, #6
8425	vshr.u64	d9, d27, #6
8426	veor	d10, d8
8427	veor	d11, d9
8428	vadd.i64	d28, d10
8429	vadd.i64	d29, d11
8430	vmov	d14, d21
8431	vmov	d15, d22
8432	vadd.i64	d28, d14
8433	vadd.i64	d29, d15
8434	vshl.u64	d8, d12, #63
8435	vshl.u64	d9, d13, #63
8436	vsri.u64	d8, d12, #1
8437	vsri.u64	d9, d13, #1
8438	vshl.u64	d10, d12, #56
8439	vshl.u64	d11, d13, #56
8440	vsri.u64	d10, d12, #8
8441	vsri.u64	d11, d13, #8
8442	veor	d10, d8
8443	veor	d11, d9
8444	vshr.u64	d12, #7
8445	vshr.u64	d13, #7
8446	veor	d10, d12
8447	veor	d11, d13
8448	vadd.i64	d28, d10
8449	vadd.i64	d29, d11
8450#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
8451	# Round 14
8452	vld1.64	{d12}, [r3:64]!
8453	vshl.u64	d8, d6, #50
8454	vsri.u64	d8, d6, #14
8455	vshl.u64	d9, d2, #36
8456	vsri.u64	d9, d2, #28
8457	vshl.u64	d10, d6, #46
8458	vsri.u64	d10, d6, #18
8459	vshl.u64	d11, d2, #30
8460	vsri.u64	d11, d2, #34
8461	veor	d8, d10
8462	veor	d9, d11
8463	vshl.u64	d10, d6, #23
8464	vsri.u64	d10, d6, #41
8465	vshl.u64	d11, d2, #25
8466	vsri.u64	d11, d2, #39
8467	veor	d8, d10
8468	veor	d9, d11
8469	vadd.i64	d1, d8
8470	vadd.i64	d12, d30
8471	vmov	d8, d6
8472	veor	d10, d3, d4
8473	vadd.i64	d1, d12
8474	vbsl	d8, d7, d0
8475	vbsl	d10, d2, d4
8476	vadd.i64	d1, d8
8477	vadd.i64	d10, d9
8478	vadd.i64	d5, d1
8479	vadd.i64	d1, d10
8480	# Round 15
8481	vld1.64	{d12}, [r3:64]!
8482	vshl.u64	d8, d5, #50
8483	vsri.u64	d8, d5, #14
8484	vshl.u64	d9, d1, #36
8485	vsri.u64	d9, d1, #28
8486	vshl.u64	d10, d5, #46
8487	vsri.u64	d10, d5, #18
8488	vshl.u64	d11, d1, #30
8489	vsri.u64	d11, d1, #34
8490	veor	d8, d10
8491	veor	d9, d11
8492	vshl.u64	d10, d5, #23
8493	vsri.u64	d10, d5, #41
8494	vshl.u64	d11, d1, #25
8495	vsri.u64	d11, d1, #39
8496	veor	d8, d10
8497	veor	d9, d11
8498	vadd.i64	d0, d8
8499	vadd.i64	d12, d31
8500	vmov	d8, d5
8501	veor	d10, d2, d3
8502	vadd.i64	d0, d12
8503	vbsl	d8, d6, d7
8504	vbsl	d10, d1, d3
8505	vadd.i64	d0, d8
8506	vadd.i64	d10, d9
8507	vadd.i64	d4, d0
8508	vadd.i64	d0, d10
8509#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
8510	# Calc new W[14]-W[15]
8511	vext.8	q6, q15, q8, #8
8512	vshl.u64	q4, q14, #45
8513	vsri.u64	q4, q14, #19
8514	vshl.u64	q5, q14, #3
8515	vsri.u64	q5, q14, #61
8516	veor	q5, q4
8517	vshr.u64	q4, q14, #6
8518	veor	q5, q4
8519	vadd.i64	q15, q5
8520	vext.8	q7, q11, q12, #8
8521	vadd.i64	q15, q7
8522	vshl.u64	q4, q6, #63
8523	vsri.u64	q4, q6, #1
8524	vshl.u64	q5, q6, #56
8525	vsri.u64	q5, q6, #8
8526	veor	q5, q4
8527	vshr.u64	q6, #7
8528	veor	q5, q6
8529	vadd.i64	q15, q5
8530#else
8531	# Calc new W[14]-W[15]
8532	vmov	d12, d31
8533	vmov	d13, d16
8534	vshl.u64	d8, d28, #45
8535	vshl.u64	d9, d29, #45
8536	vsri.u64	d8, d28, #19
8537	vsri.u64	d9, d29, #19
8538	vshl.u64	d10, d28, #3
8539	vshl.u64	d11, d29, #3
8540	vsri.u64	d10, d28, #61
8541	vsri.u64	d11, d29, #61
8542	veor	d10, d8
8543	veor	d11, d9
8544	vshr.u64	d8, d28, #6
8545	vshr.u64	d9, d29, #6
8546	veor	d10, d8
8547	veor	d11, d9
8548	vadd.i64	d30, d10
8549	vadd.i64	d31, d11
8550	vmov	d14, d23
8551	vmov	d15, d24
8552	vadd.i64	d30, d14
8553	vadd.i64	d31, d15
8554	vshl.u64	d8, d12, #63
8555	vshl.u64	d9, d13, #63
8556	vsri.u64	d8, d12, #1
8557	vsri.u64	d9, d13, #1
8558	vshl.u64	d10, d12, #56
8559	vshl.u64	d11, d13, #56
8560	vsri.u64	d10, d12, #8
8561	vsri.u64	d11, d13, #8
8562	veor	d10, d8
8563	veor	d11, d9
8564	vshr.u64	d12, #7
8565	vshr.u64	d13, #7
8566	veor	d10, d12
8567	veor	d11, d13
8568	vadd.i64	d30, d10
8569	vadd.i64	d31, d11
8570#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
8571	subs	r12, r12, #1
8572	bne	L_SHA512_transform_neon_len_start
8573	# Round 0
8574	vld1.64	{d12}, [r3:64]!
8575	vshl.u64	d8, d4, #50
8576	vsri.u64	d8, d4, #14
8577	vshl.u64	d9, d0, #36
8578	vsri.u64	d9, d0, #28
8579	vshl.u64	d10, d4, #46
8580	vsri.u64	d10, d4, #18
8581	vshl.u64	d11, d0, #30
8582	vsri.u64	d11, d0, #34
8583	veor	d8, d10
8584	veor	d9, d11
8585	vshl.u64	d10, d4, #23
8586	vsri.u64	d10, d4, #41
8587	vshl.u64	d11, d0, #25
8588	vsri.u64	d11, d0, #39
8589	veor	d8, d10
8590	veor	d9, d11
8591	vadd.i64	d7, d8
8592	vadd.i64	d12, d16
8593	vmov	d8, d4
8594	veor	d10, d1, d2
8595	vadd.i64	d7, d12
8596	vbsl	d8, d5, d6
8597	vbsl	d10, d0, d2
8598	vadd.i64	d7, d8
8599	vadd.i64	d10, d9
8600	vadd.i64	d3, d7
8601	vadd.i64	d7, d10
8602	# Round 1
8603	vld1.64	{d12}, [r3:64]!
8604	vshl.u64	d8, d3, #50
8605	vsri.u64	d8, d3, #14
8606	vshl.u64	d9, d7, #36
8607	vsri.u64	d9, d7, #28
8608	vshl.u64	d10, d3, #46
8609	vsri.u64	d10, d3, #18
8610	vshl.u64	d11, d7, #30
8611	vsri.u64	d11, d7, #34
8612	veor	d8, d10
8613	veor	d9, d11
8614	vshl.u64	d10, d3, #23
8615	vsri.u64	d10, d3, #41
8616	vshl.u64	d11, d7, #25
8617	vsri.u64	d11, d7, #39
8618	veor	d8, d10
8619	veor	d9, d11
8620	vadd.i64	d6, d8
8621	vadd.i64	d12, d17
8622	vmov	d8, d3
8623	veor	d10, d0, d1
8624	vadd.i64	d6, d12
8625	vbsl	d8, d4, d5
8626	vbsl	d10, d7, d1
8627	vadd.i64	d6, d8
8628	vadd.i64	d10, d9
8629	vadd.i64	d2, d6
8630	vadd.i64	d6, d10
8631	# Round 2
8632	vld1.64	{d12}, [r3:64]!
8633	vshl.u64	d8, d2, #50
8634	vsri.u64	d8, d2, #14
8635	vshl.u64	d9, d6, #36
8636	vsri.u64	d9, d6, #28
8637	vshl.u64	d10, d2, #46
8638	vsri.u64	d10, d2, #18
8639	vshl.u64	d11, d6, #30
8640	vsri.u64	d11, d6, #34
8641	veor	d8, d10
8642	veor	d9, d11
8643	vshl.u64	d10, d2, #23
8644	vsri.u64	d10, d2, #41
8645	vshl.u64	d11, d6, #25
8646	vsri.u64	d11, d6, #39
8647	veor	d8, d10
8648	veor	d9, d11
8649	vadd.i64	d5, d8
8650	vadd.i64	d12, d18
8651	vmov	d8, d2
8652	veor	d10, d7, d0
8653	vadd.i64	d5, d12
8654	vbsl	d8, d3, d4
8655	vbsl	d10, d6, d0
8656	vadd.i64	d5, d8
8657	vadd.i64	d10, d9
8658	vadd.i64	d1, d5
8659	vadd.i64	d5, d10
8660	# Round 3
8661	vld1.64	{d12}, [r3:64]!
8662	vshl.u64	d8, d1, #50
8663	vsri.u64	d8, d1, #14
8664	vshl.u64	d9, d5, #36
8665	vsri.u64	d9, d5, #28
8666	vshl.u64	d10, d1, #46
8667	vsri.u64	d10, d1, #18
8668	vshl.u64	d11, d5, #30
8669	vsri.u64	d11, d5, #34
8670	veor	d8, d10
8671	veor	d9, d11
8672	vshl.u64	d10, d1, #23
8673	vsri.u64	d10, d1, #41
8674	vshl.u64	d11, d5, #25
8675	vsri.u64	d11, d5, #39
8676	veor	d8, d10
8677	veor	d9, d11
8678	vadd.i64	d4, d8
8679	vadd.i64	d12, d19
8680	vmov	d8, d1
8681	veor	d10, d6, d7
8682	vadd.i64	d4, d12
8683	vbsl	d8, d2, d3
8684	vbsl	d10, d5, d7
8685	vadd.i64	d4, d8
8686	vadd.i64	d10, d9
8687	vadd.i64	d0, d4
8688	vadd.i64	d4, d10
8689	# Round 4
8690	vld1.64	{d12}, [r3:64]!
8691	vshl.u64	d8, d0, #50
8692	vsri.u64	d8, d0, #14
8693	vshl.u64	d9, d4, #36
8694	vsri.u64	d9, d4, #28
8695	vshl.u64	d10, d0, #46
8696	vsri.u64	d10, d0, #18
8697	vshl.u64	d11, d4, #30
8698	vsri.u64	d11, d4, #34
8699	veor	d8, d10
8700	veor	d9, d11
8701	vshl.u64	d10, d0, #23
8702	vsri.u64	d10, d0, #41
8703	vshl.u64	d11, d4, #25
8704	vsri.u64	d11, d4, #39
8705	veor	d8, d10
8706	veor	d9, d11
8707	vadd.i64	d3, d8
8708	vadd.i64	d12, d20
8709	vmov	d8, d0
8710	veor	d10, d5, d6
8711	vadd.i64	d3, d12
8712	vbsl	d8, d1, d2
8713	vbsl	d10, d4, d6
8714	vadd.i64	d3, d8
8715	vadd.i64	d10, d9
8716	vadd.i64	d7, d3
8717	vadd.i64	d3, d10
8718	# Round 5
8719	vld1.64	{d12}, [r3:64]!
8720	vshl.u64	d8, d7, #50
8721	vsri.u64	d8, d7, #14
8722	vshl.u64	d9, d3, #36
8723	vsri.u64	d9, d3, #28
8724	vshl.u64	d10, d7, #46
8725	vsri.u64	d10, d7, #18
8726	vshl.u64	d11, d3, #30
8727	vsri.u64	d11, d3, #34
8728	veor	d8, d10
8729	veor	d9, d11
8730	vshl.u64	d10, d7, #23
8731	vsri.u64	d10, d7, #41
8732	vshl.u64	d11, d3, #25
8733	vsri.u64	d11, d3, #39
8734	veor	d8, d10
8735	veor	d9, d11
8736	vadd.i64	d2, d8
8737	vadd.i64	d12, d21
8738	vmov	d8, d7
8739	veor	d10, d4, d5
8740	vadd.i64	d2, d12
8741	vbsl	d8, d0, d1
8742	vbsl	d10, d3, d5
8743	vadd.i64	d2, d8
8744	vadd.i64	d10, d9
8745	vadd.i64	d6, d2
8746	vadd.i64	d2, d10
8747	# Round 6
8748	vld1.64	{d12}, [r3:64]!
8749	vshl.u64	d8, d6, #50
8750	vsri.u64	d8, d6, #14
8751	vshl.u64	d9, d2, #36
8752	vsri.u64	d9, d2, #28
8753	vshl.u64	d10, d6, #46
8754	vsri.u64	d10, d6, #18
8755	vshl.u64	d11, d2, #30
8756	vsri.u64	d11, d2, #34
8757	veor	d8, d10
8758	veor	d9, d11
8759	vshl.u64	d10, d6, #23
8760	vsri.u64	d10, d6, #41
8761	vshl.u64	d11, d2, #25
8762	vsri.u64	d11, d2, #39
8763	veor	d8, d10
8764	veor	d9, d11
8765	vadd.i64	d1, d8
8766	vadd.i64	d12, d22
8767	vmov	d8, d6
8768	veor	d10, d3, d4
8769	vadd.i64	d1, d12
8770	vbsl	d8, d7, d0
8771	vbsl	d10, d2, d4
8772	vadd.i64	d1, d8
8773	vadd.i64	d10, d9
8774	vadd.i64	d5, d1
8775	vadd.i64	d1, d10
8776	# Round 7
8777	vld1.64	{d12}, [r3:64]!
8778	vshl.u64	d8, d5, #50
8779	vsri.u64	d8, d5, #14
8780	vshl.u64	d9, d1, #36
8781	vsri.u64	d9, d1, #28
8782	vshl.u64	d10, d5, #46
8783	vsri.u64	d10, d5, #18
8784	vshl.u64	d11, d1, #30
8785	vsri.u64	d11, d1, #34
8786	veor	d8, d10
8787	veor	d9, d11
8788	vshl.u64	d10, d5, #23
8789	vsri.u64	d10, d5, #41
8790	vshl.u64	d11, d1, #25
8791	vsri.u64	d11, d1, #39
8792	veor	d8, d10
8793	veor	d9, d11
8794	vadd.i64	d0, d8
8795	vadd.i64	d12, d23
8796	vmov	d8, d5
8797	veor	d10, d2, d3
8798	vadd.i64	d0, d12
8799	vbsl	d8, d6, d7
8800	vbsl	d10, d1, d3
8801	vadd.i64	d0, d8
8802	vadd.i64	d10, d9
8803	vadd.i64	d4, d0
8804	vadd.i64	d0, d10
8805	# Round 8
8806	vld1.64	{d12}, [r3:64]!
8807	vshl.u64	d8, d4, #50
8808	vsri.u64	d8, d4, #14
8809	vshl.u64	d9, d0, #36
8810	vsri.u64	d9, d0, #28
8811	vshl.u64	d10, d4, #46
8812	vsri.u64	d10, d4, #18
8813	vshl.u64	d11, d0, #30
8814	vsri.u64	d11, d0, #34
8815	veor	d8, d10
8816	veor	d9, d11
8817	vshl.u64	d10, d4, #23
8818	vsri.u64	d10, d4, #41
8819	vshl.u64	d11, d0, #25
8820	vsri.u64	d11, d0, #39
8821	veor	d8, d10
8822	veor	d9, d11
8823	vadd.i64	d7, d8
8824	vadd.i64	d12, d24
8825	vmov	d8, d4
8826	veor	d10, d1, d2
8827	vadd.i64	d7, d12
8828	vbsl	d8, d5, d6
8829	vbsl	d10, d0, d2
8830	vadd.i64	d7, d8
8831	vadd.i64	d10, d9
8832	vadd.i64	d3, d7
8833	vadd.i64	d7, d10
8834	# Round 9
8835	vld1.64	{d12}, [r3:64]!
8836	vshl.u64	d8, d3, #50
8837	vsri.u64	d8, d3, #14
8838	vshl.u64	d9, d7, #36
8839	vsri.u64	d9, d7, #28
8840	vshl.u64	d10, d3, #46
8841	vsri.u64	d10, d3, #18
8842	vshl.u64	d11, d7, #30
8843	vsri.u64	d11, d7, #34
8844	veor	d8, d10
8845	veor	d9, d11
8846	vshl.u64	d10, d3, #23
8847	vsri.u64	d10, d3, #41
8848	vshl.u64	d11, d7, #25
8849	vsri.u64	d11, d7, #39
8850	veor	d8, d10
8851	veor	d9, d11
8852	vadd.i64	d6, d8
8853	vadd.i64	d12, d25
8854	vmov	d8, d3
8855	veor	d10, d0, d1
8856	vadd.i64	d6, d12
8857	vbsl	d8, d4, d5
8858	vbsl	d10, d7, d1
8859	vadd.i64	d6, d8
8860	vadd.i64	d10, d9
8861	vadd.i64	d2, d6
8862	vadd.i64	d6, d10
8863	# Round 10
8864	vld1.64	{d12}, [r3:64]!
8865	vshl.u64	d8, d2, #50
8866	vsri.u64	d8, d2, #14
8867	vshl.u64	d9, d6, #36
8868	vsri.u64	d9, d6, #28
8869	vshl.u64	d10, d2, #46
8870	vsri.u64	d10, d2, #18
8871	vshl.u64	d11, d6, #30
8872	vsri.u64	d11, d6, #34
8873	veor	d8, d10
8874	veor	d9, d11
8875	vshl.u64	d10, d2, #23
8876	vsri.u64	d10, d2, #41
8877	vshl.u64	d11, d6, #25
8878	vsri.u64	d11, d6, #39
8879	veor	d8, d10
8880	veor	d9, d11
8881	vadd.i64	d5, d8
8882	vadd.i64	d12, d26
8883	vmov	d8, d2
8884	veor	d10, d7, d0
8885	vadd.i64	d5, d12
8886	vbsl	d8, d3, d4
8887	vbsl	d10, d6, d0
8888	vadd.i64	d5, d8
8889	vadd.i64	d10, d9
8890	vadd.i64	d1, d5
8891	vadd.i64	d5, d10
8892	# Round 11
8893	vld1.64	{d12}, [r3:64]!
8894	vshl.u64	d8, d1, #50
8895	vsri.u64	d8, d1, #14
8896	vshl.u64	d9, d5, #36
8897	vsri.u64	d9, d5, #28
8898	vshl.u64	d10, d1, #46
8899	vsri.u64	d10, d1, #18
8900	vshl.u64	d11, d5, #30
8901	vsri.u64	d11, d5, #34
8902	veor	d8, d10
8903	veor	d9, d11
8904	vshl.u64	d10, d1, #23
8905	vsri.u64	d10, d1, #41
8906	vshl.u64	d11, d5, #25
8907	vsri.u64	d11, d5, #39
8908	veor	d8, d10
8909	veor	d9, d11
8910	vadd.i64	d4, d8
8911	vadd.i64	d12, d27
8912	vmov	d8, d1
8913	veor	d10, d6, d7
8914	vadd.i64	d4, d12
8915	vbsl	d8, d2, d3
8916	vbsl	d10, d5, d7
8917	vadd.i64	d4, d8
8918	vadd.i64	d10, d9
8919	vadd.i64	d0, d4
8920	vadd.i64	d4, d10
8921	# Round 12
8922	vld1.64	{d12}, [r3:64]!
8923	vshl.u64	d8, d0, #50
8924	vsri.u64	d8, d0, #14
8925	vshl.u64	d9, d4, #36
8926	vsri.u64	d9, d4, #28
8927	vshl.u64	d10, d0, #46
8928	vsri.u64	d10, d0, #18
8929	vshl.u64	d11, d4, #30
8930	vsri.u64	d11, d4, #34
8931	veor	d8, d10
8932	veor	d9, d11
8933	vshl.u64	d10, d0, #23
8934	vsri.u64	d10, d0, #41
8935	vshl.u64	d11, d4, #25
8936	vsri.u64	d11, d4, #39
8937	veor	d8, d10
8938	veor	d9, d11
8939	vadd.i64	d3, d8
8940	vadd.i64	d12, d28
8941	vmov	d8, d0
8942	veor	d10, d5, d6
8943	vadd.i64	d3, d12
8944	vbsl	d8, d1, d2
8945	vbsl	d10, d4, d6
8946	vadd.i64	d3, d8
8947	vadd.i64	d10, d9
8948	vadd.i64	d7, d3
8949	vadd.i64	d3, d10
8950	# Round 13
8951	vld1.64	{d12}, [r3:64]!
8952	vshl.u64	d8, d7, #50
8953	vsri.u64	d8, d7, #14
8954	vshl.u64	d9, d3, #36
8955	vsri.u64	d9, d3, #28
8956	vshl.u64	d10, d7, #46
8957	vsri.u64	d10, d7, #18
8958	vshl.u64	d11, d3, #30
8959	vsri.u64	d11, d3, #34
8960	veor	d8, d10
8961	veor	d9, d11
8962	vshl.u64	d10, d7, #23
8963	vsri.u64	d10, d7, #41
8964	vshl.u64	d11, d3, #25
8965	vsri.u64	d11, d3, #39
8966	veor	d8, d10
8967	veor	d9, d11
8968	vadd.i64	d2, d8
8969	vadd.i64	d12, d29
8970	vmov	d8, d7
8971	veor	d10, d4, d5
8972	vadd.i64	d2, d12
8973	vbsl	d8, d0, d1
8974	vbsl	d10, d3, d5
8975	vadd.i64	d2, d8
8976	vadd.i64	d10, d9
8977	vadd.i64	d6, d2
8978	vadd.i64	d2, d10
8979	# Round 14
8980	vld1.64	{d12}, [r3:64]!
8981	vshl.u64	d8, d6, #50
8982	vsri.u64	d8, d6, #14
8983	vshl.u64	d9, d2, #36
8984	vsri.u64	d9, d2, #28
8985	vshl.u64	d10, d6, #46
8986	vsri.u64	d10, d6, #18
8987	vshl.u64	d11, d2, #30
8988	vsri.u64	d11, d2, #34
8989	veor	d8, d10
8990	veor	d9, d11
8991	vshl.u64	d10, d6, #23
8992	vsri.u64	d10, d6, #41
8993	vshl.u64	d11, d2, #25
8994	vsri.u64	d11, d2, #39
8995	veor	d8, d10
8996	veor	d9, d11
8997	vadd.i64	d1, d8
8998	vadd.i64	d12, d30
8999	vmov	d8, d6
9000	veor	d10, d3, d4
9001	vadd.i64	d1, d12
9002	vbsl	d8, d7, d0
9003	vbsl	d10, d2, d4
9004	vadd.i64	d1, d8
9005	vadd.i64	d10, d9
9006	vadd.i64	d5, d1
9007	vadd.i64	d1, d10
9008	# Round 15
9009	vld1.64	{d12}, [r3:64]!
9010	vshl.u64	d8, d5, #50
9011	vsri.u64	d8, d5, #14
9012	vshl.u64	d9, d1, #36
9013	vsri.u64	d9, d1, #28
9014	vshl.u64	d10, d5, #46
9015	vsri.u64	d10, d5, #18
9016	vshl.u64	d11, d1, #30
9017	vsri.u64	d11, d1, #34
9018	veor	d8, d10
9019	veor	d9, d11
9020	vshl.u64	d10, d5, #23
9021	vsri.u64	d10, d5, #41
9022	vshl.u64	d11, d1, #25
9023	vsri.u64	d11, d1, #39
9024	veor	d8, d10
9025	veor	d9, d11
9026	vadd.i64	d0, d8
9027	vadd.i64	d12, d31
9028	vmov	d8, d5
9029	veor	d10, d2, d3
9030	vadd.i64	d0, d12
9031	vbsl	d8, d6, d7
9032	vbsl	d10, d1, d3
9033	vadd.i64	d0, d8
9034	vadd.i64	d10, d9
9035	vadd.i64	d4, d0
9036	vadd.i64	d0, d10
9037	# Add in digest from start
9038	vldm.64	r0, {d8-d15}
9039#ifndef WOLFSSL_ARM_ARCH_NEON_64BIT
9040	vadd.i64	q0, q0, q4
9041	vadd.i64	q1, q1, q5
9042	vadd.i64	q2, q2, q6
9043	vadd.i64	q3, q3, q7
9044#else
9045	vadd.i64	d0, d0, d8
9046	vadd.i64	d1, d1, d9
9047	vadd.i64	d2, d2, d10
9048	vadd.i64	d3, d3, d11
9049	vadd.i64	d4, d4, d12
9050	vadd.i64	d5, d5, d13
9051	vadd.i64	d6, d6, d14
9052	vadd.i64	d7, d7, d15
9053#endif /* WOLFSSL_ARM_ARCH_NEON_64BIT */
9054	vstm.64	r0, {d0-d7}
9055	subs	r2, r2, #0x80
9056	sub	r3, r3, #0x280
9057	bne	L_SHA512_transform_neon_len_begin
9058	vpop	{d8-d15}
9059	bx	lr
9060	.size	Transform_Sha512_Len_neon,.-Transform_Sha512_Len_neon
9061#endif /* !WOLFSSL_ARMASM_NO_NEON */
9062#endif /* WOLFSSL_SHA512 || WOLFSSL_SHA384 */
9063#endif /* !__aarch64__ && !WOLFSSL_ARMASM_THUMB2 */
9064#endif /* WOLFSSL_ARMASM */
9065
9066#if defined(__linux__) && defined(__ELF__)
9067.section	.note.GNU-stack,"",%progbits
9068#endif
9069#endif /* !WOLFSSL_ARMASM_INLINE */