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/thumb2-aes-asm.S raw
   1/* thumb2-aes-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 ./aes/aes.rb \
  25 *       thumb2 ../wolfssl/wolfcrypt/src/port/arm/thumb2-aes-asm.S
  26 */
  27
  28#include <wolfssl/wolfcrypt/libwolfssl_sources_asm.h>
  29
  30#ifdef WOLFSSL_ARMASM
  31#ifdef WOLFSSL_ARMASM_THUMB2
  32#ifndef WOLFSSL_ARMASM_INLINE
  33	.thumb
  34	.syntax unified
  35#ifndef NO_AES
  36#ifdef HAVE_AES_DECRYPT
  37#ifndef __APPLE__
  38	.text
  39	.type	L_AES_Thumb2_td_data, %object
  40	.size	L_AES_Thumb2_td_data, 1024
  41#else
  42	.section	__DATA,__data
  43#endif /* __APPLE__ */
  44	/* 8-byte aligned, 64-bit aligned */
  45#ifndef __APPLE__
  46	.align	3
  47#else
  48	.p2align	3
  49#endif /* __APPLE__ */
  50L_AES_Thumb2_td_data:
  51	.long	0x5051f4a7,0x537e4165,0xc31a17a4,0x963a275e
  52	.long	0xcb3bab6b,0xf11f9d45,0xabacfa58,0x934be303
  53	.long	0x552030fa,0xf6ad766d,0x9188cc76,0x25f5024c
  54	.long	0xfc4fe5d7,0xd7c52acb,0x80263544,0x8fb562a3
  55	.long	0x49deb15a,0x6725ba1b,0x9845ea0e,0xe15dfec0
  56	.long	0x02c32f75,0x12814cf0,0xa38d4697,0xc66bd3f9
  57	.long	0xe7038f5f,0x9515929c,0xebbf6d7a,0xda955259
  58	.long	0x2dd4be83,0xd3587421,0x2949e069,0x448ec9c8
  59	.long	0x6a75c289,0x78f48e79,0x6b99583e,0xdd27b971
  60	.long	0xb6bee14f,0x17f088ad,0x66c920ac,0xb47dce3a
  61	.long	0x1863df4a,0x82e51a31,0x60975133,0x4562537f
  62	.long	0xe0b16477,0x84bb6bae,0x1cfe81a0,0x94f9082b
  63	.long	0x58704868,0x198f45fd,0x8794de6c,0xb7527bf8
  64	.long	0x23ab73d3,0xe2724b02,0x57e31f8f,0x2a6655ab
  65	.long	0x07b2eb28,0x032fb5c2,0x9a86c57b,0xa5d33708
  66	.long	0xf2302887,0xb223bfa5,0xba02036a,0x5ced1682
  67	.long	0x2b8acf1c,0x92a779b4,0xf0f307f2,0xa14e69e2
  68	.long	0xcd65daf4,0xd50605be,0x1fd13462,0x8ac4a6fe
  69	.long	0x9d342e53,0xa0a2f355,0x32058ae1,0x75a4f6eb
  70	.long	0x390b83ec,0xaa4060ef,0x065e719f,0x51bd6e10
  71	.long	0xf93e218a,0x3d96dd06,0xaedd3e05,0x464de6bd
  72	.long	0xb591548d,0x0571c45d,0x6f0406d4,0xff605015
  73	.long	0x241998fb,0x97d6bde9,0xcc894043,0x7767d99e
  74	.long	0xbdb0e842,0x8807898b,0x38e7195b,0xdb79c8ee
  75	.long	0x47a17c0a,0xe97c420f,0xc9f8841e,0x00000000
  76	.long	0x83098086,0x48322bed,0xac1e1170,0x4e6c5a72
  77	.long	0xfbfd0eff,0x560f8538,0x1e3daed5,0x27362d39
  78	.long	0x640a0fd9,0x21685ca6,0xd19b5b54,0x3a24362e
  79	.long	0xb10c0a67,0x0f9357e7,0xd2b4ee96,0x9e1b9b91
  80	.long	0x4f80c0c5,0xa261dc20,0x695a774b,0x161c121a
  81	.long	0x0ae293ba,0xe5c0a02a,0x433c22e0,0x1d121b17
  82	.long	0x0b0e090d,0xadf28bc7,0xb92db6a8,0xc8141ea9
  83	.long	0x8557f119,0x4caf7507,0xbbee99dd,0xfda37f60
  84	.long	0x9ff70126,0xbc5c72f5,0xc544663b,0x345bfb7e
  85	.long	0x768b4329,0xdccb23c6,0x68b6edfc,0x63b8e4f1
  86	.long	0xcad731dc,0x10426385,0x40139722,0x2084c611
  87	.long	0x7d854a24,0xf8d2bb3d,0x11aef932,0x6dc729a1
  88	.long	0x4b1d9e2f,0xf3dcb230,0xec0d8652,0xd077c1e3
  89	.long	0x6c2bb316,0x99a970b9,0xfa119448,0x2247e964
  90	.long	0xc4a8fc8c,0x1aa0f03f,0xd8567d2c,0xef223390
  91	.long	0xc787494e,0xc1d938d1,0xfe8ccaa2,0x3698d40b
  92	.long	0xcfa6f581,0x28a57ade,0x26dab78e,0xa43fadbf
  93	.long	0xe42c3a9d,0x0d507892,0x9b6a5fcc,0x62547e46
  94	.long	0xc2f68d13,0xe890d8b8,0x5e2e39f7,0xf582c3af
  95	.long	0xbe9f5d80,0x7c69d093,0xa96fd52d,0xb3cf2512
  96	.long	0x3bc8ac99,0xa710187d,0x6ee89c63,0x7bdb3bbb
  97	.long	0x09cd2678,0xf46e5918,0x01ec9ab7,0xa8834f9a
  98	.long	0x65e6956e,0x7eaaffe6,0x0821bccf,0xe6ef15e8
  99	.long	0xd9bae79b,0xce4a6f36,0xd4ea9f09,0xd629b07c
 100	.long	0xaf31a4b2,0x312a3f23,0x30c6a594,0xc035a266
 101	.long	0x37744ebc,0xa6fc82ca,0xb0e090d0,0x1533a7d8
 102	.long	0x4af10498,0xf741ecda,0x0e7fcd50,0x2f1791f6
 103	.long	0x8d764dd6,0x4d43efb0,0x54ccaa4d,0xdfe49604
 104	.long	0xe39ed1b5,0x1b4c6a88,0xb8c12c1f,0x7f466551
 105	.long	0x049d5eea,0x5d018c35,0x73fa8774,0x2efb0b41
 106	.long	0x5ab3671d,0x5292dbd2,0x33e91056,0x136dd647
 107	.long	0x8c9ad761,0x7a37a10c,0x8e59f814,0x89eb133c
 108	.long	0xeecea927,0x35b761c9,0xede11ce5,0x3c7a47b1
 109	.long	0x599cd2df,0x3f55f273,0x791814ce,0xbf73c737
 110	.long	0xea53f7cd,0x5b5ffdaa,0x14df3d6f,0x867844db
 111	.long	0x81caaff3,0x3eb968c4,0x2c382434,0x5fc2a340
 112	.long	0x72161dc3,0x0cbce225,0x8b283c49,0x41ff0d95
 113	.long	0x7139a801,0xde080cb3,0x9cd8b4e4,0x906456c1
 114	.long	0x617bcb84,0x70d532b6,0x74486c5c,0x42d0b857
 115#endif /* HAVE_AES_DECRYPT */
 116#if defined(HAVE_AES_DECRYPT) || defined(HAVE_AES_CBC) || \
 117    defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
 118    defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
 119#ifndef __APPLE__
 120	.text
 121	.type	L_AES_Thumb2_te_data, %object
 122	.size	L_AES_Thumb2_te_data, 1024
 123#else
 124	.section	__DATA,__data
 125#endif /* __APPLE__ */
 126	/* 8-byte aligned, 64-bit aligned */
 127#ifndef __APPLE__
 128	.align	3
 129#else
 130	.p2align	3
 131#endif /* __APPLE__ */
 132L_AES_Thumb2_te_data:
 133	.long	0xa5c66363,0x84f87c7c,0x99ee7777,0x8df67b7b
 134	.long	0x0dfff2f2,0xbdd66b6b,0xb1de6f6f,0x5491c5c5
 135	.long	0x50603030,0x03020101,0xa9ce6767,0x7d562b2b
 136	.long	0x19e7fefe,0x62b5d7d7,0xe64dabab,0x9aec7676
 137	.long	0x458fcaca,0x9d1f8282,0x4089c9c9,0x87fa7d7d
 138	.long	0x15effafa,0xebb25959,0xc98e4747,0x0bfbf0f0
 139	.long	0xec41adad,0x67b3d4d4,0xfd5fa2a2,0xea45afaf
 140	.long	0xbf239c9c,0xf753a4a4,0x96e47272,0x5b9bc0c0
 141	.long	0xc275b7b7,0x1ce1fdfd,0xae3d9393,0x6a4c2626
 142	.long	0x5a6c3636,0x417e3f3f,0x02f5f7f7,0x4f83cccc
 143	.long	0x5c683434,0xf451a5a5,0x34d1e5e5,0x08f9f1f1
 144	.long	0x93e27171,0x73abd8d8,0x53623131,0x3f2a1515
 145	.long	0x0c080404,0x5295c7c7,0x65462323,0x5e9dc3c3
 146	.long	0x28301818,0xa1379696,0x0f0a0505,0xb52f9a9a
 147	.long	0x090e0707,0x36241212,0x9b1b8080,0x3ddfe2e2
 148	.long	0x26cdebeb,0x694e2727,0xcd7fb2b2,0x9fea7575
 149	.long	0x1b120909,0x9e1d8383,0x74582c2c,0x2e341a1a
 150	.long	0x2d361b1b,0xb2dc6e6e,0xeeb45a5a,0xfb5ba0a0
 151	.long	0xf6a45252,0x4d763b3b,0x61b7d6d6,0xce7db3b3
 152	.long	0x7b522929,0x3edde3e3,0x715e2f2f,0x97138484
 153	.long	0xf5a65353,0x68b9d1d1,0x00000000,0x2cc1eded
 154	.long	0x60402020,0x1fe3fcfc,0xc879b1b1,0xedb65b5b
 155	.long	0xbed46a6a,0x468dcbcb,0xd967bebe,0x4b723939
 156	.long	0xde944a4a,0xd4984c4c,0xe8b05858,0x4a85cfcf
 157	.long	0x6bbbd0d0,0x2ac5efef,0xe54faaaa,0x16edfbfb
 158	.long	0xc5864343,0xd79a4d4d,0x55663333,0x94118585
 159	.long	0xcf8a4545,0x10e9f9f9,0x06040202,0x81fe7f7f
 160	.long	0xf0a05050,0x44783c3c,0xba259f9f,0xe34ba8a8
 161	.long	0xf3a25151,0xfe5da3a3,0xc0804040,0x8a058f8f
 162	.long	0xad3f9292,0xbc219d9d,0x48703838,0x04f1f5f5
 163	.long	0xdf63bcbc,0xc177b6b6,0x75afdada,0x63422121
 164	.long	0x30201010,0x1ae5ffff,0x0efdf3f3,0x6dbfd2d2
 165	.long	0x4c81cdcd,0x14180c0c,0x35261313,0x2fc3ecec
 166	.long	0xe1be5f5f,0xa2359797,0xcc884444,0x392e1717
 167	.long	0x5793c4c4,0xf255a7a7,0x82fc7e7e,0x477a3d3d
 168	.long	0xacc86464,0xe7ba5d5d,0x2b321919,0x95e67373
 169	.long	0xa0c06060,0x98198181,0xd19e4f4f,0x7fa3dcdc
 170	.long	0x66442222,0x7e542a2a,0xab3b9090,0x830b8888
 171	.long	0xca8c4646,0x29c7eeee,0xd36bb8b8,0x3c281414
 172	.long	0x79a7dede,0xe2bc5e5e,0x1d160b0b,0x76addbdb
 173	.long	0x3bdbe0e0,0x56643232,0x4e743a3a,0x1e140a0a
 174	.long	0xdb924949,0x0a0c0606,0x6c482424,0xe4b85c5c
 175	.long	0x5d9fc2c2,0x6ebdd3d3,0xef43acac,0xa6c46262
 176	.long	0xa8399191,0xa4319595,0x37d3e4e4,0x8bf27979
 177	.long	0x32d5e7e7,0x438bc8c8,0x596e3737,0xb7da6d6d
 178	.long	0x8c018d8d,0x64b1d5d5,0xd29c4e4e,0xe049a9a9
 179	.long	0xb4d86c6c,0xfaac5656,0x07f3f4f4,0x25cfeaea
 180	.long	0xafca6565,0x8ef47a7a,0xe947aeae,0x18100808
 181	.long	0xd56fbaba,0x88f07878,0x6f4a2525,0x725c2e2e
 182	.long	0x24381c1c,0xf157a6a6,0xc773b4b4,0x5197c6c6
 183	.long	0x23cbe8e8,0x7ca1dddd,0x9ce87474,0x213e1f1f
 184	.long	0xdd964b4b,0xdc61bdbd,0x860d8b8b,0x850f8a8a
 185	.long	0x90e07070,0x427c3e3e,0xc471b5b5,0xaacc6666
 186	.long	0xd8904848,0x05060303,0x01f7f6f6,0x121c0e0e
 187	.long	0xa3c26161,0x5f6a3535,0xf9ae5757,0xd069b9b9
 188	.long	0x91178686,0x5899c1c1,0x273a1d1d,0xb9279e9e
 189	.long	0x38d9e1e1,0x13ebf8f8,0xb32b9898,0x33221111
 190	.long	0xbbd26969,0x70a9d9d9,0x89078e8e,0xa7339494
 191	.long	0xb62d9b9b,0x223c1e1e,0x92158787,0x20c9e9e9
 192	.long	0x4987cece,0xffaa5555,0x78502828,0x7aa5dfdf
 193	.long	0x8f038c8c,0xf859a1a1,0x80098989,0x171a0d0d
 194	.long	0xda65bfbf,0x31d7e6e6,0xc6844242,0xb8d06868
 195	.long	0xc3824141,0xb0299999,0x775a2d2d,0x111e0f0f
 196	.long	0xcb7bb0b0,0xfca85454,0xd66dbbbb,0x3a2c1616
 197#endif /* HAVE_AES_DECRYPT || HAVE_AES_CBC || HAVE_AESCCM || HAVE_AESGCM ||
 198        * WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
 199#ifdef HAVE_AES_DECRYPT
 200#ifndef __APPLE__
 201	.text
 202	.type	L_AES_Thumb2_td, %object
 203	.size	L_AES_Thumb2_td, 12
 204#else
 205	.section	__DATA,__data
 206#endif /* __APPLE__ */
 207	/* 8-byte aligned, 64-bit aligned */
 208#ifndef __APPLE__
 209	.align	3
 210#else
 211	.p2align	3
 212#endif /* __APPLE__ */
 213L_AES_Thumb2_td:
 214	.long	L_AES_Thumb2_td_data
 215#endif /* HAVE_AES_DECRYPT */
 216#if defined(HAVE_AES_DECRYPT) || defined(HAVE_AES_CBC) || \
 217    defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
 218    defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
 219#ifndef __APPLE__
 220	.text
 221	.type	L_AES_Thumb2_te, %object
 222	.size	L_AES_Thumb2_te, 12
 223#else
 224	.section	__DATA,__data
 225#endif /* __APPLE__ */
 226	/* 8-byte aligned, 64-bit aligned */
 227#ifndef __APPLE__
 228	.align	3
 229#else
 230	.p2align	3
 231#endif /* __APPLE__ */
 232L_AES_Thumb2_te:
 233	.long	L_AES_Thumb2_te_data
 234#endif /* HAVE_AES_DECRYPT || HAVE_AES_CBC || HAVE_AESCCM || HAVE_AESGCM ||
 235        * WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER */
 236#ifdef HAVE_AES_DECRYPT
 237	.text
 238	.align	4
 239	.globl	AES_invert_key
 240	.type	AES_invert_key, %function
 241AES_invert_key:
 242	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
 243	LDR	r12, L_AES_Thumb2_te
 244	LDR	lr, L_AES_Thumb2_td
 245	ADD	r10, r0, r1, LSL #4
 246	MOV	r11, r1
 247L_AES_invert_key_loop:
 248	LDM	r0, {r2, r3, r4, r5}
 249	LDM	r10, {r6, r7, r8, r9}
 250	STM	r10, {r2, r3, r4, r5}
 251	STM	r0!, {r6, r7, r8, r9}
 252	SUBS	r11, r11, #0x2
 253	SUB	r10, r10, #0x10
 254#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 255	BNE	L_AES_invert_key_loop
 256#else
 257	BNE.N	L_AES_invert_key_loop
 258#endif
 259	SUB	r0, r0, r1, LSL #3
 260	ADD	r0, r0, #0x10
 261	SUB	r11, r1, #0x1
 262L_AES_invert_key_mix_loop:
 263	LDM	r0, {r2, r3, r4, r5}
 264	UBFX	r6, r2, #0, #8
 265	UBFX	r7, r2, #8, #8
 266	UBFX	r8, r2, #16, #8
 267	LSR	r9, r2, #24
 268	LDRB	r6, [r12, r6, LSL #2]
 269	LDRB	r7, [r12, r7, LSL #2]
 270	LDRB	r8, [r12, r8, LSL #2]
 271	LDRB	r9, [r12, r9, LSL #2]
 272	LDR	r6, [lr, r6, LSL #2]
 273	LDR	r7, [lr, r7, LSL #2]
 274	LDR	r8, [lr, r8, LSL #2]
 275	LDR	r9, [lr, r9, LSL #2]
 276	EOR	r8, r8, r6, ROR #16
 277	EOR	r8, r8, r7, ROR #8
 278	EOR	r8, r8, r9, ROR #24
 279	STR	r8, [r0], #4
 280	UBFX	r6, r3, #0, #8
 281	UBFX	r7, r3, #8, #8
 282	UBFX	r8, r3, #16, #8
 283	LSR	r9, r3, #24
 284	LDRB	r6, [r12, r6, LSL #2]
 285	LDRB	r7, [r12, r7, LSL #2]
 286	LDRB	r8, [r12, r8, LSL #2]
 287	LDRB	r9, [r12, r9, LSL #2]
 288	LDR	r6, [lr, r6, LSL #2]
 289	LDR	r7, [lr, r7, LSL #2]
 290	LDR	r8, [lr, r8, LSL #2]
 291	LDR	r9, [lr, r9, LSL #2]
 292	EOR	r8, r8, r6, ROR #16
 293	EOR	r8, r8, r7, ROR #8
 294	EOR	r8, r8, r9, ROR #24
 295	STR	r8, [r0], #4
 296	UBFX	r6, r4, #0, #8
 297	UBFX	r7, r4, #8, #8
 298	UBFX	r8, r4, #16, #8
 299	LSR	r9, r4, #24
 300	LDRB	r6, [r12, r6, LSL #2]
 301	LDRB	r7, [r12, r7, LSL #2]
 302	LDRB	r8, [r12, r8, LSL #2]
 303	LDRB	r9, [r12, r9, LSL #2]
 304	LDR	r6, [lr, r6, LSL #2]
 305	LDR	r7, [lr, r7, LSL #2]
 306	LDR	r8, [lr, r8, LSL #2]
 307	LDR	r9, [lr, r9, LSL #2]
 308	EOR	r8, r8, r6, ROR #16
 309	EOR	r8, r8, r7, ROR #8
 310	EOR	r8, r8, r9, ROR #24
 311	STR	r8, [r0], #4
 312	UBFX	r6, r5, #0, #8
 313	UBFX	r7, r5, #8, #8
 314	UBFX	r8, r5, #16, #8
 315	LSR	r9, r5, #24
 316	LDRB	r6, [r12, r6, LSL #2]
 317	LDRB	r7, [r12, r7, LSL #2]
 318	LDRB	r8, [r12, r8, LSL #2]
 319	LDRB	r9, [r12, r9, LSL #2]
 320	LDR	r6, [lr, r6, LSL #2]
 321	LDR	r7, [lr, r7, LSL #2]
 322	LDR	r8, [lr, r8, LSL #2]
 323	LDR	r9, [lr, r9, LSL #2]
 324	EOR	r8, r8, r6, ROR #16
 325	EOR	r8, r8, r7, ROR #8
 326	EOR	r8, r8, r9, ROR #24
 327	STR	r8, [r0], #4
 328	SUBS	r11, r11, #0x1
 329#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 330	BNE	L_AES_invert_key_mix_loop
 331#else
 332	BNE.W	L_AES_invert_key_mix_loop
 333#endif
 334	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
 335	/* Cycle Count = 165 */
 336	.size	AES_invert_key,.-AES_invert_key
 337#endif /* HAVE_AES_DECRYPT */
 338#ifndef __APPLE__
 339	.text
 340	.type	L_AES_Thumb2_rcon, %object
 341	.size	L_AES_Thumb2_rcon, 40
 342#else
 343	.section	__DATA,__data
 344#endif /* __APPLE__ */
 345	/* 8-byte aligned, 64-bit aligned */
 346#ifndef __APPLE__
 347	.align	3
 348#else
 349	.p2align	3
 350#endif /* __APPLE__ */
 351L_AES_Thumb2_rcon:
 352	.long	0x01000000,0x02000000,0x04000000,0x08000000
 353	.long	0x10000000,0x20000000,0x40000000,0x80000000
 354	.long	0x1b000000,0x36000000
 355	.text
 356	.align	4
 357	.globl	AES_set_encrypt_key
 358	.type	AES_set_encrypt_key, %function
 359AES_set_encrypt_key:
 360	PUSH	{r4, r5, r6, r7, r8, r9, r10, lr}
 361	LDR	r10, L_AES_Thumb2_te
 362	ADR	lr, L_AES_Thumb2_rcon
 363	CMP	r1, #0x80
 364#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 365	BEQ	L_AES_set_encrypt_key_start_128
 366#else
 367	BEQ.W	L_AES_set_encrypt_key_start_128
 368#endif
 369	CMP	r1, #0xc0
 370#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 371	BEQ	L_AES_set_encrypt_key_start_192
 372#else
 373	BEQ.W	L_AES_set_encrypt_key_start_192
 374#endif
 375	LDR	r4, [r0]
 376	LDR	r5, [r0, #4]
 377	LDR	r6, [r0, #8]
 378	LDR	r7, [r0, #12]
 379	REV	r4, r4
 380	REV	r5, r5
 381	REV	r6, r6
 382	REV	r7, r7
 383	STM	r2!, {r4, r5, r6, r7}
 384	LDR	r4, [r0, #16]
 385	LDR	r5, [r0, #20]
 386	LDR	r6, [r0, #24]
 387	LDR	r7, [r0, #28]
 388	REV	r4, r4
 389	REV	r5, r5
 390	REV	r6, r6
 391	REV	r7, r7
 392	STM	r2, {r4, r5, r6, r7}
 393	SUB	r2, r2, #0x10
 394	MOV	r12, #0x6
 395L_AES_set_encrypt_key_loop_256:
 396	UBFX	r4, r7, #0, #8
 397	UBFX	r5, r7, #8, #8
 398	UBFX	r6, r7, #16, #8
 399	LSR	r7, r7, #24
 400	LDRB	r4, [r10, r4, LSL #2]
 401	LDRB	r5, [r10, r5, LSL #2]
 402	LDRB	r6, [r10, r6, LSL #2]
 403	LDRB	r7, [r10, r7, LSL #2]
 404	EOR	r3, r7, r4, LSL #8
 405	EOR	r3, r3, r5, LSL #16
 406	EOR	r3, r3, r6, LSL #24
 407	LDM	r2!, {r4, r5, r6, r7}
 408	EOR	r4, r4, r3
 409	LDM	lr!, {r3}
 410	EOR	r4, r4, r3
 411	EOR	r5, r5, r4
 412	EOR	r6, r6, r5
 413	EOR	r7, r7, r6
 414	ADD	r2, r2, #0x10
 415	STM	r2, {r4, r5, r6, r7}
 416	SUB	r2, r2, #0x10
 417	MOV	r3, r7
 418	UBFX	r4, r3, #8, #8
 419	UBFX	r5, r3, #16, #8
 420	LSR	r6, r3, #24
 421	UBFX	r3, r3, #0, #8
 422	LDRB	r4, [r10, r4, LSL #2]
 423	LDRB	r6, [r10, r6, LSL #2]
 424	LDRB	r5, [r10, r5, LSL #2]
 425	LDRB	r3, [r10, r3, LSL #2]
 426	EOR	r3, r3, r4, LSL #8
 427	EOR	r3, r3, r5, LSL #16
 428	EOR	r3, r3, r6, LSL #24
 429	LDM	r2!, {r4, r5, r6, r7}
 430	EOR	r4, r4, r3
 431	EOR	r5, r5, r4
 432	EOR	r6, r6, r5
 433	EOR	r7, r7, r6
 434	ADD	r2, r2, #0x10
 435	STM	r2, {r4, r5, r6, r7}
 436	SUB	r2, r2, #0x10
 437	SUBS	r12, r12, #0x1
 438#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 439	BNE	L_AES_set_encrypt_key_loop_256
 440#else
 441	BNE.N	L_AES_set_encrypt_key_loop_256
 442#endif
 443	UBFX	r4, r7, #0, #8
 444	UBFX	r5, r7, #8, #8
 445	UBFX	r6, r7, #16, #8
 446	LSR	r7, r7, #24
 447	LDRB	r4, [r10, r4, LSL #2]
 448	LDRB	r5, [r10, r5, LSL #2]
 449	LDRB	r6, [r10, r6, LSL #2]
 450	LDRB	r7, [r10, r7, LSL #2]
 451	EOR	r3, r7, r4, LSL #8
 452	EOR	r3, r3, r5, LSL #16
 453	EOR	r3, r3, r6, LSL #24
 454	LDM	r2!, {r4, r5, r6, r7}
 455	EOR	r4, r4, r3
 456	LDM	lr!, {r3}
 457	EOR	r4, r4, r3
 458	EOR	r5, r5, r4
 459	EOR	r6, r6, r5
 460	EOR	r7, r7, r6
 461	ADD	r2, r2, #0x10
 462	STM	r2, {r4, r5, r6, r7}
 463	SUB	r2, r2, #0x10
 464#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 465	B	L_AES_set_encrypt_key_end
 466#else
 467	B.N	L_AES_set_encrypt_key_end
 468#endif
 469L_AES_set_encrypt_key_start_192:
 470	LDR	r4, [r0]
 471	LDR	r5, [r0, #4]
 472	LDR	r6, [r0, #8]
 473	LDR	r7, [r0, #12]
 474	LDR	r8, [r0, #16]
 475	LDR	r9, [r0, #20]
 476	REV	r4, r4
 477	REV	r5, r5
 478	REV	r6, r6
 479	REV	r7, r7
 480	REV	r8, r8
 481	REV	r9, r9
 482	STM	r2, {r4, r5, r6, r7}
 483	STRD	r8, r9, [r2, #16]
 484	MOV	r7, r9
 485	MOV	r12, #0x7
 486L_AES_set_encrypt_key_loop_192:
 487	UBFX	r4, r9, #0, #8
 488	UBFX	r5, r9, #8, #8
 489	UBFX	r6, r9, #16, #8
 490	LSR	r9, r9, #24
 491	LDRB	r4, [r10, r4, LSL #2]
 492	LDRB	r5, [r10, r5, LSL #2]
 493	LDRB	r6, [r10, r6, LSL #2]
 494	LDRB	r9, [r10, r9, LSL #2]
 495	EOR	r3, r9, r4, LSL #8
 496	EOR	r3, r3, r5, LSL #16
 497	EOR	r3, r3, r6, LSL #24
 498	LDM	r2!, {r4, r5, r6, r7, r8, r9}
 499	EOR	r4, r4, r3
 500	LDM	lr!, {r3}
 501	EOR	r4, r4, r3
 502	EOR	r5, r5, r4
 503	EOR	r6, r6, r5
 504	EOR	r7, r7, r6
 505	EOR	r8, r8, r7
 506	EOR	r9, r9, r8
 507	STM	r2, {r4, r5, r6, r7, r8, r9}
 508	SUBS	r12, r12, #0x1
 509#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 510	BNE	L_AES_set_encrypt_key_loop_192
 511#else
 512	BNE.N	L_AES_set_encrypt_key_loop_192
 513#endif
 514	UBFX	r4, r9, #0, #8
 515	UBFX	r5, r9, #8, #8
 516	UBFX	r6, r9, #16, #8
 517	LSR	r9, r9, #24
 518	LDRB	r4, [r10, r4, LSL #2]
 519	LDRB	r5, [r10, r5, LSL #2]
 520	LDRB	r6, [r10, r6, LSL #2]
 521	LDRB	r9, [r10, r9, LSL #2]
 522	EOR	r3, r9, r4, LSL #8
 523	EOR	r3, r3, r5, LSL #16
 524	EOR	r3, r3, r6, LSL #24
 525	LDM	r2!, {r4, r5, r6, r7, r8, r9}
 526	EOR	r4, r4, r3
 527	LDM	lr!, {r3}
 528	EOR	r4, r4, r3
 529	EOR	r5, r5, r4
 530	EOR	r6, r6, r5
 531	EOR	r7, r7, r6
 532	STM	r2, {r4, r5, r6, r7}
 533#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 534	B	L_AES_set_encrypt_key_end
 535#else
 536	B.N	L_AES_set_encrypt_key_end
 537#endif
 538L_AES_set_encrypt_key_start_128:
 539	LDR	r4, [r0]
 540	LDR	r5, [r0, #4]
 541	LDR	r6, [r0, #8]
 542	LDR	r7, [r0, #12]
 543	REV	r4, r4
 544	REV	r5, r5
 545	REV	r6, r6
 546	REV	r7, r7
 547	STM	r2, {r4, r5, r6, r7}
 548	MOV	r12, #0xa
 549L_AES_set_encrypt_key_loop_128:
 550	UBFX	r4, r7, #0, #8
 551	UBFX	r5, r7, #8, #8
 552	UBFX	r6, r7, #16, #8
 553	LSR	r7, r7, #24
 554	LDRB	r4, [r10, r4, LSL #2]
 555	LDRB	r5, [r10, r5, LSL #2]
 556	LDRB	r6, [r10, r6, LSL #2]
 557	LDRB	r7, [r10, r7, LSL #2]
 558	EOR	r3, r7, r4, LSL #8
 559	EOR	r3, r3, r5, LSL #16
 560	EOR	r3, r3, r6, LSL #24
 561	LDM	r2!, {r4, r5, r6, r7}
 562	EOR	r4, r4, r3
 563	LDM	lr!, {r3}
 564	EOR	r4, r4, r3
 565	EOR	r5, r5, r4
 566	EOR	r6, r6, r5
 567	EOR	r7, r7, r6
 568	STM	r2, {r4, r5, r6, r7}
 569	SUBS	r12, r12, #0x1
 570#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 571	BNE	L_AES_set_encrypt_key_loop_128
 572#else
 573	BNE.N	L_AES_set_encrypt_key_loop_128
 574#endif
 575L_AES_set_encrypt_key_end:
 576	POP	{r4, r5, r6, r7, r8, r9, r10, pc}
 577	/* Cycle Count = 340 */
 578	.size	AES_set_encrypt_key,.-AES_set_encrypt_key
 579#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
 580	.text
 581	.align	4
 582	.globl	AES_encrypt_block
 583	.type	AES_encrypt_block, %function
 584AES_encrypt_block:
 585	PUSH	{lr}
 586L_AES_encrypt_block_nr:
 587	UBFX	r8, r5, #16, #8
 588	LSR	r11, r4, #24
 589	UBFX	lr, r6, #8, #8
 590	UBFX	r2, r7, #0, #8
 591	LDR	r8, [r0, r8, LSL #2]
 592	LDR	r11, [r0, r11, LSL #2]
 593	LDR	lr, [r0, lr, LSL #2]
 594	LDR	r2, [r0, r2, LSL #2]
 595	UBFX	r9, r6, #16, #8
 596	EOR	r8, r8, r11, ROR #24
 597	LSR	r11, r5, #24
 598	EOR	r8, r8, lr, ROR #8
 599	UBFX	lr, r7, #8, #8
 600	EOR	r8, r8, r2, ROR #16
 601	UBFX	r2, r4, #0, #8
 602	LDR	r9, [r0, r9, LSL #2]
 603	LDR	r11, [r0, r11, LSL #2]
 604	LDR	lr, [r0, lr, LSL #2]
 605	LDR	r2, [r0, r2, LSL #2]
 606	UBFX	r10, r7, #16, #8
 607	EOR	r9, r9, r11, ROR #24
 608	LSR	r11, r6, #24
 609	EOR	r9, r9, lr, ROR #8
 610	UBFX	lr, r4, #8, #8
 611	EOR	r9, r9, r2, ROR #16
 612	UBFX	r2, r5, #0, #8
 613	LDR	r10, [r0, r10, LSL #2]
 614	LDR	r11, [r0, r11, LSL #2]
 615	LDR	lr, [r0, lr, LSL #2]
 616	LDR	r2, [r0, r2, LSL #2]
 617	UBFX	r6, r6, #0, #8
 618	EOR	r10, r10, r11, ROR #24
 619	UBFX	r11, r4, #16, #8
 620	EOR	r10, r10, lr, ROR #8
 621	LSR	lr, r7, #24
 622	EOR	r10, r10, r2, ROR #16
 623	UBFX	r2, r5, #8, #8
 624	LDR	r6, [r0, r6, LSL #2]
 625	LDR	lr, [r0, lr, LSL #2]
 626	LDR	r11, [r0, r11, LSL #2]
 627	LDR	r2, [r0, r2, LSL #2]
 628	EOR	lr, lr, r6, ROR #24
 629	LDM	r3!, {r4, r5, r6, r7}
 630	EOR	r11, r11, lr, ROR #24
 631	EOR	r11, r11, r2, ROR #8
 632	/*   XOR in Key Schedule */
 633	EOR	r8, r8, r4
 634	EOR	r9, r9, r5
 635	EOR	r10, r10, r6
 636	EOR	r11, r11, r7
 637	UBFX	r4, r9, #16, #8
 638	LSR	r7, r8, #24
 639	UBFX	lr, r10, #8, #8
 640	UBFX	r2, r11, #0, #8
 641	LDR	r4, [r0, r4, LSL #2]
 642	LDR	r7, [r0, r7, LSL #2]
 643	LDR	lr, [r0, lr, LSL #2]
 644	LDR	r2, [r0, r2, LSL #2]
 645	UBFX	r5, r10, #16, #8
 646	EOR	r4, r4, r7, ROR #24
 647	LSR	r7, r9, #24
 648	EOR	r4, r4, lr, ROR #8
 649	UBFX	lr, r11, #8, #8
 650	EOR	r4, r4, r2, ROR #16
 651	UBFX	r2, r8, #0, #8
 652	LDR	r5, [r0, r5, LSL #2]
 653	LDR	r7, [r0, r7, LSL #2]
 654	LDR	lr, [r0, lr, LSL #2]
 655	LDR	r2, [r0, r2, LSL #2]
 656	UBFX	r6, r11, #16, #8
 657	EOR	r5, r5, r7, ROR #24
 658	LSR	r7, r10, #24
 659	EOR	r5, r5, lr, ROR #8
 660	UBFX	lr, r8, #8, #8
 661	EOR	r5, r5, r2, ROR #16
 662	UBFX	r2, r9, #0, #8
 663	LDR	r6, [r0, r6, LSL #2]
 664	LDR	r7, [r0, r7, LSL #2]
 665	LDR	lr, [r0, lr, LSL #2]
 666	LDR	r2, [r0, r2, LSL #2]
 667	UBFX	r10, r10, #0, #8
 668	EOR	r6, r6, r7, ROR #24
 669	UBFX	r7, r8, #16, #8
 670	EOR	r6, r6, lr, ROR #8
 671	LSR	lr, r11, #24
 672	EOR	r6, r6, r2, ROR #16
 673	UBFX	r2, r9, #8, #8
 674	LDR	r10, [r0, r10, LSL #2]
 675	LDR	lr, [r0, lr, LSL #2]
 676	LDR	r7, [r0, r7, LSL #2]
 677	LDR	r2, [r0, r2, LSL #2]
 678	EOR	lr, lr, r10, ROR #24
 679	LDM	r3!, {r8, r9, r10, r11}
 680	EOR	r7, r7, lr, ROR #24
 681	EOR	r7, r7, r2, ROR #8
 682	/*   XOR in Key Schedule */
 683	EOR	r4, r4, r8
 684	EOR	r5, r5, r9
 685	EOR	r6, r6, r10
 686	EOR	r7, r7, r11
 687	SUBS	r1, r1, #0x1
 688#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 689	BNE	L_AES_encrypt_block_nr
 690#else
 691	BNE.W	L_AES_encrypt_block_nr
 692#endif
 693	UBFX	r8, r5, #16, #8
 694	LSR	r11, r4, #24
 695	UBFX	lr, r6, #8, #8
 696	UBFX	r2, r7, #0, #8
 697	LDR	r8, [r0, r8, LSL #2]
 698	LDR	r11, [r0, r11, LSL #2]
 699	LDR	lr, [r0, lr, LSL #2]
 700	LDR	r2, [r0, r2, LSL #2]
 701	UBFX	r9, r6, #16, #8
 702	EOR	r8, r8, r11, ROR #24
 703	LSR	r11, r5, #24
 704	EOR	r8, r8, lr, ROR #8
 705	UBFX	lr, r7, #8, #8
 706	EOR	r8, r8, r2, ROR #16
 707	UBFX	r2, r4, #0, #8
 708	LDR	r9, [r0, r9, LSL #2]
 709	LDR	r11, [r0, r11, LSL #2]
 710	LDR	lr, [r0, lr, LSL #2]
 711	LDR	r2, [r0, r2, LSL #2]
 712	UBFX	r10, r7, #16, #8
 713	EOR	r9, r9, r11, ROR #24
 714	LSR	r11, r6, #24
 715	EOR	r9, r9, lr, ROR #8
 716	UBFX	lr, r4, #8, #8
 717	EOR	r9, r9, r2, ROR #16
 718	UBFX	r2, r5, #0, #8
 719	LDR	r10, [r0, r10, LSL #2]
 720	LDR	r11, [r0, r11, LSL #2]
 721	LDR	lr, [r0, lr, LSL #2]
 722	LDR	r2, [r0, r2, LSL #2]
 723	UBFX	r6, r6, #0, #8
 724	EOR	r10, r10, r11, ROR #24
 725	UBFX	r11, r4, #16, #8
 726	EOR	r10, r10, lr, ROR #8
 727	LSR	lr, r7, #24
 728	EOR	r10, r10, r2, ROR #16
 729	UBFX	r2, r5, #8, #8
 730	LDR	r6, [r0, r6, LSL #2]
 731	LDR	lr, [r0, lr, LSL #2]
 732	LDR	r11, [r0, r11, LSL #2]
 733	LDR	r2, [r0, r2, LSL #2]
 734	EOR	lr, lr, r6, ROR #24
 735	LDM	r3!, {r4, r5, r6, r7}
 736	EOR	r11, r11, lr, ROR #24
 737	EOR	r11, r11, r2, ROR #8
 738	/*   XOR in Key Schedule */
 739	EOR	r8, r8, r4
 740	EOR	r9, r9, r5
 741	EOR	r10, r10, r6
 742	EOR	r11, r11, r7
 743	UBFX	r4, r11, #0, #8
 744	UBFX	r7, r10, #8, #8
 745	UBFX	lr, r9, #16, #8
 746	LSR	r2, r8, #24
 747	LDRB	r4, [r0, r4, LSL #2]
 748	LDRB	r7, [r0, r7, LSL #2]
 749	LDRB	lr, [r0, lr, LSL #2]
 750	LDRB	r2, [r0, r2, LSL #2]
 751	UBFX	r5, r8, #0, #8
 752	EOR	r4, r4, r7, LSL #8
 753	UBFX	r7, r11, #8, #8
 754	EOR	r4, r4, lr, LSL #16
 755	UBFX	lr, r10, #16, #8
 756	EOR	r4, r4, r2, LSL #24
 757	LSR	r2, r9, #24
 758	LDRB	r5, [r0, r5, LSL #2]
 759	LDRB	r7, [r0, r7, LSL #2]
 760	LDRB	lr, [r0, lr, LSL #2]
 761	LDRB	r2, [r0, r2, LSL #2]
 762	UBFX	r6, r9, #0, #8
 763	EOR	r5, r5, r7, LSL #8
 764	UBFX	r7, r8, #8, #8
 765	EOR	r5, r5, lr, LSL #16
 766	UBFX	lr, r11, #16, #8
 767	EOR	r5, r5, r2, LSL #24
 768	LSR	r2, r10, #24
 769	LDRB	r6, [r0, r6, LSL #2]
 770	LDRB	r7, [r0, r7, LSL #2]
 771	LDRB	lr, [r0, lr, LSL #2]
 772	LDRB	r2, [r0, r2, LSL #2]
 773	LSR	r11, r11, #24
 774	EOR	r6, r6, r7, LSL #8
 775	UBFX	r7, r10, #0, #8
 776	EOR	r6, r6, lr, LSL #16
 777	UBFX	lr, r9, #8, #8
 778	EOR	r6, r6, r2, LSL #24
 779	UBFX	r2, r8, #16, #8
 780	LDRB	r11, [r0, r11, LSL #2]
 781	LDRB	r7, [r0, r7, LSL #2]
 782	LDRB	lr, [r0, lr, LSL #2]
 783	LDRB	r2, [r0, r2, LSL #2]
 784	EOR	lr, lr, r11, LSL #16
 785	LDM	r3, {r8, r9, r10, r11}
 786	EOR	r7, r7, lr, LSL #8
 787	EOR	r7, r7, r2, LSL #16
 788	/*   XOR in Key Schedule */
 789	EOR	r4, r4, r8
 790	EOR	r5, r5, r9
 791	EOR	r6, r6, r10
 792	EOR	r7, r7, r11
 793	POP	{pc}
 794	/* Cycle Count = 285 */
 795	.size	AES_encrypt_block,.-AES_encrypt_block
 796#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
 797#if defined(HAVE_AES_CBC) || defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
 798    defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER)
 799#ifndef __APPLE__
 800	.text
 801	.type	L_AES_Thumb2_te_ecb, %object
 802	.size	L_AES_Thumb2_te_ecb, 12
 803#else
 804	.section	__DATA,__data
 805#endif /* __APPLE__ */
 806	/* 8-byte aligned, 64-bit aligned */
 807#ifndef __APPLE__
 808	.align	3
 809#else
 810	.p2align	3
 811#endif /* __APPLE__ */
 812L_AES_Thumb2_te_ecb:
 813	.long	L_AES_Thumb2_te_data
 814#endif /* HAVE_AES_CBC || HAVE_AESCCM || HAVE_AESGCM || WOLFSSL_AES_DIRECT ||
 815        * WOLFSSL_AES_COUNTER */
 816#if defined(HAVE_AESCCM) || defined(HAVE_AESGCM) || \
 817    defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || \
 818    defined(HAVE_AES_ECB)
 819	.text
 820	.align	4
 821	.globl	AES_ECB_encrypt
 822	.type	AES_ECB_encrypt, %function
 823AES_ECB_encrypt:
 824	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
 825	MOV	lr, r0
 826	LDR	r0, L_AES_Thumb2_te_ecb
 827	LDR	r12, [sp, #36]
 828	PUSH	{r3}
 829	CMP	r12, #0xa
 830#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 831	BEQ	L_AES_ECB_encrypt_start_block_128
 832#else
 833	BEQ.W	L_AES_ECB_encrypt_start_block_128
 834#endif
 835	CMP	r12, #0xc
 836#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 837	BEQ	L_AES_ECB_encrypt_start_block_192
 838#else
 839	BEQ.W	L_AES_ECB_encrypt_start_block_192
 840#endif
 841L_AES_ECB_encrypt_loop_block_256:
 842	LDR	r4, [lr]
 843	LDR	r5, [lr, #4]
 844	LDR	r6, [lr, #8]
 845	LDR	r7, [lr, #12]
 846	REV	r4, r4
 847	REV	r5, r5
 848	REV	r6, r6
 849	REV	r7, r7
 850	PUSH	{r1, r2, lr}
 851	LDM	r3!, {r8, r9, r10, r11}
 852	/* Round: 0 - XOR in key schedule */
 853	EOR	r4, r4, r8
 854	EOR	r5, r5, r9
 855	EOR	r6, r6, r10
 856	EOR	r7, r7, r11
 857	MOV	r1, #0x6
 858#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
 859	BL	AES_encrypt_block
 860#else
 861L_AES_ECB_encrypt_block_nr_256:
 862	UBFX	r8, r5, #16, #8
 863	LSR	r11, r4, #24
 864	UBFX	lr, r6, #8, #8
 865	UBFX	r2, r7, #0, #8
 866	LDR	r8, [r0, r8, LSL #2]
 867	LDR	r11, [r0, r11, LSL #2]
 868	LDR	lr, [r0, lr, LSL #2]
 869	LDR	r2, [r0, r2, LSL #2]
 870	UBFX	r9, r6, #16, #8
 871	EOR	r8, r8, r11, ROR #24
 872	LSR	r11, r5, #24
 873	EOR	r8, r8, lr, ROR #8
 874	UBFX	lr, r7, #8, #8
 875	EOR	r8, r8, r2, ROR #16
 876	UBFX	r2, r4, #0, #8
 877	LDR	r9, [r0, r9, LSL #2]
 878	LDR	r11, [r0, r11, LSL #2]
 879	LDR	lr, [r0, lr, LSL #2]
 880	LDR	r2, [r0, r2, LSL #2]
 881	UBFX	r10, r7, #16, #8
 882	EOR	r9, r9, r11, ROR #24
 883	LSR	r11, r6, #24
 884	EOR	r9, r9, lr, ROR #8
 885	UBFX	lr, r4, #8, #8
 886	EOR	r9, r9, r2, ROR #16
 887	UBFX	r2, r5, #0, #8
 888	LDR	r10, [r0, r10, LSL #2]
 889	LDR	r11, [r0, r11, LSL #2]
 890	LDR	lr, [r0, lr, LSL #2]
 891	LDR	r2, [r0, r2, LSL #2]
 892	UBFX	r6, r6, #0, #8
 893	EOR	r10, r10, r11, ROR #24
 894	UBFX	r11, r4, #16, #8
 895	EOR	r10, r10, lr, ROR #8
 896	LSR	lr, r7, #24
 897	EOR	r10, r10, r2, ROR #16
 898	UBFX	r2, r5, #8, #8
 899	LDR	r6, [r0, r6, LSL #2]
 900	LDR	lr, [r0, lr, LSL #2]
 901	LDR	r11, [r0, r11, LSL #2]
 902	LDR	r2, [r0, r2, LSL #2]
 903	EOR	lr, lr, r6, ROR #24
 904	LDM	r3!, {r4, r5, r6, r7}
 905	EOR	r11, r11, lr, ROR #24
 906	EOR	r11, r11, r2, ROR #8
 907	/*   XOR in Key Schedule */
 908	EOR	r8, r8, r4
 909	EOR	r9, r9, r5
 910	EOR	r10, r10, r6
 911	EOR	r11, r11, r7
 912	UBFX	r4, r9, #16, #8
 913	LSR	r7, r8, #24
 914	UBFX	lr, r10, #8, #8
 915	UBFX	r2, r11, #0, #8
 916	LDR	r4, [r0, r4, LSL #2]
 917	LDR	r7, [r0, r7, LSL #2]
 918	LDR	lr, [r0, lr, LSL #2]
 919	LDR	r2, [r0, r2, LSL #2]
 920	UBFX	r5, r10, #16, #8
 921	EOR	r4, r4, r7, ROR #24
 922	LSR	r7, r9, #24
 923	EOR	r4, r4, lr, ROR #8
 924	UBFX	lr, r11, #8, #8
 925	EOR	r4, r4, r2, ROR #16
 926	UBFX	r2, r8, #0, #8
 927	LDR	r5, [r0, r5, LSL #2]
 928	LDR	r7, [r0, r7, LSL #2]
 929	LDR	lr, [r0, lr, LSL #2]
 930	LDR	r2, [r0, r2, LSL #2]
 931	UBFX	r6, r11, #16, #8
 932	EOR	r5, r5, r7, ROR #24
 933	LSR	r7, r10, #24
 934	EOR	r5, r5, lr, ROR #8
 935	UBFX	lr, r8, #8, #8
 936	EOR	r5, r5, r2, ROR #16
 937	UBFX	r2, r9, #0, #8
 938	LDR	r6, [r0, r6, LSL #2]
 939	LDR	r7, [r0, r7, LSL #2]
 940	LDR	lr, [r0, lr, LSL #2]
 941	LDR	r2, [r0, r2, LSL #2]
 942	UBFX	r10, r10, #0, #8
 943	EOR	r6, r6, r7, ROR #24
 944	UBFX	r7, r8, #16, #8
 945	EOR	r6, r6, lr, ROR #8
 946	LSR	lr, r11, #24
 947	EOR	r6, r6, r2, ROR #16
 948	UBFX	r2, r9, #8, #8
 949	LDR	r10, [r0, r10, LSL #2]
 950	LDR	lr, [r0, lr, LSL #2]
 951	LDR	r7, [r0, r7, LSL #2]
 952	LDR	r2, [r0, r2, LSL #2]
 953	EOR	lr, lr, r10, ROR #24
 954	LDM	r3!, {r8, r9, r10, r11}
 955	EOR	r7, r7, lr, ROR #24
 956	EOR	r7, r7, r2, ROR #8
 957	/*   XOR in Key Schedule */
 958	EOR	r4, r4, r8
 959	EOR	r5, r5, r9
 960	EOR	r6, r6, r10
 961	EOR	r7, r7, r11
 962	SUBS	r1, r1, #0x1
 963#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
 964	BNE	L_AES_ECB_encrypt_block_nr_256
 965#else
 966	BNE.W	L_AES_ECB_encrypt_block_nr_256
 967#endif
 968	UBFX	r8, r5, #16, #8
 969	LSR	r11, r4, #24
 970	UBFX	lr, r6, #8, #8
 971	UBFX	r2, r7, #0, #8
 972	LDR	r8, [r0, r8, LSL #2]
 973	LDR	r11, [r0, r11, LSL #2]
 974	LDR	lr, [r0, lr, LSL #2]
 975	LDR	r2, [r0, r2, LSL #2]
 976	UBFX	r9, r6, #16, #8
 977	EOR	r8, r8, r11, ROR #24
 978	LSR	r11, r5, #24
 979	EOR	r8, r8, lr, ROR #8
 980	UBFX	lr, r7, #8, #8
 981	EOR	r8, r8, r2, ROR #16
 982	UBFX	r2, r4, #0, #8
 983	LDR	r9, [r0, r9, LSL #2]
 984	LDR	r11, [r0, r11, LSL #2]
 985	LDR	lr, [r0, lr, LSL #2]
 986	LDR	r2, [r0, r2, LSL #2]
 987	UBFX	r10, r7, #16, #8
 988	EOR	r9, r9, r11, ROR #24
 989	LSR	r11, r6, #24
 990	EOR	r9, r9, lr, ROR #8
 991	UBFX	lr, r4, #8, #8
 992	EOR	r9, r9, r2, ROR #16
 993	UBFX	r2, r5, #0, #8
 994	LDR	r10, [r0, r10, LSL #2]
 995	LDR	r11, [r0, r11, LSL #2]
 996	LDR	lr, [r0, lr, LSL #2]
 997	LDR	r2, [r0, r2, LSL #2]
 998	UBFX	r6, r6, #0, #8
 999	EOR	r10, r10, r11, ROR #24
1000	UBFX	r11, r4, #16, #8
1001	EOR	r10, r10, lr, ROR #8
1002	LSR	lr, r7, #24
1003	EOR	r10, r10, r2, ROR #16
1004	UBFX	r2, r5, #8, #8
1005	LDR	r6, [r0, r6, LSL #2]
1006	LDR	lr, [r0, lr, LSL #2]
1007	LDR	r11, [r0, r11, LSL #2]
1008	LDR	r2, [r0, r2, LSL #2]
1009	EOR	lr, lr, r6, ROR #24
1010	LDM	r3!, {r4, r5, r6, r7}
1011	EOR	r11, r11, lr, ROR #24
1012	EOR	r11, r11, r2, ROR #8
1013	/*   XOR in Key Schedule */
1014	EOR	r8, r8, r4
1015	EOR	r9, r9, r5
1016	EOR	r10, r10, r6
1017	EOR	r11, r11, r7
1018	UBFX	r4, r11, #0, #8
1019	UBFX	r7, r10, #8, #8
1020	UBFX	lr, r9, #16, #8
1021	LSR	r2, r8, #24
1022	LDRB	r4, [r0, r4, LSL #2]
1023	LDRB	r7, [r0, r7, LSL #2]
1024	LDRB	lr, [r0, lr, LSL #2]
1025	LDRB	r2, [r0, r2, LSL #2]
1026	UBFX	r5, r8, #0, #8
1027	EOR	r4, r4, r7, LSL #8
1028	UBFX	r7, r11, #8, #8
1029	EOR	r4, r4, lr, LSL #16
1030	UBFX	lr, r10, #16, #8
1031	EOR	r4, r4, r2, LSL #24
1032	LSR	r2, r9, #24
1033	LDRB	r5, [r0, r5, LSL #2]
1034	LDRB	r7, [r0, r7, LSL #2]
1035	LDRB	lr, [r0, lr, LSL #2]
1036	LDRB	r2, [r0, r2, LSL #2]
1037	UBFX	r6, r9, #0, #8
1038	EOR	r5, r5, r7, LSL #8
1039	UBFX	r7, r8, #8, #8
1040	EOR	r5, r5, lr, LSL #16
1041	UBFX	lr, r11, #16, #8
1042	EOR	r5, r5, r2, LSL #24
1043	LSR	r2, r10, #24
1044	LDRB	r6, [r0, r6, LSL #2]
1045	LDRB	r7, [r0, r7, LSL #2]
1046	LDRB	lr, [r0, lr, LSL #2]
1047	LDRB	r2, [r0, r2, LSL #2]
1048	LSR	r11, r11, #24
1049	EOR	r6, r6, r7, LSL #8
1050	UBFX	r7, r10, #0, #8
1051	EOR	r6, r6, lr, LSL #16
1052	UBFX	lr, r9, #8, #8
1053	EOR	r6, r6, r2, LSL #24
1054	UBFX	r2, r8, #16, #8
1055	LDRB	r11, [r0, r11, LSL #2]
1056	LDRB	r7, [r0, r7, LSL #2]
1057	LDRB	lr, [r0, lr, LSL #2]
1058	LDRB	r2, [r0, r2, LSL #2]
1059	EOR	lr, lr, r11, LSL #16
1060	LDM	r3, {r8, r9, r10, r11}
1061	EOR	r7, r7, lr, LSL #8
1062	EOR	r7, r7, r2, LSL #16
1063	/*   XOR in Key Schedule */
1064	EOR	r4, r4, r8
1065	EOR	r5, r5, r9
1066	EOR	r6, r6, r10
1067	EOR	r7, r7, r11
1068#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
1069	POP	{r1, r2, lr}
1070	LDR	r3, [sp]
1071	REV	r4, r4
1072	REV	r5, r5
1073	REV	r6, r6
1074	REV	r7, r7
1075	STR	r4, [r1]
1076	STR	r5, [r1, #4]
1077	STR	r6, [r1, #8]
1078	STR	r7, [r1, #12]
1079	SUBS	r2, r2, #0x10
1080	ADD	lr, lr, #0x10
1081	ADD	r1, r1, #0x10
1082#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1083	BNE	L_AES_ECB_encrypt_loop_block_256
1084#else
1085	BNE.W	L_AES_ECB_encrypt_loop_block_256
1086#endif
1087#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1088	B	L_AES_ECB_encrypt_end
1089#else
1090	B.N	L_AES_ECB_encrypt_end
1091#endif
1092L_AES_ECB_encrypt_start_block_192:
1093L_AES_ECB_encrypt_loop_block_192:
1094	LDR	r4, [lr]
1095	LDR	r5, [lr, #4]
1096	LDR	r6, [lr, #8]
1097	LDR	r7, [lr, #12]
1098	REV	r4, r4
1099	REV	r5, r5
1100	REV	r6, r6
1101	REV	r7, r7
1102	PUSH	{r1, r2, lr}
1103	LDM	r3!, {r8, r9, r10, r11}
1104	/* Round: 0 - XOR in key schedule */
1105	EOR	r4, r4, r8
1106	EOR	r5, r5, r9
1107	EOR	r6, r6, r10
1108	EOR	r7, r7, r11
1109	MOV	r1, #0x5
1110#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
1111	BL	AES_encrypt_block
1112#else
1113L_AES_ECB_encrypt_block_nr_192:
1114	UBFX	r8, r5, #16, #8
1115	LSR	r11, r4, #24
1116	UBFX	lr, r6, #8, #8
1117	UBFX	r2, r7, #0, #8
1118	LDR	r8, [r0, r8, LSL #2]
1119	LDR	r11, [r0, r11, LSL #2]
1120	LDR	lr, [r0, lr, LSL #2]
1121	LDR	r2, [r0, r2, LSL #2]
1122	UBFX	r9, r6, #16, #8
1123	EOR	r8, r8, r11, ROR #24
1124	LSR	r11, r5, #24
1125	EOR	r8, r8, lr, ROR #8
1126	UBFX	lr, r7, #8, #8
1127	EOR	r8, r8, r2, ROR #16
1128	UBFX	r2, r4, #0, #8
1129	LDR	r9, [r0, r9, LSL #2]
1130	LDR	r11, [r0, r11, LSL #2]
1131	LDR	lr, [r0, lr, LSL #2]
1132	LDR	r2, [r0, r2, LSL #2]
1133	UBFX	r10, r7, #16, #8
1134	EOR	r9, r9, r11, ROR #24
1135	LSR	r11, r6, #24
1136	EOR	r9, r9, lr, ROR #8
1137	UBFX	lr, r4, #8, #8
1138	EOR	r9, r9, r2, ROR #16
1139	UBFX	r2, r5, #0, #8
1140	LDR	r10, [r0, r10, LSL #2]
1141	LDR	r11, [r0, r11, LSL #2]
1142	LDR	lr, [r0, lr, LSL #2]
1143	LDR	r2, [r0, r2, LSL #2]
1144	UBFX	r6, r6, #0, #8
1145	EOR	r10, r10, r11, ROR #24
1146	UBFX	r11, r4, #16, #8
1147	EOR	r10, r10, lr, ROR #8
1148	LSR	lr, r7, #24
1149	EOR	r10, r10, r2, ROR #16
1150	UBFX	r2, r5, #8, #8
1151	LDR	r6, [r0, r6, LSL #2]
1152	LDR	lr, [r0, lr, LSL #2]
1153	LDR	r11, [r0, r11, LSL #2]
1154	LDR	r2, [r0, r2, LSL #2]
1155	EOR	lr, lr, r6, ROR #24
1156	LDM	r3!, {r4, r5, r6, r7}
1157	EOR	r11, r11, lr, ROR #24
1158	EOR	r11, r11, r2, ROR #8
1159	/*   XOR in Key Schedule */
1160	EOR	r8, r8, r4
1161	EOR	r9, r9, r5
1162	EOR	r10, r10, r6
1163	EOR	r11, r11, r7
1164	UBFX	r4, r9, #16, #8
1165	LSR	r7, r8, #24
1166	UBFX	lr, r10, #8, #8
1167	UBFX	r2, r11, #0, #8
1168	LDR	r4, [r0, r4, LSL #2]
1169	LDR	r7, [r0, r7, LSL #2]
1170	LDR	lr, [r0, lr, LSL #2]
1171	LDR	r2, [r0, r2, LSL #2]
1172	UBFX	r5, r10, #16, #8
1173	EOR	r4, r4, r7, ROR #24
1174	LSR	r7, r9, #24
1175	EOR	r4, r4, lr, ROR #8
1176	UBFX	lr, r11, #8, #8
1177	EOR	r4, r4, r2, ROR #16
1178	UBFX	r2, r8, #0, #8
1179	LDR	r5, [r0, r5, LSL #2]
1180	LDR	r7, [r0, r7, LSL #2]
1181	LDR	lr, [r0, lr, LSL #2]
1182	LDR	r2, [r0, r2, LSL #2]
1183	UBFX	r6, r11, #16, #8
1184	EOR	r5, r5, r7, ROR #24
1185	LSR	r7, r10, #24
1186	EOR	r5, r5, lr, ROR #8
1187	UBFX	lr, r8, #8, #8
1188	EOR	r5, r5, r2, ROR #16
1189	UBFX	r2, r9, #0, #8
1190	LDR	r6, [r0, r6, LSL #2]
1191	LDR	r7, [r0, r7, LSL #2]
1192	LDR	lr, [r0, lr, LSL #2]
1193	LDR	r2, [r0, r2, LSL #2]
1194	UBFX	r10, r10, #0, #8
1195	EOR	r6, r6, r7, ROR #24
1196	UBFX	r7, r8, #16, #8
1197	EOR	r6, r6, lr, ROR #8
1198	LSR	lr, r11, #24
1199	EOR	r6, r6, r2, ROR #16
1200	UBFX	r2, r9, #8, #8
1201	LDR	r10, [r0, r10, LSL #2]
1202	LDR	lr, [r0, lr, LSL #2]
1203	LDR	r7, [r0, r7, LSL #2]
1204	LDR	r2, [r0, r2, LSL #2]
1205	EOR	lr, lr, r10, ROR #24
1206	LDM	r3!, {r8, r9, r10, r11}
1207	EOR	r7, r7, lr, ROR #24
1208	EOR	r7, r7, r2, ROR #8
1209	/*   XOR in Key Schedule */
1210	EOR	r4, r4, r8
1211	EOR	r5, r5, r9
1212	EOR	r6, r6, r10
1213	EOR	r7, r7, r11
1214	SUBS	r1, r1, #0x1
1215#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1216	BNE	L_AES_ECB_encrypt_block_nr_192
1217#else
1218	BNE.W	L_AES_ECB_encrypt_block_nr_192
1219#endif
1220	UBFX	r8, r5, #16, #8
1221	LSR	r11, r4, #24
1222	UBFX	lr, r6, #8, #8
1223	UBFX	r2, r7, #0, #8
1224	LDR	r8, [r0, r8, LSL #2]
1225	LDR	r11, [r0, r11, LSL #2]
1226	LDR	lr, [r0, lr, LSL #2]
1227	LDR	r2, [r0, r2, LSL #2]
1228	UBFX	r9, r6, #16, #8
1229	EOR	r8, r8, r11, ROR #24
1230	LSR	r11, r5, #24
1231	EOR	r8, r8, lr, ROR #8
1232	UBFX	lr, r7, #8, #8
1233	EOR	r8, r8, r2, ROR #16
1234	UBFX	r2, r4, #0, #8
1235	LDR	r9, [r0, r9, LSL #2]
1236	LDR	r11, [r0, r11, LSL #2]
1237	LDR	lr, [r0, lr, LSL #2]
1238	LDR	r2, [r0, r2, LSL #2]
1239	UBFX	r10, r7, #16, #8
1240	EOR	r9, r9, r11, ROR #24
1241	LSR	r11, r6, #24
1242	EOR	r9, r9, lr, ROR #8
1243	UBFX	lr, r4, #8, #8
1244	EOR	r9, r9, r2, ROR #16
1245	UBFX	r2, r5, #0, #8
1246	LDR	r10, [r0, r10, LSL #2]
1247	LDR	r11, [r0, r11, LSL #2]
1248	LDR	lr, [r0, lr, LSL #2]
1249	LDR	r2, [r0, r2, LSL #2]
1250	UBFX	r6, r6, #0, #8
1251	EOR	r10, r10, r11, ROR #24
1252	UBFX	r11, r4, #16, #8
1253	EOR	r10, r10, lr, ROR #8
1254	LSR	lr, r7, #24
1255	EOR	r10, r10, r2, ROR #16
1256	UBFX	r2, r5, #8, #8
1257	LDR	r6, [r0, r6, LSL #2]
1258	LDR	lr, [r0, lr, LSL #2]
1259	LDR	r11, [r0, r11, LSL #2]
1260	LDR	r2, [r0, r2, LSL #2]
1261	EOR	lr, lr, r6, ROR #24
1262	LDM	r3!, {r4, r5, r6, r7}
1263	EOR	r11, r11, lr, ROR #24
1264	EOR	r11, r11, r2, ROR #8
1265	/*   XOR in Key Schedule */
1266	EOR	r8, r8, r4
1267	EOR	r9, r9, r5
1268	EOR	r10, r10, r6
1269	EOR	r11, r11, r7
1270	UBFX	r4, r11, #0, #8
1271	UBFX	r7, r10, #8, #8
1272	UBFX	lr, r9, #16, #8
1273	LSR	r2, r8, #24
1274	LDRB	r4, [r0, r4, LSL #2]
1275	LDRB	r7, [r0, r7, LSL #2]
1276	LDRB	lr, [r0, lr, LSL #2]
1277	LDRB	r2, [r0, r2, LSL #2]
1278	UBFX	r5, r8, #0, #8
1279	EOR	r4, r4, r7, LSL #8
1280	UBFX	r7, r11, #8, #8
1281	EOR	r4, r4, lr, LSL #16
1282	UBFX	lr, r10, #16, #8
1283	EOR	r4, r4, r2, LSL #24
1284	LSR	r2, r9, #24
1285	LDRB	r5, [r0, r5, LSL #2]
1286	LDRB	r7, [r0, r7, LSL #2]
1287	LDRB	lr, [r0, lr, LSL #2]
1288	LDRB	r2, [r0, r2, LSL #2]
1289	UBFX	r6, r9, #0, #8
1290	EOR	r5, r5, r7, LSL #8
1291	UBFX	r7, r8, #8, #8
1292	EOR	r5, r5, lr, LSL #16
1293	UBFX	lr, r11, #16, #8
1294	EOR	r5, r5, r2, LSL #24
1295	LSR	r2, r10, #24
1296	LDRB	r6, [r0, r6, LSL #2]
1297	LDRB	r7, [r0, r7, LSL #2]
1298	LDRB	lr, [r0, lr, LSL #2]
1299	LDRB	r2, [r0, r2, LSL #2]
1300	LSR	r11, r11, #24
1301	EOR	r6, r6, r7, LSL #8
1302	UBFX	r7, r10, #0, #8
1303	EOR	r6, r6, lr, LSL #16
1304	UBFX	lr, r9, #8, #8
1305	EOR	r6, r6, r2, LSL #24
1306	UBFX	r2, r8, #16, #8
1307	LDRB	r11, [r0, r11, LSL #2]
1308	LDRB	r7, [r0, r7, LSL #2]
1309	LDRB	lr, [r0, lr, LSL #2]
1310	LDRB	r2, [r0, r2, LSL #2]
1311	EOR	lr, lr, r11, LSL #16
1312	LDM	r3, {r8, r9, r10, r11}
1313	EOR	r7, r7, lr, LSL #8
1314	EOR	r7, r7, r2, LSL #16
1315	/*   XOR in Key Schedule */
1316	EOR	r4, r4, r8
1317	EOR	r5, r5, r9
1318	EOR	r6, r6, r10
1319	EOR	r7, r7, r11
1320#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
1321	POP	{r1, r2, lr}
1322	LDR	r3, [sp]
1323	REV	r4, r4
1324	REV	r5, r5
1325	REV	r6, r6
1326	REV	r7, r7
1327	STR	r4, [r1]
1328	STR	r5, [r1, #4]
1329	STR	r6, [r1, #8]
1330	STR	r7, [r1, #12]
1331	SUBS	r2, r2, #0x10
1332	ADD	lr, lr, #0x10
1333	ADD	r1, r1, #0x10
1334#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1335	BNE	L_AES_ECB_encrypt_loop_block_192
1336#else
1337	BNE.W	L_AES_ECB_encrypt_loop_block_192
1338#endif
1339#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1340	B	L_AES_ECB_encrypt_end
1341#else
1342	B.N	L_AES_ECB_encrypt_end
1343#endif
1344L_AES_ECB_encrypt_start_block_128:
1345L_AES_ECB_encrypt_loop_block_128:
1346	LDR	r4, [lr]
1347	LDR	r5, [lr, #4]
1348	LDR	r6, [lr, #8]
1349	LDR	r7, [lr, #12]
1350	REV	r4, r4
1351	REV	r5, r5
1352	REV	r6, r6
1353	REV	r7, r7
1354	PUSH	{r1, r2, lr}
1355	LDM	r3!, {r8, r9, r10, r11}
1356	/* Round: 0 - XOR in key schedule */
1357	EOR	r4, r4, r8
1358	EOR	r5, r5, r9
1359	EOR	r6, r6, r10
1360	EOR	r7, r7, r11
1361	MOV	r1, #0x4
1362#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
1363	BL	AES_encrypt_block
1364#else
1365L_AES_ECB_encrypt_block_nr_128:
1366	UBFX	r8, r5, #16, #8
1367	LSR	r11, r4, #24
1368	UBFX	lr, r6, #8, #8
1369	UBFX	r2, r7, #0, #8
1370	LDR	r8, [r0, r8, LSL #2]
1371	LDR	r11, [r0, r11, LSL #2]
1372	LDR	lr, [r0, lr, LSL #2]
1373	LDR	r2, [r0, r2, LSL #2]
1374	UBFX	r9, r6, #16, #8
1375	EOR	r8, r8, r11, ROR #24
1376	LSR	r11, r5, #24
1377	EOR	r8, r8, lr, ROR #8
1378	UBFX	lr, r7, #8, #8
1379	EOR	r8, r8, r2, ROR #16
1380	UBFX	r2, r4, #0, #8
1381	LDR	r9, [r0, r9, LSL #2]
1382	LDR	r11, [r0, r11, LSL #2]
1383	LDR	lr, [r0, lr, LSL #2]
1384	LDR	r2, [r0, r2, LSL #2]
1385	UBFX	r10, r7, #16, #8
1386	EOR	r9, r9, r11, ROR #24
1387	LSR	r11, r6, #24
1388	EOR	r9, r9, lr, ROR #8
1389	UBFX	lr, r4, #8, #8
1390	EOR	r9, r9, r2, ROR #16
1391	UBFX	r2, r5, #0, #8
1392	LDR	r10, [r0, r10, LSL #2]
1393	LDR	r11, [r0, r11, LSL #2]
1394	LDR	lr, [r0, lr, LSL #2]
1395	LDR	r2, [r0, r2, LSL #2]
1396	UBFX	r6, r6, #0, #8
1397	EOR	r10, r10, r11, ROR #24
1398	UBFX	r11, r4, #16, #8
1399	EOR	r10, r10, lr, ROR #8
1400	LSR	lr, r7, #24
1401	EOR	r10, r10, r2, ROR #16
1402	UBFX	r2, r5, #8, #8
1403	LDR	r6, [r0, r6, LSL #2]
1404	LDR	lr, [r0, lr, LSL #2]
1405	LDR	r11, [r0, r11, LSL #2]
1406	LDR	r2, [r0, r2, LSL #2]
1407	EOR	lr, lr, r6, ROR #24
1408	LDM	r3!, {r4, r5, r6, r7}
1409	EOR	r11, r11, lr, ROR #24
1410	EOR	r11, r11, r2, ROR #8
1411	/*   XOR in Key Schedule */
1412	EOR	r8, r8, r4
1413	EOR	r9, r9, r5
1414	EOR	r10, r10, r6
1415	EOR	r11, r11, r7
1416	UBFX	r4, r9, #16, #8
1417	LSR	r7, r8, #24
1418	UBFX	lr, r10, #8, #8
1419	UBFX	r2, r11, #0, #8
1420	LDR	r4, [r0, r4, LSL #2]
1421	LDR	r7, [r0, r7, LSL #2]
1422	LDR	lr, [r0, lr, LSL #2]
1423	LDR	r2, [r0, r2, LSL #2]
1424	UBFX	r5, r10, #16, #8
1425	EOR	r4, r4, r7, ROR #24
1426	LSR	r7, r9, #24
1427	EOR	r4, r4, lr, ROR #8
1428	UBFX	lr, r11, #8, #8
1429	EOR	r4, r4, r2, ROR #16
1430	UBFX	r2, r8, #0, #8
1431	LDR	r5, [r0, r5, LSL #2]
1432	LDR	r7, [r0, r7, LSL #2]
1433	LDR	lr, [r0, lr, LSL #2]
1434	LDR	r2, [r0, r2, LSL #2]
1435	UBFX	r6, r11, #16, #8
1436	EOR	r5, r5, r7, ROR #24
1437	LSR	r7, r10, #24
1438	EOR	r5, r5, lr, ROR #8
1439	UBFX	lr, r8, #8, #8
1440	EOR	r5, r5, r2, ROR #16
1441	UBFX	r2, r9, #0, #8
1442	LDR	r6, [r0, r6, LSL #2]
1443	LDR	r7, [r0, r7, LSL #2]
1444	LDR	lr, [r0, lr, LSL #2]
1445	LDR	r2, [r0, r2, LSL #2]
1446	UBFX	r10, r10, #0, #8
1447	EOR	r6, r6, r7, ROR #24
1448	UBFX	r7, r8, #16, #8
1449	EOR	r6, r6, lr, ROR #8
1450	LSR	lr, r11, #24
1451	EOR	r6, r6, r2, ROR #16
1452	UBFX	r2, r9, #8, #8
1453	LDR	r10, [r0, r10, LSL #2]
1454	LDR	lr, [r0, lr, LSL #2]
1455	LDR	r7, [r0, r7, LSL #2]
1456	LDR	r2, [r0, r2, LSL #2]
1457	EOR	lr, lr, r10, ROR #24
1458	LDM	r3!, {r8, r9, r10, r11}
1459	EOR	r7, r7, lr, ROR #24
1460	EOR	r7, r7, r2, ROR #8
1461	/*   XOR in Key Schedule */
1462	EOR	r4, r4, r8
1463	EOR	r5, r5, r9
1464	EOR	r6, r6, r10
1465	EOR	r7, r7, r11
1466	SUBS	r1, r1, #0x1
1467#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1468	BNE	L_AES_ECB_encrypt_block_nr_128
1469#else
1470	BNE.W	L_AES_ECB_encrypt_block_nr_128
1471#endif
1472	UBFX	r8, r5, #16, #8
1473	LSR	r11, r4, #24
1474	UBFX	lr, r6, #8, #8
1475	UBFX	r2, r7, #0, #8
1476	LDR	r8, [r0, r8, LSL #2]
1477	LDR	r11, [r0, r11, LSL #2]
1478	LDR	lr, [r0, lr, LSL #2]
1479	LDR	r2, [r0, r2, LSL #2]
1480	UBFX	r9, r6, #16, #8
1481	EOR	r8, r8, r11, ROR #24
1482	LSR	r11, r5, #24
1483	EOR	r8, r8, lr, ROR #8
1484	UBFX	lr, r7, #8, #8
1485	EOR	r8, r8, r2, ROR #16
1486	UBFX	r2, r4, #0, #8
1487	LDR	r9, [r0, r9, LSL #2]
1488	LDR	r11, [r0, r11, LSL #2]
1489	LDR	lr, [r0, lr, LSL #2]
1490	LDR	r2, [r0, r2, LSL #2]
1491	UBFX	r10, r7, #16, #8
1492	EOR	r9, r9, r11, ROR #24
1493	LSR	r11, r6, #24
1494	EOR	r9, r9, lr, ROR #8
1495	UBFX	lr, r4, #8, #8
1496	EOR	r9, r9, r2, ROR #16
1497	UBFX	r2, r5, #0, #8
1498	LDR	r10, [r0, r10, LSL #2]
1499	LDR	r11, [r0, r11, LSL #2]
1500	LDR	lr, [r0, lr, LSL #2]
1501	LDR	r2, [r0, r2, LSL #2]
1502	UBFX	r6, r6, #0, #8
1503	EOR	r10, r10, r11, ROR #24
1504	UBFX	r11, r4, #16, #8
1505	EOR	r10, r10, lr, ROR #8
1506	LSR	lr, r7, #24
1507	EOR	r10, r10, r2, ROR #16
1508	UBFX	r2, r5, #8, #8
1509	LDR	r6, [r0, r6, LSL #2]
1510	LDR	lr, [r0, lr, LSL #2]
1511	LDR	r11, [r0, r11, LSL #2]
1512	LDR	r2, [r0, r2, LSL #2]
1513	EOR	lr, lr, r6, ROR #24
1514	LDM	r3!, {r4, r5, r6, r7}
1515	EOR	r11, r11, lr, ROR #24
1516	EOR	r11, r11, r2, ROR #8
1517	/*   XOR in Key Schedule */
1518	EOR	r8, r8, r4
1519	EOR	r9, r9, r5
1520	EOR	r10, r10, r6
1521	EOR	r11, r11, r7
1522	UBFX	r4, r11, #0, #8
1523	UBFX	r7, r10, #8, #8
1524	UBFX	lr, r9, #16, #8
1525	LSR	r2, r8, #24
1526	LDRB	r4, [r0, r4, LSL #2]
1527	LDRB	r7, [r0, r7, LSL #2]
1528	LDRB	lr, [r0, lr, LSL #2]
1529	LDRB	r2, [r0, r2, LSL #2]
1530	UBFX	r5, r8, #0, #8
1531	EOR	r4, r4, r7, LSL #8
1532	UBFX	r7, r11, #8, #8
1533	EOR	r4, r4, lr, LSL #16
1534	UBFX	lr, r10, #16, #8
1535	EOR	r4, r4, r2, LSL #24
1536	LSR	r2, r9, #24
1537	LDRB	r5, [r0, r5, LSL #2]
1538	LDRB	r7, [r0, r7, LSL #2]
1539	LDRB	lr, [r0, lr, LSL #2]
1540	LDRB	r2, [r0, r2, LSL #2]
1541	UBFX	r6, r9, #0, #8
1542	EOR	r5, r5, r7, LSL #8
1543	UBFX	r7, r8, #8, #8
1544	EOR	r5, r5, lr, LSL #16
1545	UBFX	lr, r11, #16, #8
1546	EOR	r5, r5, r2, LSL #24
1547	LSR	r2, r10, #24
1548	LDRB	r6, [r0, r6, LSL #2]
1549	LDRB	r7, [r0, r7, LSL #2]
1550	LDRB	lr, [r0, lr, LSL #2]
1551	LDRB	r2, [r0, r2, LSL #2]
1552	LSR	r11, r11, #24
1553	EOR	r6, r6, r7, LSL #8
1554	UBFX	r7, r10, #0, #8
1555	EOR	r6, r6, lr, LSL #16
1556	UBFX	lr, r9, #8, #8
1557	EOR	r6, r6, r2, LSL #24
1558	UBFX	r2, r8, #16, #8
1559	LDRB	r11, [r0, r11, LSL #2]
1560	LDRB	r7, [r0, r7, LSL #2]
1561	LDRB	lr, [r0, lr, LSL #2]
1562	LDRB	r2, [r0, r2, LSL #2]
1563	EOR	lr, lr, r11, LSL #16
1564	LDM	r3, {r8, r9, r10, r11}
1565	EOR	r7, r7, lr, LSL #8
1566	EOR	r7, r7, r2, LSL #16
1567	/*   XOR in Key Schedule */
1568	EOR	r4, r4, r8
1569	EOR	r5, r5, r9
1570	EOR	r6, r6, r10
1571	EOR	r7, r7, r11
1572#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
1573	POP	{r1, r2, lr}
1574	LDR	r3, [sp]
1575	REV	r4, r4
1576	REV	r5, r5
1577	REV	r6, r6
1578	REV	r7, r7
1579	STR	r4, [r1]
1580	STR	r5, [r1, #4]
1581	STR	r6, [r1, #8]
1582	STR	r7, [r1, #12]
1583	SUBS	r2, r2, #0x10
1584	ADD	lr, lr, #0x10
1585	ADD	r1, r1, #0x10
1586#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1587	BNE	L_AES_ECB_encrypt_loop_block_128
1588#else
1589	BNE.W	L_AES_ECB_encrypt_loop_block_128
1590#endif
1591L_AES_ECB_encrypt_end:
1592	POP	{r3}
1593	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
1594	/* Cycle Count = 1055 */
1595	.size	AES_ECB_encrypt,.-AES_ECB_encrypt
1596#endif /* HAVE_AESCCM || HAVE_AESGCM || WOLFSSL_AES_DIRECT ||
1597        * WOLFSSL_AES_COUNTER || HAVE_AES_ECB */
1598#ifdef HAVE_AES_CBC
1599	.text
1600	.align	4
1601	.globl	AES_CBC_encrypt
1602	.type	AES_CBC_encrypt, %function
1603AES_CBC_encrypt:
1604	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
1605	LDR	r8, [sp, #36]
1606	LDR	r9, [sp, #40]
1607	MOV	lr, r0
1608	LDR	r0, L_AES_Thumb2_te_ecb
1609	LDM	r9, {r4, r5, r6, r7}
1610	PUSH	{r3, r9}
1611	CMP	r8, #0xa
1612#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1613	BEQ	L_AES_CBC_encrypt_start_block_128
1614#else
1615	BEQ.W	L_AES_CBC_encrypt_start_block_128
1616#endif
1617	CMP	r8, #0xc
1618#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1619	BEQ	L_AES_CBC_encrypt_start_block_192
1620#else
1621	BEQ.W	L_AES_CBC_encrypt_start_block_192
1622#endif
1623L_AES_CBC_encrypt_loop_block_256:
1624	LDR	r8, [lr]
1625	LDR	r9, [lr, #4]
1626	LDR	r10, [lr, #8]
1627	LDR	r11, [lr, #12]
1628	EOR	r4, r4, r8
1629	EOR	r5, r5, r9
1630	EOR	r6, r6, r10
1631	EOR	r7, r7, r11
1632	PUSH	{r1, r2, lr}
1633	LDM	r3!, {r8, r9, r10, r11}
1634	REV	r4, r4
1635	REV	r5, r5
1636	REV	r6, r6
1637	REV	r7, r7
1638	/* Round: 0 - XOR in key schedule */
1639	EOR	r4, r4, r8
1640	EOR	r5, r5, r9
1641	EOR	r6, r6, r10
1642	EOR	r7, r7, r11
1643	MOV	r1, #0x6
1644#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
1645	BL	AES_encrypt_block
1646#else
1647L_AES_CBC_encrypt_block_nr_256:
1648	UBFX	r8, r5, #16, #8
1649	LSR	r11, r4, #24
1650	UBFX	lr, r6, #8, #8
1651	UBFX	r2, r7, #0, #8
1652	LDR	r8, [r0, r8, LSL #2]
1653	LDR	r11, [r0, r11, LSL #2]
1654	LDR	lr, [r0, lr, LSL #2]
1655	LDR	r2, [r0, r2, LSL #2]
1656	UBFX	r9, r6, #16, #8
1657	EOR	r8, r8, r11, ROR #24
1658	LSR	r11, r5, #24
1659	EOR	r8, r8, lr, ROR #8
1660	UBFX	lr, r7, #8, #8
1661	EOR	r8, r8, r2, ROR #16
1662	UBFX	r2, r4, #0, #8
1663	LDR	r9, [r0, r9, LSL #2]
1664	LDR	r11, [r0, r11, LSL #2]
1665	LDR	lr, [r0, lr, LSL #2]
1666	LDR	r2, [r0, r2, LSL #2]
1667	UBFX	r10, r7, #16, #8
1668	EOR	r9, r9, r11, ROR #24
1669	LSR	r11, r6, #24
1670	EOR	r9, r9, lr, ROR #8
1671	UBFX	lr, r4, #8, #8
1672	EOR	r9, r9, r2, ROR #16
1673	UBFX	r2, r5, #0, #8
1674	LDR	r10, [r0, r10, LSL #2]
1675	LDR	r11, [r0, r11, LSL #2]
1676	LDR	lr, [r0, lr, LSL #2]
1677	LDR	r2, [r0, r2, LSL #2]
1678	UBFX	r6, r6, #0, #8
1679	EOR	r10, r10, r11, ROR #24
1680	UBFX	r11, r4, #16, #8
1681	EOR	r10, r10, lr, ROR #8
1682	LSR	lr, r7, #24
1683	EOR	r10, r10, r2, ROR #16
1684	UBFX	r2, r5, #8, #8
1685	LDR	r6, [r0, r6, LSL #2]
1686	LDR	lr, [r0, lr, LSL #2]
1687	LDR	r11, [r0, r11, LSL #2]
1688	LDR	r2, [r0, r2, LSL #2]
1689	EOR	lr, lr, r6, ROR #24
1690	LDM	r3!, {r4, r5, r6, r7}
1691	EOR	r11, r11, lr, ROR #24
1692	EOR	r11, r11, r2, ROR #8
1693	/*   XOR in Key Schedule */
1694	EOR	r8, r8, r4
1695	EOR	r9, r9, r5
1696	EOR	r10, r10, r6
1697	EOR	r11, r11, r7
1698	UBFX	r4, r9, #16, #8
1699	LSR	r7, r8, #24
1700	UBFX	lr, r10, #8, #8
1701	UBFX	r2, r11, #0, #8
1702	LDR	r4, [r0, r4, LSL #2]
1703	LDR	r7, [r0, r7, LSL #2]
1704	LDR	lr, [r0, lr, LSL #2]
1705	LDR	r2, [r0, r2, LSL #2]
1706	UBFX	r5, r10, #16, #8
1707	EOR	r4, r4, r7, ROR #24
1708	LSR	r7, r9, #24
1709	EOR	r4, r4, lr, ROR #8
1710	UBFX	lr, r11, #8, #8
1711	EOR	r4, r4, r2, ROR #16
1712	UBFX	r2, r8, #0, #8
1713	LDR	r5, [r0, r5, LSL #2]
1714	LDR	r7, [r0, r7, LSL #2]
1715	LDR	lr, [r0, lr, LSL #2]
1716	LDR	r2, [r0, r2, LSL #2]
1717	UBFX	r6, r11, #16, #8
1718	EOR	r5, r5, r7, ROR #24
1719	LSR	r7, r10, #24
1720	EOR	r5, r5, lr, ROR #8
1721	UBFX	lr, r8, #8, #8
1722	EOR	r5, r5, r2, ROR #16
1723	UBFX	r2, r9, #0, #8
1724	LDR	r6, [r0, r6, LSL #2]
1725	LDR	r7, [r0, r7, LSL #2]
1726	LDR	lr, [r0, lr, LSL #2]
1727	LDR	r2, [r0, r2, LSL #2]
1728	UBFX	r10, r10, #0, #8
1729	EOR	r6, r6, r7, ROR #24
1730	UBFX	r7, r8, #16, #8
1731	EOR	r6, r6, lr, ROR #8
1732	LSR	lr, r11, #24
1733	EOR	r6, r6, r2, ROR #16
1734	UBFX	r2, r9, #8, #8
1735	LDR	r10, [r0, r10, LSL #2]
1736	LDR	lr, [r0, lr, LSL #2]
1737	LDR	r7, [r0, r7, LSL #2]
1738	LDR	r2, [r0, r2, LSL #2]
1739	EOR	lr, lr, r10, ROR #24
1740	LDM	r3!, {r8, r9, r10, r11}
1741	EOR	r7, r7, lr, ROR #24
1742	EOR	r7, r7, r2, ROR #8
1743	/*   XOR in Key Schedule */
1744	EOR	r4, r4, r8
1745	EOR	r5, r5, r9
1746	EOR	r6, r6, r10
1747	EOR	r7, r7, r11
1748	SUBS	r1, r1, #0x1
1749#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1750	BNE	L_AES_CBC_encrypt_block_nr_256
1751#else
1752	BNE.W	L_AES_CBC_encrypt_block_nr_256
1753#endif
1754	UBFX	r8, r5, #16, #8
1755	LSR	r11, r4, #24
1756	UBFX	lr, r6, #8, #8
1757	UBFX	r2, r7, #0, #8
1758	LDR	r8, [r0, r8, LSL #2]
1759	LDR	r11, [r0, r11, LSL #2]
1760	LDR	lr, [r0, lr, LSL #2]
1761	LDR	r2, [r0, r2, LSL #2]
1762	UBFX	r9, r6, #16, #8
1763	EOR	r8, r8, r11, ROR #24
1764	LSR	r11, r5, #24
1765	EOR	r8, r8, lr, ROR #8
1766	UBFX	lr, r7, #8, #8
1767	EOR	r8, r8, r2, ROR #16
1768	UBFX	r2, r4, #0, #8
1769	LDR	r9, [r0, r9, LSL #2]
1770	LDR	r11, [r0, r11, LSL #2]
1771	LDR	lr, [r0, lr, LSL #2]
1772	LDR	r2, [r0, r2, LSL #2]
1773	UBFX	r10, r7, #16, #8
1774	EOR	r9, r9, r11, ROR #24
1775	LSR	r11, r6, #24
1776	EOR	r9, r9, lr, ROR #8
1777	UBFX	lr, r4, #8, #8
1778	EOR	r9, r9, r2, ROR #16
1779	UBFX	r2, r5, #0, #8
1780	LDR	r10, [r0, r10, LSL #2]
1781	LDR	r11, [r0, r11, LSL #2]
1782	LDR	lr, [r0, lr, LSL #2]
1783	LDR	r2, [r0, r2, LSL #2]
1784	UBFX	r6, r6, #0, #8
1785	EOR	r10, r10, r11, ROR #24
1786	UBFX	r11, r4, #16, #8
1787	EOR	r10, r10, lr, ROR #8
1788	LSR	lr, r7, #24
1789	EOR	r10, r10, r2, ROR #16
1790	UBFX	r2, r5, #8, #8
1791	LDR	r6, [r0, r6, LSL #2]
1792	LDR	lr, [r0, lr, LSL #2]
1793	LDR	r11, [r0, r11, LSL #2]
1794	LDR	r2, [r0, r2, LSL #2]
1795	EOR	lr, lr, r6, ROR #24
1796	LDM	r3!, {r4, r5, r6, r7}
1797	EOR	r11, r11, lr, ROR #24
1798	EOR	r11, r11, r2, ROR #8
1799	/*   XOR in Key Schedule */
1800	EOR	r8, r8, r4
1801	EOR	r9, r9, r5
1802	EOR	r10, r10, r6
1803	EOR	r11, r11, r7
1804	UBFX	r4, r11, #0, #8
1805	UBFX	r7, r10, #8, #8
1806	UBFX	lr, r9, #16, #8
1807	LSR	r2, r8, #24
1808	LDRB	r4, [r0, r4, LSL #2]
1809	LDRB	r7, [r0, r7, LSL #2]
1810	LDRB	lr, [r0, lr, LSL #2]
1811	LDRB	r2, [r0, r2, LSL #2]
1812	UBFX	r5, r8, #0, #8
1813	EOR	r4, r4, r7, LSL #8
1814	UBFX	r7, r11, #8, #8
1815	EOR	r4, r4, lr, LSL #16
1816	UBFX	lr, r10, #16, #8
1817	EOR	r4, r4, r2, LSL #24
1818	LSR	r2, r9, #24
1819	LDRB	r5, [r0, r5, LSL #2]
1820	LDRB	r7, [r0, r7, LSL #2]
1821	LDRB	lr, [r0, lr, LSL #2]
1822	LDRB	r2, [r0, r2, LSL #2]
1823	UBFX	r6, r9, #0, #8
1824	EOR	r5, r5, r7, LSL #8
1825	UBFX	r7, r8, #8, #8
1826	EOR	r5, r5, lr, LSL #16
1827	UBFX	lr, r11, #16, #8
1828	EOR	r5, r5, r2, LSL #24
1829	LSR	r2, r10, #24
1830	LDRB	r6, [r0, r6, LSL #2]
1831	LDRB	r7, [r0, r7, LSL #2]
1832	LDRB	lr, [r0, lr, LSL #2]
1833	LDRB	r2, [r0, r2, LSL #2]
1834	LSR	r11, r11, #24
1835	EOR	r6, r6, r7, LSL #8
1836	UBFX	r7, r10, #0, #8
1837	EOR	r6, r6, lr, LSL #16
1838	UBFX	lr, r9, #8, #8
1839	EOR	r6, r6, r2, LSL #24
1840	UBFX	r2, r8, #16, #8
1841	LDRB	r11, [r0, r11, LSL #2]
1842	LDRB	r7, [r0, r7, LSL #2]
1843	LDRB	lr, [r0, lr, LSL #2]
1844	LDRB	r2, [r0, r2, LSL #2]
1845	EOR	lr, lr, r11, LSL #16
1846	LDM	r3, {r8, r9, r10, r11}
1847	EOR	r7, r7, lr, LSL #8
1848	EOR	r7, r7, r2, LSL #16
1849	/*   XOR in Key Schedule */
1850	EOR	r4, r4, r8
1851	EOR	r5, r5, r9
1852	EOR	r6, r6, r10
1853	EOR	r7, r7, r11
1854#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
1855	POP	{r1, r2, lr}
1856	LDR	r3, [sp]
1857	REV	r4, r4
1858	REV	r5, r5
1859	REV	r6, r6
1860	REV	r7, r7
1861	STR	r4, [r1]
1862	STR	r5, [r1, #4]
1863	STR	r6, [r1, #8]
1864	STR	r7, [r1, #12]
1865	SUBS	r2, r2, #0x10
1866	ADD	lr, lr, #0x10
1867	ADD	r1, r1, #0x10
1868#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1869	BNE	L_AES_CBC_encrypt_loop_block_256
1870#else
1871	BNE.W	L_AES_CBC_encrypt_loop_block_256
1872#endif
1873#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
1874	B	L_AES_CBC_encrypt_end
1875#else
1876	B.N	L_AES_CBC_encrypt_end
1877#endif
1878L_AES_CBC_encrypt_start_block_192:
1879L_AES_CBC_encrypt_loop_block_192:
1880	LDR	r8, [lr]
1881	LDR	r9, [lr, #4]
1882	LDR	r10, [lr, #8]
1883	LDR	r11, [lr, #12]
1884	EOR	r4, r4, r8
1885	EOR	r5, r5, r9
1886	EOR	r6, r6, r10
1887	EOR	r7, r7, r11
1888	PUSH	{r1, r2, lr}
1889	LDM	r3!, {r8, r9, r10, r11}
1890	REV	r4, r4
1891	REV	r5, r5
1892	REV	r6, r6
1893	REV	r7, r7
1894	/* Round: 0 - XOR in key schedule */
1895	EOR	r4, r4, r8
1896	EOR	r5, r5, r9
1897	EOR	r6, r6, r10
1898	EOR	r7, r7, r11
1899	MOV	r1, #0x5
1900#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
1901	BL	AES_encrypt_block
1902#else
1903L_AES_CBC_encrypt_block_nr_192:
1904	UBFX	r8, r5, #16, #8
1905	LSR	r11, r4, #24
1906	UBFX	lr, r6, #8, #8
1907	UBFX	r2, r7, #0, #8
1908	LDR	r8, [r0, r8, LSL #2]
1909	LDR	r11, [r0, r11, LSL #2]
1910	LDR	lr, [r0, lr, LSL #2]
1911	LDR	r2, [r0, r2, LSL #2]
1912	UBFX	r9, r6, #16, #8
1913	EOR	r8, r8, r11, ROR #24
1914	LSR	r11, r5, #24
1915	EOR	r8, r8, lr, ROR #8
1916	UBFX	lr, r7, #8, #8
1917	EOR	r8, r8, r2, ROR #16
1918	UBFX	r2, r4, #0, #8
1919	LDR	r9, [r0, r9, LSL #2]
1920	LDR	r11, [r0, r11, LSL #2]
1921	LDR	lr, [r0, lr, LSL #2]
1922	LDR	r2, [r0, r2, LSL #2]
1923	UBFX	r10, r7, #16, #8
1924	EOR	r9, r9, r11, ROR #24
1925	LSR	r11, r6, #24
1926	EOR	r9, r9, lr, ROR #8
1927	UBFX	lr, r4, #8, #8
1928	EOR	r9, r9, r2, ROR #16
1929	UBFX	r2, r5, #0, #8
1930	LDR	r10, [r0, r10, LSL #2]
1931	LDR	r11, [r0, r11, LSL #2]
1932	LDR	lr, [r0, lr, LSL #2]
1933	LDR	r2, [r0, r2, LSL #2]
1934	UBFX	r6, r6, #0, #8
1935	EOR	r10, r10, r11, ROR #24
1936	UBFX	r11, r4, #16, #8
1937	EOR	r10, r10, lr, ROR #8
1938	LSR	lr, r7, #24
1939	EOR	r10, r10, r2, ROR #16
1940	UBFX	r2, r5, #8, #8
1941	LDR	r6, [r0, r6, LSL #2]
1942	LDR	lr, [r0, lr, LSL #2]
1943	LDR	r11, [r0, r11, LSL #2]
1944	LDR	r2, [r0, r2, LSL #2]
1945	EOR	lr, lr, r6, ROR #24
1946	LDM	r3!, {r4, r5, r6, r7}
1947	EOR	r11, r11, lr, ROR #24
1948	EOR	r11, r11, r2, ROR #8
1949	/*   XOR in Key Schedule */
1950	EOR	r8, r8, r4
1951	EOR	r9, r9, r5
1952	EOR	r10, r10, r6
1953	EOR	r11, r11, r7
1954	UBFX	r4, r9, #16, #8
1955	LSR	r7, r8, #24
1956	UBFX	lr, r10, #8, #8
1957	UBFX	r2, r11, #0, #8
1958	LDR	r4, [r0, r4, LSL #2]
1959	LDR	r7, [r0, r7, LSL #2]
1960	LDR	lr, [r0, lr, LSL #2]
1961	LDR	r2, [r0, r2, LSL #2]
1962	UBFX	r5, r10, #16, #8
1963	EOR	r4, r4, r7, ROR #24
1964	LSR	r7, r9, #24
1965	EOR	r4, r4, lr, ROR #8
1966	UBFX	lr, r11, #8, #8
1967	EOR	r4, r4, r2, ROR #16
1968	UBFX	r2, r8, #0, #8
1969	LDR	r5, [r0, r5, LSL #2]
1970	LDR	r7, [r0, r7, LSL #2]
1971	LDR	lr, [r0, lr, LSL #2]
1972	LDR	r2, [r0, r2, LSL #2]
1973	UBFX	r6, r11, #16, #8
1974	EOR	r5, r5, r7, ROR #24
1975	LSR	r7, r10, #24
1976	EOR	r5, r5, lr, ROR #8
1977	UBFX	lr, r8, #8, #8
1978	EOR	r5, r5, r2, ROR #16
1979	UBFX	r2, r9, #0, #8
1980	LDR	r6, [r0, r6, LSL #2]
1981	LDR	r7, [r0, r7, LSL #2]
1982	LDR	lr, [r0, lr, LSL #2]
1983	LDR	r2, [r0, r2, LSL #2]
1984	UBFX	r10, r10, #0, #8
1985	EOR	r6, r6, r7, ROR #24
1986	UBFX	r7, r8, #16, #8
1987	EOR	r6, r6, lr, ROR #8
1988	LSR	lr, r11, #24
1989	EOR	r6, r6, r2, ROR #16
1990	UBFX	r2, r9, #8, #8
1991	LDR	r10, [r0, r10, LSL #2]
1992	LDR	lr, [r0, lr, LSL #2]
1993	LDR	r7, [r0, r7, LSL #2]
1994	LDR	r2, [r0, r2, LSL #2]
1995	EOR	lr, lr, r10, ROR #24
1996	LDM	r3!, {r8, r9, r10, r11}
1997	EOR	r7, r7, lr, ROR #24
1998	EOR	r7, r7, r2, ROR #8
1999	/*   XOR in Key Schedule */
2000	EOR	r4, r4, r8
2001	EOR	r5, r5, r9
2002	EOR	r6, r6, r10
2003	EOR	r7, r7, r11
2004	SUBS	r1, r1, #0x1
2005#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2006	BNE	L_AES_CBC_encrypt_block_nr_192
2007#else
2008	BNE.W	L_AES_CBC_encrypt_block_nr_192
2009#endif
2010	UBFX	r8, r5, #16, #8
2011	LSR	r11, r4, #24
2012	UBFX	lr, r6, #8, #8
2013	UBFX	r2, r7, #0, #8
2014	LDR	r8, [r0, r8, LSL #2]
2015	LDR	r11, [r0, r11, LSL #2]
2016	LDR	lr, [r0, lr, LSL #2]
2017	LDR	r2, [r0, r2, LSL #2]
2018	UBFX	r9, r6, #16, #8
2019	EOR	r8, r8, r11, ROR #24
2020	LSR	r11, r5, #24
2021	EOR	r8, r8, lr, ROR #8
2022	UBFX	lr, r7, #8, #8
2023	EOR	r8, r8, r2, ROR #16
2024	UBFX	r2, r4, #0, #8
2025	LDR	r9, [r0, r9, LSL #2]
2026	LDR	r11, [r0, r11, LSL #2]
2027	LDR	lr, [r0, lr, LSL #2]
2028	LDR	r2, [r0, r2, LSL #2]
2029	UBFX	r10, r7, #16, #8
2030	EOR	r9, r9, r11, ROR #24
2031	LSR	r11, r6, #24
2032	EOR	r9, r9, lr, ROR #8
2033	UBFX	lr, r4, #8, #8
2034	EOR	r9, r9, r2, ROR #16
2035	UBFX	r2, r5, #0, #8
2036	LDR	r10, [r0, r10, LSL #2]
2037	LDR	r11, [r0, r11, LSL #2]
2038	LDR	lr, [r0, lr, LSL #2]
2039	LDR	r2, [r0, r2, LSL #2]
2040	UBFX	r6, r6, #0, #8
2041	EOR	r10, r10, r11, ROR #24
2042	UBFX	r11, r4, #16, #8
2043	EOR	r10, r10, lr, ROR #8
2044	LSR	lr, r7, #24
2045	EOR	r10, r10, r2, ROR #16
2046	UBFX	r2, r5, #8, #8
2047	LDR	r6, [r0, r6, LSL #2]
2048	LDR	lr, [r0, lr, LSL #2]
2049	LDR	r11, [r0, r11, LSL #2]
2050	LDR	r2, [r0, r2, LSL #2]
2051	EOR	lr, lr, r6, ROR #24
2052	LDM	r3!, {r4, r5, r6, r7}
2053	EOR	r11, r11, lr, ROR #24
2054	EOR	r11, r11, r2, ROR #8
2055	/*   XOR in Key Schedule */
2056	EOR	r8, r8, r4
2057	EOR	r9, r9, r5
2058	EOR	r10, r10, r6
2059	EOR	r11, r11, r7
2060	UBFX	r4, r11, #0, #8
2061	UBFX	r7, r10, #8, #8
2062	UBFX	lr, r9, #16, #8
2063	LSR	r2, r8, #24
2064	LDRB	r4, [r0, r4, LSL #2]
2065	LDRB	r7, [r0, r7, LSL #2]
2066	LDRB	lr, [r0, lr, LSL #2]
2067	LDRB	r2, [r0, r2, LSL #2]
2068	UBFX	r5, r8, #0, #8
2069	EOR	r4, r4, r7, LSL #8
2070	UBFX	r7, r11, #8, #8
2071	EOR	r4, r4, lr, LSL #16
2072	UBFX	lr, r10, #16, #8
2073	EOR	r4, r4, r2, LSL #24
2074	LSR	r2, r9, #24
2075	LDRB	r5, [r0, r5, LSL #2]
2076	LDRB	r7, [r0, r7, LSL #2]
2077	LDRB	lr, [r0, lr, LSL #2]
2078	LDRB	r2, [r0, r2, LSL #2]
2079	UBFX	r6, r9, #0, #8
2080	EOR	r5, r5, r7, LSL #8
2081	UBFX	r7, r8, #8, #8
2082	EOR	r5, r5, lr, LSL #16
2083	UBFX	lr, r11, #16, #8
2084	EOR	r5, r5, r2, LSL #24
2085	LSR	r2, r10, #24
2086	LDRB	r6, [r0, r6, LSL #2]
2087	LDRB	r7, [r0, r7, LSL #2]
2088	LDRB	lr, [r0, lr, LSL #2]
2089	LDRB	r2, [r0, r2, LSL #2]
2090	LSR	r11, r11, #24
2091	EOR	r6, r6, r7, LSL #8
2092	UBFX	r7, r10, #0, #8
2093	EOR	r6, r6, lr, LSL #16
2094	UBFX	lr, r9, #8, #8
2095	EOR	r6, r6, r2, LSL #24
2096	UBFX	r2, r8, #16, #8
2097	LDRB	r11, [r0, r11, LSL #2]
2098	LDRB	r7, [r0, r7, LSL #2]
2099	LDRB	lr, [r0, lr, LSL #2]
2100	LDRB	r2, [r0, r2, LSL #2]
2101	EOR	lr, lr, r11, LSL #16
2102	LDM	r3, {r8, r9, r10, r11}
2103	EOR	r7, r7, lr, LSL #8
2104	EOR	r7, r7, r2, LSL #16
2105	/*   XOR in Key Schedule */
2106	EOR	r4, r4, r8
2107	EOR	r5, r5, r9
2108	EOR	r6, r6, r10
2109	EOR	r7, r7, r11
2110#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
2111	POP	{r1, r2, lr}
2112	LDR	r3, [sp]
2113	REV	r4, r4
2114	REV	r5, r5
2115	REV	r6, r6
2116	REV	r7, r7
2117	STR	r4, [r1]
2118	STR	r5, [r1, #4]
2119	STR	r6, [r1, #8]
2120	STR	r7, [r1, #12]
2121	SUBS	r2, r2, #0x10
2122	ADD	lr, lr, #0x10
2123	ADD	r1, r1, #0x10
2124#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2125	BNE	L_AES_CBC_encrypt_loop_block_192
2126#else
2127	BNE.W	L_AES_CBC_encrypt_loop_block_192
2128#endif
2129#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2130	B	L_AES_CBC_encrypt_end
2131#else
2132	B.N	L_AES_CBC_encrypt_end
2133#endif
2134L_AES_CBC_encrypt_start_block_128:
2135L_AES_CBC_encrypt_loop_block_128:
2136	LDR	r8, [lr]
2137	LDR	r9, [lr, #4]
2138	LDR	r10, [lr, #8]
2139	LDR	r11, [lr, #12]
2140	EOR	r4, r4, r8
2141	EOR	r5, r5, r9
2142	EOR	r6, r6, r10
2143	EOR	r7, r7, r11
2144	PUSH	{r1, r2, lr}
2145	LDM	r3!, {r8, r9, r10, r11}
2146	REV	r4, r4
2147	REV	r5, r5
2148	REV	r6, r6
2149	REV	r7, r7
2150	/* Round: 0 - XOR in key schedule */
2151	EOR	r4, r4, r8
2152	EOR	r5, r5, r9
2153	EOR	r6, r6, r10
2154	EOR	r7, r7, r11
2155	MOV	r1, #0x4
2156#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
2157	BL	AES_encrypt_block
2158#else
2159L_AES_CBC_encrypt_block_nr_128:
2160	UBFX	r8, r5, #16, #8
2161	LSR	r11, r4, #24
2162	UBFX	lr, r6, #8, #8
2163	UBFX	r2, r7, #0, #8
2164	LDR	r8, [r0, r8, LSL #2]
2165	LDR	r11, [r0, r11, LSL #2]
2166	LDR	lr, [r0, lr, LSL #2]
2167	LDR	r2, [r0, r2, LSL #2]
2168	UBFX	r9, r6, #16, #8
2169	EOR	r8, r8, r11, ROR #24
2170	LSR	r11, r5, #24
2171	EOR	r8, r8, lr, ROR #8
2172	UBFX	lr, r7, #8, #8
2173	EOR	r8, r8, r2, ROR #16
2174	UBFX	r2, r4, #0, #8
2175	LDR	r9, [r0, r9, LSL #2]
2176	LDR	r11, [r0, r11, LSL #2]
2177	LDR	lr, [r0, lr, LSL #2]
2178	LDR	r2, [r0, r2, LSL #2]
2179	UBFX	r10, r7, #16, #8
2180	EOR	r9, r9, r11, ROR #24
2181	LSR	r11, r6, #24
2182	EOR	r9, r9, lr, ROR #8
2183	UBFX	lr, r4, #8, #8
2184	EOR	r9, r9, r2, ROR #16
2185	UBFX	r2, r5, #0, #8
2186	LDR	r10, [r0, r10, LSL #2]
2187	LDR	r11, [r0, r11, LSL #2]
2188	LDR	lr, [r0, lr, LSL #2]
2189	LDR	r2, [r0, r2, LSL #2]
2190	UBFX	r6, r6, #0, #8
2191	EOR	r10, r10, r11, ROR #24
2192	UBFX	r11, r4, #16, #8
2193	EOR	r10, r10, lr, ROR #8
2194	LSR	lr, r7, #24
2195	EOR	r10, r10, r2, ROR #16
2196	UBFX	r2, r5, #8, #8
2197	LDR	r6, [r0, r6, LSL #2]
2198	LDR	lr, [r0, lr, LSL #2]
2199	LDR	r11, [r0, r11, LSL #2]
2200	LDR	r2, [r0, r2, LSL #2]
2201	EOR	lr, lr, r6, ROR #24
2202	LDM	r3!, {r4, r5, r6, r7}
2203	EOR	r11, r11, lr, ROR #24
2204	EOR	r11, r11, r2, ROR #8
2205	/*   XOR in Key Schedule */
2206	EOR	r8, r8, r4
2207	EOR	r9, r9, r5
2208	EOR	r10, r10, r6
2209	EOR	r11, r11, r7
2210	UBFX	r4, r9, #16, #8
2211	LSR	r7, r8, #24
2212	UBFX	lr, r10, #8, #8
2213	UBFX	r2, r11, #0, #8
2214	LDR	r4, [r0, r4, LSL #2]
2215	LDR	r7, [r0, r7, LSL #2]
2216	LDR	lr, [r0, lr, LSL #2]
2217	LDR	r2, [r0, r2, LSL #2]
2218	UBFX	r5, r10, #16, #8
2219	EOR	r4, r4, r7, ROR #24
2220	LSR	r7, r9, #24
2221	EOR	r4, r4, lr, ROR #8
2222	UBFX	lr, r11, #8, #8
2223	EOR	r4, r4, r2, ROR #16
2224	UBFX	r2, r8, #0, #8
2225	LDR	r5, [r0, r5, LSL #2]
2226	LDR	r7, [r0, r7, LSL #2]
2227	LDR	lr, [r0, lr, LSL #2]
2228	LDR	r2, [r0, r2, LSL #2]
2229	UBFX	r6, r11, #16, #8
2230	EOR	r5, r5, r7, ROR #24
2231	LSR	r7, r10, #24
2232	EOR	r5, r5, lr, ROR #8
2233	UBFX	lr, r8, #8, #8
2234	EOR	r5, r5, r2, ROR #16
2235	UBFX	r2, r9, #0, #8
2236	LDR	r6, [r0, r6, LSL #2]
2237	LDR	r7, [r0, r7, LSL #2]
2238	LDR	lr, [r0, lr, LSL #2]
2239	LDR	r2, [r0, r2, LSL #2]
2240	UBFX	r10, r10, #0, #8
2241	EOR	r6, r6, r7, ROR #24
2242	UBFX	r7, r8, #16, #8
2243	EOR	r6, r6, lr, ROR #8
2244	LSR	lr, r11, #24
2245	EOR	r6, r6, r2, ROR #16
2246	UBFX	r2, r9, #8, #8
2247	LDR	r10, [r0, r10, LSL #2]
2248	LDR	lr, [r0, lr, LSL #2]
2249	LDR	r7, [r0, r7, LSL #2]
2250	LDR	r2, [r0, r2, LSL #2]
2251	EOR	lr, lr, r10, ROR #24
2252	LDM	r3!, {r8, r9, r10, r11}
2253	EOR	r7, r7, lr, ROR #24
2254	EOR	r7, r7, r2, ROR #8
2255	/*   XOR in Key Schedule */
2256	EOR	r4, r4, r8
2257	EOR	r5, r5, r9
2258	EOR	r6, r6, r10
2259	EOR	r7, r7, r11
2260	SUBS	r1, r1, #0x1
2261#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2262	BNE	L_AES_CBC_encrypt_block_nr_128
2263#else
2264	BNE.W	L_AES_CBC_encrypt_block_nr_128
2265#endif
2266	UBFX	r8, r5, #16, #8
2267	LSR	r11, r4, #24
2268	UBFX	lr, r6, #8, #8
2269	UBFX	r2, r7, #0, #8
2270	LDR	r8, [r0, r8, LSL #2]
2271	LDR	r11, [r0, r11, LSL #2]
2272	LDR	lr, [r0, lr, LSL #2]
2273	LDR	r2, [r0, r2, LSL #2]
2274	UBFX	r9, r6, #16, #8
2275	EOR	r8, r8, r11, ROR #24
2276	LSR	r11, r5, #24
2277	EOR	r8, r8, lr, ROR #8
2278	UBFX	lr, r7, #8, #8
2279	EOR	r8, r8, r2, ROR #16
2280	UBFX	r2, r4, #0, #8
2281	LDR	r9, [r0, r9, LSL #2]
2282	LDR	r11, [r0, r11, LSL #2]
2283	LDR	lr, [r0, lr, LSL #2]
2284	LDR	r2, [r0, r2, LSL #2]
2285	UBFX	r10, r7, #16, #8
2286	EOR	r9, r9, r11, ROR #24
2287	LSR	r11, r6, #24
2288	EOR	r9, r9, lr, ROR #8
2289	UBFX	lr, r4, #8, #8
2290	EOR	r9, r9, r2, ROR #16
2291	UBFX	r2, r5, #0, #8
2292	LDR	r10, [r0, r10, LSL #2]
2293	LDR	r11, [r0, r11, LSL #2]
2294	LDR	lr, [r0, lr, LSL #2]
2295	LDR	r2, [r0, r2, LSL #2]
2296	UBFX	r6, r6, #0, #8
2297	EOR	r10, r10, r11, ROR #24
2298	UBFX	r11, r4, #16, #8
2299	EOR	r10, r10, lr, ROR #8
2300	LSR	lr, r7, #24
2301	EOR	r10, r10, r2, ROR #16
2302	UBFX	r2, r5, #8, #8
2303	LDR	r6, [r0, r6, LSL #2]
2304	LDR	lr, [r0, lr, LSL #2]
2305	LDR	r11, [r0, r11, LSL #2]
2306	LDR	r2, [r0, r2, LSL #2]
2307	EOR	lr, lr, r6, ROR #24
2308	LDM	r3!, {r4, r5, r6, r7}
2309	EOR	r11, r11, lr, ROR #24
2310	EOR	r11, r11, r2, ROR #8
2311	/*   XOR in Key Schedule */
2312	EOR	r8, r8, r4
2313	EOR	r9, r9, r5
2314	EOR	r10, r10, r6
2315	EOR	r11, r11, r7
2316	UBFX	r4, r11, #0, #8
2317	UBFX	r7, r10, #8, #8
2318	UBFX	lr, r9, #16, #8
2319	LSR	r2, r8, #24
2320	LDRB	r4, [r0, r4, LSL #2]
2321	LDRB	r7, [r0, r7, LSL #2]
2322	LDRB	lr, [r0, lr, LSL #2]
2323	LDRB	r2, [r0, r2, LSL #2]
2324	UBFX	r5, r8, #0, #8
2325	EOR	r4, r4, r7, LSL #8
2326	UBFX	r7, r11, #8, #8
2327	EOR	r4, r4, lr, LSL #16
2328	UBFX	lr, r10, #16, #8
2329	EOR	r4, r4, r2, LSL #24
2330	LSR	r2, r9, #24
2331	LDRB	r5, [r0, r5, LSL #2]
2332	LDRB	r7, [r0, r7, LSL #2]
2333	LDRB	lr, [r0, lr, LSL #2]
2334	LDRB	r2, [r0, r2, LSL #2]
2335	UBFX	r6, r9, #0, #8
2336	EOR	r5, r5, r7, LSL #8
2337	UBFX	r7, r8, #8, #8
2338	EOR	r5, r5, lr, LSL #16
2339	UBFX	lr, r11, #16, #8
2340	EOR	r5, r5, r2, LSL #24
2341	LSR	r2, r10, #24
2342	LDRB	r6, [r0, r6, LSL #2]
2343	LDRB	r7, [r0, r7, LSL #2]
2344	LDRB	lr, [r0, lr, LSL #2]
2345	LDRB	r2, [r0, r2, LSL #2]
2346	LSR	r11, r11, #24
2347	EOR	r6, r6, r7, LSL #8
2348	UBFX	r7, r10, #0, #8
2349	EOR	r6, r6, lr, LSL #16
2350	UBFX	lr, r9, #8, #8
2351	EOR	r6, r6, r2, LSL #24
2352	UBFX	r2, r8, #16, #8
2353	LDRB	r11, [r0, r11, LSL #2]
2354	LDRB	r7, [r0, r7, LSL #2]
2355	LDRB	lr, [r0, lr, LSL #2]
2356	LDRB	r2, [r0, r2, LSL #2]
2357	EOR	lr, lr, r11, LSL #16
2358	LDM	r3, {r8, r9, r10, r11}
2359	EOR	r7, r7, lr, LSL #8
2360	EOR	r7, r7, r2, LSL #16
2361	/*   XOR in Key Schedule */
2362	EOR	r4, r4, r8
2363	EOR	r5, r5, r9
2364	EOR	r6, r6, r10
2365	EOR	r7, r7, r11
2366#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
2367	POP	{r1, r2, lr}
2368	LDR	r3, [sp]
2369	REV	r4, r4
2370	REV	r5, r5
2371	REV	r6, r6
2372	REV	r7, r7
2373	STR	r4, [r1]
2374	STR	r5, [r1, #4]
2375	STR	r6, [r1, #8]
2376	STR	r7, [r1, #12]
2377	SUBS	r2, r2, #0x10
2378	ADD	lr, lr, #0x10
2379	ADD	r1, r1, #0x10
2380#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2381	BNE	L_AES_CBC_encrypt_loop_block_128
2382#else
2383	BNE.W	L_AES_CBC_encrypt_loop_block_128
2384#endif
2385L_AES_CBC_encrypt_end:
2386	POP	{r3, r9}
2387	STM	r9, {r4, r5, r6, r7}
2388	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
2389	/* Cycle Count = 1081 */
2390	.size	AES_CBC_encrypt,.-AES_CBC_encrypt
2391#endif /* HAVE_AES_CBC */
2392#ifdef WOLFSSL_AES_COUNTER
2393#ifndef __APPLE__
2394	.text
2395	.type	L_AES_Thumb2_te_ctr, %object
2396	.size	L_AES_Thumb2_te_ctr, 12
2397#else
2398	.section	__DATA,__data
2399#endif /* __APPLE__ */
2400	/* 8-byte aligned, 64-bit aligned */
2401#ifndef __APPLE__
2402	.align	3
2403#else
2404	.p2align	3
2405#endif /* __APPLE__ */
2406L_AES_Thumb2_te_ctr:
2407	.long	L_AES_Thumb2_te_data
2408	.text
2409	.align	4
2410	.globl	AES_CTR_encrypt
2411	.type	AES_CTR_encrypt, %function
2412AES_CTR_encrypt:
2413	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
2414	LDR	r12, [sp, #36]
2415	LDR	r8, [sp, #40]
2416	MOV	lr, r0
2417	LDR	r0, L_AES_Thumb2_te_ctr
2418	LDM	r8, {r4, r5, r6, r7}
2419	REV	r4, r4
2420	REV	r5, r5
2421	REV	r6, r6
2422	REV	r7, r7
2423	STM	r8, {r4, r5, r6, r7}
2424	PUSH	{r3, r8}
2425	CMP	r12, #0xa
2426#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2427	BEQ	L_AES_CTR_encrypt_start_block_128
2428#else
2429	BEQ.W	L_AES_CTR_encrypt_start_block_128
2430#endif
2431	CMP	r12, #0xc
2432#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2433	BEQ	L_AES_CTR_encrypt_start_block_192
2434#else
2435	BEQ.W	L_AES_CTR_encrypt_start_block_192
2436#endif
2437L_AES_CTR_encrypt_loop_block_256:
2438	PUSH	{r1, r2, lr}
2439	LDR	lr, [sp, #16]
2440	ADDS	r11, r7, #0x1
2441	ADCS	r10, r6, #0x0
2442	ADCS	r9, r5, #0x0
2443	ADC	r8, r4, #0x0
2444	STM	lr, {r8, r9, r10, r11}
2445	LDM	r3!, {r8, r9, r10, r11}
2446	/* Round: 0 - XOR in key schedule */
2447	EOR	r4, r4, r8
2448	EOR	r5, r5, r9
2449	EOR	r6, r6, r10
2450	EOR	r7, r7, r11
2451	MOV	r1, #0x6
2452#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
2453	BL	AES_encrypt_block
2454#else
2455L_AES_CTR_encrypt_block_nr_256:
2456	UBFX	r8, r5, #16, #8
2457	LSR	r11, r4, #24
2458	UBFX	lr, r6, #8, #8
2459	UBFX	r2, r7, #0, #8
2460	LDR	r8, [r0, r8, LSL #2]
2461	LDR	r11, [r0, r11, LSL #2]
2462	LDR	lr, [r0, lr, LSL #2]
2463	LDR	r2, [r0, r2, LSL #2]
2464	UBFX	r9, r6, #16, #8
2465	EOR	r8, r8, r11, ROR #24
2466	LSR	r11, r5, #24
2467	EOR	r8, r8, lr, ROR #8
2468	UBFX	lr, r7, #8, #8
2469	EOR	r8, r8, r2, ROR #16
2470	UBFX	r2, r4, #0, #8
2471	LDR	r9, [r0, r9, LSL #2]
2472	LDR	r11, [r0, r11, LSL #2]
2473	LDR	lr, [r0, lr, LSL #2]
2474	LDR	r2, [r0, r2, LSL #2]
2475	UBFX	r10, r7, #16, #8
2476	EOR	r9, r9, r11, ROR #24
2477	LSR	r11, r6, #24
2478	EOR	r9, r9, lr, ROR #8
2479	UBFX	lr, r4, #8, #8
2480	EOR	r9, r9, r2, ROR #16
2481	UBFX	r2, r5, #0, #8
2482	LDR	r10, [r0, r10, LSL #2]
2483	LDR	r11, [r0, r11, LSL #2]
2484	LDR	lr, [r0, lr, LSL #2]
2485	LDR	r2, [r0, r2, LSL #2]
2486	UBFX	r6, r6, #0, #8
2487	EOR	r10, r10, r11, ROR #24
2488	UBFX	r11, r4, #16, #8
2489	EOR	r10, r10, lr, ROR #8
2490	LSR	lr, r7, #24
2491	EOR	r10, r10, r2, ROR #16
2492	UBFX	r2, r5, #8, #8
2493	LDR	r6, [r0, r6, LSL #2]
2494	LDR	lr, [r0, lr, LSL #2]
2495	LDR	r11, [r0, r11, LSL #2]
2496	LDR	r2, [r0, r2, LSL #2]
2497	EOR	lr, lr, r6, ROR #24
2498	LDM	r3!, {r4, r5, r6, r7}
2499	EOR	r11, r11, lr, ROR #24
2500	EOR	r11, r11, r2, ROR #8
2501	/*   XOR in Key Schedule */
2502	EOR	r8, r8, r4
2503	EOR	r9, r9, r5
2504	EOR	r10, r10, r6
2505	EOR	r11, r11, r7
2506	UBFX	r4, r9, #16, #8
2507	LSR	r7, r8, #24
2508	UBFX	lr, r10, #8, #8
2509	UBFX	r2, r11, #0, #8
2510	LDR	r4, [r0, r4, LSL #2]
2511	LDR	r7, [r0, r7, LSL #2]
2512	LDR	lr, [r0, lr, LSL #2]
2513	LDR	r2, [r0, r2, LSL #2]
2514	UBFX	r5, r10, #16, #8
2515	EOR	r4, r4, r7, ROR #24
2516	LSR	r7, r9, #24
2517	EOR	r4, r4, lr, ROR #8
2518	UBFX	lr, r11, #8, #8
2519	EOR	r4, r4, r2, ROR #16
2520	UBFX	r2, r8, #0, #8
2521	LDR	r5, [r0, r5, LSL #2]
2522	LDR	r7, [r0, r7, LSL #2]
2523	LDR	lr, [r0, lr, LSL #2]
2524	LDR	r2, [r0, r2, LSL #2]
2525	UBFX	r6, r11, #16, #8
2526	EOR	r5, r5, r7, ROR #24
2527	LSR	r7, r10, #24
2528	EOR	r5, r5, lr, ROR #8
2529	UBFX	lr, r8, #8, #8
2530	EOR	r5, r5, r2, ROR #16
2531	UBFX	r2, r9, #0, #8
2532	LDR	r6, [r0, r6, LSL #2]
2533	LDR	r7, [r0, r7, LSL #2]
2534	LDR	lr, [r0, lr, LSL #2]
2535	LDR	r2, [r0, r2, LSL #2]
2536	UBFX	r10, r10, #0, #8
2537	EOR	r6, r6, r7, ROR #24
2538	UBFX	r7, r8, #16, #8
2539	EOR	r6, r6, lr, ROR #8
2540	LSR	lr, r11, #24
2541	EOR	r6, r6, r2, ROR #16
2542	UBFX	r2, r9, #8, #8
2543	LDR	r10, [r0, r10, LSL #2]
2544	LDR	lr, [r0, lr, LSL #2]
2545	LDR	r7, [r0, r7, LSL #2]
2546	LDR	r2, [r0, r2, LSL #2]
2547	EOR	lr, lr, r10, ROR #24
2548	LDM	r3!, {r8, r9, r10, r11}
2549	EOR	r7, r7, lr, ROR #24
2550	EOR	r7, r7, r2, ROR #8
2551	/*   XOR in Key Schedule */
2552	EOR	r4, r4, r8
2553	EOR	r5, r5, r9
2554	EOR	r6, r6, r10
2555	EOR	r7, r7, r11
2556	SUBS	r1, r1, #0x1
2557#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2558	BNE	L_AES_CTR_encrypt_block_nr_256
2559#else
2560	BNE.W	L_AES_CTR_encrypt_block_nr_256
2561#endif
2562	UBFX	r8, r5, #16, #8
2563	LSR	r11, r4, #24
2564	UBFX	lr, r6, #8, #8
2565	UBFX	r2, r7, #0, #8
2566	LDR	r8, [r0, r8, LSL #2]
2567	LDR	r11, [r0, r11, LSL #2]
2568	LDR	lr, [r0, lr, LSL #2]
2569	LDR	r2, [r0, r2, LSL #2]
2570	UBFX	r9, r6, #16, #8
2571	EOR	r8, r8, r11, ROR #24
2572	LSR	r11, r5, #24
2573	EOR	r8, r8, lr, ROR #8
2574	UBFX	lr, r7, #8, #8
2575	EOR	r8, r8, r2, ROR #16
2576	UBFX	r2, r4, #0, #8
2577	LDR	r9, [r0, r9, LSL #2]
2578	LDR	r11, [r0, r11, LSL #2]
2579	LDR	lr, [r0, lr, LSL #2]
2580	LDR	r2, [r0, r2, LSL #2]
2581	UBFX	r10, r7, #16, #8
2582	EOR	r9, r9, r11, ROR #24
2583	LSR	r11, r6, #24
2584	EOR	r9, r9, lr, ROR #8
2585	UBFX	lr, r4, #8, #8
2586	EOR	r9, r9, r2, ROR #16
2587	UBFX	r2, r5, #0, #8
2588	LDR	r10, [r0, r10, LSL #2]
2589	LDR	r11, [r0, r11, LSL #2]
2590	LDR	lr, [r0, lr, LSL #2]
2591	LDR	r2, [r0, r2, LSL #2]
2592	UBFX	r6, r6, #0, #8
2593	EOR	r10, r10, r11, ROR #24
2594	UBFX	r11, r4, #16, #8
2595	EOR	r10, r10, lr, ROR #8
2596	LSR	lr, r7, #24
2597	EOR	r10, r10, r2, ROR #16
2598	UBFX	r2, r5, #8, #8
2599	LDR	r6, [r0, r6, LSL #2]
2600	LDR	lr, [r0, lr, LSL #2]
2601	LDR	r11, [r0, r11, LSL #2]
2602	LDR	r2, [r0, r2, LSL #2]
2603	EOR	lr, lr, r6, ROR #24
2604	LDM	r3!, {r4, r5, r6, r7}
2605	EOR	r11, r11, lr, ROR #24
2606	EOR	r11, r11, r2, ROR #8
2607	/*   XOR in Key Schedule */
2608	EOR	r8, r8, r4
2609	EOR	r9, r9, r5
2610	EOR	r10, r10, r6
2611	EOR	r11, r11, r7
2612	UBFX	r4, r11, #0, #8
2613	UBFX	r7, r10, #8, #8
2614	UBFX	lr, r9, #16, #8
2615	LSR	r2, r8, #24
2616	LDRB	r4, [r0, r4, LSL #2]
2617	LDRB	r7, [r0, r7, LSL #2]
2618	LDRB	lr, [r0, lr, LSL #2]
2619	LDRB	r2, [r0, r2, LSL #2]
2620	UBFX	r5, r8, #0, #8
2621	EOR	r4, r4, r7, LSL #8
2622	UBFX	r7, r11, #8, #8
2623	EOR	r4, r4, lr, LSL #16
2624	UBFX	lr, r10, #16, #8
2625	EOR	r4, r4, r2, LSL #24
2626	LSR	r2, r9, #24
2627	LDRB	r5, [r0, r5, LSL #2]
2628	LDRB	r7, [r0, r7, LSL #2]
2629	LDRB	lr, [r0, lr, LSL #2]
2630	LDRB	r2, [r0, r2, LSL #2]
2631	UBFX	r6, r9, #0, #8
2632	EOR	r5, r5, r7, LSL #8
2633	UBFX	r7, r8, #8, #8
2634	EOR	r5, r5, lr, LSL #16
2635	UBFX	lr, r11, #16, #8
2636	EOR	r5, r5, r2, LSL #24
2637	LSR	r2, r10, #24
2638	LDRB	r6, [r0, r6, LSL #2]
2639	LDRB	r7, [r0, r7, LSL #2]
2640	LDRB	lr, [r0, lr, LSL #2]
2641	LDRB	r2, [r0, r2, LSL #2]
2642	LSR	r11, r11, #24
2643	EOR	r6, r6, r7, LSL #8
2644	UBFX	r7, r10, #0, #8
2645	EOR	r6, r6, lr, LSL #16
2646	UBFX	lr, r9, #8, #8
2647	EOR	r6, r6, r2, LSL #24
2648	UBFX	r2, r8, #16, #8
2649	LDRB	r11, [r0, r11, LSL #2]
2650	LDRB	r7, [r0, r7, LSL #2]
2651	LDRB	lr, [r0, lr, LSL #2]
2652	LDRB	r2, [r0, r2, LSL #2]
2653	EOR	lr, lr, r11, LSL #16
2654	LDM	r3, {r8, r9, r10, r11}
2655	EOR	r7, r7, lr, LSL #8
2656	EOR	r7, r7, r2, LSL #16
2657	/*   XOR in Key Schedule */
2658	EOR	r4, r4, r8
2659	EOR	r5, r5, r9
2660	EOR	r6, r6, r10
2661	EOR	r7, r7, r11
2662#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
2663	POP	{r1, r2, lr}
2664	LDR	r3, [sp]
2665	REV	r4, r4
2666	REV	r5, r5
2667	REV	r6, r6
2668	REV	r7, r7
2669	LDR	r8, [lr]
2670	LDR	r9, [lr, #4]
2671	LDR	r10, [lr, #8]
2672	LDR	r11, [lr, #12]
2673	EOR	r4, r4, r8
2674	EOR	r5, r5, r9
2675	EOR	r6, r6, r10
2676	EOR	r7, r7, r11
2677	LDR	r8, [sp, #4]
2678	STR	r4, [r1]
2679	STR	r5, [r1, #4]
2680	STR	r6, [r1, #8]
2681	STR	r7, [r1, #12]
2682	LDM	r8, {r4, r5, r6, r7}
2683	SUBS	r2, r2, #0x10
2684	ADD	lr, lr, #0x10
2685	ADD	r1, r1, #0x10
2686#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2687	BNE	L_AES_CTR_encrypt_loop_block_256
2688#else
2689	BNE.W	L_AES_CTR_encrypt_loop_block_256
2690#endif
2691#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2692	B	L_AES_CTR_encrypt_end
2693#else
2694	B.W	L_AES_CTR_encrypt_end
2695#endif
2696L_AES_CTR_encrypt_start_block_192:
2697L_AES_CTR_encrypt_loop_block_192:
2698	PUSH	{r1, r2, lr}
2699	LDR	lr, [sp, #16]
2700	ADDS	r11, r7, #0x1
2701	ADCS	r10, r6, #0x0
2702	ADCS	r9, r5, #0x0
2703	ADC	r8, r4, #0x0
2704	STM	lr, {r8, r9, r10, r11}
2705	LDM	r3!, {r8, r9, r10, r11}
2706	/* Round: 0 - XOR in key schedule */
2707	EOR	r4, r4, r8
2708	EOR	r5, r5, r9
2709	EOR	r6, r6, r10
2710	EOR	r7, r7, r11
2711	MOV	r1, #0x5
2712#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
2713	BL	AES_encrypt_block
2714#else
2715L_AES_CTR_encrypt_block_nr_192:
2716	UBFX	r8, r5, #16, #8
2717	LSR	r11, r4, #24
2718	UBFX	lr, r6, #8, #8
2719	UBFX	r2, r7, #0, #8
2720	LDR	r8, [r0, r8, LSL #2]
2721	LDR	r11, [r0, r11, LSL #2]
2722	LDR	lr, [r0, lr, LSL #2]
2723	LDR	r2, [r0, r2, LSL #2]
2724	UBFX	r9, r6, #16, #8
2725	EOR	r8, r8, r11, ROR #24
2726	LSR	r11, r5, #24
2727	EOR	r8, r8, lr, ROR #8
2728	UBFX	lr, r7, #8, #8
2729	EOR	r8, r8, r2, ROR #16
2730	UBFX	r2, r4, #0, #8
2731	LDR	r9, [r0, r9, LSL #2]
2732	LDR	r11, [r0, r11, LSL #2]
2733	LDR	lr, [r0, lr, LSL #2]
2734	LDR	r2, [r0, r2, LSL #2]
2735	UBFX	r10, r7, #16, #8
2736	EOR	r9, r9, r11, ROR #24
2737	LSR	r11, r6, #24
2738	EOR	r9, r9, lr, ROR #8
2739	UBFX	lr, r4, #8, #8
2740	EOR	r9, r9, r2, ROR #16
2741	UBFX	r2, r5, #0, #8
2742	LDR	r10, [r0, r10, LSL #2]
2743	LDR	r11, [r0, r11, LSL #2]
2744	LDR	lr, [r0, lr, LSL #2]
2745	LDR	r2, [r0, r2, LSL #2]
2746	UBFX	r6, r6, #0, #8
2747	EOR	r10, r10, r11, ROR #24
2748	UBFX	r11, r4, #16, #8
2749	EOR	r10, r10, lr, ROR #8
2750	LSR	lr, r7, #24
2751	EOR	r10, r10, r2, ROR #16
2752	UBFX	r2, r5, #8, #8
2753	LDR	r6, [r0, r6, LSL #2]
2754	LDR	lr, [r0, lr, LSL #2]
2755	LDR	r11, [r0, r11, LSL #2]
2756	LDR	r2, [r0, r2, LSL #2]
2757	EOR	lr, lr, r6, ROR #24
2758	LDM	r3!, {r4, r5, r6, r7}
2759	EOR	r11, r11, lr, ROR #24
2760	EOR	r11, r11, r2, ROR #8
2761	/*   XOR in Key Schedule */
2762	EOR	r8, r8, r4
2763	EOR	r9, r9, r5
2764	EOR	r10, r10, r6
2765	EOR	r11, r11, r7
2766	UBFX	r4, r9, #16, #8
2767	LSR	r7, r8, #24
2768	UBFX	lr, r10, #8, #8
2769	UBFX	r2, r11, #0, #8
2770	LDR	r4, [r0, r4, LSL #2]
2771	LDR	r7, [r0, r7, LSL #2]
2772	LDR	lr, [r0, lr, LSL #2]
2773	LDR	r2, [r0, r2, LSL #2]
2774	UBFX	r5, r10, #16, #8
2775	EOR	r4, r4, r7, ROR #24
2776	LSR	r7, r9, #24
2777	EOR	r4, r4, lr, ROR #8
2778	UBFX	lr, r11, #8, #8
2779	EOR	r4, r4, r2, ROR #16
2780	UBFX	r2, r8, #0, #8
2781	LDR	r5, [r0, r5, LSL #2]
2782	LDR	r7, [r0, r7, LSL #2]
2783	LDR	lr, [r0, lr, LSL #2]
2784	LDR	r2, [r0, r2, LSL #2]
2785	UBFX	r6, r11, #16, #8
2786	EOR	r5, r5, r7, ROR #24
2787	LSR	r7, r10, #24
2788	EOR	r5, r5, lr, ROR #8
2789	UBFX	lr, r8, #8, #8
2790	EOR	r5, r5, r2, ROR #16
2791	UBFX	r2, r9, #0, #8
2792	LDR	r6, [r0, r6, LSL #2]
2793	LDR	r7, [r0, r7, LSL #2]
2794	LDR	lr, [r0, lr, LSL #2]
2795	LDR	r2, [r0, r2, LSL #2]
2796	UBFX	r10, r10, #0, #8
2797	EOR	r6, r6, r7, ROR #24
2798	UBFX	r7, r8, #16, #8
2799	EOR	r6, r6, lr, ROR #8
2800	LSR	lr, r11, #24
2801	EOR	r6, r6, r2, ROR #16
2802	UBFX	r2, r9, #8, #8
2803	LDR	r10, [r0, r10, LSL #2]
2804	LDR	lr, [r0, lr, LSL #2]
2805	LDR	r7, [r0, r7, LSL #2]
2806	LDR	r2, [r0, r2, LSL #2]
2807	EOR	lr, lr, r10, ROR #24
2808	LDM	r3!, {r8, r9, r10, r11}
2809	EOR	r7, r7, lr, ROR #24
2810	EOR	r7, r7, r2, ROR #8
2811	/*   XOR in Key Schedule */
2812	EOR	r4, r4, r8
2813	EOR	r5, r5, r9
2814	EOR	r6, r6, r10
2815	EOR	r7, r7, r11
2816	SUBS	r1, r1, #0x1
2817#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2818	BNE	L_AES_CTR_encrypt_block_nr_192
2819#else
2820	BNE.W	L_AES_CTR_encrypt_block_nr_192
2821#endif
2822	UBFX	r8, r5, #16, #8
2823	LSR	r11, r4, #24
2824	UBFX	lr, r6, #8, #8
2825	UBFX	r2, r7, #0, #8
2826	LDR	r8, [r0, r8, LSL #2]
2827	LDR	r11, [r0, r11, LSL #2]
2828	LDR	lr, [r0, lr, LSL #2]
2829	LDR	r2, [r0, r2, LSL #2]
2830	UBFX	r9, r6, #16, #8
2831	EOR	r8, r8, r11, ROR #24
2832	LSR	r11, r5, #24
2833	EOR	r8, r8, lr, ROR #8
2834	UBFX	lr, r7, #8, #8
2835	EOR	r8, r8, r2, ROR #16
2836	UBFX	r2, r4, #0, #8
2837	LDR	r9, [r0, r9, LSL #2]
2838	LDR	r11, [r0, r11, LSL #2]
2839	LDR	lr, [r0, lr, LSL #2]
2840	LDR	r2, [r0, r2, LSL #2]
2841	UBFX	r10, r7, #16, #8
2842	EOR	r9, r9, r11, ROR #24
2843	LSR	r11, r6, #24
2844	EOR	r9, r9, lr, ROR #8
2845	UBFX	lr, r4, #8, #8
2846	EOR	r9, r9, r2, ROR #16
2847	UBFX	r2, r5, #0, #8
2848	LDR	r10, [r0, r10, LSL #2]
2849	LDR	r11, [r0, r11, LSL #2]
2850	LDR	lr, [r0, lr, LSL #2]
2851	LDR	r2, [r0, r2, LSL #2]
2852	UBFX	r6, r6, #0, #8
2853	EOR	r10, r10, r11, ROR #24
2854	UBFX	r11, r4, #16, #8
2855	EOR	r10, r10, lr, ROR #8
2856	LSR	lr, r7, #24
2857	EOR	r10, r10, r2, ROR #16
2858	UBFX	r2, r5, #8, #8
2859	LDR	r6, [r0, r6, LSL #2]
2860	LDR	lr, [r0, lr, LSL #2]
2861	LDR	r11, [r0, r11, LSL #2]
2862	LDR	r2, [r0, r2, LSL #2]
2863	EOR	lr, lr, r6, ROR #24
2864	LDM	r3!, {r4, r5, r6, r7}
2865	EOR	r11, r11, lr, ROR #24
2866	EOR	r11, r11, r2, ROR #8
2867	/*   XOR in Key Schedule */
2868	EOR	r8, r8, r4
2869	EOR	r9, r9, r5
2870	EOR	r10, r10, r6
2871	EOR	r11, r11, r7
2872	UBFX	r4, r11, #0, #8
2873	UBFX	r7, r10, #8, #8
2874	UBFX	lr, r9, #16, #8
2875	LSR	r2, r8, #24
2876	LDRB	r4, [r0, r4, LSL #2]
2877	LDRB	r7, [r0, r7, LSL #2]
2878	LDRB	lr, [r0, lr, LSL #2]
2879	LDRB	r2, [r0, r2, LSL #2]
2880	UBFX	r5, r8, #0, #8
2881	EOR	r4, r4, r7, LSL #8
2882	UBFX	r7, r11, #8, #8
2883	EOR	r4, r4, lr, LSL #16
2884	UBFX	lr, r10, #16, #8
2885	EOR	r4, r4, r2, LSL #24
2886	LSR	r2, r9, #24
2887	LDRB	r5, [r0, r5, LSL #2]
2888	LDRB	r7, [r0, r7, LSL #2]
2889	LDRB	lr, [r0, lr, LSL #2]
2890	LDRB	r2, [r0, r2, LSL #2]
2891	UBFX	r6, r9, #0, #8
2892	EOR	r5, r5, r7, LSL #8
2893	UBFX	r7, r8, #8, #8
2894	EOR	r5, r5, lr, LSL #16
2895	UBFX	lr, r11, #16, #8
2896	EOR	r5, r5, r2, LSL #24
2897	LSR	r2, r10, #24
2898	LDRB	r6, [r0, r6, LSL #2]
2899	LDRB	r7, [r0, r7, LSL #2]
2900	LDRB	lr, [r0, lr, LSL #2]
2901	LDRB	r2, [r0, r2, LSL #2]
2902	LSR	r11, r11, #24
2903	EOR	r6, r6, r7, LSL #8
2904	UBFX	r7, r10, #0, #8
2905	EOR	r6, r6, lr, LSL #16
2906	UBFX	lr, r9, #8, #8
2907	EOR	r6, r6, r2, LSL #24
2908	UBFX	r2, r8, #16, #8
2909	LDRB	r11, [r0, r11, LSL #2]
2910	LDRB	r7, [r0, r7, LSL #2]
2911	LDRB	lr, [r0, lr, LSL #2]
2912	LDRB	r2, [r0, r2, LSL #2]
2913	EOR	lr, lr, r11, LSL #16
2914	LDM	r3, {r8, r9, r10, r11}
2915	EOR	r7, r7, lr, LSL #8
2916	EOR	r7, r7, r2, LSL #16
2917	/*   XOR in Key Schedule */
2918	EOR	r4, r4, r8
2919	EOR	r5, r5, r9
2920	EOR	r6, r6, r10
2921	EOR	r7, r7, r11
2922#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
2923	POP	{r1, r2, lr}
2924	LDR	r3, [sp]
2925	REV	r4, r4
2926	REV	r5, r5
2927	REV	r6, r6
2928	REV	r7, r7
2929	LDR	r8, [lr]
2930	LDR	r9, [lr, #4]
2931	LDR	r10, [lr, #8]
2932	LDR	r11, [lr, #12]
2933	EOR	r4, r4, r8
2934	EOR	r5, r5, r9
2935	EOR	r6, r6, r10
2936	EOR	r7, r7, r11
2937	LDR	r8, [sp, #4]
2938	STR	r4, [r1]
2939	STR	r5, [r1, #4]
2940	STR	r6, [r1, #8]
2941	STR	r7, [r1, #12]
2942	LDM	r8, {r4, r5, r6, r7}
2943	SUBS	r2, r2, #0x10
2944	ADD	lr, lr, #0x10
2945	ADD	r1, r1, #0x10
2946#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2947	BNE	L_AES_CTR_encrypt_loop_block_192
2948#else
2949	BNE.W	L_AES_CTR_encrypt_loop_block_192
2950#endif
2951#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
2952	B	L_AES_CTR_encrypt_end
2953#else
2954	B.W	L_AES_CTR_encrypt_end
2955#endif
2956L_AES_CTR_encrypt_start_block_128:
2957L_AES_CTR_encrypt_loop_block_128:
2958	PUSH	{r1, r2, lr}
2959	LDR	lr, [sp, #16]
2960	ADDS	r11, r7, #0x1
2961	ADCS	r10, r6, #0x0
2962	ADCS	r9, r5, #0x0
2963	ADC	r8, r4, #0x0
2964	STM	lr, {r8, r9, r10, r11}
2965	LDM	r3!, {r8, r9, r10, r11}
2966	/* Round: 0 - XOR in key schedule */
2967	EOR	r4, r4, r8
2968	EOR	r5, r5, r9
2969	EOR	r6, r6, r10
2970	EOR	r7, r7, r11
2971	MOV	r1, #0x4
2972#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
2973	BL	AES_encrypt_block
2974#else
2975L_AES_CTR_encrypt_block_nr_128:
2976	UBFX	r8, r5, #16, #8
2977	LSR	r11, r4, #24
2978	UBFX	lr, r6, #8, #8
2979	UBFX	r2, r7, #0, #8
2980	LDR	r8, [r0, r8, LSL #2]
2981	LDR	r11, [r0, r11, LSL #2]
2982	LDR	lr, [r0, lr, LSL #2]
2983	LDR	r2, [r0, r2, LSL #2]
2984	UBFX	r9, r6, #16, #8
2985	EOR	r8, r8, r11, ROR #24
2986	LSR	r11, r5, #24
2987	EOR	r8, r8, lr, ROR #8
2988	UBFX	lr, r7, #8, #8
2989	EOR	r8, r8, r2, ROR #16
2990	UBFX	r2, r4, #0, #8
2991	LDR	r9, [r0, r9, LSL #2]
2992	LDR	r11, [r0, r11, LSL #2]
2993	LDR	lr, [r0, lr, LSL #2]
2994	LDR	r2, [r0, r2, LSL #2]
2995	UBFX	r10, r7, #16, #8
2996	EOR	r9, r9, r11, ROR #24
2997	LSR	r11, r6, #24
2998	EOR	r9, r9, lr, ROR #8
2999	UBFX	lr, r4, #8, #8
3000	EOR	r9, r9, r2, ROR #16
3001	UBFX	r2, r5, #0, #8
3002	LDR	r10, [r0, r10, LSL #2]
3003	LDR	r11, [r0, r11, LSL #2]
3004	LDR	lr, [r0, lr, LSL #2]
3005	LDR	r2, [r0, r2, LSL #2]
3006	UBFX	r6, r6, #0, #8
3007	EOR	r10, r10, r11, ROR #24
3008	UBFX	r11, r4, #16, #8
3009	EOR	r10, r10, lr, ROR #8
3010	LSR	lr, r7, #24
3011	EOR	r10, r10, r2, ROR #16
3012	UBFX	r2, r5, #8, #8
3013	LDR	r6, [r0, r6, LSL #2]
3014	LDR	lr, [r0, lr, LSL #2]
3015	LDR	r11, [r0, r11, LSL #2]
3016	LDR	r2, [r0, r2, LSL #2]
3017	EOR	lr, lr, r6, ROR #24
3018	LDM	r3!, {r4, r5, r6, r7}
3019	EOR	r11, r11, lr, ROR #24
3020	EOR	r11, r11, r2, ROR #8
3021	/*   XOR in Key Schedule */
3022	EOR	r8, r8, r4
3023	EOR	r9, r9, r5
3024	EOR	r10, r10, r6
3025	EOR	r11, r11, r7
3026	UBFX	r4, r9, #16, #8
3027	LSR	r7, r8, #24
3028	UBFX	lr, r10, #8, #8
3029	UBFX	r2, r11, #0, #8
3030	LDR	r4, [r0, r4, LSL #2]
3031	LDR	r7, [r0, r7, LSL #2]
3032	LDR	lr, [r0, lr, LSL #2]
3033	LDR	r2, [r0, r2, LSL #2]
3034	UBFX	r5, r10, #16, #8
3035	EOR	r4, r4, r7, ROR #24
3036	LSR	r7, r9, #24
3037	EOR	r4, r4, lr, ROR #8
3038	UBFX	lr, r11, #8, #8
3039	EOR	r4, r4, r2, ROR #16
3040	UBFX	r2, r8, #0, #8
3041	LDR	r5, [r0, r5, LSL #2]
3042	LDR	r7, [r0, r7, LSL #2]
3043	LDR	lr, [r0, lr, LSL #2]
3044	LDR	r2, [r0, r2, LSL #2]
3045	UBFX	r6, r11, #16, #8
3046	EOR	r5, r5, r7, ROR #24
3047	LSR	r7, r10, #24
3048	EOR	r5, r5, lr, ROR #8
3049	UBFX	lr, r8, #8, #8
3050	EOR	r5, r5, r2, ROR #16
3051	UBFX	r2, r9, #0, #8
3052	LDR	r6, [r0, r6, LSL #2]
3053	LDR	r7, [r0, r7, LSL #2]
3054	LDR	lr, [r0, lr, LSL #2]
3055	LDR	r2, [r0, r2, LSL #2]
3056	UBFX	r10, r10, #0, #8
3057	EOR	r6, r6, r7, ROR #24
3058	UBFX	r7, r8, #16, #8
3059	EOR	r6, r6, lr, ROR #8
3060	LSR	lr, r11, #24
3061	EOR	r6, r6, r2, ROR #16
3062	UBFX	r2, r9, #8, #8
3063	LDR	r10, [r0, r10, LSL #2]
3064	LDR	lr, [r0, lr, LSL #2]
3065	LDR	r7, [r0, r7, LSL #2]
3066	LDR	r2, [r0, r2, LSL #2]
3067	EOR	lr, lr, r10, ROR #24
3068	LDM	r3!, {r8, r9, r10, r11}
3069	EOR	r7, r7, lr, ROR #24
3070	EOR	r7, r7, r2, ROR #8
3071	/*   XOR in Key Schedule */
3072	EOR	r4, r4, r8
3073	EOR	r5, r5, r9
3074	EOR	r6, r6, r10
3075	EOR	r7, r7, r11
3076	SUBS	r1, r1, #0x1
3077#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3078	BNE	L_AES_CTR_encrypt_block_nr_128
3079#else
3080	BNE.W	L_AES_CTR_encrypt_block_nr_128
3081#endif
3082	UBFX	r8, r5, #16, #8
3083	LSR	r11, r4, #24
3084	UBFX	lr, r6, #8, #8
3085	UBFX	r2, r7, #0, #8
3086	LDR	r8, [r0, r8, LSL #2]
3087	LDR	r11, [r0, r11, LSL #2]
3088	LDR	lr, [r0, lr, LSL #2]
3089	LDR	r2, [r0, r2, LSL #2]
3090	UBFX	r9, r6, #16, #8
3091	EOR	r8, r8, r11, ROR #24
3092	LSR	r11, r5, #24
3093	EOR	r8, r8, lr, ROR #8
3094	UBFX	lr, r7, #8, #8
3095	EOR	r8, r8, r2, ROR #16
3096	UBFX	r2, r4, #0, #8
3097	LDR	r9, [r0, r9, LSL #2]
3098	LDR	r11, [r0, r11, LSL #2]
3099	LDR	lr, [r0, lr, LSL #2]
3100	LDR	r2, [r0, r2, LSL #2]
3101	UBFX	r10, r7, #16, #8
3102	EOR	r9, r9, r11, ROR #24
3103	LSR	r11, r6, #24
3104	EOR	r9, r9, lr, ROR #8
3105	UBFX	lr, r4, #8, #8
3106	EOR	r9, r9, r2, ROR #16
3107	UBFX	r2, r5, #0, #8
3108	LDR	r10, [r0, r10, LSL #2]
3109	LDR	r11, [r0, r11, LSL #2]
3110	LDR	lr, [r0, lr, LSL #2]
3111	LDR	r2, [r0, r2, LSL #2]
3112	UBFX	r6, r6, #0, #8
3113	EOR	r10, r10, r11, ROR #24
3114	UBFX	r11, r4, #16, #8
3115	EOR	r10, r10, lr, ROR #8
3116	LSR	lr, r7, #24
3117	EOR	r10, r10, r2, ROR #16
3118	UBFX	r2, r5, #8, #8
3119	LDR	r6, [r0, r6, LSL #2]
3120	LDR	lr, [r0, lr, LSL #2]
3121	LDR	r11, [r0, r11, LSL #2]
3122	LDR	r2, [r0, r2, LSL #2]
3123	EOR	lr, lr, r6, ROR #24
3124	LDM	r3!, {r4, r5, r6, r7}
3125	EOR	r11, r11, lr, ROR #24
3126	EOR	r11, r11, r2, ROR #8
3127	/*   XOR in Key Schedule */
3128	EOR	r8, r8, r4
3129	EOR	r9, r9, r5
3130	EOR	r10, r10, r6
3131	EOR	r11, r11, r7
3132	UBFX	r4, r11, #0, #8
3133	UBFX	r7, r10, #8, #8
3134	UBFX	lr, r9, #16, #8
3135	LSR	r2, r8, #24
3136	LDRB	r4, [r0, r4, LSL #2]
3137	LDRB	r7, [r0, r7, LSL #2]
3138	LDRB	lr, [r0, lr, LSL #2]
3139	LDRB	r2, [r0, r2, LSL #2]
3140	UBFX	r5, r8, #0, #8
3141	EOR	r4, r4, r7, LSL #8
3142	UBFX	r7, r11, #8, #8
3143	EOR	r4, r4, lr, LSL #16
3144	UBFX	lr, r10, #16, #8
3145	EOR	r4, r4, r2, LSL #24
3146	LSR	r2, r9, #24
3147	LDRB	r5, [r0, r5, LSL #2]
3148	LDRB	r7, [r0, r7, LSL #2]
3149	LDRB	lr, [r0, lr, LSL #2]
3150	LDRB	r2, [r0, r2, LSL #2]
3151	UBFX	r6, r9, #0, #8
3152	EOR	r5, r5, r7, LSL #8
3153	UBFX	r7, r8, #8, #8
3154	EOR	r5, r5, lr, LSL #16
3155	UBFX	lr, r11, #16, #8
3156	EOR	r5, r5, r2, LSL #24
3157	LSR	r2, r10, #24
3158	LDRB	r6, [r0, r6, LSL #2]
3159	LDRB	r7, [r0, r7, LSL #2]
3160	LDRB	lr, [r0, lr, LSL #2]
3161	LDRB	r2, [r0, r2, LSL #2]
3162	LSR	r11, r11, #24
3163	EOR	r6, r6, r7, LSL #8
3164	UBFX	r7, r10, #0, #8
3165	EOR	r6, r6, lr, LSL #16
3166	UBFX	lr, r9, #8, #8
3167	EOR	r6, r6, r2, LSL #24
3168	UBFX	r2, r8, #16, #8
3169	LDRB	r11, [r0, r11, LSL #2]
3170	LDRB	r7, [r0, r7, LSL #2]
3171	LDRB	lr, [r0, lr, LSL #2]
3172	LDRB	r2, [r0, r2, LSL #2]
3173	EOR	lr, lr, r11, LSL #16
3174	LDM	r3, {r8, r9, r10, r11}
3175	EOR	r7, r7, lr, LSL #8
3176	EOR	r7, r7, r2, LSL #16
3177	/*   XOR in Key Schedule */
3178	EOR	r4, r4, r8
3179	EOR	r5, r5, r9
3180	EOR	r6, r6, r10
3181	EOR	r7, r7, r11
3182#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
3183	POP	{r1, r2, lr}
3184	LDR	r3, [sp]
3185	REV	r4, r4
3186	REV	r5, r5
3187	REV	r6, r6
3188	REV	r7, r7
3189	LDR	r8, [lr]
3190	LDR	r9, [lr, #4]
3191	LDR	r10, [lr, #8]
3192	LDR	r11, [lr, #12]
3193	EOR	r4, r4, r8
3194	EOR	r5, r5, r9
3195	EOR	r6, r6, r10
3196	EOR	r7, r7, r11
3197	LDR	r8, [sp, #4]
3198	STR	r4, [r1]
3199	STR	r5, [r1, #4]
3200	STR	r6, [r1, #8]
3201	STR	r7, [r1, #12]
3202	LDM	r8, {r4, r5, r6, r7}
3203	SUBS	r2, r2, #0x10
3204	ADD	lr, lr, #0x10
3205	ADD	r1, r1, #0x10
3206#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3207	BNE	L_AES_CTR_encrypt_loop_block_128
3208#else
3209	BNE.W	L_AES_CTR_encrypt_loop_block_128
3210#endif
3211L_AES_CTR_encrypt_end:
3212	POP	{r3, r8}
3213	REV	r4, r4
3214	REV	r5, r5
3215	REV	r6, r6
3216	REV	r7, r7
3217	STM	r8, {r4, r5, r6, r7}
3218	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
3219	/* Cycle Count = 1136 */
3220	.size	AES_CTR_encrypt,.-AES_CTR_encrypt
3221#endif /* WOLFSSL_AES_COUNTER */
3222#ifdef HAVE_AES_DECRYPT
3223#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || \
3224    defined(HAVE_AES_CBC) || defined(HAVE_AES_ECB)
3225#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
3226	.text
3227	.align	4
3228	.globl	AES_decrypt_block
3229	.type	AES_decrypt_block, %function
3230AES_decrypt_block:
3231	PUSH	{lr}
3232L_AES_decrypt_block_nr:
3233	UBFX	r8, r7, #16, #8
3234	LSR	r11, r4, #24
3235	UBFX	r12, r6, #8, #8
3236	UBFX	lr, r5, #0, #8
3237	LDR	r8, [r0, r8, LSL #2]
3238	LDR	r11, [r0, r11, LSL #2]
3239	LDR	r12, [r0, r12, LSL #2]
3240	LDR	lr, [r0, lr, LSL #2]
3241	UBFX	r9, r4, #16, #8
3242	EOR	r8, r8, r11, ROR #24
3243	LSR	r11, r5, #24
3244	EOR	r8, r8, r12, ROR #8
3245	UBFX	r12, r7, #8, #8
3246	EOR	r8, r8, lr, ROR #16
3247	UBFX	lr, r6, #0, #8
3248	LDR	r9, [r0, r9, LSL #2]
3249	LDR	r11, [r0, r11, LSL #2]
3250	LDR	r12, [r0, r12, LSL #2]
3251	LDR	lr, [r0, lr, LSL #2]
3252	UBFX	r10, r5, #16, #8
3253	EOR	r9, r9, r11, ROR #24
3254	LSR	r11, r6, #24
3255	EOR	r9, r9, r12, ROR #8
3256	UBFX	r12, r4, #8, #8
3257	EOR	r9, r9, lr, ROR #16
3258	UBFX	lr, r7, #0, #8
3259	LDR	r10, [r0, r10, LSL #2]
3260	LDR	r11, [r0, r11, LSL #2]
3261	LDR	r12, [r0, r12, LSL #2]
3262	LDR	lr, [r0, lr, LSL #2]
3263	UBFX	r4, r4, #0, #8
3264	EOR	r10, r10, r11, ROR #24
3265	UBFX	r11, r6, #16, #8
3266	EOR	r10, r10, r12, ROR #8
3267	LSR	r12, r7, #24
3268	EOR	r10, r10, lr, ROR #16
3269	UBFX	lr, r5, #8, #8
3270	LDR	r4, [r0, r4, LSL #2]
3271	LDR	r12, [r0, r12, LSL #2]
3272	LDR	r11, [r0, r11, LSL #2]
3273	LDR	lr, [r0, lr, LSL #2]
3274	EOR	r12, r12, r4, ROR #24
3275	LDM	r3!, {r4, r5, r6, r7}
3276	EOR	r11, r11, lr, ROR #8
3277	EOR	r11, r11, r12, ROR #24
3278	/*   XOR in Key Schedule */
3279	EOR	r8, r8, r4
3280	EOR	r9, r9, r5
3281	EOR	r10, r10, r6
3282	EOR	r11, r11, r7
3283	UBFX	r4, r11, #16, #8
3284	LSR	r7, r8, #24
3285	UBFX	r12, r10, #8, #8
3286	UBFX	lr, r9, #0, #8
3287	LDR	r4, [r0, r4, LSL #2]
3288	LDR	r7, [r0, r7, LSL #2]
3289	LDR	r12, [r0, r12, LSL #2]
3290	LDR	lr, [r0, lr, LSL #2]
3291	UBFX	r5, r8, #16, #8
3292	EOR	r4, r4, r7, ROR #24
3293	LSR	r7, r9, #24
3294	EOR	r4, r4, r12, ROR #8
3295	UBFX	r12, r11, #8, #8
3296	EOR	r4, r4, lr, ROR #16
3297	UBFX	lr, r10, #0, #8
3298	LDR	r5, [r0, r5, LSL #2]
3299	LDR	r7, [r0, r7, LSL #2]
3300	LDR	r12, [r0, r12, LSL #2]
3301	LDR	lr, [r0, lr, LSL #2]
3302	UBFX	r6, r9, #16, #8
3303	EOR	r5, r5, r7, ROR #24
3304	LSR	r7, r10, #24
3305	EOR	r5, r5, r12, ROR #8
3306	UBFX	r12, r8, #8, #8
3307	EOR	r5, r5, lr, ROR #16
3308	UBFX	lr, r11, #0, #8
3309	LDR	r6, [r0, r6, LSL #2]
3310	LDR	r7, [r0, r7, LSL #2]
3311	LDR	r12, [r0, r12, LSL #2]
3312	LDR	lr, [r0, lr, LSL #2]
3313	UBFX	r8, r8, #0, #8
3314	EOR	r6, r6, r7, ROR #24
3315	UBFX	r7, r10, #16, #8
3316	EOR	r6, r6, r12, ROR #8
3317	LSR	r12, r11, #24
3318	EOR	r6, r6, lr, ROR #16
3319	UBFX	lr, r9, #8, #8
3320	LDR	r8, [r0, r8, LSL #2]
3321	LDR	r12, [r0, r12, LSL #2]
3322	LDR	r7, [r0, r7, LSL #2]
3323	LDR	lr, [r0, lr, LSL #2]
3324	EOR	r12, r12, r8, ROR #24
3325	LDM	r3!, {r8, r9, r10, r11}
3326	EOR	r7, r7, lr, ROR #8
3327	EOR	r7, r7, r12, ROR #24
3328	/*   XOR in Key Schedule */
3329	EOR	r4, r4, r8
3330	EOR	r5, r5, r9
3331	EOR	r6, r6, r10
3332	EOR	r7, r7, r11
3333	SUBS	r1, r1, #0x1
3334#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3335	BNE	L_AES_decrypt_block_nr
3336#else
3337	BNE.W	L_AES_decrypt_block_nr
3338#endif
3339	UBFX	r8, r7, #16, #8
3340	LSR	r11, r4, #24
3341	UBFX	r12, r6, #8, #8
3342	UBFX	lr, r5, #0, #8
3343	LDR	r8, [r0, r8, LSL #2]
3344	LDR	r11, [r0, r11, LSL #2]
3345	LDR	r12, [r0, r12, LSL #2]
3346	LDR	lr, [r0, lr, LSL #2]
3347	UBFX	r9, r4, #16, #8
3348	EOR	r8, r8, r11, ROR #24
3349	LSR	r11, r5, #24
3350	EOR	r8, r8, r12, ROR #8
3351	UBFX	r12, r7, #8, #8
3352	EOR	r8, r8, lr, ROR #16
3353	UBFX	lr, r6, #0, #8
3354	LDR	r9, [r0, r9, LSL #2]
3355	LDR	r11, [r0, r11, LSL #2]
3356	LDR	r12, [r0, r12, LSL #2]
3357	LDR	lr, [r0, lr, LSL #2]
3358	UBFX	r10, r5, #16, #8
3359	EOR	r9, r9, r11, ROR #24
3360	LSR	r11, r6, #24
3361	EOR	r9, r9, r12, ROR #8
3362	UBFX	r12, r4, #8, #8
3363	EOR	r9, r9, lr, ROR #16
3364	UBFX	lr, r7, #0, #8
3365	LDR	r10, [r0, r10, LSL #2]
3366	LDR	r11, [r0, r11, LSL #2]
3367	LDR	r12, [r0, r12, LSL #2]
3368	LDR	lr, [r0, lr, LSL #2]
3369	UBFX	r4, r4, #0, #8
3370	EOR	r10, r10, r11, ROR #24
3371	UBFX	r11, r6, #16, #8
3372	EOR	r10, r10, r12, ROR #8
3373	LSR	r12, r7, #24
3374	EOR	r10, r10, lr, ROR #16
3375	UBFX	lr, r5, #8, #8
3376	LDR	r4, [r0, r4, LSL #2]
3377	LDR	r12, [r0, r12, LSL #2]
3378	LDR	r11, [r0, r11, LSL #2]
3379	LDR	lr, [r0, lr, LSL #2]
3380	EOR	r12, r12, r4, ROR #24
3381	LDM	r3!, {r4, r5, r6, r7}
3382	EOR	r11, r11, lr, ROR #8
3383	EOR	r11, r11, r12, ROR #24
3384	/*   XOR in Key Schedule */
3385	EOR	r8, r8, r4
3386	EOR	r9, r9, r5
3387	EOR	r10, r10, r6
3388	EOR	r11, r11, r7
3389	UBFX	r4, r9, #0, #8
3390	UBFX	r7, r10, #8, #8
3391	UBFX	r12, r11, #16, #8
3392	LSR	lr, r8, #24
3393	LDRB	r4, [r2, r4]
3394	LDRB	r7, [r2, r7]
3395	LDRB	r12, [r2, r12]
3396	LDRB	lr, [r2, lr]
3397	UBFX	r5, r10, #0, #8
3398	EOR	r4, r4, r7, LSL #8
3399	UBFX	r7, r11, #8, #8
3400	EOR	r4, r4, r12, LSL #16
3401	UBFX	r12, r8, #16, #8
3402	EOR	r4, r4, lr, LSL #24
3403	LSR	lr, r9, #24
3404	LDRB	r7, [r2, r7]
3405	LDRB	lr, [r2, lr]
3406	LDRB	r5, [r2, r5]
3407	LDRB	r12, [r2, r12]
3408	UBFX	r6, r11, #0, #8
3409	EOR	r5, r5, r7, LSL #8
3410	UBFX	r7, r8, #8, #8
3411	EOR	r5, r5, r12, LSL #16
3412	UBFX	r12, r9, #16, #8
3413	EOR	r5, r5, lr, LSL #24
3414	LSR	lr, r10, #24
3415	LDRB	r7, [r2, r7]
3416	LDRB	lr, [r2, lr]
3417	LDRB	r6, [r2, r6]
3418	LDRB	r12, [r2, r12]
3419	LSR	r11, r11, #24
3420	EOR	r6, r6, r7, LSL #8
3421	UBFX	r7, r8, #0, #8
3422	EOR	r6, r6, r12, LSL #16
3423	UBFX	r12, r9, #8, #8
3424	EOR	r6, r6, lr, LSL #24
3425	UBFX	lr, r10, #16, #8
3426	LDRB	r11, [r2, r11]
3427	LDRB	r12, [r2, r12]
3428	LDRB	r7, [r2, r7]
3429	LDRB	lr, [r2, lr]
3430	EOR	r12, r12, r11, LSL #16
3431	LDM	r3, {r8, r9, r10, r11}
3432	EOR	r7, r7, r12, LSL #8
3433	EOR	r7, r7, lr, LSL #16
3434	/*   XOR in Key Schedule */
3435	EOR	r4, r4, r8
3436	EOR	r5, r5, r9
3437	EOR	r6, r6, r10
3438	EOR	r7, r7, r11
3439	POP	{pc}
3440	/* Cycle Count = 285 */
3441	.size	AES_decrypt_block,.-AES_decrypt_block
3442#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
3443#ifndef __APPLE__
3444	.text
3445	.type	L_AES_Thumb2_td_ecb, %object
3446	.size	L_AES_Thumb2_td_ecb, 12
3447#else
3448	.section	__DATA,__data
3449#endif /* __APPLE__ */
3450	/* 8-byte aligned, 64-bit aligned */
3451#ifndef __APPLE__
3452	.align	3
3453#else
3454	.p2align	3
3455#endif /* __APPLE__ */
3456L_AES_Thumb2_td_ecb:
3457	.long	L_AES_Thumb2_td_data
3458#ifndef __APPLE__
3459	.text
3460	.type	L_AES_Thumb2_td4, %object
3461	.size	L_AES_Thumb2_td4, 256
3462#else
3463	.section	__DATA,__data
3464#endif /* __APPLE__ */
3465	/* 4-byte aligned, 32-bit aligned */
3466#ifndef __APPLE__
3467	.align	2
3468#else
3469	.p2align	2
3470#endif /* __APPLE__ */
3471L_AES_Thumb2_td4:
3472	.byte	0x52,0x09,0x6a,0xd5,0x30,0x36,0xa5,0x38
3473	.byte	0xbf,0x40,0xa3,0x9e,0x81,0xf3,0xd7,0xfb
3474	.byte	0x7c,0xe3,0x39,0x82,0x9b,0x2f,0xff,0x87
3475	.byte	0x34,0x8e,0x43,0x44,0xc4,0xde,0xe9,0xcb
3476	.byte	0x54,0x7b,0x94,0x32,0xa6,0xc2,0x23,0x3d
3477	.byte	0xee,0x4c,0x95,0x0b,0x42,0xfa,0xc3,0x4e
3478	.byte	0x08,0x2e,0xa1,0x66,0x28,0xd9,0x24,0xb2
3479	.byte	0x76,0x5b,0xa2,0x49,0x6d,0x8b,0xd1,0x25
3480	.byte	0x72,0xf8,0xf6,0x64,0x86,0x68,0x98,0x16
3481	.byte	0xd4,0xa4,0x5c,0xcc,0x5d,0x65,0xb6,0x92
3482	.byte	0x6c,0x70,0x48,0x50,0xfd,0xed,0xb9,0xda
3483	.byte	0x5e,0x15,0x46,0x57,0xa7,0x8d,0x9d,0x84
3484	.byte	0x90,0xd8,0xab,0x00,0x8c,0xbc,0xd3,0x0a
3485	.byte	0xf7,0xe4,0x58,0x05,0xb8,0xb3,0x45,0x06
3486	.byte	0xd0,0x2c,0x1e,0x8f,0xca,0x3f,0x0f,0x02
3487	.byte	0xc1,0xaf,0xbd,0x03,0x01,0x13,0x8a,0x6b
3488	.byte	0x3a,0x91,0x11,0x41,0x4f,0x67,0xdc,0xea
3489	.byte	0x97,0xf2,0xcf,0xce,0xf0,0xb4,0xe6,0x73
3490	.byte	0x96,0xac,0x74,0x22,0xe7,0xad,0x35,0x85
3491	.byte	0xe2,0xf9,0x37,0xe8,0x1c,0x75,0xdf,0x6e
3492	.byte	0x47,0xf1,0x1a,0x71,0x1d,0x29,0xc5,0x89
3493	.byte	0x6f,0xb7,0x62,0x0e,0xaa,0x18,0xbe,0x1b
3494	.byte	0xfc,0x56,0x3e,0x4b,0xc6,0xd2,0x79,0x20
3495	.byte	0x9a,0xdb,0xc0,0xfe,0x78,0xcd,0x5a,0xf4
3496	.byte	0x1f,0xdd,0xa8,0x33,0x88,0x07,0xc7,0x31
3497	.byte	0xb1,0x12,0x10,0x59,0x27,0x80,0xec,0x5f
3498	.byte	0x60,0x51,0x7f,0xa9,0x19,0xb5,0x4a,0x0d
3499	.byte	0x2d,0xe5,0x7a,0x9f,0x93,0xc9,0x9c,0xef
3500	.byte	0xa0,0xe0,0x3b,0x4d,0xae,0x2a,0xf5,0xb0
3501	.byte	0xc8,0xeb,0xbb,0x3c,0x83,0x53,0x99,0x61
3502	.byte	0x17,0x2b,0x04,0x7e,0xba,0x77,0xd6,0x26
3503	.byte	0xe1,0x69,0x14,0x63,0x55,0x21,0x0c,0x7d
3504#if defined(WOLFSSL_AES_DIRECT) || defined(WOLFSSL_AES_COUNTER) || defined(HAVE_AES_ECB)
3505	.text
3506	.align	4
3507	.globl	AES_ECB_decrypt
3508	.type	AES_ECB_decrypt, %function
3509AES_ECB_decrypt:
3510	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
3511	LDR	r8, [sp, #36]
3512	MOV	lr, r0
3513	LDR	r0, L_AES_Thumb2_td_ecb
3514	MOV	r12, r2
3515	ADR	r2, L_AES_Thumb2_td4
3516	CMP	r8, #0xa
3517#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3518	BEQ	L_AES_ECB_decrypt_start_block_128
3519#else
3520	BEQ.W	L_AES_ECB_decrypt_start_block_128
3521#endif
3522	CMP	r8, #0xc
3523#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3524	BEQ	L_AES_ECB_decrypt_start_block_192
3525#else
3526	BEQ.W	L_AES_ECB_decrypt_start_block_192
3527#endif
3528L_AES_ECB_decrypt_loop_block_256:
3529	LDR	r4, [lr]
3530	LDR	r5, [lr, #4]
3531	LDR	r6, [lr, #8]
3532	LDR	r7, [lr, #12]
3533	REV	r4, r4
3534	REV	r5, r5
3535	REV	r6, r6
3536	REV	r7, r7
3537	PUSH	{r1, r3, r12, lr}
3538	LDM	r3!, {r8, r9, r10, r11}
3539	/* Round: 0 - XOR in key schedule */
3540	EOR	r4, r4, r8
3541	EOR	r5, r5, r9
3542	EOR	r6, r6, r10
3543	EOR	r7, r7, r11
3544	MOV	r1, #0x6
3545#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
3546	BL	AES_decrypt_block
3547#else
3548L_AES_ECB_decrypt_block_nr_256:
3549	UBFX	r8, r7, #16, #8
3550	LSR	r11, r4, #24
3551	UBFX	r12, r6, #8, #8
3552	UBFX	lr, r5, #0, #8
3553	LDR	r8, [r0, r8, LSL #2]
3554	LDR	r11, [r0, r11, LSL #2]
3555	LDR	r12, [r0, r12, LSL #2]
3556	LDR	lr, [r0, lr, LSL #2]
3557	UBFX	r9, r4, #16, #8
3558	EOR	r8, r8, r11, ROR #24
3559	LSR	r11, r5, #24
3560	EOR	r8, r8, r12, ROR #8
3561	UBFX	r12, r7, #8, #8
3562	EOR	r8, r8, lr, ROR #16
3563	UBFX	lr, r6, #0, #8
3564	LDR	r9, [r0, r9, LSL #2]
3565	LDR	r11, [r0, r11, LSL #2]
3566	LDR	r12, [r0, r12, LSL #2]
3567	LDR	lr, [r0, lr, LSL #2]
3568	UBFX	r10, r5, #16, #8
3569	EOR	r9, r9, r11, ROR #24
3570	LSR	r11, r6, #24
3571	EOR	r9, r9, r12, ROR #8
3572	UBFX	r12, r4, #8, #8
3573	EOR	r9, r9, lr, ROR #16
3574	UBFX	lr, r7, #0, #8
3575	LDR	r10, [r0, r10, LSL #2]
3576	LDR	r11, [r0, r11, LSL #2]
3577	LDR	r12, [r0, r12, LSL #2]
3578	LDR	lr, [r0, lr, LSL #2]
3579	UBFX	r4, r4, #0, #8
3580	EOR	r10, r10, r11, ROR #24
3581	UBFX	r11, r6, #16, #8
3582	EOR	r10, r10, r12, ROR #8
3583	LSR	r12, r7, #24
3584	EOR	r10, r10, lr, ROR #16
3585	UBFX	lr, r5, #8, #8
3586	LDR	r4, [r0, r4, LSL #2]
3587	LDR	r12, [r0, r12, LSL #2]
3588	LDR	r11, [r0, r11, LSL #2]
3589	LDR	lr, [r0, lr, LSL #2]
3590	EOR	r12, r12, r4, ROR #24
3591	LDM	r3!, {r4, r5, r6, r7}
3592	EOR	r11, r11, lr, ROR #8
3593	EOR	r11, r11, r12, ROR #24
3594	/*   XOR in Key Schedule */
3595	EOR	r8, r8, r4
3596	EOR	r9, r9, r5
3597	EOR	r10, r10, r6
3598	EOR	r11, r11, r7
3599	UBFX	r4, r11, #16, #8
3600	LSR	r7, r8, #24
3601	UBFX	r12, r10, #8, #8
3602	UBFX	lr, r9, #0, #8
3603	LDR	r4, [r0, r4, LSL #2]
3604	LDR	r7, [r0, r7, LSL #2]
3605	LDR	r12, [r0, r12, LSL #2]
3606	LDR	lr, [r0, lr, LSL #2]
3607	UBFX	r5, r8, #16, #8
3608	EOR	r4, r4, r7, ROR #24
3609	LSR	r7, r9, #24
3610	EOR	r4, r4, r12, ROR #8
3611	UBFX	r12, r11, #8, #8
3612	EOR	r4, r4, lr, ROR #16
3613	UBFX	lr, r10, #0, #8
3614	LDR	r5, [r0, r5, LSL #2]
3615	LDR	r7, [r0, r7, LSL #2]
3616	LDR	r12, [r0, r12, LSL #2]
3617	LDR	lr, [r0, lr, LSL #2]
3618	UBFX	r6, r9, #16, #8
3619	EOR	r5, r5, r7, ROR #24
3620	LSR	r7, r10, #24
3621	EOR	r5, r5, r12, ROR #8
3622	UBFX	r12, r8, #8, #8
3623	EOR	r5, r5, lr, ROR #16
3624	UBFX	lr, r11, #0, #8
3625	LDR	r6, [r0, r6, LSL #2]
3626	LDR	r7, [r0, r7, LSL #2]
3627	LDR	r12, [r0, r12, LSL #2]
3628	LDR	lr, [r0, lr, LSL #2]
3629	UBFX	r8, r8, #0, #8
3630	EOR	r6, r6, r7, ROR #24
3631	UBFX	r7, r10, #16, #8
3632	EOR	r6, r6, r12, ROR #8
3633	LSR	r12, r11, #24
3634	EOR	r6, r6, lr, ROR #16
3635	UBFX	lr, r9, #8, #8
3636	LDR	r8, [r0, r8, LSL #2]
3637	LDR	r12, [r0, r12, LSL #2]
3638	LDR	r7, [r0, r7, LSL #2]
3639	LDR	lr, [r0, lr, LSL #2]
3640	EOR	r12, r12, r8, ROR #24
3641	LDM	r3!, {r8, r9, r10, r11}
3642	EOR	r7, r7, lr, ROR #8
3643	EOR	r7, r7, r12, ROR #24
3644	/*   XOR in Key Schedule */
3645	EOR	r4, r4, r8
3646	EOR	r5, r5, r9
3647	EOR	r6, r6, r10
3648	EOR	r7, r7, r11
3649	SUBS	r1, r1, #0x1
3650#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3651	BNE	L_AES_ECB_decrypt_block_nr_256
3652#else
3653	BNE.W	L_AES_ECB_decrypt_block_nr_256
3654#endif
3655	UBFX	r8, r7, #16, #8
3656	LSR	r11, r4, #24
3657	UBFX	r12, r6, #8, #8
3658	UBFX	lr, r5, #0, #8
3659	LDR	r8, [r0, r8, LSL #2]
3660	LDR	r11, [r0, r11, LSL #2]
3661	LDR	r12, [r0, r12, LSL #2]
3662	LDR	lr, [r0, lr, LSL #2]
3663	UBFX	r9, r4, #16, #8
3664	EOR	r8, r8, r11, ROR #24
3665	LSR	r11, r5, #24
3666	EOR	r8, r8, r12, ROR #8
3667	UBFX	r12, r7, #8, #8
3668	EOR	r8, r8, lr, ROR #16
3669	UBFX	lr, r6, #0, #8
3670	LDR	r9, [r0, r9, LSL #2]
3671	LDR	r11, [r0, r11, LSL #2]
3672	LDR	r12, [r0, r12, LSL #2]
3673	LDR	lr, [r0, lr, LSL #2]
3674	UBFX	r10, r5, #16, #8
3675	EOR	r9, r9, r11, ROR #24
3676	LSR	r11, r6, #24
3677	EOR	r9, r9, r12, ROR #8
3678	UBFX	r12, r4, #8, #8
3679	EOR	r9, r9, lr, ROR #16
3680	UBFX	lr, r7, #0, #8
3681	LDR	r10, [r0, r10, LSL #2]
3682	LDR	r11, [r0, r11, LSL #2]
3683	LDR	r12, [r0, r12, LSL #2]
3684	LDR	lr, [r0, lr, LSL #2]
3685	UBFX	r4, r4, #0, #8
3686	EOR	r10, r10, r11, ROR #24
3687	UBFX	r11, r6, #16, #8
3688	EOR	r10, r10, r12, ROR #8
3689	LSR	r12, r7, #24
3690	EOR	r10, r10, lr, ROR #16
3691	UBFX	lr, r5, #8, #8
3692	LDR	r4, [r0, r4, LSL #2]
3693	LDR	r12, [r0, r12, LSL #2]
3694	LDR	r11, [r0, r11, LSL #2]
3695	LDR	lr, [r0, lr, LSL #2]
3696	EOR	r12, r12, r4, ROR #24
3697	LDM	r3!, {r4, r5, r6, r7}
3698	EOR	r11, r11, lr, ROR #8
3699	EOR	r11, r11, r12, ROR #24
3700	/*   XOR in Key Schedule */
3701	EOR	r8, r8, r4
3702	EOR	r9, r9, r5
3703	EOR	r10, r10, r6
3704	EOR	r11, r11, r7
3705	UBFX	r4, r9, #0, #8
3706	UBFX	r7, r10, #8, #8
3707	UBFX	r12, r11, #16, #8
3708	LSR	lr, r8, #24
3709	LDRB	r4, [r2, r4]
3710	LDRB	r7, [r2, r7]
3711	LDRB	r12, [r2, r12]
3712	LDRB	lr, [r2, lr]
3713	UBFX	r5, r10, #0, #8
3714	EOR	r4, r4, r7, LSL #8
3715	UBFX	r7, r11, #8, #8
3716	EOR	r4, r4, r12, LSL #16
3717	UBFX	r12, r8, #16, #8
3718	EOR	r4, r4, lr, LSL #24
3719	LSR	lr, r9, #24
3720	LDRB	r7, [r2, r7]
3721	LDRB	lr, [r2, lr]
3722	LDRB	r5, [r2, r5]
3723	LDRB	r12, [r2, r12]
3724	UBFX	r6, r11, #0, #8
3725	EOR	r5, r5, r7, LSL #8
3726	UBFX	r7, r8, #8, #8
3727	EOR	r5, r5, r12, LSL #16
3728	UBFX	r12, r9, #16, #8
3729	EOR	r5, r5, lr, LSL #24
3730	LSR	lr, r10, #24
3731	LDRB	r7, [r2, r7]
3732	LDRB	lr, [r2, lr]
3733	LDRB	r6, [r2, r6]
3734	LDRB	r12, [r2, r12]
3735	LSR	r11, r11, #24
3736	EOR	r6, r6, r7, LSL #8
3737	UBFX	r7, r8, #0, #8
3738	EOR	r6, r6, r12, LSL #16
3739	UBFX	r12, r9, #8, #8
3740	EOR	r6, r6, lr, LSL #24
3741	UBFX	lr, r10, #16, #8
3742	LDRB	r11, [r2, r11]
3743	LDRB	r12, [r2, r12]
3744	LDRB	r7, [r2, r7]
3745	LDRB	lr, [r2, lr]
3746	EOR	r12, r12, r11, LSL #16
3747	LDM	r3, {r8, r9, r10, r11}
3748	EOR	r7, r7, r12, LSL #8
3749	EOR	r7, r7, lr, LSL #16
3750	/*   XOR in Key Schedule */
3751	EOR	r4, r4, r8
3752	EOR	r5, r5, r9
3753	EOR	r6, r6, r10
3754	EOR	r7, r7, r11
3755#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
3756	POP	{r1, r3, r12, lr}
3757	REV	r4, r4
3758	REV	r5, r5
3759	REV	r6, r6
3760	REV	r7, r7
3761	STR	r4, [r1]
3762	STR	r5, [r1, #4]
3763	STR	r6, [r1, #8]
3764	STR	r7, [r1, #12]
3765	SUBS	r12, r12, #0x10
3766	ADD	lr, lr, #0x10
3767	ADD	r1, r1, #0x10
3768#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3769	BNE	L_AES_ECB_decrypt_loop_block_256
3770#else
3771	BNE.W	L_AES_ECB_decrypt_loop_block_256
3772#endif
3773#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3774	B	L_AES_ECB_decrypt_end
3775#else
3776	B.N	L_AES_ECB_decrypt_end
3777#endif
3778L_AES_ECB_decrypt_start_block_192:
3779L_AES_ECB_decrypt_loop_block_192:
3780	LDR	r4, [lr]
3781	LDR	r5, [lr, #4]
3782	LDR	r6, [lr, #8]
3783	LDR	r7, [lr, #12]
3784	REV	r4, r4
3785	REV	r5, r5
3786	REV	r6, r6
3787	REV	r7, r7
3788	PUSH	{r1, r3, r12, lr}
3789	LDM	r3!, {r8, r9, r10, r11}
3790	/* Round: 0 - XOR in key schedule */
3791	EOR	r4, r4, r8
3792	EOR	r5, r5, r9
3793	EOR	r6, r6, r10
3794	EOR	r7, r7, r11
3795	MOV	r1, #0x5
3796#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
3797	BL	AES_decrypt_block
3798#else
3799L_AES_ECB_decrypt_block_nr_192:
3800	UBFX	r8, r7, #16, #8
3801	LSR	r11, r4, #24
3802	UBFX	r12, r6, #8, #8
3803	UBFX	lr, r5, #0, #8
3804	LDR	r8, [r0, r8, LSL #2]
3805	LDR	r11, [r0, r11, LSL #2]
3806	LDR	r12, [r0, r12, LSL #2]
3807	LDR	lr, [r0, lr, LSL #2]
3808	UBFX	r9, r4, #16, #8
3809	EOR	r8, r8, r11, ROR #24
3810	LSR	r11, r5, #24
3811	EOR	r8, r8, r12, ROR #8
3812	UBFX	r12, r7, #8, #8
3813	EOR	r8, r8, lr, ROR #16
3814	UBFX	lr, r6, #0, #8
3815	LDR	r9, [r0, r9, LSL #2]
3816	LDR	r11, [r0, r11, LSL #2]
3817	LDR	r12, [r0, r12, LSL #2]
3818	LDR	lr, [r0, lr, LSL #2]
3819	UBFX	r10, r5, #16, #8
3820	EOR	r9, r9, r11, ROR #24
3821	LSR	r11, r6, #24
3822	EOR	r9, r9, r12, ROR #8
3823	UBFX	r12, r4, #8, #8
3824	EOR	r9, r9, lr, ROR #16
3825	UBFX	lr, r7, #0, #8
3826	LDR	r10, [r0, r10, LSL #2]
3827	LDR	r11, [r0, r11, LSL #2]
3828	LDR	r12, [r0, r12, LSL #2]
3829	LDR	lr, [r0, lr, LSL #2]
3830	UBFX	r4, r4, #0, #8
3831	EOR	r10, r10, r11, ROR #24
3832	UBFX	r11, r6, #16, #8
3833	EOR	r10, r10, r12, ROR #8
3834	LSR	r12, r7, #24
3835	EOR	r10, r10, lr, ROR #16
3836	UBFX	lr, r5, #8, #8
3837	LDR	r4, [r0, r4, LSL #2]
3838	LDR	r12, [r0, r12, LSL #2]
3839	LDR	r11, [r0, r11, LSL #2]
3840	LDR	lr, [r0, lr, LSL #2]
3841	EOR	r12, r12, r4, ROR #24
3842	LDM	r3!, {r4, r5, r6, r7}
3843	EOR	r11, r11, lr, ROR #8
3844	EOR	r11, r11, r12, ROR #24
3845	/*   XOR in Key Schedule */
3846	EOR	r8, r8, r4
3847	EOR	r9, r9, r5
3848	EOR	r10, r10, r6
3849	EOR	r11, r11, r7
3850	UBFX	r4, r11, #16, #8
3851	LSR	r7, r8, #24
3852	UBFX	r12, r10, #8, #8
3853	UBFX	lr, r9, #0, #8
3854	LDR	r4, [r0, r4, LSL #2]
3855	LDR	r7, [r0, r7, LSL #2]
3856	LDR	r12, [r0, r12, LSL #2]
3857	LDR	lr, [r0, lr, LSL #2]
3858	UBFX	r5, r8, #16, #8
3859	EOR	r4, r4, r7, ROR #24
3860	LSR	r7, r9, #24
3861	EOR	r4, r4, r12, ROR #8
3862	UBFX	r12, r11, #8, #8
3863	EOR	r4, r4, lr, ROR #16
3864	UBFX	lr, r10, #0, #8
3865	LDR	r5, [r0, r5, LSL #2]
3866	LDR	r7, [r0, r7, LSL #2]
3867	LDR	r12, [r0, r12, LSL #2]
3868	LDR	lr, [r0, lr, LSL #2]
3869	UBFX	r6, r9, #16, #8
3870	EOR	r5, r5, r7, ROR #24
3871	LSR	r7, r10, #24
3872	EOR	r5, r5, r12, ROR #8
3873	UBFX	r12, r8, #8, #8
3874	EOR	r5, r5, lr, ROR #16
3875	UBFX	lr, r11, #0, #8
3876	LDR	r6, [r0, r6, LSL #2]
3877	LDR	r7, [r0, r7, LSL #2]
3878	LDR	r12, [r0, r12, LSL #2]
3879	LDR	lr, [r0, lr, LSL #2]
3880	UBFX	r8, r8, #0, #8
3881	EOR	r6, r6, r7, ROR #24
3882	UBFX	r7, r10, #16, #8
3883	EOR	r6, r6, r12, ROR #8
3884	LSR	r12, r11, #24
3885	EOR	r6, r6, lr, ROR #16
3886	UBFX	lr, r9, #8, #8
3887	LDR	r8, [r0, r8, LSL #2]
3888	LDR	r12, [r0, r12, LSL #2]
3889	LDR	r7, [r0, r7, LSL #2]
3890	LDR	lr, [r0, lr, LSL #2]
3891	EOR	r12, r12, r8, ROR #24
3892	LDM	r3!, {r8, r9, r10, r11}
3893	EOR	r7, r7, lr, ROR #8
3894	EOR	r7, r7, r12, ROR #24
3895	/*   XOR in Key Schedule */
3896	EOR	r4, r4, r8
3897	EOR	r5, r5, r9
3898	EOR	r6, r6, r10
3899	EOR	r7, r7, r11
3900	SUBS	r1, r1, #0x1
3901#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
3902	BNE	L_AES_ECB_decrypt_block_nr_192
3903#else
3904	BNE.W	L_AES_ECB_decrypt_block_nr_192
3905#endif
3906	UBFX	r8, r7, #16, #8
3907	LSR	r11, r4, #24
3908	UBFX	r12, r6, #8, #8
3909	UBFX	lr, r5, #0, #8
3910	LDR	r8, [r0, r8, LSL #2]
3911	LDR	r11, [r0, r11, LSL #2]
3912	LDR	r12, [r0, r12, LSL #2]
3913	LDR	lr, [r0, lr, LSL #2]
3914	UBFX	r9, r4, #16, #8
3915	EOR	r8, r8, r11, ROR #24
3916	LSR	r11, r5, #24
3917	EOR	r8, r8, r12, ROR #8
3918	UBFX	r12, r7, #8, #8
3919	EOR	r8, r8, lr, ROR #16
3920	UBFX	lr, r6, #0, #8
3921	LDR	r9, [r0, r9, LSL #2]
3922	LDR	r11, [r0, r11, LSL #2]
3923	LDR	r12, [r0, r12, LSL #2]
3924	LDR	lr, [r0, lr, LSL #2]
3925	UBFX	r10, r5, #16, #8
3926	EOR	r9, r9, r11, ROR #24
3927	LSR	r11, r6, #24
3928	EOR	r9, r9, r12, ROR #8
3929	UBFX	r12, r4, #8, #8
3930	EOR	r9, r9, lr, ROR #16
3931	UBFX	lr, r7, #0, #8
3932	LDR	r10, [r0, r10, LSL #2]
3933	LDR	r11, [r0, r11, LSL #2]
3934	LDR	r12, [r0, r12, LSL #2]
3935	LDR	lr, [r0, lr, LSL #2]
3936	UBFX	r4, r4, #0, #8
3937	EOR	r10, r10, r11, ROR #24
3938	UBFX	r11, r6, #16, #8
3939	EOR	r10, r10, r12, ROR #8
3940	LSR	r12, r7, #24
3941	EOR	r10, r10, lr, ROR #16
3942	UBFX	lr, r5, #8, #8
3943	LDR	r4, [r0, r4, LSL #2]
3944	LDR	r12, [r0, r12, LSL #2]
3945	LDR	r11, [r0, r11, LSL #2]
3946	LDR	lr, [r0, lr, LSL #2]
3947	EOR	r12, r12, r4, ROR #24
3948	LDM	r3!, {r4, r5, r6, r7}
3949	EOR	r11, r11, lr, ROR #8
3950	EOR	r11, r11, r12, ROR #24
3951	/*   XOR in Key Schedule */
3952	EOR	r8, r8, r4
3953	EOR	r9, r9, r5
3954	EOR	r10, r10, r6
3955	EOR	r11, r11, r7
3956	UBFX	r4, r9, #0, #8
3957	UBFX	r7, r10, #8, #8
3958	UBFX	r12, r11, #16, #8
3959	LSR	lr, r8, #24
3960	LDRB	r4, [r2, r4]
3961	LDRB	r7, [r2, r7]
3962	LDRB	r12, [r2, r12]
3963	LDRB	lr, [r2, lr]
3964	UBFX	r5, r10, #0, #8
3965	EOR	r4, r4, r7, LSL #8
3966	UBFX	r7, r11, #8, #8
3967	EOR	r4, r4, r12, LSL #16
3968	UBFX	r12, r8, #16, #8
3969	EOR	r4, r4, lr, LSL #24
3970	LSR	lr, r9, #24
3971	LDRB	r7, [r2, r7]
3972	LDRB	lr, [r2, lr]
3973	LDRB	r5, [r2, r5]
3974	LDRB	r12, [r2, r12]
3975	UBFX	r6, r11, #0, #8
3976	EOR	r5, r5, r7, LSL #8
3977	UBFX	r7, r8, #8, #8
3978	EOR	r5, r5, r12, LSL #16
3979	UBFX	r12, r9, #16, #8
3980	EOR	r5, r5, lr, LSL #24
3981	LSR	lr, r10, #24
3982	LDRB	r7, [r2, r7]
3983	LDRB	lr, [r2, lr]
3984	LDRB	r6, [r2, r6]
3985	LDRB	r12, [r2, r12]
3986	LSR	r11, r11, #24
3987	EOR	r6, r6, r7, LSL #8
3988	UBFX	r7, r8, #0, #8
3989	EOR	r6, r6, r12, LSL #16
3990	UBFX	r12, r9, #8, #8
3991	EOR	r6, r6, lr, LSL #24
3992	UBFX	lr, r10, #16, #8
3993	LDRB	r11, [r2, r11]
3994	LDRB	r12, [r2, r12]
3995	LDRB	r7, [r2, r7]
3996	LDRB	lr, [r2, lr]
3997	EOR	r12, r12, r11, LSL #16
3998	LDM	r3, {r8, r9, r10, r11}
3999	EOR	r7, r7, r12, LSL #8
4000	EOR	r7, r7, lr, LSL #16
4001	/*   XOR in Key Schedule */
4002	EOR	r4, r4, r8
4003	EOR	r5, r5, r9
4004	EOR	r6, r6, r10
4005	EOR	r7, r7, r11
4006#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
4007	POP	{r1, r3, r12, lr}
4008	REV	r4, r4
4009	REV	r5, r5
4010	REV	r6, r6
4011	REV	r7, r7
4012	STR	r4, [r1]
4013	STR	r5, [r1, #4]
4014	STR	r6, [r1, #8]
4015	STR	r7, [r1, #12]
4016	SUBS	r12, r12, #0x10
4017	ADD	lr, lr, #0x10
4018	ADD	r1, r1, #0x10
4019#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4020	BNE	L_AES_ECB_decrypt_loop_block_192
4021#else
4022	BNE.W	L_AES_ECB_decrypt_loop_block_192
4023#endif
4024#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4025	B	L_AES_ECB_decrypt_end
4026#else
4027	B.N	L_AES_ECB_decrypt_end
4028#endif
4029L_AES_ECB_decrypt_start_block_128:
4030L_AES_ECB_decrypt_loop_block_128:
4031	LDR	r4, [lr]
4032	LDR	r5, [lr, #4]
4033	LDR	r6, [lr, #8]
4034	LDR	r7, [lr, #12]
4035	REV	r4, r4
4036	REV	r5, r5
4037	REV	r6, r6
4038	REV	r7, r7
4039	PUSH	{r1, r3, r12, lr}
4040	LDM	r3!, {r8, r9, r10, r11}
4041	/* Round: 0 - XOR in key schedule */
4042	EOR	r4, r4, r8
4043	EOR	r5, r5, r9
4044	EOR	r6, r6, r10
4045	EOR	r7, r7, r11
4046	MOV	r1, #0x4
4047#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
4048	BL	AES_decrypt_block
4049#else
4050L_AES_ECB_decrypt_block_nr_128:
4051	UBFX	r8, r7, #16, #8
4052	LSR	r11, r4, #24
4053	UBFX	r12, r6, #8, #8
4054	UBFX	lr, r5, #0, #8
4055	LDR	r8, [r0, r8, LSL #2]
4056	LDR	r11, [r0, r11, LSL #2]
4057	LDR	r12, [r0, r12, LSL #2]
4058	LDR	lr, [r0, lr, LSL #2]
4059	UBFX	r9, r4, #16, #8
4060	EOR	r8, r8, r11, ROR #24
4061	LSR	r11, r5, #24
4062	EOR	r8, r8, r12, ROR #8
4063	UBFX	r12, r7, #8, #8
4064	EOR	r8, r8, lr, ROR #16
4065	UBFX	lr, r6, #0, #8
4066	LDR	r9, [r0, r9, LSL #2]
4067	LDR	r11, [r0, r11, LSL #2]
4068	LDR	r12, [r0, r12, LSL #2]
4069	LDR	lr, [r0, lr, LSL #2]
4070	UBFX	r10, r5, #16, #8
4071	EOR	r9, r9, r11, ROR #24
4072	LSR	r11, r6, #24
4073	EOR	r9, r9, r12, ROR #8
4074	UBFX	r12, r4, #8, #8
4075	EOR	r9, r9, lr, ROR #16
4076	UBFX	lr, r7, #0, #8
4077	LDR	r10, [r0, r10, LSL #2]
4078	LDR	r11, [r0, r11, LSL #2]
4079	LDR	r12, [r0, r12, LSL #2]
4080	LDR	lr, [r0, lr, LSL #2]
4081	UBFX	r4, r4, #0, #8
4082	EOR	r10, r10, r11, ROR #24
4083	UBFX	r11, r6, #16, #8
4084	EOR	r10, r10, r12, ROR #8
4085	LSR	r12, r7, #24
4086	EOR	r10, r10, lr, ROR #16
4087	UBFX	lr, r5, #8, #8
4088	LDR	r4, [r0, r4, LSL #2]
4089	LDR	r12, [r0, r12, LSL #2]
4090	LDR	r11, [r0, r11, LSL #2]
4091	LDR	lr, [r0, lr, LSL #2]
4092	EOR	r12, r12, r4, ROR #24
4093	LDM	r3!, {r4, r5, r6, r7}
4094	EOR	r11, r11, lr, ROR #8
4095	EOR	r11, r11, r12, ROR #24
4096	/*   XOR in Key Schedule */
4097	EOR	r8, r8, r4
4098	EOR	r9, r9, r5
4099	EOR	r10, r10, r6
4100	EOR	r11, r11, r7
4101	UBFX	r4, r11, #16, #8
4102	LSR	r7, r8, #24
4103	UBFX	r12, r10, #8, #8
4104	UBFX	lr, r9, #0, #8
4105	LDR	r4, [r0, r4, LSL #2]
4106	LDR	r7, [r0, r7, LSL #2]
4107	LDR	r12, [r0, r12, LSL #2]
4108	LDR	lr, [r0, lr, LSL #2]
4109	UBFX	r5, r8, #16, #8
4110	EOR	r4, r4, r7, ROR #24
4111	LSR	r7, r9, #24
4112	EOR	r4, r4, r12, ROR #8
4113	UBFX	r12, r11, #8, #8
4114	EOR	r4, r4, lr, ROR #16
4115	UBFX	lr, r10, #0, #8
4116	LDR	r5, [r0, r5, LSL #2]
4117	LDR	r7, [r0, r7, LSL #2]
4118	LDR	r12, [r0, r12, LSL #2]
4119	LDR	lr, [r0, lr, LSL #2]
4120	UBFX	r6, r9, #16, #8
4121	EOR	r5, r5, r7, ROR #24
4122	LSR	r7, r10, #24
4123	EOR	r5, r5, r12, ROR #8
4124	UBFX	r12, r8, #8, #8
4125	EOR	r5, r5, lr, ROR #16
4126	UBFX	lr, r11, #0, #8
4127	LDR	r6, [r0, r6, LSL #2]
4128	LDR	r7, [r0, r7, LSL #2]
4129	LDR	r12, [r0, r12, LSL #2]
4130	LDR	lr, [r0, lr, LSL #2]
4131	UBFX	r8, r8, #0, #8
4132	EOR	r6, r6, r7, ROR #24
4133	UBFX	r7, r10, #16, #8
4134	EOR	r6, r6, r12, ROR #8
4135	LSR	r12, r11, #24
4136	EOR	r6, r6, lr, ROR #16
4137	UBFX	lr, r9, #8, #8
4138	LDR	r8, [r0, r8, LSL #2]
4139	LDR	r12, [r0, r12, LSL #2]
4140	LDR	r7, [r0, r7, LSL #2]
4141	LDR	lr, [r0, lr, LSL #2]
4142	EOR	r12, r12, r8, ROR #24
4143	LDM	r3!, {r8, r9, r10, r11}
4144	EOR	r7, r7, lr, ROR #8
4145	EOR	r7, r7, r12, ROR #24
4146	/*   XOR in Key Schedule */
4147	EOR	r4, r4, r8
4148	EOR	r5, r5, r9
4149	EOR	r6, r6, r10
4150	EOR	r7, r7, r11
4151	SUBS	r1, r1, #0x1
4152#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4153	BNE	L_AES_ECB_decrypt_block_nr_128
4154#else
4155	BNE.W	L_AES_ECB_decrypt_block_nr_128
4156#endif
4157	UBFX	r8, r7, #16, #8
4158	LSR	r11, r4, #24
4159	UBFX	r12, r6, #8, #8
4160	UBFX	lr, r5, #0, #8
4161	LDR	r8, [r0, r8, LSL #2]
4162	LDR	r11, [r0, r11, LSL #2]
4163	LDR	r12, [r0, r12, LSL #2]
4164	LDR	lr, [r0, lr, LSL #2]
4165	UBFX	r9, r4, #16, #8
4166	EOR	r8, r8, r11, ROR #24
4167	LSR	r11, r5, #24
4168	EOR	r8, r8, r12, ROR #8
4169	UBFX	r12, r7, #8, #8
4170	EOR	r8, r8, lr, ROR #16
4171	UBFX	lr, r6, #0, #8
4172	LDR	r9, [r0, r9, LSL #2]
4173	LDR	r11, [r0, r11, LSL #2]
4174	LDR	r12, [r0, r12, LSL #2]
4175	LDR	lr, [r0, lr, LSL #2]
4176	UBFX	r10, r5, #16, #8
4177	EOR	r9, r9, r11, ROR #24
4178	LSR	r11, r6, #24
4179	EOR	r9, r9, r12, ROR #8
4180	UBFX	r12, r4, #8, #8
4181	EOR	r9, r9, lr, ROR #16
4182	UBFX	lr, r7, #0, #8
4183	LDR	r10, [r0, r10, LSL #2]
4184	LDR	r11, [r0, r11, LSL #2]
4185	LDR	r12, [r0, r12, LSL #2]
4186	LDR	lr, [r0, lr, LSL #2]
4187	UBFX	r4, r4, #0, #8
4188	EOR	r10, r10, r11, ROR #24
4189	UBFX	r11, r6, #16, #8
4190	EOR	r10, r10, r12, ROR #8
4191	LSR	r12, r7, #24
4192	EOR	r10, r10, lr, ROR #16
4193	UBFX	lr, r5, #8, #8
4194	LDR	r4, [r0, r4, LSL #2]
4195	LDR	r12, [r0, r12, LSL #2]
4196	LDR	r11, [r0, r11, LSL #2]
4197	LDR	lr, [r0, lr, LSL #2]
4198	EOR	r12, r12, r4, ROR #24
4199	LDM	r3!, {r4, r5, r6, r7}
4200	EOR	r11, r11, lr, ROR #8
4201	EOR	r11, r11, r12, ROR #24
4202	/*   XOR in Key Schedule */
4203	EOR	r8, r8, r4
4204	EOR	r9, r9, r5
4205	EOR	r10, r10, r6
4206	EOR	r11, r11, r7
4207	UBFX	r4, r9, #0, #8
4208	UBFX	r7, r10, #8, #8
4209	UBFX	r12, r11, #16, #8
4210	LSR	lr, r8, #24
4211	LDRB	r4, [r2, r4]
4212	LDRB	r7, [r2, r7]
4213	LDRB	r12, [r2, r12]
4214	LDRB	lr, [r2, lr]
4215	UBFX	r5, r10, #0, #8
4216	EOR	r4, r4, r7, LSL #8
4217	UBFX	r7, r11, #8, #8
4218	EOR	r4, r4, r12, LSL #16
4219	UBFX	r12, r8, #16, #8
4220	EOR	r4, r4, lr, LSL #24
4221	LSR	lr, r9, #24
4222	LDRB	r7, [r2, r7]
4223	LDRB	lr, [r2, lr]
4224	LDRB	r5, [r2, r5]
4225	LDRB	r12, [r2, r12]
4226	UBFX	r6, r11, #0, #8
4227	EOR	r5, r5, r7, LSL #8
4228	UBFX	r7, r8, #8, #8
4229	EOR	r5, r5, r12, LSL #16
4230	UBFX	r12, r9, #16, #8
4231	EOR	r5, r5, lr, LSL #24
4232	LSR	lr, r10, #24
4233	LDRB	r7, [r2, r7]
4234	LDRB	lr, [r2, lr]
4235	LDRB	r6, [r2, r6]
4236	LDRB	r12, [r2, r12]
4237	LSR	r11, r11, #24
4238	EOR	r6, r6, r7, LSL #8
4239	UBFX	r7, r8, #0, #8
4240	EOR	r6, r6, r12, LSL #16
4241	UBFX	r12, r9, #8, #8
4242	EOR	r6, r6, lr, LSL #24
4243	UBFX	lr, r10, #16, #8
4244	LDRB	r11, [r2, r11]
4245	LDRB	r12, [r2, r12]
4246	LDRB	r7, [r2, r7]
4247	LDRB	lr, [r2, lr]
4248	EOR	r12, r12, r11, LSL #16
4249	LDM	r3, {r8, r9, r10, r11}
4250	EOR	r7, r7, r12, LSL #8
4251	EOR	r7, r7, lr, LSL #16
4252	/*   XOR in Key Schedule */
4253	EOR	r4, r4, r8
4254	EOR	r5, r5, r9
4255	EOR	r6, r6, r10
4256	EOR	r7, r7, r11
4257#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
4258	POP	{r1, r3, r12, lr}
4259	REV	r4, r4
4260	REV	r5, r5
4261	REV	r6, r6
4262	REV	r7, r7
4263	STR	r4, [r1]
4264	STR	r5, [r1, #4]
4265	STR	r6, [r1, #8]
4266	STR	r7, [r1, #12]
4267	SUBS	r12, r12, #0x10
4268	ADD	lr, lr, #0x10
4269	ADD	r1, r1, #0x10
4270#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4271	BNE	L_AES_ECB_decrypt_loop_block_128
4272#else
4273	BNE.W	L_AES_ECB_decrypt_loop_block_128
4274#endif
4275L_AES_ECB_decrypt_end:
4276	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
4277	/* Cycle Count = 1053 */
4278	.size	AES_ECB_decrypt,.-AES_ECB_decrypt
4279#endif /* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER || defined(HAVE_AES_ECB) */
4280#ifdef HAVE_AES_CBC
4281	.text
4282	.align	4
4283	.globl	AES_CBC_decrypt
4284	.type	AES_CBC_decrypt, %function
4285AES_CBC_decrypt:
4286	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
4287	MOV	lr, r0
4288	LDR	r0, L_AES_Thumb2_td_ecb
4289	MOV	r12, r2
4290	ADR	r2, L_AES_Thumb2_td4
4291	LDR	r8, [sp, #36]
4292	LDR	r4, [sp, #40]
4293	PUSH	{r3, r4}
4294	CMP	r8, #0xa
4295#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4296	BEQ	L_AES_CBC_decrypt_loop_block_128
4297#else
4298	BEQ.W	L_AES_CBC_decrypt_loop_block_128
4299#endif
4300	CMP	r8, #0xc
4301#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4302	BEQ	L_AES_CBC_decrypt_loop_block_192
4303#else
4304	BEQ.W	L_AES_CBC_decrypt_loop_block_192
4305#endif
4306L_AES_CBC_decrypt_loop_block_256:
4307	PUSH	{r1, r12, lr}
4308	LDR	r4, [lr]
4309	LDR	r5, [lr, #4]
4310	LDR	r6, [lr, #8]
4311	LDR	r7, [lr, #12]
4312	LDR	lr, [sp, #16]
4313	STRD	r4, r5, [lr, #16]
4314	STRD	r6, r7, [lr, #24]
4315	LDM	r3!, {r8, r9, r10, r11}
4316	REV	r4, r4
4317	REV	r5, r5
4318	REV	r6, r6
4319	REV	r7, r7
4320	/* Round: 0 - XOR in key schedule */
4321	EOR	r4, r4, r8
4322	EOR	r5, r5, r9
4323	EOR	r6, r6, r10
4324	EOR	r7, r7, r11
4325	MOV	r1, #0x6
4326#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
4327	BL	AES_decrypt_block
4328#else
4329L_AES_CBC_decrypt_block_nr_256_odd:
4330	UBFX	r8, r7, #16, #8
4331	LSR	r11, r4, #24
4332	UBFX	r12, r6, #8, #8
4333	UBFX	lr, r5, #0, #8
4334	LDR	r8, [r0, r8, LSL #2]
4335	LDR	r11, [r0, r11, LSL #2]
4336	LDR	r12, [r0, r12, LSL #2]
4337	LDR	lr, [r0, lr, LSL #2]
4338	UBFX	r9, r4, #16, #8
4339	EOR	r8, r8, r11, ROR #24
4340	LSR	r11, r5, #24
4341	EOR	r8, r8, r12, ROR #8
4342	UBFX	r12, r7, #8, #8
4343	EOR	r8, r8, lr, ROR #16
4344	UBFX	lr, r6, #0, #8
4345	LDR	r9, [r0, r9, LSL #2]
4346	LDR	r11, [r0, r11, LSL #2]
4347	LDR	r12, [r0, r12, LSL #2]
4348	LDR	lr, [r0, lr, LSL #2]
4349	UBFX	r10, r5, #16, #8
4350	EOR	r9, r9, r11, ROR #24
4351	LSR	r11, r6, #24
4352	EOR	r9, r9, r12, ROR #8
4353	UBFX	r12, r4, #8, #8
4354	EOR	r9, r9, lr, ROR #16
4355	UBFX	lr, r7, #0, #8
4356	LDR	r10, [r0, r10, LSL #2]
4357	LDR	r11, [r0, r11, LSL #2]
4358	LDR	r12, [r0, r12, LSL #2]
4359	LDR	lr, [r0, lr, LSL #2]
4360	UBFX	r4, r4, #0, #8
4361	EOR	r10, r10, r11, ROR #24
4362	UBFX	r11, r6, #16, #8
4363	EOR	r10, r10, r12, ROR #8
4364	LSR	r12, r7, #24
4365	EOR	r10, r10, lr, ROR #16
4366	UBFX	lr, r5, #8, #8
4367	LDR	r4, [r0, r4, LSL #2]
4368	LDR	r12, [r0, r12, LSL #2]
4369	LDR	r11, [r0, r11, LSL #2]
4370	LDR	lr, [r0, lr, LSL #2]
4371	EOR	r12, r12, r4, ROR #24
4372	LDM	r3!, {r4, r5, r6, r7}
4373	EOR	r11, r11, lr, ROR #8
4374	EOR	r11, r11, r12, ROR #24
4375	/*   XOR in Key Schedule */
4376	EOR	r8, r8, r4
4377	EOR	r9, r9, r5
4378	EOR	r10, r10, r6
4379	EOR	r11, r11, r7
4380	UBFX	r4, r11, #16, #8
4381	LSR	r7, r8, #24
4382	UBFX	r12, r10, #8, #8
4383	UBFX	lr, r9, #0, #8
4384	LDR	r4, [r0, r4, LSL #2]
4385	LDR	r7, [r0, r7, LSL #2]
4386	LDR	r12, [r0, r12, LSL #2]
4387	LDR	lr, [r0, lr, LSL #2]
4388	UBFX	r5, r8, #16, #8
4389	EOR	r4, r4, r7, ROR #24
4390	LSR	r7, r9, #24
4391	EOR	r4, r4, r12, ROR #8
4392	UBFX	r12, r11, #8, #8
4393	EOR	r4, r4, lr, ROR #16
4394	UBFX	lr, r10, #0, #8
4395	LDR	r5, [r0, r5, LSL #2]
4396	LDR	r7, [r0, r7, LSL #2]
4397	LDR	r12, [r0, r12, LSL #2]
4398	LDR	lr, [r0, lr, LSL #2]
4399	UBFX	r6, r9, #16, #8
4400	EOR	r5, r5, r7, ROR #24
4401	LSR	r7, r10, #24
4402	EOR	r5, r5, r12, ROR #8
4403	UBFX	r12, r8, #8, #8
4404	EOR	r5, r5, lr, ROR #16
4405	UBFX	lr, r11, #0, #8
4406	LDR	r6, [r0, r6, LSL #2]
4407	LDR	r7, [r0, r7, LSL #2]
4408	LDR	r12, [r0, r12, LSL #2]
4409	LDR	lr, [r0, lr, LSL #2]
4410	UBFX	r8, r8, #0, #8
4411	EOR	r6, r6, r7, ROR #24
4412	UBFX	r7, r10, #16, #8
4413	EOR	r6, r6, r12, ROR #8
4414	LSR	r12, r11, #24
4415	EOR	r6, r6, lr, ROR #16
4416	UBFX	lr, r9, #8, #8
4417	LDR	r8, [r0, r8, LSL #2]
4418	LDR	r12, [r0, r12, LSL #2]
4419	LDR	r7, [r0, r7, LSL #2]
4420	LDR	lr, [r0, lr, LSL #2]
4421	EOR	r12, r12, r8, ROR #24
4422	LDM	r3!, {r8, r9, r10, r11}
4423	EOR	r7, r7, lr, ROR #8
4424	EOR	r7, r7, r12, ROR #24
4425	/*   XOR in Key Schedule */
4426	EOR	r4, r4, r8
4427	EOR	r5, r5, r9
4428	EOR	r6, r6, r10
4429	EOR	r7, r7, r11
4430	SUBS	r1, r1, #0x1
4431#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4432	BNE	L_AES_CBC_decrypt_block_nr_256_odd
4433#else
4434	BNE.W	L_AES_CBC_decrypt_block_nr_256_odd
4435#endif
4436	UBFX	r8, r7, #16, #8
4437	LSR	r11, r4, #24
4438	UBFX	r12, r6, #8, #8
4439	UBFX	lr, r5, #0, #8
4440	LDR	r8, [r0, r8, LSL #2]
4441	LDR	r11, [r0, r11, LSL #2]
4442	LDR	r12, [r0, r12, LSL #2]
4443	LDR	lr, [r0, lr, LSL #2]
4444	UBFX	r9, r4, #16, #8
4445	EOR	r8, r8, r11, ROR #24
4446	LSR	r11, r5, #24
4447	EOR	r8, r8, r12, ROR #8
4448	UBFX	r12, r7, #8, #8
4449	EOR	r8, r8, lr, ROR #16
4450	UBFX	lr, r6, #0, #8
4451	LDR	r9, [r0, r9, LSL #2]
4452	LDR	r11, [r0, r11, LSL #2]
4453	LDR	r12, [r0, r12, LSL #2]
4454	LDR	lr, [r0, lr, LSL #2]
4455	UBFX	r10, r5, #16, #8
4456	EOR	r9, r9, r11, ROR #24
4457	LSR	r11, r6, #24
4458	EOR	r9, r9, r12, ROR #8
4459	UBFX	r12, r4, #8, #8
4460	EOR	r9, r9, lr, ROR #16
4461	UBFX	lr, r7, #0, #8
4462	LDR	r10, [r0, r10, LSL #2]
4463	LDR	r11, [r0, r11, LSL #2]
4464	LDR	r12, [r0, r12, LSL #2]
4465	LDR	lr, [r0, lr, LSL #2]
4466	UBFX	r4, r4, #0, #8
4467	EOR	r10, r10, r11, ROR #24
4468	UBFX	r11, r6, #16, #8
4469	EOR	r10, r10, r12, ROR #8
4470	LSR	r12, r7, #24
4471	EOR	r10, r10, lr, ROR #16
4472	UBFX	lr, r5, #8, #8
4473	LDR	r4, [r0, r4, LSL #2]
4474	LDR	r12, [r0, r12, LSL #2]
4475	LDR	r11, [r0, r11, LSL #2]
4476	LDR	lr, [r0, lr, LSL #2]
4477	EOR	r12, r12, r4, ROR #24
4478	LDM	r3!, {r4, r5, r6, r7}
4479	EOR	r11, r11, lr, ROR #8
4480	EOR	r11, r11, r12, ROR #24
4481	/*   XOR in Key Schedule */
4482	EOR	r8, r8, r4
4483	EOR	r9, r9, r5
4484	EOR	r10, r10, r6
4485	EOR	r11, r11, r7
4486	UBFX	r4, r9, #0, #8
4487	UBFX	r7, r10, #8, #8
4488	UBFX	r12, r11, #16, #8
4489	LSR	lr, r8, #24
4490	LDRB	r4, [r2, r4]
4491	LDRB	r7, [r2, r7]
4492	LDRB	r12, [r2, r12]
4493	LDRB	lr, [r2, lr]
4494	UBFX	r5, r10, #0, #8
4495	EOR	r4, r4, r7, LSL #8
4496	UBFX	r7, r11, #8, #8
4497	EOR	r4, r4, r12, LSL #16
4498	UBFX	r12, r8, #16, #8
4499	EOR	r4, r4, lr, LSL #24
4500	LSR	lr, r9, #24
4501	LDRB	r7, [r2, r7]
4502	LDRB	lr, [r2, lr]
4503	LDRB	r5, [r2, r5]
4504	LDRB	r12, [r2, r12]
4505	UBFX	r6, r11, #0, #8
4506	EOR	r5, r5, r7, LSL #8
4507	UBFX	r7, r8, #8, #8
4508	EOR	r5, r5, r12, LSL #16
4509	UBFX	r12, r9, #16, #8
4510	EOR	r5, r5, lr, LSL #24
4511	LSR	lr, r10, #24
4512	LDRB	r7, [r2, r7]
4513	LDRB	lr, [r2, lr]
4514	LDRB	r6, [r2, r6]
4515	LDRB	r12, [r2, r12]
4516	LSR	r11, r11, #24
4517	EOR	r6, r6, r7, LSL #8
4518	UBFX	r7, r8, #0, #8
4519	EOR	r6, r6, r12, LSL #16
4520	UBFX	r12, r9, #8, #8
4521	EOR	r6, r6, lr, LSL #24
4522	UBFX	lr, r10, #16, #8
4523	LDRB	r11, [r2, r11]
4524	LDRB	r12, [r2, r12]
4525	LDRB	r7, [r2, r7]
4526	LDRB	lr, [r2, lr]
4527	EOR	r12, r12, r11, LSL #16
4528	LDM	r3, {r8, r9, r10, r11}
4529	EOR	r7, r7, r12, LSL #8
4530	EOR	r7, r7, lr, LSL #16
4531	/*   XOR in Key Schedule */
4532	EOR	r4, r4, r8
4533	EOR	r5, r5, r9
4534	EOR	r6, r6, r10
4535	EOR	r7, r7, r11
4536#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
4537	LDR	lr, [sp, #16]
4538	REV	r4, r4
4539	REV	r5, r5
4540	REV	r6, r6
4541	REV	r7, r7
4542	LDM	lr, {r8, r9, r10, r11}
4543	POP	{r1, r12, lr}
4544	LDR	r3, [sp]
4545	EOR	r4, r4, r8
4546	EOR	r5, r5, r9
4547	EOR	r6, r6, r10
4548	EOR	r7, r7, r11
4549	STR	r4, [r1]
4550	STR	r5, [r1, #4]
4551	STR	r6, [r1, #8]
4552	STR	r7, [r1, #12]
4553	SUBS	r12, r12, #0x10
4554	ADD	lr, lr, #0x10
4555	ADD	r1, r1, #0x10
4556#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4557	BEQ	L_AES_CBC_decrypt_end_odd
4558#else
4559	BEQ.W	L_AES_CBC_decrypt_end_odd
4560#endif
4561	PUSH	{r1, r12, lr}
4562	LDR	r4, [lr]
4563	LDR	r5, [lr, #4]
4564	LDR	r6, [lr, #8]
4565	LDR	r7, [lr, #12]
4566	LDR	lr, [sp, #16]
4567	STRD	r4, r5, [lr]
4568	STRD	r6, r7, [lr, #8]
4569	LDM	r3!, {r8, r9, r10, r11}
4570	REV	r4, r4
4571	REV	r5, r5
4572	REV	r6, r6
4573	REV	r7, r7
4574	/* Round: 0 - XOR in key schedule */
4575	EOR	r4, r4, r8
4576	EOR	r5, r5, r9
4577	EOR	r6, r6, r10
4578	EOR	r7, r7, r11
4579	MOV	r1, #0x6
4580#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
4581	BL	AES_decrypt_block
4582#else
4583L_AES_CBC_decrypt_block_nr_256_even:
4584	UBFX	r8, r7, #16, #8
4585	LSR	r11, r4, #24
4586	UBFX	r12, r6, #8, #8
4587	UBFX	lr, r5, #0, #8
4588	LDR	r8, [r0, r8, LSL #2]
4589	LDR	r11, [r0, r11, LSL #2]
4590	LDR	r12, [r0, r12, LSL #2]
4591	LDR	lr, [r0, lr, LSL #2]
4592	UBFX	r9, r4, #16, #8
4593	EOR	r8, r8, r11, ROR #24
4594	LSR	r11, r5, #24
4595	EOR	r8, r8, r12, ROR #8
4596	UBFX	r12, r7, #8, #8
4597	EOR	r8, r8, lr, ROR #16
4598	UBFX	lr, r6, #0, #8
4599	LDR	r9, [r0, r9, LSL #2]
4600	LDR	r11, [r0, r11, LSL #2]
4601	LDR	r12, [r0, r12, LSL #2]
4602	LDR	lr, [r0, lr, LSL #2]
4603	UBFX	r10, r5, #16, #8
4604	EOR	r9, r9, r11, ROR #24
4605	LSR	r11, r6, #24
4606	EOR	r9, r9, r12, ROR #8
4607	UBFX	r12, r4, #8, #8
4608	EOR	r9, r9, lr, ROR #16
4609	UBFX	lr, r7, #0, #8
4610	LDR	r10, [r0, r10, LSL #2]
4611	LDR	r11, [r0, r11, LSL #2]
4612	LDR	r12, [r0, r12, LSL #2]
4613	LDR	lr, [r0, lr, LSL #2]
4614	UBFX	r4, r4, #0, #8
4615	EOR	r10, r10, r11, ROR #24
4616	UBFX	r11, r6, #16, #8
4617	EOR	r10, r10, r12, ROR #8
4618	LSR	r12, r7, #24
4619	EOR	r10, r10, lr, ROR #16
4620	UBFX	lr, r5, #8, #8
4621	LDR	r4, [r0, r4, LSL #2]
4622	LDR	r12, [r0, r12, LSL #2]
4623	LDR	r11, [r0, r11, LSL #2]
4624	LDR	lr, [r0, lr, LSL #2]
4625	EOR	r12, r12, r4, ROR #24
4626	LDM	r3!, {r4, r5, r6, r7}
4627	EOR	r11, r11, lr, ROR #8
4628	EOR	r11, r11, r12, ROR #24
4629	/*   XOR in Key Schedule */
4630	EOR	r8, r8, r4
4631	EOR	r9, r9, r5
4632	EOR	r10, r10, r6
4633	EOR	r11, r11, r7
4634	UBFX	r4, r11, #16, #8
4635	LSR	r7, r8, #24
4636	UBFX	r12, r10, #8, #8
4637	UBFX	lr, r9, #0, #8
4638	LDR	r4, [r0, r4, LSL #2]
4639	LDR	r7, [r0, r7, LSL #2]
4640	LDR	r12, [r0, r12, LSL #2]
4641	LDR	lr, [r0, lr, LSL #2]
4642	UBFX	r5, r8, #16, #8
4643	EOR	r4, r4, r7, ROR #24
4644	LSR	r7, r9, #24
4645	EOR	r4, r4, r12, ROR #8
4646	UBFX	r12, r11, #8, #8
4647	EOR	r4, r4, lr, ROR #16
4648	UBFX	lr, r10, #0, #8
4649	LDR	r5, [r0, r5, LSL #2]
4650	LDR	r7, [r0, r7, LSL #2]
4651	LDR	r12, [r0, r12, LSL #2]
4652	LDR	lr, [r0, lr, LSL #2]
4653	UBFX	r6, r9, #16, #8
4654	EOR	r5, r5, r7, ROR #24
4655	LSR	r7, r10, #24
4656	EOR	r5, r5, r12, ROR #8
4657	UBFX	r12, r8, #8, #8
4658	EOR	r5, r5, lr, ROR #16
4659	UBFX	lr, r11, #0, #8
4660	LDR	r6, [r0, r6, LSL #2]
4661	LDR	r7, [r0, r7, LSL #2]
4662	LDR	r12, [r0, r12, LSL #2]
4663	LDR	lr, [r0, lr, LSL #2]
4664	UBFX	r8, r8, #0, #8
4665	EOR	r6, r6, r7, ROR #24
4666	UBFX	r7, r10, #16, #8
4667	EOR	r6, r6, r12, ROR #8
4668	LSR	r12, r11, #24
4669	EOR	r6, r6, lr, ROR #16
4670	UBFX	lr, r9, #8, #8
4671	LDR	r8, [r0, r8, LSL #2]
4672	LDR	r12, [r0, r12, LSL #2]
4673	LDR	r7, [r0, r7, LSL #2]
4674	LDR	lr, [r0, lr, LSL #2]
4675	EOR	r12, r12, r8, ROR #24
4676	LDM	r3!, {r8, r9, r10, r11}
4677	EOR	r7, r7, lr, ROR #8
4678	EOR	r7, r7, r12, ROR #24
4679	/*   XOR in Key Schedule */
4680	EOR	r4, r4, r8
4681	EOR	r5, r5, r9
4682	EOR	r6, r6, r10
4683	EOR	r7, r7, r11
4684	SUBS	r1, r1, #0x1
4685#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4686	BNE	L_AES_CBC_decrypt_block_nr_256_even
4687#else
4688	BNE.W	L_AES_CBC_decrypt_block_nr_256_even
4689#endif
4690	UBFX	r8, r7, #16, #8
4691	LSR	r11, r4, #24
4692	UBFX	r12, r6, #8, #8
4693	UBFX	lr, r5, #0, #8
4694	LDR	r8, [r0, r8, LSL #2]
4695	LDR	r11, [r0, r11, LSL #2]
4696	LDR	r12, [r0, r12, LSL #2]
4697	LDR	lr, [r0, lr, LSL #2]
4698	UBFX	r9, r4, #16, #8
4699	EOR	r8, r8, r11, ROR #24
4700	LSR	r11, r5, #24
4701	EOR	r8, r8, r12, ROR #8
4702	UBFX	r12, r7, #8, #8
4703	EOR	r8, r8, lr, ROR #16
4704	UBFX	lr, r6, #0, #8
4705	LDR	r9, [r0, r9, LSL #2]
4706	LDR	r11, [r0, r11, LSL #2]
4707	LDR	r12, [r0, r12, LSL #2]
4708	LDR	lr, [r0, lr, LSL #2]
4709	UBFX	r10, r5, #16, #8
4710	EOR	r9, r9, r11, ROR #24
4711	LSR	r11, r6, #24
4712	EOR	r9, r9, r12, ROR #8
4713	UBFX	r12, r4, #8, #8
4714	EOR	r9, r9, lr, ROR #16
4715	UBFX	lr, r7, #0, #8
4716	LDR	r10, [r0, r10, LSL #2]
4717	LDR	r11, [r0, r11, LSL #2]
4718	LDR	r12, [r0, r12, LSL #2]
4719	LDR	lr, [r0, lr, LSL #2]
4720	UBFX	r4, r4, #0, #8
4721	EOR	r10, r10, r11, ROR #24
4722	UBFX	r11, r6, #16, #8
4723	EOR	r10, r10, r12, ROR #8
4724	LSR	r12, r7, #24
4725	EOR	r10, r10, lr, ROR #16
4726	UBFX	lr, r5, #8, #8
4727	LDR	r4, [r0, r4, LSL #2]
4728	LDR	r12, [r0, r12, LSL #2]
4729	LDR	r11, [r0, r11, LSL #2]
4730	LDR	lr, [r0, lr, LSL #2]
4731	EOR	r12, r12, r4, ROR #24
4732	LDM	r3!, {r4, r5, r6, r7}
4733	EOR	r11, r11, lr, ROR #8
4734	EOR	r11, r11, r12, ROR #24
4735	/*   XOR in Key Schedule */
4736	EOR	r8, r8, r4
4737	EOR	r9, r9, r5
4738	EOR	r10, r10, r6
4739	EOR	r11, r11, r7
4740	UBFX	r4, r9, #0, #8
4741	UBFX	r7, r10, #8, #8
4742	UBFX	r12, r11, #16, #8
4743	LSR	lr, r8, #24
4744	LDRB	r4, [r2, r4]
4745	LDRB	r7, [r2, r7]
4746	LDRB	r12, [r2, r12]
4747	LDRB	lr, [r2, lr]
4748	UBFX	r5, r10, #0, #8
4749	EOR	r4, r4, r7, LSL #8
4750	UBFX	r7, r11, #8, #8
4751	EOR	r4, r4, r12, LSL #16
4752	UBFX	r12, r8, #16, #8
4753	EOR	r4, r4, lr, LSL #24
4754	LSR	lr, r9, #24
4755	LDRB	r7, [r2, r7]
4756	LDRB	lr, [r2, lr]
4757	LDRB	r5, [r2, r5]
4758	LDRB	r12, [r2, r12]
4759	UBFX	r6, r11, #0, #8
4760	EOR	r5, r5, r7, LSL #8
4761	UBFX	r7, r8, #8, #8
4762	EOR	r5, r5, r12, LSL #16
4763	UBFX	r12, r9, #16, #8
4764	EOR	r5, r5, lr, LSL #24
4765	LSR	lr, r10, #24
4766	LDRB	r7, [r2, r7]
4767	LDRB	lr, [r2, lr]
4768	LDRB	r6, [r2, r6]
4769	LDRB	r12, [r2, r12]
4770	LSR	r11, r11, #24
4771	EOR	r6, r6, r7, LSL #8
4772	UBFX	r7, r8, #0, #8
4773	EOR	r6, r6, r12, LSL #16
4774	UBFX	r12, r9, #8, #8
4775	EOR	r6, r6, lr, LSL #24
4776	UBFX	lr, r10, #16, #8
4777	LDRB	r11, [r2, r11]
4778	LDRB	r12, [r2, r12]
4779	LDRB	r7, [r2, r7]
4780	LDRB	lr, [r2, lr]
4781	EOR	r12, r12, r11, LSL #16
4782	LDM	r3, {r8, r9, r10, r11}
4783	EOR	r7, r7, r12, LSL #8
4784	EOR	r7, r7, lr, LSL #16
4785	/*   XOR in Key Schedule */
4786	EOR	r4, r4, r8
4787	EOR	r5, r5, r9
4788	EOR	r6, r6, r10
4789	EOR	r7, r7, r11
4790#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
4791	LDR	lr, [sp, #16]
4792	REV	r4, r4
4793	REV	r5, r5
4794	REV	r6, r6
4795	REV	r7, r7
4796	LDRD	r8, r9, [lr, #16]
4797	LDRD	r10, r11, [lr, #24]
4798	POP	{r1, r12, lr}
4799	LDR	r3, [sp]
4800	EOR	r4, r4, r8
4801	EOR	r5, r5, r9
4802	EOR	r6, r6, r10
4803	EOR	r7, r7, r11
4804	STR	r4, [r1]
4805	STR	r5, [r1, #4]
4806	STR	r6, [r1, #8]
4807	STR	r7, [r1, #12]
4808	SUBS	r12, r12, #0x10
4809	ADD	lr, lr, #0x10
4810	ADD	r1, r1, #0x10
4811#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4812	BNE	L_AES_CBC_decrypt_loop_block_256
4813#else
4814	BNE.W	L_AES_CBC_decrypt_loop_block_256
4815#endif
4816#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4817	B	L_AES_CBC_decrypt_end
4818#else
4819	B.W	L_AES_CBC_decrypt_end
4820#endif
4821L_AES_CBC_decrypt_loop_block_192:
4822	PUSH	{r1, r12, lr}
4823	LDR	r4, [lr]
4824	LDR	r5, [lr, #4]
4825	LDR	r6, [lr, #8]
4826	LDR	r7, [lr, #12]
4827	LDR	lr, [sp, #16]
4828	STRD	r4, r5, [lr, #16]
4829	STRD	r6, r7, [lr, #24]
4830	LDM	r3!, {r8, r9, r10, r11}
4831	REV	r4, r4
4832	REV	r5, r5
4833	REV	r6, r6
4834	REV	r7, r7
4835	/* Round: 0 - XOR in key schedule */
4836	EOR	r4, r4, r8
4837	EOR	r5, r5, r9
4838	EOR	r6, r6, r10
4839	EOR	r7, r7, r11
4840	MOV	r1, #0x5
4841#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
4842	BL	AES_decrypt_block
4843#else
4844L_AES_CBC_decrypt_block_nr_192_odd:
4845	UBFX	r8, r7, #16, #8
4846	LSR	r11, r4, #24
4847	UBFX	r12, r6, #8, #8
4848	UBFX	lr, r5, #0, #8
4849	LDR	r8, [r0, r8, LSL #2]
4850	LDR	r11, [r0, r11, LSL #2]
4851	LDR	r12, [r0, r12, LSL #2]
4852	LDR	lr, [r0, lr, LSL #2]
4853	UBFX	r9, r4, #16, #8
4854	EOR	r8, r8, r11, ROR #24
4855	LSR	r11, r5, #24
4856	EOR	r8, r8, r12, ROR #8
4857	UBFX	r12, r7, #8, #8
4858	EOR	r8, r8, lr, ROR #16
4859	UBFX	lr, r6, #0, #8
4860	LDR	r9, [r0, r9, LSL #2]
4861	LDR	r11, [r0, r11, LSL #2]
4862	LDR	r12, [r0, r12, LSL #2]
4863	LDR	lr, [r0, lr, LSL #2]
4864	UBFX	r10, r5, #16, #8
4865	EOR	r9, r9, r11, ROR #24
4866	LSR	r11, r6, #24
4867	EOR	r9, r9, r12, ROR #8
4868	UBFX	r12, r4, #8, #8
4869	EOR	r9, r9, lr, ROR #16
4870	UBFX	lr, r7, #0, #8
4871	LDR	r10, [r0, r10, LSL #2]
4872	LDR	r11, [r0, r11, LSL #2]
4873	LDR	r12, [r0, r12, LSL #2]
4874	LDR	lr, [r0, lr, LSL #2]
4875	UBFX	r4, r4, #0, #8
4876	EOR	r10, r10, r11, ROR #24
4877	UBFX	r11, r6, #16, #8
4878	EOR	r10, r10, r12, ROR #8
4879	LSR	r12, r7, #24
4880	EOR	r10, r10, lr, ROR #16
4881	UBFX	lr, r5, #8, #8
4882	LDR	r4, [r0, r4, LSL #2]
4883	LDR	r12, [r0, r12, LSL #2]
4884	LDR	r11, [r0, r11, LSL #2]
4885	LDR	lr, [r0, lr, LSL #2]
4886	EOR	r12, r12, r4, ROR #24
4887	LDM	r3!, {r4, r5, r6, r7}
4888	EOR	r11, r11, lr, ROR #8
4889	EOR	r11, r11, r12, ROR #24
4890	/*   XOR in Key Schedule */
4891	EOR	r8, r8, r4
4892	EOR	r9, r9, r5
4893	EOR	r10, r10, r6
4894	EOR	r11, r11, r7
4895	UBFX	r4, r11, #16, #8
4896	LSR	r7, r8, #24
4897	UBFX	r12, r10, #8, #8
4898	UBFX	lr, r9, #0, #8
4899	LDR	r4, [r0, r4, LSL #2]
4900	LDR	r7, [r0, r7, LSL #2]
4901	LDR	r12, [r0, r12, LSL #2]
4902	LDR	lr, [r0, lr, LSL #2]
4903	UBFX	r5, r8, #16, #8
4904	EOR	r4, r4, r7, ROR #24
4905	LSR	r7, r9, #24
4906	EOR	r4, r4, r12, ROR #8
4907	UBFX	r12, r11, #8, #8
4908	EOR	r4, r4, lr, ROR #16
4909	UBFX	lr, r10, #0, #8
4910	LDR	r5, [r0, r5, LSL #2]
4911	LDR	r7, [r0, r7, LSL #2]
4912	LDR	r12, [r0, r12, LSL #2]
4913	LDR	lr, [r0, lr, LSL #2]
4914	UBFX	r6, r9, #16, #8
4915	EOR	r5, r5, r7, ROR #24
4916	LSR	r7, r10, #24
4917	EOR	r5, r5, r12, ROR #8
4918	UBFX	r12, r8, #8, #8
4919	EOR	r5, r5, lr, ROR #16
4920	UBFX	lr, r11, #0, #8
4921	LDR	r6, [r0, r6, LSL #2]
4922	LDR	r7, [r0, r7, LSL #2]
4923	LDR	r12, [r0, r12, LSL #2]
4924	LDR	lr, [r0, lr, LSL #2]
4925	UBFX	r8, r8, #0, #8
4926	EOR	r6, r6, r7, ROR #24
4927	UBFX	r7, r10, #16, #8
4928	EOR	r6, r6, r12, ROR #8
4929	LSR	r12, r11, #24
4930	EOR	r6, r6, lr, ROR #16
4931	UBFX	lr, r9, #8, #8
4932	LDR	r8, [r0, r8, LSL #2]
4933	LDR	r12, [r0, r12, LSL #2]
4934	LDR	r7, [r0, r7, LSL #2]
4935	LDR	lr, [r0, lr, LSL #2]
4936	EOR	r12, r12, r8, ROR #24
4937	LDM	r3!, {r8, r9, r10, r11}
4938	EOR	r7, r7, lr, ROR #8
4939	EOR	r7, r7, r12, ROR #24
4940	/*   XOR in Key Schedule */
4941	EOR	r4, r4, r8
4942	EOR	r5, r5, r9
4943	EOR	r6, r6, r10
4944	EOR	r7, r7, r11
4945	SUBS	r1, r1, #0x1
4946#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
4947	BNE	L_AES_CBC_decrypt_block_nr_192_odd
4948#else
4949	BNE.W	L_AES_CBC_decrypt_block_nr_192_odd
4950#endif
4951	UBFX	r8, r7, #16, #8
4952	LSR	r11, r4, #24
4953	UBFX	r12, r6, #8, #8
4954	UBFX	lr, r5, #0, #8
4955	LDR	r8, [r0, r8, LSL #2]
4956	LDR	r11, [r0, r11, LSL #2]
4957	LDR	r12, [r0, r12, LSL #2]
4958	LDR	lr, [r0, lr, LSL #2]
4959	UBFX	r9, r4, #16, #8
4960	EOR	r8, r8, r11, ROR #24
4961	LSR	r11, r5, #24
4962	EOR	r8, r8, r12, ROR #8
4963	UBFX	r12, r7, #8, #8
4964	EOR	r8, r8, lr, ROR #16
4965	UBFX	lr, r6, #0, #8
4966	LDR	r9, [r0, r9, LSL #2]
4967	LDR	r11, [r0, r11, LSL #2]
4968	LDR	r12, [r0, r12, LSL #2]
4969	LDR	lr, [r0, lr, LSL #2]
4970	UBFX	r10, r5, #16, #8
4971	EOR	r9, r9, r11, ROR #24
4972	LSR	r11, r6, #24
4973	EOR	r9, r9, r12, ROR #8
4974	UBFX	r12, r4, #8, #8
4975	EOR	r9, r9, lr, ROR #16
4976	UBFX	lr, r7, #0, #8
4977	LDR	r10, [r0, r10, LSL #2]
4978	LDR	r11, [r0, r11, LSL #2]
4979	LDR	r12, [r0, r12, LSL #2]
4980	LDR	lr, [r0, lr, LSL #2]
4981	UBFX	r4, r4, #0, #8
4982	EOR	r10, r10, r11, ROR #24
4983	UBFX	r11, r6, #16, #8
4984	EOR	r10, r10, r12, ROR #8
4985	LSR	r12, r7, #24
4986	EOR	r10, r10, lr, ROR #16
4987	UBFX	lr, r5, #8, #8
4988	LDR	r4, [r0, r4, LSL #2]
4989	LDR	r12, [r0, r12, LSL #2]
4990	LDR	r11, [r0, r11, LSL #2]
4991	LDR	lr, [r0, lr, LSL #2]
4992	EOR	r12, r12, r4, ROR #24
4993	LDM	r3!, {r4, r5, r6, r7}
4994	EOR	r11, r11, lr, ROR #8
4995	EOR	r11, r11, r12, ROR #24
4996	/*   XOR in Key Schedule */
4997	EOR	r8, r8, r4
4998	EOR	r9, r9, r5
4999	EOR	r10, r10, r6
5000	EOR	r11, r11, r7
5001	UBFX	r4, r9, #0, #8
5002	UBFX	r7, r10, #8, #8
5003	UBFX	r12, r11, #16, #8
5004	LSR	lr, r8, #24
5005	LDRB	r4, [r2, r4]
5006	LDRB	r7, [r2, r7]
5007	LDRB	r12, [r2, r12]
5008	LDRB	lr, [r2, lr]
5009	UBFX	r5, r10, #0, #8
5010	EOR	r4, r4, r7, LSL #8
5011	UBFX	r7, r11, #8, #8
5012	EOR	r4, r4, r12, LSL #16
5013	UBFX	r12, r8, #16, #8
5014	EOR	r4, r4, lr, LSL #24
5015	LSR	lr, r9, #24
5016	LDRB	r7, [r2, r7]
5017	LDRB	lr, [r2, lr]
5018	LDRB	r5, [r2, r5]
5019	LDRB	r12, [r2, r12]
5020	UBFX	r6, r11, #0, #8
5021	EOR	r5, r5, r7, LSL #8
5022	UBFX	r7, r8, #8, #8
5023	EOR	r5, r5, r12, LSL #16
5024	UBFX	r12, r9, #16, #8
5025	EOR	r5, r5, lr, LSL #24
5026	LSR	lr, r10, #24
5027	LDRB	r7, [r2, r7]
5028	LDRB	lr, [r2, lr]
5029	LDRB	r6, [r2, r6]
5030	LDRB	r12, [r2, r12]
5031	LSR	r11, r11, #24
5032	EOR	r6, r6, r7, LSL #8
5033	UBFX	r7, r8, #0, #8
5034	EOR	r6, r6, r12, LSL #16
5035	UBFX	r12, r9, #8, #8
5036	EOR	r6, r6, lr, LSL #24
5037	UBFX	lr, r10, #16, #8
5038	LDRB	r11, [r2, r11]
5039	LDRB	r12, [r2, r12]
5040	LDRB	r7, [r2, r7]
5041	LDRB	lr, [r2, lr]
5042	EOR	r12, r12, r11, LSL #16
5043	LDM	r3, {r8, r9, r10, r11}
5044	EOR	r7, r7, r12, LSL #8
5045	EOR	r7, r7, lr, LSL #16
5046	/*   XOR in Key Schedule */
5047	EOR	r4, r4, r8
5048	EOR	r5, r5, r9
5049	EOR	r6, r6, r10
5050	EOR	r7, r7, r11
5051#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
5052	LDR	lr, [sp, #16]
5053	REV	r4, r4
5054	REV	r5, r5
5055	REV	r6, r6
5056	REV	r7, r7
5057	LDM	lr, {r8, r9, r10, r11}
5058	POP	{r1, r12, lr}
5059	LDR	r3, [sp]
5060	EOR	r4, r4, r8
5061	EOR	r5, r5, r9
5062	EOR	r6, r6, r10
5063	EOR	r7, r7, r11
5064	STR	r4, [r1]
5065	STR	r5, [r1, #4]
5066	STR	r6, [r1, #8]
5067	STR	r7, [r1, #12]
5068	SUBS	r12, r12, #0x10
5069	ADD	lr, lr, #0x10
5070	ADD	r1, r1, #0x10
5071#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5072	BEQ	L_AES_CBC_decrypt_end_odd
5073#else
5074	BEQ.W	L_AES_CBC_decrypt_end_odd
5075#endif
5076	PUSH	{r1, r12, lr}
5077	LDR	r4, [lr]
5078	LDR	r5, [lr, #4]
5079	LDR	r6, [lr, #8]
5080	LDR	r7, [lr, #12]
5081	LDR	lr, [sp, #16]
5082	STRD	r4, r5, [lr]
5083	STRD	r6, r7, [lr, #8]
5084	LDM	r3!, {r8, r9, r10, r11}
5085	REV	r4, r4
5086	REV	r5, r5
5087	REV	r6, r6
5088	REV	r7, r7
5089	/* Round: 0 - XOR in key schedule */
5090	EOR	r4, r4, r8
5091	EOR	r5, r5, r9
5092	EOR	r6, r6, r10
5093	EOR	r7, r7, r11
5094	MOV	r1, #0x5
5095#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
5096	BL	AES_decrypt_block
5097#else
5098L_AES_CBC_decrypt_block_nr_192_even:
5099	UBFX	r8, r7, #16, #8
5100	LSR	r11, r4, #24
5101	UBFX	r12, r6, #8, #8
5102	UBFX	lr, r5, #0, #8
5103	LDR	r8, [r0, r8, LSL #2]
5104	LDR	r11, [r0, r11, LSL #2]
5105	LDR	r12, [r0, r12, LSL #2]
5106	LDR	lr, [r0, lr, LSL #2]
5107	UBFX	r9, r4, #16, #8
5108	EOR	r8, r8, r11, ROR #24
5109	LSR	r11, r5, #24
5110	EOR	r8, r8, r12, ROR #8
5111	UBFX	r12, r7, #8, #8
5112	EOR	r8, r8, lr, ROR #16
5113	UBFX	lr, r6, #0, #8
5114	LDR	r9, [r0, r9, LSL #2]
5115	LDR	r11, [r0, r11, LSL #2]
5116	LDR	r12, [r0, r12, LSL #2]
5117	LDR	lr, [r0, lr, LSL #2]
5118	UBFX	r10, r5, #16, #8
5119	EOR	r9, r9, r11, ROR #24
5120	LSR	r11, r6, #24
5121	EOR	r9, r9, r12, ROR #8
5122	UBFX	r12, r4, #8, #8
5123	EOR	r9, r9, lr, ROR #16
5124	UBFX	lr, r7, #0, #8
5125	LDR	r10, [r0, r10, LSL #2]
5126	LDR	r11, [r0, r11, LSL #2]
5127	LDR	r12, [r0, r12, LSL #2]
5128	LDR	lr, [r0, lr, LSL #2]
5129	UBFX	r4, r4, #0, #8
5130	EOR	r10, r10, r11, ROR #24
5131	UBFX	r11, r6, #16, #8
5132	EOR	r10, r10, r12, ROR #8
5133	LSR	r12, r7, #24
5134	EOR	r10, r10, lr, ROR #16
5135	UBFX	lr, r5, #8, #8
5136	LDR	r4, [r0, r4, LSL #2]
5137	LDR	r12, [r0, r12, LSL #2]
5138	LDR	r11, [r0, r11, LSL #2]
5139	LDR	lr, [r0, lr, LSL #2]
5140	EOR	r12, r12, r4, ROR #24
5141	LDM	r3!, {r4, r5, r6, r7}
5142	EOR	r11, r11, lr, ROR #8
5143	EOR	r11, r11, r12, ROR #24
5144	/*   XOR in Key Schedule */
5145	EOR	r8, r8, r4
5146	EOR	r9, r9, r5
5147	EOR	r10, r10, r6
5148	EOR	r11, r11, r7
5149	UBFX	r4, r11, #16, #8
5150	LSR	r7, r8, #24
5151	UBFX	r12, r10, #8, #8
5152	UBFX	lr, r9, #0, #8
5153	LDR	r4, [r0, r4, LSL #2]
5154	LDR	r7, [r0, r7, LSL #2]
5155	LDR	r12, [r0, r12, LSL #2]
5156	LDR	lr, [r0, lr, LSL #2]
5157	UBFX	r5, r8, #16, #8
5158	EOR	r4, r4, r7, ROR #24
5159	LSR	r7, r9, #24
5160	EOR	r4, r4, r12, ROR #8
5161	UBFX	r12, r11, #8, #8
5162	EOR	r4, r4, lr, ROR #16
5163	UBFX	lr, r10, #0, #8
5164	LDR	r5, [r0, r5, LSL #2]
5165	LDR	r7, [r0, r7, LSL #2]
5166	LDR	r12, [r0, r12, LSL #2]
5167	LDR	lr, [r0, lr, LSL #2]
5168	UBFX	r6, r9, #16, #8
5169	EOR	r5, r5, r7, ROR #24
5170	LSR	r7, r10, #24
5171	EOR	r5, r5, r12, ROR #8
5172	UBFX	r12, r8, #8, #8
5173	EOR	r5, r5, lr, ROR #16
5174	UBFX	lr, r11, #0, #8
5175	LDR	r6, [r0, r6, LSL #2]
5176	LDR	r7, [r0, r7, LSL #2]
5177	LDR	r12, [r0, r12, LSL #2]
5178	LDR	lr, [r0, lr, LSL #2]
5179	UBFX	r8, r8, #0, #8
5180	EOR	r6, r6, r7, ROR #24
5181	UBFX	r7, r10, #16, #8
5182	EOR	r6, r6, r12, ROR #8
5183	LSR	r12, r11, #24
5184	EOR	r6, r6, lr, ROR #16
5185	UBFX	lr, r9, #8, #8
5186	LDR	r8, [r0, r8, LSL #2]
5187	LDR	r12, [r0, r12, LSL #2]
5188	LDR	r7, [r0, r7, LSL #2]
5189	LDR	lr, [r0, lr, LSL #2]
5190	EOR	r12, r12, r8, ROR #24
5191	LDM	r3!, {r8, r9, r10, r11}
5192	EOR	r7, r7, lr, ROR #8
5193	EOR	r7, r7, r12, ROR #24
5194	/*   XOR in Key Schedule */
5195	EOR	r4, r4, r8
5196	EOR	r5, r5, r9
5197	EOR	r6, r6, r10
5198	EOR	r7, r7, r11
5199	SUBS	r1, r1, #0x1
5200#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5201	BNE	L_AES_CBC_decrypt_block_nr_192_even
5202#else
5203	BNE.W	L_AES_CBC_decrypt_block_nr_192_even
5204#endif
5205	UBFX	r8, r7, #16, #8
5206	LSR	r11, r4, #24
5207	UBFX	r12, r6, #8, #8
5208	UBFX	lr, r5, #0, #8
5209	LDR	r8, [r0, r8, LSL #2]
5210	LDR	r11, [r0, r11, LSL #2]
5211	LDR	r12, [r0, r12, LSL #2]
5212	LDR	lr, [r0, lr, LSL #2]
5213	UBFX	r9, r4, #16, #8
5214	EOR	r8, r8, r11, ROR #24
5215	LSR	r11, r5, #24
5216	EOR	r8, r8, r12, ROR #8
5217	UBFX	r12, r7, #8, #8
5218	EOR	r8, r8, lr, ROR #16
5219	UBFX	lr, r6, #0, #8
5220	LDR	r9, [r0, r9, LSL #2]
5221	LDR	r11, [r0, r11, LSL #2]
5222	LDR	r12, [r0, r12, LSL #2]
5223	LDR	lr, [r0, lr, LSL #2]
5224	UBFX	r10, r5, #16, #8
5225	EOR	r9, r9, r11, ROR #24
5226	LSR	r11, r6, #24
5227	EOR	r9, r9, r12, ROR #8
5228	UBFX	r12, r4, #8, #8
5229	EOR	r9, r9, lr, ROR #16
5230	UBFX	lr, r7, #0, #8
5231	LDR	r10, [r0, r10, LSL #2]
5232	LDR	r11, [r0, r11, LSL #2]
5233	LDR	r12, [r0, r12, LSL #2]
5234	LDR	lr, [r0, lr, LSL #2]
5235	UBFX	r4, r4, #0, #8
5236	EOR	r10, r10, r11, ROR #24
5237	UBFX	r11, r6, #16, #8
5238	EOR	r10, r10, r12, ROR #8
5239	LSR	r12, r7, #24
5240	EOR	r10, r10, lr, ROR #16
5241	UBFX	lr, r5, #8, #8
5242	LDR	r4, [r0, r4, LSL #2]
5243	LDR	r12, [r0, r12, LSL #2]
5244	LDR	r11, [r0, r11, LSL #2]
5245	LDR	lr, [r0, lr, LSL #2]
5246	EOR	r12, r12, r4, ROR #24
5247	LDM	r3!, {r4, r5, r6, r7}
5248	EOR	r11, r11, lr, ROR #8
5249	EOR	r11, r11, r12, ROR #24
5250	/*   XOR in Key Schedule */
5251	EOR	r8, r8, r4
5252	EOR	r9, r9, r5
5253	EOR	r10, r10, r6
5254	EOR	r11, r11, r7
5255	UBFX	r4, r9, #0, #8
5256	UBFX	r7, r10, #8, #8
5257	UBFX	r12, r11, #16, #8
5258	LSR	lr, r8, #24
5259	LDRB	r4, [r2, r4]
5260	LDRB	r7, [r2, r7]
5261	LDRB	r12, [r2, r12]
5262	LDRB	lr, [r2, lr]
5263	UBFX	r5, r10, #0, #8
5264	EOR	r4, r4, r7, LSL #8
5265	UBFX	r7, r11, #8, #8
5266	EOR	r4, r4, r12, LSL #16
5267	UBFX	r12, r8, #16, #8
5268	EOR	r4, r4, lr, LSL #24
5269	LSR	lr, r9, #24
5270	LDRB	r7, [r2, r7]
5271	LDRB	lr, [r2, lr]
5272	LDRB	r5, [r2, r5]
5273	LDRB	r12, [r2, r12]
5274	UBFX	r6, r11, #0, #8
5275	EOR	r5, r5, r7, LSL #8
5276	UBFX	r7, r8, #8, #8
5277	EOR	r5, r5, r12, LSL #16
5278	UBFX	r12, r9, #16, #8
5279	EOR	r5, r5, lr, LSL #24
5280	LSR	lr, r10, #24
5281	LDRB	r7, [r2, r7]
5282	LDRB	lr, [r2, lr]
5283	LDRB	r6, [r2, r6]
5284	LDRB	r12, [r2, r12]
5285	LSR	r11, r11, #24
5286	EOR	r6, r6, r7, LSL #8
5287	UBFX	r7, r8, #0, #8
5288	EOR	r6, r6, r12, LSL #16
5289	UBFX	r12, r9, #8, #8
5290	EOR	r6, r6, lr, LSL #24
5291	UBFX	lr, r10, #16, #8
5292	LDRB	r11, [r2, r11]
5293	LDRB	r12, [r2, r12]
5294	LDRB	r7, [r2, r7]
5295	LDRB	lr, [r2, lr]
5296	EOR	r12, r12, r11, LSL #16
5297	LDM	r3, {r8, r9, r10, r11}
5298	EOR	r7, r7, r12, LSL #8
5299	EOR	r7, r7, lr, LSL #16
5300	/*   XOR in Key Schedule */
5301	EOR	r4, r4, r8
5302	EOR	r5, r5, r9
5303	EOR	r6, r6, r10
5304	EOR	r7, r7, r11
5305#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
5306	LDR	lr, [sp, #16]
5307	REV	r4, r4
5308	REV	r5, r5
5309	REV	r6, r6
5310	REV	r7, r7
5311	LDRD	r8, r9, [lr, #16]
5312	LDRD	r10, r11, [lr, #24]
5313	POP	{r1, r12, lr}
5314	LDR	r3, [sp]
5315	EOR	r4, r4, r8
5316	EOR	r5, r5, r9
5317	EOR	r6, r6, r10
5318	EOR	r7, r7, r11
5319	STR	r4, [r1]
5320	STR	r5, [r1, #4]
5321	STR	r6, [r1, #8]
5322	STR	r7, [r1, #12]
5323	SUBS	r12, r12, #0x10
5324	ADD	lr, lr, #0x10
5325	ADD	r1, r1, #0x10
5326#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5327	BNE	L_AES_CBC_decrypt_loop_block_192
5328#else
5329	BNE.W	L_AES_CBC_decrypt_loop_block_192
5330#endif
5331#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5332	B	L_AES_CBC_decrypt_end
5333#else
5334	B.W	L_AES_CBC_decrypt_end
5335#endif
5336L_AES_CBC_decrypt_loop_block_128:
5337	PUSH	{r1, r12, lr}
5338	LDR	r4, [lr]
5339	LDR	r5, [lr, #4]
5340	LDR	r6, [lr, #8]
5341	LDR	r7, [lr, #12]
5342	LDR	lr, [sp, #16]
5343	STRD	r4, r5, [lr, #16]
5344	STRD	r6, r7, [lr, #24]
5345	LDM	r3!, {r8, r9, r10, r11}
5346	REV	r4, r4
5347	REV	r5, r5
5348	REV	r6, r6
5349	REV	r7, r7
5350	/* Round: 0 - XOR in key schedule */
5351	EOR	r4, r4, r8
5352	EOR	r5, r5, r9
5353	EOR	r6, r6, r10
5354	EOR	r7, r7, r11
5355	MOV	r1, #0x4
5356#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
5357	BL	AES_decrypt_block
5358#else
5359L_AES_CBC_decrypt_block_nr_128_odd:
5360	UBFX	r8, r7, #16, #8
5361	LSR	r11, r4, #24
5362	UBFX	r12, r6, #8, #8
5363	UBFX	lr, r5, #0, #8
5364	LDR	r8, [r0, r8, LSL #2]
5365	LDR	r11, [r0, r11, LSL #2]
5366	LDR	r12, [r0, r12, LSL #2]
5367	LDR	lr, [r0, lr, LSL #2]
5368	UBFX	r9, r4, #16, #8
5369	EOR	r8, r8, r11, ROR #24
5370	LSR	r11, r5, #24
5371	EOR	r8, r8, r12, ROR #8
5372	UBFX	r12, r7, #8, #8
5373	EOR	r8, r8, lr, ROR #16
5374	UBFX	lr, r6, #0, #8
5375	LDR	r9, [r0, r9, LSL #2]
5376	LDR	r11, [r0, r11, LSL #2]
5377	LDR	r12, [r0, r12, LSL #2]
5378	LDR	lr, [r0, lr, LSL #2]
5379	UBFX	r10, r5, #16, #8
5380	EOR	r9, r9, r11, ROR #24
5381	LSR	r11, r6, #24
5382	EOR	r9, r9, r12, ROR #8
5383	UBFX	r12, r4, #8, #8
5384	EOR	r9, r9, lr, ROR #16
5385	UBFX	lr, r7, #0, #8
5386	LDR	r10, [r0, r10, LSL #2]
5387	LDR	r11, [r0, r11, LSL #2]
5388	LDR	r12, [r0, r12, LSL #2]
5389	LDR	lr, [r0, lr, LSL #2]
5390	UBFX	r4, r4, #0, #8
5391	EOR	r10, r10, r11, ROR #24
5392	UBFX	r11, r6, #16, #8
5393	EOR	r10, r10, r12, ROR #8
5394	LSR	r12, r7, #24
5395	EOR	r10, r10, lr, ROR #16
5396	UBFX	lr, r5, #8, #8
5397	LDR	r4, [r0, r4, LSL #2]
5398	LDR	r12, [r0, r12, LSL #2]
5399	LDR	r11, [r0, r11, LSL #2]
5400	LDR	lr, [r0, lr, LSL #2]
5401	EOR	r12, r12, r4, ROR #24
5402	LDM	r3!, {r4, r5, r6, r7}
5403	EOR	r11, r11, lr, ROR #8
5404	EOR	r11, r11, r12, ROR #24
5405	/*   XOR in Key Schedule */
5406	EOR	r8, r8, r4
5407	EOR	r9, r9, r5
5408	EOR	r10, r10, r6
5409	EOR	r11, r11, r7
5410	UBFX	r4, r11, #16, #8
5411	LSR	r7, r8, #24
5412	UBFX	r12, r10, #8, #8
5413	UBFX	lr, r9, #0, #8
5414	LDR	r4, [r0, r4, LSL #2]
5415	LDR	r7, [r0, r7, LSL #2]
5416	LDR	r12, [r0, r12, LSL #2]
5417	LDR	lr, [r0, lr, LSL #2]
5418	UBFX	r5, r8, #16, #8
5419	EOR	r4, r4, r7, ROR #24
5420	LSR	r7, r9, #24
5421	EOR	r4, r4, r12, ROR #8
5422	UBFX	r12, r11, #8, #8
5423	EOR	r4, r4, lr, ROR #16
5424	UBFX	lr, r10, #0, #8
5425	LDR	r5, [r0, r5, LSL #2]
5426	LDR	r7, [r0, r7, LSL #2]
5427	LDR	r12, [r0, r12, LSL #2]
5428	LDR	lr, [r0, lr, LSL #2]
5429	UBFX	r6, r9, #16, #8
5430	EOR	r5, r5, r7, ROR #24
5431	LSR	r7, r10, #24
5432	EOR	r5, r5, r12, ROR #8
5433	UBFX	r12, r8, #8, #8
5434	EOR	r5, r5, lr, ROR #16
5435	UBFX	lr, r11, #0, #8
5436	LDR	r6, [r0, r6, LSL #2]
5437	LDR	r7, [r0, r7, LSL #2]
5438	LDR	r12, [r0, r12, LSL #2]
5439	LDR	lr, [r0, lr, LSL #2]
5440	UBFX	r8, r8, #0, #8
5441	EOR	r6, r6, r7, ROR #24
5442	UBFX	r7, r10, #16, #8
5443	EOR	r6, r6, r12, ROR #8
5444	LSR	r12, r11, #24
5445	EOR	r6, r6, lr, ROR #16
5446	UBFX	lr, r9, #8, #8
5447	LDR	r8, [r0, r8, LSL #2]
5448	LDR	r12, [r0, r12, LSL #2]
5449	LDR	r7, [r0, r7, LSL #2]
5450	LDR	lr, [r0, lr, LSL #2]
5451	EOR	r12, r12, r8, ROR #24
5452	LDM	r3!, {r8, r9, r10, r11}
5453	EOR	r7, r7, lr, ROR #8
5454	EOR	r7, r7, r12, ROR #24
5455	/*   XOR in Key Schedule */
5456	EOR	r4, r4, r8
5457	EOR	r5, r5, r9
5458	EOR	r6, r6, r10
5459	EOR	r7, r7, r11
5460	SUBS	r1, r1, #0x1
5461#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5462	BNE	L_AES_CBC_decrypt_block_nr_128_odd
5463#else
5464	BNE.W	L_AES_CBC_decrypt_block_nr_128_odd
5465#endif
5466	UBFX	r8, r7, #16, #8
5467	LSR	r11, r4, #24
5468	UBFX	r12, r6, #8, #8
5469	UBFX	lr, r5, #0, #8
5470	LDR	r8, [r0, r8, LSL #2]
5471	LDR	r11, [r0, r11, LSL #2]
5472	LDR	r12, [r0, r12, LSL #2]
5473	LDR	lr, [r0, lr, LSL #2]
5474	UBFX	r9, r4, #16, #8
5475	EOR	r8, r8, r11, ROR #24
5476	LSR	r11, r5, #24
5477	EOR	r8, r8, r12, ROR #8
5478	UBFX	r12, r7, #8, #8
5479	EOR	r8, r8, lr, ROR #16
5480	UBFX	lr, r6, #0, #8
5481	LDR	r9, [r0, r9, LSL #2]
5482	LDR	r11, [r0, r11, LSL #2]
5483	LDR	r12, [r0, r12, LSL #2]
5484	LDR	lr, [r0, lr, LSL #2]
5485	UBFX	r10, r5, #16, #8
5486	EOR	r9, r9, r11, ROR #24
5487	LSR	r11, r6, #24
5488	EOR	r9, r9, r12, ROR #8
5489	UBFX	r12, r4, #8, #8
5490	EOR	r9, r9, lr, ROR #16
5491	UBFX	lr, r7, #0, #8
5492	LDR	r10, [r0, r10, LSL #2]
5493	LDR	r11, [r0, r11, LSL #2]
5494	LDR	r12, [r0, r12, LSL #2]
5495	LDR	lr, [r0, lr, LSL #2]
5496	UBFX	r4, r4, #0, #8
5497	EOR	r10, r10, r11, ROR #24
5498	UBFX	r11, r6, #16, #8
5499	EOR	r10, r10, r12, ROR #8
5500	LSR	r12, r7, #24
5501	EOR	r10, r10, lr, ROR #16
5502	UBFX	lr, r5, #8, #8
5503	LDR	r4, [r0, r4, LSL #2]
5504	LDR	r12, [r0, r12, LSL #2]
5505	LDR	r11, [r0, r11, LSL #2]
5506	LDR	lr, [r0, lr, LSL #2]
5507	EOR	r12, r12, r4, ROR #24
5508	LDM	r3!, {r4, r5, r6, r7}
5509	EOR	r11, r11, lr, ROR #8
5510	EOR	r11, r11, r12, ROR #24
5511	/*   XOR in Key Schedule */
5512	EOR	r8, r8, r4
5513	EOR	r9, r9, r5
5514	EOR	r10, r10, r6
5515	EOR	r11, r11, r7
5516	UBFX	r4, r9, #0, #8
5517	UBFX	r7, r10, #8, #8
5518	UBFX	r12, r11, #16, #8
5519	LSR	lr, r8, #24
5520	LDRB	r4, [r2, r4]
5521	LDRB	r7, [r2, r7]
5522	LDRB	r12, [r2, r12]
5523	LDRB	lr, [r2, lr]
5524	UBFX	r5, r10, #0, #8
5525	EOR	r4, r4, r7, LSL #8
5526	UBFX	r7, r11, #8, #8
5527	EOR	r4, r4, r12, LSL #16
5528	UBFX	r12, r8, #16, #8
5529	EOR	r4, r4, lr, LSL #24
5530	LSR	lr, r9, #24
5531	LDRB	r7, [r2, r7]
5532	LDRB	lr, [r2, lr]
5533	LDRB	r5, [r2, r5]
5534	LDRB	r12, [r2, r12]
5535	UBFX	r6, r11, #0, #8
5536	EOR	r5, r5, r7, LSL #8
5537	UBFX	r7, r8, #8, #8
5538	EOR	r5, r5, r12, LSL #16
5539	UBFX	r12, r9, #16, #8
5540	EOR	r5, r5, lr, LSL #24
5541	LSR	lr, r10, #24
5542	LDRB	r7, [r2, r7]
5543	LDRB	lr, [r2, lr]
5544	LDRB	r6, [r2, r6]
5545	LDRB	r12, [r2, r12]
5546	LSR	r11, r11, #24
5547	EOR	r6, r6, r7, LSL #8
5548	UBFX	r7, r8, #0, #8
5549	EOR	r6, r6, r12, LSL #16
5550	UBFX	r12, r9, #8, #8
5551	EOR	r6, r6, lr, LSL #24
5552	UBFX	lr, r10, #16, #8
5553	LDRB	r11, [r2, r11]
5554	LDRB	r12, [r2, r12]
5555	LDRB	r7, [r2, r7]
5556	LDRB	lr, [r2, lr]
5557	EOR	r12, r12, r11, LSL #16
5558	LDM	r3, {r8, r9, r10, r11}
5559	EOR	r7, r7, r12, LSL #8
5560	EOR	r7, r7, lr, LSL #16
5561	/*   XOR in Key Schedule */
5562	EOR	r4, r4, r8
5563	EOR	r5, r5, r9
5564	EOR	r6, r6, r10
5565	EOR	r7, r7, r11
5566#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
5567	LDR	lr, [sp, #16]
5568	REV	r4, r4
5569	REV	r5, r5
5570	REV	r6, r6
5571	REV	r7, r7
5572	LDM	lr, {r8, r9, r10, r11}
5573	POP	{r1, r12, lr}
5574	LDR	r3, [sp]
5575	EOR	r4, r4, r8
5576	EOR	r5, r5, r9
5577	EOR	r6, r6, r10
5578	EOR	r7, r7, r11
5579	STR	r4, [r1]
5580	STR	r5, [r1, #4]
5581	STR	r6, [r1, #8]
5582	STR	r7, [r1, #12]
5583	SUBS	r12, r12, #0x10
5584	ADD	lr, lr, #0x10
5585	ADD	r1, r1, #0x10
5586#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5587	BEQ	L_AES_CBC_decrypt_end_odd
5588#else
5589	BEQ.W	L_AES_CBC_decrypt_end_odd
5590#endif
5591	PUSH	{r1, r12, lr}
5592	LDR	r4, [lr]
5593	LDR	r5, [lr, #4]
5594	LDR	r6, [lr, #8]
5595	LDR	r7, [lr, #12]
5596	LDR	lr, [sp, #16]
5597	STRD	r4, r5, [lr]
5598	STRD	r6, r7, [lr, #8]
5599	LDM	r3!, {r8, r9, r10, r11}
5600	REV	r4, r4
5601	REV	r5, r5
5602	REV	r6, r6
5603	REV	r7, r7
5604	/* Round: 0 - XOR in key schedule */
5605	EOR	r4, r4, r8
5606	EOR	r5, r5, r9
5607	EOR	r6, r6, r10
5608	EOR	r7, r7, r11
5609	MOV	r1, #0x4
5610#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
5611	BL	AES_decrypt_block
5612#else
5613L_AES_CBC_decrypt_block_nr_128_even:
5614	UBFX	r8, r7, #16, #8
5615	LSR	r11, r4, #24
5616	UBFX	r12, r6, #8, #8
5617	UBFX	lr, r5, #0, #8
5618	LDR	r8, [r0, r8, LSL #2]
5619	LDR	r11, [r0, r11, LSL #2]
5620	LDR	r12, [r0, r12, LSL #2]
5621	LDR	lr, [r0, lr, LSL #2]
5622	UBFX	r9, r4, #16, #8
5623	EOR	r8, r8, r11, ROR #24
5624	LSR	r11, r5, #24
5625	EOR	r8, r8, r12, ROR #8
5626	UBFX	r12, r7, #8, #8
5627	EOR	r8, r8, lr, ROR #16
5628	UBFX	lr, r6, #0, #8
5629	LDR	r9, [r0, r9, LSL #2]
5630	LDR	r11, [r0, r11, LSL #2]
5631	LDR	r12, [r0, r12, LSL #2]
5632	LDR	lr, [r0, lr, LSL #2]
5633	UBFX	r10, r5, #16, #8
5634	EOR	r9, r9, r11, ROR #24
5635	LSR	r11, r6, #24
5636	EOR	r9, r9, r12, ROR #8
5637	UBFX	r12, r4, #8, #8
5638	EOR	r9, r9, lr, ROR #16
5639	UBFX	lr, r7, #0, #8
5640	LDR	r10, [r0, r10, LSL #2]
5641	LDR	r11, [r0, r11, LSL #2]
5642	LDR	r12, [r0, r12, LSL #2]
5643	LDR	lr, [r0, lr, LSL #2]
5644	UBFX	r4, r4, #0, #8
5645	EOR	r10, r10, r11, ROR #24
5646	UBFX	r11, r6, #16, #8
5647	EOR	r10, r10, r12, ROR #8
5648	LSR	r12, r7, #24
5649	EOR	r10, r10, lr, ROR #16
5650	UBFX	lr, r5, #8, #8
5651	LDR	r4, [r0, r4, LSL #2]
5652	LDR	r12, [r0, r12, LSL #2]
5653	LDR	r11, [r0, r11, LSL #2]
5654	LDR	lr, [r0, lr, LSL #2]
5655	EOR	r12, r12, r4, ROR #24
5656	LDM	r3!, {r4, r5, r6, r7}
5657	EOR	r11, r11, lr, ROR #8
5658	EOR	r11, r11, r12, ROR #24
5659	/*   XOR in Key Schedule */
5660	EOR	r8, r8, r4
5661	EOR	r9, r9, r5
5662	EOR	r10, r10, r6
5663	EOR	r11, r11, r7
5664	UBFX	r4, r11, #16, #8
5665	LSR	r7, r8, #24
5666	UBFX	r12, r10, #8, #8
5667	UBFX	lr, r9, #0, #8
5668	LDR	r4, [r0, r4, LSL #2]
5669	LDR	r7, [r0, r7, LSL #2]
5670	LDR	r12, [r0, r12, LSL #2]
5671	LDR	lr, [r0, lr, LSL #2]
5672	UBFX	r5, r8, #16, #8
5673	EOR	r4, r4, r7, ROR #24
5674	LSR	r7, r9, #24
5675	EOR	r4, r4, r12, ROR #8
5676	UBFX	r12, r11, #8, #8
5677	EOR	r4, r4, lr, ROR #16
5678	UBFX	lr, r10, #0, #8
5679	LDR	r5, [r0, r5, LSL #2]
5680	LDR	r7, [r0, r7, LSL #2]
5681	LDR	r12, [r0, r12, LSL #2]
5682	LDR	lr, [r0, lr, LSL #2]
5683	UBFX	r6, r9, #16, #8
5684	EOR	r5, r5, r7, ROR #24
5685	LSR	r7, r10, #24
5686	EOR	r5, r5, r12, ROR #8
5687	UBFX	r12, r8, #8, #8
5688	EOR	r5, r5, lr, ROR #16
5689	UBFX	lr, r11, #0, #8
5690	LDR	r6, [r0, r6, LSL #2]
5691	LDR	r7, [r0, r7, LSL #2]
5692	LDR	r12, [r0, r12, LSL #2]
5693	LDR	lr, [r0, lr, LSL #2]
5694	UBFX	r8, r8, #0, #8
5695	EOR	r6, r6, r7, ROR #24
5696	UBFX	r7, r10, #16, #8
5697	EOR	r6, r6, r12, ROR #8
5698	LSR	r12, r11, #24
5699	EOR	r6, r6, lr, ROR #16
5700	UBFX	lr, r9, #8, #8
5701	LDR	r8, [r0, r8, LSL #2]
5702	LDR	r12, [r0, r12, LSL #2]
5703	LDR	r7, [r0, r7, LSL #2]
5704	LDR	lr, [r0, lr, LSL #2]
5705	EOR	r12, r12, r8, ROR #24
5706	LDM	r3!, {r8, r9, r10, r11}
5707	EOR	r7, r7, lr, ROR #8
5708	EOR	r7, r7, r12, ROR #24
5709	/*   XOR in Key Schedule */
5710	EOR	r4, r4, r8
5711	EOR	r5, r5, r9
5712	EOR	r6, r6, r10
5713	EOR	r7, r7, r11
5714	SUBS	r1, r1, #0x1
5715#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5716	BNE	L_AES_CBC_decrypt_block_nr_128_even
5717#else
5718	BNE.W	L_AES_CBC_decrypt_block_nr_128_even
5719#endif
5720	UBFX	r8, r7, #16, #8
5721	LSR	r11, r4, #24
5722	UBFX	r12, r6, #8, #8
5723	UBFX	lr, r5, #0, #8
5724	LDR	r8, [r0, r8, LSL #2]
5725	LDR	r11, [r0, r11, LSL #2]
5726	LDR	r12, [r0, r12, LSL #2]
5727	LDR	lr, [r0, lr, LSL #2]
5728	UBFX	r9, r4, #16, #8
5729	EOR	r8, r8, r11, ROR #24
5730	LSR	r11, r5, #24
5731	EOR	r8, r8, r12, ROR #8
5732	UBFX	r12, r7, #8, #8
5733	EOR	r8, r8, lr, ROR #16
5734	UBFX	lr, r6, #0, #8
5735	LDR	r9, [r0, r9, LSL #2]
5736	LDR	r11, [r0, r11, LSL #2]
5737	LDR	r12, [r0, r12, LSL #2]
5738	LDR	lr, [r0, lr, LSL #2]
5739	UBFX	r10, r5, #16, #8
5740	EOR	r9, r9, r11, ROR #24
5741	LSR	r11, r6, #24
5742	EOR	r9, r9, r12, ROR #8
5743	UBFX	r12, r4, #8, #8
5744	EOR	r9, r9, lr, ROR #16
5745	UBFX	lr, r7, #0, #8
5746	LDR	r10, [r0, r10, LSL #2]
5747	LDR	r11, [r0, r11, LSL #2]
5748	LDR	r12, [r0, r12, LSL #2]
5749	LDR	lr, [r0, lr, LSL #2]
5750	UBFX	r4, r4, #0, #8
5751	EOR	r10, r10, r11, ROR #24
5752	UBFX	r11, r6, #16, #8
5753	EOR	r10, r10, r12, ROR #8
5754	LSR	r12, r7, #24
5755	EOR	r10, r10, lr, ROR #16
5756	UBFX	lr, r5, #8, #8
5757	LDR	r4, [r0, r4, LSL #2]
5758	LDR	r12, [r0, r12, LSL #2]
5759	LDR	r11, [r0, r11, LSL #2]
5760	LDR	lr, [r0, lr, LSL #2]
5761	EOR	r12, r12, r4, ROR #24
5762	LDM	r3!, {r4, r5, r6, r7}
5763	EOR	r11, r11, lr, ROR #8
5764	EOR	r11, r11, r12, ROR #24
5765	/*   XOR in Key Schedule */
5766	EOR	r8, r8, r4
5767	EOR	r9, r9, r5
5768	EOR	r10, r10, r6
5769	EOR	r11, r11, r7
5770	UBFX	r4, r9, #0, #8
5771	UBFX	r7, r10, #8, #8
5772	UBFX	r12, r11, #16, #8
5773	LSR	lr, r8, #24
5774	LDRB	r4, [r2, r4]
5775	LDRB	r7, [r2, r7]
5776	LDRB	r12, [r2, r12]
5777	LDRB	lr, [r2, lr]
5778	UBFX	r5, r10, #0, #8
5779	EOR	r4, r4, r7, LSL #8
5780	UBFX	r7, r11, #8, #8
5781	EOR	r4, r4, r12, LSL #16
5782	UBFX	r12, r8, #16, #8
5783	EOR	r4, r4, lr, LSL #24
5784	LSR	lr, r9, #24
5785	LDRB	r7, [r2, r7]
5786	LDRB	lr, [r2, lr]
5787	LDRB	r5, [r2, r5]
5788	LDRB	r12, [r2, r12]
5789	UBFX	r6, r11, #0, #8
5790	EOR	r5, r5, r7, LSL #8
5791	UBFX	r7, r8, #8, #8
5792	EOR	r5, r5, r12, LSL #16
5793	UBFX	r12, r9, #16, #8
5794	EOR	r5, r5, lr, LSL #24
5795	LSR	lr, r10, #24
5796	LDRB	r7, [r2, r7]
5797	LDRB	lr, [r2, lr]
5798	LDRB	r6, [r2, r6]
5799	LDRB	r12, [r2, r12]
5800	LSR	r11, r11, #24
5801	EOR	r6, r6, r7, LSL #8
5802	UBFX	r7, r8, #0, #8
5803	EOR	r6, r6, r12, LSL #16
5804	UBFX	r12, r9, #8, #8
5805	EOR	r6, r6, lr, LSL #24
5806	UBFX	lr, r10, #16, #8
5807	LDRB	r11, [r2, r11]
5808	LDRB	r12, [r2, r12]
5809	LDRB	r7, [r2, r7]
5810	LDRB	lr, [r2, lr]
5811	EOR	r12, r12, r11, LSL #16
5812	LDM	r3, {r8, r9, r10, r11}
5813	EOR	r7, r7, r12, LSL #8
5814	EOR	r7, r7, lr, LSL #16
5815	/*   XOR in Key Schedule */
5816	EOR	r4, r4, r8
5817	EOR	r5, r5, r9
5818	EOR	r6, r6, r10
5819	EOR	r7, r7, r11
5820#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
5821	LDR	lr, [sp, #16]
5822	REV	r4, r4
5823	REV	r5, r5
5824	REV	r6, r6
5825	REV	r7, r7
5826	LDRD	r8, r9, [lr, #16]
5827	LDRD	r10, r11, [lr, #24]
5828	POP	{r1, r12, lr}
5829	LDR	r3, [sp]
5830	EOR	r4, r4, r8
5831	EOR	r5, r5, r9
5832	EOR	r6, r6, r10
5833	EOR	r7, r7, r11
5834	STR	r4, [r1]
5835	STR	r5, [r1, #4]
5836	STR	r6, [r1, #8]
5837	STR	r7, [r1, #12]
5838	SUBS	r12, r12, #0x10
5839	ADD	lr, lr, #0x10
5840	ADD	r1, r1, #0x10
5841#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5842	BNE	L_AES_CBC_decrypt_loop_block_128
5843#else
5844	BNE.W	L_AES_CBC_decrypt_loop_block_128
5845#endif
5846#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
5847	B	L_AES_CBC_decrypt_end
5848#else
5849	B.N	L_AES_CBC_decrypt_end
5850#endif
5851L_AES_CBC_decrypt_end_odd:
5852	LDR	r4, [sp, #4]
5853	LDRD	r8, r9, [r4, #16]
5854	LDRD	r10, r11, [r4, #24]
5855	STRD	r8, r9, [r4]
5856	STRD	r10, r11, [r4, #8]
5857L_AES_CBC_decrypt_end:
5858	POP	{r3, r4}
5859	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
5860	/* Cycle Count = 2204 */
5861	.size	AES_CBC_decrypt,.-AES_CBC_decrypt
5862#endif /* HAVE_AES_CBC */
5863#endif /* WOLFSSL_AES_DIRECT || WOLFSSL_AES_COUNTER || HAVE_AES_CBC
5864        * HAVE_AES_ECB */
5865#endif /* HAVE_AES_DECRYPT */
5866#ifdef HAVE_AESGCM
5867#ifndef __APPLE__
5868	.text
5869	.type	L_GCM_gmult_len_r, %object
5870	.size	L_GCM_gmult_len_r, 64
5871#else
5872	.section	__DATA,__data
5873#endif /* __APPLE__ */
5874	/* 8-byte aligned, 64-bit aligned */
5875#ifndef __APPLE__
5876	.align	3
5877#else
5878	.p2align	3
5879#endif /* __APPLE__ */
5880L_GCM_gmult_len_r:
5881	.long	0x00000000,0x1c200000,0x38400000,0x24600000
5882	.long	0x70800000,0x6ca00000,0x48c00000,0x54e00000
5883	.long	0xe1000000,0xfd200000,0xd9400000,0xc5600000
5884	.long	0x91800000,0x8da00000,0xa9c00000,0xb5e00000
5885	.text
5886	.align	4
5887	.globl	GCM_gmult_len
5888	.type	GCM_gmult_len, %function
5889GCM_gmult_len:
5890	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
5891	ADR	lr, L_GCM_gmult_len_r
5892L_GCM_gmult_len_start_block:
5893	PUSH	{r3}
5894	LDR	r12, [r0, #12]
5895	LDR	r3, [r2, #12]
5896	EOR	r12, r12, r3
5897	LSR	r3, r12, #24
5898	AND	r3, r3, #0xf
5899	ADD	r3, r1, r3, LSL #4
5900	LDM	r3, {r8, r9, r10, r11}
5901	LSR	r6, r10, #4
5902	AND	r3, r11, #0xf
5903	LSR	r11, r11, #4
5904	LSR	r4, r12, #28
5905	EOR	r11, r11, r10, LSL #28
5906	LDR	r3, [lr, r3, LSL #2]
5907	ADD	r4, r1, r4, LSL #4
5908	EOR	r10, r6, r9, LSL #28
5909	LSR	r9, r9, #4
5910	LDM	r4, {r4, r5, r6, r7}
5911	EOR	r9, r9, r8, LSL #28
5912	EOR	r8, r3, r8, LSR #4
5913	EOR	r8, r8, r4
5914	EOR	r9, r9, r5
5915	EOR	r10, r10, r6
5916	EOR	r11, r11, r7
5917	LSR	r6, r10, #4
5918	AND	r3, r11, #0xf
5919	LSR	r11, r11, #4
5920	LSR	r4, r12, #16
5921	EOR	r11, r11, r10, LSL #28
5922	AND	r4, r4, #0xf
5923	LDR	r3, [lr, r3, LSL #2]
5924	ADD	r4, r1, r4, LSL #4
5925	EOR	r10, r6, r9, LSL #28
5926	LSR	r9, r9, #4
5927	LDM	r4, {r4, r5, r6, r7}
5928	EOR	r9, r9, r8, LSL #28
5929	EOR	r8, r3, r8, LSR #4
5930	EOR	r8, r8, r4
5931	EOR	r9, r9, r5
5932	EOR	r10, r10, r6
5933	EOR	r11, r11, r7
5934	LSR	r6, r10, #4
5935	AND	r3, r11, #0xf
5936	LSR	r11, r11, #4
5937	LSR	r4, r12, #20
5938	EOR	r11, r11, r10, LSL #28
5939	AND	r4, r4, #0xf
5940	LDR	r3, [lr, r3, LSL #2]
5941	ADD	r4, r1, r4, LSL #4
5942	EOR	r10, r6, r9, LSL #28
5943	LSR	r9, r9, #4
5944	LDM	r4, {r4, r5, r6, r7}
5945	EOR	r9, r9, r8, LSL #28
5946	EOR	r8, r3, r8, LSR #4
5947	EOR	r8, r8, r4
5948	EOR	r9, r9, r5
5949	EOR	r10, r10, r6
5950	EOR	r11, r11, r7
5951	LSR	r6, r10, #4
5952	AND	r3, r11, #0xf
5953	LSR	r11, r11, #4
5954	LSR	r4, r12, #8
5955	EOR	r11, r11, r10, LSL #28
5956	AND	r4, r4, #0xf
5957	LDR	r3, [lr, r3, LSL #2]
5958	ADD	r4, r1, r4, LSL #4
5959	EOR	r10, r6, r9, LSL #28
5960	LSR	r9, r9, #4
5961	LDM	r4, {r4, r5, r6, r7}
5962	EOR	r9, r9, r8, LSL #28
5963	EOR	r8, r3, r8, LSR #4
5964	EOR	r8, r8, r4
5965	EOR	r9, r9, r5
5966	EOR	r10, r10, r6
5967	EOR	r11, r11, r7
5968	LSR	r6, r10, #4
5969	AND	r3, r11, #0xf
5970	LSR	r11, r11, #4
5971	LSR	r4, r12, #12
5972	EOR	r11, r11, r10, LSL #28
5973	AND	r4, r4, #0xf
5974	LDR	r3, [lr, r3, LSL #2]
5975	ADD	r4, r1, r4, LSL #4
5976	EOR	r10, r6, r9, LSL #28
5977	LSR	r9, r9, #4
5978	LDM	r4, {r4, r5, r6, r7}
5979	EOR	r9, r9, r8, LSL #28
5980	EOR	r8, r3, r8, LSR #4
5981	EOR	r8, r8, r4
5982	EOR	r9, r9, r5
5983	EOR	r10, r10, r6
5984	EOR	r11, r11, r7
5985	LSR	r6, r10, #4
5986	AND	r3, r11, #0xf
5987	LSR	r11, r11, #4
5988	AND	r4, r12, #0xf
5989	EOR	r11, r11, r10, LSL #28
5990	LDR	r3, [lr, r3, LSL #2]
5991	ADD	r4, r1, r4, LSL #4
5992	EOR	r10, r6, r9, LSL #28
5993	LSR	r9, r9, #4
5994	LDM	r4, {r4, r5, r6, r7}
5995	EOR	r9, r9, r8, LSL #28
5996	EOR	r8, r3, r8, LSR #4
5997	EOR	r8, r8, r4
5998	EOR	r9, r9, r5
5999	EOR	r10, r10, r6
6000	EOR	r11, r11, r7
6001	LSR	r6, r10, #4
6002	AND	r3, r11, #0xf
6003	LSR	r11, r11, #4
6004	LSR	r4, r12, #4
6005	EOR	r11, r11, r10, LSL #28
6006	AND	r4, r4, #0xf
6007	LDR	r3, [lr, r3, LSL #2]
6008	ADD	r4, r1, r4, LSL #4
6009	EOR	r10, r6, r9, LSL #28
6010	LSR	r9, r9, #4
6011	LDM	r4, {r4, r5, r6, r7}
6012	EOR	r9, r9, r8, LSL #28
6013	EOR	r8, r3, r8, LSR #4
6014	EOR	r8, r8, r4
6015	EOR	r9, r9, r5
6016	EOR	r10, r10, r6
6017	EOR	r11, r11, r7
6018	LSR	r6, r10, #4
6019	AND	r3, r11, #0xf
6020	LSR	r11, r11, #4
6021	EOR	r11, r11, r10, LSL #28
6022	LDR	r3, [lr, r3, LSL #2]
6023	EOR	r10, r6, r9, LSL #28
6024	LSR	r9, r9, #4
6025	EOR	r9, r9, r8, LSL #28
6026	EOR	r8, r3, r8, LSR #4
6027	LDR	r12, [r0, #8]
6028	LDR	r3, [r2, #8]
6029	EOR	r12, r12, r3
6030	LSR	r3, r12, #24
6031	AND	r3, r3, #0xf
6032	ADD	r3, r1, r3, LSL #4
6033	LDM	r3, {r4, r5, r6, r7}
6034	EOR	r8, r8, r4
6035	EOR	r9, r9, r5
6036	EOR	r10, r10, r6
6037	EOR	r11, r11, r7
6038	LSR	r6, r10, #4
6039	AND	r3, r11, #0xf
6040	LSR	r11, r11, #4
6041	LSR	r4, r12, #28
6042	EOR	r11, r11, r10, LSL #28
6043	LDR	r3, [lr, r3, LSL #2]
6044	ADD	r4, r1, r4, LSL #4
6045	EOR	r10, r6, r9, LSL #28
6046	LSR	r9, r9, #4
6047	LDM	r4, {r4, r5, r6, r7}
6048	EOR	r9, r9, r8, LSL #28
6049	EOR	r8, r3, r8, LSR #4
6050	EOR	r8, r8, r4
6051	EOR	r9, r9, r5
6052	EOR	r10, r10, r6
6053	EOR	r11, r11, r7
6054	LSR	r6, r10, #4
6055	AND	r3, r11, #0xf
6056	LSR	r11, r11, #4
6057	LSR	r4, r12, #16
6058	EOR	r11, r11, r10, LSL #28
6059	AND	r4, r4, #0xf
6060	LDR	r3, [lr, r3, LSL #2]
6061	ADD	r4, r1, r4, LSL #4
6062	EOR	r10, r6, r9, LSL #28
6063	LSR	r9, r9, #4
6064	LDM	r4, {r4, r5, r6, r7}
6065	EOR	r9, r9, r8, LSL #28
6066	EOR	r8, r3, r8, LSR #4
6067	EOR	r8, r8, r4
6068	EOR	r9, r9, r5
6069	EOR	r10, r10, r6
6070	EOR	r11, r11, r7
6071	LSR	r6, r10, #4
6072	AND	r3, r11, #0xf
6073	LSR	r11, r11, #4
6074	LSR	r4, r12, #20
6075	EOR	r11, r11, r10, LSL #28
6076	AND	r4, r4, #0xf
6077	LDR	r3, [lr, r3, LSL #2]
6078	ADD	r4, r1, r4, LSL #4
6079	EOR	r10, r6, r9, LSL #28
6080	LSR	r9, r9, #4
6081	LDM	r4, {r4, r5, r6, r7}
6082	EOR	r9, r9, r8, LSL #28
6083	EOR	r8, r3, r8, LSR #4
6084	EOR	r8, r8, r4
6085	EOR	r9, r9, r5
6086	EOR	r10, r10, r6
6087	EOR	r11, r11, r7
6088	LSR	r6, r10, #4
6089	AND	r3, r11, #0xf
6090	LSR	r11, r11, #4
6091	LSR	r4, r12, #8
6092	EOR	r11, r11, r10, LSL #28
6093	AND	r4, r4, #0xf
6094	LDR	r3, [lr, r3, LSL #2]
6095	ADD	r4, r1, r4, LSL #4
6096	EOR	r10, r6, r9, LSL #28
6097	LSR	r9, r9, #4
6098	LDM	r4, {r4, r5, r6, r7}
6099	EOR	r9, r9, r8, LSL #28
6100	EOR	r8, r3, r8, LSR #4
6101	EOR	r8, r8, r4
6102	EOR	r9, r9, r5
6103	EOR	r10, r10, r6
6104	EOR	r11, r11, r7
6105	LSR	r6, r10, #4
6106	AND	r3, r11, #0xf
6107	LSR	r11, r11, #4
6108	LSR	r4, r12, #12
6109	EOR	r11, r11, r10, LSL #28
6110	AND	r4, r4, #0xf
6111	LDR	r3, [lr, r3, LSL #2]
6112	ADD	r4, r1, r4, LSL #4
6113	EOR	r10, r6, r9, LSL #28
6114	LSR	r9, r9, #4
6115	LDM	r4, {r4, r5, r6, r7}
6116	EOR	r9, r9, r8, LSL #28
6117	EOR	r8, r3, r8, LSR #4
6118	EOR	r8, r8, r4
6119	EOR	r9, r9, r5
6120	EOR	r10, r10, r6
6121	EOR	r11, r11, r7
6122	LSR	r6, r10, #4
6123	AND	r3, r11, #0xf
6124	LSR	r11, r11, #4
6125	AND	r4, r12, #0xf
6126	EOR	r11, r11, r10, LSL #28
6127	LDR	r3, [lr, r3, LSL #2]
6128	ADD	r4, r1, r4, LSL #4
6129	EOR	r10, r6, r9, LSL #28
6130	LSR	r9, r9, #4
6131	LDM	r4, {r4, r5, r6, r7}
6132	EOR	r9, r9, r8, LSL #28
6133	EOR	r8, r3, r8, LSR #4
6134	EOR	r8, r8, r4
6135	EOR	r9, r9, r5
6136	EOR	r10, r10, r6
6137	EOR	r11, r11, r7
6138	LSR	r6, r10, #4
6139	AND	r3, r11, #0xf
6140	LSR	r11, r11, #4
6141	LSR	r4, r12, #4
6142	EOR	r11, r11, r10, LSL #28
6143	AND	r4, r4, #0xf
6144	LDR	r3, [lr, r3, LSL #2]
6145	ADD	r4, r1, r4, LSL #4
6146	EOR	r10, r6, r9, LSL #28
6147	LSR	r9, r9, #4
6148	LDM	r4, {r4, r5, r6, r7}
6149	EOR	r9, r9, r8, LSL #28
6150	EOR	r8, r3, r8, LSR #4
6151	EOR	r8, r8, r4
6152	EOR	r9, r9, r5
6153	EOR	r10, r10, r6
6154	EOR	r11, r11, r7
6155	LSR	r6, r10, #4
6156	AND	r3, r11, #0xf
6157	LSR	r11, r11, #4
6158	EOR	r11, r11, r10, LSL #28
6159	LDR	r3, [lr, r3, LSL #2]
6160	EOR	r10, r6, r9, LSL #28
6161	LSR	r9, r9, #4
6162	EOR	r9, r9, r8, LSL #28
6163	EOR	r8, r3, r8, LSR #4
6164	LDR	r12, [r0, #4]
6165	LDR	r3, [r2, #4]
6166	EOR	r12, r12, r3
6167	LSR	r3, r12, #24
6168	AND	r3, r3, #0xf
6169	ADD	r3, r1, r3, LSL #4
6170	LDM	r3, {r4, r5, r6, r7}
6171	EOR	r8, r8, r4
6172	EOR	r9, r9, r5
6173	EOR	r10, r10, r6
6174	EOR	r11, r11, r7
6175	LSR	r6, r10, #4
6176	AND	r3, r11, #0xf
6177	LSR	r11, r11, #4
6178	LSR	r4, r12, #28
6179	EOR	r11, r11, r10, LSL #28
6180	LDR	r3, [lr, r3, LSL #2]
6181	ADD	r4, r1, r4, LSL #4
6182	EOR	r10, r6, r9, LSL #28
6183	LSR	r9, r9, #4
6184	LDM	r4, {r4, r5, r6, r7}
6185	EOR	r9, r9, r8, LSL #28
6186	EOR	r8, r3, r8, LSR #4
6187	EOR	r8, r8, r4
6188	EOR	r9, r9, r5
6189	EOR	r10, r10, r6
6190	EOR	r11, r11, r7
6191	LSR	r6, r10, #4
6192	AND	r3, r11, #0xf
6193	LSR	r11, r11, #4
6194	LSR	r4, r12, #16
6195	EOR	r11, r11, r10, LSL #28
6196	AND	r4, r4, #0xf
6197	LDR	r3, [lr, r3, LSL #2]
6198	ADD	r4, r1, r4, LSL #4
6199	EOR	r10, r6, r9, LSL #28
6200	LSR	r9, r9, #4
6201	LDM	r4, {r4, r5, r6, r7}
6202	EOR	r9, r9, r8, LSL #28
6203	EOR	r8, r3, r8, LSR #4
6204	EOR	r8, r8, r4
6205	EOR	r9, r9, r5
6206	EOR	r10, r10, r6
6207	EOR	r11, r11, r7
6208	LSR	r6, r10, #4
6209	AND	r3, r11, #0xf
6210	LSR	r11, r11, #4
6211	LSR	r4, r12, #20
6212	EOR	r11, r11, r10, LSL #28
6213	AND	r4, r4, #0xf
6214	LDR	r3, [lr, r3, LSL #2]
6215	ADD	r4, r1, r4, LSL #4
6216	EOR	r10, r6, r9, LSL #28
6217	LSR	r9, r9, #4
6218	LDM	r4, {r4, r5, r6, r7}
6219	EOR	r9, r9, r8, LSL #28
6220	EOR	r8, r3, r8, LSR #4
6221	EOR	r8, r8, r4
6222	EOR	r9, r9, r5
6223	EOR	r10, r10, r6
6224	EOR	r11, r11, r7
6225	LSR	r6, r10, #4
6226	AND	r3, r11, #0xf
6227	LSR	r11, r11, #4
6228	LSR	r4, r12, #8
6229	EOR	r11, r11, r10, LSL #28
6230	AND	r4, r4, #0xf
6231	LDR	r3, [lr, r3, LSL #2]
6232	ADD	r4, r1, r4, LSL #4
6233	EOR	r10, r6, r9, LSL #28
6234	LSR	r9, r9, #4
6235	LDM	r4, {r4, r5, r6, r7}
6236	EOR	r9, r9, r8, LSL #28
6237	EOR	r8, r3, r8, LSR #4
6238	EOR	r8, r8, r4
6239	EOR	r9, r9, r5
6240	EOR	r10, r10, r6
6241	EOR	r11, r11, r7
6242	LSR	r6, r10, #4
6243	AND	r3, r11, #0xf
6244	LSR	r11, r11, #4
6245	LSR	r4, r12, #12
6246	EOR	r11, r11, r10, LSL #28
6247	AND	r4, r4, #0xf
6248	LDR	r3, [lr, r3, LSL #2]
6249	ADD	r4, r1, r4, LSL #4
6250	EOR	r10, r6, r9, LSL #28
6251	LSR	r9, r9, #4
6252	LDM	r4, {r4, r5, r6, r7}
6253	EOR	r9, r9, r8, LSL #28
6254	EOR	r8, r3, r8, LSR #4
6255	EOR	r8, r8, r4
6256	EOR	r9, r9, r5
6257	EOR	r10, r10, r6
6258	EOR	r11, r11, r7
6259	LSR	r6, r10, #4
6260	AND	r3, r11, #0xf
6261	LSR	r11, r11, #4
6262	AND	r4, r12, #0xf
6263	EOR	r11, r11, r10, LSL #28
6264	LDR	r3, [lr, r3, LSL #2]
6265	ADD	r4, r1, r4, LSL #4
6266	EOR	r10, r6, r9, LSL #28
6267	LSR	r9, r9, #4
6268	LDM	r4, {r4, r5, r6, r7}
6269	EOR	r9, r9, r8, LSL #28
6270	EOR	r8, r3, r8, LSR #4
6271	EOR	r8, r8, r4
6272	EOR	r9, r9, r5
6273	EOR	r10, r10, r6
6274	EOR	r11, r11, r7
6275	LSR	r6, r10, #4
6276	AND	r3, r11, #0xf
6277	LSR	r11, r11, #4
6278	LSR	r4, r12, #4
6279	EOR	r11, r11, r10, LSL #28
6280	AND	r4, r4, #0xf
6281	LDR	r3, [lr, r3, LSL #2]
6282	ADD	r4, r1, r4, LSL #4
6283	EOR	r10, r6, r9, LSL #28
6284	LSR	r9, r9, #4
6285	LDM	r4, {r4, r5, r6, r7}
6286	EOR	r9, r9, r8, LSL #28
6287	EOR	r8, r3, r8, LSR #4
6288	EOR	r8, r8, r4
6289	EOR	r9, r9, r5
6290	EOR	r10, r10, r6
6291	EOR	r11, r11, r7
6292	LSR	r6, r10, #4
6293	AND	r3, r11, #0xf
6294	LSR	r11, r11, #4
6295	EOR	r11, r11, r10, LSL #28
6296	LDR	r3, [lr, r3, LSL #2]
6297	EOR	r10, r6, r9, LSL #28
6298	LSR	r9, r9, #4
6299	EOR	r9, r9, r8, LSL #28
6300	EOR	r8, r3, r8, LSR #4
6301	LDR	r12, [r0]
6302	LDR	r3, [r2]
6303	EOR	r12, r12, r3
6304	LSR	r3, r12, #24
6305	AND	r3, r3, #0xf
6306	ADD	r3, r1, r3, LSL #4
6307	LDM	r3, {r4, r5, r6, r7}
6308	EOR	r8, r8, r4
6309	EOR	r9, r9, r5
6310	EOR	r10, r10, r6
6311	EOR	r11, r11, r7
6312	LSR	r6, r10, #4
6313	AND	r3, r11, #0xf
6314	LSR	r11, r11, #4
6315	LSR	r4, r12, #28
6316	EOR	r11, r11, r10, LSL #28
6317	LDR	r3, [lr, r3, LSL #2]
6318	ADD	r4, r1, r4, LSL #4
6319	EOR	r10, r6, r9, LSL #28
6320	LSR	r9, r9, #4
6321	LDM	r4, {r4, r5, r6, r7}
6322	EOR	r9, r9, r8, LSL #28
6323	EOR	r8, r3, r8, LSR #4
6324	EOR	r8, r8, r4
6325	EOR	r9, r9, r5
6326	EOR	r10, r10, r6
6327	EOR	r11, r11, r7
6328	LSR	r6, r10, #4
6329	AND	r3, r11, #0xf
6330	LSR	r11, r11, #4
6331	LSR	r4, r12, #16
6332	EOR	r11, r11, r10, LSL #28
6333	AND	r4, r4, #0xf
6334	LDR	r3, [lr, r3, LSL #2]
6335	ADD	r4, r1, r4, LSL #4
6336	EOR	r10, r6, r9, LSL #28
6337	LSR	r9, r9, #4
6338	LDM	r4, {r4, r5, r6, r7}
6339	EOR	r9, r9, r8, LSL #28
6340	EOR	r8, r3, r8, LSR #4
6341	EOR	r8, r8, r4
6342	EOR	r9, r9, r5
6343	EOR	r10, r10, r6
6344	EOR	r11, r11, r7
6345	LSR	r6, r10, #4
6346	AND	r3, r11, #0xf
6347	LSR	r11, r11, #4
6348	LSR	r4, r12, #20
6349	EOR	r11, r11, r10, LSL #28
6350	AND	r4, r4, #0xf
6351	LDR	r3, [lr, r3, LSL #2]
6352	ADD	r4, r1, r4, LSL #4
6353	EOR	r10, r6, r9, LSL #28
6354	LSR	r9, r9, #4
6355	LDM	r4, {r4, r5, r6, r7}
6356	EOR	r9, r9, r8, LSL #28
6357	EOR	r8, r3, r8, LSR #4
6358	EOR	r8, r8, r4
6359	EOR	r9, r9, r5
6360	EOR	r10, r10, r6
6361	EOR	r11, r11, r7
6362	LSR	r6, r10, #4
6363	AND	r3, r11, #0xf
6364	LSR	r11, r11, #4
6365	LSR	r4, r12, #8
6366	EOR	r11, r11, r10, LSL #28
6367	AND	r4, r4, #0xf
6368	LDR	r3, [lr, r3, LSL #2]
6369	ADD	r4, r1, r4, LSL #4
6370	EOR	r10, r6, r9, LSL #28
6371	LSR	r9, r9, #4
6372	LDM	r4, {r4, r5, r6, r7}
6373	EOR	r9, r9, r8, LSL #28
6374	EOR	r8, r3, r8, LSR #4
6375	EOR	r8, r8, r4
6376	EOR	r9, r9, r5
6377	EOR	r10, r10, r6
6378	EOR	r11, r11, r7
6379	LSR	r6, r10, #4
6380	AND	r3, r11, #0xf
6381	LSR	r11, r11, #4
6382	LSR	r4, r12, #12
6383	EOR	r11, r11, r10, LSL #28
6384	AND	r4, r4, #0xf
6385	LDR	r3, [lr, r3, LSL #2]
6386	ADD	r4, r1, r4, LSL #4
6387	EOR	r10, r6, r9, LSL #28
6388	LSR	r9, r9, #4
6389	LDM	r4, {r4, r5, r6, r7}
6390	EOR	r9, r9, r8, LSL #28
6391	EOR	r8, r3, r8, LSR #4
6392	EOR	r8, r8, r4
6393	EOR	r9, r9, r5
6394	EOR	r10, r10, r6
6395	EOR	r11, r11, r7
6396	LSR	r6, r10, #4
6397	AND	r3, r11, #0xf
6398	LSR	r11, r11, #4
6399	AND	r4, r12, #0xf
6400	EOR	r11, r11, r10, LSL #28
6401	LDR	r3, [lr, r3, LSL #2]
6402	ADD	r4, r1, r4, LSL #4
6403	EOR	r10, r6, r9, LSL #28
6404	LSR	r9, r9, #4
6405	LDM	r4, {r4, r5, r6, r7}
6406	EOR	r9, r9, r8, LSL #28
6407	EOR	r8, r3, r8, LSR #4
6408	EOR	r8, r8, r4
6409	EOR	r9, r9, r5
6410	EOR	r10, r10, r6
6411	EOR	r11, r11, r7
6412	LSR	r6, r10, #4
6413	AND	r3, r11, #0xf
6414	LSR	r11, r11, #4
6415	LSR	r4, r12, #4
6416	EOR	r11, r11, r10, LSL #28
6417	AND	r4, r4, #0xf
6418	LDR	r3, [lr, r3, LSL #2]
6419	ADD	r4, r1, r4, LSL #4
6420	EOR	r10, r6, r9, LSL #28
6421	LSR	r9, r9, #4
6422	LDM	r4, {r4, r5, r6, r7}
6423	EOR	r9, r9, r8, LSL #28
6424	EOR	r8, r3, r8, LSR #4
6425	EOR	r8, r8, r4
6426	EOR	r9, r9, r5
6427	EOR	r10, r10, r6
6428	EOR	r11, r11, r7
6429	REV	r8, r8
6430	REV	r9, r9
6431	REV	r10, r10
6432	REV	r11, r11
6433	STM	r0, {r8, r9, r10, r11}
6434	POP	{r3}
6435	SUBS	r3, r3, #0x10
6436	ADD	r2, r2, #0x10
6437#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6438	BNE	L_GCM_gmult_len_start_block
6439#else
6440	BNE.W	L_GCM_gmult_len_start_block
6441#endif
6442	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
6443	/* Cycle Count = 742 */
6444	.size	GCM_gmult_len,.-GCM_gmult_len
6445#ifndef __APPLE__
6446	.text
6447	.type	L_AES_Thumb2_te_gcm, %object
6448	.size	L_AES_Thumb2_te_gcm, 12
6449#else
6450	.section	__DATA,__data
6451#endif /* __APPLE__ */
6452	/* 8-byte aligned, 64-bit aligned */
6453#ifndef __APPLE__
6454	.align	3
6455#else
6456	.p2align	3
6457#endif /* __APPLE__ */
6458L_AES_Thumb2_te_gcm:
6459	.long	L_AES_Thumb2_te_data
6460	.text
6461	.align	4
6462	.globl	AES_GCM_encrypt
6463	.type	AES_GCM_encrypt, %function
6464AES_GCM_encrypt:
6465	PUSH	{r4, r5, r6, r7, r8, r9, r10, r11, lr}
6466	LDR	r12, [sp, #36]
6467	LDR	r8, [sp, #40]
6468	MOV	lr, r0
6469	LDR	r0, L_AES_Thumb2_te_gcm
6470	LDM	r8, {r4, r5, r6, r7}
6471	REV	r4, r4
6472	REV	r5, r5
6473	REV	r6, r6
6474	REV	r7, r7
6475	STM	r8, {r4, r5, r6, r7}
6476	PUSH	{r3, r8}
6477	CMP	r12, #0xa
6478#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6479	BEQ	L_AES_GCM_encrypt_start_block_128
6480#else
6481	BEQ.W	L_AES_GCM_encrypt_start_block_128
6482#endif
6483	CMP	r12, #0xc
6484#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6485	BEQ	L_AES_GCM_encrypt_start_block_192
6486#else
6487	BEQ.W	L_AES_GCM_encrypt_start_block_192
6488#endif
6489L_AES_GCM_encrypt_loop_block_256:
6490	PUSH	{r1, r2, lr}
6491	LDR	lr, [sp, #16]
6492	ADD	r7, r7, #0x1
6493	LDM	r3!, {r8, r9, r10, r11}
6494	STR	r7, [lr, #12]
6495	/* Round: 0 - XOR in key schedule */
6496	EOR	r4, r4, r8
6497	EOR	r5, r5, r9
6498	EOR	r6, r6, r10
6499	EOR	r7, r7, r11
6500	MOV	r1, #0x6
6501#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
6502	BL	AES_encrypt_block
6503#else
6504L_AES_GCM_encrypt_block_nr_256:
6505	UBFX	r8, r5, #16, #8
6506	LSR	r11, r4, #24
6507	UBFX	lr, r6, #8, #8
6508	UBFX	r2, r7, #0, #8
6509	LDR	r8, [r0, r8, LSL #2]
6510	LDR	r11, [r0, r11, LSL #2]
6511	LDR	lr, [r0, lr, LSL #2]
6512	LDR	r2, [r0, r2, LSL #2]
6513	UBFX	r9, r6, #16, #8
6514	EOR	r8, r8, r11, ROR #24
6515	LSR	r11, r5, #24
6516	EOR	r8, r8, lr, ROR #8
6517	UBFX	lr, r7, #8, #8
6518	EOR	r8, r8, r2, ROR #16
6519	UBFX	r2, r4, #0, #8
6520	LDR	r9, [r0, r9, LSL #2]
6521	LDR	r11, [r0, r11, LSL #2]
6522	LDR	lr, [r0, lr, LSL #2]
6523	LDR	r2, [r0, r2, LSL #2]
6524	UBFX	r10, r7, #16, #8
6525	EOR	r9, r9, r11, ROR #24
6526	LSR	r11, r6, #24
6527	EOR	r9, r9, lr, ROR #8
6528	UBFX	lr, r4, #8, #8
6529	EOR	r9, r9, r2, ROR #16
6530	UBFX	r2, r5, #0, #8
6531	LDR	r10, [r0, r10, LSL #2]
6532	LDR	r11, [r0, r11, LSL #2]
6533	LDR	lr, [r0, lr, LSL #2]
6534	LDR	r2, [r0, r2, LSL #2]
6535	UBFX	r6, r6, #0, #8
6536	EOR	r10, r10, r11, ROR #24
6537	UBFX	r11, r4, #16, #8
6538	EOR	r10, r10, lr, ROR #8
6539	LSR	lr, r7, #24
6540	EOR	r10, r10, r2, ROR #16
6541	UBFX	r2, r5, #8, #8
6542	LDR	r6, [r0, r6, LSL #2]
6543	LDR	lr, [r0, lr, LSL #2]
6544	LDR	r11, [r0, r11, LSL #2]
6545	LDR	r2, [r0, r2, LSL #2]
6546	EOR	lr, lr, r6, ROR #24
6547	LDM	r3!, {r4, r5, r6, r7}
6548	EOR	r11, r11, lr, ROR #24
6549	EOR	r11, r11, r2, ROR #8
6550	/*   XOR in Key Schedule */
6551	EOR	r8, r8, r4
6552	EOR	r9, r9, r5
6553	EOR	r10, r10, r6
6554	EOR	r11, r11, r7
6555	UBFX	r4, r9, #16, #8
6556	LSR	r7, r8, #24
6557	UBFX	lr, r10, #8, #8
6558	UBFX	r2, r11, #0, #8
6559	LDR	r4, [r0, r4, LSL #2]
6560	LDR	r7, [r0, r7, LSL #2]
6561	LDR	lr, [r0, lr, LSL #2]
6562	LDR	r2, [r0, r2, LSL #2]
6563	UBFX	r5, r10, #16, #8
6564	EOR	r4, r4, r7, ROR #24
6565	LSR	r7, r9, #24
6566	EOR	r4, r4, lr, ROR #8
6567	UBFX	lr, r11, #8, #8
6568	EOR	r4, r4, r2, ROR #16
6569	UBFX	r2, r8, #0, #8
6570	LDR	r5, [r0, r5, LSL #2]
6571	LDR	r7, [r0, r7, LSL #2]
6572	LDR	lr, [r0, lr, LSL #2]
6573	LDR	r2, [r0, r2, LSL #2]
6574	UBFX	r6, r11, #16, #8
6575	EOR	r5, r5, r7, ROR #24
6576	LSR	r7, r10, #24
6577	EOR	r5, r5, lr, ROR #8
6578	UBFX	lr, r8, #8, #8
6579	EOR	r5, r5, r2, ROR #16
6580	UBFX	r2, r9, #0, #8
6581	LDR	r6, [r0, r6, LSL #2]
6582	LDR	r7, [r0, r7, LSL #2]
6583	LDR	lr, [r0, lr, LSL #2]
6584	LDR	r2, [r0, r2, LSL #2]
6585	UBFX	r10, r10, #0, #8
6586	EOR	r6, r6, r7, ROR #24
6587	UBFX	r7, r8, #16, #8
6588	EOR	r6, r6, lr, ROR #8
6589	LSR	lr, r11, #24
6590	EOR	r6, r6, r2, ROR #16
6591	UBFX	r2, r9, #8, #8
6592	LDR	r10, [r0, r10, LSL #2]
6593	LDR	lr, [r0, lr, LSL #2]
6594	LDR	r7, [r0, r7, LSL #2]
6595	LDR	r2, [r0, r2, LSL #2]
6596	EOR	lr, lr, r10, ROR #24
6597	LDM	r3!, {r8, r9, r10, r11}
6598	EOR	r7, r7, lr, ROR #24
6599	EOR	r7, r7, r2, ROR #8
6600	/*   XOR in Key Schedule */
6601	EOR	r4, r4, r8
6602	EOR	r5, r5, r9
6603	EOR	r6, r6, r10
6604	EOR	r7, r7, r11
6605	SUBS	r1, r1, #0x1
6606#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6607	BNE	L_AES_GCM_encrypt_block_nr_256
6608#else
6609	BNE.W	L_AES_GCM_encrypt_block_nr_256
6610#endif
6611	UBFX	r8, r5, #16, #8
6612	LSR	r11, r4, #24
6613	UBFX	lr, r6, #8, #8
6614	UBFX	r2, r7, #0, #8
6615	LDR	r8, [r0, r8, LSL #2]
6616	LDR	r11, [r0, r11, LSL #2]
6617	LDR	lr, [r0, lr, LSL #2]
6618	LDR	r2, [r0, r2, LSL #2]
6619	UBFX	r9, r6, #16, #8
6620	EOR	r8, r8, r11, ROR #24
6621	LSR	r11, r5, #24
6622	EOR	r8, r8, lr, ROR #8
6623	UBFX	lr, r7, #8, #8
6624	EOR	r8, r8, r2, ROR #16
6625	UBFX	r2, r4, #0, #8
6626	LDR	r9, [r0, r9, LSL #2]
6627	LDR	r11, [r0, r11, LSL #2]
6628	LDR	lr, [r0, lr, LSL #2]
6629	LDR	r2, [r0, r2, LSL #2]
6630	UBFX	r10, r7, #16, #8
6631	EOR	r9, r9, r11, ROR #24
6632	LSR	r11, r6, #24
6633	EOR	r9, r9, lr, ROR #8
6634	UBFX	lr, r4, #8, #8
6635	EOR	r9, r9, r2, ROR #16
6636	UBFX	r2, r5, #0, #8
6637	LDR	r10, [r0, r10, LSL #2]
6638	LDR	r11, [r0, r11, LSL #2]
6639	LDR	lr, [r0, lr, LSL #2]
6640	LDR	r2, [r0, r2, LSL #2]
6641	UBFX	r6, r6, #0, #8
6642	EOR	r10, r10, r11, ROR #24
6643	UBFX	r11, r4, #16, #8
6644	EOR	r10, r10, lr, ROR #8
6645	LSR	lr, r7, #24
6646	EOR	r10, r10, r2, ROR #16
6647	UBFX	r2, r5, #8, #8
6648	LDR	r6, [r0, r6, LSL #2]
6649	LDR	lr, [r0, lr, LSL #2]
6650	LDR	r11, [r0, r11, LSL #2]
6651	LDR	r2, [r0, r2, LSL #2]
6652	EOR	lr, lr, r6, ROR #24
6653	LDM	r3!, {r4, r5, r6, r7}
6654	EOR	r11, r11, lr, ROR #24
6655	EOR	r11, r11, r2, ROR #8
6656	/*   XOR in Key Schedule */
6657	EOR	r8, r8, r4
6658	EOR	r9, r9, r5
6659	EOR	r10, r10, r6
6660	EOR	r11, r11, r7
6661	UBFX	r4, r11, #0, #8
6662	UBFX	r7, r10, #8, #8
6663	UBFX	lr, r9, #16, #8
6664	LSR	r2, r8, #24
6665	LDRB	r4, [r0, r4, LSL #2]
6666	LDRB	r7, [r0, r7, LSL #2]
6667	LDRB	lr, [r0, lr, LSL #2]
6668	LDRB	r2, [r0, r2, LSL #2]
6669	UBFX	r5, r8, #0, #8
6670	EOR	r4, r4, r7, LSL #8
6671	UBFX	r7, r11, #8, #8
6672	EOR	r4, r4, lr, LSL #16
6673	UBFX	lr, r10, #16, #8
6674	EOR	r4, r4, r2, LSL #24
6675	LSR	r2, r9, #24
6676	LDRB	r5, [r0, r5, LSL #2]
6677	LDRB	r7, [r0, r7, LSL #2]
6678	LDRB	lr, [r0, lr, LSL #2]
6679	LDRB	r2, [r0, r2, LSL #2]
6680	UBFX	r6, r9, #0, #8
6681	EOR	r5, r5, r7, LSL #8
6682	UBFX	r7, r8, #8, #8
6683	EOR	r5, r5, lr, LSL #16
6684	UBFX	lr, r11, #16, #8
6685	EOR	r5, r5, r2, LSL #24
6686	LSR	r2, r10, #24
6687	LDRB	r6, [r0, r6, LSL #2]
6688	LDRB	r7, [r0, r7, LSL #2]
6689	LDRB	lr, [r0, lr, LSL #2]
6690	LDRB	r2, [r0, r2, LSL #2]
6691	LSR	r11, r11, #24
6692	EOR	r6, r6, r7, LSL #8
6693	UBFX	r7, r10, #0, #8
6694	EOR	r6, r6, lr, LSL #16
6695	UBFX	lr, r9, #8, #8
6696	EOR	r6, r6, r2, LSL #24
6697	UBFX	r2, r8, #16, #8
6698	LDRB	r11, [r0, r11, LSL #2]
6699	LDRB	r7, [r0, r7, LSL #2]
6700	LDRB	lr, [r0, lr, LSL #2]
6701	LDRB	r2, [r0, r2, LSL #2]
6702	EOR	lr, lr, r11, LSL #16
6703	LDM	r3, {r8, r9, r10, r11}
6704	EOR	r7, r7, lr, LSL #8
6705	EOR	r7, r7, r2, LSL #16
6706	/*   XOR in Key Schedule */
6707	EOR	r4, r4, r8
6708	EOR	r5, r5, r9
6709	EOR	r6, r6, r10
6710	EOR	r7, r7, r11
6711#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
6712	POP	{r1, r2, lr}
6713	LDR	r3, [sp]
6714	REV	r4, r4
6715	REV	r5, r5
6716	REV	r6, r6
6717	REV	r7, r7
6718	LDR	r8, [lr]
6719	LDR	r9, [lr, #4]
6720	LDR	r10, [lr, #8]
6721	LDR	r11, [lr, #12]
6722	EOR	r4, r4, r8
6723	EOR	r5, r5, r9
6724	EOR	r6, r6, r10
6725	EOR	r7, r7, r11
6726	LDR	r8, [sp, #4]
6727	STR	r4, [r1]
6728	STR	r5, [r1, #4]
6729	STR	r6, [r1, #8]
6730	STR	r7, [r1, #12]
6731	LDM	r8, {r4, r5, r6, r7}
6732	SUBS	r2, r2, #0x10
6733	ADD	lr, lr, #0x10
6734	ADD	r1, r1, #0x10
6735#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6736	BNE	L_AES_GCM_encrypt_loop_block_256
6737#else
6738	BNE.W	L_AES_GCM_encrypt_loop_block_256
6739#endif
6740#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6741	B	L_AES_GCM_encrypt_end
6742#else
6743	B.W	L_AES_GCM_encrypt_end
6744#endif
6745L_AES_GCM_encrypt_start_block_192:
6746L_AES_GCM_encrypt_loop_block_192:
6747	PUSH	{r1, r2, lr}
6748	LDR	lr, [sp, #16]
6749	ADD	r7, r7, #0x1
6750	LDM	r3!, {r8, r9, r10, r11}
6751	STR	r7, [lr, #12]
6752	/* Round: 0 - XOR in key schedule */
6753	EOR	r4, r4, r8
6754	EOR	r5, r5, r9
6755	EOR	r6, r6, r10
6756	EOR	r7, r7, r11
6757	MOV	r1, #0x5
6758#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
6759	BL	AES_encrypt_block
6760#else
6761L_AES_GCM_encrypt_block_nr_192:
6762	UBFX	r8, r5, #16, #8
6763	LSR	r11, r4, #24
6764	UBFX	lr, r6, #8, #8
6765	UBFX	r2, r7, #0, #8
6766	LDR	r8, [r0, r8, LSL #2]
6767	LDR	r11, [r0, r11, LSL #2]
6768	LDR	lr, [r0, lr, LSL #2]
6769	LDR	r2, [r0, r2, LSL #2]
6770	UBFX	r9, r6, #16, #8
6771	EOR	r8, r8, r11, ROR #24
6772	LSR	r11, r5, #24
6773	EOR	r8, r8, lr, ROR #8
6774	UBFX	lr, r7, #8, #8
6775	EOR	r8, r8, r2, ROR #16
6776	UBFX	r2, r4, #0, #8
6777	LDR	r9, [r0, r9, LSL #2]
6778	LDR	r11, [r0, r11, LSL #2]
6779	LDR	lr, [r0, lr, LSL #2]
6780	LDR	r2, [r0, r2, LSL #2]
6781	UBFX	r10, r7, #16, #8
6782	EOR	r9, r9, r11, ROR #24
6783	LSR	r11, r6, #24
6784	EOR	r9, r9, lr, ROR #8
6785	UBFX	lr, r4, #8, #8
6786	EOR	r9, r9, r2, ROR #16
6787	UBFX	r2, r5, #0, #8
6788	LDR	r10, [r0, r10, LSL #2]
6789	LDR	r11, [r0, r11, LSL #2]
6790	LDR	lr, [r0, lr, LSL #2]
6791	LDR	r2, [r0, r2, LSL #2]
6792	UBFX	r6, r6, #0, #8
6793	EOR	r10, r10, r11, ROR #24
6794	UBFX	r11, r4, #16, #8
6795	EOR	r10, r10, lr, ROR #8
6796	LSR	lr, r7, #24
6797	EOR	r10, r10, r2, ROR #16
6798	UBFX	r2, r5, #8, #8
6799	LDR	r6, [r0, r6, LSL #2]
6800	LDR	lr, [r0, lr, LSL #2]
6801	LDR	r11, [r0, r11, LSL #2]
6802	LDR	r2, [r0, r2, LSL #2]
6803	EOR	lr, lr, r6, ROR #24
6804	LDM	r3!, {r4, r5, r6, r7}
6805	EOR	r11, r11, lr, ROR #24
6806	EOR	r11, r11, r2, ROR #8
6807	/*   XOR in Key Schedule */
6808	EOR	r8, r8, r4
6809	EOR	r9, r9, r5
6810	EOR	r10, r10, r6
6811	EOR	r11, r11, r7
6812	UBFX	r4, r9, #16, #8
6813	LSR	r7, r8, #24
6814	UBFX	lr, r10, #8, #8
6815	UBFX	r2, r11, #0, #8
6816	LDR	r4, [r0, r4, LSL #2]
6817	LDR	r7, [r0, r7, LSL #2]
6818	LDR	lr, [r0, lr, LSL #2]
6819	LDR	r2, [r0, r2, LSL #2]
6820	UBFX	r5, r10, #16, #8
6821	EOR	r4, r4, r7, ROR #24
6822	LSR	r7, r9, #24
6823	EOR	r4, r4, lr, ROR #8
6824	UBFX	lr, r11, #8, #8
6825	EOR	r4, r4, r2, ROR #16
6826	UBFX	r2, r8, #0, #8
6827	LDR	r5, [r0, r5, LSL #2]
6828	LDR	r7, [r0, r7, LSL #2]
6829	LDR	lr, [r0, lr, LSL #2]
6830	LDR	r2, [r0, r2, LSL #2]
6831	UBFX	r6, r11, #16, #8
6832	EOR	r5, r5, r7, ROR #24
6833	LSR	r7, r10, #24
6834	EOR	r5, r5, lr, ROR #8
6835	UBFX	lr, r8, #8, #8
6836	EOR	r5, r5, r2, ROR #16
6837	UBFX	r2, r9, #0, #8
6838	LDR	r6, [r0, r6, LSL #2]
6839	LDR	r7, [r0, r7, LSL #2]
6840	LDR	lr, [r0, lr, LSL #2]
6841	LDR	r2, [r0, r2, LSL #2]
6842	UBFX	r10, r10, #0, #8
6843	EOR	r6, r6, r7, ROR #24
6844	UBFX	r7, r8, #16, #8
6845	EOR	r6, r6, lr, ROR #8
6846	LSR	lr, r11, #24
6847	EOR	r6, r6, r2, ROR #16
6848	UBFX	r2, r9, #8, #8
6849	LDR	r10, [r0, r10, LSL #2]
6850	LDR	lr, [r0, lr, LSL #2]
6851	LDR	r7, [r0, r7, LSL #2]
6852	LDR	r2, [r0, r2, LSL #2]
6853	EOR	lr, lr, r10, ROR #24
6854	LDM	r3!, {r8, r9, r10, r11}
6855	EOR	r7, r7, lr, ROR #24
6856	EOR	r7, r7, r2, ROR #8
6857	/*   XOR in Key Schedule */
6858	EOR	r4, r4, r8
6859	EOR	r5, r5, r9
6860	EOR	r6, r6, r10
6861	EOR	r7, r7, r11
6862	SUBS	r1, r1, #0x1
6863#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6864	BNE	L_AES_GCM_encrypt_block_nr_192
6865#else
6866	BNE.W	L_AES_GCM_encrypt_block_nr_192
6867#endif
6868	UBFX	r8, r5, #16, #8
6869	LSR	r11, r4, #24
6870	UBFX	lr, r6, #8, #8
6871	UBFX	r2, r7, #0, #8
6872	LDR	r8, [r0, r8, LSL #2]
6873	LDR	r11, [r0, r11, LSL #2]
6874	LDR	lr, [r0, lr, LSL #2]
6875	LDR	r2, [r0, r2, LSL #2]
6876	UBFX	r9, r6, #16, #8
6877	EOR	r8, r8, r11, ROR #24
6878	LSR	r11, r5, #24
6879	EOR	r8, r8, lr, ROR #8
6880	UBFX	lr, r7, #8, #8
6881	EOR	r8, r8, r2, ROR #16
6882	UBFX	r2, r4, #0, #8
6883	LDR	r9, [r0, r9, LSL #2]
6884	LDR	r11, [r0, r11, LSL #2]
6885	LDR	lr, [r0, lr, LSL #2]
6886	LDR	r2, [r0, r2, LSL #2]
6887	UBFX	r10, r7, #16, #8
6888	EOR	r9, r9, r11, ROR #24
6889	LSR	r11, r6, #24
6890	EOR	r9, r9, lr, ROR #8
6891	UBFX	lr, r4, #8, #8
6892	EOR	r9, r9, r2, ROR #16
6893	UBFX	r2, r5, #0, #8
6894	LDR	r10, [r0, r10, LSL #2]
6895	LDR	r11, [r0, r11, LSL #2]
6896	LDR	lr, [r0, lr, LSL #2]
6897	LDR	r2, [r0, r2, LSL #2]
6898	UBFX	r6, r6, #0, #8
6899	EOR	r10, r10, r11, ROR #24
6900	UBFX	r11, r4, #16, #8
6901	EOR	r10, r10, lr, ROR #8
6902	LSR	lr, r7, #24
6903	EOR	r10, r10, r2, ROR #16
6904	UBFX	r2, r5, #8, #8
6905	LDR	r6, [r0, r6, LSL #2]
6906	LDR	lr, [r0, lr, LSL #2]
6907	LDR	r11, [r0, r11, LSL #2]
6908	LDR	r2, [r0, r2, LSL #2]
6909	EOR	lr, lr, r6, ROR #24
6910	LDM	r3!, {r4, r5, r6, r7}
6911	EOR	r11, r11, lr, ROR #24
6912	EOR	r11, r11, r2, ROR #8
6913	/*   XOR in Key Schedule */
6914	EOR	r8, r8, r4
6915	EOR	r9, r9, r5
6916	EOR	r10, r10, r6
6917	EOR	r11, r11, r7
6918	UBFX	r4, r11, #0, #8
6919	UBFX	r7, r10, #8, #8
6920	UBFX	lr, r9, #16, #8
6921	LSR	r2, r8, #24
6922	LDRB	r4, [r0, r4, LSL #2]
6923	LDRB	r7, [r0, r7, LSL #2]
6924	LDRB	lr, [r0, lr, LSL #2]
6925	LDRB	r2, [r0, r2, LSL #2]
6926	UBFX	r5, r8, #0, #8
6927	EOR	r4, r4, r7, LSL #8
6928	UBFX	r7, r11, #8, #8
6929	EOR	r4, r4, lr, LSL #16
6930	UBFX	lr, r10, #16, #8
6931	EOR	r4, r4, r2, LSL #24
6932	LSR	r2, r9, #24
6933	LDRB	r5, [r0, r5, LSL #2]
6934	LDRB	r7, [r0, r7, LSL #2]
6935	LDRB	lr, [r0, lr, LSL #2]
6936	LDRB	r2, [r0, r2, LSL #2]
6937	UBFX	r6, r9, #0, #8
6938	EOR	r5, r5, r7, LSL #8
6939	UBFX	r7, r8, #8, #8
6940	EOR	r5, r5, lr, LSL #16
6941	UBFX	lr, r11, #16, #8
6942	EOR	r5, r5, r2, LSL #24
6943	LSR	r2, r10, #24
6944	LDRB	r6, [r0, r6, LSL #2]
6945	LDRB	r7, [r0, r7, LSL #2]
6946	LDRB	lr, [r0, lr, LSL #2]
6947	LDRB	r2, [r0, r2, LSL #2]
6948	LSR	r11, r11, #24
6949	EOR	r6, r6, r7, LSL #8
6950	UBFX	r7, r10, #0, #8
6951	EOR	r6, r6, lr, LSL #16
6952	UBFX	lr, r9, #8, #8
6953	EOR	r6, r6, r2, LSL #24
6954	UBFX	r2, r8, #16, #8
6955	LDRB	r11, [r0, r11, LSL #2]
6956	LDRB	r7, [r0, r7, LSL #2]
6957	LDRB	lr, [r0, lr, LSL #2]
6958	LDRB	r2, [r0, r2, LSL #2]
6959	EOR	lr, lr, r11, LSL #16
6960	LDM	r3, {r8, r9, r10, r11}
6961	EOR	r7, r7, lr, LSL #8
6962	EOR	r7, r7, r2, LSL #16
6963	/*   XOR in Key Schedule */
6964	EOR	r4, r4, r8
6965	EOR	r5, r5, r9
6966	EOR	r6, r6, r10
6967	EOR	r7, r7, r11
6968#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
6969	POP	{r1, r2, lr}
6970	LDR	r3, [sp]
6971	REV	r4, r4
6972	REV	r5, r5
6973	REV	r6, r6
6974	REV	r7, r7
6975	LDR	r8, [lr]
6976	LDR	r9, [lr, #4]
6977	LDR	r10, [lr, #8]
6978	LDR	r11, [lr, #12]
6979	EOR	r4, r4, r8
6980	EOR	r5, r5, r9
6981	EOR	r6, r6, r10
6982	EOR	r7, r7, r11
6983	LDR	r8, [sp, #4]
6984	STR	r4, [r1]
6985	STR	r5, [r1, #4]
6986	STR	r6, [r1, #8]
6987	STR	r7, [r1, #12]
6988	LDM	r8, {r4, r5, r6, r7}
6989	SUBS	r2, r2, #0x10
6990	ADD	lr, lr, #0x10
6991	ADD	r1, r1, #0x10
6992#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6993	BNE	L_AES_GCM_encrypt_loop_block_192
6994#else
6995	BNE.W	L_AES_GCM_encrypt_loop_block_192
6996#endif
6997#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
6998	B	L_AES_GCM_encrypt_end
6999#else
7000	B.W	L_AES_GCM_encrypt_end
7001#endif
7002L_AES_GCM_encrypt_start_block_128:
7003L_AES_GCM_encrypt_loop_block_128:
7004	PUSH	{r1, r2, lr}
7005	LDR	lr, [sp, #16]
7006	ADD	r7, r7, #0x1
7007	LDM	r3!, {r8, r9, r10, r11}
7008	STR	r7, [lr, #12]
7009	/* Round: 0 - XOR in key schedule */
7010	EOR	r4, r4, r8
7011	EOR	r5, r5, r9
7012	EOR	r6, r6, r10
7013	EOR	r7, r7, r11
7014	MOV	r1, #0x4
7015#ifndef WOLFSSL_ARMASM_AES_BLOCK_INLINE
7016	BL	AES_encrypt_block
7017#else
7018L_AES_GCM_encrypt_block_nr_128:
7019	UBFX	r8, r5, #16, #8
7020	LSR	r11, r4, #24
7021	UBFX	lr, r6, #8, #8
7022	UBFX	r2, r7, #0, #8
7023	LDR	r8, [r0, r8, LSL #2]
7024	LDR	r11, [r0, r11, LSL #2]
7025	LDR	lr, [r0, lr, LSL #2]
7026	LDR	r2, [r0, r2, LSL #2]
7027	UBFX	r9, r6, #16, #8
7028	EOR	r8, r8, r11, ROR #24
7029	LSR	r11, r5, #24
7030	EOR	r8, r8, lr, ROR #8
7031	UBFX	lr, r7, #8, #8
7032	EOR	r8, r8, r2, ROR #16
7033	UBFX	r2, r4, #0, #8
7034	LDR	r9, [r0, r9, LSL #2]
7035	LDR	r11, [r0, r11, LSL #2]
7036	LDR	lr, [r0, lr, LSL #2]
7037	LDR	r2, [r0, r2, LSL #2]
7038	UBFX	r10, r7, #16, #8
7039	EOR	r9, r9, r11, ROR #24
7040	LSR	r11, r6, #24
7041	EOR	r9, r9, lr, ROR #8
7042	UBFX	lr, r4, #8, #8
7043	EOR	r9, r9, r2, ROR #16
7044	UBFX	r2, r5, #0, #8
7045	LDR	r10, [r0, r10, LSL #2]
7046	LDR	r11, [r0, r11, LSL #2]
7047	LDR	lr, [r0, lr, LSL #2]
7048	LDR	r2, [r0, r2, LSL #2]
7049	UBFX	r6, r6, #0, #8
7050	EOR	r10, r10, r11, ROR #24
7051	UBFX	r11, r4, #16, #8
7052	EOR	r10, r10, lr, ROR #8
7053	LSR	lr, r7, #24
7054	EOR	r10, r10, r2, ROR #16
7055	UBFX	r2, r5, #8, #8
7056	LDR	r6, [r0, r6, LSL #2]
7057	LDR	lr, [r0, lr, LSL #2]
7058	LDR	r11, [r0, r11, LSL #2]
7059	LDR	r2, [r0, r2, LSL #2]
7060	EOR	lr, lr, r6, ROR #24
7061	LDM	r3!, {r4, r5, r6, r7}
7062	EOR	r11, r11, lr, ROR #24
7063	EOR	r11, r11, r2, ROR #8
7064	/*   XOR in Key Schedule */
7065	EOR	r8, r8, r4
7066	EOR	r9, r9, r5
7067	EOR	r10, r10, r6
7068	EOR	r11, r11, r7
7069	UBFX	r4, r9, #16, #8
7070	LSR	r7, r8, #24
7071	UBFX	lr, r10, #8, #8
7072	UBFX	r2, r11, #0, #8
7073	LDR	r4, [r0, r4, LSL #2]
7074	LDR	r7, [r0, r7, LSL #2]
7075	LDR	lr, [r0, lr, LSL #2]
7076	LDR	r2, [r0, r2, LSL #2]
7077	UBFX	r5, r10, #16, #8
7078	EOR	r4, r4, r7, ROR #24
7079	LSR	r7, r9, #24
7080	EOR	r4, r4, lr, ROR #8
7081	UBFX	lr, r11, #8, #8
7082	EOR	r4, r4, r2, ROR #16
7083	UBFX	r2, r8, #0, #8
7084	LDR	r5, [r0, r5, LSL #2]
7085	LDR	r7, [r0, r7, LSL #2]
7086	LDR	lr, [r0, lr, LSL #2]
7087	LDR	r2, [r0, r2, LSL #2]
7088	UBFX	r6, r11, #16, #8
7089	EOR	r5, r5, r7, ROR #24
7090	LSR	r7, r10, #24
7091	EOR	r5, r5, lr, ROR #8
7092	UBFX	lr, r8, #8, #8
7093	EOR	r5, r5, r2, ROR #16
7094	UBFX	r2, r9, #0, #8
7095	LDR	r6, [r0, r6, LSL #2]
7096	LDR	r7, [r0, r7, LSL #2]
7097	LDR	lr, [r0, lr, LSL #2]
7098	LDR	r2, [r0, r2, LSL #2]
7099	UBFX	r10, r10, #0, #8
7100	EOR	r6, r6, r7, ROR #24
7101	UBFX	r7, r8, #16, #8
7102	EOR	r6, r6, lr, ROR #8
7103	LSR	lr, r11, #24
7104	EOR	r6, r6, r2, ROR #16
7105	UBFX	r2, r9, #8, #8
7106	LDR	r10, [r0, r10, LSL #2]
7107	LDR	lr, [r0, lr, LSL #2]
7108	LDR	r7, [r0, r7, LSL #2]
7109	LDR	r2, [r0, r2, LSL #2]
7110	EOR	lr, lr, r10, ROR #24
7111	LDM	r3!, {r8, r9, r10, r11}
7112	EOR	r7, r7, lr, ROR #24
7113	EOR	r7, r7, r2, ROR #8
7114	/*   XOR in Key Schedule */
7115	EOR	r4, r4, r8
7116	EOR	r5, r5, r9
7117	EOR	r6, r6, r10
7118	EOR	r7, r7, r11
7119	SUBS	r1, r1, #0x1
7120#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
7121	BNE	L_AES_GCM_encrypt_block_nr_128
7122#else
7123	BNE.W	L_AES_GCM_encrypt_block_nr_128
7124#endif
7125	UBFX	r8, r5, #16, #8
7126	LSR	r11, r4, #24
7127	UBFX	lr, r6, #8, #8
7128	UBFX	r2, r7, #0, #8
7129	LDR	r8, [r0, r8, LSL #2]
7130	LDR	r11, [r0, r11, LSL #2]
7131	LDR	lr, [r0, lr, LSL #2]
7132	LDR	r2, [r0, r2, LSL #2]
7133	UBFX	r9, r6, #16, #8
7134	EOR	r8, r8, r11, ROR #24
7135	LSR	r11, r5, #24
7136	EOR	r8, r8, lr, ROR #8
7137	UBFX	lr, r7, #8, #8
7138	EOR	r8, r8, r2, ROR #16
7139	UBFX	r2, r4, #0, #8
7140	LDR	r9, [r0, r9, LSL #2]
7141	LDR	r11, [r0, r11, LSL #2]
7142	LDR	lr, [r0, lr, LSL #2]
7143	LDR	r2, [r0, r2, LSL #2]
7144	UBFX	r10, r7, #16, #8
7145	EOR	r9, r9, r11, ROR #24
7146	LSR	r11, r6, #24
7147	EOR	r9, r9, lr, ROR #8
7148	UBFX	lr, r4, #8, #8
7149	EOR	r9, r9, r2, ROR #16
7150	UBFX	r2, r5, #0, #8
7151	LDR	r10, [r0, r10, LSL #2]
7152	LDR	r11, [r0, r11, LSL #2]
7153	LDR	lr, [r0, lr, LSL #2]
7154	LDR	r2, [r0, r2, LSL #2]
7155	UBFX	r6, r6, #0, #8
7156	EOR	r10, r10, r11, ROR #24
7157	UBFX	r11, r4, #16, #8
7158	EOR	r10, r10, lr, ROR #8
7159	LSR	lr, r7, #24
7160	EOR	r10, r10, r2, ROR #16
7161	UBFX	r2, r5, #8, #8
7162	LDR	r6, [r0, r6, LSL #2]
7163	LDR	lr, [r0, lr, LSL #2]
7164	LDR	r11, [r0, r11, LSL #2]
7165	LDR	r2, [r0, r2, LSL #2]
7166	EOR	lr, lr, r6, ROR #24
7167	LDM	r3!, {r4, r5, r6, r7}
7168	EOR	r11, r11, lr, ROR #24
7169	EOR	r11, r11, r2, ROR #8
7170	/*   XOR in Key Schedule */
7171	EOR	r8, r8, r4
7172	EOR	r9, r9, r5
7173	EOR	r10, r10, r6
7174	EOR	r11, r11, r7
7175	UBFX	r4, r11, #0, #8
7176	UBFX	r7, r10, #8, #8
7177	UBFX	lr, r9, #16, #8
7178	LSR	r2, r8, #24
7179	LDRB	r4, [r0, r4, LSL #2]
7180	LDRB	r7, [r0, r7, LSL #2]
7181	LDRB	lr, [r0, lr, LSL #2]
7182	LDRB	r2, [r0, r2, LSL #2]
7183	UBFX	r5, r8, #0, #8
7184	EOR	r4, r4, r7, LSL #8
7185	UBFX	r7, r11, #8, #8
7186	EOR	r4, r4, lr, LSL #16
7187	UBFX	lr, r10, #16, #8
7188	EOR	r4, r4, r2, LSL #24
7189	LSR	r2, r9, #24
7190	LDRB	r5, [r0, r5, LSL #2]
7191	LDRB	r7, [r0, r7, LSL #2]
7192	LDRB	lr, [r0, lr, LSL #2]
7193	LDRB	r2, [r0, r2, LSL #2]
7194	UBFX	r6, r9, #0, #8
7195	EOR	r5, r5, r7, LSL #8
7196	UBFX	r7, r8, #8, #8
7197	EOR	r5, r5, lr, LSL #16
7198	UBFX	lr, r11, #16, #8
7199	EOR	r5, r5, r2, LSL #24
7200	LSR	r2, r10, #24
7201	LDRB	r6, [r0, r6, LSL #2]
7202	LDRB	r7, [r0, r7, LSL #2]
7203	LDRB	lr, [r0, lr, LSL #2]
7204	LDRB	r2, [r0, r2, LSL #2]
7205	LSR	r11, r11, #24
7206	EOR	r6, r6, r7, LSL #8
7207	UBFX	r7, r10, #0, #8
7208	EOR	r6, r6, lr, LSL #16
7209	UBFX	lr, r9, #8, #8
7210	EOR	r6, r6, r2, LSL #24
7211	UBFX	r2, r8, #16, #8
7212	LDRB	r11, [r0, r11, LSL #2]
7213	LDRB	r7, [r0, r7, LSL #2]
7214	LDRB	lr, [r0, lr, LSL #2]
7215	LDRB	r2, [r0, r2, LSL #2]
7216	EOR	lr, lr, r11, LSL #16
7217	LDM	r3, {r8, r9, r10, r11}
7218	EOR	r7, r7, lr, LSL #8
7219	EOR	r7, r7, r2, LSL #16
7220	/*   XOR in Key Schedule */
7221	EOR	r4, r4, r8
7222	EOR	r5, r5, r9
7223	EOR	r6, r6, r10
7224	EOR	r7, r7, r11
7225#endif /* !WOLFSSL_ARMASM_AES_BLOCK_INLINE */
7226	POP	{r1, r2, lr}
7227	LDR	r3, [sp]
7228	REV	r4, r4
7229	REV	r5, r5
7230	REV	r6, r6
7231	REV	r7, r7
7232	LDR	r8, [lr]
7233	LDR	r9, [lr, #4]
7234	LDR	r10, [lr, #8]
7235	LDR	r11, [lr, #12]
7236	EOR	r4, r4, r8
7237	EOR	r5, r5, r9
7238	EOR	r6, r6, r10
7239	EOR	r7, r7, r11
7240	LDR	r8, [sp, #4]
7241	STR	r4, [r1]
7242	STR	r5, [r1, #4]
7243	STR	r6, [r1, #8]
7244	STR	r7, [r1, #12]
7245	LDM	r8, {r4, r5, r6, r7}
7246	SUBS	r2, r2, #0x10
7247	ADD	lr, lr, #0x10
7248	ADD	r1, r1, #0x10
7249#if defined(__GNUC__) || defined(__ICCARM__) || defined(__IAR_SYSTEMS_ICC__)
7250	BNE	L_AES_GCM_encrypt_loop_block_128
7251#else
7252	BNE.W	L_AES_GCM_encrypt_loop_block_128
7253#endif
7254L_AES_GCM_encrypt_end:
7255	POP	{r3, r8}
7256	REV	r4, r4
7257	REV	r5, r5
7258	REV	r6, r6
7259	REV	r7, r7
7260	STM	r8, {r4, r5, r6, r7}
7261	POP	{r4, r5, r6, r7, r8, r9, r10, r11, pc}
7262	/* Cycle Count = 1118 */
7263	.size	AES_GCM_encrypt,.-AES_GCM_encrypt
7264#endif /* HAVE_AESGCM */
7265#endif /* !NO_AES */
7266#endif /* WOLFSSL_ARMASM_THUMB2 */
7267#endif /* WOLFSSL_ARMASM */
7268
7269#if defined(__linux__) && defined(__ELF__)
7270.section	.note.GNU-stack,"",%progbits
7271#endif
7272#endif /* !WOLFSSL_ARMASM_INLINE */