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/aes_xts_asm.asm
raw
1; /* aes_xts_asm.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
22IF @Version LT 1200
23; AVX2 instructions not recognized by old versions of MASM
24IFNDEF NO_AVX2_SUPPORT
25NO_AVX2_SUPPORT = 1
26ENDIF
27; MOVBE instruction not recognized by old versions of MASM
28IFNDEF NO_MOVBE_SUPPORT
29NO_MOVBE_SUPPORT = 1
30ENDIF
31ENDIF
32
33IFNDEF HAVE_INTEL_AVX1
34HAVE_INTEL_AVX1 = 1
35ENDIF
36IFNDEF NO_AVX2_SUPPORT
37HAVE_INTEL_AVX2 = 1
38ENDIF
39
40IFNDEF _WIN64
41_WIN64 = 1
42ENDIF
43
44_TEXT SEGMENT READONLY PARA
45AES_XTS_init_aesni PROC
46 movdqu xmm0, OWORD PTR [rcx]
47 ; aes_enc_block
48 pxor xmm0, [rdx]
49 movdqu xmm2, OWORD PTR [rdx+16]
50 aesenc xmm0, xmm2
51 movdqu xmm2, OWORD PTR [rdx+32]
52 aesenc xmm0, xmm2
53 movdqu xmm2, OWORD PTR [rdx+48]
54 aesenc xmm0, xmm2
55 movdqu xmm2, OWORD PTR [rdx+64]
56 aesenc xmm0, xmm2
57 movdqu xmm2, OWORD PTR [rdx+80]
58 aesenc xmm0, xmm2
59 movdqu xmm2, OWORD PTR [rdx+96]
60 aesenc xmm0, xmm2
61 movdqu xmm2, OWORD PTR [rdx+112]
62 aesenc xmm0, xmm2
63 movdqu xmm2, OWORD PTR [rdx+128]
64 aesenc xmm0, xmm2
65 movdqu xmm2, OWORD PTR [rdx+144]
66 aesenc xmm0, xmm2
67 cmp r8d, 11
68 movdqu xmm2, OWORD PTR [rdx+160]
69 jl L_AES_XTS_init_aesni_tweak_aes_enc_block_last
70 aesenc xmm0, xmm2
71 movdqu xmm3, OWORD PTR [rdx+176]
72 aesenc xmm0, xmm3
73 cmp r8d, 13
74 movdqu xmm2, OWORD PTR [rdx+192]
75 jl L_AES_XTS_init_aesni_tweak_aes_enc_block_last
76 aesenc xmm0, xmm2
77 movdqu xmm3, OWORD PTR [rdx+208]
78 aesenc xmm0, xmm3
79 movdqu xmm2, OWORD PTR [rdx+224]
80L_AES_XTS_init_aesni_tweak_aes_enc_block_last:
81 aesenclast xmm0, xmm2
82 movdqu OWORD PTR [rcx], xmm0
83 ret
84AES_XTS_init_aesni ENDP
85_TEXT ENDS
86_DATA SEGMENT
87ALIGN 16
88L_aes_xts_gc_xts DWORD \
89 00000087h, 00000001h, 00000001h, 00000001h
90ptr_L_aes_xts_gc_xts QWORD L_aes_xts_gc_xts
91_DATA ENDS
92_TEXT SEGMENT READONLY PARA
93AES_XTS_encrypt_aesni PROC
94 push rdi
95 push rsi
96 push r12
97 push r13
98 mov rdi, rcx
99 mov rsi, rdx
100 mov rax, r8
101 mov r12, r9
102 mov r8, QWORD PTR [rsp+72]
103 mov r9, QWORD PTR [rsp+80]
104 mov r10d, DWORD PTR [rsp+88]
105 sub rsp, 176
106 movdqu OWORD PTR [rsp+64], xmm6
107 movdqu OWORD PTR [rsp+80], xmm7
108 movdqu OWORD PTR [rsp+96], xmm8
109 movdqu OWORD PTR [rsp+112], xmm9
110 movdqu OWORD PTR [rsp+128], xmm10
111 movdqu OWORD PTR [rsp+144], xmm11
112 movdqu OWORD PTR [rsp+160], xmm12
113 movdqu xmm12, OWORD PTR L_aes_xts_gc_xts
114 movdqu xmm0, OWORD PTR [r12]
115 ; aes_enc_block
116 pxor xmm0, [r9]
117 movdqu xmm5, OWORD PTR [r9+16]
118 aesenc xmm0, xmm5
119 movdqu xmm5, OWORD PTR [r9+32]
120 aesenc xmm0, xmm5
121 movdqu xmm5, OWORD PTR [r9+48]
122 aesenc xmm0, xmm5
123 movdqu xmm5, OWORD PTR [r9+64]
124 aesenc xmm0, xmm5
125 movdqu xmm5, OWORD PTR [r9+80]
126 aesenc xmm0, xmm5
127 movdqu xmm5, OWORD PTR [r9+96]
128 aesenc xmm0, xmm5
129 movdqu xmm5, OWORD PTR [r9+112]
130 aesenc xmm0, xmm5
131 movdqu xmm5, OWORD PTR [r9+128]
132 aesenc xmm0, xmm5
133 movdqu xmm5, OWORD PTR [r9+144]
134 aesenc xmm0, xmm5
135 cmp r10d, 11
136 movdqu xmm5, OWORD PTR [r9+160]
137 jl L_AES_XTS_encrypt_aesni_tweak_aes_enc_block_last
138 aesenc xmm0, xmm5
139 movdqu xmm6, OWORD PTR [r9+176]
140 aesenc xmm0, xmm6
141 cmp r10d, 13
142 movdqu xmm5, OWORD PTR [r9+192]
143 jl L_AES_XTS_encrypt_aesni_tweak_aes_enc_block_last
144 aesenc xmm0, xmm5
145 movdqu xmm6, OWORD PTR [r9+208]
146 aesenc xmm0, xmm6
147 movdqu xmm5, OWORD PTR [r9+224]
148L_AES_XTS_encrypt_aesni_tweak_aes_enc_block_last:
149 aesenclast xmm0, xmm5
150 xor r13d, r13d
151 cmp eax, 64
152 mov r11d, eax
153 jl L_AES_XTS_encrypt_aesni_done_64
154 and r11d, 4294967232
155L_AES_XTS_encrypt_aesni_enc_64:
156 ; 64 bytes of input
157 ; aes_enc_64
158 lea rcx, QWORD PTR [rdi+r13]
159 lea rdx, QWORD PTR [rsi+r13]
160 movdqu xmm8, OWORD PTR [rcx]
161 movdqu xmm9, OWORD PTR [rcx+16]
162 movdqu xmm10, OWORD PTR [rcx+32]
163 movdqu xmm11, OWORD PTR [rcx+48]
164 movdqa xmm4, xmm0
165 movdqa xmm1, xmm0
166 psrad xmm4, 31
167 pslld xmm1, 1
168 pshufd xmm4, xmm4, 147
169 pand xmm4, xmm12
170 pxor xmm1, xmm4
171 movdqa xmm4, xmm1
172 movdqa xmm2, xmm1
173 psrad xmm4, 31
174 pslld xmm2, 1
175 pshufd xmm4, xmm4, 147
176 pand xmm4, xmm12
177 pxor xmm2, xmm4
178 movdqa xmm4, xmm2
179 movdqa xmm3, xmm2
180 psrad xmm4, 31
181 pslld xmm3, 1
182 pshufd xmm4, xmm4, 147
183 pand xmm4, xmm12
184 pxor xmm3, xmm4
185 pxor xmm8, xmm0
186 pxor xmm9, xmm1
187 pxor xmm10, xmm2
188 pxor xmm11, xmm3
189 ; aes_enc_block
190 movdqu xmm4, OWORD PTR [r8]
191 pxor xmm8, xmm4
192 pxor xmm9, xmm4
193 pxor xmm10, xmm4
194 pxor xmm11, xmm4
195 movdqu xmm4, OWORD PTR [r8+16]
196 aesenc xmm8, xmm4
197 aesenc xmm9, xmm4
198 aesenc xmm10, xmm4
199 aesenc xmm11, xmm4
200 movdqu xmm4, OWORD PTR [r8+32]
201 aesenc xmm8, xmm4
202 aesenc xmm9, xmm4
203 aesenc xmm10, xmm4
204 aesenc xmm11, xmm4
205 movdqu xmm4, OWORD PTR [r8+48]
206 aesenc xmm8, xmm4
207 aesenc xmm9, xmm4
208 aesenc xmm10, xmm4
209 aesenc xmm11, xmm4
210 movdqu xmm4, OWORD PTR [r8+64]
211 aesenc xmm8, xmm4
212 aesenc xmm9, xmm4
213 aesenc xmm10, xmm4
214 aesenc xmm11, xmm4
215 movdqu xmm4, OWORD PTR [r8+80]
216 aesenc xmm8, xmm4
217 aesenc xmm9, xmm4
218 aesenc xmm10, xmm4
219 aesenc xmm11, xmm4
220 movdqu xmm4, OWORD PTR [r8+96]
221 aesenc xmm8, xmm4
222 aesenc xmm9, xmm4
223 aesenc xmm10, xmm4
224 aesenc xmm11, xmm4
225 movdqu xmm4, OWORD PTR [r8+112]
226 aesenc xmm8, xmm4
227 aesenc xmm9, xmm4
228 aesenc xmm10, xmm4
229 aesenc xmm11, xmm4
230 movdqu xmm4, OWORD PTR [r8+128]
231 aesenc xmm8, xmm4
232 aesenc xmm9, xmm4
233 aesenc xmm10, xmm4
234 aesenc xmm11, xmm4
235 movdqu xmm4, OWORD PTR [r8+144]
236 aesenc xmm8, xmm4
237 aesenc xmm9, xmm4
238 aesenc xmm10, xmm4
239 aesenc xmm11, xmm4
240 cmp r10d, 11
241 movdqu xmm4, OWORD PTR [r8+160]
242 jl L_AES_XTS_encrypt_aesni_aes_enc_64_aes_enc_block_last
243 aesenc xmm8, xmm4
244 aesenc xmm9, xmm4
245 aesenc xmm10, xmm4
246 aesenc xmm11, xmm4
247 movdqu xmm4, OWORD PTR [r8+176]
248 aesenc xmm8, xmm4
249 aesenc xmm9, xmm4
250 aesenc xmm10, xmm4
251 aesenc xmm11, xmm4
252 cmp r10d, 13
253 movdqu xmm4, OWORD PTR [r8+192]
254 jl L_AES_XTS_encrypt_aesni_aes_enc_64_aes_enc_block_last
255 aesenc xmm8, xmm4
256 aesenc xmm9, xmm4
257 aesenc xmm10, xmm4
258 aesenc xmm11, xmm4
259 movdqu xmm4, OWORD PTR [r8+208]
260 aesenc xmm8, xmm4
261 aesenc xmm9, xmm4
262 aesenc xmm10, xmm4
263 aesenc xmm11, xmm4
264 movdqu xmm4, OWORD PTR [r8+224]
265L_AES_XTS_encrypt_aesni_aes_enc_64_aes_enc_block_last:
266 aesenclast xmm8, xmm4
267 aesenclast xmm9, xmm4
268 aesenclast xmm10, xmm4
269 aesenclast xmm11, xmm4
270 pxor xmm8, xmm0
271 pxor xmm9, xmm1
272 pxor xmm10, xmm2
273 pxor xmm11, xmm3
274 movdqu OWORD PTR [rdx], xmm8
275 movdqu OWORD PTR [rdx+16], xmm9
276 movdqu OWORD PTR [rdx+32], xmm10
277 movdqu OWORD PTR [rdx+48], xmm11
278 movdqa xmm4, xmm3
279 movdqa xmm0, xmm3
280 psrad xmm4, 31
281 pslld xmm0, 1
282 pshufd xmm4, xmm4, 147
283 pand xmm4, xmm12
284 pxor xmm0, xmm4
285 add r13d, 64
286 cmp r13d, r11d
287 jl L_AES_XTS_encrypt_aesni_enc_64
288L_AES_XTS_encrypt_aesni_done_64:
289 cmp r13d, eax
290 mov r11d, eax
291 je L_AES_XTS_encrypt_aesni_done_enc
292 sub r11d, r13d
293 cmp r11d, 16
294 mov r11d, eax
295 jl L_AES_XTS_encrypt_aesni_last_15
296 and r11d, 4294967280
297 ; 16 bytes of input
298L_AES_XTS_encrypt_aesni_enc_16:
299 lea rcx, QWORD PTR [rdi+r13]
300 movdqu xmm8, OWORD PTR [rcx]
301 pxor xmm8, xmm0
302 ; aes_enc_block
303 pxor xmm8, [r8]
304 movdqu xmm5, OWORD PTR [r8+16]
305 aesenc xmm8, xmm5
306 movdqu xmm5, OWORD PTR [r8+32]
307 aesenc xmm8, xmm5
308 movdqu xmm5, OWORD PTR [r8+48]
309 aesenc xmm8, xmm5
310 movdqu xmm5, OWORD PTR [r8+64]
311 aesenc xmm8, xmm5
312 movdqu xmm5, OWORD PTR [r8+80]
313 aesenc xmm8, xmm5
314 movdqu xmm5, OWORD PTR [r8+96]
315 aesenc xmm8, xmm5
316 movdqu xmm5, OWORD PTR [r8+112]
317 aesenc xmm8, xmm5
318 movdqu xmm5, OWORD PTR [r8+128]
319 aesenc xmm8, xmm5
320 movdqu xmm5, OWORD PTR [r8+144]
321 aesenc xmm8, xmm5
322 cmp r10d, 11
323 movdqu xmm5, OWORD PTR [r8+160]
324 jl L_AES_XTS_encrypt_aesni_aes_enc_block_last
325 aesenc xmm8, xmm5
326 movdqu xmm6, OWORD PTR [r8+176]
327 aesenc xmm8, xmm6
328 cmp r10d, 13
329 movdqu xmm5, OWORD PTR [r8+192]
330 jl L_AES_XTS_encrypt_aesni_aes_enc_block_last
331 aesenc xmm8, xmm5
332 movdqu xmm6, OWORD PTR [r8+208]
333 aesenc xmm8, xmm6
334 movdqu xmm5, OWORD PTR [r8+224]
335L_AES_XTS_encrypt_aesni_aes_enc_block_last:
336 aesenclast xmm8, xmm5
337 pxor xmm8, xmm0
338 lea rcx, QWORD PTR [rsi+r13]
339 movdqu OWORD PTR [rcx], xmm8
340 movdqa xmm4, xmm0
341 psrad xmm4, 31
342 pslld xmm0, 1
343 pshufd xmm4, xmm4, 147
344 pand xmm4, xmm12
345 pxor xmm0, xmm4
346 add r13d, 16
347 cmp r13d, r11d
348 jl L_AES_XTS_encrypt_aesni_enc_16
349 cmp r13d, eax
350 je L_AES_XTS_encrypt_aesni_done_enc
351L_AES_XTS_encrypt_aesni_last_15:
352 sub r13, 16
353 lea rcx, QWORD PTR [rsi+r13]
354 movdqu xmm8, OWORD PTR [rcx]
355 add r13, 16
356 movdqu OWORD PTR [rsp], xmm8
357 xor rdx, rdx
358L_AES_XTS_encrypt_aesni_last_15_byte_loop:
359 mov r11b, BYTE PTR [rsp+rdx]
360 mov cl, BYTE PTR [rdi+r13]
361 mov BYTE PTR [rsi+r13], r11b
362 mov BYTE PTR [rsp+rdx], cl
363 inc r13d
364 inc edx
365 cmp r13d, eax
366 jl L_AES_XTS_encrypt_aesni_last_15_byte_loop
367 sub r13, rdx
368 movdqu xmm8, OWORD PTR [rsp]
369 sub r13, 16
370 pxor xmm8, xmm0
371 ; aes_enc_block
372 pxor xmm8, [r8]
373 movdqu xmm5, OWORD PTR [r8+16]
374 aesenc xmm8, xmm5
375 movdqu xmm5, OWORD PTR [r8+32]
376 aesenc xmm8, xmm5
377 movdqu xmm5, OWORD PTR [r8+48]
378 aesenc xmm8, xmm5
379 movdqu xmm5, OWORD PTR [r8+64]
380 aesenc xmm8, xmm5
381 movdqu xmm5, OWORD PTR [r8+80]
382 aesenc xmm8, xmm5
383 movdqu xmm5, OWORD PTR [r8+96]
384 aesenc xmm8, xmm5
385 movdqu xmm5, OWORD PTR [r8+112]
386 aesenc xmm8, xmm5
387 movdqu xmm5, OWORD PTR [r8+128]
388 aesenc xmm8, xmm5
389 movdqu xmm5, OWORD PTR [r8+144]
390 aesenc xmm8, xmm5
391 cmp r10d, 11
392 movdqu xmm5, OWORD PTR [r8+160]
393 jl L_AES_XTS_encrypt_aesni_last_15_aes_enc_block_last
394 aesenc xmm8, xmm5
395 movdqu xmm6, OWORD PTR [r8+176]
396 aesenc xmm8, xmm6
397 cmp r10d, 13
398 movdqu xmm5, OWORD PTR [r8+192]
399 jl L_AES_XTS_encrypt_aesni_last_15_aes_enc_block_last
400 aesenc xmm8, xmm5
401 movdqu xmm6, OWORD PTR [r8+208]
402 aesenc xmm8, xmm6
403 movdqu xmm5, OWORD PTR [r8+224]
404L_AES_XTS_encrypt_aesni_last_15_aes_enc_block_last:
405 aesenclast xmm8, xmm5
406 pxor xmm8, xmm0
407 lea rcx, QWORD PTR [rsi+r13]
408 movdqu OWORD PTR [rcx], xmm8
409L_AES_XTS_encrypt_aesni_done_enc:
410 movdqu xmm6, OWORD PTR [rsp+64]
411 movdqu xmm7, OWORD PTR [rsp+80]
412 movdqu xmm8, OWORD PTR [rsp+96]
413 movdqu xmm9, OWORD PTR [rsp+112]
414 movdqu xmm10, OWORD PTR [rsp+128]
415 movdqu xmm11, OWORD PTR [rsp+144]
416 movdqu xmm12, OWORD PTR [rsp+160]
417 add rsp, 176
418 pop r13
419 pop r12
420 pop rsi
421 pop rdi
422 ret
423AES_XTS_encrypt_aesni ENDP
424_TEXT ENDS
425_TEXT SEGMENT READONLY PARA
426AES_XTS_encrypt_update_aesni PROC
427 push rdi
428 push rsi
429 push r12
430 mov rdi, rcx
431 mov rsi, rdx
432 mov rax, r8
433 mov r10, r9
434 mov r8, QWORD PTR [rsp+64]
435 mov r9d, DWORD PTR [rsp+72]
436 sub rsp, 176
437 movdqu OWORD PTR [rsp+64], xmm6
438 movdqu OWORD PTR [rsp+80], xmm7
439 movdqu OWORD PTR [rsp+96], xmm8
440 movdqu OWORD PTR [rsp+112], xmm9
441 movdqu OWORD PTR [rsp+128], xmm10
442 movdqu OWORD PTR [rsp+144], xmm11
443 movdqu OWORD PTR [rsp+160], xmm12
444 movdqu xmm12, OWORD PTR L_aes_xts_gc_xts
445 movdqu xmm0, OWORD PTR [r8]
446 xor r12d, r12d
447 cmp eax, 64
448 mov r11d, eax
449 jl L_AES_XTS_encrypt_update_aesni_done_64
450 and r11d, 4294967232
451L_AES_XTS_encrypt_update_aesni_enc_64:
452 ; 64 bytes of input
453 ; aes_enc_64
454 lea rcx, QWORD PTR [rdi+r12]
455 lea rdx, QWORD PTR [rsi+r12]
456 movdqu xmm8, OWORD PTR [rcx]
457 movdqu xmm9, OWORD PTR [rcx+16]
458 movdqu xmm10, OWORD PTR [rcx+32]
459 movdqu xmm11, OWORD PTR [rcx+48]
460 movdqa xmm4, xmm0
461 movdqa xmm1, xmm0
462 psrad xmm4, 31
463 pslld xmm1, 1
464 pshufd xmm4, xmm4, 147
465 pand xmm4, xmm12
466 pxor xmm1, xmm4
467 movdqa xmm4, xmm1
468 movdqa xmm2, xmm1
469 psrad xmm4, 31
470 pslld xmm2, 1
471 pshufd xmm4, xmm4, 147
472 pand xmm4, xmm12
473 pxor xmm2, xmm4
474 movdqa xmm4, xmm2
475 movdqa xmm3, xmm2
476 psrad xmm4, 31
477 pslld xmm3, 1
478 pshufd xmm4, xmm4, 147
479 pand xmm4, xmm12
480 pxor xmm3, xmm4
481 pxor xmm8, xmm0
482 pxor xmm9, xmm1
483 pxor xmm10, xmm2
484 pxor xmm11, xmm3
485 ; aes_enc_block
486 movdqu xmm4, OWORD PTR [r10]
487 pxor xmm8, xmm4
488 pxor xmm9, xmm4
489 pxor xmm10, xmm4
490 pxor xmm11, xmm4
491 movdqu xmm4, OWORD PTR [r10+16]
492 aesenc xmm8, xmm4
493 aesenc xmm9, xmm4
494 aesenc xmm10, xmm4
495 aesenc xmm11, xmm4
496 movdqu xmm4, OWORD PTR [r10+32]
497 aesenc xmm8, xmm4
498 aesenc xmm9, xmm4
499 aesenc xmm10, xmm4
500 aesenc xmm11, xmm4
501 movdqu xmm4, OWORD PTR [r10+48]
502 aesenc xmm8, xmm4
503 aesenc xmm9, xmm4
504 aesenc xmm10, xmm4
505 aesenc xmm11, xmm4
506 movdqu xmm4, OWORD PTR [r10+64]
507 aesenc xmm8, xmm4
508 aesenc xmm9, xmm4
509 aesenc xmm10, xmm4
510 aesenc xmm11, xmm4
511 movdqu xmm4, OWORD PTR [r10+80]
512 aesenc xmm8, xmm4
513 aesenc xmm9, xmm4
514 aesenc xmm10, xmm4
515 aesenc xmm11, xmm4
516 movdqu xmm4, OWORD PTR [r10+96]
517 aesenc xmm8, xmm4
518 aesenc xmm9, xmm4
519 aesenc xmm10, xmm4
520 aesenc xmm11, xmm4
521 movdqu xmm4, OWORD PTR [r10+112]
522 aesenc xmm8, xmm4
523 aesenc xmm9, xmm4
524 aesenc xmm10, xmm4
525 aesenc xmm11, xmm4
526 movdqu xmm4, OWORD PTR [r10+128]
527 aesenc xmm8, xmm4
528 aesenc xmm9, xmm4
529 aesenc xmm10, xmm4
530 aesenc xmm11, xmm4
531 movdqu xmm4, OWORD PTR [r10+144]
532 aesenc xmm8, xmm4
533 aesenc xmm9, xmm4
534 aesenc xmm10, xmm4
535 aesenc xmm11, xmm4
536 cmp r9d, 11
537 movdqu xmm4, OWORD PTR [r10+160]
538 jl L_AES_XTS_encrypt_update_aesni_aes_enc_64_aes_enc_block_last
539 aesenc xmm8, xmm4
540 aesenc xmm9, xmm4
541 aesenc xmm10, xmm4
542 aesenc xmm11, xmm4
543 movdqu xmm4, OWORD PTR [r10+176]
544 aesenc xmm8, xmm4
545 aesenc xmm9, xmm4
546 aesenc xmm10, xmm4
547 aesenc xmm11, xmm4
548 cmp r9d, 13
549 movdqu xmm4, OWORD PTR [r10+192]
550 jl L_AES_XTS_encrypt_update_aesni_aes_enc_64_aes_enc_block_last
551 aesenc xmm8, xmm4
552 aesenc xmm9, xmm4
553 aesenc xmm10, xmm4
554 aesenc xmm11, xmm4
555 movdqu xmm4, OWORD PTR [r10+208]
556 aesenc xmm8, xmm4
557 aesenc xmm9, xmm4
558 aesenc xmm10, xmm4
559 aesenc xmm11, xmm4
560 movdqu xmm4, OWORD PTR [r10+224]
561L_AES_XTS_encrypt_update_aesni_aes_enc_64_aes_enc_block_last:
562 aesenclast xmm8, xmm4
563 aesenclast xmm9, xmm4
564 aesenclast xmm10, xmm4
565 aesenclast xmm11, xmm4
566 pxor xmm8, xmm0
567 pxor xmm9, xmm1
568 pxor xmm10, xmm2
569 pxor xmm11, xmm3
570 movdqu OWORD PTR [rdx], xmm8
571 movdqu OWORD PTR [rdx+16], xmm9
572 movdqu OWORD PTR [rdx+32], xmm10
573 movdqu OWORD PTR [rdx+48], xmm11
574 movdqa xmm4, xmm3
575 movdqa xmm0, xmm3
576 psrad xmm4, 31
577 pslld xmm0, 1
578 pshufd xmm4, xmm4, 147
579 pand xmm4, xmm12
580 pxor xmm0, xmm4
581 add r12d, 64
582 cmp r12d, r11d
583 jl L_AES_XTS_encrypt_update_aesni_enc_64
584L_AES_XTS_encrypt_update_aesni_done_64:
585 cmp r12d, eax
586 mov r11d, eax
587 je L_AES_XTS_encrypt_update_aesni_done_enc
588 sub r11d, r12d
589 cmp r11d, 16
590 mov r11d, eax
591 jl L_AES_XTS_encrypt_update_aesni_last_15
592 and r11d, 4294967280
593 ; 16 bytes of input
594L_AES_XTS_encrypt_update_aesni_enc_16:
595 lea rcx, QWORD PTR [rdi+r12]
596 movdqu xmm8, OWORD PTR [rcx]
597 pxor xmm8, xmm0
598 ; aes_enc_block
599 pxor xmm8, [r10]
600 movdqu xmm5, OWORD PTR [r10+16]
601 aesenc xmm8, xmm5
602 movdqu xmm5, OWORD PTR [r10+32]
603 aesenc xmm8, xmm5
604 movdqu xmm5, OWORD PTR [r10+48]
605 aesenc xmm8, xmm5
606 movdqu xmm5, OWORD PTR [r10+64]
607 aesenc xmm8, xmm5
608 movdqu xmm5, OWORD PTR [r10+80]
609 aesenc xmm8, xmm5
610 movdqu xmm5, OWORD PTR [r10+96]
611 aesenc xmm8, xmm5
612 movdqu xmm5, OWORD PTR [r10+112]
613 aesenc xmm8, xmm5
614 movdqu xmm5, OWORD PTR [r10+128]
615 aesenc xmm8, xmm5
616 movdqu xmm5, OWORD PTR [r10+144]
617 aesenc xmm8, xmm5
618 cmp r9d, 11
619 movdqu xmm5, OWORD PTR [r10+160]
620 jl L_AES_XTS_encrypt_update_aesni_aes_enc_block_last
621 aesenc xmm8, xmm5
622 movdqu xmm6, OWORD PTR [r10+176]
623 aesenc xmm8, xmm6
624 cmp r9d, 13
625 movdqu xmm5, OWORD PTR [r10+192]
626 jl L_AES_XTS_encrypt_update_aesni_aes_enc_block_last
627 aesenc xmm8, xmm5
628 movdqu xmm6, OWORD PTR [r10+208]
629 aesenc xmm8, xmm6
630 movdqu xmm5, OWORD PTR [r10+224]
631L_AES_XTS_encrypt_update_aesni_aes_enc_block_last:
632 aesenclast xmm8, xmm5
633 pxor xmm8, xmm0
634 lea rcx, QWORD PTR [rsi+r12]
635 movdqu OWORD PTR [rcx], xmm8
636 movdqa xmm4, xmm0
637 psrad xmm4, 31
638 pslld xmm0, 1
639 pshufd xmm4, xmm4, 147
640 pand xmm4, xmm12
641 pxor xmm0, xmm4
642 add r12d, 16
643 cmp r12d, r11d
644 jl L_AES_XTS_encrypt_update_aesni_enc_16
645 cmp r12d, eax
646 je L_AES_XTS_encrypt_update_aesni_done_enc
647L_AES_XTS_encrypt_update_aesni_last_15:
648 sub r12, 16
649 lea rcx, QWORD PTR [rsi+r12]
650 movdqu xmm8, OWORD PTR [rcx]
651 add r12, 16
652 movdqu OWORD PTR [rsp], xmm8
653 xor rdx, rdx
654L_AES_XTS_encrypt_update_aesni_last_15_byte_loop:
655 mov r11b, BYTE PTR [rsp+rdx]
656 mov cl, BYTE PTR [rdi+r12]
657 mov BYTE PTR [rsi+r12], r11b
658 mov BYTE PTR [rsp+rdx], cl
659 inc r12d
660 inc edx
661 cmp r12d, eax
662 jl L_AES_XTS_encrypt_update_aesni_last_15_byte_loop
663 sub r12, rdx
664 movdqu xmm8, OWORD PTR [rsp]
665 sub r12, 16
666 pxor xmm8, xmm0
667 ; aes_enc_block
668 pxor xmm8, [r10]
669 movdqu xmm5, OWORD PTR [r10+16]
670 aesenc xmm8, xmm5
671 movdqu xmm5, OWORD PTR [r10+32]
672 aesenc xmm8, xmm5
673 movdqu xmm5, OWORD PTR [r10+48]
674 aesenc xmm8, xmm5
675 movdqu xmm5, OWORD PTR [r10+64]
676 aesenc xmm8, xmm5
677 movdqu xmm5, OWORD PTR [r10+80]
678 aesenc xmm8, xmm5
679 movdqu xmm5, OWORD PTR [r10+96]
680 aesenc xmm8, xmm5
681 movdqu xmm5, OWORD PTR [r10+112]
682 aesenc xmm8, xmm5
683 movdqu xmm5, OWORD PTR [r10+128]
684 aesenc xmm8, xmm5
685 movdqu xmm5, OWORD PTR [r10+144]
686 aesenc xmm8, xmm5
687 cmp r9d, 11
688 movdqu xmm5, OWORD PTR [r10+160]
689 jl L_AES_XTS_encrypt_update_aesni_last_15_aes_enc_block_last
690 aesenc xmm8, xmm5
691 movdqu xmm6, OWORD PTR [r10+176]
692 aesenc xmm8, xmm6
693 cmp r9d, 13
694 movdqu xmm5, OWORD PTR [r10+192]
695 jl L_AES_XTS_encrypt_update_aesni_last_15_aes_enc_block_last
696 aesenc xmm8, xmm5
697 movdqu xmm6, OWORD PTR [r10+208]
698 aesenc xmm8, xmm6
699 movdqu xmm5, OWORD PTR [r10+224]
700L_AES_XTS_encrypt_update_aesni_last_15_aes_enc_block_last:
701 aesenclast xmm8, xmm5
702 pxor xmm8, xmm0
703 lea rcx, QWORD PTR [rsi+r12]
704 movdqu OWORD PTR [rcx], xmm8
705L_AES_XTS_encrypt_update_aesni_done_enc:
706 movdqu OWORD PTR [r8], xmm0
707 movdqu xmm6, OWORD PTR [rsp+64]
708 movdqu xmm7, OWORD PTR [rsp+80]
709 movdqu xmm8, OWORD PTR [rsp+96]
710 movdqu xmm9, OWORD PTR [rsp+112]
711 movdqu xmm10, OWORD PTR [rsp+128]
712 movdqu xmm11, OWORD PTR [rsp+144]
713 movdqu xmm12, OWORD PTR [rsp+160]
714 add rsp, 176
715 pop r12
716 pop rsi
717 pop rdi
718 ret
719AES_XTS_encrypt_update_aesni ENDP
720_TEXT ENDS
721_TEXT SEGMENT READONLY PARA
722AES_XTS_decrypt_aesni PROC
723 push rdi
724 push rsi
725 push r12
726 push r13
727 mov rdi, rcx
728 mov rsi, rdx
729 mov rax, r8
730 mov r12, r9
731 mov r8, QWORD PTR [rsp+72]
732 mov r9, QWORD PTR [rsp+80]
733 mov r10d, DWORD PTR [rsp+88]
734 sub rsp, 128
735 movdqu OWORD PTR [rsp+16], xmm6
736 movdqu OWORD PTR [rsp+32], xmm7
737 movdqu OWORD PTR [rsp+48], xmm8
738 movdqu OWORD PTR [rsp+64], xmm9
739 movdqu OWORD PTR [rsp+80], xmm10
740 movdqu OWORD PTR [rsp+96], xmm11
741 movdqu OWORD PTR [rsp+112], xmm12
742 movdqu xmm12, OWORD PTR L_aes_xts_gc_xts
743 movdqu xmm0, OWORD PTR [r12]
744 ; aes_enc_block
745 pxor xmm0, [r9]
746 movdqu xmm5, OWORD PTR [r9+16]
747 aesenc xmm0, xmm5
748 movdqu xmm5, OWORD PTR [r9+32]
749 aesenc xmm0, xmm5
750 movdqu xmm5, OWORD PTR [r9+48]
751 aesenc xmm0, xmm5
752 movdqu xmm5, OWORD PTR [r9+64]
753 aesenc xmm0, xmm5
754 movdqu xmm5, OWORD PTR [r9+80]
755 aesenc xmm0, xmm5
756 movdqu xmm5, OWORD PTR [r9+96]
757 aesenc xmm0, xmm5
758 movdqu xmm5, OWORD PTR [r9+112]
759 aesenc xmm0, xmm5
760 movdqu xmm5, OWORD PTR [r9+128]
761 aesenc xmm0, xmm5
762 movdqu xmm5, OWORD PTR [r9+144]
763 aesenc xmm0, xmm5
764 cmp r10d, 11
765 movdqu xmm5, OWORD PTR [r9+160]
766 jl L_AES_XTS_decrypt_aesni_tweak_aes_enc_block_last
767 aesenc xmm0, xmm5
768 movdqu xmm6, OWORD PTR [r9+176]
769 aesenc xmm0, xmm6
770 cmp r10d, 13
771 movdqu xmm5, OWORD PTR [r9+192]
772 jl L_AES_XTS_decrypt_aesni_tweak_aes_enc_block_last
773 aesenc xmm0, xmm5
774 movdqu xmm6, OWORD PTR [r9+208]
775 aesenc xmm0, xmm6
776 movdqu xmm5, OWORD PTR [r9+224]
777L_AES_XTS_decrypt_aesni_tweak_aes_enc_block_last:
778 aesenclast xmm0, xmm5
779 xor r13d, r13d
780 mov r11d, eax
781 and r11d, 4294967280
782 cmp r11d, eax
783 je L_AES_XTS_decrypt_aesni_mul16_64
784 sub r11d, 16
785 cmp r11d, 16
786 jl L_AES_XTS_decrypt_aesni_last_31_start
787L_AES_XTS_decrypt_aesni_mul16_64:
788 cmp r11d, 64
789 jl L_AES_XTS_decrypt_aesni_done_64
790 and r11d, 4294967232
791L_AES_XTS_decrypt_aesni_dec_64:
792 ; 64 bytes of input
793 ; aes_dec_64
794 lea rcx, QWORD PTR [rdi+r13]
795 lea rdx, QWORD PTR [rsi+r13]
796 movdqu xmm8, OWORD PTR [rcx]
797 movdqu xmm9, OWORD PTR [rcx+16]
798 movdqu xmm10, OWORD PTR [rcx+32]
799 movdqu xmm11, OWORD PTR [rcx+48]
800 movdqa xmm4, xmm0
801 movdqa xmm1, xmm0
802 psrad xmm4, 31
803 pslld xmm1, 1
804 pshufd xmm4, xmm4, 147
805 pand xmm4, xmm12
806 pxor xmm1, xmm4
807 movdqa xmm4, xmm1
808 movdqa xmm2, xmm1
809 psrad xmm4, 31
810 pslld xmm2, 1
811 pshufd xmm4, xmm4, 147
812 pand xmm4, xmm12
813 pxor xmm2, xmm4
814 movdqa xmm4, xmm2
815 movdqa xmm3, xmm2
816 psrad xmm4, 31
817 pslld xmm3, 1
818 pshufd xmm4, xmm4, 147
819 pand xmm4, xmm12
820 pxor xmm3, xmm4
821 pxor xmm8, xmm0
822 pxor xmm9, xmm1
823 pxor xmm10, xmm2
824 pxor xmm11, xmm3
825 ; aes_dec_block
826 movdqu xmm4, OWORD PTR [r8]
827 pxor xmm8, xmm4
828 pxor xmm9, xmm4
829 pxor xmm10, xmm4
830 pxor xmm11, xmm4
831 movdqu xmm4, OWORD PTR [r8+16]
832 aesdec xmm8, xmm4
833 aesdec xmm9, xmm4
834 aesdec xmm10, xmm4
835 aesdec xmm11, xmm4
836 movdqu xmm4, OWORD PTR [r8+32]
837 aesdec xmm8, xmm4
838 aesdec xmm9, xmm4
839 aesdec xmm10, xmm4
840 aesdec xmm11, xmm4
841 movdqu xmm4, OWORD PTR [r8+48]
842 aesdec xmm8, xmm4
843 aesdec xmm9, xmm4
844 aesdec xmm10, xmm4
845 aesdec xmm11, xmm4
846 movdqu xmm4, OWORD PTR [r8+64]
847 aesdec xmm8, xmm4
848 aesdec xmm9, xmm4
849 aesdec xmm10, xmm4
850 aesdec xmm11, xmm4
851 movdqu xmm4, OWORD PTR [r8+80]
852 aesdec xmm8, xmm4
853 aesdec xmm9, xmm4
854 aesdec xmm10, xmm4
855 aesdec xmm11, xmm4
856 movdqu xmm4, OWORD PTR [r8+96]
857 aesdec xmm8, xmm4
858 aesdec xmm9, xmm4
859 aesdec xmm10, xmm4
860 aesdec xmm11, xmm4
861 movdqu xmm4, OWORD PTR [r8+112]
862 aesdec xmm8, xmm4
863 aesdec xmm9, xmm4
864 aesdec xmm10, xmm4
865 aesdec xmm11, xmm4
866 movdqu xmm4, OWORD PTR [r8+128]
867 aesdec xmm8, xmm4
868 aesdec xmm9, xmm4
869 aesdec xmm10, xmm4
870 aesdec xmm11, xmm4
871 movdqu xmm4, OWORD PTR [r8+144]
872 aesdec xmm8, xmm4
873 aesdec xmm9, xmm4
874 aesdec xmm10, xmm4
875 aesdec xmm11, xmm4
876 cmp r10d, 11
877 movdqu xmm4, OWORD PTR [r8+160]
878 jl L_AES_XTS_decrypt_aesni_aes_dec_64_aes_dec_block_last
879 aesdec xmm8, xmm4
880 aesdec xmm9, xmm4
881 aesdec xmm10, xmm4
882 aesdec xmm11, xmm4
883 movdqu xmm4, OWORD PTR [r8+176]
884 aesdec xmm8, xmm4
885 aesdec xmm9, xmm4
886 aesdec xmm10, xmm4
887 aesdec xmm11, xmm4
888 cmp r10d, 13
889 movdqu xmm4, OWORD PTR [r8+192]
890 jl L_AES_XTS_decrypt_aesni_aes_dec_64_aes_dec_block_last
891 aesdec xmm8, xmm4
892 aesdec xmm9, xmm4
893 aesdec xmm10, xmm4
894 aesdec xmm11, xmm4
895 movdqu xmm4, OWORD PTR [r8+208]
896 aesdec xmm8, xmm4
897 aesdec xmm9, xmm4
898 aesdec xmm10, xmm4
899 aesdec xmm11, xmm4
900 movdqu xmm4, OWORD PTR [r8+224]
901L_AES_XTS_decrypt_aesni_aes_dec_64_aes_dec_block_last:
902 aesdeclast xmm8, xmm4
903 aesdeclast xmm9, xmm4
904 aesdeclast xmm10, xmm4
905 aesdeclast xmm11, xmm4
906 pxor xmm8, xmm0
907 pxor xmm9, xmm1
908 pxor xmm10, xmm2
909 pxor xmm11, xmm3
910 movdqu OWORD PTR [rdx], xmm8
911 movdqu OWORD PTR [rdx+16], xmm9
912 movdqu OWORD PTR [rdx+32], xmm10
913 movdqu OWORD PTR [rdx+48], xmm11
914 movdqa xmm4, xmm3
915 movdqa xmm0, xmm3
916 psrad xmm4, 31
917 pslld xmm0, 1
918 pshufd xmm4, xmm4, 147
919 pand xmm4, xmm12
920 pxor xmm0, xmm4
921 add r13d, 64
922 cmp r13d, r11d
923 jl L_AES_XTS_decrypt_aesni_dec_64
924L_AES_XTS_decrypt_aesni_done_64:
925 cmp r13d, eax
926 mov r11d, eax
927 je L_AES_XTS_decrypt_aesni_done_dec
928 and r11d, 4294967280
929 cmp r11d, eax
930 je L_AES_XTS_decrypt_aesni_mul16
931 sub r11d, 16
932 sub r11d, r13d
933 cmp r11d, 16
934 jl L_AES_XTS_decrypt_aesni_last_31_start
935 add r11d, r13d
936L_AES_XTS_decrypt_aesni_mul16:
937L_AES_XTS_decrypt_aesni_dec_16:
938 ; 16 bytes of input
939 lea rcx, QWORD PTR [rdi+r13]
940 movdqu xmm8, OWORD PTR [rcx]
941 pxor xmm8, xmm0
942 ; aes_dec_block
943 pxor xmm8, [r8]
944 movdqu xmm5, OWORD PTR [r8+16]
945 aesdec xmm8, xmm5
946 movdqu xmm5, OWORD PTR [r8+32]
947 aesdec xmm8, xmm5
948 movdqu xmm5, OWORD PTR [r8+48]
949 aesdec xmm8, xmm5
950 movdqu xmm5, OWORD PTR [r8+64]
951 aesdec xmm8, xmm5
952 movdqu xmm5, OWORD PTR [r8+80]
953 aesdec xmm8, xmm5
954 movdqu xmm5, OWORD PTR [r8+96]
955 aesdec xmm8, xmm5
956 movdqu xmm5, OWORD PTR [r8+112]
957 aesdec xmm8, xmm5
958 movdqu xmm5, OWORD PTR [r8+128]
959 aesdec xmm8, xmm5
960 movdqu xmm5, OWORD PTR [r8+144]
961 aesdec xmm8, xmm5
962 cmp r10d, 11
963 movdqu xmm5, OWORD PTR [r8+160]
964 jl L_AES_XTS_decrypt_aesni_aes_dec_block_last
965 aesdec xmm8, xmm5
966 movdqu xmm6, OWORD PTR [r8+176]
967 aesdec xmm8, xmm6
968 cmp r10d, 13
969 movdqu xmm5, OWORD PTR [r8+192]
970 jl L_AES_XTS_decrypt_aesni_aes_dec_block_last
971 aesdec xmm8, xmm5
972 movdqu xmm6, OWORD PTR [r8+208]
973 aesdec xmm8, xmm6
974 movdqu xmm5, OWORD PTR [r8+224]
975L_AES_XTS_decrypt_aesni_aes_dec_block_last:
976 aesdeclast xmm8, xmm5
977 pxor xmm8, xmm0
978 lea rcx, QWORD PTR [rsi+r13]
979 movdqu OWORD PTR [rcx], xmm8
980 movdqa xmm4, xmm0
981 psrad xmm4, 31
982 pslld xmm0, 1
983 pshufd xmm4, xmm4, 147
984 pand xmm4, xmm12
985 pxor xmm0, xmm4
986 add r13d, 16
987 cmp r13d, r11d
988 jl L_AES_XTS_decrypt_aesni_dec_16
989 cmp r13d, eax
990 je L_AES_XTS_decrypt_aesni_done_dec
991L_AES_XTS_decrypt_aesni_last_31_start:
992 movdqa xmm4, xmm0
993 movdqa xmm7, xmm0
994 psrad xmm4, 31
995 pslld xmm7, 1
996 pshufd xmm4, xmm4, 147
997 pand xmm4, xmm12
998 pxor xmm7, xmm4
999 lea rcx, QWORD PTR [rdi+r13]
1000 movdqu xmm8, OWORD PTR [rcx]
1001 pxor xmm8, xmm7
1002 ; aes_dec_block
1003 pxor xmm8, [r8]
1004 movdqu xmm5, OWORD PTR [r8+16]
1005 aesdec xmm8, xmm5
1006 movdqu xmm5, OWORD PTR [r8+32]
1007 aesdec xmm8, xmm5
1008 movdqu xmm5, OWORD PTR [r8+48]
1009 aesdec xmm8, xmm5
1010 movdqu xmm5, OWORD PTR [r8+64]
1011 aesdec xmm8, xmm5
1012 movdqu xmm5, OWORD PTR [r8+80]
1013 aesdec xmm8, xmm5
1014 movdqu xmm5, OWORD PTR [r8+96]
1015 aesdec xmm8, xmm5
1016 movdqu xmm5, OWORD PTR [r8+112]
1017 aesdec xmm8, xmm5
1018 movdqu xmm5, OWORD PTR [r8+128]
1019 aesdec xmm8, xmm5
1020 movdqu xmm5, OWORD PTR [r8+144]
1021 aesdec xmm8, xmm5
1022 cmp r10d, 11
1023 movdqu xmm5, OWORD PTR [r8+160]
1024 jl L_AES_XTS_decrypt_aesni_last_31_aes_dec_block_last
1025 aesdec xmm8, xmm5
1026 movdqu xmm6, OWORD PTR [r8+176]
1027 aesdec xmm8, xmm6
1028 cmp r10d, 13
1029 movdqu xmm5, OWORD PTR [r8+192]
1030 jl L_AES_XTS_decrypt_aesni_last_31_aes_dec_block_last
1031 aesdec xmm8, xmm5
1032 movdqu xmm6, OWORD PTR [r8+208]
1033 aesdec xmm8, xmm6
1034 movdqu xmm5, OWORD PTR [r8+224]
1035L_AES_XTS_decrypt_aesni_last_31_aes_dec_block_last:
1036 aesdeclast xmm8, xmm5
1037 pxor xmm8, xmm7
1038 movdqu OWORD PTR [rsp], xmm8
1039 add r13, 16
1040 xor rdx, rdx
1041L_AES_XTS_decrypt_aesni_last_31_byte_loop:
1042 mov r11b, BYTE PTR [rsp+rdx]
1043 mov cl, BYTE PTR [rdi+r13]
1044 mov BYTE PTR [rsi+r13], r11b
1045 mov BYTE PTR [rsp+rdx], cl
1046 inc r13d
1047 inc edx
1048 cmp r13d, eax
1049 jl L_AES_XTS_decrypt_aesni_last_31_byte_loop
1050 sub r13, rdx
1051 movdqu xmm8, OWORD PTR [rsp]
1052 pxor xmm8, xmm0
1053 ; aes_dec_block
1054 pxor xmm8, [r8]
1055 movdqu xmm5, OWORD PTR [r8+16]
1056 aesdec xmm8, xmm5
1057 movdqu xmm5, OWORD PTR [r8+32]
1058 aesdec xmm8, xmm5
1059 movdqu xmm5, OWORD PTR [r8+48]
1060 aesdec xmm8, xmm5
1061 movdqu xmm5, OWORD PTR [r8+64]
1062 aesdec xmm8, xmm5
1063 movdqu xmm5, OWORD PTR [r8+80]
1064 aesdec xmm8, xmm5
1065 movdqu xmm5, OWORD PTR [r8+96]
1066 aesdec xmm8, xmm5
1067 movdqu xmm5, OWORD PTR [r8+112]
1068 aesdec xmm8, xmm5
1069 movdqu xmm5, OWORD PTR [r8+128]
1070 aesdec xmm8, xmm5
1071 movdqu xmm5, OWORD PTR [r8+144]
1072 aesdec xmm8, xmm5
1073 cmp r10d, 11
1074 movdqu xmm5, OWORD PTR [r8+160]
1075 jl L_AES_XTS_decrypt_aesni_last_31_2_aes_dec_block_last
1076 aesdec xmm8, xmm5
1077 movdqu xmm6, OWORD PTR [r8+176]
1078 aesdec xmm8, xmm6
1079 cmp r10d, 13
1080 movdqu xmm5, OWORD PTR [r8+192]
1081 jl L_AES_XTS_decrypt_aesni_last_31_2_aes_dec_block_last
1082 aesdec xmm8, xmm5
1083 movdqu xmm6, OWORD PTR [r8+208]
1084 aesdec xmm8, xmm6
1085 movdqu xmm5, OWORD PTR [r8+224]
1086L_AES_XTS_decrypt_aesni_last_31_2_aes_dec_block_last:
1087 aesdeclast xmm8, xmm5
1088 pxor xmm8, xmm0
1089 sub r13, 16
1090 lea rcx, QWORD PTR [rsi+r13]
1091 movdqu OWORD PTR [rcx], xmm8
1092L_AES_XTS_decrypt_aesni_done_dec:
1093 movdqu xmm6, OWORD PTR [rsp+16]
1094 movdqu xmm7, OWORD PTR [rsp+32]
1095 movdqu xmm8, OWORD PTR [rsp+48]
1096 movdqu xmm9, OWORD PTR [rsp+64]
1097 movdqu xmm10, OWORD PTR [rsp+80]
1098 movdqu xmm11, OWORD PTR [rsp+96]
1099 movdqu xmm12, OWORD PTR [rsp+112]
1100 add rsp, 128
1101 pop r13
1102 pop r12
1103 pop rsi
1104 pop rdi
1105 ret
1106AES_XTS_decrypt_aesni ENDP
1107_TEXT ENDS
1108_TEXT SEGMENT READONLY PARA
1109AES_XTS_decrypt_update_aesni PROC
1110 push rdi
1111 push rsi
1112 push r12
1113 mov rdi, rcx
1114 mov rsi, rdx
1115 mov rax, r8
1116 mov r10, r9
1117 mov r8, QWORD PTR [rsp+64]
1118 mov r9d, DWORD PTR [rsp+72]
1119 sub rsp, 128
1120 movdqu OWORD PTR [rsp+16], xmm6
1121 movdqu OWORD PTR [rsp+32], xmm7
1122 movdqu OWORD PTR [rsp+48], xmm8
1123 movdqu OWORD PTR [rsp+64], xmm9
1124 movdqu OWORD PTR [rsp+80], xmm10
1125 movdqu OWORD PTR [rsp+96], xmm11
1126 movdqu OWORD PTR [rsp+112], xmm12
1127 movdqu xmm12, OWORD PTR L_aes_xts_gc_xts
1128 movdqu xmm0, OWORD PTR [r8]
1129 xor r12d, r12d
1130 mov r11d, eax
1131 and r11d, 4294967280
1132 cmp r11d, eax
1133 je L_AES_XTS_decrypt_update_aesni_mul16_64
1134 sub r11d, 16
1135 cmp r11d, 16
1136 jl L_AES_XTS_decrypt_update_aesni_last_31_start
1137L_AES_XTS_decrypt_update_aesni_mul16_64:
1138 cmp r11d, 64
1139 jl L_AES_XTS_decrypt_update_aesni_done_64
1140 and r11d, 4294967232
1141L_AES_XTS_decrypt_update_aesni_dec_64:
1142 ; 64 bytes of input
1143 ; aes_dec_64
1144 lea rcx, QWORD PTR [rdi+r12]
1145 lea rdx, QWORD PTR [rsi+r12]
1146 movdqu xmm8, OWORD PTR [rcx]
1147 movdqu xmm9, OWORD PTR [rcx+16]
1148 movdqu xmm10, OWORD PTR [rcx+32]
1149 movdqu xmm11, OWORD PTR [rcx+48]
1150 movdqa xmm4, xmm0
1151 movdqa xmm1, xmm0
1152 psrad xmm4, 31
1153 pslld xmm1, 1
1154 pshufd xmm4, xmm4, 147
1155 pand xmm4, xmm12
1156 pxor xmm1, xmm4
1157 movdqa xmm4, xmm1
1158 movdqa xmm2, xmm1
1159 psrad xmm4, 31
1160 pslld xmm2, 1
1161 pshufd xmm4, xmm4, 147
1162 pand xmm4, xmm12
1163 pxor xmm2, xmm4
1164 movdqa xmm4, xmm2
1165 movdqa xmm3, xmm2
1166 psrad xmm4, 31
1167 pslld xmm3, 1
1168 pshufd xmm4, xmm4, 147
1169 pand xmm4, xmm12
1170 pxor xmm3, xmm4
1171 pxor xmm8, xmm0
1172 pxor xmm9, xmm1
1173 pxor xmm10, xmm2
1174 pxor xmm11, xmm3
1175 ; aes_dec_block
1176 movdqu xmm4, OWORD PTR [r10]
1177 pxor xmm8, xmm4
1178 pxor xmm9, xmm4
1179 pxor xmm10, xmm4
1180 pxor xmm11, xmm4
1181 movdqu xmm4, OWORD PTR [r10+16]
1182 aesdec xmm8, xmm4
1183 aesdec xmm9, xmm4
1184 aesdec xmm10, xmm4
1185 aesdec xmm11, xmm4
1186 movdqu xmm4, OWORD PTR [r10+32]
1187 aesdec xmm8, xmm4
1188 aesdec xmm9, xmm4
1189 aesdec xmm10, xmm4
1190 aesdec xmm11, xmm4
1191 movdqu xmm4, OWORD PTR [r10+48]
1192 aesdec xmm8, xmm4
1193 aesdec xmm9, xmm4
1194 aesdec xmm10, xmm4
1195 aesdec xmm11, xmm4
1196 movdqu xmm4, OWORD PTR [r10+64]
1197 aesdec xmm8, xmm4
1198 aesdec xmm9, xmm4
1199 aesdec xmm10, xmm4
1200 aesdec xmm11, xmm4
1201 movdqu xmm4, OWORD PTR [r10+80]
1202 aesdec xmm8, xmm4
1203 aesdec xmm9, xmm4
1204 aesdec xmm10, xmm4
1205 aesdec xmm11, xmm4
1206 movdqu xmm4, OWORD PTR [r10+96]
1207 aesdec xmm8, xmm4
1208 aesdec xmm9, xmm4
1209 aesdec xmm10, xmm4
1210 aesdec xmm11, xmm4
1211 movdqu xmm4, OWORD PTR [r10+112]
1212 aesdec xmm8, xmm4
1213 aesdec xmm9, xmm4
1214 aesdec xmm10, xmm4
1215 aesdec xmm11, xmm4
1216 movdqu xmm4, OWORD PTR [r10+128]
1217 aesdec xmm8, xmm4
1218 aesdec xmm9, xmm4
1219 aesdec xmm10, xmm4
1220 aesdec xmm11, xmm4
1221 movdqu xmm4, OWORD PTR [r10+144]
1222 aesdec xmm8, xmm4
1223 aesdec xmm9, xmm4
1224 aesdec xmm10, xmm4
1225 aesdec xmm11, xmm4
1226 cmp r9d, 11
1227 movdqu xmm4, OWORD PTR [r10+160]
1228 jl L_AES_XTS_decrypt_update_aesni_aes_dec_64_aes_dec_block_last
1229 aesdec xmm8, xmm4
1230 aesdec xmm9, xmm4
1231 aesdec xmm10, xmm4
1232 aesdec xmm11, xmm4
1233 movdqu xmm4, OWORD PTR [r10+176]
1234 aesdec xmm8, xmm4
1235 aesdec xmm9, xmm4
1236 aesdec xmm10, xmm4
1237 aesdec xmm11, xmm4
1238 cmp r9d, 13
1239 movdqu xmm4, OWORD PTR [r10+192]
1240 jl L_AES_XTS_decrypt_update_aesni_aes_dec_64_aes_dec_block_last
1241 aesdec xmm8, xmm4
1242 aesdec xmm9, xmm4
1243 aesdec xmm10, xmm4
1244 aesdec xmm11, xmm4
1245 movdqu xmm4, OWORD PTR [r10+208]
1246 aesdec xmm8, xmm4
1247 aesdec xmm9, xmm4
1248 aesdec xmm10, xmm4
1249 aesdec xmm11, xmm4
1250 movdqu xmm4, OWORD PTR [r10+224]
1251L_AES_XTS_decrypt_update_aesni_aes_dec_64_aes_dec_block_last:
1252 aesdeclast xmm8, xmm4
1253 aesdeclast xmm9, xmm4
1254 aesdeclast xmm10, xmm4
1255 aesdeclast xmm11, xmm4
1256 pxor xmm8, xmm0
1257 pxor xmm9, xmm1
1258 pxor xmm10, xmm2
1259 pxor xmm11, xmm3
1260 movdqu OWORD PTR [rdx], xmm8
1261 movdqu OWORD PTR [rdx+16], xmm9
1262 movdqu OWORD PTR [rdx+32], xmm10
1263 movdqu OWORD PTR [rdx+48], xmm11
1264 movdqa xmm4, xmm3
1265 movdqa xmm0, xmm3
1266 psrad xmm4, 31
1267 pslld xmm0, 1
1268 pshufd xmm4, xmm4, 147
1269 pand xmm4, xmm12
1270 pxor xmm0, xmm4
1271 add r12d, 64
1272 cmp r12d, r11d
1273 jl L_AES_XTS_decrypt_update_aesni_dec_64
1274L_AES_XTS_decrypt_update_aesni_done_64:
1275 cmp r12d, eax
1276 mov r11d, eax
1277 je L_AES_XTS_decrypt_update_aesni_done_dec
1278 and r11d, 4294967280
1279 cmp r11d, eax
1280 je L_AES_XTS_decrypt_update_aesni_mul16
1281 sub r11d, 16
1282 sub r11d, r12d
1283 cmp r11d, 16
1284 jl L_AES_XTS_decrypt_update_aesni_last_31_start
1285 add r11d, r12d
1286L_AES_XTS_decrypt_update_aesni_mul16:
1287L_AES_XTS_decrypt_update_aesni_dec_16:
1288 ; 16 bytes of input
1289 lea rcx, QWORD PTR [rdi+r12]
1290 movdqu xmm8, OWORD PTR [rcx]
1291 pxor xmm8, xmm0
1292 ; aes_dec_block
1293 pxor xmm8, [r10]
1294 movdqu xmm5, OWORD PTR [r10+16]
1295 aesdec xmm8, xmm5
1296 movdqu xmm5, OWORD PTR [r10+32]
1297 aesdec xmm8, xmm5
1298 movdqu xmm5, OWORD PTR [r10+48]
1299 aesdec xmm8, xmm5
1300 movdqu xmm5, OWORD PTR [r10+64]
1301 aesdec xmm8, xmm5
1302 movdqu xmm5, OWORD PTR [r10+80]
1303 aesdec xmm8, xmm5
1304 movdqu xmm5, OWORD PTR [r10+96]
1305 aesdec xmm8, xmm5
1306 movdqu xmm5, OWORD PTR [r10+112]
1307 aesdec xmm8, xmm5
1308 movdqu xmm5, OWORD PTR [r10+128]
1309 aesdec xmm8, xmm5
1310 movdqu xmm5, OWORD PTR [r10+144]
1311 aesdec xmm8, xmm5
1312 cmp r9d, 11
1313 movdqu xmm5, OWORD PTR [r10+160]
1314 jl L_AES_XTS_decrypt_update_aesni_aes_dec_block_last
1315 aesdec xmm8, xmm5
1316 movdqu xmm6, OWORD PTR [r10+176]
1317 aesdec xmm8, xmm6
1318 cmp r9d, 13
1319 movdqu xmm5, OWORD PTR [r10+192]
1320 jl L_AES_XTS_decrypt_update_aesni_aes_dec_block_last
1321 aesdec xmm8, xmm5
1322 movdqu xmm6, OWORD PTR [r10+208]
1323 aesdec xmm8, xmm6
1324 movdqu xmm5, OWORD PTR [r10+224]
1325L_AES_XTS_decrypt_update_aesni_aes_dec_block_last:
1326 aesdeclast xmm8, xmm5
1327 pxor xmm8, xmm0
1328 lea rcx, QWORD PTR [rsi+r12]
1329 movdqu OWORD PTR [rcx], xmm8
1330 movdqa xmm4, xmm0
1331 psrad xmm4, 31
1332 pslld xmm0, 1
1333 pshufd xmm4, xmm4, 147
1334 pand xmm4, xmm12
1335 pxor xmm0, xmm4
1336 add r12d, 16
1337 cmp r12d, r11d
1338 jl L_AES_XTS_decrypt_update_aesni_dec_16
1339 cmp r12d, eax
1340 je L_AES_XTS_decrypt_update_aesni_done_dec
1341L_AES_XTS_decrypt_update_aesni_last_31_start:
1342 movdqa xmm4, xmm0
1343 movdqa xmm7, xmm0
1344 psrad xmm4, 31
1345 pslld xmm7, 1
1346 pshufd xmm4, xmm4, 147
1347 pand xmm4, xmm12
1348 pxor xmm7, xmm4
1349 lea rcx, QWORD PTR [rdi+r12]
1350 movdqu xmm8, OWORD PTR [rcx]
1351 pxor xmm8, xmm7
1352 ; aes_dec_block
1353 pxor xmm8, [r10]
1354 movdqu xmm5, OWORD PTR [r10+16]
1355 aesdec xmm8, xmm5
1356 movdqu xmm5, OWORD PTR [r10+32]
1357 aesdec xmm8, xmm5
1358 movdqu xmm5, OWORD PTR [r10+48]
1359 aesdec xmm8, xmm5
1360 movdqu xmm5, OWORD PTR [r10+64]
1361 aesdec xmm8, xmm5
1362 movdqu xmm5, OWORD PTR [r10+80]
1363 aesdec xmm8, xmm5
1364 movdqu xmm5, OWORD PTR [r10+96]
1365 aesdec xmm8, xmm5
1366 movdqu xmm5, OWORD PTR [r10+112]
1367 aesdec xmm8, xmm5
1368 movdqu xmm5, OWORD PTR [r10+128]
1369 aesdec xmm8, xmm5
1370 movdqu xmm5, OWORD PTR [r10+144]
1371 aesdec xmm8, xmm5
1372 cmp r9d, 11
1373 movdqu xmm5, OWORD PTR [r10+160]
1374 jl L_AES_XTS_decrypt_update_aesni_last_31_aes_dec_block_last
1375 aesdec xmm8, xmm5
1376 movdqu xmm6, OWORD PTR [r10+176]
1377 aesdec xmm8, xmm6
1378 cmp r9d, 13
1379 movdqu xmm5, OWORD PTR [r10+192]
1380 jl L_AES_XTS_decrypt_update_aesni_last_31_aes_dec_block_last
1381 aesdec xmm8, xmm5
1382 movdqu xmm6, OWORD PTR [r10+208]
1383 aesdec xmm8, xmm6
1384 movdqu xmm5, OWORD PTR [r10+224]
1385L_AES_XTS_decrypt_update_aesni_last_31_aes_dec_block_last:
1386 aesdeclast xmm8, xmm5
1387 pxor xmm8, xmm7
1388 movdqu OWORD PTR [rsp], xmm8
1389 add r12, 16
1390 xor rdx, rdx
1391L_AES_XTS_decrypt_update_aesni_last_31_byte_loop:
1392 mov r11b, BYTE PTR [rsp+rdx]
1393 mov cl, BYTE PTR [rdi+r12]
1394 mov BYTE PTR [rsi+r12], r11b
1395 mov BYTE PTR [rsp+rdx], cl
1396 inc r12d
1397 inc edx
1398 cmp r12d, eax
1399 jl L_AES_XTS_decrypt_update_aesni_last_31_byte_loop
1400 sub r12, rdx
1401 movdqu xmm8, OWORD PTR [rsp]
1402 pxor xmm8, xmm0
1403 ; aes_dec_block
1404 pxor xmm8, [r10]
1405 movdqu xmm5, OWORD PTR [r10+16]
1406 aesdec xmm8, xmm5
1407 movdqu xmm5, OWORD PTR [r10+32]
1408 aesdec xmm8, xmm5
1409 movdqu xmm5, OWORD PTR [r10+48]
1410 aesdec xmm8, xmm5
1411 movdqu xmm5, OWORD PTR [r10+64]
1412 aesdec xmm8, xmm5
1413 movdqu xmm5, OWORD PTR [r10+80]
1414 aesdec xmm8, xmm5
1415 movdqu xmm5, OWORD PTR [r10+96]
1416 aesdec xmm8, xmm5
1417 movdqu xmm5, OWORD PTR [r10+112]
1418 aesdec xmm8, xmm5
1419 movdqu xmm5, OWORD PTR [r10+128]
1420 aesdec xmm8, xmm5
1421 movdqu xmm5, OWORD PTR [r10+144]
1422 aesdec xmm8, xmm5
1423 cmp r9d, 11
1424 movdqu xmm5, OWORD PTR [r10+160]
1425 jl L_AES_XTS_decrypt_update_aesni_last_31_2_aes_dec_block_last
1426 aesdec xmm8, xmm5
1427 movdqu xmm6, OWORD PTR [r10+176]
1428 aesdec xmm8, xmm6
1429 cmp r9d, 13
1430 movdqu xmm5, OWORD PTR [r10+192]
1431 jl L_AES_XTS_decrypt_update_aesni_last_31_2_aes_dec_block_last
1432 aesdec xmm8, xmm5
1433 movdqu xmm6, OWORD PTR [r10+208]
1434 aesdec xmm8, xmm6
1435 movdqu xmm5, OWORD PTR [r10+224]
1436L_AES_XTS_decrypt_update_aesni_last_31_2_aes_dec_block_last:
1437 aesdeclast xmm8, xmm5
1438 pxor xmm8, xmm0
1439 sub r12, 16
1440 lea rcx, QWORD PTR [rsi+r12]
1441 movdqu OWORD PTR [rcx], xmm8
1442L_AES_XTS_decrypt_update_aesni_done_dec:
1443 movdqu OWORD PTR [r8], xmm0
1444 movdqu xmm6, OWORD PTR [rsp+16]
1445 movdqu xmm7, OWORD PTR [rsp+32]
1446 movdqu xmm8, OWORD PTR [rsp+48]
1447 movdqu xmm9, OWORD PTR [rsp+64]
1448 movdqu xmm10, OWORD PTR [rsp+80]
1449 movdqu xmm11, OWORD PTR [rsp+96]
1450 movdqu xmm12, OWORD PTR [rsp+112]
1451 add rsp, 128
1452 pop r12
1453 pop rsi
1454 pop rdi
1455 ret
1456AES_XTS_decrypt_update_aesni ENDP
1457_TEXT ENDS
1458IFDEF HAVE_INTEL_AVX1
1459_TEXT SEGMENT READONLY PARA
1460AES_XTS_init_avx1 PROC
1461 vmovdqu xmm0, OWORD PTR [rcx]
1462 ; aes_enc_block
1463 vpxor xmm0, xmm0, [rdx]
1464 vmovdqu xmm2, OWORD PTR [rdx+16]
1465 vaesenc xmm0, xmm0, xmm2
1466 vmovdqu xmm2, OWORD PTR [rdx+32]
1467 vaesenc xmm0, xmm0, xmm2
1468 vmovdqu xmm2, OWORD PTR [rdx+48]
1469 vaesenc xmm0, xmm0, xmm2
1470 vmovdqu xmm2, OWORD PTR [rdx+64]
1471 vaesenc xmm0, xmm0, xmm2
1472 vmovdqu xmm2, OWORD PTR [rdx+80]
1473 vaesenc xmm0, xmm0, xmm2
1474 vmovdqu xmm2, OWORD PTR [rdx+96]
1475 vaesenc xmm0, xmm0, xmm2
1476 vmovdqu xmm2, OWORD PTR [rdx+112]
1477 vaesenc xmm0, xmm0, xmm2
1478 vmovdqu xmm2, OWORD PTR [rdx+128]
1479 vaesenc xmm0, xmm0, xmm2
1480 vmovdqu xmm2, OWORD PTR [rdx+144]
1481 vaesenc xmm0, xmm0, xmm2
1482 cmp r8d, 11
1483 vmovdqu xmm2, OWORD PTR [rdx+160]
1484 jl L_AES_XTS_init_avx1_tweak_aes_enc_block_last
1485 vaesenc xmm0, xmm0, xmm2
1486 vmovdqu xmm3, OWORD PTR [rdx+176]
1487 vaesenc xmm0, xmm0, xmm3
1488 cmp r8d, 13
1489 vmovdqu xmm2, OWORD PTR [rdx+192]
1490 jl L_AES_XTS_init_avx1_tweak_aes_enc_block_last
1491 vaesenc xmm0, xmm0, xmm2
1492 vmovdqu xmm3, OWORD PTR [rdx+208]
1493 vaesenc xmm0, xmm0, xmm3
1494 vmovdqu xmm2, OWORD PTR [rdx+224]
1495L_AES_XTS_init_avx1_tweak_aes_enc_block_last:
1496 vaesenclast xmm0, xmm0, xmm2
1497 vmovdqu OWORD PTR [rcx], xmm0
1498 ret
1499AES_XTS_init_avx1 ENDP
1500_TEXT ENDS
1501_DATA SEGMENT
1502ALIGN 16
1503L_avx1_aes_xts_gc_xts DWORD \
1504 00000087h, 00000001h, 00000001h, 00000001h
1505ptr_L_avx1_aes_xts_gc_xts QWORD L_avx1_aes_xts_gc_xts
1506_DATA ENDS
1507_TEXT SEGMENT READONLY PARA
1508AES_XTS_encrypt_avx1 PROC
1509 push rdi
1510 push rsi
1511 push r12
1512 push r13
1513 mov rdi, rcx
1514 mov rsi, rdx
1515 mov rax, r8
1516 mov r12, r9
1517 mov r8, QWORD PTR [rsp+72]
1518 mov r9, QWORD PTR [rsp+80]
1519 mov r10d, DWORD PTR [rsp+88]
1520 sub rsp, 176
1521 vmovdqu OWORD PTR [rsp+64], xmm6
1522 vmovdqu OWORD PTR [rsp+80], xmm7
1523 vmovdqu OWORD PTR [rsp+96], xmm8
1524 vmovdqu OWORD PTR [rsp+112], xmm9
1525 vmovdqu OWORD PTR [rsp+128], xmm10
1526 vmovdqu OWORD PTR [rsp+144], xmm11
1527 vmovdqu OWORD PTR [rsp+160], xmm12
1528 vmovdqu xmm12, OWORD PTR L_avx1_aes_xts_gc_xts
1529 vmovdqu xmm0, OWORD PTR [r12]
1530 ; aes_enc_block
1531 vpxor xmm0, xmm0, [r9]
1532 vmovdqu xmm5, OWORD PTR [r9+16]
1533 vaesenc xmm0, xmm0, xmm5
1534 vmovdqu xmm5, OWORD PTR [r9+32]
1535 vaesenc xmm0, xmm0, xmm5
1536 vmovdqu xmm5, OWORD PTR [r9+48]
1537 vaesenc xmm0, xmm0, xmm5
1538 vmovdqu xmm5, OWORD PTR [r9+64]
1539 vaesenc xmm0, xmm0, xmm5
1540 vmovdqu xmm5, OWORD PTR [r9+80]
1541 vaesenc xmm0, xmm0, xmm5
1542 vmovdqu xmm5, OWORD PTR [r9+96]
1543 vaesenc xmm0, xmm0, xmm5
1544 vmovdqu xmm5, OWORD PTR [r9+112]
1545 vaesenc xmm0, xmm0, xmm5
1546 vmovdqu xmm5, OWORD PTR [r9+128]
1547 vaesenc xmm0, xmm0, xmm5
1548 vmovdqu xmm5, OWORD PTR [r9+144]
1549 vaesenc xmm0, xmm0, xmm5
1550 cmp r10d, 11
1551 vmovdqu xmm5, OWORD PTR [r9+160]
1552 jl L_AES_XTS_encrypt_avx1_tweak_aes_enc_block_last
1553 vaesenc xmm0, xmm0, xmm5
1554 vmovdqu xmm6, OWORD PTR [r9+176]
1555 vaesenc xmm0, xmm0, xmm6
1556 cmp r10d, 13
1557 vmovdqu xmm5, OWORD PTR [r9+192]
1558 jl L_AES_XTS_encrypt_avx1_tweak_aes_enc_block_last
1559 vaesenc xmm0, xmm0, xmm5
1560 vmovdqu xmm6, OWORD PTR [r9+208]
1561 vaesenc xmm0, xmm0, xmm6
1562 vmovdqu xmm5, OWORD PTR [r9+224]
1563L_AES_XTS_encrypt_avx1_tweak_aes_enc_block_last:
1564 vaesenclast xmm0, xmm0, xmm5
1565 xor r13d, r13d
1566 cmp eax, 64
1567 mov r11d, eax
1568 jl L_AES_XTS_encrypt_avx1_done_64
1569 and r11d, 4294967232
1570L_AES_XTS_encrypt_avx1_enc_64:
1571 ; 64 bytes of input
1572 ; aes_enc_64
1573 lea rcx, QWORD PTR [rdi+r13]
1574 lea rdx, QWORD PTR [rsi+r13]
1575 vmovdqu xmm8, OWORD PTR [rcx]
1576 vmovdqu xmm9, OWORD PTR [rcx+16]
1577 vmovdqu xmm10, OWORD PTR [rcx+32]
1578 vmovdqu xmm11, OWORD PTR [rcx+48]
1579 vpsrad xmm4, xmm0, 31
1580 vpslld xmm1, xmm0, 1
1581 vpshufd xmm4, xmm4, 147
1582 vpand xmm4, xmm4, xmm12
1583 vpxor xmm1, xmm1, xmm4
1584 vpsrad xmm4, xmm1, 31
1585 vpslld xmm2, xmm1, 1
1586 vpshufd xmm4, xmm4, 147
1587 vpand xmm4, xmm4, xmm12
1588 vpxor xmm2, xmm2, xmm4
1589 vpsrad xmm4, xmm2, 31
1590 vpslld xmm3, xmm2, 1
1591 vpshufd xmm4, xmm4, 147
1592 vpand xmm4, xmm4, xmm12
1593 vpxor xmm3, xmm3, xmm4
1594 vpxor xmm8, xmm8, xmm0
1595 vpxor xmm9, xmm9, xmm1
1596 vpxor xmm10, xmm10, xmm2
1597 vpxor xmm11, xmm11, xmm3
1598 ; aes_enc_block
1599 vmovdqu xmm4, OWORD PTR [r8]
1600 vpxor xmm8, xmm8, xmm4
1601 vpxor xmm9, xmm9, xmm4
1602 vpxor xmm10, xmm10, xmm4
1603 vpxor xmm11, xmm11, xmm4
1604 vmovdqu xmm4, OWORD PTR [r8+16]
1605 vaesenc xmm8, xmm8, xmm4
1606 vaesenc xmm9, xmm9, xmm4
1607 vaesenc xmm10, xmm10, xmm4
1608 vaesenc xmm11, xmm11, xmm4
1609 vmovdqu xmm4, OWORD PTR [r8+32]
1610 vaesenc xmm8, xmm8, xmm4
1611 vaesenc xmm9, xmm9, xmm4
1612 vaesenc xmm10, xmm10, xmm4
1613 vaesenc xmm11, xmm11, xmm4
1614 vmovdqu xmm4, OWORD PTR [r8+48]
1615 vaesenc xmm8, xmm8, xmm4
1616 vaesenc xmm9, xmm9, xmm4
1617 vaesenc xmm10, xmm10, xmm4
1618 vaesenc xmm11, xmm11, xmm4
1619 vmovdqu xmm4, OWORD PTR [r8+64]
1620 vaesenc xmm8, xmm8, xmm4
1621 vaesenc xmm9, xmm9, xmm4
1622 vaesenc xmm10, xmm10, xmm4
1623 vaesenc xmm11, xmm11, xmm4
1624 vmovdqu xmm4, OWORD PTR [r8+80]
1625 vaesenc xmm8, xmm8, xmm4
1626 vaesenc xmm9, xmm9, xmm4
1627 vaesenc xmm10, xmm10, xmm4
1628 vaesenc xmm11, xmm11, xmm4
1629 vmovdqu xmm4, OWORD PTR [r8+96]
1630 vaesenc xmm8, xmm8, xmm4
1631 vaesenc xmm9, xmm9, xmm4
1632 vaesenc xmm10, xmm10, xmm4
1633 vaesenc xmm11, xmm11, xmm4
1634 vmovdqu xmm4, OWORD PTR [r8+112]
1635 vaesenc xmm8, xmm8, xmm4
1636 vaesenc xmm9, xmm9, xmm4
1637 vaesenc xmm10, xmm10, xmm4
1638 vaesenc xmm11, xmm11, xmm4
1639 vmovdqu xmm4, OWORD PTR [r8+128]
1640 vaesenc xmm8, xmm8, xmm4
1641 vaesenc xmm9, xmm9, xmm4
1642 vaesenc xmm10, xmm10, xmm4
1643 vaesenc xmm11, xmm11, xmm4
1644 vmovdqu xmm4, OWORD PTR [r8+144]
1645 vaesenc xmm8, xmm8, xmm4
1646 vaesenc xmm9, xmm9, xmm4
1647 vaesenc xmm10, xmm10, xmm4
1648 vaesenc xmm11, xmm11, xmm4
1649 cmp r10d, 11
1650 vmovdqu xmm4, OWORD PTR [r8+160]
1651 jl L_AES_XTS_encrypt_avx1_aes_enc_64_aes_enc_block_last
1652 vaesenc xmm8, xmm8, xmm4
1653 vaesenc xmm9, xmm9, xmm4
1654 vaesenc xmm10, xmm10, xmm4
1655 vaesenc xmm11, xmm11, xmm4
1656 vmovdqu xmm4, OWORD PTR [r8+176]
1657 vaesenc xmm8, xmm8, xmm4
1658 vaesenc xmm9, xmm9, xmm4
1659 vaesenc xmm10, xmm10, xmm4
1660 vaesenc xmm11, xmm11, xmm4
1661 cmp r10d, 13
1662 vmovdqu xmm4, OWORD PTR [r8+192]
1663 jl L_AES_XTS_encrypt_avx1_aes_enc_64_aes_enc_block_last
1664 vaesenc xmm8, xmm8, xmm4
1665 vaesenc xmm9, xmm9, xmm4
1666 vaesenc xmm10, xmm10, xmm4
1667 vaesenc xmm11, xmm11, xmm4
1668 vmovdqu xmm4, OWORD PTR [r8+208]
1669 vaesenc xmm8, xmm8, xmm4
1670 vaesenc xmm9, xmm9, xmm4
1671 vaesenc xmm10, xmm10, xmm4
1672 vaesenc xmm11, xmm11, xmm4
1673 vmovdqu xmm4, OWORD PTR [r8+224]
1674L_AES_XTS_encrypt_avx1_aes_enc_64_aes_enc_block_last:
1675 vaesenclast xmm8, xmm8, xmm4
1676 vaesenclast xmm9, xmm9, xmm4
1677 vaesenclast xmm10, xmm10, xmm4
1678 vaesenclast xmm11, xmm11, xmm4
1679 vpxor xmm8, xmm8, xmm0
1680 vpxor xmm9, xmm9, xmm1
1681 vpxor xmm10, xmm10, xmm2
1682 vpxor xmm11, xmm11, xmm3
1683 vmovdqu OWORD PTR [rdx], xmm8
1684 vmovdqu OWORD PTR [rdx+16], xmm9
1685 vmovdqu OWORD PTR [rdx+32], xmm10
1686 vmovdqu OWORD PTR [rdx+48], xmm11
1687 vpsrad xmm4, xmm3, 31
1688 vpslld xmm0, xmm3, 1
1689 vpshufd xmm4, xmm4, 147
1690 vpand xmm4, xmm4, xmm12
1691 vpxor xmm0, xmm0, xmm4
1692 add r13d, 64
1693 cmp r13d, r11d
1694 jl L_AES_XTS_encrypt_avx1_enc_64
1695L_AES_XTS_encrypt_avx1_done_64:
1696 cmp r13d, eax
1697 mov r11d, eax
1698 je L_AES_XTS_encrypt_avx1_done_enc
1699 sub r11d, r13d
1700 cmp r11d, 16
1701 mov r11d, eax
1702 jl L_AES_XTS_encrypt_avx1_last_15
1703 and r11d, 4294967280
1704 ; 16 bytes of input
1705L_AES_XTS_encrypt_avx1_enc_16:
1706 lea rcx, QWORD PTR [rdi+r13]
1707 vmovdqu xmm8, OWORD PTR [rcx]
1708 vpxor xmm8, xmm8, xmm0
1709 ; aes_enc_block
1710 vpxor xmm8, xmm8, [r8]
1711 vmovdqu xmm5, OWORD PTR [r8+16]
1712 vaesenc xmm8, xmm8, xmm5
1713 vmovdqu xmm5, OWORD PTR [r8+32]
1714 vaesenc xmm8, xmm8, xmm5
1715 vmovdqu xmm5, OWORD PTR [r8+48]
1716 vaesenc xmm8, xmm8, xmm5
1717 vmovdqu xmm5, OWORD PTR [r8+64]
1718 vaesenc xmm8, xmm8, xmm5
1719 vmovdqu xmm5, OWORD PTR [r8+80]
1720 vaesenc xmm8, xmm8, xmm5
1721 vmovdqu xmm5, OWORD PTR [r8+96]
1722 vaesenc xmm8, xmm8, xmm5
1723 vmovdqu xmm5, OWORD PTR [r8+112]
1724 vaesenc xmm8, xmm8, xmm5
1725 vmovdqu xmm5, OWORD PTR [r8+128]
1726 vaesenc xmm8, xmm8, xmm5
1727 vmovdqu xmm5, OWORD PTR [r8+144]
1728 vaesenc xmm8, xmm8, xmm5
1729 cmp r10d, 11
1730 vmovdqu xmm5, OWORD PTR [r8+160]
1731 jl L_AES_XTS_encrypt_avx1_aes_enc_block_last
1732 vaesenc xmm8, xmm8, xmm5
1733 vmovdqu xmm6, OWORD PTR [r8+176]
1734 vaesenc xmm8, xmm8, xmm6
1735 cmp r10d, 13
1736 vmovdqu xmm5, OWORD PTR [r8+192]
1737 jl L_AES_XTS_encrypt_avx1_aes_enc_block_last
1738 vaesenc xmm8, xmm8, xmm5
1739 vmovdqu xmm6, OWORD PTR [r8+208]
1740 vaesenc xmm8, xmm8, xmm6
1741 vmovdqu xmm5, OWORD PTR [r8+224]
1742L_AES_XTS_encrypt_avx1_aes_enc_block_last:
1743 vaesenclast xmm8, xmm8, xmm5
1744 vpxor xmm8, xmm8, xmm0
1745 lea rcx, QWORD PTR [rsi+r13]
1746 vmovdqu OWORD PTR [rcx], xmm8
1747 vpsrad xmm4, xmm0, 31
1748 vpslld xmm0, xmm0, 1
1749 vpshufd xmm4, xmm4, 147
1750 vpand xmm4, xmm4, xmm12
1751 vpxor xmm0, xmm0, xmm4
1752 add r13d, 16
1753 cmp r13d, r11d
1754 jl L_AES_XTS_encrypt_avx1_enc_16
1755 cmp r13d, eax
1756 je L_AES_XTS_encrypt_avx1_done_enc
1757L_AES_XTS_encrypt_avx1_last_15:
1758 sub r13, 16
1759 lea rcx, QWORD PTR [rsi+r13]
1760 vmovdqu xmm8, OWORD PTR [rcx]
1761 add r13, 16
1762 vmovdqu OWORD PTR [rsp], xmm8
1763 xor rdx, rdx
1764L_AES_XTS_encrypt_avx1_last_15_byte_loop:
1765 mov r11b, BYTE PTR [rsp+rdx]
1766 mov cl, BYTE PTR [rdi+r13]
1767 mov BYTE PTR [rsi+r13], r11b
1768 mov BYTE PTR [rsp+rdx], cl
1769 inc r13d
1770 inc edx
1771 cmp r13d, eax
1772 jl L_AES_XTS_encrypt_avx1_last_15_byte_loop
1773 sub r13, rdx
1774 vmovdqu xmm8, OWORD PTR [rsp]
1775 sub r13, 16
1776 vpxor xmm8, xmm8, xmm0
1777 ; aes_enc_block
1778 vpxor xmm8, xmm8, [r8]
1779 vmovdqu xmm5, OWORD PTR [r8+16]
1780 vaesenc xmm8, xmm8, xmm5
1781 vmovdqu xmm5, OWORD PTR [r8+32]
1782 vaesenc xmm8, xmm8, xmm5
1783 vmovdqu xmm5, OWORD PTR [r8+48]
1784 vaesenc xmm8, xmm8, xmm5
1785 vmovdqu xmm5, OWORD PTR [r8+64]
1786 vaesenc xmm8, xmm8, xmm5
1787 vmovdqu xmm5, OWORD PTR [r8+80]
1788 vaesenc xmm8, xmm8, xmm5
1789 vmovdqu xmm5, OWORD PTR [r8+96]
1790 vaesenc xmm8, xmm8, xmm5
1791 vmovdqu xmm5, OWORD PTR [r8+112]
1792 vaesenc xmm8, xmm8, xmm5
1793 vmovdqu xmm5, OWORD PTR [r8+128]
1794 vaesenc xmm8, xmm8, xmm5
1795 vmovdqu xmm5, OWORD PTR [r8+144]
1796 vaesenc xmm8, xmm8, xmm5
1797 cmp r10d, 11
1798 vmovdqu xmm5, OWORD PTR [r8+160]
1799 jl L_AES_XTS_encrypt_avx1_last_15_aes_enc_block_last
1800 vaesenc xmm8, xmm8, xmm5
1801 vmovdqu xmm6, OWORD PTR [r8+176]
1802 vaesenc xmm8, xmm8, xmm6
1803 cmp r10d, 13
1804 vmovdqu xmm5, OWORD PTR [r8+192]
1805 jl L_AES_XTS_encrypt_avx1_last_15_aes_enc_block_last
1806 vaesenc xmm8, xmm8, xmm5
1807 vmovdqu xmm6, OWORD PTR [r8+208]
1808 vaesenc xmm8, xmm8, xmm6
1809 vmovdqu xmm5, OWORD PTR [r8+224]
1810L_AES_XTS_encrypt_avx1_last_15_aes_enc_block_last:
1811 vaesenclast xmm8, xmm8, xmm5
1812 vpxor xmm8, xmm8, xmm0
1813 lea rcx, QWORD PTR [rsi+r13]
1814 vmovdqu OWORD PTR [rcx], xmm8
1815L_AES_XTS_encrypt_avx1_done_enc:
1816 vmovdqu xmm6, OWORD PTR [rsp+64]
1817 vmovdqu xmm7, OWORD PTR [rsp+80]
1818 vmovdqu xmm8, OWORD PTR [rsp+96]
1819 vmovdqu xmm9, OWORD PTR [rsp+112]
1820 vmovdqu xmm10, OWORD PTR [rsp+128]
1821 vmovdqu xmm11, OWORD PTR [rsp+144]
1822 vmovdqu xmm12, OWORD PTR [rsp+160]
1823 add rsp, 176
1824 pop r13
1825 pop r12
1826 pop rsi
1827 pop rdi
1828 ret
1829AES_XTS_encrypt_avx1 ENDP
1830_TEXT ENDS
1831_TEXT SEGMENT READONLY PARA
1832AES_XTS_encrypt_update_avx1 PROC
1833 push rdi
1834 push rsi
1835 push r12
1836 mov rdi, rcx
1837 mov rsi, rdx
1838 mov rax, r8
1839 mov r10, r9
1840 mov r8, QWORD PTR [rsp+64]
1841 mov r9d, DWORD PTR [rsp+72]
1842 sub rsp, 176
1843 vmovdqu OWORD PTR [rsp+64], xmm6
1844 vmovdqu OWORD PTR [rsp+80], xmm7
1845 vmovdqu OWORD PTR [rsp+96], xmm8
1846 vmovdqu OWORD PTR [rsp+112], xmm9
1847 vmovdqu OWORD PTR [rsp+128], xmm10
1848 vmovdqu OWORD PTR [rsp+144], xmm11
1849 vmovdqu OWORD PTR [rsp+160], xmm12
1850 vmovdqu xmm12, OWORD PTR L_avx1_aes_xts_gc_xts
1851 vmovdqu xmm0, OWORD PTR [r8]
1852 xor r12d, r12d
1853 cmp eax, 64
1854 mov r11d, eax
1855 jl L_AES_XTS_encrypt_update_avx1_done_64
1856 and r11d, 4294967232
1857L_AES_XTS_encrypt_update_avx1_enc_64:
1858 ; 64 bytes of input
1859 ; aes_enc_64
1860 lea rcx, QWORD PTR [rdi+r12]
1861 lea rdx, QWORD PTR [rsi+r12]
1862 vmovdqu xmm8, OWORD PTR [rcx]
1863 vmovdqu xmm9, OWORD PTR [rcx+16]
1864 vmovdqu xmm10, OWORD PTR [rcx+32]
1865 vmovdqu xmm11, OWORD PTR [rcx+48]
1866 vpsrad xmm4, xmm0, 31
1867 vpslld xmm1, xmm0, 1
1868 vpshufd xmm4, xmm4, 147
1869 vpand xmm4, xmm4, xmm12
1870 vpxor xmm1, xmm1, xmm4
1871 vpsrad xmm4, xmm1, 31
1872 vpslld xmm2, xmm1, 1
1873 vpshufd xmm4, xmm4, 147
1874 vpand xmm4, xmm4, xmm12
1875 vpxor xmm2, xmm2, xmm4
1876 vpsrad xmm4, xmm2, 31
1877 vpslld xmm3, xmm2, 1
1878 vpshufd xmm4, xmm4, 147
1879 vpand xmm4, xmm4, xmm12
1880 vpxor xmm3, xmm3, xmm4
1881 vpxor xmm8, xmm8, xmm0
1882 vpxor xmm9, xmm9, xmm1
1883 vpxor xmm10, xmm10, xmm2
1884 vpxor xmm11, xmm11, xmm3
1885 ; aes_enc_block
1886 vmovdqu xmm4, OWORD PTR [r10]
1887 vpxor xmm8, xmm8, xmm4
1888 vpxor xmm9, xmm9, xmm4
1889 vpxor xmm10, xmm10, xmm4
1890 vpxor xmm11, xmm11, xmm4
1891 vmovdqu xmm4, OWORD PTR [r10+16]
1892 vaesenc xmm8, xmm8, xmm4
1893 vaesenc xmm9, xmm9, xmm4
1894 vaesenc xmm10, xmm10, xmm4
1895 vaesenc xmm11, xmm11, xmm4
1896 vmovdqu xmm4, OWORD PTR [r10+32]
1897 vaesenc xmm8, xmm8, xmm4
1898 vaesenc xmm9, xmm9, xmm4
1899 vaesenc xmm10, xmm10, xmm4
1900 vaesenc xmm11, xmm11, xmm4
1901 vmovdqu xmm4, OWORD PTR [r10+48]
1902 vaesenc xmm8, xmm8, xmm4
1903 vaesenc xmm9, xmm9, xmm4
1904 vaesenc xmm10, xmm10, xmm4
1905 vaesenc xmm11, xmm11, xmm4
1906 vmovdqu xmm4, OWORD PTR [r10+64]
1907 vaesenc xmm8, xmm8, xmm4
1908 vaesenc xmm9, xmm9, xmm4
1909 vaesenc xmm10, xmm10, xmm4
1910 vaesenc xmm11, xmm11, xmm4
1911 vmovdqu xmm4, OWORD PTR [r10+80]
1912 vaesenc xmm8, xmm8, xmm4
1913 vaesenc xmm9, xmm9, xmm4
1914 vaesenc xmm10, xmm10, xmm4
1915 vaesenc xmm11, xmm11, xmm4
1916 vmovdqu xmm4, OWORD PTR [r10+96]
1917 vaesenc xmm8, xmm8, xmm4
1918 vaesenc xmm9, xmm9, xmm4
1919 vaesenc xmm10, xmm10, xmm4
1920 vaesenc xmm11, xmm11, xmm4
1921 vmovdqu xmm4, OWORD PTR [r10+112]
1922 vaesenc xmm8, xmm8, xmm4
1923 vaesenc xmm9, xmm9, xmm4
1924 vaesenc xmm10, xmm10, xmm4
1925 vaesenc xmm11, xmm11, xmm4
1926 vmovdqu xmm4, OWORD PTR [r10+128]
1927 vaesenc xmm8, xmm8, xmm4
1928 vaesenc xmm9, xmm9, xmm4
1929 vaesenc xmm10, xmm10, xmm4
1930 vaesenc xmm11, xmm11, xmm4
1931 vmovdqu xmm4, OWORD PTR [r10+144]
1932 vaesenc xmm8, xmm8, xmm4
1933 vaesenc xmm9, xmm9, xmm4
1934 vaesenc xmm10, xmm10, xmm4
1935 vaesenc xmm11, xmm11, xmm4
1936 cmp r9d, 11
1937 vmovdqu xmm4, OWORD PTR [r10+160]
1938 jl L_AES_XTS_encrypt_update_avx1_aes_enc_64_aes_enc_block_last
1939 vaesenc xmm8, xmm8, xmm4
1940 vaesenc xmm9, xmm9, xmm4
1941 vaesenc xmm10, xmm10, xmm4
1942 vaesenc xmm11, xmm11, xmm4
1943 vmovdqu xmm4, OWORD PTR [r10+176]
1944 vaesenc xmm8, xmm8, xmm4
1945 vaesenc xmm9, xmm9, xmm4
1946 vaesenc xmm10, xmm10, xmm4
1947 vaesenc xmm11, xmm11, xmm4
1948 cmp r9d, 13
1949 vmovdqu xmm4, OWORD PTR [r10+192]
1950 jl L_AES_XTS_encrypt_update_avx1_aes_enc_64_aes_enc_block_last
1951 vaesenc xmm8, xmm8, xmm4
1952 vaesenc xmm9, xmm9, xmm4
1953 vaesenc xmm10, xmm10, xmm4
1954 vaesenc xmm11, xmm11, xmm4
1955 vmovdqu xmm4, OWORD PTR [r10+208]
1956 vaesenc xmm8, xmm8, xmm4
1957 vaesenc xmm9, xmm9, xmm4
1958 vaesenc xmm10, xmm10, xmm4
1959 vaesenc xmm11, xmm11, xmm4
1960 vmovdqu xmm4, OWORD PTR [r10+224]
1961L_AES_XTS_encrypt_update_avx1_aes_enc_64_aes_enc_block_last:
1962 vaesenclast xmm8, xmm8, xmm4
1963 vaesenclast xmm9, xmm9, xmm4
1964 vaesenclast xmm10, xmm10, xmm4
1965 vaesenclast xmm11, xmm11, xmm4
1966 vpxor xmm8, xmm8, xmm0
1967 vpxor xmm9, xmm9, xmm1
1968 vpxor xmm10, xmm10, xmm2
1969 vpxor xmm11, xmm11, xmm3
1970 vmovdqu OWORD PTR [rdx], xmm8
1971 vmovdqu OWORD PTR [rdx+16], xmm9
1972 vmovdqu OWORD PTR [rdx+32], xmm10
1973 vmovdqu OWORD PTR [rdx+48], xmm11
1974 vpsrad xmm4, xmm3, 31
1975 vpslld xmm0, xmm3, 1
1976 vpshufd xmm4, xmm4, 147
1977 vpand xmm4, xmm4, xmm12
1978 vpxor xmm0, xmm0, xmm4
1979 add r12d, 64
1980 cmp r12d, r11d
1981 jl L_AES_XTS_encrypt_update_avx1_enc_64
1982L_AES_XTS_encrypt_update_avx1_done_64:
1983 cmp r12d, eax
1984 mov r11d, eax
1985 je L_AES_XTS_encrypt_update_avx1_done_enc
1986 sub r11d, r12d
1987 cmp r11d, 16
1988 mov r11d, eax
1989 jl L_AES_XTS_encrypt_update_avx1_last_15
1990 and r11d, 4294967280
1991 ; 16 bytes of input
1992L_AES_XTS_encrypt_update_avx1_enc_16:
1993 lea rcx, QWORD PTR [rdi+r12]
1994 vmovdqu xmm8, OWORD PTR [rcx]
1995 vpxor xmm8, xmm8, xmm0
1996 ; aes_enc_block
1997 vpxor xmm8, xmm8, [r10]
1998 vmovdqu xmm5, OWORD PTR [r10+16]
1999 vaesenc xmm8, xmm8, xmm5
2000 vmovdqu xmm5, OWORD PTR [r10+32]
2001 vaesenc xmm8, xmm8, xmm5
2002 vmovdqu xmm5, OWORD PTR [r10+48]
2003 vaesenc xmm8, xmm8, xmm5
2004 vmovdqu xmm5, OWORD PTR [r10+64]
2005 vaesenc xmm8, xmm8, xmm5
2006 vmovdqu xmm5, OWORD PTR [r10+80]
2007 vaesenc xmm8, xmm8, xmm5
2008 vmovdqu xmm5, OWORD PTR [r10+96]
2009 vaesenc xmm8, xmm8, xmm5
2010 vmovdqu xmm5, OWORD PTR [r10+112]
2011 vaesenc xmm8, xmm8, xmm5
2012 vmovdqu xmm5, OWORD PTR [r10+128]
2013 vaesenc xmm8, xmm8, xmm5
2014 vmovdqu xmm5, OWORD PTR [r10+144]
2015 vaesenc xmm8, xmm8, xmm5
2016 cmp r9d, 11
2017 vmovdqu xmm5, OWORD PTR [r10+160]
2018 jl L_AES_XTS_encrypt_update_avx1_aes_enc_block_last
2019 vaesenc xmm8, xmm8, xmm5
2020 vmovdqu xmm6, OWORD PTR [r10+176]
2021 vaesenc xmm8, xmm8, xmm6
2022 cmp r9d, 13
2023 vmovdqu xmm5, OWORD PTR [r10+192]
2024 jl L_AES_XTS_encrypt_update_avx1_aes_enc_block_last
2025 vaesenc xmm8, xmm8, xmm5
2026 vmovdqu xmm6, OWORD PTR [r10+208]
2027 vaesenc xmm8, xmm8, xmm6
2028 vmovdqu xmm5, OWORD PTR [r10+224]
2029L_AES_XTS_encrypt_update_avx1_aes_enc_block_last:
2030 vaesenclast xmm8, xmm8, xmm5
2031 vpxor xmm8, xmm8, xmm0
2032 lea rcx, QWORD PTR [rsi+r12]
2033 vmovdqu OWORD PTR [rcx], xmm8
2034 vpsrad xmm4, xmm0, 31
2035 vpslld xmm0, xmm0, 1
2036 vpshufd xmm4, xmm4, 147
2037 vpand xmm4, xmm4, xmm12
2038 vpxor xmm0, xmm0, xmm4
2039 add r12d, 16
2040 cmp r12d, r11d
2041 jl L_AES_XTS_encrypt_update_avx1_enc_16
2042 cmp r12d, eax
2043 je L_AES_XTS_encrypt_update_avx1_done_enc
2044L_AES_XTS_encrypt_update_avx1_last_15:
2045 sub r12, 16
2046 lea rcx, QWORD PTR [rsi+r12]
2047 vmovdqu xmm8, OWORD PTR [rcx]
2048 add r12, 16
2049 vmovdqu OWORD PTR [rsp], xmm8
2050 xor rdx, rdx
2051L_AES_XTS_encrypt_update_avx1_last_15_byte_loop:
2052 mov r11b, BYTE PTR [rsp+rdx]
2053 mov cl, BYTE PTR [rdi+r12]
2054 mov BYTE PTR [rsi+r12], r11b
2055 mov BYTE PTR [rsp+rdx], cl
2056 inc r12d
2057 inc edx
2058 cmp r12d, eax
2059 jl L_AES_XTS_encrypt_update_avx1_last_15_byte_loop
2060 sub r12, rdx
2061 vmovdqu xmm8, OWORD PTR [rsp]
2062 sub r12, 16
2063 vpxor xmm8, xmm8, xmm0
2064 ; aes_enc_block
2065 vpxor xmm8, xmm8, [r10]
2066 vmovdqu xmm5, OWORD PTR [r10+16]
2067 vaesenc xmm8, xmm8, xmm5
2068 vmovdqu xmm5, OWORD PTR [r10+32]
2069 vaesenc xmm8, xmm8, xmm5
2070 vmovdqu xmm5, OWORD PTR [r10+48]
2071 vaesenc xmm8, xmm8, xmm5
2072 vmovdqu xmm5, OWORD PTR [r10+64]
2073 vaesenc xmm8, xmm8, xmm5
2074 vmovdqu xmm5, OWORD PTR [r10+80]
2075 vaesenc xmm8, xmm8, xmm5
2076 vmovdqu xmm5, OWORD PTR [r10+96]
2077 vaesenc xmm8, xmm8, xmm5
2078 vmovdqu xmm5, OWORD PTR [r10+112]
2079 vaesenc xmm8, xmm8, xmm5
2080 vmovdqu xmm5, OWORD PTR [r10+128]
2081 vaesenc xmm8, xmm8, xmm5
2082 vmovdqu xmm5, OWORD PTR [r10+144]
2083 vaesenc xmm8, xmm8, xmm5
2084 cmp r9d, 11
2085 vmovdqu xmm5, OWORD PTR [r10+160]
2086 jl L_AES_XTS_encrypt_update_avx1_last_15_aes_enc_block_last
2087 vaesenc xmm8, xmm8, xmm5
2088 vmovdqu xmm6, OWORD PTR [r10+176]
2089 vaesenc xmm8, xmm8, xmm6
2090 cmp r9d, 13
2091 vmovdqu xmm5, OWORD PTR [r10+192]
2092 jl L_AES_XTS_encrypt_update_avx1_last_15_aes_enc_block_last
2093 vaesenc xmm8, xmm8, xmm5
2094 vmovdqu xmm6, OWORD PTR [r10+208]
2095 vaesenc xmm8, xmm8, xmm6
2096 vmovdqu xmm5, OWORD PTR [r10+224]
2097L_AES_XTS_encrypt_update_avx1_last_15_aes_enc_block_last:
2098 vaesenclast xmm8, xmm8, xmm5
2099 vpxor xmm8, xmm8, xmm0
2100 lea rcx, QWORD PTR [rsi+r12]
2101 vmovdqu OWORD PTR [rcx], xmm8
2102L_AES_XTS_encrypt_update_avx1_done_enc:
2103 vmovdqu OWORD PTR [r8], xmm0
2104 vmovdqu xmm6, OWORD PTR [rsp+64]
2105 vmovdqu xmm7, OWORD PTR [rsp+80]
2106 vmovdqu xmm8, OWORD PTR [rsp+96]
2107 vmovdqu xmm9, OWORD PTR [rsp+112]
2108 vmovdqu xmm10, OWORD PTR [rsp+128]
2109 vmovdqu xmm11, OWORD PTR [rsp+144]
2110 vmovdqu xmm12, OWORD PTR [rsp+160]
2111 add rsp, 176
2112 pop r12
2113 pop rsi
2114 pop rdi
2115 ret
2116AES_XTS_encrypt_update_avx1 ENDP
2117_TEXT ENDS
2118_TEXT SEGMENT READONLY PARA
2119AES_XTS_decrypt_avx1 PROC
2120 push rdi
2121 push rsi
2122 push r12
2123 push r13
2124 mov rdi, rcx
2125 mov rsi, rdx
2126 mov rax, r8
2127 mov r12, r9
2128 mov r8, QWORD PTR [rsp+72]
2129 mov r9, QWORD PTR [rsp+80]
2130 mov r10d, DWORD PTR [rsp+88]
2131 sub rsp, 128
2132 vmovdqu OWORD PTR [rsp+16], xmm6
2133 vmovdqu OWORD PTR [rsp+32], xmm7
2134 vmovdqu OWORD PTR [rsp+48], xmm8
2135 vmovdqu OWORD PTR [rsp+64], xmm9
2136 vmovdqu OWORD PTR [rsp+80], xmm10
2137 vmovdqu OWORD PTR [rsp+96], xmm11
2138 vmovdqu OWORD PTR [rsp+112], xmm12
2139 vmovdqu xmm12, OWORD PTR L_avx1_aes_xts_gc_xts
2140 vmovdqu xmm0, OWORD PTR [r12]
2141 ; aes_enc_block
2142 vpxor xmm0, xmm0, [r9]
2143 vmovdqu xmm5, OWORD PTR [r9+16]
2144 vaesenc xmm0, xmm0, xmm5
2145 vmovdqu xmm5, OWORD PTR [r9+32]
2146 vaesenc xmm0, xmm0, xmm5
2147 vmovdqu xmm5, OWORD PTR [r9+48]
2148 vaesenc xmm0, xmm0, xmm5
2149 vmovdqu xmm5, OWORD PTR [r9+64]
2150 vaesenc xmm0, xmm0, xmm5
2151 vmovdqu xmm5, OWORD PTR [r9+80]
2152 vaesenc xmm0, xmm0, xmm5
2153 vmovdqu xmm5, OWORD PTR [r9+96]
2154 vaesenc xmm0, xmm0, xmm5
2155 vmovdqu xmm5, OWORD PTR [r9+112]
2156 vaesenc xmm0, xmm0, xmm5
2157 vmovdqu xmm5, OWORD PTR [r9+128]
2158 vaesenc xmm0, xmm0, xmm5
2159 vmovdqu xmm5, OWORD PTR [r9+144]
2160 vaesenc xmm0, xmm0, xmm5
2161 cmp r10d, 11
2162 vmovdqu xmm5, OWORD PTR [r9+160]
2163 jl L_AES_XTS_decrypt_avx1_tweak_aes_enc_block_last
2164 vaesenc xmm0, xmm0, xmm5
2165 vmovdqu xmm6, OWORD PTR [r9+176]
2166 vaesenc xmm0, xmm0, xmm6
2167 cmp r10d, 13
2168 vmovdqu xmm5, OWORD PTR [r9+192]
2169 jl L_AES_XTS_decrypt_avx1_tweak_aes_enc_block_last
2170 vaesenc xmm0, xmm0, xmm5
2171 vmovdqu xmm6, OWORD PTR [r9+208]
2172 vaesenc xmm0, xmm0, xmm6
2173 vmovdqu xmm5, OWORD PTR [r9+224]
2174L_AES_XTS_decrypt_avx1_tweak_aes_enc_block_last:
2175 vaesenclast xmm0, xmm0, xmm5
2176 xor r13d, r13d
2177 mov r11d, eax
2178 and r11d, 4294967280
2179 cmp r11d, eax
2180 je L_AES_XTS_decrypt_avx1_mul16_64
2181 sub r11d, 16
2182 cmp r11d, 16
2183 jl L_AES_XTS_decrypt_avx1_last_31_start
2184L_AES_XTS_decrypt_avx1_mul16_64:
2185 cmp r11d, 64
2186 jl L_AES_XTS_decrypt_avx1_done_64
2187 and r11d, 4294967232
2188L_AES_XTS_decrypt_avx1_dec_64:
2189 ; 64 bytes of input
2190 ; aes_dec_64
2191 lea rcx, QWORD PTR [rdi+r13]
2192 lea rdx, QWORD PTR [rsi+r13]
2193 vmovdqu xmm8, OWORD PTR [rcx]
2194 vmovdqu xmm9, OWORD PTR [rcx+16]
2195 vmovdqu xmm10, OWORD PTR [rcx+32]
2196 vmovdqu xmm11, OWORD PTR [rcx+48]
2197 vpsrad xmm4, xmm0, 31
2198 vpslld xmm1, xmm0, 1
2199 vpshufd xmm4, xmm4, 147
2200 vpand xmm4, xmm4, xmm12
2201 vpxor xmm1, xmm1, xmm4
2202 vpsrad xmm4, xmm1, 31
2203 vpslld xmm2, xmm1, 1
2204 vpshufd xmm4, xmm4, 147
2205 vpand xmm4, xmm4, xmm12
2206 vpxor xmm2, xmm2, xmm4
2207 vpsrad xmm4, xmm2, 31
2208 vpslld xmm3, xmm2, 1
2209 vpshufd xmm4, xmm4, 147
2210 vpand xmm4, xmm4, xmm12
2211 vpxor xmm3, xmm3, xmm4
2212 vpxor xmm8, xmm8, xmm0
2213 vpxor xmm9, xmm9, xmm1
2214 vpxor xmm10, xmm10, xmm2
2215 vpxor xmm11, xmm11, xmm3
2216 ; aes_dec_block
2217 vmovdqu xmm4, OWORD PTR [r8]
2218 vpxor xmm8, xmm8, xmm4
2219 vpxor xmm9, xmm9, xmm4
2220 vpxor xmm10, xmm10, xmm4
2221 vpxor xmm11, xmm11, xmm4
2222 vmovdqu xmm4, OWORD PTR [r8+16]
2223 vaesdec xmm8, xmm8, xmm4
2224 vaesdec xmm9, xmm9, xmm4
2225 vaesdec xmm10, xmm10, xmm4
2226 vaesdec xmm11, xmm11, xmm4
2227 vmovdqu xmm4, OWORD PTR [r8+32]
2228 vaesdec xmm8, xmm8, xmm4
2229 vaesdec xmm9, xmm9, xmm4
2230 vaesdec xmm10, xmm10, xmm4
2231 vaesdec xmm11, xmm11, xmm4
2232 vmovdqu xmm4, OWORD PTR [r8+48]
2233 vaesdec xmm8, xmm8, xmm4
2234 vaesdec xmm9, xmm9, xmm4
2235 vaesdec xmm10, xmm10, xmm4
2236 vaesdec xmm11, xmm11, xmm4
2237 vmovdqu xmm4, OWORD PTR [r8+64]
2238 vaesdec xmm8, xmm8, xmm4
2239 vaesdec xmm9, xmm9, xmm4
2240 vaesdec xmm10, xmm10, xmm4
2241 vaesdec xmm11, xmm11, xmm4
2242 vmovdqu xmm4, OWORD PTR [r8+80]
2243 vaesdec xmm8, xmm8, xmm4
2244 vaesdec xmm9, xmm9, xmm4
2245 vaesdec xmm10, xmm10, xmm4
2246 vaesdec xmm11, xmm11, xmm4
2247 vmovdqu xmm4, OWORD PTR [r8+96]
2248 vaesdec xmm8, xmm8, xmm4
2249 vaesdec xmm9, xmm9, xmm4
2250 vaesdec xmm10, xmm10, xmm4
2251 vaesdec xmm11, xmm11, xmm4
2252 vmovdqu xmm4, OWORD PTR [r8+112]
2253 vaesdec xmm8, xmm8, xmm4
2254 vaesdec xmm9, xmm9, xmm4
2255 vaesdec xmm10, xmm10, xmm4
2256 vaesdec xmm11, xmm11, xmm4
2257 vmovdqu xmm4, OWORD PTR [r8+128]
2258 vaesdec xmm8, xmm8, xmm4
2259 vaesdec xmm9, xmm9, xmm4
2260 vaesdec xmm10, xmm10, xmm4
2261 vaesdec xmm11, xmm11, xmm4
2262 vmovdqu xmm4, OWORD PTR [r8+144]
2263 vaesdec xmm8, xmm8, xmm4
2264 vaesdec xmm9, xmm9, xmm4
2265 vaesdec xmm10, xmm10, xmm4
2266 vaesdec xmm11, xmm11, xmm4
2267 cmp r10d, 11
2268 vmovdqu xmm4, OWORD PTR [r8+160]
2269 jl L_AES_XTS_decrypt_avx1_aes_dec_64_aes_dec_block_last
2270 vaesdec xmm8, xmm8, xmm4
2271 vaesdec xmm9, xmm9, xmm4
2272 vaesdec xmm10, xmm10, xmm4
2273 vaesdec xmm11, xmm11, xmm4
2274 vmovdqu xmm4, OWORD PTR [r8+176]
2275 vaesdec xmm8, xmm8, xmm4
2276 vaesdec xmm9, xmm9, xmm4
2277 vaesdec xmm10, xmm10, xmm4
2278 vaesdec xmm11, xmm11, xmm4
2279 cmp r10d, 13
2280 vmovdqu xmm4, OWORD PTR [r8+192]
2281 jl L_AES_XTS_decrypt_avx1_aes_dec_64_aes_dec_block_last
2282 vaesdec xmm8, xmm8, xmm4
2283 vaesdec xmm9, xmm9, xmm4
2284 vaesdec xmm10, xmm10, xmm4
2285 vaesdec xmm11, xmm11, xmm4
2286 vmovdqu xmm4, OWORD PTR [r8+208]
2287 vaesdec xmm8, xmm8, xmm4
2288 vaesdec xmm9, xmm9, xmm4
2289 vaesdec xmm10, xmm10, xmm4
2290 vaesdec xmm11, xmm11, xmm4
2291 vmovdqu xmm4, OWORD PTR [r8+224]
2292L_AES_XTS_decrypt_avx1_aes_dec_64_aes_dec_block_last:
2293 vaesdeclast xmm8, xmm8, xmm4
2294 vaesdeclast xmm9, xmm9, xmm4
2295 vaesdeclast xmm10, xmm10, xmm4
2296 vaesdeclast xmm11, xmm11, xmm4
2297 vpxor xmm8, xmm8, xmm0
2298 vpxor xmm9, xmm9, xmm1
2299 vpxor xmm10, xmm10, xmm2
2300 vpxor xmm11, xmm11, xmm3
2301 vmovdqu OWORD PTR [rdx], xmm8
2302 vmovdqu OWORD PTR [rdx+16], xmm9
2303 vmovdqu OWORD PTR [rdx+32], xmm10
2304 vmovdqu OWORD PTR [rdx+48], xmm11
2305 vpsrad xmm4, xmm3, 31
2306 vpslld xmm0, xmm3, 1
2307 vpshufd xmm4, xmm4, 147
2308 vpand xmm4, xmm4, xmm12
2309 vpxor xmm0, xmm0, xmm4
2310 add r13d, 64
2311 cmp r13d, r11d
2312 jl L_AES_XTS_decrypt_avx1_dec_64
2313L_AES_XTS_decrypt_avx1_done_64:
2314 cmp r13d, eax
2315 mov r11d, eax
2316 je L_AES_XTS_decrypt_avx1_done_dec
2317 and r11d, 4294967280
2318 cmp r11d, eax
2319 je L_AES_XTS_decrypt_avx1_mul16
2320 sub r11d, 16
2321 sub r11d, r13d
2322 cmp r11d, 16
2323 jl L_AES_XTS_decrypt_avx1_last_31_start
2324 add r11d, r13d
2325L_AES_XTS_decrypt_avx1_mul16:
2326L_AES_XTS_decrypt_avx1_dec_16:
2327 ; 16 bytes of input
2328 lea rcx, QWORD PTR [rdi+r13]
2329 vmovdqu xmm8, OWORD PTR [rcx]
2330 vpxor xmm8, xmm8, xmm0
2331 ; aes_dec_block
2332 vpxor xmm8, xmm8, [r8]
2333 vmovdqu xmm5, OWORD PTR [r8+16]
2334 vaesdec xmm8, xmm8, xmm5
2335 vmovdqu xmm5, OWORD PTR [r8+32]
2336 vaesdec xmm8, xmm8, xmm5
2337 vmovdqu xmm5, OWORD PTR [r8+48]
2338 vaesdec xmm8, xmm8, xmm5
2339 vmovdqu xmm5, OWORD PTR [r8+64]
2340 vaesdec xmm8, xmm8, xmm5
2341 vmovdqu xmm5, OWORD PTR [r8+80]
2342 vaesdec xmm8, xmm8, xmm5
2343 vmovdqu xmm5, OWORD PTR [r8+96]
2344 vaesdec xmm8, xmm8, xmm5
2345 vmovdqu xmm5, OWORD PTR [r8+112]
2346 vaesdec xmm8, xmm8, xmm5
2347 vmovdqu xmm5, OWORD PTR [r8+128]
2348 vaesdec xmm8, xmm8, xmm5
2349 vmovdqu xmm5, OWORD PTR [r8+144]
2350 vaesdec xmm8, xmm8, xmm5
2351 cmp r10d, 11
2352 vmovdqu xmm5, OWORD PTR [r8+160]
2353 jl L_AES_XTS_decrypt_avx1_aes_dec_block_last
2354 vaesdec xmm8, xmm8, xmm5
2355 vmovdqu xmm6, OWORD PTR [r8+176]
2356 vaesdec xmm8, xmm8, xmm6
2357 cmp r10d, 13
2358 vmovdqu xmm5, OWORD PTR [r8+192]
2359 jl L_AES_XTS_decrypt_avx1_aes_dec_block_last
2360 vaesdec xmm8, xmm8, xmm5
2361 vmovdqu xmm6, OWORD PTR [r8+208]
2362 vaesdec xmm8, xmm8, xmm6
2363 vmovdqu xmm5, OWORD PTR [r8+224]
2364L_AES_XTS_decrypt_avx1_aes_dec_block_last:
2365 vaesdeclast xmm8, xmm8, xmm5
2366 vpxor xmm8, xmm8, xmm0
2367 lea rcx, QWORD PTR [rsi+r13]
2368 vmovdqu OWORD PTR [rcx], xmm8
2369 vpsrad xmm4, xmm0, 31
2370 vpslld xmm0, xmm0, 1
2371 vpshufd xmm4, xmm4, 147
2372 vpand xmm4, xmm4, xmm12
2373 vpxor xmm0, xmm0, xmm4
2374 add r13d, 16
2375 cmp r13d, r11d
2376 jl L_AES_XTS_decrypt_avx1_dec_16
2377 cmp r13d, eax
2378 je L_AES_XTS_decrypt_avx1_done_dec
2379L_AES_XTS_decrypt_avx1_last_31_start:
2380 vpsrad xmm4, xmm0, 31
2381 vpslld xmm7, xmm0, 1
2382 vpshufd xmm4, xmm4, 147
2383 vpand xmm4, xmm4, xmm12
2384 vpxor xmm7, xmm7, xmm4
2385 lea rcx, QWORD PTR [rdi+r13]
2386 vmovdqu xmm8, OWORD PTR [rcx]
2387 vpxor xmm8, xmm8, xmm7
2388 ; aes_dec_block
2389 vpxor xmm8, xmm8, [r8]
2390 vmovdqu xmm5, OWORD PTR [r8+16]
2391 vaesdec xmm8, xmm8, xmm5
2392 vmovdqu xmm5, OWORD PTR [r8+32]
2393 vaesdec xmm8, xmm8, xmm5
2394 vmovdqu xmm5, OWORD PTR [r8+48]
2395 vaesdec xmm8, xmm8, xmm5
2396 vmovdqu xmm5, OWORD PTR [r8+64]
2397 vaesdec xmm8, xmm8, xmm5
2398 vmovdqu xmm5, OWORD PTR [r8+80]
2399 vaesdec xmm8, xmm8, xmm5
2400 vmovdqu xmm5, OWORD PTR [r8+96]
2401 vaesdec xmm8, xmm8, xmm5
2402 vmovdqu xmm5, OWORD PTR [r8+112]
2403 vaesdec xmm8, xmm8, xmm5
2404 vmovdqu xmm5, OWORD PTR [r8+128]
2405 vaesdec xmm8, xmm8, xmm5
2406 vmovdqu xmm5, OWORD PTR [r8+144]
2407 vaesdec xmm8, xmm8, xmm5
2408 cmp r10d, 11
2409 vmovdqu xmm5, OWORD PTR [r8+160]
2410 jl L_AES_XTS_decrypt_avx1_last_31_aes_dec_block_last
2411 vaesdec xmm8, xmm8, xmm5
2412 vmovdqu xmm6, OWORD PTR [r8+176]
2413 vaesdec xmm8, xmm8, xmm6
2414 cmp r10d, 13
2415 vmovdqu xmm5, OWORD PTR [r8+192]
2416 jl L_AES_XTS_decrypt_avx1_last_31_aes_dec_block_last
2417 vaesdec xmm8, xmm8, xmm5
2418 vmovdqu xmm6, OWORD PTR [r8+208]
2419 vaesdec xmm8, xmm8, xmm6
2420 vmovdqu xmm5, OWORD PTR [r8+224]
2421L_AES_XTS_decrypt_avx1_last_31_aes_dec_block_last:
2422 vaesdeclast xmm8, xmm8, xmm5
2423 vpxor xmm8, xmm8, xmm7
2424 vmovdqu OWORD PTR [rsp], xmm8
2425 add r13, 16
2426 xor rdx, rdx
2427L_AES_XTS_decrypt_avx1_last_31_byte_loop:
2428 mov r11b, BYTE PTR [rsp+rdx]
2429 mov cl, BYTE PTR [rdi+r13]
2430 mov BYTE PTR [rsi+r13], r11b
2431 mov BYTE PTR [rsp+rdx], cl
2432 inc r13d
2433 inc edx
2434 cmp r13d, eax
2435 jl L_AES_XTS_decrypt_avx1_last_31_byte_loop
2436 sub r13, rdx
2437 vmovdqu xmm8, OWORD PTR [rsp]
2438 vpxor xmm8, xmm8, xmm0
2439 ; aes_dec_block
2440 vpxor xmm8, xmm8, [r8]
2441 vmovdqu xmm5, OWORD PTR [r8+16]
2442 vaesdec xmm8, xmm8, xmm5
2443 vmovdqu xmm5, OWORD PTR [r8+32]
2444 vaesdec xmm8, xmm8, xmm5
2445 vmovdqu xmm5, OWORD PTR [r8+48]
2446 vaesdec xmm8, xmm8, xmm5
2447 vmovdqu xmm5, OWORD PTR [r8+64]
2448 vaesdec xmm8, xmm8, xmm5
2449 vmovdqu xmm5, OWORD PTR [r8+80]
2450 vaesdec xmm8, xmm8, xmm5
2451 vmovdqu xmm5, OWORD PTR [r8+96]
2452 vaesdec xmm8, xmm8, xmm5
2453 vmovdqu xmm5, OWORD PTR [r8+112]
2454 vaesdec xmm8, xmm8, xmm5
2455 vmovdqu xmm5, OWORD PTR [r8+128]
2456 vaesdec xmm8, xmm8, xmm5
2457 vmovdqu xmm5, OWORD PTR [r8+144]
2458 vaesdec xmm8, xmm8, xmm5
2459 cmp r10d, 11
2460 vmovdqu xmm5, OWORD PTR [r8+160]
2461 jl L_AES_XTS_decrypt_avx1_last_31_2_aes_dec_block_last
2462 vaesdec xmm8, xmm8, xmm5
2463 vmovdqu xmm6, OWORD PTR [r8+176]
2464 vaesdec xmm8, xmm8, xmm6
2465 cmp r10d, 13
2466 vmovdqu xmm5, OWORD PTR [r8+192]
2467 jl L_AES_XTS_decrypt_avx1_last_31_2_aes_dec_block_last
2468 vaesdec xmm8, xmm8, xmm5
2469 vmovdqu xmm6, OWORD PTR [r8+208]
2470 vaesdec xmm8, xmm8, xmm6
2471 vmovdqu xmm5, OWORD PTR [r8+224]
2472L_AES_XTS_decrypt_avx1_last_31_2_aes_dec_block_last:
2473 vaesdeclast xmm8, xmm8, xmm5
2474 vpxor xmm8, xmm8, xmm0
2475 sub r13, 16
2476 lea rcx, QWORD PTR [rsi+r13]
2477 vmovdqu OWORD PTR [rcx], xmm8
2478L_AES_XTS_decrypt_avx1_done_dec:
2479 vmovdqu xmm6, OWORD PTR [rsp+16]
2480 vmovdqu xmm7, OWORD PTR [rsp+32]
2481 vmovdqu xmm8, OWORD PTR [rsp+48]
2482 vmovdqu xmm9, OWORD PTR [rsp+64]
2483 vmovdqu xmm10, OWORD PTR [rsp+80]
2484 vmovdqu xmm11, OWORD PTR [rsp+96]
2485 vmovdqu xmm12, OWORD PTR [rsp+112]
2486 add rsp, 128
2487 pop r13
2488 pop r12
2489 pop rsi
2490 pop rdi
2491 ret
2492AES_XTS_decrypt_avx1 ENDP
2493_TEXT ENDS
2494_TEXT SEGMENT READONLY PARA
2495AES_XTS_decrypt_update_avx1 PROC
2496 push rdi
2497 push rsi
2498 push r12
2499 mov rdi, rcx
2500 mov rsi, rdx
2501 mov rax, r8
2502 mov r10, r9
2503 mov r8, QWORD PTR [rsp+64]
2504 mov r9d, DWORD PTR [rsp+72]
2505 sub rsp, 128
2506 vmovdqu OWORD PTR [rsp+16], xmm6
2507 vmovdqu OWORD PTR [rsp+32], xmm7
2508 vmovdqu OWORD PTR [rsp+48], xmm8
2509 vmovdqu OWORD PTR [rsp+64], xmm9
2510 vmovdqu OWORD PTR [rsp+80], xmm10
2511 vmovdqu OWORD PTR [rsp+96], xmm11
2512 vmovdqu OWORD PTR [rsp+112], xmm12
2513 vmovdqu xmm12, OWORD PTR L_avx1_aes_xts_gc_xts
2514 vmovdqu xmm0, OWORD PTR [r8]
2515 xor r12d, r12d
2516 mov r11d, eax
2517 and r11d, 4294967280
2518 cmp r11d, eax
2519 je L_AES_XTS_decrypt_update_avx1_mul16_64
2520 sub r11d, 16
2521 cmp r11d, 16
2522 jl L_AES_XTS_decrypt_update_avx1_last_31_start
2523L_AES_XTS_decrypt_update_avx1_mul16_64:
2524 cmp r11d, 64
2525 jl L_AES_XTS_decrypt_update_avx1_done_64
2526 and r11d, 4294967232
2527L_AES_XTS_decrypt_update_avx1_dec_64:
2528 ; 64 bytes of input
2529 ; aes_dec_64
2530 lea rcx, QWORD PTR [rdi+r12]
2531 lea rdx, QWORD PTR [rsi+r12]
2532 vmovdqu xmm8, OWORD PTR [rcx]
2533 vmovdqu xmm9, OWORD PTR [rcx+16]
2534 vmovdqu xmm10, OWORD PTR [rcx+32]
2535 vmovdqu xmm11, OWORD PTR [rcx+48]
2536 vpsrad xmm4, xmm0, 31
2537 vpslld xmm1, xmm0, 1
2538 vpshufd xmm4, xmm4, 147
2539 vpand xmm4, xmm4, xmm12
2540 vpxor xmm1, xmm1, xmm4
2541 vpsrad xmm4, xmm1, 31
2542 vpslld xmm2, xmm1, 1
2543 vpshufd xmm4, xmm4, 147
2544 vpand xmm4, xmm4, xmm12
2545 vpxor xmm2, xmm2, xmm4
2546 vpsrad xmm4, xmm2, 31
2547 vpslld xmm3, xmm2, 1
2548 vpshufd xmm4, xmm4, 147
2549 vpand xmm4, xmm4, xmm12
2550 vpxor xmm3, xmm3, xmm4
2551 vpxor xmm8, xmm8, xmm0
2552 vpxor xmm9, xmm9, xmm1
2553 vpxor xmm10, xmm10, xmm2
2554 vpxor xmm11, xmm11, xmm3
2555 ; aes_dec_block
2556 vmovdqu xmm4, OWORD PTR [r10]
2557 vpxor xmm8, xmm8, xmm4
2558 vpxor xmm9, xmm9, xmm4
2559 vpxor xmm10, xmm10, xmm4
2560 vpxor xmm11, xmm11, xmm4
2561 vmovdqu xmm4, OWORD PTR [r10+16]
2562 vaesdec xmm8, xmm8, xmm4
2563 vaesdec xmm9, xmm9, xmm4
2564 vaesdec xmm10, xmm10, xmm4
2565 vaesdec xmm11, xmm11, xmm4
2566 vmovdqu xmm4, OWORD PTR [r10+32]
2567 vaesdec xmm8, xmm8, xmm4
2568 vaesdec xmm9, xmm9, xmm4
2569 vaesdec xmm10, xmm10, xmm4
2570 vaesdec xmm11, xmm11, xmm4
2571 vmovdqu xmm4, OWORD PTR [r10+48]
2572 vaesdec xmm8, xmm8, xmm4
2573 vaesdec xmm9, xmm9, xmm4
2574 vaesdec xmm10, xmm10, xmm4
2575 vaesdec xmm11, xmm11, xmm4
2576 vmovdqu xmm4, OWORD PTR [r10+64]
2577 vaesdec xmm8, xmm8, xmm4
2578 vaesdec xmm9, xmm9, xmm4
2579 vaesdec xmm10, xmm10, xmm4
2580 vaesdec xmm11, xmm11, xmm4
2581 vmovdqu xmm4, OWORD PTR [r10+80]
2582 vaesdec xmm8, xmm8, xmm4
2583 vaesdec xmm9, xmm9, xmm4
2584 vaesdec xmm10, xmm10, xmm4
2585 vaesdec xmm11, xmm11, xmm4
2586 vmovdqu xmm4, OWORD PTR [r10+96]
2587 vaesdec xmm8, xmm8, xmm4
2588 vaesdec xmm9, xmm9, xmm4
2589 vaesdec xmm10, xmm10, xmm4
2590 vaesdec xmm11, xmm11, xmm4
2591 vmovdqu xmm4, OWORD PTR [r10+112]
2592 vaesdec xmm8, xmm8, xmm4
2593 vaesdec xmm9, xmm9, xmm4
2594 vaesdec xmm10, xmm10, xmm4
2595 vaesdec xmm11, xmm11, xmm4
2596 vmovdqu xmm4, OWORD PTR [r10+128]
2597 vaesdec xmm8, xmm8, xmm4
2598 vaesdec xmm9, xmm9, xmm4
2599 vaesdec xmm10, xmm10, xmm4
2600 vaesdec xmm11, xmm11, xmm4
2601 vmovdqu xmm4, OWORD PTR [r10+144]
2602 vaesdec xmm8, xmm8, xmm4
2603 vaesdec xmm9, xmm9, xmm4
2604 vaesdec xmm10, xmm10, xmm4
2605 vaesdec xmm11, xmm11, xmm4
2606 cmp r9d, 11
2607 vmovdqu xmm4, OWORD PTR [r10+160]
2608 jl L_AES_XTS_decrypt_update_avx1_aes_dec_64_aes_dec_block_last
2609 vaesdec xmm8, xmm8, xmm4
2610 vaesdec xmm9, xmm9, xmm4
2611 vaesdec xmm10, xmm10, xmm4
2612 vaesdec xmm11, xmm11, xmm4
2613 vmovdqu xmm4, OWORD PTR [r10+176]
2614 vaesdec xmm8, xmm8, xmm4
2615 vaesdec xmm9, xmm9, xmm4
2616 vaesdec xmm10, xmm10, xmm4
2617 vaesdec xmm11, xmm11, xmm4
2618 cmp r9d, 13
2619 vmovdqu xmm4, OWORD PTR [r10+192]
2620 jl L_AES_XTS_decrypt_update_avx1_aes_dec_64_aes_dec_block_last
2621 vaesdec xmm8, xmm8, xmm4
2622 vaesdec xmm9, xmm9, xmm4
2623 vaesdec xmm10, xmm10, xmm4
2624 vaesdec xmm11, xmm11, xmm4
2625 vmovdqu xmm4, OWORD PTR [r10+208]
2626 vaesdec xmm8, xmm8, xmm4
2627 vaesdec xmm9, xmm9, xmm4
2628 vaesdec xmm10, xmm10, xmm4
2629 vaesdec xmm11, xmm11, xmm4
2630 vmovdqu xmm4, OWORD PTR [r10+224]
2631L_AES_XTS_decrypt_update_avx1_aes_dec_64_aes_dec_block_last:
2632 vaesdeclast xmm8, xmm8, xmm4
2633 vaesdeclast xmm9, xmm9, xmm4
2634 vaesdeclast xmm10, xmm10, xmm4
2635 vaesdeclast xmm11, xmm11, xmm4
2636 vpxor xmm8, xmm8, xmm0
2637 vpxor xmm9, xmm9, xmm1
2638 vpxor xmm10, xmm10, xmm2
2639 vpxor xmm11, xmm11, xmm3
2640 vmovdqu OWORD PTR [rdx], xmm8
2641 vmovdqu OWORD PTR [rdx+16], xmm9
2642 vmovdqu OWORD PTR [rdx+32], xmm10
2643 vmovdqu OWORD PTR [rdx+48], xmm11
2644 vpsrad xmm4, xmm3, 31
2645 vpslld xmm0, xmm3, 1
2646 vpshufd xmm4, xmm4, 147
2647 vpand xmm4, xmm4, xmm12
2648 vpxor xmm0, xmm0, xmm4
2649 add r12d, 64
2650 cmp r12d, r11d
2651 jl L_AES_XTS_decrypt_update_avx1_dec_64
2652L_AES_XTS_decrypt_update_avx1_done_64:
2653 cmp r12d, eax
2654 mov r11d, eax
2655 je L_AES_XTS_decrypt_update_avx1_done_dec
2656 and r11d, 4294967280
2657 cmp r11d, eax
2658 je L_AES_XTS_decrypt_update_avx1_mul16
2659 sub r11d, 16
2660 sub r11d, r12d
2661 cmp r11d, 16
2662 jl L_AES_XTS_decrypt_update_avx1_last_31_start
2663 add r11d, r12d
2664L_AES_XTS_decrypt_update_avx1_mul16:
2665L_AES_XTS_decrypt_update_avx1_dec_16:
2666 ; 16 bytes of input
2667 lea rcx, QWORD PTR [rdi+r12]
2668 vmovdqu xmm8, OWORD PTR [rcx]
2669 vpxor xmm8, xmm8, xmm0
2670 ; aes_dec_block
2671 vpxor xmm8, xmm8, [r10]
2672 vmovdqu xmm5, OWORD PTR [r10+16]
2673 vaesdec xmm8, xmm8, xmm5
2674 vmovdqu xmm5, OWORD PTR [r10+32]
2675 vaesdec xmm8, xmm8, xmm5
2676 vmovdqu xmm5, OWORD PTR [r10+48]
2677 vaesdec xmm8, xmm8, xmm5
2678 vmovdqu xmm5, OWORD PTR [r10+64]
2679 vaesdec xmm8, xmm8, xmm5
2680 vmovdqu xmm5, OWORD PTR [r10+80]
2681 vaesdec xmm8, xmm8, xmm5
2682 vmovdqu xmm5, OWORD PTR [r10+96]
2683 vaesdec xmm8, xmm8, xmm5
2684 vmovdqu xmm5, OWORD PTR [r10+112]
2685 vaesdec xmm8, xmm8, xmm5
2686 vmovdqu xmm5, OWORD PTR [r10+128]
2687 vaesdec xmm8, xmm8, xmm5
2688 vmovdqu xmm5, OWORD PTR [r10+144]
2689 vaesdec xmm8, xmm8, xmm5
2690 cmp r9d, 11
2691 vmovdqu xmm5, OWORD PTR [r10+160]
2692 jl L_AES_XTS_decrypt_update_avx1_aes_dec_block_last
2693 vaesdec xmm8, xmm8, xmm5
2694 vmovdqu xmm6, OWORD PTR [r10+176]
2695 vaesdec xmm8, xmm8, xmm6
2696 cmp r9d, 13
2697 vmovdqu xmm5, OWORD PTR [r10+192]
2698 jl L_AES_XTS_decrypt_update_avx1_aes_dec_block_last
2699 vaesdec xmm8, xmm8, xmm5
2700 vmovdqu xmm6, OWORD PTR [r10+208]
2701 vaesdec xmm8, xmm8, xmm6
2702 vmovdqu xmm5, OWORD PTR [r10+224]
2703L_AES_XTS_decrypt_update_avx1_aes_dec_block_last:
2704 vaesdeclast xmm8, xmm8, xmm5
2705 vpxor xmm8, xmm8, xmm0
2706 lea rcx, QWORD PTR [rsi+r12]
2707 vmovdqu OWORD PTR [rcx], xmm8
2708 vpsrad xmm4, xmm0, 31
2709 vpslld xmm0, xmm0, 1
2710 vpshufd xmm4, xmm4, 147
2711 vpand xmm4, xmm4, xmm12
2712 vpxor xmm0, xmm0, xmm4
2713 add r12d, 16
2714 cmp r12d, r11d
2715 jl L_AES_XTS_decrypt_update_avx1_dec_16
2716 cmp r12d, eax
2717 je L_AES_XTS_decrypt_update_avx1_done_dec
2718L_AES_XTS_decrypt_update_avx1_last_31_start:
2719 vpsrad xmm4, xmm0, 31
2720 vpslld xmm7, xmm0, 1
2721 vpshufd xmm4, xmm4, 147
2722 vpand xmm4, xmm4, xmm12
2723 vpxor xmm7, xmm7, xmm4
2724 lea rcx, QWORD PTR [rdi+r12]
2725 vmovdqu xmm8, OWORD PTR [rcx]
2726 vpxor xmm8, xmm8, xmm7
2727 ; aes_dec_block
2728 vpxor xmm8, xmm8, [r10]
2729 vmovdqu xmm5, OWORD PTR [r10+16]
2730 vaesdec xmm8, xmm8, xmm5
2731 vmovdqu xmm5, OWORD PTR [r10+32]
2732 vaesdec xmm8, xmm8, xmm5
2733 vmovdqu xmm5, OWORD PTR [r10+48]
2734 vaesdec xmm8, xmm8, xmm5
2735 vmovdqu xmm5, OWORD PTR [r10+64]
2736 vaesdec xmm8, xmm8, xmm5
2737 vmovdqu xmm5, OWORD PTR [r10+80]
2738 vaesdec xmm8, xmm8, xmm5
2739 vmovdqu xmm5, OWORD PTR [r10+96]
2740 vaesdec xmm8, xmm8, xmm5
2741 vmovdqu xmm5, OWORD PTR [r10+112]
2742 vaesdec xmm8, xmm8, xmm5
2743 vmovdqu xmm5, OWORD PTR [r10+128]
2744 vaesdec xmm8, xmm8, xmm5
2745 vmovdqu xmm5, OWORD PTR [r10+144]
2746 vaesdec xmm8, xmm8, xmm5
2747 cmp r9d, 11
2748 vmovdqu xmm5, OWORD PTR [r10+160]
2749 jl L_AES_XTS_decrypt_update_avx1_last_31_aes_dec_block_last
2750 vaesdec xmm8, xmm8, xmm5
2751 vmovdqu xmm6, OWORD PTR [r10+176]
2752 vaesdec xmm8, xmm8, xmm6
2753 cmp r9d, 13
2754 vmovdqu xmm5, OWORD PTR [r10+192]
2755 jl L_AES_XTS_decrypt_update_avx1_last_31_aes_dec_block_last
2756 vaesdec xmm8, xmm8, xmm5
2757 vmovdqu xmm6, OWORD PTR [r10+208]
2758 vaesdec xmm8, xmm8, xmm6
2759 vmovdqu xmm5, OWORD PTR [r10+224]
2760L_AES_XTS_decrypt_update_avx1_last_31_aes_dec_block_last:
2761 vaesdeclast xmm8, xmm8, xmm5
2762 vpxor xmm8, xmm8, xmm7
2763 vmovdqu OWORD PTR [rsp], xmm8
2764 add r12, 16
2765 xor rdx, rdx
2766L_AES_XTS_decrypt_update_avx1_last_31_byte_loop:
2767 mov r11b, BYTE PTR [rsp+rdx]
2768 mov cl, BYTE PTR [rdi+r12]
2769 mov BYTE PTR [rsi+r12], r11b
2770 mov BYTE PTR [rsp+rdx], cl
2771 inc r12d
2772 inc edx
2773 cmp r12d, eax
2774 jl L_AES_XTS_decrypt_update_avx1_last_31_byte_loop
2775 sub r12, rdx
2776 vmovdqu xmm8, OWORD PTR [rsp]
2777 vpxor xmm8, xmm8, xmm0
2778 ; aes_dec_block
2779 vpxor xmm8, xmm8, [r10]
2780 vmovdqu xmm5, OWORD PTR [r10+16]
2781 vaesdec xmm8, xmm8, xmm5
2782 vmovdqu xmm5, OWORD PTR [r10+32]
2783 vaesdec xmm8, xmm8, xmm5
2784 vmovdqu xmm5, OWORD PTR [r10+48]
2785 vaesdec xmm8, xmm8, xmm5
2786 vmovdqu xmm5, OWORD PTR [r10+64]
2787 vaesdec xmm8, xmm8, xmm5
2788 vmovdqu xmm5, OWORD PTR [r10+80]
2789 vaesdec xmm8, xmm8, xmm5
2790 vmovdqu xmm5, OWORD PTR [r10+96]
2791 vaesdec xmm8, xmm8, xmm5
2792 vmovdqu xmm5, OWORD PTR [r10+112]
2793 vaesdec xmm8, xmm8, xmm5
2794 vmovdqu xmm5, OWORD PTR [r10+128]
2795 vaesdec xmm8, xmm8, xmm5
2796 vmovdqu xmm5, OWORD PTR [r10+144]
2797 vaesdec xmm8, xmm8, xmm5
2798 cmp r9d, 11
2799 vmovdqu xmm5, OWORD PTR [r10+160]
2800 jl L_AES_XTS_decrypt_update_avx1_last_31_2_aes_dec_block_last
2801 vaesdec xmm8, xmm8, xmm5
2802 vmovdqu xmm6, OWORD PTR [r10+176]
2803 vaesdec xmm8, xmm8, xmm6
2804 cmp r9d, 13
2805 vmovdqu xmm5, OWORD PTR [r10+192]
2806 jl L_AES_XTS_decrypt_update_avx1_last_31_2_aes_dec_block_last
2807 vaesdec xmm8, xmm8, xmm5
2808 vmovdqu xmm6, OWORD PTR [r10+208]
2809 vaesdec xmm8, xmm8, xmm6
2810 vmovdqu xmm5, OWORD PTR [r10+224]
2811L_AES_XTS_decrypt_update_avx1_last_31_2_aes_dec_block_last:
2812 vaesdeclast xmm8, xmm8, xmm5
2813 vpxor xmm8, xmm8, xmm0
2814 sub r12, 16
2815 lea rcx, QWORD PTR [rsi+r12]
2816 vmovdqu OWORD PTR [rcx], xmm8
2817L_AES_XTS_decrypt_update_avx1_done_dec:
2818 vmovdqu OWORD PTR [r8], xmm0
2819 vmovdqu xmm6, OWORD PTR [rsp+16]
2820 vmovdqu xmm7, OWORD PTR [rsp+32]
2821 vmovdqu xmm8, OWORD PTR [rsp+48]
2822 vmovdqu xmm9, OWORD PTR [rsp+64]
2823 vmovdqu xmm10, OWORD PTR [rsp+80]
2824 vmovdqu xmm11, OWORD PTR [rsp+96]
2825 vmovdqu xmm12, OWORD PTR [rsp+112]
2826 add rsp, 128
2827 pop r12
2828 pop rsi
2829 pop rdi
2830 ret
2831AES_XTS_decrypt_update_avx1 ENDP
2832_TEXT ENDS
2833ENDIF
2834END