cjson
fuzzing
inputs
test1 test10 test11 test2 test3 test3.bu test3.uf test3.uu test4 test5 test6 test7 test8 test9library_config
cJSONConfig.cmake.in cJSONConfigVersion.cmake.in libcjson.pc.in libcjson_utils.pc.in uninstall.cmaketests
inputs
test1 test1.expected test10 test10.expected test11 test11.expected test2 test2.expected test3 test3.expected test4 test4.expected test5 test5.expected test6 test7 test7.expected test8 test8.expected test9 test9.expectedjson-patch-tests
.editorconfig .gitignore .npmignore README.md cjson-utils-tests.json package.json spec_tests.json tests.jsonunity
auto
colour_prompt.rb colour_reporter.rb generate_config.yml generate_module.rb generate_test_runner.rb parse_output.rb stylize_as_junit.rb test_file_filter.rb type_sanitizer.rb unity_test_summary.py unity_test_summary.rb unity_to_junit.pydocs
ThrowTheSwitchCodingStandard.md UnityAssertionsCheatSheetSuitableforPrintingandPossiblyFraming.pdf UnityAssertionsReference.md UnityConfigurationGuide.md UnityGettingStartedGuide.md UnityHelperScriptsGuide.md license.txtexamples
unity_config.hcurl
.github
scripts
cleancmd.pl cmp-config.pl cmp-pkg-config.sh codespell-ignore.words codespell.sh distfiles.sh pyspelling.words pyspelling.yaml randcurl.pl requirements-docs.txt requirements-proselint.txt requirements.txt shellcheck-ci.sh shellcheck.sh spellcheck.curl trimmarkdownheader.pl typos.sh typos.toml verify-examples.pl verify-synopsis.pl yamlcheck.sh yamlcheck.yamlworkflows
appveyor-status.yml checkdocs.yml checksrc.yml checkurls.yml codeql.yml configure-vs-cmake.yml curl-for-win.yml distcheck.yml fuzz.yml http3-linux.yml label.yml linux-old.yml linux.yml macos.yml non-native.yml windows.ymlCMake
CurlSymbolHiding.cmake CurlTests.c FindBrotli.cmake FindCares.cmake FindGSS.cmake FindGnuTLS.cmake FindLDAP.cmake FindLibbacktrace.cmake FindLibgsasl.cmake FindLibidn2.cmake FindLibpsl.cmake FindLibssh.cmake FindLibssh2.cmake FindLibuv.cmake FindMbedTLS.cmake FindNGHTTP2.cmake FindNGHTTP3.cmake FindNGTCP2.cmake FindNettle.cmake FindQuiche.cmake FindRustls.cmake FindWolfSSL.cmake FindZstd.cmake Macros.cmake OtherTests.cmake PickyWarnings.cmake Utilities.cmake cmake_uninstall.in.cmake curl-config.in.cmake unix-cache.cmake win32-cache.cmakedocs
cmdline-opts
.gitignore CMakeLists.txt MANPAGE.md Makefile.am Makefile.inc _AUTHORS.md _BUGS.md _DESCRIPTION.md _ENVIRONMENT.md _EXITCODES.md _FILES.md _GLOBBING.md _NAME.md _OPTIONS.md _OUTPUT.md _PROGRESS.md _PROTOCOLS.md _PROXYPREFIX.md _SEEALSO.md _SYNOPSIS.md _URL.md _VARIABLES.md _VERSION.md _WWW.md abstract-unix-socket.md alt-svc.md anyauth.md append.md aws-sigv4.md basic.md ca-native.md cacert.md capath.md cert-status.md cert-type.md cert.md ciphers.md compressed-ssh.md compressed.md config.md connect-timeout.md connect-to.md continue-at.md cookie-jar.md cookie.md create-dirs.md create-file-mode.md crlf.md crlfile.md curves.md data-ascii.md data-binary.md data-raw.md data-urlencode.md data.md delegation.md digest.md disable-eprt.md disable-epsv.md disable.md disallow-username-in-url.md dns-interface.md dns-ipv4-addr.md dns-ipv6-addr.md dns-servers.md doh-cert-status.md doh-insecure.md doh-url.md dump-ca-embed.md dump-header.md ech.md egd-file.md engine.md etag-compare.md etag-save.md expect100-timeout.md fail-early.md fail-with-body.md fail.md false-start.md follow.md form-escape.md form-string.md form.md ftp-account.md ftp-alternative-to-user.md ftp-create-dirs.md ftp-method.md ftp-pasv.md ftp-port.md ftp-pret.md ftp-skip-pasv-ip.md ftp-ssl-ccc-mode.md ftp-ssl-ccc.md ftp-ssl-control.md get.md globoff.md happy-eyeballs-timeout-ms.md haproxy-clientip.md haproxy-protocol.md head.md header.md help.md hostpubmd5.md hostpubsha256.md hsts.md http0.9.md http1.0.md http1.1.md http2-prior-knowledge.md http2.md http3-only.md http3.md ignore-content-length.md insecure.md interface.md ip-tos.md ipfs-gateway.md ipv4.md ipv6.md json.md junk-session-cookies.md keepalive-cnt.md keepalive-time.md key-type.md key.md knownhosts.md krb.md libcurl.md limit-rate.md list-only.md local-port.md location-trusted.md location.md login-options.md mail-auth.md mail-from.md mail-rcpt-allowfails.md mail-rcpt.md mainpage.idx manual.md max-filesize.md max-redirs.md max-time.md metalink.md mptcp.md negotiate.md netrc-file.md netrc-optional.md netrc.md next.md no-alpn.md no-buffer.md no-clobber.md no-keepalive.md no-npn.md no-progress-meter.md no-sessionid.md noproxy.md ntlm-wb.md ntlm.md oauth2-bearer.md out-null.md output-dir.md output.md parallel-immediate.md parallel-max-host.md parallel-max.md parallel.md pass.md path-as-is.md pinnedpubkey.md post301.md post302.md post303.md preproxy.md progress-bar.md proto-default.md proto-redir.md proto.md proxy-anyauth.md proxy-basic.md proxy-ca-native.md proxy-cacert.md proxy-capath.md proxy-cert-type.md proxy-cert.md proxy-ciphers.md proxy-crlfile.md proxy-digest.md proxy-header.md proxy-http2.md proxy-insecure.md proxy-key-type.md proxy-key.md proxy-negotiate.md proxy-ntlm.md proxy-pass.md proxy-pinnedpubkey.md proxy-service-name.md proxy-ssl-allow-beast.md proxy-ssl-auto-client-cert.md proxy-tls13-ciphers.md proxy-tlsauthtype.md proxy-tlspassword.md proxy-tlsuser.md proxy-tlsv1.md proxy-user.md proxy.md proxy1.0.md proxytunnel.md pubkey.md quote.md random-file.md range.md rate.md raw.md referer.md remote-header-name.md remote-name-all.md remote-name.md remote-time.md remove-on-error.md request-target.md request.md resolve.md retry-all-errors.md retry-connrefused.md retry-delay.md retry-max-time.md retry.md sasl-authzid.md sasl-ir.md service-name.md show-error.md show-headers.md sigalgs.md silent.md skip-existing.md socks4.md socks4a.md socks5-basic.md socks5-gssapi-nec.md socks5-gssapi-service.md socks5-gssapi.md socks5-hostname.md socks5.md speed-limit.md speed-time.md ssl-allow-beast.md ssl-auto-client-cert.md ssl-no-revoke.md ssl-reqd.md ssl-revoke-best-effort.md ssl-sessions.md ssl.md sslv2.md sslv3.md stderr.md styled-output.md suppress-connect-headers.md tcp-fastopen.md tcp-nodelay.md telnet-option.md tftp-blksize.md tftp-no-options.md time-cond.md tls-earlydata.md tls-max.md tls13-ciphers.md tlsauthtype.md tlspassword.md tlsuser.md tlsv1.0.md tlsv1.1.md tlsv1.2.md tlsv1.3.md tlsv1.md tr-encoding.md trace-ascii.md trace-config.md trace-ids.md trace-time.md trace.md unix-socket.md upload-file.md upload-flags.md url-query.md url.md use-ascii.md user-agent.md user.md variable.md verbose.md version.md vlan-priority.md write-out.md xattr.mdexamples
.checksrc .gitignore 10-at-a-time.c CMakeLists.txt Makefile.am Makefile.example Makefile.inc README.md adddocsref.pl address-scope.c altsvc.c anyauthput.c block_ip.c cacertinmem.c certinfo.c chkspeed.c connect-to.c cookie_interface.c crawler.c debug.c default-scheme.c ephiperfifo.c evhiperfifo.c externalsocket.c fileupload.c ftp-delete.c ftp-wildcard.c ftpget.c ftpgetinfo.c ftpgetresp.c ftpsget.c ftpupload.c ftpuploadfrommem.c ftpuploadresume.c getinfo.c getinmemory.c getredirect.c getreferrer.c ghiper.c headerapi.c hiperfifo.c hsts-preload.c htmltidy.c htmltitle.cpp http-options.c http-post.c http2-download.c http2-pushinmemory.c http2-serverpush.c http2-upload.c http3-present.c http3.c httpcustomheader.c httpput-postfields.c httpput.c https.c imap-append.c imap-authzid.c imap-copy.c imap-create.c imap-delete.c imap-examine.c imap-fetch.c imap-list.c imap-lsub.c imap-multi.c imap-noop.c imap-search.c imap-ssl.c imap-store.c imap-tls.c interface.c ipv6.c keepalive.c localport.c log_failed_transfers.c maxconnects.c multi-app.c multi-debugcallback.c multi-double.c multi-event.c multi-formadd.c multi-legacy.c multi-post.c multi-single.c multi-uv.c netrc.c parseurl.c persistent.c pop3-authzid.c pop3-dele.c pop3-list.c pop3-multi.c pop3-noop.c pop3-retr.c pop3-ssl.c pop3-stat.c pop3-tls.c pop3-top.c pop3-uidl.c post-callback.c postinmemory.c postit2-formadd.c postit2.c progressfunc.c protofeats.c range.c resolve.c rtsp-options.c sendrecv.c sepheaders.c sessioninfo.c sftpget.c sftpuploadresume.c shared-connection-cache.c simple.c simplepost.c simplessl.c smooth-gtk-thread.c smtp-authzid.c smtp-expn.c smtp-mail.c smtp-mime.c smtp-multi.c smtp-ssl.c smtp-tls.c smtp-vrfy.c sslbackend.c synctime.c threaded.c unixsocket.c url2file.c urlapi.c usercertinmem.c version-check.pl websocket-cb.c websocket-updown.c websocket.c xmlstream.cinternals
BUFQ.md BUFREF.md CHECKSRC.md CLIENT-READERS.md CLIENT-WRITERS.md CODE_STYLE.md CONNECTION-FILTERS.md CREDENTIALS.md CURLX.md DYNBUF.md HASH.md LLIST.md MID.md MQTT.md MULTI-EV.md NEW-PROTOCOL.md PEERS.md PORTING.md RATELIMITS.md README.md SCORECARD.md SPLAY.md STRPARSE.md THRDPOOL-AND-QUEUE.md TIME-KEEPING.md TLS-SESSIONS.md UINT_SETS.md WEBSOCKET.mdlibcurl
opts
CMakeLists.txt CURLINFO_ACTIVESOCKET.md CURLINFO_APPCONNECT_TIME.md CURLINFO_APPCONNECT_TIME_T.md CURLINFO_CAINFO.md CURLINFO_CAPATH.md CURLINFO_CERTINFO.md CURLINFO_CONDITION_UNMET.md CURLINFO_CONNECT_TIME.md CURLINFO_CONNECT_TIME_T.md CURLINFO_CONN_ID.md CURLINFO_CONTENT_LENGTH_DOWNLOAD.md CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md CURLINFO_CONTENT_LENGTH_UPLOAD.md CURLINFO_CONTENT_LENGTH_UPLOAD_T.md CURLINFO_CONTENT_TYPE.md CURLINFO_COOKIELIST.md CURLINFO_EARLYDATA_SENT_T.md CURLINFO_EFFECTIVE_METHOD.md CURLINFO_EFFECTIVE_URL.md CURLINFO_FILETIME.md CURLINFO_FILETIME_T.md CURLINFO_FTP_ENTRY_PATH.md CURLINFO_HEADER_SIZE.md CURLINFO_HTTPAUTH_AVAIL.md CURLINFO_HTTPAUTH_USED.md CURLINFO_HTTP_CONNECTCODE.md CURLINFO_HTTP_VERSION.md CURLINFO_LASTSOCKET.md CURLINFO_LOCAL_IP.md CURLINFO_LOCAL_PORT.md CURLINFO_NAMELOOKUP_TIME.md CURLINFO_NAMELOOKUP_TIME_T.md CURLINFO_NUM_CONNECTS.md CURLINFO_OS_ERRNO.md CURLINFO_POSTTRANSFER_TIME_T.md CURLINFO_PRETRANSFER_TIME.md CURLINFO_PRETRANSFER_TIME_T.md CURLINFO_PRIMARY_IP.md CURLINFO_PRIMARY_PORT.md CURLINFO_PRIVATE.md CURLINFO_PROTOCOL.md CURLINFO_PROXYAUTH_AVAIL.md CURLINFO_PROXYAUTH_USED.md CURLINFO_PROXY_ERROR.md CURLINFO_PROXY_SSL_VERIFYRESULT.md CURLINFO_QUEUE_TIME_T.md CURLINFO_REDIRECT_COUNT.md CURLINFO_REDIRECT_TIME.md CURLINFO_REDIRECT_TIME_T.md CURLINFO_REDIRECT_URL.md CURLINFO_REFERER.md CURLINFO_REQUEST_SIZE.md CURLINFO_RESPONSE_CODE.md CURLINFO_RETRY_AFTER.md CURLINFO_RTSP_CLIENT_CSEQ.md CURLINFO_RTSP_CSEQ_RECV.md CURLINFO_RTSP_SERVER_CSEQ.md CURLINFO_RTSP_SESSION_ID.md CURLINFO_SCHEME.md CURLINFO_SIZE_DELIVERED.md CURLINFO_SIZE_DOWNLOAD.md CURLINFO_SIZE_DOWNLOAD_T.md CURLINFO_SIZE_UPLOAD.md CURLINFO_SIZE_UPLOAD_T.md CURLINFO_SPEED_DOWNLOAD.md CURLINFO_SPEED_DOWNLOAD_T.md CURLINFO_SPEED_UPLOAD.md CURLINFO_SPEED_UPLOAD_T.md CURLINFO_SSL_ENGINES.md CURLINFO_SSL_VERIFYRESULT.md CURLINFO_STARTTRANSFER_TIME.md CURLINFO_STARTTRANSFER_TIME_T.md CURLINFO_TLS_SESSION.md CURLINFO_TLS_SSL_PTR.md CURLINFO_TOTAL_TIME.md CURLINFO_TOTAL_TIME_T.md CURLINFO_USED_PROXY.md CURLINFO_XFER_ID.md CURLMINFO_XFERS_ADDED.md CURLMINFO_XFERS_CURRENT.md CURLMINFO_XFERS_DONE.md CURLMINFO_XFERS_PENDING.md CURLMINFO_XFERS_RUNNING.md CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.md CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.md CURLMOPT_MAXCONNECTS.md CURLMOPT_MAX_CONCURRENT_STREAMS.md CURLMOPT_MAX_HOST_CONNECTIONS.md CURLMOPT_MAX_PIPELINE_LENGTH.md CURLMOPT_MAX_TOTAL_CONNECTIONS.md CURLMOPT_NETWORK_CHANGED.md CURLMOPT_NOTIFYDATA.md CURLMOPT_NOTIFYFUNCTION.md CURLMOPT_PIPELINING.md CURLMOPT_PIPELINING_SERVER_BL.md CURLMOPT_PIPELINING_SITE_BL.md CURLMOPT_PUSHDATA.md CURLMOPT_PUSHFUNCTION.md CURLMOPT_QUICK_EXIT.md CURLMOPT_RESOLVE_THREADS_MAX.md CURLMOPT_SOCKETDATA.md CURLMOPT_SOCKETFUNCTION.md CURLMOPT_TIMERDATA.md CURLMOPT_TIMERFUNCTION.md CURLOPT_ABSTRACT_UNIX_SOCKET.md CURLOPT_ACCEPTTIMEOUT_MS.md CURLOPT_ACCEPT_ENCODING.md CURLOPT_ADDRESS_SCOPE.md CURLOPT_ALTSVC.md CURLOPT_ALTSVC_CTRL.md CURLOPT_APPEND.md CURLOPT_AUTOREFERER.md CURLOPT_AWS_SIGV4.md CURLOPT_BUFFERSIZE.md CURLOPT_CAINFO.md CURLOPT_CAINFO_BLOB.md CURLOPT_CAPATH.md CURLOPT_CA_CACHE_TIMEOUT.md CURLOPT_CERTINFO.md CURLOPT_CHUNK_BGN_FUNCTION.md CURLOPT_CHUNK_DATA.md CURLOPT_CHUNK_END_FUNCTION.md CURLOPT_CLOSESOCKETDATA.md CURLOPT_CLOSESOCKETFUNCTION.md CURLOPT_CONNECTTIMEOUT.md CURLOPT_CONNECTTIMEOUT_MS.md CURLOPT_CONNECT_ONLY.md CURLOPT_CONNECT_TO.md CURLOPT_CONV_FROM_NETWORK_FUNCTION.md CURLOPT_CONV_FROM_UTF8_FUNCTION.md CURLOPT_CONV_TO_NETWORK_FUNCTION.md CURLOPT_COOKIE.md CURLOPT_COOKIEFILE.md CURLOPT_COOKIEJAR.md CURLOPT_COOKIELIST.md CURLOPT_COOKIESESSION.md CURLOPT_COPYPOSTFIELDS.md CURLOPT_CRLF.md CURLOPT_CRLFILE.md CURLOPT_CURLU.md CURLOPT_CUSTOMREQUEST.md CURLOPT_DEBUGDATA.md CURLOPT_DEBUGFUNCTION.md CURLOPT_DEFAULT_PROTOCOL.md CURLOPT_DIRLISTONLY.md CURLOPT_DISALLOW_USERNAME_IN_URL.md CURLOPT_DNS_CACHE_TIMEOUT.md CURLOPT_DNS_INTERFACE.md CURLOPT_DNS_LOCAL_IP4.md CURLOPT_DNS_LOCAL_IP6.md CURLOPT_DNS_SERVERS.md CURLOPT_DNS_SHUFFLE_ADDRESSES.md CURLOPT_DNS_USE_GLOBAL_CACHE.md CURLOPT_DOH_SSL_VERIFYHOST.md CURLOPT_DOH_SSL_VERIFYPEER.md CURLOPT_DOH_SSL_VERIFYSTATUS.md CURLOPT_DOH_URL.md CURLOPT_ECH.md CURLOPT_EGDSOCKET.md CURLOPT_ERRORBUFFER.md CURLOPT_EXPECT_100_TIMEOUT_MS.md CURLOPT_FAILONERROR.md CURLOPT_FILETIME.md CURLOPT_FNMATCH_DATA.md CURLOPT_FNMATCH_FUNCTION.md CURLOPT_FOLLOWLOCATION.md CURLOPT_FORBID_REUSE.md CURLOPT_FRESH_CONNECT.md CURLOPT_FTPPORT.md CURLOPT_FTPSSLAUTH.md CURLOPT_FTP_ACCOUNT.md CURLOPT_FTP_ALTERNATIVE_TO_USER.md CURLOPT_FTP_CREATE_MISSING_DIRS.md CURLOPT_FTP_FILEMETHOD.md CURLOPT_FTP_SKIP_PASV_IP.md CURLOPT_FTP_SSL_CCC.md CURLOPT_FTP_USE_EPRT.md CURLOPT_FTP_USE_EPSV.md CURLOPT_FTP_USE_PRET.md CURLOPT_GSSAPI_DELEGATION.md CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.md CURLOPT_HAPROXYPROTOCOL.md CURLOPT_HAPROXY_CLIENT_IP.md CURLOPT_HEADER.md CURLOPT_HEADERDATA.md CURLOPT_HEADERFUNCTION.md CURLOPT_HEADEROPT.md CURLOPT_HSTS.md CURLOPT_HSTSREADDATA.md CURLOPT_HSTSREADFUNCTION.md CURLOPT_HSTSWRITEDATA.md CURLOPT_HSTSWRITEFUNCTION.md CURLOPT_HSTS_CTRL.md CURLOPT_HTTP09_ALLOWED.md CURLOPT_HTTP200ALIASES.md CURLOPT_HTTPAUTH.md CURLOPT_HTTPGET.md CURLOPT_HTTPHEADER.md CURLOPT_HTTPPOST.md CURLOPT_HTTPPROXYTUNNEL.md CURLOPT_HTTP_CONTENT_DECODING.md CURLOPT_HTTP_TRANSFER_DECODING.md CURLOPT_HTTP_VERSION.md CURLOPT_IGNORE_CONTENT_LENGTH.md CURLOPT_INFILESIZE.md CURLOPT_INFILESIZE_LARGE.md CURLOPT_INTERFACE.md CURLOPT_INTERLEAVEDATA.md CURLOPT_INTERLEAVEFUNCTION.md CURLOPT_IOCTLDATA.md CURLOPT_IOCTLFUNCTION.md CURLOPT_IPRESOLVE.md CURLOPT_ISSUERCERT.md CURLOPT_ISSUERCERT_BLOB.md CURLOPT_KEEP_SENDING_ON_ERROR.md CURLOPT_KEYPASSWD.md CURLOPT_KRBLEVEL.md CURLOPT_LOCALPORT.md CURLOPT_LOCALPORTRANGE.md CURLOPT_LOGIN_OPTIONS.md CURLOPT_LOW_SPEED_LIMIT.md CURLOPT_LOW_SPEED_TIME.md CURLOPT_MAIL_AUTH.md CURLOPT_MAIL_FROM.md CURLOPT_MAIL_RCPT.md CURLOPT_MAIL_RCPT_ALLOWFAILS.md CURLOPT_MAXAGE_CONN.md CURLOPT_MAXCONNECTS.md CURLOPT_MAXFILESIZE.md CURLOPT_MAXFILESIZE_LARGE.md CURLOPT_MAXLIFETIME_CONN.md CURLOPT_MAXREDIRS.md CURLOPT_MAX_RECV_SPEED_LARGE.md CURLOPT_MAX_SEND_SPEED_LARGE.md CURLOPT_MIMEPOST.md CURLOPT_MIME_OPTIONS.md CURLOPT_NETRC.md CURLOPT_NETRC_FILE.md CURLOPT_NEW_DIRECTORY_PERMS.md CURLOPT_NEW_FILE_PERMS.md CURLOPT_NOBODY.md CURLOPT_NOPROGRESS.md CURLOPT_NOPROXY.md CURLOPT_NOSIGNAL.md CURLOPT_OPENSOCKETDATA.md CURLOPT_OPENSOCKETFUNCTION.md CURLOPT_PASSWORD.md CURLOPT_PATH_AS_IS.md CURLOPT_PINNEDPUBLICKEY.md CURLOPT_PIPEWAIT.md CURLOPT_PORT.md CURLOPT_POST.md CURLOPT_POSTFIELDS.md CURLOPT_POSTFIELDSIZE.md CURLOPT_POSTFIELDSIZE_LARGE.md CURLOPT_POSTQUOTE.md CURLOPT_POSTREDIR.md CURLOPT_PREQUOTE.md CURLOPT_PREREQDATA.md CURLOPT_PREREQFUNCTION.md CURLOPT_PRE_PROXY.md CURLOPT_PRIVATE.md CURLOPT_PROGRESSDATA.md CURLOPT_PROGRESSFUNCTION.md CURLOPT_PROTOCOLS.md CURLOPT_PROTOCOLS_STR.md CURLOPT_PROXY.md CURLOPT_PROXYAUTH.md CURLOPT_PROXYHEADER.md CURLOPT_PROXYPASSWORD.md CURLOPT_PROXYPORT.md CURLOPT_PROXYTYPE.md CURLOPT_PROXYUSERNAME.md CURLOPT_PROXYUSERPWD.md CURLOPT_PROXY_CAINFO.md CURLOPT_PROXY_CAINFO_BLOB.md CURLOPT_PROXY_CAPATH.md CURLOPT_PROXY_CRLFILE.md CURLOPT_PROXY_ISSUERCERT.md CURLOPT_PROXY_ISSUERCERT_BLOB.md CURLOPT_PROXY_KEYPASSWD.md CURLOPT_PROXY_PINNEDPUBLICKEY.md CURLOPT_PROXY_SERVICE_NAME.md CURLOPT_PROXY_SSLCERT.md CURLOPT_PROXY_SSLCERTTYPE.md CURLOPT_PROXY_SSLCERT_BLOB.md CURLOPT_PROXY_SSLKEY.md CURLOPT_PROXY_SSLKEYTYPE.md CURLOPT_PROXY_SSLKEY_BLOB.md CURLOPT_PROXY_SSLVERSION.md CURLOPT_PROXY_SSL_CIPHER_LIST.md CURLOPT_PROXY_SSL_OPTIONS.md CURLOPT_PROXY_SSL_VERIFYHOST.md CURLOPT_PROXY_SSL_VERIFYPEER.md CURLOPT_PROXY_TLS13_CIPHERS.md CURLOPT_PROXY_TLSAUTH_PASSWORD.md CURLOPT_PROXY_TLSAUTH_TYPE.md CURLOPT_PROXY_TLSAUTH_USERNAME.md CURLOPT_PROXY_TRANSFER_MODE.md CURLOPT_PUT.md CURLOPT_QUICK_EXIT.md CURLOPT_QUOTE.md CURLOPT_RANDOM_FILE.md CURLOPT_RANGE.md CURLOPT_READDATA.md CURLOPT_READFUNCTION.md CURLOPT_REDIR_PROTOCOLS.md CURLOPT_REDIR_PROTOCOLS_STR.md CURLOPT_REFERER.md CURLOPT_REQUEST_TARGET.md CURLOPT_RESOLVE.md CURLOPT_RESOLVER_START_DATA.md CURLOPT_RESOLVER_START_FUNCTION.md CURLOPT_RESUME_FROM.md CURLOPT_RESUME_FROM_LARGE.md CURLOPT_RTSP_CLIENT_CSEQ.md CURLOPT_RTSP_REQUEST.md CURLOPT_RTSP_SERVER_CSEQ.md CURLOPT_RTSP_SESSION_ID.md CURLOPT_RTSP_STREAM_URI.md CURLOPT_RTSP_TRANSPORT.md CURLOPT_SASL_AUTHZID.md CURLOPT_SASL_IR.md CURLOPT_SEEKDATA.md CURLOPT_SEEKFUNCTION.md CURLOPT_SERVER_RESPONSE_TIMEOUT.md CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.md CURLOPT_SERVICE_NAME.md CURLOPT_SHARE.md CURLOPT_SOCKOPTDATA.md CURLOPT_SOCKOPTFUNCTION.md CURLOPT_SOCKS5_AUTH.md CURLOPT_SOCKS5_GSSAPI_NEC.md CURLOPT_SOCKS5_GSSAPI_SERVICE.md CURLOPT_SSH_AUTH_TYPES.md CURLOPT_SSH_COMPRESSION.md CURLOPT_SSH_HOSTKEYDATA.md CURLOPT_SSH_HOSTKEYFUNCTION.md CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.md CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.md CURLOPT_SSH_KEYDATA.md CURLOPT_SSH_KEYFUNCTION.md CURLOPT_SSH_KNOWNHOSTS.md CURLOPT_SSH_PRIVATE_KEYFILE.md CURLOPT_SSH_PUBLIC_KEYFILE.md CURLOPT_SSLCERT.md CURLOPT_SSLCERTTYPE.md CURLOPT_SSLCERT_BLOB.md CURLOPT_SSLENGINE.md CURLOPT_SSLENGINE_DEFAULT.md CURLOPT_SSLKEY.md CURLOPT_SSLKEYTYPE.md CURLOPT_SSLKEY_BLOB.md CURLOPT_SSLVERSION.md CURLOPT_SSL_CIPHER_LIST.md CURLOPT_SSL_CTX_DATA.md CURLOPT_SSL_CTX_FUNCTION.md CURLOPT_SSL_EC_CURVES.md CURLOPT_SSL_ENABLE_ALPN.md CURLOPT_SSL_ENABLE_NPN.md CURLOPT_SSL_FALSESTART.md CURLOPT_SSL_OPTIONS.md CURLOPT_SSL_SESSIONID_CACHE.md CURLOPT_SSL_SIGNATURE_ALGORITHMS.md CURLOPT_SSL_VERIFYHOST.md CURLOPT_SSL_VERIFYPEER.md CURLOPT_SSL_VERIFYSTATUS.md CURLOPT_STDERR.md CURLOPT_STREAM_DEPENDS.md CURLOPT_STREAM_DEPENDS_E.md CURLOPT_STREAM_WEIGHT.md CURLOPT_SUPPRESS_CONNECT_HEADERS.md CURLOPT_TCP_FASTOPEN.md CURLOPT_TCP_KEEPALIVE.md CURLOPT_TCP_KEEPCNT.md CURLOPT_TCP_KEEPIDLE.md CURLOPT_TCP_KEEPINTVL.md CURLOPT_TCP_NODELAY.md CURLOPT_TELNETOPTIONS.md CURLOPT_TFTP_BLKSIZE.md CURLOPT_TFTP_NO_OPTIONS.md CURLOPT_TIMECONDITION.md CURLOPT_TIMEOUT.md CURLOPT_TIMEOUT_MS.md CURLOPT_TIMEVALUE.md CURLOPT_TIMEVALUE_LARGE.md CURLOPT_TLS13_CIPHERS.md CURLOPT_TLSAUTH_PASSWORD.md CURLOPT_TLSAUTH_TYPE.md CURLOPT_TLSAUTH_USERNAME.md CURLOPT_TRAILERDATA.md CURLOPT_TRAILERFUNCTION.md CURLOPT_TRANSFERTEXT.md CURLOPT_TRANSFER_ENCODING.md CURLOPT_UNIX_SOCKET_PATH.md CURLOPT_UNRESTRICTED_AUTH.md CURLOPT_UPKEEP_INTERVAL_MS.md CURLOPT_UPLOAD.md CURLOPT_UPLOAD_BUFFERSIZE.md CURLOPT_UPLOAD_FLAGS.md CURLOPT_URL.md CURLOPT_USERAGENT.md CURLOPT_USERNAME.md CURLOPT_USERPWD.md CURLOPT_USE_SSL.md CURLOPT_VERBOSE.md CURLOPT_WILDCARDMATCH.md CURLOPT_WRITEDATA.md CURLOPT_WRITEFUNCTION.md CURLOPT_WS_OPTIONS.md CURLOPT_XFERINFODATA.md CURLOPT_XFERINFOFUNCTION.md CURLOPT_XOAUTH2_BEARER.md CURLSHOPT_LOCKFUNC.md CURLSHOPT_SHARE.md CURLSHOPT_UNLOCKFUNC.md CURLSHOPT_UNSHARE.md CURLSHOPT_USERDATA.md Makefile.am Makefile.incinclude
curl
Makefile.am curl.h curlver.h easy.h header.h mprintf.h multi.h options.h stdcheaders.h system.h typecheck-gcc.h urlapi.h websockets.hlib
curlx
base64.c base64.h basename.c basename.h dynbuf.c dynbuf.h fopen.c fopen.h inet_ntop.c inet_ntop.h inet_pton.c inet_pton.h multibyte.c multibyte.h nonblock.c nonblock.h snprintf.c snprintf.h strcopy.c strcopy.h strdup.c strdup.h strerr.c strerr.h strparse.c strparse.h timediff.c timediff.h timeval.c timeval.h version_win32.c version_win32.h wait.c wait.h warnless.c warnless.h winapi.c winapi.hvauth
cleartext.c cram.c digest.c digest.h digest_sspi.c gsasl.c krb5_gssapi.c krb5_sspi.c ntlm.c ntlm_sspi.c oauth2.c spnego_gssapi.c spnego_sspi.c vauth.c vauth.hvquic
curl_ngtcp2.c curl_ngtcp2.h curl_quiche.c curl_quiche.h vquic-tls.c vquic-tls.h vquic.c vquic.h vquic_int.hvtls
apple.c apple.h cipher_suite.c cipher_suite.h gtls.c gtls.h hostcheck.c hostcheck.h keylog.c keylog.h mbedtls.c mbedtls.h openssl.c openssl.h rustls.c rustls.h schannel.c schannel.h schannel_int.h schannel_verify.c vtls.c vtls.h vtls_int.h vtls_scache.c vtls_scache.h vtls_spack.c vtls_spack.h wolfssl.c wolfssl.h x509asn1.c x509asn1.hm4
.gitignore curl-amissl.m4 curl-apple-sectrust.m4 curl-compilers.m4 curl-confopts.m4 curl-functions.m4 curl-gnutls.m4 curl-mbedtls.m4 curl-openssl.m4 curl-override.m4 curl-reentrant.m4 curl-rustls.m4 curl-schannel.m4 curl-sysconfig.m4 curl-wolfssl.m4 xc-am-iface.m4 xc-cc-check.m4 xc-lt-iface.m4 xc-val-flgs.m4 zz40-xc-ovr.m4 zz50-xc-ovr.m4projects
OS400
.checksrc README.OS400 ccsidcurl.c ccsidcurl.h config400.default curl.cmd curl.inc.in curlcl.c curlmain.c initscript.sh make-docs.sh make-include.sh make-lib.sh make-src.sh make-tests.sh makefile.sh os400sys.c os400sys.hWindows
tmpl
.gitattributes README.txt curl-all.sln curl.sln curl.vcxproj curl.vcxproj.filters libcurl.sln libcurl.vcxproj libcurl.vcxproj.filtersvms
Makefile.am backup_gnv_curl_src.com build_curl-config_script.com build_gnv_curl.com build_gnv_curl_pcsi_desc.com build_gnv_curl_pcsi_text.com build_gnv_curl_release_notes.com build_libcurl_pc.com build_vms.com clean_gnv_curl.com compare_curl_source.com config_h.com curl_crtl_init.c curl_gnv_build_steps.txt curl_release_note_start.txt curl_startup.com curlmsg.h curlmsg.msg curlmsg.sdl curlmsg_vms.h generate_config_vms_h_curl.com generate_vax_transfer.com gnv_conftest.c_first gnv_curl_configure.sh gnv_libcurl_symbols.opt gnv_link_curl.com macro32_exactcase.patch make_gnv_curl_install.sh make_pcsi_curl_kit_name.com pcsi_gnv_curl_file_list.txt pcsi_product_gnv_curl.com readme report_openssl_version.c setup_gnv_curl_build.com stage_curl_install.com vms_eco_level.hscripts
.checksrc CMakeLists.txt Makefile.am badwords badwords-all badwords.txt cd2cd cd2nroff cdall checksrc-all.pl checksrc.pl cmakelint.sh completion.pl contributors.sh contrithanks.sh coverage.sh delta dmaketgz extract-unit-protos firefox-db2pem.sh installcheck.sh maketgz managen mdlinkcheck mk-ca-bundle.pl mk-unity.pl nroff2cd perlcheck.sh pythonlint.sh randdisable release-notes.pl release-tools.sh schemetable.c singleuse.pl spacecheck.pl top-complexity top-length verify-release wcurlsrc
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc config2setopts.c config2setopts.h curl.rc curlinfo.c mk-file-embed.pl mkhelp.pl slist_wc.c slist_wc.h terminal.c terminal.h tool_cb_dbg.c tool_cb_dbg.h tool_cb_hdr.c tool_cb_hdr.h tool_cb_prg.c tool_cb_prg.h tool_cb_rea.c tool_cb_rea.h tool_cb_see.c tool_cb_see.h tool_cb_soc.c tool_cb_soc.h tool_cb_wrt.c tool_cb_wrt.h tool_cfgable.c tool_cfgable.h tool_dirhie.c tool_dirhie.h tool_doswin.c tool_doswin.h tool_easysrc.c tool_easysrc.h tool_filetime.c tool_filetime.h tool_findfile.c tool_findfile.h tool_formparse.c tool_formparse.h tool_getparam.c tool_getparam.h tool_getpass.c tool_getpass.h tool_help.c tool_help.h tool_helpers.c tool_helpers.h tool_hugehelp.h tool_ipfs.c tool_ipfs.h tool_libinfo.c tool_libinfo.h tool_listhelp.c tool_main.c tool_main.h tool_msgs.c tool_msgs.h tool_operate.c tool_operate.h tool_operhlp.c tool_operhlp.h tool_paramhlp.c tool_paramhlp.h tool_parsecfg.c tool_parsecfg.h tool_progress.c tool_progress.h tool_sdecls.h tool_setopt.c tool_setopt.h tool_setup.h tool_ssls.c tool_ssls.h tool_stderr.c tool_stderr.h tool_urlglob.c tool_urlglob.h tool_util.c tool_util.h tool_version.h tool_vms.c tool_vms.h tool_writeout.c tool_writeout.h tool_writeout_json.c tool_writeout_json.h tool_xattr.c tool_xattr.h var.c var.htests
certs
.gitignore CMakeLists.txt Makefile.am Makefile.inc genserv.pl srp-verifier-conf srp-verifier-db test-ca.cnf test-ca.prm test-client-cert.prm test-client-eku-only.prm test-localhost-san-first.prm test-localhost-san-last.prm test-localhost.nn.prm test-localhost.prm test-localhost0h.prmdata
.gitignore DISABLED Makefile.am data-xml1 data1400.c data1401.c data1402.c data1403.c data1404.c data1405.c data1406.c data1407.c data1420.c data1461.txt data1463.txt data1465.c data1481.c data1705-1.md data1705-2.md data1705-3.md data1705-4.md data1705-stdout.1 data1706-1.md data1706-2.md data1706-3.md data1706-4.md data1706-stdout.txt data320.html test1 test10 test100 test1000 test1001 test1002 test1003 test1004 test1005 test1006 test1007 test1008 test1009 test101 test1010 test1011 test1012 test1013 test1014 test1015 test1016 test1017 test1018 test1019 test102 test1020 test1021 test1022 test1023 test1024 test1025 test1026 test1027 test1028 test1029 test103 test1030 test1031 test1032 test1033 test1034 test1035 test1036 test1037 test1038 test1039 test104 test1040 test1041 test1042 test1043 test1044 test1045 test1046 test1047 test1048 test1049 test105 test1050 test1051 test1052 test1053 test1054 test1055 test1056 test1057 test1058 test1059 test106 test1060 test1061 test1062 test1063 test1064 test1065 test1066 test1067 test1068 test1069 test107 test1070 test1071 test1072 test1073 test1074 test1075 test1076 test1077 test1078 test1079 test108 test1080 test1081 test1082 test1083 test1084 test1085 test1086 test1087 test1088 test1089 test109 test1090 test1091 test1092 test1093 test1094 test1095 test1096 test1097 test1098 test1099 test11 test110 test1100 test1101 test1102 test1103 test1104 test1105 test1106 test1107 test1108 test1109 test111 test1110 test1111 test1112 test1113 test1114 test1115 test1116 test1117 test1118 test1119 test112 test1120 test1121 test1122 test1123 test1124 test1125 test1126 test1127 test1128 test1129 test113 test1130 test1131 test1132 test1133 test1134 test1135 test1136 test1137 test1138 test1139 test114 test1140 test1141 test1142 test1143 test1144 test1145 test1146 test1147 test1148 test1149 test115 test1150 test1151 test1152 test1153 test1154 test1155 test1156 test1157 test1158 test1159 test116 test1160 test1161 test1162 test1163 test1164 test1165 test1166 test1167 test1168 test1169 test117 test1170 test1171 test1172 test1173 test1174 test1175 test1176 test1177 test1178 test1179 test118 test1180 test1181 test1182 test1183 test1184 test1185 test1186 test1187 test1188 test1189 test119 test1190 test1191 test1192 test1193 test1194 test1195 test1196 test1197 test1198 test1199 test12 test120 test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 test1208 test1209 test121 test1210 test1211 test1212 test1213 test1214 test1215 test1216 test1217 test1218 test1219 test122 test1220 test1221 test1222 test1223 test1224 test1225 test1226 test1227 test1228 test1229 test123 test1230 test1231 test1232 test1233 test1234 test1235 test1236 test1237 test1238 test1239 test124 test1240 test1241 test1242 test1243 test1244 test1245 test1246 test1247 test1248 test1249 test125 test1250 test1251 test1252 test1253 test1254 test1255 test1256 test1257 test1258 test1259 test126 test1260 test1261 test1262 test1263 test1264 test1265 test1266 test1267 test1268 test1269 test127 test1270 test1271 test1272 test1273 test1274 test1275 test1276 test1277 test1278 test1279 test128 test1280 test1281 test1282 test1283 test1284 test1285 test1286 test1287 test1288 test1289 test129 test1290 test1291 test1292 test1293 test1294 test1295 test1296 test1297 test1298 test1299 test13 test130 test1300 test1301 test1302 test1303 test1304 test1305 test1306 test1307 test1308 test1309 test131 test1310 test1311 test1312 test1313 test1314 test1315 test1316 test1317 test1318 test1319 test132 test1320 test1321 test1322 test1323 test1324 test1325 test1326 test1327 test1328 test1329 test133 test1330 test1331 test1332 test1333 test1334 test1335 test1336 test1337 test1338 test1339 test134 test1340 test1341 test1342 test1343 test1344 test1345 test1346 test1347 test1348 test1349 test135 test1350 test1351 test1352 test1353 test1354 test1355 test1356 test1357 test1358 test1359 test136 test1360 test1361 test1362 test1363 test1364 test1365 test1366 test1367 test1368 test1369 test137 test1370 test1371 test1372 test1373 test1374 test1375 test1376 test1377 test1378 test1379 test138 test1380 test1381 test1382 test1383 test1384 test1385 test1386 test1387 test1388 test1389 test139 test1390 test1391 test1392 test1393 test1394 test1395 test1396 test1397 test1398 test1399 test14 test140 test1400 test1401 test1402 test1403 test1404 test1405 test1406 test1407 test1408 test1409 test141 test1410 test1411 test1412 test1413 test1414 test1415 test1416 test1417 test1418 test1419 test142 test1420 test1421 test1422 test1423 test1424 test1425 test1426 test1427 test1428 test1429 test143 test1430 test1431 test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 test144 test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 test1448 test1449 test145 test1450 test1451 test1452 test1453 test1454 test1455 test1456 test1457 test1458 test1459 test146 test1460 test1461 test1462 test1463 test1464 test1465 test1466 test1467 test1468 test1469 test147 test1470 test1471 test1472 test1473 test1474 test1475 test1476 test1477 test1478 test1479 test148 test1480 test1481 test1482 test1483 test1484 test1485 test1486 test1487 test1488 test1489 test149 test1490 test1491 test1492 test1493 test1494 test1495 test1496 test1497 test1498 test1499 test15 test150 test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 test1508 test1509 test151 test1510 test1511 test1512 test1513 test1514 test1515 test1516 test1517 test1518 test1519 test152 test1520 test1521 test1522 test1523 test1524 test1525 test1526 test1527 test1528 test1529 test153 test1530 test1531 test1532 test1533 test1534 test1535 test1536 test1537 test1538 test1539 test154 test1540 test1541 test1542 test1543 test1544 test1545 test1546 test1547 test1548 test1549 test155 test1550 test1551 test1552 test1553 test1554 test1555 test1556 test1557 test1558 test1559 test156 test1560 test1561 test1562 test1563 test1564 test1565 test1566 test1567 test1568 test1569 test157 test1570 test1571 test1572 test1573 test1574 test1575 test1576 test1577 test1578 test1579 test158 test1580 test1581 test1582 test1583 test1584 test1585 test1586 test1587 test1588 test1589 test159 test1590 test1591 test1592 test1593 test1594 test1595 test1596 test1597 test1598 test1599 test16 test160 test1600 test1601 test1602 test1603 test1604 test1605 test1606 test1607 test1608 test1609 test161 test1610 test1611 test1612 test1613 test1614 test1615 test1616 test1617 test1618 test1619 test162 test1620 test1621 test1622 test1623 test1624 test1625 test1626 test1627 test1628 test1629 test163 test1630 test1631 test1632 test1633 test1634 test1635 test1636 test1637 test1638 test1639 test164 test1640 test1641 test1642 test1643 test1644 test1645 test165 test1650 test1651 test1652 test1653 test1654 test1655 test1656 test1657 test1658 test1659 test166 test1660 test1661 test1662 test1663 test1664 test1665 test1666 test1667 test1668 test1669 test167 test1670 test1671 test1672 test1673 test1674 test1675 test1676 test168 test1680 test1681 test1682 test1683 test1684 test1685 test169 test17 test170 test1700 test1701 test1702 test1703 test1704 test1705 test1706 test1707 test1708 test1709 test171 test1710 test1711 test1712 test1713 test1714 test1715 test172 test1720 test1721 test173 test174 test175 test176 test177 test178 test179 test18 test180 test1800 test1801 test1802 test181 test182 test183 test184 test1847 test1848 test1849 test185 test1850 test1851 test186 test187 test188 test189 test19 test190 test1900 test1901 test1902 test1903 test1904 test1905 test1906 test1907 test1908 test1909 test191 test1910 test1911 test1912 test1913 test1914 test1915 test1916 test1917 test1918 test1919 test192 test1920 test1921 test193 test1933 test1934 test1935 test1936 test1937 test1938 test1939 test194 test1940 test1941 test1942 test1943 test1944 test1945 test1946 test1947 test1948 test195 test1955 test1956 test1957 test1958 test1959 test196 test1960 test1964 test1965 test1966 test197 test1970 test1971 test1972 test1973 test1974 test1975 test1976 test1977 test1978 test1979 test198 test1980 test1981 test1982 test1983 test1984 test199 test2 test20 test200 test2000 test2001 test2002 test2003 test2004 test2005 test2006 test2007 test2008 test2009 test201 test2010 test2011 test2012 test2013 test2014 test202 test2023 test2024 test2025 test2026 test2027 test2028 test2029 test203 test2030 test2031 test2032 test2033 test2034 test2035 test2037 test2038 test2039 test204 test2040 test2041 test2042 test2043 test2044 test2045 test2046 test2047 test2048 test2049 test205 test2050 test2051 test2052 test2053 test2054 test2055 test2056 test2057 test2058 test2059 test206 test2060 test2061 test2062 test2063 test2064 test2065 test2066 test2067 test2068 test2069 test207 test2070 test2071 test2072 test2073 test2074 test2075 test2076 test2077 test2078 test2079 test208 test2080 test2081 test2082 test2083 test2084 test2085 test2086 test2087 test2088 test2089 test209 test2090 test2091 test2092 test21 test210 test2100 test2101 test2102 test2103 test2104 test211 test212 test213 test214 test215 test216 test217 test218 test219 test22 test220 test2200 test2201 test2202 test2203 test2204 test2205 test2206 test2207 test221 test222 test223 test224 test225 test226 test227 test228 test229 test23 test230 test2300 test2301 test2302 test2303 test2304 test2306 test2307 test2308 test2309 test231 test232 test233 test234 test235 test236 test237 test238 test239 test24 test240 test2400 test2401 test2402 test2403 test2404 test2405 test2406 test2407 test2408 test2409 test241 test2410 test2411 test242 test243 test244 test245 test246 test247 test248 test249 test25 test250 test2500 test2501 test2502 test2503 test2504 test2505 test2506 test251 test252 test253 test254 test255 test256 test257 test258 test259 test26 test260 test2600 test2601 test2602 test2603 test2604 test2605 test261 test262 test263 test264 test265 test266 test267 test268 test269 test27 test270 test2700 test2701 test2702 test2703 test2704 test2705 test2706 test2707 test2708 test2709 test271 test2710 test2711 test2712 test2713 test2714 test2715 test2716 test2717 test2718 test2719 test272 test2720 test2721 test2722 test2723 test273 test274 test275 test276 test277 test278 test279 test28 test280 test281 test282 test283 test284 test285 test286 test287 test288 test289 test29 test290 test291 test292 test293 test294 test295 test296 test297 test298 test299 test3 test30 test300 test3000 test3001 test3002 test3003 test3004 test3005 test3006 test3007 test3008 test3009 test301 test3010 test3011 test3012 test3013 test3014 test3015 test3016 test3017 test3018 test3019 test302 test3020 test3021 test3022 test3023 test3024 test3025 test3026 test3027 test3028 test3029 test303 test3030 test3031 test3032 test3033 test3034 test3035 test3036 test304 test305 test306 test307 test308 test309 test31 test310 test3100 test3101 test3102 test3103 test3104 test3105 test3106 test311 test312 test313 test314 test315 test316 test317 test318 test319 test32 test320 test3200 test3201 test3202 test3203 test3204 test3205 test3206 test3207 test3208 test3209 test321 test3210 test3211 test3212 test3213 test3214 test3215 test3216 test3217 test3218 test3219 test322 test3220 test323 test324 test325 test326 test327 test328 test329 test33 test330 test3300 test3301 test3302 test331 test332 test333 test334 test335 test336 test337 test338 test339 test34 test340 test341 test342 test343 test344 test345 test346 test347 test348 test349 test35 test350 test351 test352 test353 test354 test355 test356 test357 test358 test359 test36 test360 test361 test362 test363 test364 test365 test366 test367 test368 test369 test37 test370 test371 test372 test373 test374 test375 test376 test378 test379 test38 test380 test381 test383 test384 test385 test386 test387 test388 test389 test39 test390 test391 test392 test393 test394 test395 test396 test397 test398 test399 test4 test40 test400 test4000 test4001 test401 test402 test403 test404 test405 test406 test407 test408 test409 test41 test410 test411 test412 test413 test414 test415 test416 test417 test418 test419 test42 test420 test421 test422 test423 test424 test425 test426 test427 test428 test429 test43 test430 test431 test432 test433 test434 test435 test436 test437 test438 test439 test44 test440 test441 test442 test443 test444 test445 test446 test447 test448 test449 test45 test450 test451 test452 test453 test454 test455 test456 test457 test458 test459 test46 test460 test461 test462 test463 test467 test468 test469 test47 test470 test471 test472 test473 test474 test475 test476 test477 test478 test479 test48 test480 test481 test482 test483 test484 test485 test486 test487 test488 test489 test49 test490 test491 test492 test493 test494 test495 test496 test497 test498 test499 test5 test50 test500 test501 test502 test503 test504 test505 test506 test507 test508 test509 test51 test510 test511 test512 test513 test514 test515 test516 test517 test518 test519 test52 test520 test521 test522 test523 test524 test525 test526 test527 test528 test529 test53 test530 test531 test532 test533 test534 test535 test536 test537 test538 test539 test54 test540 test541 test542 test543 test544 test545 test546 test547 test548 test549 test55 test550 test551 test552 test553 test554 test555 test556 test557 test558 test559 test56 test560 test561 test562 test563 test564 test565 test566 test567 test568 test569 test57 test570 test571 test572 test573 test574 test575 test576 test577 test578 test579 test58 test580 test581 test582 test583 test584 test585 test586 test587 test588 test589 test59 test590 test591 test592 test593 test594 test595 test596 test597 test598 test599 test6 test60 test600 test601 test602 test603 test604 test605 test606 test607 test608 test609 test61 test610 test611 test612 test613 test614 test615 test616 test617 test618 test619 test62 test620 test621 test622 test623 test624 test625 test626 test627 test628 test629 test63 test630 test631 test632 test633 test634 test635 test636 test637 test638 test639 test64 test640 test641 test642 test643 test644 test645 test646 test647 test648 test649 test65 test650 test651 test652 test653 test654 test655 test656 test658 test659 test66 test660 test661 test662 test663 test664 test665 test666 test667 test668 test669 test67 test670 test671 test672 test673 test674 test675 test676 test677 test678 test679 test68 test680 test681 test682 test683 test684 test685 test686 test687 test688 test689 test69 test690 test691 test692 test693 test694 test695 test696 test697 test698 test699 test7 test70 test700 test701 test702 test703 test704 test705 test706 test707 test708 test709 test71 test710 test711 test712 test713 test714 test715 test716 test717 test718 test719 test72 test720 test721 test722 test723 test724 test725 test726 test727 test728 test729 test73 test730 test731 test732 test733 test734 test735 test736 test737 test738 test739 test74 test740 test741 test742 test743 test744 test745 test746 test747 test748 test749 test75 test750 test751 test752 test753 test754 test755 test756 test757 test758 test759 test76 test760 test761 test762 test763 test764 test765 test766 test767 test768 test769 test77 test770 test771 test772 test773 test774 test775 test776 test777 test778 test779 test78 test780 test781 test782 test783 test784 test785 test786 test787 test788 test789 test79 test790 test791 test792 test793 test794 test795 test796 test797 test798 test799 test8 test80 test800 test801 test802 test803 test804 test805 test806 test807 test808 test809 test81 test810 test811 test812 test813 test814 test815 test816 test817 test818 test819 test82 test820 test821 test822 test823 test824 test825 test826 test827 test828 test829 test83 test830 test831 test832 test833 test834 test835 test836 test837 test838 test839 test84 test840 test841 test842 test843 test844 test845 test846 test847 test848 test849 test85 test850 test851 test852 test853 test854 test855 test856 test857 test858 test859 test86 test860 test861 test862 test863 test864 test865 test866 test867 test868 test869 test87 test870 test871 test872 test873 test874 test875 test876 test877 test878 test879 test88 test880 test881 test882 test883 test884 test885 test886 test887 test888 test889 test89 test890 test891 test892 test893 test894 test895 test896 test897 test898 test899 test9 test90 test900 test901 test902 test903 test904 test905 test906 test907 test908 test909 test91 test910 test911 test912 test913 test914 test915 test916 test917 test918 test919 test92 test920 test921 test922 test923 test924 test925 test926 test927 test928 test929 test93 test930 test931 test932 test933 test934 test935 test936 test937 test938 test939 test94 test940 test941 test942 test943 test944 test945 test946 test947 test948 test949 test95 test950 test951 test952 test953 test954 test955 test956 test957 test958 test959 test96 test960 test961 test962 test963 test964 test965 test966 test967 test968 test969 test97 test970 test971 test972 test973 test974 test975 test976 test977 test978 test979 test98 test980 test981 test982 test983 test984 test985 test986 test987 test988 test989 test99 test990 test991 test992 test993 test994 test995 test996 test997 test998 test999http
testenv
__init__.py caddy.py certs.py client.py curl.py dante.py dnsd.py env.py httpd.py nghttpx.py ports.py sshd.py vsftpd.py ws_echo_server.pylibtest
.gitignore CMakeLists.txt Makefile.am Makefile.inc cli_ftp_upload.c cli_h2_pausing.c cli_h2_serverpush.c cli_h2_upgrade_extreme.c cli_hx_download.c cli_hx_upload.c cli_tls_session_reuse.c cli_upload_pausing.c cli_ws_data.c cli_ws_pingpong.c first.c first.h lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1549.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1582.c lib1587.c lib1588.c lib1589.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1902.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1920.c lib1921.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1965.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2504.c lib2505.c lib2506.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3033.c lib3034.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib757.c lib758.c lib766.c memptr.c mk-lib1521.pl test1013.pl test1022.pl test307.pl test610.pl test613.pl testtrace.c testtrace.h testutil.c testutil.h unitcheck.hserver
.checksrc .gitignore CMakeLists.txt Makefile.am Makefile.inc dnsd.c first.c first.h getpart.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c util.ctunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md tool1394.c tool1604.c tool1621.c tool1622.c tool1623.c tool1720.cunit
.gitignore CMakeLists.txt Makefile.am Makefile.inc README.md unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1625.c unit1626.c unit1627.c unit1636.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1666.c unit1667.c unit1668.c unit1669.c unit1674.c unit1675.c unit1676.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit2605.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c unit3216.c unit3219.c unit3300.c unit3301.c unit3302.cexamples
.env config.ini crypto_test.lua env_test.lua fs_example.lua http_server.lua https_test.lua ini_example.lua json.lua log.lua path_fs_example.lua process_example.lua request_download.lua request_test.lua run_all.lua sqlite_example.lua sqlite_http_template.lua stash_test.lua template_test.lua timer.lua websocket.luainiparser
example
iniexample.c iniwrite.c parse.c twisted-errors.ini twisted-genhuge.py twisted-ofkey.ini twisted-ofval.ini twisted.initest
CMakeLists.txt test_dictionary.c test_iniparser.c unity-config.yml unity_config.hjinjac
libjinjac
src
CMakeLists.txt ast.c ast.h block_statement.c block_statement.h buffer.c buffer.h buildin.c buildin.h common.h convert.c convert.h flex_decl.h jfunction.c jfunction.h jinja_expression.l jinja_expression.y jinjac_parse.c jinjac_parse.h jinjac_stream.c jinjac_stream.h jlist.c jlist.h jobject.c jobject.h parameter.c parameter.h str_obj.c str_obj.h trace.c trace.htest
.gitignore CMakeLists.txt autotest.rb test_01.expected test_01.jinja test_01b.expected test_01b.jinja test_01c.expected test_01c.jinja test_01d.expected test_01d.jinja test_02.expected test_02.jinja test_03.expected test_03.jinja test_04.expected test_04.jinja test_05.expected test_05.jinja test_06.expected test_06.jinja test_07.expected test_07.jinja test_08.expected test_08.jinja test_08b.expected test_08b.jinja test_09.expected test_09.jinja test_10.expected test_10.jinja test_11.expected test_11.jinja test_12.expected test_12.jinja test_13.expected test_13.jinja test_14.expected test_14.jinja test_15.expected test_15.jinja test_16.expected test_16.jinja test_17.expected test_17.jinja test_18.expected test_18.jinja test_18b.expected test_18b.jinja test_18c.expected test_18c.jinja test_19.expected test_19.jinja test_19b.expected test_19b.jinja test_19c.expected test_19c.jinja test_19d.expected test_19d.jinja test_19e.expected test_19e.jinja test_19f.expected test_19f.jinja test_20.expected test_20.jinja test_21.expected test_21.jinja test_22.expected test_22.jinja test_22a.expected test_22a.jinja test_22b.expected test_22b.jinja test_23.expected test_23.jinja test_24.expected test_24.jinjalibev
Changes LICENSE Makefile Makefile.am Makefile.in README Symbols.ev Symbols.event aclocal.m4 autogen.sh compile config.guess config.h config.h.in config.status config.sub configure configure.ac depcomp ev++.h ev.3 ev.c ev.h ev.pod ev_epoll.c ev_kqueue.c ev_poll.c ev_port.c ev_select.c ev_vars.h ev_win32.c ev_wrap.h event.c event.h install-sh libev.m4 libtool ltmain.sh missing mkinstalldirs stamp-h1luajit
doc
bluequad-print.css bluequad.css contact.html ext_buffer.html ext_c_api.html ext_ffi.html ext_ffi_api.html ext_ffi_semantics.html ext_ffi_tutorial.html ext_jit.html ext_profiler.html extensions.html install.html luajit.html running.htmldynasm
dasm_arm.h dasm_arm.lua dasm_arm64.h dasm_arm64.lua dasm_mips.h dasm_mips.lua dasm_mips64.lua dasm_ppc.h dasm_ppc.lua dasm_proto.h dasm_x64.lua dasm_x86.h dasm_x86.lua dynasm.luasrc
host
.gitignore README buildvm.c buildvm.h buildvm_asm.c buildvm_fold.c buildvm_lib.c buildvm_libbc.h buildvm_peobj.c genlibbc.lua genminilua.lua genversion.lua minilua.cjit
.gitignore bc.lua bcsave.lua dis_arm.lua dis_arm64.lua dis_arm64be.lua dis_mips.lua dis_mips64.lua dis_mips64el.lua dis_mips64r6.lua dis_mips64r6el.lua dis_mipsel.lua dis_ppc.lua dis_x64.lua dis_x86.lua dump.lua p.lua v.lua zone.luawolfssl
.github
workflows
ada.yml arduino.yml async-examples.yml async.yml atecc608-sim.yml bind.yml cmake-autoconf.yml cmake.yml codespell.yml coverity-scan-fixes.yml cryptocb-only.yml curl.yml cyrus-sasl.yml disable-pk-algs.yml docker-Espressif.yml docker-OpenWrt.yml emnet-nonblock.yml fil-c.yml freertos-mem-track.yml gencertbuf.yml grpc.yml haproxy.yml hostap-vm.yml intelasm-c-fallback.yml ipmitool.yml jwt-cpp.yml krb5.yml libspdm.yml libssh2.yml libvncserver.yml linuxkm.yml macos-apple-native-cert-validation.yml mbedtls.sh mbedtls.yml membrowse-comment.yml membrowse-onboard.yml membrowse-report.yml memcached.sh memcached.yml mono.yml mosquitto.yml msmtp.yml msys2.yml multi-arch.yml multi-compiler.yml net-snmp.yml nginx.yml no-malloc.yml no-tls.yml nss.sh nss.yml ntp.yml ocsp.yml openldap.yml openssh.yml openssl-ech.yml opensslcoexist.yml openvpn.yml os-check.yml packaging.yml pam-ipmi.yml pq-all.yml pr-commit-check.yml psk.yml puf.yml python.yml rng-tools.yml rust-wrapper.yml se050-sim.yml smallStackSize.yml socat.yml softhsm.yml sssd.yml stm32-sim.yml stsafe-a120-sim.yml stunnel.yml symbol-prefixes.yml threadx.yml tls-anvil.yml trackmemory.yml watcomc.yml win-csharp-test.yml wolfCrypt-Wconversion.yml wolfboot-integration.yml wolfsm.yml xcode.yml zephyr-4.x.yml zephyr.ymlIDE
ARDUINO
Arduino_README_prepend.md README.md include.am keywords.txt library.properties.template wolfssl-arduino.cpp wolfssl-arduino.sh wolfssl.hECLIPSE
Espressif
ESP-IDF
examples
template
CMakeLists.txt Makefile README.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp8266wolfssl_benchmark
VisualGDB
wolfssl_benchmark_IDF_v4.4_ESP32.sln wolfssl_benchmark_IDF_v4.4_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32.sln wolfssl_benchmark_IDF_v5_ESP32.vgdbproj wolfssl_benchmark_IDF_v5_ESP32C3.sln wolfssl_benchmark_IDF_v5_ESP32C3.vgdbproj wolfssl_benchmark_IDF_v5_ESP32S3.sln wolfssl_benchmark_IDF_v5_ESP32S3.vgdbprojwolfssl_client
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_client_ESP8266.vgdbprojwolfssl_server
CMakeLists.txt Makefile README.md README_server_sm.md partitions_singleapp_large.csv sdkconfig.defaults sdkconfig.defaults.esp32c2 sdkconfig.defaults.esp8266 wolfssl_server_ESP8266.vgdbprojwolfssl_test
VisualGDB
wolfssl_test-IDF_v5_ESP32.sln wolfssl_test-IDF_v5_ESP32.vgdbproj wolfssl_test-IDF_v5_ESP32C3.sln wolfssl_test-IDF_v5_ESP32C3.vgdbproj wolfssl_test-IDF_v5_ESP32C6.sln wolfssl_test-IDF_v5_ESP32C6.vgdbproj wolfssl_test_IDF_v5_ESP32S3.sln wolfssl_test_IDF_v5_ESP32S3.vgdbprojGCC-ARM
Makefile Makefile.bench Makefile.client Makefile.common Makefile.server Makefile.static Makefile.test README.md include.am linker.ld linker_fips.ldIAR-EWARM
embOS
SAMV71_XULT
embOS_SAMV71_XULT_user_settings
user_settings.h user_settings_simple_example.h user_settings_verbose_example.hembOS_wolfcrypt_benchmark_SAMV71_XULT
README_wolfcrypt_benchmark wolfcrypt_benchmark.ewd wolfcrypt_benchmark.ewpINTIME-RTOS
Makefile README.md include.am libwolfssl.c libwolfssl.vcxproj user_settings.h wolfExamples.c wolfExamples.h wolfExamples.sln wolfExamples.vcxproj wolfssl-lib.sln wolfssl-lib.vcxprojMQX
Makefile README-jp.md README.md client-tls.c include.am server-tls.c user_config.h user_settings.hMSVS-2019-AZSPHERE
wolfssl_new_azsphere
.gitignore CMakeLists.txt CMakeSettings.json app_manifest.json applibs_versions.h launch.vs.json main.cNETOS
Makefile.wolfcrypt.inc README.md include.am user_settings.h user_settings.h-cert2425 user_settings.h-cert3389 wolfssl_netos_custom.cPlatformIO
examples
wolfssl_benchmark
CMakeLists.txt README.md platformio.ini sdkconfig.defaults wolfssl_benchmark.code-workspaceROWLEY-CROSSWORKS-ARM
Kinetis_FlashPlacement.xml README.md arm_startup.c benchmark_main.c hw.h include.am kinetis_hw.c retarget.c test_main.c user_settings.h wolfssl.hzp wolfssl_ltc.hzpRenesas
e2studio
RA6M3
README.md README_APRA6M_en.md README_APRA6M_jp.md include.amRX72N
EnvisionKit
Simple
README_EN.md README_JP.mdwolfssl_demo
key_data.c key_data.h user_settings.h wolfssl_demo.c wolfssl_demo.h wolfssl_tsip_unit_test.cSTM32Cube
README.md STM32_Benchmarks.md default_conf.ftl include.am main.c wolfssl_example.c wolfssl_example.hWIN
README.txt include.am test.vcxproj user_settings.h user_settings_dtls.h wolfssl-fips.sln wolfssl-fips.vcxprojWIN-SRTP-KDF-140-3
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojWIN10
README.txt include.am resource.h test.vcxproj user_settings.h wolfssl-fips.rc wolfssl-fips.sln wolfssl-fips.vcxprojXCODE
Benchmark
include.amXilinxSDK
README.md bench.sh combine.sh eclipse_formatter_profile.xml graph.sh include.am user_settings.h wolfssl_example.capple-universal
wolfssl-multiplatform
iotsafe
Makefile README.md ca-cert.c devices.c devices.h include.am main.c memory-tls.c startup.c target.ld user_settings.hmynewt
README.md apps.wolfcrypttest.pkg.yml crypto.wolfssl.pkg.yml crypto.wolfssl.syscfg.yml include.am setup.shcerts
1024
ca-cert.der ca-cert.pem ca-key.der ca-key.pem client-cert.der client-cert.pem client-key.der client-key.pem client-keyPub.der dh1024.der dh1024.pem dsa-pub-1024.pem dsa1024.der dsa1024.pem include.am rsa1024.der server-cert.der server-cert.pem server-key.der server-key.pemcrl
extra-crls
ca-int-cert-revoked.pem claim-root.pem crl_critical_entry.pem crlnum_57oct.pem crlnum_64oct.pem general-server-crl.pem large_crlnum.pem large_crlnum2.pemdilithium
bench_dilithium_level2_key.der bench_dilithium_level3_key.der bench_dilithium_level5_key.der include.amecc
bp256r1-key.der bp256r1-key.pem ca-secp256k1-cert.pem ca-secp256k1-key.pem client-bp256r1-cert.der client-bp256r1-cert.pem client-secp256k1-cert.der client-secp256k1-cert.pem genecc.sh include.am secp256k1-key.der secp256k1-key.pem secp256k1-param.pem secp256k1-privkey.der secp256k1-privkey.pem server-bp256r1-cert.der server-bp256r1-cert.pem server-secp256k1-cert.der server-secp256k1-cert.pem server2-secp256k1-cert.der server2-secp256k1-cert.pem wolfssl.cnf wolfssl_384.cnfed25519
ca-ed25519-key.der ca-ed25519-key.pem ca-ed25519-priv.der ca-ed25519-priv.pem ca-ed25519.der ca-ed25519.pem client-ed25519-key.der client-ed25519-key.pem client-ed25519-priv.der client-ed25519-priv.pem client-ed25519.der client-ed25519.pem eddsa-ed25519.der eddsa-ed25519.pem gen-ed25519-certs.sh gen-ed25519-keys.sh gen-ed25519.sh include.am root-ed25519-key.der root-ed25519-key.pem root-ed25519-priv.der root-ed25519-priv.pem root-ed25519.der root-ed25519.pem server-ed25519-cert.pem server-ed25519-key.der server-ed25519-key.pem server-ed25519-priv.der server-ed25519-priv.pem server-ed25519.der server-ed25519.pemed448
ca-ed448-key.der ca-ed448-key.pem ca-ed448-priv.der ca-ed448-priv.pem ca-ed448.der ca-ed448.pem client-ed448-key.der client-ed448-key.pem client-ed448-priv.der client-ed448-priv.pem client-ed448.der client-ed448.pem gen-ed448-certs.sh gen-ed448-keys.sh include.am root-ed448-key.der root-ed448-key.pem root-ed448-priv.der root-ed448-priv.pem root-ed448.der root-ed448.pem server-ed448-cert.pem server-ed448-key.der server-ed448-key.pem server-ed448-priv.der server-ed448-priv.pem server-ed448.der server-ed448.pemexternal
DigiCertGlobalRootCA.pem README.txt ca-digicert-ev.pem ca-globalsign-root.pem ca-google-root.pem ca_collection.pem include.amintermediate
ca_false_intermediate
gentestcert.sh int_ca.key server.key test_ca.key test_ca.pem test_int_not_cacert.pem test_sign_bynoca_srv.pem wolfssl_base.conf wolfssl_srv.conflms
bc_hss_L2_H5_W8_root.der bc_hss_L3_H5_W4_root.der bc_lms_chain_ca.der bc_lms_chain_leaf.der bc_lms_native_bc_root.der bc_lms_sha256_h10_w8_root.der bc_lms_sha256_h5_w4_root.der include.ammldsa
README.txt include.am mldsa44-cert.der mldsa44-cert.pem mldsa44-key.pem mldsa44_bare-priv.der mldsa44_bare-seed.der mldsa44_oqskeypair.der mldsa44_priv-only.der mldsa44_pub-spki.der mldsa44_seed-only.der mldsa44_seed-priv.der mldsa65-cert.der mldsa65-cert.pem mldsa65-key.pem mldsa65_bare-priv.der mldsa65_bare-seed.der mldsa65_oqskeypair.der mldsa65_priv-only.der mldsa65_pub-spki.der mldsa65_seed-only.der mldsa65_seed-priv.der mldsa87-cert.der mldsa87-cert.pem mldsa87-key.pem mldsa87_bare-priv.der mldsa87_bare-seed.der mldsa87_oqskeypair.der mldsa87_priv-only.der mldsa87_pub-spki.der mldsa87_seed-only.der mldsa87_seed-priv.derocsp
imposter-root-ca-cert.der imposter-root-ca-cert.pem imposter-root-ca-key.der imposter-root-ca-key.pem include.am index-ca-and-intermediate-cas.txt index-ca-and-intermediate-cas.txt.attr index-intermediate1-ca-issued-certs.txt index-intermediate1-ca-issued-certs.txt.attr index-intermediate2-ca-issued-certs.txt index-intermediate2-ca-issued-certs.txt.attr index-intermediate3-ca-issued-certs.txt index-intermediate3-ca-issued-certs.txt.attr intermediate1-ca-cert.der intermediate1-ca-cert.pem intermediate1-ca-key.der intermediate1-ca-key.pem intermediate2-ca-cert.der intermediate2-ca-cert.pem intermediate2-ca-key.der intermediate2-ca-key.pem intermediate3-ca-cert.der intermediate3-ca-cert.pem intermediate3-ca-key.der intermediate3-ca-key.pem ocsp-responder-cert.der ocsp-responder-cert.pem ocsp-responder-key.der ocsp-responder-key.pem openssl.cnf renewcerts-for-test.sh renewcerts.sh root-ca-cert.der root-ca-cert.pem root-ca-crl.pem root-ca-key.der root-ca-key.pem server1-cert.der server1-cert.pem server1-chain-noroot.pem server1-key.der server1-key.pem server2-cert.der server2-cert.pem server2-key.der server2-key.pem server3-cert.der server3-cert.pem server3-key.der server3-key.pem server4-cert.der server4-cert.pem server4-key.der server4-key.pem server5-cert.der server5-cert.pem server5-key.der server5-key.pem test-leaf-response.der test-multi-response.der test-response-nointern.der test-response-rsapss.der test-response.derp521
ca-p521-key.der ca-p521-key.pem ca-p521-priv.der ca-p521-priv.pem ca-p521.der ca-p521.pem client-p521-key.der client-p521-key.pem client-p521-priv.der client-p521-priv.pem client-p521.der client-p521.pem gen-p521-certs.sh gen-p521-keys.sh include.am root-p521-key.der root-p521-key.pem root-p521-priv.der root-p521-priv.pem root-p521.der root-p521.pem server-p521-cert.pem server-p521-key.der server-p521-key.pem server-p521-priv.der server-p521-priv.pem server-p521.der server-p521.pemrpk
client-cert-rpk.der client-ecc-cert-rpk.der include.am server-cert-rpk.der server-ecc-cert-rpk.derrsapss
ca-3072-rsapss-key.der ca-3072-rsapss-key.pem ca-3072-rsapss-priv.der ca-3072-rsapss-priv.pem ca-3072-rsapss.der ca-3072-rsapss.pem ca-rsapss-key.der ca-rsapss-key.pem ca-rsapss-priv.der ca-rsapss-priv.pem ca-rsapss.der ca-rsapss.pem client-3072-rsapss-key.der client-3072-rsapss-key.pem client-3072-rsapss-priv.der client-3072-rsapss-priv.pem client-3072-rsapss.der client-3072-rsapss.pem client-rsapss-key.der client-rsapss-key.pem client-rsapss-priv.der client-rsapss-priv.pem client-rsapss.der client-rsapss.pem gen-rsapss-keys.sh include.am renew-rsapss-certs.sh root-3072-rsapss-key.der root-3072-rsapss-key.pem root-3072-rsapss-priv.der root-3072-rsapss-priv.pem root-3072-rsapss.der root-3072-rsapss.pem root-rsapss-key.der root-rsapss-key.pem root-rsapss-priv.der root-rsapss-priv.pem root-rsapss.der root-rsapss.pem server-3072-rsapss-cert.pem server-3072-rsapss-key.der server-3072-rsapss-key.pem server-3072-rsapss-priv.der server-3072-rsapss-priv.pem server-3072-rsapss.der server-3072-rsapss.pem server-mix-rsapss-cert.pem server-rsapss-cert.pem server-rsapss-key.der server-rsapss-key.pem server-rsapss-priv.der server-rsapss-priv.pem server-rsapss.der server-rsapss.pemslhdsa
bench_slhdsa_sha2_128f_key.der bench_slhdsa_sha2_128s_key.der bench_slhdsa_sha2_192f_key.der bench_slhdsa_sha2_192s_key.der bench_slhdsa_sha2_256f_key.der bench_slhdsa_sha2_256s_key.der bench_slhdsa_shake128f_key.der bench_slhdsa_shake128s_key.der bench_slhdsa_shake192f_key.der bench_slhdsa_shake192s_key.der bench_slhdsa_shake256f_key.der bench_slhdsa_shake256s_key.der client-mldsa44-priv.pem client-mldsa44-sha2.der client-mldsa44-sha2.pem client-mldsa44-shake.der client-mldsa44-shake.pem gen-slhdsa-mldsa-certs.sh include.am root-slhdsa-sha2-128s-priv.der root-slhdsa-sha2-128s-priv.pem root-slhdsa-sha2-128s.der root-slhdsa-sha2-128s.pem root-slhdsa-shake-128s-priv.der root-slhdsa-shake-128s-priv.pem root-slhdsa-shake-128s.der root-slhdsa-shake-128s.pem server-mldsa44-priv.pem server-mldsa44-sha2.der server-mldsa44-sha2.pem server-mldsa44-shake.der server-mldsa44-shake.pemsm2
ca-sm2-key.der ca-sm2-key.pem ca-sm2-priv.der ca-sm2-priv.pem ca-sm2.der ca-sm2.pem client-sm2-key.der client-sm2-key.pem client-sm2-priv.der client-sm2-priv.pem client-sm2.der client-sm2.pem fix_sm2_spki.py gen-sm2-certs.sh gen-sm2-keys.sh include.am root-sm2-key.der root-sm2-key.pem root-sm2-priv.der root-sm2-priv.pem root-sm2.der root-sm2.pem self-sm2-cert.pem self-sm2-key.pem self-sm2-priv.pem server-sm2-cert.der server-sm2-cert.pem server-sm2-key.der server-sm2-key.pem server-sm2-priv.der server-sm2-priv.pem server-sm2.der server-sm2.pemstatickeys
dh-ffdhe2048-params.pem dh-ffdhe2048-pub.der dh-ffdhe2048-pub.pem dh-ffdhe2048.der dh-ffdhe2048.pem ecc-secp256r1.der ecc-secp256r1.pem gen-static.sh include.am x25519-pub.der x25519-pub.pem x25519.der x25519.pemtest
catalog.txt cert-bad-neg-int.der cert-bad-oid.der cert-bad-utf8.der cert-ext-ia.cfg cert-ext-ia.der cert-ext-ia.pem cert-ext-joi.cfg cert-ext-joi.der cert-ext-joi.pem cert-ext-mnc.der cert-ext-multiple.cfg cert-ext-multiple.der cert-ext-multiple.pem cert-ext-nc-combined.der cert-ext-nc-combined.pem cert-ext-nc.cfg cert-ext-nc.der cert-ext-nc.pem cert-ext-ncdns.der cert-ext-ncdns.pem cert-ext-ncip.der cert-ext-ncip.pem cert-ext-ncmixed.der cert-ext-ncmulti.der cert-ext-ncmulti.pem cert-ext-ncrid.der cert-ext-ncrid.pem cert-ext-nct.cfg cert-ext-nct.der cert-ext-nct.pem cert-ext-ndir-exc.cfg cert-ext-ndir-exc.der cert-ext-ndir-exc.pem cert-ext-ndir.cfg cert-ext-ndir.der cert-ext-ndir.pem cert-ext-ns.der cert-over-max-altnames.cfg cert-over-max-altnames.der cert-over-max-altnames.pem cert-over-max-nc.cfg cert-over-max-nc.der cert-over-max-nc.pem client-ecc-cert-ski.hex cn-ip-literal.der cn-ip-wildcard.der crit-cert.pem crit-key.pem dh1024.der dh1024.pem dh512.der dh512.pem digsigku.pem encrypteddata.msg gen-badsig.sh gen-ext-certs.sh gen-testcerts.sh include.am kari-keyid-cms.msg ktri-keyid-cms.msg ossl-trusted-cert.pem server-badaltname.der server-badaltname.pem server-badaltnull.der server-badaltnull.pem server-badcn.der server-badcn.pem server-badcnnull.der server-badcnnull.pem server-cert-ecc-badsig.der server-cert-ecc-badsig.pem server-cert-rsa-badsig.der server-cert-rsa-badsig.pem server-duplicate-policy.pem server-garbage.der server-garbage.pem server-goodalt.der server-goodalt.pem server-goodaltwild.der server-goodaltwild.pem server-goodcn.der server-goodcn.pem server-goodcnwild.der server-goodcnwild.pem server-localhost.der server-localhost.pem smime-test-canon.p7s smime-test-multipart-badsig.p7s smime-test-multipart.p7s smime-test.p7stest-pathlen
assemble-chains.sh chainA-ICA1-key.pem chainA-ICA1-pathlen0.pem chainA-assembled.pem chainA-entity-key.pem chainA-entity.pem chainB-ICA1-key.pem chainB-ICA1-pathlen0.pem chainB-ICA2-key.pem chainB-ICA2-pathlen1.pem chainB-assembled.pem chainB-entity-key.pem chainB-entity.pem chainC-ICA1-key.pem chainC-ICA1-pathlen1.pem chainC-assembled.pem chainC-entity-key.pem chainC-entity.pem chainD-ICA1-key.pem chainD-ICA1-pathlen127.pem chainD-assembled.pem chainD-entity-key.pem chainD-entity.pem chainE-ICA1-key.pem chainE-ICA1-pathlen128.pem chainE-assembled.pem chainE-entity-key.pem chainE-entity.pem chainF-ICA1-key.pem chainF-ICA1-pathlen1.pem chainF-ICA2-key.pem chainF-ICA2-pathlen0.pem chainF-assembled.pem chainF-entity-key.pem chainF-entity.pem chainG-ICA1-key.pem chainG-ICA1-pathlen0.pem chainG-ICA2-key.pem chainG-ICA2-pathlen1.pem chainG-ICA3-key.pem chainG-ICA3-pathlen99.pem chainG-ICA4-key.pem chainG-ICA4-pathlen5.pem chainG-ICA5-key.pem chainG-ICA5-pathlen20.pem chainG-ICA6-key.pem chainG-ICA6-pathlen10.pem chainG-ICA7-key.pem chainG-ICA7-pathlen100.pem chainG-assembled.pem chainG-entity-key.pem chainG-entity.pem chainH-ICA1-key.pem chainH-ICA1-pathlen0.pem chainH-ICA2-key.pem chainH-ICA2-pathlen2.pem chainH-ICA3-key.pem chainH-ICA3-pathlen2.pem chainH-ICA4-key.pem chainH-ICA4-pathlen2.pem chainH-assembled.pem chainH-entity-key.pem chainH-entity.pem chainI-ICA1-key.pem chainI-ICA1-no_pathlen.pem chainI-ICA2-key.pem chainI-ICA2-no_pathlen.pem chainI-ICA3-key.pem chainI-ICA3-pathlen2.pem chainI-assembled.pem chainI-entity-key.pem chainI-entity.pem chainJ-ICA1-key.pem chainJ-ICA1-no_pathlen.pem chainJ-ICA2-key.pem chainJ-ICA2-no_pathlen.pem chainJ-ICA3-key.pem chainJ-ICA3-no_pathlen.pem chainJ-ICA4-key.pem chainJ-ICA4-pathlen2.pem chainJ-assembled.pem chainJ-entity-key.pem chainJ-entity.pem include.am refreshkeys.shtest-serial0
ee_normal.pem ee_serial0.pem generate_certs.sh include.am intermediate_serial0.pem root_serial0.pem root_serial0_key.pem selfsigned_nonca_serial0.pemxmss
bc_xmss_chain_ca.der bc_xmss_chain_leaf.der bc_xmss_sha2_10_256_root.der bc_xmss_sha2_16_256_root.der bc_xmssmt_sha2_20_2_256_root.der bc_xmssmt_sha2_20_4_256_root.der bc_xmssmt_sha2_40_8_256_root.der include.amcmake
Config.cmake.in README.md config.in functions.cmake include.am options.h.in wolfssl-config-version.cmake.in wolfssl-targets.cmake.indebian
changelog.in control.in copyright include.am libwolfssl-dev.install libwolfssl.install rules.indoc
dox_comments
header_files
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h puf.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wc_she.h wc_slhdsa.h wolfio.hheader_files-ja
aes.h arc4.h ascon.h asn.h asn_public.h blake2.h bn.h camellia.h chacha.h chacha20_poly1305.h cmac.h coding.h compress.h cryptocb.h curve25519.h curve448.h des3.h dh.h doxygen_groups.h doxygen_pages.h dsa.h ecc.h eccsi.h ed25519.h ed448.h error-crypt.h evp.h hash.h hmac.h iotsafe.h kdf.h logging.h md2.h md4.h md5.h memory.h ocsp.h pem.h pkcs11.h pkcs7.h poly1305.h psa.h pwdbased.h quic.h random.h ripemd.h rsa.h sakke.h sha.h sha256.h sha3.h sha512.h signature.h siphash.h srp.h ssl.h tfm.h types.h wc_encrypt.h wc_port.h wolfio.hexamples
async
Makefile README.md async_client.c async_server.c async_tls.c async_tls.h include.am user_settings.hconfigs
README.md include.am user_settings_EBSnet.h user_settings_all.h user_settings_arduino.h user_settings_baremetal.h user_settings_ca.h user_settings_curve25519nonblock.h user_settings_dtls13.h user_settings_eccnonblock.h user_settings_espressif.h user_settings_fipsv2.h user_settings_fipsv5.h user_settings_min_ecc.h user_settings_openssl_compat.h user_settings_pkcs7.h user_settings_platformio.h user_settings_pq.h user_settings_rsa_only.h user_settings_stm32.h user_settings_template.h user_settings_tls12.h user_settings_tls13.h user_settings_wolfboot_keytools.h user_settings_wolfssh.h user_settings_wolftpm.hechoclient
echoclient.c echoclient.h echoclient.sln echoclient.vcproj echoclient.vcxproj include.am quitlinuxkm
Kbuild Makefile README.md get_thread_size.c include.am linuxkm-fips-hash-wrapper.sh linuxkm-fips-hash.c linuxkm_memory.c linuxkm_memory.h linuxkm_wc_port.h lkcapi_aes_glue.c lkcapi_dh_glue.c lkcapi_ecdh_glue.c lkcapi_ecdsa_glue.c lkcapi_glue.c lkcapi_rsa_glue.c lkcapi_sha_glue.c module_exports.c.template module_hooks.c pie_redirect_table.c wolfcrypt.lds x86_vector_register_glue.cm4
ax_add_am_macro.m4 ax_am_jobserver.m4 ax_am_macros.m4 ax_append_compile_flags.m4 ax_append_flag.m4 ax_append_link_flags.m4 ax_append_to_file.m4 ax_atomic.m4 ax_bsdkm.m4 ax_check_compile_flag.m4 ax_check_link_flag.m4 ax_compiler_version.m4 ax_count_cpus.m4 ax_create_generic_config.m4 ax_debug.m4 ax_file_escapes.m4 ax_harden_compiler_flags.m4 ax_linuxkm.m4 ax_print_to_file.m4 ax_pthread.m4 ax_require_defined.m4 ax_tls.m4 ax_vcs_checkout.m4 hexversion.m4 lib_socket_nsl.m4 visibility.m4mqx
wolfcrypt_benchmark
ReferencedRSESystems.xml wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_benchmark_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfcrypt_test
ReferencedRSESystems.xml wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfcrypt_test_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchwolfssl_client
ReferencedRSESystems.xml wolfssl_client_twrk70f120m_Int_Flash_DDRData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_DDRData_Release_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.jlink wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_JTrace.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Debug_PnE_U-MultiLink.launch wolfssl_client_twrk70f120m_Int_Flash_SramData_Release_PnE_U-MultiLink.launchscripts
aria-cmake-build-test.sh asn1_oid_sum.pl benchmark.test benchmark_compare.sh cleanup_testfiles.sh crl-gen-openssl.test crl-revoked.test dertoc.pl dtls.test dtlscid.test external.test google.test include.am makedistsmall.sh memtest.sh ocsp-responder-openssl-interop.test ocsp-stapling-with-ca-as-responder.test ocsp-stapling-with-wolfssl-responder.test ocsp-stapling.test ocsp-stapling2.test ocsp-stapling_tls13multi.test ocsp.test openssl.test openssl_srtp.test pem.test ping.test pkcallbacks.test psk.test resume.test rsapss.test sniffer-gen.sh sniffer-ipv6.pcap sniffer-static-rsa.pcap sniffer-testsuite.test sniffer-tls12-keylog.out sniffer-tls12-keylog.pcap sniffer-tls12-keylog.sslkeylog sniffer-tls13-dh-resume.pcap sniffer-tls13-dh.pcap sniffer-tls13-ecc-resume.pcap sniffer-tls13-ecc.pcap sniffer-tls13-hrr.pcap sniffer-tls13-keylog.out sniffer-tls13-keylog.pcap sniffer-tls13-keylog.sslkeylog sniffer-tls13-x25519-resume.pcap sniffer-tls13-x25519.pcap stm32l4-v4_0_1_build.sh tls13.test trusted_peer.test unit.test.in user_settings_asm.shsrc
bio.c conf.c crl.c dtls.c dtls13.c include.am internal.c keys.c ocsp.c pk.c pk_ec.c pk_rsa.c quic.c sniffer.c ssl.c ssl_api_cert.c ssl_api_crl_ocsp.c ssl_api_pk.c ssl_asn1.c ssl_bn.c ssl_certman.c ssl_crypto.c ssl_ech.c ssl_load.c ssl_misc.c ssl_p7p12.c ssl_sess.c ssl_sk.c tls.c tls13.c wolfio.c x509.c x509_str.ctests
api
api.h api_decl.h create_ocsp_test_blobs.py include.am test_aes.c test_aes.h test_arc4.c test_arc4.h test_ascon.c test_ascon.h test_ascon_kats.h test_asn.c test_asn.h test_blake2.c test_blake2.h test_camellia.c test_camellia.h test_certman.c test_certman.h test_chacha.c test_chacha.h test_chacha20_poly1305.c test_chacha20_poly1305.h test_cmac.c test_cmac.h test_curve25519.c test_curve25519.h test_curve448.c test_curve448.h test_des3.c test_des3.h test_dh.c test_dh.h test_digest.h test_dsa.c test_dsa.h test_dtls.c test_dtls.h test_ecc.c test_ecc.h test_ed25519.c test_ed25519.h test_ed448.c test_ed448.h test_evp.c test_evp.h test_evp_cipher.c test_evp_cipher.h test_evp_digest.c test_evp_digest.h test_evp_pkey.c test_evp_pkey.h test_hash.c test_hash.h test_hmac.c test_hmac.h test_md2.c test_md2.h test_md4.c test_md4.h test_md5.c test_md5.h test_mldsa.c test_mldsa.h test_mlkem.c test_mlkem.h test_ocsp.c test_ocsp.h test_ocsp_test_blobs.h test_ossl_asn1.c test_ossl_asn1.h test_ossl_bio.c test_ossl_bio.h test_ossl_bn.c test_ossl_bn.h test_ossl_cipher.c test_ossl_cipher.h test_ossl_dgst.c test_ossl_dgst.h test_ossl_dh.c test_ossl_dh.h test_ossl_dsa.c test_ossl_dsa.h test_ossl_ec.c test_ossl_ec.h test_ossl_ecx.c test_ossl_ecx.h test_ossl_mac.c test_ossl_mac.h test_ossl_obj.c test_ossl_obj.h test_ossl_p7p12.c test_ossl_p7p12.h test_ossl_pem.c test_ossl_pem.h test_ossl_rand.c test_ossl_rand.h test_ossl_rsa.c test_ossl_rsa.h test_ossl_sk.c test_ossl_sk.h test_ossl_x509.c test_ossl_x509.h test_ossl_x509_acert.c test_ossl_x509_acert.h test_ossl_x509_crypto.c test_ossl_x509_crypto.h test_ossl_x509_ext.c test_ossl_x509_ext.h test_ossl_x509_info.c test_ossl_x509_info.h test_ossl_x509_io.c test_ossl_x509_io.h test_ossl_x509_lu.c test_ossl_x509_lu.h test_ossl_x509_name.c test_ossl_x509_name.h test_ossl_x509_pk.c test_ossl_x509_pk.h test_ossl_x509_str.c test_ossl_x509_str.h test_ossl_x509_vp.c test_ossl_x509_vp.h test_pkcs12.c test_pkcs12.h test_pkcs7.c test_pkcs7.h test_poly1305.c test_poly1305.h test_random.c test_random.h test_rc2.c test_rc2.h test_ripemd.c test_ripemd.h test_rsa.c test_rsa.h test_sha.c test_sha.h test_sha256.c test_sha256.h test_sha3.c test_sha3.h test_sha512.c test_sha512.h test_she.c test_she.h test_signature.c test_signature.h test_slhdsa.c test_slhdsa.h test_sm2.c test_sm2.h test_sm3.c test_sm3.h test_sm4.c test_sm4.h test_tls.c test_tls.h test_tls13.c test_tls13.h test_tls_ext.c test_tls_ext.h test_wc_encrypt.c test_wc_encrypt.h test_wolfmath.c test_wolfmath.h test_x509.c test_x509.hwolfcrypt
benchmark
README.md benchmark-VS2022.sln benchmark-VS2022.vcxproj benchmark-VS2022.vcxproj.user benchmark.c benchmark.h benchmark.sln benchmark.vcproj benchmark.vcxproj include.amsrc
port
Espressif
esp_crt_bundle
README.md cacrt_all.pem cacrt_deprecated.pem cacrt_local.pem esp_crt_bundle.c gen_crt_bundle.py pio_install_cryptography.pyRenesas
README.md renesas_common.c renesas_fspsm_aes.c renesas_fspsm_rsa.c renesas_fspsm_sha.c renesas_fspsm_util.c renesas_rx64_hw_sha.c renesas_rx64_hw_util.c renesas_tsip_aes.c renesas_tsip_rsa.c renesas_tsip_sha.c renesas_tsip_util.carm
armv8-32-aes-asm.S armv8-32-aes-asm_c.c armv8-32-chacha-asm.S armv8-32-chacha-asm_c.c armv8-32-curve25519.S armv8-32-curve25519_c.c armv8-32-mlkem-asm.S armv8-32-mlkem-asm_c.c armv8-32-poly1305-asm.S armv8-32-poly1305-asm_c.c armv8-32-sha256-asm.S armv8-32-sha256-asm_c.c armv8-32-sha3-asm.S armv8-32-sha3-asm_c.c armv8-32-sha512-asm.S armv8-32-sha512-asm_c.c armv8-aes-asm.S armv8-aes-asm_c.c armv8-aes.c armv8-chacha-asm.S armv8-chacha-asm_c.c armv8-curve25519.S armv8-curve25519_c.c armv8-mlkem-asm.S armv8-mlkem-asm_c.c armv8-poly1305-asm.S armv8-poly1305-asm_c.c armv8-sha256-asm.S armv8-sha256-asm_c.c armv8-sha256.c armv8-sha3-asm.S armv8-sha3-asm_c.c armv8-sha512-asm.S armv8-sha512-asm_c.c armv8-sha512.c cryptoCell.c cryptoCellHash.c thumb2-aes-asm.S thumb2-aes-asm_c.c thumb2-chacha-asm.S thumb2-chacha-asm_c.c thumb2-curve25519.S thumb2-curve25519_c.c thumb2-mlkem-asm.S thumb2-mlkem-asm_c.c thumb2-poly1305-asm.S thumb2-poly1305-asm_c.c thumb2-sha256-asm.S thumb2-sha256-asm_c.c thumb2-sha3-asm.S thumb2-sha3-asm_c.c thumb2-sha512-asm.S thumb2-sha512-asm_c.ccaam
README.md caam_aes.c caam_doc.pdf caam_driver.c caam_error.c caam_integrity.c caam_qnx.c caam_sha.c wolfcaam_aes.c wolfcaam_cmac.c wolfcaam_ecdsa.c wolfcaam_fsl_nxp.c wolfcaam_hash.c wolfcaam_hmac.c wolfcaam_init.c wolfcaam_qnx.c wolfcaam_rsa.c wolfcaam_seco.c wolfcaam_x25519.cdevcrypto
README.md devcrypto_aes.c devcrypto_ecdsa.c devcrypto_hash.c devcrypto_hmac.c devcrypto_rsa.c devcrypto_x25519.c wc_devcrypto.criscv
riscv-64-aes.c riscv-64-chacha.c riscv-64-poly1305.c riscv-64-sha256.c riscv-64-sha3.c riscv-64-sha512.cwolfssl
openssl
aes.h asn1.h asn1t.h bio.h bn.h buffer.h camellia.h cmac.h cms.h compat_types.h conf.h crypto.h des.h dh.h dsa.h ec.h ec25519.h ec448.h ecdh.h ecdsa.h ed25519.h ed448.h engine.h err.h evp.h fips_rand.h hmac.h include.am kdf.h lhash.h md4.h md5.h modes.h obj_mac.h objects.h ocsp.h opensslconf.h opensslv.h ossl_typ.h pem.h pkcs12.h pkcs7.h rand.h rc4.h ripemd.h rsa.h safestack.h sha.h sha3.h srp.h ssl.h ssl23.h stack.h tls1.h txt_db.h ui.h x509.h x509_vfy.h x509v3.hwolfcrypt
port
Renesas
renesas-fspsm-crypt.h renesas-fspsm-types.h renesas-rx64-hw-crypt.h renesas-tsip-crypt.h renesas_cmn.h renesas_fspsm_internal.h renesas_sync.h renesas_tsip_internal.h renesas_tsip_types.hcaam
caam_driver.h caam_error.h caam_qnx.h wolfcaam.h wolfcaam_aes.h wolfcaam_cmac.h wolfcaam_ecdsa.h wolfcaam_fsl_nxp.h wolfcaam_hash.h wolfcaam_qnx.h wolfcaam_rsa.h wolfcaam_seco.h wolfcaam_sha.h wolfcaam_x25519.hwrapper
Ada
examples
src
aes_verify_main.adb rsa_verify_main.adb sha256_main.adb spark_sockets.adb spark_sockets.ads spark_terminal.adb spark_terminal.ads tls_client.adb tls_client.ads tls_client_main.adb tls_server.adb tls_server.ads tls_server_main.adbtests
src
aes_bindings_tests.adb aes_bindings_tests.ads rsa_verify_bindings_tests.adb rsa_verify_bindings_tests.ads sha256_bindings_tests.adb sha256_bindings_tests.ads tests.adbCSharp
wolfSSL-Example-IOCallbacks
App.config wolfSSL-Example-IOCallbacks.cs wolfSSL-Example-IOCallbacks.csprojwolfSSL-TLS-ServerThreaded
App.config wolfSSL-TLS-ServerThreaded.cs wolfSSL-TLS-ServerThreaded.csprojrust
wolfssl-wolfcrypt
src
aes.rs blake2.rs chacha20_poly1305.rs cmac.rs cmac_mac.rs curve25519.rs dh.rs dilithium.rs ecc.rs ecdsa.rs ed25519.rs ed448.rs fips.rs hkdf.rs hmac.rs hmac_mac.rs kdf.rs lib.rs lms.rs mlkem.rs mlkem_kem.rs pbkdf2_password_hash.rs prf.rs random.rs rsa.rs rsa_pkcs1v15.rs sha.rs sha_digest.rs sys.rstests
test_aes.rs test_blake2.rs test_chacha20_poly1305.rs test_cmac.rs test_cmac_mac.rs test_curve25519.rs test_dh.rs test_dilithium.rs test_ecc.rs test_ecdsa.rs test_ed25519.rs test_ed448.rs test_hkdf.rs test_hmac.rs test_hmac_mac.rs test_kdf.rs test_lms.rs test_mlkem.rs test_mlkem_kem.rs test_pbkdf2_password_hash.rs test_prf.rs test_random.rs test_rsa.rs test_rsa_pkcs1v15.rs test_sha.rs test_sha_digest.rs test_wolfcrypt.rszephyr
samples
wolfssl_benchmark
CMakeLists.txt README install_test.sh prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.confwolfssl_test
CMakeLists.txt README install_test.sh prj-no-malloc.conf prj.conf sample.yaml zephyr_legacy.conf zephyr_v4.1.conf
wolfssl/wolfcrypt/src/port/arm/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 */